(cherry picked from commit 56c283e5c8dfd4d8d5daa15dfa3896beef2ac012)main
parent
270426ab6e
commit
9809e1575b
@ -0,0 +1,12 @@ |
||||
{ config, lib, ... }: |
||||
let |
||||
inherit (lib) stringAfter; |
||||
in { |
||||
|
||||
imports = [ ./etc.nix ]; |
||||
|
||||
config = { |
||||
system.activationScripts.etc = |
||||
stringAfter [ "users" "groups" ] config.system.build.etcActivationCommands; |
||||
}; |
||||
} |
@ -0,0 +1,70 @@ |
||||
{ lib |
||||
, coreutils |
||||
, fakechroot |
||||
, fakeroot |
||||
, evalMinimalConfig |
||||
, pkgsModule |
||||
, runCommand |
||||
, util-linux |
||||
, vmTools |
||||
, writeText |
||||
}: |
||||
let |
||||
node = evalMinimalConfig ({ config, ... }: { |
||||
imports = [ pkgsModule ../etc/etc.nix ]; |
||||
environment.etc."passwd" = { |
||||
text = passwdText; |
||||
}; |
||||
environment.etc."hosts" = { |
||||
text = hostsText; |
||||
mode = "0751"; |
||||
}; |
||||
}); |
||||
passwdText = '' |
||||
root:x:0:0:System administrator:/root:/run/current-system/sw/bin/bash |
||||
''; |
||||
hostsText = '' |
||||
127.0.0.1 localhost |
||||
::1 localhost |
||||
# testing... |
||||
''; |
||||
in |
||||
lib.recurseIntoAttrs { |
||||
test-etc-vm = |
||||
vmTools.runInLinuxVM (runCommand "test-etc-vm" { } '' |
||||
mkdir -p /etc |
||||
${node.config.system.build.etcActivationCommands} |
||||
set -x |
||||
[[ -L /etc/passwd ]] |
||||
diff /etc/passwd ${writeText "expected-passwd" passwdText} |
||||
[[ 751 = $(stat --format %a /etc/hosts) ]] |
||||
diff /etc/hosts ${writeText "expected-hosts" hostsText} |
||||
set +x |
||||
touch $out |
||||
''); |
||||
|
||||
# fakeroot is behaving weird |
||||
test-etc-fakeroot = |
||||
runCommand "test-etc" |
||||
{ |
||||
nativeBuildInputs = [ |
||||
fakeroot |
||||
fakechroot |
||||
# for chroot |
||||
coreutils |
||||
# fakechroot needs getopt, which is provided by util-linux |
||||
util-linux |
||||
]; |
||||
fakeRootCommands = '' |
||||
mkdir -p /etc |
||||
${node.config.system.build.etcActivationCommands} |
||||
diff /etc/hosts ${writeText "expected-hosts" hostsText} |
||||
touch $out |
||||
''; |
||||
} '' |
||||
mkdir fake-root |
||||
export FAKECHROOT_EXCLUDE_PATH=/dev:/proc:/sys:${builtins.storeDir}:$out |
||||
fakechroot fakeroot chroot $PWD/fake-root bash -c 'source $stdenv/setup; eval "$fakeRootCommands"' |
||||
''; |
||||
|
||||
} |
Loading…
Reference in new issue