Nix (command): Difference between revisions
m Better phrasing |
No edit summary |
||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Disambiguation|message=This article is about the new nix command. Not to be confused with the [[Nix ecosystem]], the [[Nix (language)]] or the [[Nix | {{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 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. | 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. | ||
Line 7: | Line 8: | ||
== 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}} | |||
experimental-features = nix-command | |||
On NixOS you can't edit <code>/etc/nix/nix.conf</code> directly, | === 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, ... }: { | |||
{ pkgs, ... }: { | |||
nix.settings.experimental-features = [ "nix-command" ]; | nix.settings.experimental-features = [ "nix-command" ]; | ||
}|name=/etc/nixos/configuration.nix|lang=nix}}{{Evaluate}} | |||
} | |||
== Switching | == 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>: | ||
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> | <syntaxHighlight lang=console> | ||
Line 46: | Line 34: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
To migrate | To migrate from <code>nix profile</code> to <code>nix-env</code>, you need to delete your current profile: | ||
{{warning|This will delete packages that have been installed before, so you may want to back this information before running the command.}} | {{warning|This will delete packages that have been installed before, so you may want to back this information before running the command.}} | ||
Line 55: | Line 43: | ||
== New equivalents to old commands == | == New equivalents to old commands == | ||
< | <syntaxhighlight lang="shell"> | ||
# create a store derivation for a package defined in the current directory's default.nix | # create a store derivation for a package defined in the current directory's default.nix | ||
old$ nix-instantiate -A somepackage | old$ nix-instantiate -A somepackage | ||
Line 62: | Line 50: | ||
# alternative option | # alternative option | ||
new$ nix derivation show .#somepackage | jq '.[keys[0]]' | nix derivation add | new$ nix derivation show .#somepackage | jq '.[keys[0]]' | nix derivation add | ||
</ | </syntaxhighlight> | ||
[[Category:Nix]] | [[Category:Nix]] |