slackbuilds/system/nix
Pouria Rezaei c7414a536b system/nix: Organize script.
Signed-off-by: Pouria Rezaei <Pouria.rz@outlook.com>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
2024-08-02 08:04:16 +07:00
..
config
README system/nix: Some extra hardcoded assurance. 2024-07-09 20:12:47 +07:00
doinst.sh system/nix: Updated to 2.13.6. 2024-07-01 07:23:44 +07:00
fix_nix_options.patch system/nix: Organize script. 2024-08-02 08:04:16 +07:00
nix.SlackBuild system/nix: Organize script. 2024-08-02 08:04:16 +07:00
nix.info system/nix: Revoke tests in builds. 2024-07-28 17:21:26 +07:00
slack-desc system/nix: Updated to 2.13.6. 2024-07-01 07:23:44 +07:00

README

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/RSKYS/SBo-git/tree/15/nix/system/nix