nix: provide a working multi-user configuration by default.

This commit is contained in:
Juan RP 2013-09-30 06:05:45 +02:00
parent f855e9404b
commit e7ce46034d
2 changed files with 47 additions and 1 deletions

43
srcpkgs/nix/files/nix.sh Normal file
View File

@ -0,0 +1,43 @@
export NIX_USER_PROFILE_DIR=/nix/var/nix/profiles/per-user/$USER
mkdir -m 0755 -p $NIX_USER_PROFILE_DIR
if test "$(stat --printf '%u' $NIX_USER_PROFILE_DIR)" != "$(id -u)"; then
echo "WARNING: bad ownership on $NIX_USER_PROFILE_DIR" >&2
fi
if ! test -L $HOME/.nix-profile; then
echo "creating $HOME/.nix-profile" >&2
if test "$USER" != root; then
ln -s $NIX_USER_PROFILE_DIR/profile $HOME/.nix-profile
else
# Root installs in the system-wide profile by default.
ln -s /nix/var/nix/profiles/default $HOME/.nix-profile
fi
fi
export NIX_PROFILES="/nix/var/nix/profiles/default $HOME/.nix-profile"
for i in $NIX_PROFILES; do
export PATH=$i/bin:$PATH
done
if [ "$USER" = root -a ! -e $HOME/.nix-channels ]; then
echo "http://nixos.org/channels/nixpkgs-unstable nixpkgs" \
> $HOME/.nix-channels
fi
NIX_USER_GCROOTS_DIR=/nix/var/nix/gcroots/per-user/$USER
mkdir -m 0755 -p $NIX_USER_GCROOTS_DIR
if test "$(stat --printf '%u' $NIX_USER_GCROOTS_DIR)" != "$(id -u)"; then
echo "WARNING: bad ownership on $NIX_USER_GCROOTS_DIR" >&2
fi
if [ ! -e $HOME/.nix-defexpr -o -L $HOME/.nix-defexpr ]; then
echo "creating $HOME/.nix-defexpr" >&2
rm -f $HOME/.nix-defexpr
mkdir $HOME/.nix-defexpr
if [ "$USER" != root ]; then
ln -s /nix/var/nix/profiles/per-user/root/channels \
$HOME/.nix-defexpr/channels_root
fi
fi

View File

@ -1,7 +1,7 @@
# Template file for 'nix' # Template file for 'nix'
pkgname=nix pkgname=nix
version=1.6 version=1.6
revision=1 revision=2
build_style=gnu-configure build_style=gnu-configure
# Use /nix/var as suggested by the official Manual. # Use /nix/var as suggested by the official Manual.
configure_args="--localstatedir=/nix/var" configure_args="--localstatedir=/nix/var"
@ -24,6 +24,8 @@ post_install() {
vinstall ${FILESDIR}/nix-daemon.service 644 usr/lib/systemd/system vinstall ${FILESDIR}/nix-daemon.service 644 usr/lib/systemd/system
# Setup build users. # Setup build users.
echo 'build-users-group = nixbld' > ${DESTDIR}/etc/nix/nix.conf echo 'build-users-group = nixbld' > ${DESTDIR}/etc/nix/nix.conf
# Install our profile.d/nix for multi-user by default.
vinstall ${FILESDIR}/nix.sh 644 etc/profile.d
} }
nix_package() { nix_package() {
@ -45,6 +47,7 @@ nix_package() {
/nix/var/log/nix/drvs 0755 root root /nix/var/log/nix/drvs 0755 root root
/nix/var/nix/profiles 0755 root root /nix/var/nix/profiles 0755 root root
/nix/var/nix/profiles/per-user 1777 root root /nix/var/nix/profiles/per-user 1777 root root
/nix/var/nix/gcroots/per-user 1777 root root
/nix/var/nix/temproots 0755 root root /nix/var/nix/temproots 0755 root root
/nix/var/nix/gcroots 0755 root root /nix/var/nix/gcroots 0755 root root
/nix/var/nix/manifests 0755 root root /nix/var/nix/manifests 0755 root root