Nix Installation Guide: Difference between revisions
imported>Mic92 also stable nix has flakes |
Removed the test changes for solving the problem |
||
(9 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
This guide describes various '''more advanced''' methods for installing Nix. | This guide describes various '''more advanced''' methods for installing [[Nix]] on an ''existing'' operating system. For installation of [[NixOS]], see [[NixOS Installation Guide]]. | ||
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. | ||
Line 171: | Line 171: | ||
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 | |||
Line 199: | Line 277: | ||
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]]. | ||
[[Category:nix]] | |||
[[Category:Cookbook]] |