slackbuilds/system/nix/README

51 lines
1.7 KiB
Plaintext

Nix is a purely functional package manager. This means that it treats
packages like values in purely functional programming languages such as
Haskell -- they are built by functions that don't have side-effects,
and they never change after they have been built. Nix stores packages
in the Nix store, usually the directory /nix/store, where each package
has its own unique subdirectory such as
/nix/store/b6gvzjyb2pg0kjfwrjmg1vfhh54ad73z-firefox-33.1/
where b6gvzjyb2pg0... is a unique identifier for the package that
captures all its dependencies (it's a cryptographic hash of the
package's build dependency graph).
Nix may be run in single or multi-user mode (which requires the
nix-daemon). To have the nix daemon start and stop with your host,
add to /etc/rc.d/rc.local:
if [ -x /etc/rc.d/rc.nix ]; then
/etc/rc.d/rc.nix start
fi
and to /etc/rc.d/rc.local_shutdown (creating it if needed):
if [ -x /etc/rc.d/rc.nix ]; then
/etc/rc.d/rc.nix stop
fi
The daemon requires users for building the nix packages, which should
be added under the 'nixbld' group.
groupadd -g 314 nixbld
for n in $(seq 1 10); do useradd -c "Nix build user $n" \
-d /var/empty -g nixbld -G nixbld -M -N -r -s "$(which nologin)" \
nixbld$n; done
Restricting access to the daemon is acheived by setting file
permissions for the daemon's socket's folder.
chgrp nix-users /nix/var/nix/daemon-socket
chmod ug=rwx,o= /nix/var/nix/daemon-socket
Correct permissions must also be set for the following profile
directories to give users access.
/nix/var/nix/profiles
/var/nix/profiles
If you have patches email me, or send a pull request via github:
https://github.com/PragmaticCypher/slackbuilds