aboutsummaryrefslogtreecommitdiff
path: root/src/nix-build
AgeCommit message (Collapse)Author
2018-02-08Add plugins to make Nix more extensible.Shea Levy
All plugins in plugin-files will be dlopened, allowing them to statically construct instances of the various Register* types Nix supports.
2018-02-03Remove nix-build --hashEelco Dolstra
Instead, if a fixed-output derivation produces has an incorrect output hash, we now unconditionally move the outputs to the path corresponding with the actual hash and register it as valid. Thus, after correcting the hash in the Nix expression (e.g. in a fetchurl call), the fixed-output derivation doesn't have to be built again. It would still be good to have a command for reporting the actual hash of a fixed-output derivation (instead of throwing an error), but "nix-build --hash" didn't do that.
2018-02-01nix-build: Ignore --indirectEelco Dolstra
Note that nix-build always creates indirect roots. Fixes #1830.
2018-01-16Add pure evaluation modeEelco Dolstra
In this mode, the following restrictions apply: * The builtins currentTime, currentSystem and storePath throw an error. * $NIX_PATH and -I are ignored. * fetchGit and fetchMercurial require a revision hash. * fetchurl and fetchTarball require a sha256 attribute. * No file system access is allowed outside of the paths returned by fetch{Git,Mercurial,url,Tarball}. Thus 'nix build -f ./foo.nix' is not allowed. Thus, the evaluation result is completely reproducible from the command line arguments. E.g. nix build --pure-eval '( let nix = fetchGit { url = https://github.com/NixOS/nixpkgs.git; rev = "9c927de4b179a6dd210dd88d34bda8af4b575680"; }; nixpkgs = fetchGit { url = https://github.com/NixOS/nixpkgs.git; ref = "release-17.09"; rev = "66b4de79e3841530e6d9c6baf98702aa1f7124e4"; }; in (import (nix + "/release.nix") { inherit nix nixpkgs; }).build.x86_64-linux )' The goal is to enable completely reproducible and traceable evaluation. For example, a NixOS configuration could be fully described by a single Git commit hash. 'nixos-rebuild' would do something like nix build --pure-eval '( (import (fetchGit { url = file:///my-nixos-config; rev = "..."; })).system ') where the Git repository /my-nixos-config would use further fetchGit calls or Git externals to fetch Nixpkgs and whatever other dependencies it has. Either way, the commit hash would uniquely identify the NixOS configuration and allow it to reproduced.
2017-11-24nix-shell/nix-build: Support .drv files againEelco Dolstra
Fixes #1663. Also handle '!<output-name>' (#1694).
2017-10-30nix-build: Fix --hashEelco Dolstra
2017-10-25Pass lists/attrsets to bash as (associative) arraysEelco Dolstra
2017-10-24nix: Respect -I, --arg, --argstrEelco Dolstra
Also, random cleanup to argument handling.
2017-10-19nix-shell: Fix file name resolution in shebangsShea Levy
2017-09-18nix-shell: Ignore readFile() errorsEelco Dolstra
Fixes #1563.
2017-07-30Replace Unicode quotes in user-facing strings by ASCIIJörg Thalheim
Relevant RFC: NixOS/rfcs#4 $ ag -l | xargs sed -i -e "/\"/s/’/'/g;/\"/s/‘/'/g"
2017-07-28nix-build: Fix regression causing all outputs to be builtEelco Dolstra
2017-07-26nix-build/nix-shell: Eliminate call to nix-instantiate / nix-storeEelco Dolstra
Note that this removes the need for a derivation symlink, so the --drv-path and --add-drv-link flags now do nothing.
2017-07-20nix-shell: Use bashInteractive from <nixpkgs>Eelco Dolstra
This adds about 0.1s to nix-shell runtime in the case where bashInteractive already exists. See discussion at https://github.com/NixOS/nixpkgs/issues/27493.
2017-07-03nix-shell: Respect --dry-runEelco Dolstra
Fixes #824.
2017-05-24Fix #1314Eelco Dolstra
Also, make nix-shell respect --option. (Previously it only passed it along to nix-instantiate and nix-build.)
2017-05-24Merge branch 'topic/cores-master' of https://github.com/neilmayhew/nixEelco Dolstra
2017-05-24Fix #1380Eelco Dolstra
It lacked a backslash. Use a raw string and single quotes around PS1 to simplify this.
2017-05-10nix-shell: use appropriate prompt terminatorLinus Heckemann
If running nix-shell as root, the terminator should be # and not $.
2017-05-03nix-shell: Implement passAsFileEelco Dolstra
2017-04-24nix-shell -p: Use runCommandCCEelco Dolstra
This restores pre-17.03 behaviour by making gcc available.
2017-04-09Propagate NIX_BUILD_CORES to nix-shell environmentsNeil Mayhew
2017-03-12nix-shell/pure: keep environment variable SHLVLStefan Junker
2017-02-24nix-shell: Better error message when the shell can't be startedEelco Dolstra
2017-02-24nix-shell: Overwrite environment variablesEelco Dolstra
Need to remember that std::map::insert() and emplace() don't overwrite existing entries... This fixes a regression relative to 1.11 that in particular triggers in nested nix-shells. Before: $ nativeBuildInputs=/foo nix-shell -p hello --run 'hello' build input /foo does not exist After: $ nativeBuildInputs=/foo nix-shell -p hello --run 'hello' Hello, world!
2017-02-01Restore default signal handling in child processesEelco Dolstra
In particular, this fixes Ctrl-C in nix-shell sessions.
2017-01-16assign environ to a temp variable to ensure livenessJude Taylor
2017-01-16nix-build: Use showManPage() and printVersion()Eelco Dolstra
2017-01-07nix-shell: Fix 'nix-shell --command' doing nothing without TTYTuomas Tynkkynen
Regression from a5f2750e ("Fix early removal of rc-file for nix-shell"). The removal of BASH_ENV causes nothing to be executed by bash if it detects itself in a non-interactive context. Instead, just use the same condition used by bash to launch bash differently. According to bash sources, the condition (stdin and stder both must be TTYs) is specified by POSIX so this should be pretty safe to rely on. Fixes #1171 on master, needs a backport to the Perl code in 1.11.
2017-01-03nix-shell: In #! mode, pass the last argumentEelco Dolstra
"i < argc - 1" should be "i < argc".
2017-01-03nix-shell: Don't act interactive in shebangsTuomas Tynkkynen
I had observed that 'bash --rcfile' would do nothing in a non-interactive context and cause nothing to be executed if a script using nix-shell shebangs were run in a non-interactive context.
2017-01-03nix-shell: Fix 'nix-shell -i'Tuomas Tynkkynen
The 'args' variable here is shadowing one in the outer scope and its contents end up unused. This causes any '#! nix-shell' lines to effectively be ignored. The intention here was to clear the args vector, as far as I can tell (and it seems to work).
2016-11-26Revert "Get rid of unicode quotes (#1140)"Eelco Dolstra
This reverts commit f78126bfd6b6c8477fcdbc09b2f98772dbe9a1e7. There really is no need for such a massive change...
2016-11-25Get rid of unicode quotes (#1140)Guillaume Maudoux
2016-10-19Fix Darwin buildEelco Dolstra
Done slightly differently from https://github.com/NixOS/nix/pull/1093.
2016-09-21nix-build, nix-shell: Don't print error message if nix-store/nix-instantiate ↵Eelco Dolstra
fails
2016-09-20nix-shell: Fix $PATH handling in the impure caseEelco Dolstra
We were passing "p=$PATH" rather than "p=$PATH;", resulting in some invalid shell code. Also, construct a separate environment for the child rather than overwriting the parent's.
2016-09-20nix-shell: Restore CPU affinityEelco Dolstra
Otherwise the shell and its children will be bound to one CPU core...
2016-09-12Fix build on GCC 4.9Eelco Dolstra
GCC 4.9 doesn't like reassigning a std::stringstream. http://hydra.nixos.org/build/40371644
2016-09-12Write "T x" instead of "auto x = T"Eelco Dolstra
That's just silly. Hopefully this also fixes the Debian build failure: http://hydra.nixos.org/build/40371644
2016-09-08Fix early removal of rc-file for nix-shellShea Levy
BASH_ENV causes all non-interactive shells called via eg. /etc/bashrc to remove the rc-file before the main shell gets to run it. Completion scripts will often do this. Fixes #976. Adapted from and fixes #1034.
2016-08-31nix-build: Clean up a bitShea Levy
2016-08-11nix-build: extend the meaning of $IN_NIX_SHELLVladimír Čunát
An equivalent was originally filed against the perl version: https://github.com/NixOS/nix/pull/933
2016-08-09nix-build: Port to c++Shea Levy
This was a dumb line-for-line rewrite, because nix build/nix run/etc. will replace it.