summaryrefslogtreecommitdiff
path: root/scripts/syschdemd.nix
blob: 06ba6535de3fe255a71ee15e23f157c06254974d (plain)
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;
}