Nix Installation Guide: Difference between revisions

Hans4687 (talk | contribs)
Test friendly url
Removed outdated and incorrect information, and updated it accordingly
 
(3 intermediate revisions by 2 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.


== Single-user install ==
== Installation ==
Nix package manager can be installed as either:


=== Stable Nix ===
* Multi User Installation (recommended)
 
* Single User Installation
To install stable Nix from any Linux distribution, use the following two commands. (Note: This assumes you have the permission to use <code>sudo</code>, and you are logged in as the user you want to install Nix for.)


<syntaxHighlight lang="console">
=== Multi User Installation ===
$ sudo install -d -m755 -o $(id -u) -g $(id -g) /nix
<syntaxhighlight lang="console">
$ curl -L https://nixos.org/nix/install | sh
$ bash <(curl -L https://nixos.org/nix/install) --daemon
</syntaxHighlight>
</syntaxhighlight>


Then don't forget to reboot or run the command provided at the end of the installation script to make nix available in your system:
=== Single User Installation ===
<syntaxHighlight lang="console">
<syntaxhighlight lang="console">
$ source $HOME/.nix-profile/etc/profile.d/nix.sh
$ bash <(curl -L https://nixos.org/nix/install) --no-daemon
</syntaxHighlight>
</syntaxhighlight>


You may want to put this file directly in your ~/.bashrc or similar, so Nix would be available in any newly created shell.
=== Stable Nix ===


When using another shell like [https://fishshell.com Fish], you should ignore the previous procedure and use the [https://github.com/jorgebucaran/fisher Fisher] plugin [https://github.com/lilyball/nix-env.fish Nix-env].  
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.


After that being done, you can use all Nix commands as a normal user without any special permissions (for example by using <code>sudo</code>).
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>.
=== Unstable Nix ===
To install unstable Nix, you can use the [https://github.com/numtide/nix-unstable-installer unofficial installer by @numtide]. Instructions are available in the README of the repository.


== Nix store on an unusual filesystem ==
== Nix store on an unusual filesystem ==
Line 188: Line 191:
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.)
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.)


1 To be added...
=== Configure user and/or desktop ===
2 URL test
To start installed nix applications from the command line, add the <code>~/.nix-profile/bin</code> to <code>PATH</code>.
https://tweakers.net/
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 218: 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]]