diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-11-30 08:59:41 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-11-30 08:59:41 +0100 |
| commit | 49066ca33e354d21a10a3a9bd8ebc24d4fbb4ec0 (patch) | |
| tree | df0f1f710d0be768a1d2120a83f940382ca99700 /nix/README | |
| parent | c684e04e112094a439d67faec095d428f8fda822 (diff) | |
| download | slackbuilder-49066ca33e354d21a10a3a9bd8ebc24d4fbb4ec0.tar.gz | |
nix: Added
Diffstat (limited to 'nix/README')
| -rw-r--r-- | nix/README | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/nix/README b/nix/README new file mode 100644 index 0000000..dcfdc63 --- /dev/null +++ b/nix/README @@ -0,0 +1,65 @@ +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 "$(which 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 + +For 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 |
