* Make nix-channel and nix-env work when chroots are enabled.

svn path=/nixos/trunk/; revision=14271
This commit is contained in:
Eelco Dolstra 2009-02-27 12:03:03 +00:00
parent f767f1bea8
commit f5b2ecdc13

View file

@ -132,16 +132,22 @@ import ../helpers/make-etc.nix {
# other paths in the store, we need the closure of /bin/sh
# in `build-chroot-dirs' - otherwise any builder that uses
# /bin/sh won't work.
refs = pkgs.writeReferencesToFile binsh;
binshDeps = pkgs.writeReferencesToFile binsh;
# Likewise, if chroots are turned on, we need Nix's own
# closure in the chroot. Otherwise nix-channel and nix-env
# won't work because the dependencies of its builders (like
# coreutils and Perl) aren't visible. Sigh.
nixDeps = pkgs.writeReferencesToFile config.environment.nix;
in
pkgs.runCommand "nix.conf" {} ''
binshDeps=$(for i in $(cat ${refs}); do if test -d $i; then echo $i; fi; done)
extraPaths=$(for i in $(cat ${binshDeps} ${nixDeps}); do if test -d $i; then echo $i; fi; done)
cat > $out <<END
# WARNING: this file is generated.
build-users-group = nixbld
build-max-jobs = ${toString (config.nix.maxJobs)}
build-use-chroot = ${if config.nix.useChroot then "true" else "false"}
build-chroot-dirs = /dev /dev/pts /proc /bin $(echo $binshDeps)
build-chroot-dirs = /dev /dev/pts /proc /bin $(echo $extraPaths)
${config.nix.extraOptions}
END
'';