Nix (command): Difference between revisions
imported>Fricklerhandwerk remove category: Software |
No edit summary |
||
(11 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
This article is about the new | {{Navbox Nix}} | ||
{{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]].}} | |||
This article is | 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. | ||
See the [https://nixos.org/manual/nix/stable/command-ref/experimental-commands.html Nix manual] for a complete reference. | |||
== Enabling the nix command == | == Enabling the nix command == | ||
In nix 2.4 the nix command must be enabled | In nix 2.4, the nix command must be explicitly enabled. You can do this in a few different ways. | ||
=== As an individual invocation === | |||
< | <syntaxhighlight lang="console"> | ||
nix --experimental-features nix-command build ... | nix --experimental-features nix-command build ... | ||
</syntaxhighlight> | |||
=== By setting it in the nix configuration === | |||
{{File|3=experimental-features = nix-command|name=~/.config/nix/nix.conf|lang=toml}} | |||
=== 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}} | |||
== 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>: | |||
<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> | </syntaxHighlight> | ||
To migrate from <code>nix profile</code> to <code>nix-env</code>, you need to delete your current profile: | |||
<syntaxHighlight lang= | |||
{{warning|This will delete packages that have been installed before, so you may want to back this information before running the command.}} | |||
<syntaxHighlight lang=console> | |||
$ rm -rf /nix/var/nix/profiles/per-user/$USER/profile | |||
</syntaxHighlight> | </syntaxHighlight> | ||
== 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> | |||
[[Category:Nix]] | [[Category:Nix]] |