|
|
(30 intermediate revisions by 12 users not shown) |
Line 1: |
Line 1: |
| This article is about all nix subcommands. Its written for nix 2.4 or newer. | | {{Navbox Nix}} |
| Older nix versions might have different commands.
| | {{Disambiguation|message=This article is about the new nix command. Not to be confused with the [[Nix ecosystem]], the [[Nix (language)|Nix language]] or the [[Nix (package manager)|Nix package manager]].}} |
|
| |
|
| == Enabling the nix command ==
| | This article is about the new <code>nix</code> command and all of its subcommands. The new <code>nix</code> command is intended to unify many different Nix package manager utilities that exist currently as many separate commands, eg. <code>nix-build</code>, <code>nix-shell</code>, etc. |
|
| |
|
| In nix 2.4 the nix command must be enabled explicitly set <code>experimental-features = nix-command</code>
| | See the [https://nixos.org/manual/nix/stable/command-ref/experimental-commands.html Nix manual] for a complete reference. |
| in <code>~/.config/nix/nix.conf</code> or system-wide in <code>/etc/nix/nix.conf</code>.
| |
| In NixOS the latter one can be also achieved by using:
| |
|
| |
|
| <syntaxHighlight lang=nix>
| | == Enabling the nix command == |
| { pkgs, ... }: {
| |
| nix.extraOptions = ''
| |
| experimental-features = nix-command
| |
| '';
| |
| }
| |
| </syntaxHighlight>
| |
|
| |
|
| In the following we describe all sub commands of nix: | | In nix 2.4, the nix command must be explicitly enabled. You can do this in a few different ways. |
|
| |
|
| == Main commands == | | === As an individual invocation === |
| | <syntaxhighlight lang="console"> |
| | nix --experimental-features nix-command build ... |
| | </syntaxhighlight> |
|
| |
|
| === [[Nix_command/build|nix build]] === | | === By setting it in the nix configuration === |
| | {{File|3=experimental-features = nix-command|name=~/.config/nix/nix.conf|lang=toml}} |
|
| |
|
| Build a derivation or fetch a store path.
| | === On NixOS, by setting it in the NixOS configuration === |
| | ''On NixOS you can't edit <code>/etc/nix/nix.conf</code> directly, so you have to set it through the NixOS configuration instead'' |
| | {{File|3={ pkgs, ... }: { |
| | nix.settings.experimental-features = [ "nix-command" ]; |
| | }|name=/etc/nixos/configuration.nix|lang=nix}}{{Evaluate}} |
|
| |
|
| === [[Nix_command/develop|nix develop]] === | | == Switching from <code>nix profile</code> to <code>nix-env</code> == |
| | {{Warning|Using <code>nix-env</code> is not recommended.}} |
| | Once you installed a package with <code>nix profile</code>, you get the following error message when using <code>nix-env</code>: |
|
| |
|
| Run a bash shell that provides the build environment of a derivation.
| | <syntaxHighlight lang=console> |
| | $ nix-env -f '<nixpkgs>' -iA 'hello' |
| | error: --- Error ----------------------------------------------------------------------------------------------------------------- nix-env |
| | profile '/nix/var/nix/profiles/per-user/joerg/profile' is incompatible with 'nix-env'; please use 'nix profile' instead |
| | </syntaxHighlight> |
|
| |
|
| === [[Nix_command/flake|nix flake]] ===
| | To migrate from <code>nix profile</code> to <code>nix-env</code>, you need to delete your current profile: |
|
| |
|
| Manage Nix flakes.
| | {{warning|This will delete packages that have been installed before, so you may want to back this information before running the command.}} |
|
| |
|
| === [[Nix_command/profile|nix profile]] === | | <syntaxHighlight lang=console> |
| | | $ rm -rf /nix/var/nix/profiles/per-user/$USER/profile |
| Manage Nix profiles.
| | </syntaxHighlight> |
| | |
| === [[Nix_command/repl|nix repl]] ===
| |
| | |
| Start an interactive environment for evaluating Nix expressions.
| |
| | |
| === [[Nix_command/run|nix run]] ===
| |
| | |
| Run a Nix application.
| |
| | |
| === [[Nix_command/search|nix search]] ===
| |
| | |
| Query available packages.
| |
| | |
| === [[Nix_command/shell|nix shell]] ===
| |
| | |
| Run a shell in which the specified packages are available.
| |
| | |
| == Infrequently used commands ==
| |
| | |
| === [[Nix_command/copy|nix copy]] ===
| |
| | |
| copy paths between Nix stores
| |
| | |
| === [[Nix_command/edit|nix edit]] ===
| |
| | |
| open the Nix expression of a Nix package in $EDITOR
| |
| | |
| === [[Nix_command/eval|nix eval]] ===
| |
| | |
| evaluate a Nix expression
| |
| | |
| === [[Nix_command/log|nix log]] ===
| |
| | |
| show the build log of the specified packages or paths, if available
| |
| | |
| === [[Nix_command/path-info|nix path-info]] ===
| |
| | |
| query information about store paths
| |
| | |
| === [[Nix_command/registry|nix registry]] ===
| |
| | |
| manage the flake registry
| |
| | |
| === [[Nix_command/verify|nix verify]] ===
| |
| | |
| verify the integrity of store paths
| |
| | |
| === [[Nix_command/why-depends|nix why-depends]] ===
| |
| | |
| show why a package has another package in its closure
| |
| | |
| == Utility/scripting commands ==
| |
| | |
| === [[Nix_command/add-to-store|nix add-to-store]] ===
| |
| | |
| add a path to the Nix store
| |
| | |
| === [[Nix_command/cat-nar|nix cat-nar]] ===
| |
| | |
| print the contents of a file inside a NAR file on stdout
| |
| | |
| === [[Nix_command/cat-store|nix cat-store]] ===
| |
| | |
| print the contents of a file in the Nix store on stdout
| |
| | |
| === [[Nix_command/copy-sigs|nix copy-sigs]] ===
| |
| | |
| copy path signatures from substituters (like binary caches)
| |
| | |
| === [[Nix_command/dump-path|nix dump-path]] ===
| |
| | |
| dump a store path to stdout (in NAR format)
| |
| | |
| === [[Nix_command/hash-file|nix hash-file]] ===
| |
| | |
| print cryptographic hash of the NAR serialisation of a path
| |
| | |
| === [[Nix_command/hash-path|nix hash-path]] ===
| |
| | |
| print cryptographic hash of the NAR serialisation of a path
| |
| | |
| === [[Nix_command/ls-nar|nix ls-nar]] ===
| |
| | |
| show information about a path inside a NAR file
| |
| | |
| === [[Nix_command/ls-store|nix ls-store]] ===
| |
| | |
| show information about a path in the Nix store
| |
| | |
| === [[Nix_command/make-content-addressable|nix make-content-addressable]] ===
| |
| | |
| rewrite a path or closure to content-addressable form
| |
| | |
| === [[Nix_command/optimize-store|nix optimize-store]] ===
| |
| | |
| replace identical files in the store by hard links
| |
| | |
| === [[Nix_command/ping-store|nix ping-store]] ===
| |
| | |
| test whether a store can be opened
| |
| | |
| === [[Nix_command/print-dev-env|nix print-dev-env]] ===
| |
| | |
| print shell code that can be sourced by bash to reproduce the build environment of a derivation
| |
| | |
| === [[Nix_command/show-config|nix show-config]] ===
| |
| | |
| show the Nix configuration
| |
| | |
| === [[Nix_command/show-derivation|nix show-derivation]] ===
| |
| | |
| show the contents of a store derivation
| |
| | |
| === [[Nix_command/sign-paths|nix sign-paths]] ===
| |
| | |
| sign the specified paths
| |
| | |
| === [[Nix_command/to-base16|nix to-base16]] ===
| |
| | |
| convert a hash to base-16 representation
| |
| | |
| === [[Nix_command/to-base32|nix to-base32]] ===
| |
| | |
| convert a hash to base-32 representation
| |
| | |
| === [[Nix_command/to-base64|nix to-base64]] ===
| |
| | |
| convert a hash to base-64 representation
| |
|
| |
|
| === [[Nix_command/to-sri|nix to-sri]] === | | == New equivalents to old commands == |
| | <syntaxhighlight lang="shell"> |
| | # create a store derivation for a package defined in the current directory's default.nix |
| | old$ nix-instantiate -A somepackage |
| | # assumes you are now using flakes |
| | new$ nix eval .#somepackage.drvPath |
| | # alternative option |
| | new$ nix derivation show .#somepackage | jq '.[keys[0]]' | nix derivation add |
| | </syntaxhighlight> |
|
| |
|
| convert a hash to SRI representation
| | [[Category:Nix]] |