Nix Installation Guide: Difference between revisions
SummerTime (talk | contribs) Removed outdated and incorrect information, and updated it accordingly |
|||
| (8 intermediate revisions by 3 users not shown) | |||
| Line 3: | Line 3: | ||
Please take a look at https://nixos.org/download.html first for basic installation instructions and read the relevant section in the Nix manual if you want to know more about how the install process works: https://nixos.org/manual/nix/stable/#ch-installing-binary. | Please take a look at https://nixos.org/download.html first for basic installation instructions and read the relevant section in the Nix manual if you want to know more about how the install process works: https://nixos.org/manual/nix/stable/#ch-installing-binary. | ||
== | == Installation == | ||
Nix package manager can be installed as either: | |||
* Multi User Installation (recommended) | |||
* Single User Installation | |||
=== Multi User Installation === | |||
<syntaxhighlight lang="console"> | |||
$ bash <(curl -L https://nixos.org/nix/install) --daemon | |||
</syntaxhighlight> | |||
< | === Single User Installation === | ||
$ | <syntaxhighlight lang="console"> | ||
$ bash <(curl -L https://nixos.org/nix/install) --no-daemon | |||
</ | </syntaxhighlight> | ||
=== Stable Nix === | |||
By default, the rolling Nix package manager will be installed using one of the above commands and thus the <code>nixpkgs-unstable</code> [[Channel Branches|channel]] will be used. | |||
Follow the below to switch to the stable channel:<syntaxhighlight lang="console"> | |||
$ sudo su | |||
$ nix-channel --remove nixpkgs | |||
$ nix-channel --add https://nixos.org/channel/nixos-25.11 nixpkgs | |||
$ nix-channel --update | |||
</syntaxhighlight>Then run the following command to verify that you are using the stable channel:<syntaxhighlight lang="console"> | |||
$ nix-shell -p nix-info --run "nix-info -m" | |||
</syntaxhighlight> | |||
==== Troubleshooting ==== | ==== Troubleshooting ==== | ||
| Line 37: | Line 44: | ||
enabled by default on Linux which requires user namespaces. | enabled by default on Linux which requires user namespaces. | ||
If possible enable them; the procedure depends on the distribution. In last resort, you can disable the sandbox: create the file <code>~/.config/nix/nix.conf</code> and include the line <code>sandbox = false</code>. | If possible enable them; the procedure depends on the distribution. In last resort, you can disable the sandbox: create the file <code>~/.config/nix/nix.conf</code> and include the line <code>sandbox = false</code>. | ||
== Nix store on an unusual filesystem == | == Nix store on an unusual filesystem == | ||
| Line 172: | Line 175: | ||
You can make all nix commands use the alternate store by specifying it in `~/.config/nix/nix.conf` as <code>store = /home/USERNAME/my-nix</code>. | You can make all nix commands use the alternate store by specifying it in `~/.config/nix/nix.conf` as <code>store = /home/USERNAME/my-nix</code>. | ||
== Installing on Debian Using APT == | |||
If you are using Debian (or a Debian-based distro) you can install Nix with the APT package manager. Some users may prefer using APT when modifying their system. The package named <code>nix-setup-systemd</code> will set up a multi-user Nix installation and run <code>nix-daemon</code> via <code>systemd</code>. To install: | |||
<syntaxHighlight lang="console"> | |||
$ sudo apt install nix-setup-systemd | |||
</syntaxHighlight> | |||
After installing, you should read <code>/usr/share/doc/nix-bin/README.Debian</code>. In particular, you will need to add your user to the <code>nix-users</code> group in order to use the daemon: | |||
<syntaxHighlight lang="console"> | |||
$ sudo /sbin/adduser $USER nix-users | |||
</syntaxHighlight> | |||
Note that in Debian [https://packages.debian.org/bookworm/nix-setup-systemd Bookworm] <code>/etc/nix/nix.conf</code> will contain <code>sandbox = false</code>, but in Debian [https://packages.debian.org/trixie/nix-setup-systemd Trixie], sandbox mode is enabled by default. (See the Changelog for details.) | |||
=== Configure user and/or desktop === | |||
To start installed nix applications from the command line, add the <code>~/.nix-profile/bin</code> to <code>PATH</code>. | |||
To give the Desktop access the nix application data add the <code>~/.nix-profile/share</code> to <code>XDG_DATA_DIRS</code>. | |||
For example include the following snippet in <code>~/.profile</code> of the user: | |||
<syntaxHighlight lang="console"> | |||
### set PATH so it includes user's nix bin if it exists | |||
if [ -d "$HOME/.nix-profile/bin" ] ; then | |||
PATH="$HOME/.nix-profile/bin:$PATH" | |||
fi | |||
### set XDG_DATA_DIR so it includes user's nix share if it exists | |||
if [ -d "$HOME/.nix-profile/share" ] ; then | |||
XDG_DATA_DIRS="$HOME/.nix-profile/share:$XDG_DATA_DIRS" | |||
fi | |||
</syntaxHighlight> | |||
Used source: https://imranmustafa.net/nix-on-debian/ | |||
=== Troubleshooting === | |||
During the <code>nix-build</code> command following the https://nix.dev/tutorials/nixos/nixos-configuration-on-vm#creating-a-qemu-based-virtual-machine-from-a-nixos-configuration | |||
an error could occur like: | |||
<code>...linux-6.12.39-modules-shrunk/lib' is not in the Nix store</code> whilst the directory is present in the <code>/nix/store/</code> directory. | |||
A possible solution is to upgrade nix and nix-daemon applications because the distributed nix version is older, quite older with Debian [https://packages.debian.org/bookworm/nix-setup-systemd Bookworm], than the current nix version: | |||
1) Define the config at <code>~/.config/nixpkgs/config.nix</code>: | |||
<syntaxHighlight lang="console"> | |||
with (import <nixpkgs> {}); | |||
{ | |||
packageOverrides = pkgs: with pkgs; { | |||
userPackages = buildEnv { | |||
extraOutputsToInstall = [ "doc" "info" "man" ]; | |||
name = "user-packages"; | |||
paths = [ | |||
nix | |||
]; | |||
}; | |||
}; | |||
} | |||
</syntaxHighlight> | |||
To upgrade nix: | |||
<syntaxHighlight lang="console"> | |||
nix-env --install --attr nixpkgs.userPackages --remove-all | |||
</syntaxHighlight> | |||
Logout and login the user to see the effects. | |||
2) To use the upgraded <code>nix-daemon</code> application from the previous step in the <code>nix-daemon.service</code>, add a drop-in config file <code>override.conf</code> in <code>/etc/systemd/system/nix-daemon.service.d/</code>: | |||
<syntaxHighlight lang="console"> | |||
[Service] | |||
ExecStart= | |||
ExecStart=@/home/myuser/.nix-profile/bin/nix-daemon nix-daemon --daemon | |||
</syntaxHighlight> | |||
Restart the <code>nix-daemon.service</code> | |||
Used source: https://blog.koch.ro/posts/2024-01-16-using-nix-package-manager-in-debian.html | |||
== Windows Subsystem for Linux (WSL) == | == Windows Subsystem for Linux (WSL) == | ||
| Line 199: | Line 278: | ||
Because there is no officially produced ARMv7l installer, this page describes how to build your own: [[Nix_on_ARM]]. | Because there is no officially produced ARMv7l installer, this page describes how to build your own: [[Nix_on_ARM]]. | ||
== Further reading == | |||
* [https://nixcademy.com/posts/nix-on-macos/ Setting up Nix on macOS, Nixcademy] | |||
[[Category:nix]] | [[Category:nix]] | ||
[[Category:Cookbook]] | [[Category:Cookbook]] | ||