diff options
-rw-r--r-- | doc/manual/release-notes.xml | 9 | ||||
-rw-r--r-- | src/nix-env/help.txt | 14 | ||||
-rw-r--r-- | src/nix-env/nix-env.cc | 8 |
3 files changed, 25 insertions, 6 deletions
diff --git a/doc/manual/release-notes.xml b/doc/manual/release-notes.xml index 4830b323efba..e5d0adf74bef 100644 --- a/doc/manual/release-notes.xml +++ b/doc/manual/release-notes.xml @@ -74,6 +74,15 @@ <option>--set-flag</option>.</para></listitem> + <listitem><para><command>nix-env -q</command> now has a flag + <option>--prebuilt-only</option> (<option>-b</option>) that causes + <command>nix-env</command> to show only those derivations whose + output is already in the Nix store or that can be substituted (i.e., + downloaded from somewhere). In other words, it shows the packages + that can be installed “quickly”, i.e., don’t need to be built from + source.</para></listitem> + + <listitem><para>TODO: new built-ins <function>builtins.attrNames</function>, <function>builtins.filterSource</function>, diff --git a/src/nix-env/help.txt b/src/nix-env/help.txt index 534d16ad3c56..16e47a73e3ac 100644 --- a/src/nix-env/help.txt +++ b/src/nix-env/help.txt @@ -45,7 +45,12 @@ Upgrade flags: --eq: "upgrade" if the current version is equal --always: upgrade regardless of current version -Query types: +Query sources: + + --installed: use installed derivations (default) + --available / -a: use derivations available in Nix expression + +Query flags: --status / -s: print installed/present status --no-name: hide derivation names @@ -55,11 +60,8 @@ Query types: --compare-versions / -c: compare version to available or installed --drv-path: print path of derivation --out-path: print path of derivation output - -Query sources: - - --installed: use installed derivations (default) - --available / -a: use derivations available in Nix expression + --prebuilt-only: only show derivations whose prebuilt binaries are + available on this machine or are downloadable Options: diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc index 5dab2e60b2d0..77b7881711e4 100644 --- a/src/nix-env/nix-env.cc +++ b/src/nix-env/nix-env.cc @@ -831,6 +831,7 @@ static void opQuery(Globals & globals, bool printDrvPath = false; bool printOutPath = false; bool printDescription = false; + bool prebuiltOnly = false; bool compareVersions = false; bool xmlOutput = false; @@ -849,6 +850,7 @@ static void opQuery(Globals & globals, else if (*i == "--out-path") printOutPath = true; else if (*i == "--installed") source = sInstalled; else if (*i == "--available" || *i == "-a") source = sAvailable; + else if (*i == "--prebuilt-only" || *i == "-b") prebuiltOnly = true; else if (*i == "--xml") xmlOutput = true; else throw UsageError(format("unknown flag `%1%'") % *i); @@ -914,6 +916,12 @@ static void opQuery(Globals & globals, /* For XML output. */ XMLAttrs attrs; + + if (prebuiltOnly) { + if (!store->isValidPath(i->queryOutPath(globals.state)) && + !store->hasSubstitutes(i->queryOutPath(globals.state))) + continue; + } if (printStatus) { bool hasSubs = store->hasSubstitutes(i->queryOutPath(globals.state)); |