core/pkgs/build-support/fake-nss/default.nix

30 lines
904 B
Nix
Raw Normal View History

2024-05-02 00:46:19 +00:00
# Provide a /etc/passwd and /etc/group that contain root and nobody.
# Useful when packaging binaries that insist on using nss to look up
# username/groups (like nginx).
# /bin/sh is fine to not exist, and provided by another shim.
2024-05-13 21:24:10 +00:00
{ lib, symlinkJoin, writeTextDir, runCommand, extraPasswdLines ? [ ]
, extraGroupLines ? [ ] }:
2024-05-02 00:46:19 +00:00
symlinkJoin {
name = "fake-nss";
paths = [
(writeTextDir "etc/passwd" ''
root:x:0:0:root user:/var/empty:/bin/sh
2024-05-13 21:24:10 +00:00
${
lib.concatStrings (map (line: line + "\n") extraPasswdLines)
}nobody:x:65534:65534:nobody:/var/empty:/bin/sh
2024-05-02 00:46:19 +00:00
'')
(writeTextDir "etc/group" ''
root:x:0:
2024-05-13 21:24:10 +00:00
${
lib.concatStrings (map (line: line + "\n") extraGroupLines)
}nobody:x:65534:
2024-05-02 00:46:19 +00:00
'')
(writeTextDir "etc/nsswitch.conf" ''
hosts: files dns
'')
(runCommand "var-empty" { } ''
mkdir -p $out/var/empty
'')
];
}