mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-24 10:02:29 +01:00
4422d5ed29
Signed-off-by: B. Watson <yalhcru@gmail.com>
66 lines
2.2 KiB
Text
66 lines
2.2 KiB
Text
nix (functional package manager)
|
|
|
|
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). The following sets up multi-user mode.
|
|
|
|
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 /sbin/nologin \
|
|
# nixbld$n; done
|
|
|
|
Restricting access to the daemon is acheived by setting file
|
|
permissions for the daemon's socket's folder.
|
|
|
|
# groupadd nix-users
|
|
# 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.
|
|
|
|
# mkdir -p /nix/var/nix/profiles/per-user
|
|
# chgrp nix-users /nix/var/nix/profiles/per-user
|
|
# chmod go+wt /nix/var/nix/profiles/per-user
|
|
|
|
# mkdir -p /nix/var/nix/gcroots/per-user
|
|
# chgrp nix-users /nix/var/nix/gcroots/per-user
|
|
# chmod go+wt /nix/var/nix/gcroots/per-user
|
|
|
|
To setup a user to use nix, add him to the nix-users group and load
|
|
these lines on login (via $HOME/.profile):
|
|
|
|
export NIX_REMOTE=daemon
|
|
source /etc/profile.d/nix.sh
|
|
|
|
If you have patches email me, or send a pull request via github:
|
|
|
|
https://github.com/PragmaticCypher/nix.SlackBuild
|