aboutsummaryrefslogtreecommitdiff
path: root/src/nix/installables.cc
AgeCommit message (Collapse)Author
2019-06-03Add 'nix app' commandEelco Dolstra
This is like 'nix run', except that the command to execute is defined in a flake output, e.g. defaultApp = { type = "app"; program = "${packages.blender_2_80}/bin/blender"; }; Thus you can do $ nix app blender-bin to start Blender from the 'blender-bin' flake. In the future, we can extend this with sandboxing. (For example we would want to be able to specify that Blender should not have network access by default and should only have access to certain paths in the user's home directory.)
2019-05-31DohEelco Dolstra
2019-05-31Fix handling of bare flakerefs containing a colonEelco Dolstra
2019-05-31Allow bare flakerefs as installablesEelco Dolstra
So now $ nix build blender-bin works and builds the default package from that flake. You don't need to add a colon at the end anymore.
2019-05-31Rename requires -> inputs, provides -> outputsEelco Dolstra
Issue #2828.
2019-05-29Hack: Use legacyPackages from NixpkgsEelco Dolstra
Nixpkgs doesn't provide a clean "packages" set yet, so until that's the case, look for packages in "legacyPackages" as well.
2019-05-29Put flake-related stuff in its own namespaceEelco Dolstra
2019-05-28Remove redundant resolvedRef fields since they're already in SourceInfoEelco Dolstra
2019-05-28Store SourceInfo in Flake and NonFlakeEelco Dolstra
This deduplicates some shared fields. Factoring out the commonality is useful in places like makeFlakeValue().
2019-05-23Register flake source trees as GC rootsEelco Dolstra
This ensures that flakes don't get garbage-collected, which is important to get nix-channel-like behaviour. For example, running $ nix build hydra: will create a GC root ~/.cache/nix/flake-closures/hydra -> /nix/store/xarfiqcwa4w8r4qpz1a769xxs8c3phgn-flake-closure where the contents/references of the linked file in the store are the flake source trees used by the 'hydra' flake: /nix/store/n6d5f5lkpfjbmkyby0nlg8y1wbkmbc7i-source /nix/store/vbkg4zy1qd29fnhflsv9k2j9jnbqd5m2-source /nix/store/z46xni7d47s5wk694359mq9ay353ar94-source Note that this in itself is not enough to allow offline use; the fetcher for the flakeref (e.g. fetchGit or downloadCached) must not fail if it cannot fetch the latest version of the file, so long as it knows a cached version. Issue #2868.
2019-05-22Move flake-related flags into a separate classEelco Dolstra
Also, rename --dont-save-lock-file to --no-save-lock-file and change noRegistries to useRegistries.
2019-05-22Improve FlakeCommandEelco Dolstra
It now handles commonality like calling getFlake() and resolving relative local flake refs. Fixes #2822.
2019-05-17Lockfile handling in `resolveFlake` is fixedNick Van den Broeck
2019-05-16Give errors in resolveFlakeNick Van den Broeck
If DontUpdate but the lockfile isn't correct
2019-05-16Fixed issue 65Nick Van den Broeck
lockfile updating
2019-05-02nix dev-shell: Use 'provides.devShell' by defaultEelco Dolstra
Thus $ nix dev-shell will now build the 'provides.devShell' attribute from the flake in the current directory. If it doesn't exist, it falls back to 'provides.defaultPackage'.
2019-04-19Use "." as the default installableEelco Dolstra
This makes e.g. "nix build" do something more or less reasonable (namely, build the default package of the flake in the current directory).
2019-04-16Update lock files from InstallableFlake::toValue()Eelco Dolstra
This ensures that the lock file is updated *before* evaluating it, and that it gets updated for any nix command, not just 'nix build'. Also, while computing the lock file, allow arbitrary registry lookups, not just at top-level. Also, improve some error messages slightly.
2019-04-16Improve incremental buildEelco Dolstra
2019-04-16Fix makeFlakeValue()Eelco Dolstra
2019-04-15Move --impure to MixEvalArgsEelco Dolstra
2019-04-15Merge remote-tracking branch 'tweag/automatedUpdate' into flakesEelco Dolstra
2019-04-11Automated lockfile updating with `nix build`Nick Van den Broeck
2019-04-11FlakeRegistry = FlakeRef -> FlakeRefNick Van den Broeck
2019-04-08WhitespaceEelco Dolstra
2019-04-08Allow relative paths in flakerefsEelco Dolstra
Also allow "." as an installable to refer to the flake in the current directory. E.g. $ nix build . will build 'provides.defaultPackage' in the flake in the current directory.
2019-04-08nix: Add --impure as a shorter alias of --no-pure-evalEelco Dolstra
2019-04-08nix: Support nixpkgs.<attrpath> for compatibilityEelco Dolstra
2019-04-08nix: Make -f work for compatibilityEelco Dolstra
2019-04-08nix: New installables syntaxEelco Dolstra
The general syntax for an installable is now <flakeref>:<attrpath>. The attrpath is relative to the flake's 'provides.packages' or 'provides' if the former doesn't yield a result. E.g. $ nix build nixpkgs:hello is equivalent to $ nix build nixpkgs:packages.hello Also, '<flakeref>:' can be omitted, in which case it defaults to 'nixpkgs', e.g. $ nix build hello
2019-03-26Remove debug lineEelco Dolstra
2019-03-22Fixed minor thingsNick Van den Broeck
2019-02-12nix: Add --flake flagEelco Dolstra
This allows using an arbitrary "provides" attribute from the specified flake. For example: nix build --flake nixpkgs packages.hello (Maybe provides.packages should be used for consistency...)
2019-02-12Enforce use of immutable flakes in pure modeEelco Dolstra
... plus a temporary hack to allow impure flakes at top-level for the default installation source.
2019-02-12nix: Enable pure mode by defaultEelco Dolstra
We want to encourage a brave new world of hermetic evaluation for source-level reproducibility, so flakes should not poke around in the filesystem outside of their explicit dependencies. Note that the default installation source remains impure in that it can refer to mutable flakes, so "nix build nixpkgs.hello" still works (and fetches the latest nixpkgs, unless it has been pinned by the user). A problem with pure evaluation is that builtins.currentSystem is unavailable. For the moment, I've hard-coded "x86_64-linux" in the nixpkgs flake. Eventually, "system" should be a flake function argument.
2019-02-11Initial flake supportEelco Dolstra
2018-08-10Slightly questionable workaround for #2342Eelco Dolstra
2018-06-13nix: Remove special handling of .drv filesEelco Dolstra
This makes 'nix copy' and 'nix path-info' work on .drv store paths. Removing special treatment of .drv files seems the most future-proof approach given the possible removal of .drv files in the future. Note that 'nix build' will still build (rather than substitute) .drv paths due to the unfortunate overloading in Store::buildPaths().
2018-02-12toBuildables -> buildEelco Dolstra
2018-01-16parseExprFromFile -> evalFileEelco Dolstra
parseExprFromFile() should be avoided since it doesn't cache anything.
2017-10-24nix: Respect -I, --arg, --argstrEelco Dolstra
Also, random cleanup to argument handling.
2017-09-27nix build: Fix realising a store pathEelco Dolstra
2017-09-25Add "nix show-derivation"Eelco Dolstra
This debug command prints a store derivation in JSON format. For example: $ nix show-derivation nixpkgs.hello { "/nix/store/ayjwpwwiyy04nh9z71rsdgd3q7bra7ch-hello-2.10.drv": { "outputs": { "out": { "path": "/nix/store/w5w4v29ql0qwqhczkdxs94ix2lh7ibgs-hello-2.10" } }, "inputSrcs": [ "/nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25b-default-builder.sh" ], "inputDrvs": { "/nix/store/13839aqdf6x4k3b785rw5f2l7857l6y3-bash-4.4-p12.drv": [ "out" ], "/nix/store/vgdx7fdc7d4iirmnwj2py1nrvr5qwzj7-hello-2.10.tar.gz.drv": [ "out" ], "/nix/store/x3kkd0vsqfflbvwf1055l9mr39bg0ms0-stdenv.drv": [ "out" ] }, "platform": "x86_64-linux", "builder": "/nix/store/qp5fw57d38bd1n07ss4zxh88zg67c3vg-bash-4.4-p12/bin/bash", "args": [ "-e", "/nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25b-default-builder.sh" ], "env": { "buildInputs": "", "builder": "/nix/store/qp5fw57d38bd1n07ss4zxh88zg67c3vg-bash-4.4-p12/bin/bash", "configureFlags": "", "doCheck": "1", "name": "hello-2.10", "nativeBuildInputs": "", "out": "/nix/store/w5w4v29ql0qwqhczkdxs94ix2lh7ibgs-hello-2.10", "propagatedBuildInputs": "", "propagatedNativeBuildInputs": "", "src": "/nix/store/3x7dwzq014bblazs7kq20p9hyzz0qh8g-hello-2.10.tar.gz", "stdenv": "/nix/store/6zngq1rdh0ans9qyckqimqibgnlvlfrm-stdenv", "system": "x86_64-linux" } } } This removes the need for pp-aterm.
2017-09-10nix build: Only download the requested derivation outputsEelco Dolstra
Also some refactoring.
2017-09-06nix build: Create result symlinksEelco Dolstra
2017-09-01Fix verbosity level for nix build --dry-runEelco Dolstra
2017-08-29nix edit / log: Operate on a single InstallableEelco Dolstra
2017-08-16Improve substitution progress indicatorEelco Dolstra
E.g. $ nix build --store local?root=/tmp/nix nixpkgs.firefox-unwrapped [0/1 built, 1/97/98 fetched, 65.8/92.8 MiB DL, 203.2/309.2 MiB copied] downloading 'https://cache.nixos.org/nar/1czm9fk0svacy4h6a3fzkpafi4f7a9gml36kk8cq1igaghbspg3k.nar.xz'
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-20nix search: Ignore top-level eval errorsEelco Dolstra
$NIX_PATH may contain elements that don't evaluate to an attrset (like "nixos-config"), so ignore those.