1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
{ runCommand
, makeWrapper
, lib
, coreutils
, daemonize
, getent
, gnugrep
, systemd
, util-linux
, which
, defaultUser
, automountPath
, ...
}:
let
mkWrappedScript =
{ name
, src
, path
, ...
} @ args:
runCommand name ({ nativeBuildInputs = [ makeWrapper ]; } // args) ''
install -Dm755 ${src} $out/bin/${name}
patchShebangs $out/bin/${name}
substituteAllInPlace $out/bin/${name}
wrapProgram $out/bin/${name} --prefix PATH ':' ${lib.escapeShellArg path}
'';
wrapper = mkWrappedScript {
name = "nixos-wsl-systemd-wrapper";
src = ./wrapper.sh;
path = lib.makeSearchPath "" [
"/run/wrappers/bin" # mount
"${gnugrep}/bin" # grep
"${systemd}/lib/systemd" # systemd
];
};
in
mkWrappedScript {
name = "syschdemd";
src = ./syschdemd.sh;
path = lib.makeBinPath [
"/run/wrappers" # mount
coreutils
daemonize
getent
gnugrep
systemd # machinectl
util-linux # nsenter, runuser
which
wrapper
];
username = defaultUser.name;
inherit automountPath;
}
|