nixos/systemd: Make machinectl work with NixOS
Images generated with nixos-install will be supported by machinectl problem is that systemd-nspawn's private usersns feature clashes with DynamicUser and RuntimeDirectory features, which causes NixOS images to not boot. There is an upstream issue for this https://github.com/systemd/systemd/issues/13622
This commit is contained in:
parent
d4212d66a8
commit
7058b0ad12
1 changed files with 16 additions and 6 deletions
|
@ -113,11 +113,21 @@ in {
|
|||
config =
|
||||
let
|
||||
units = mapAttrs' (n: v: let nspawnFile = "${n}.nspawn"; in nameValuePair nspawnFile (instanceToUnit nspawnFile v)) cfg;
|
||||
in mkIf (cfg != {}) {
|
||||
|
||||
environment.etc."systemd/nspawn".source = generateUnits "nspawn" units [] [];
|
||||
|
||||
in
|
||||
mkMerge [
|
||||
(mkIf (cfg != {}) {
|
||||
environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits "nspawn" units [] []);
|
||||
})
|
||||
{
|
||||
systemd.targets.multi-user.wants = [ "machines.target" ];
|
||||
};
|
||||
|
||||
# Workaround for https://github.com/NixOS/nixpkgs/pull/67232#issuecomment-531315437 and https://github.com/systemd/systemd/issues/13622
|
||||
# Once systemd fixes this upstream, we can re-enable -U
|
||||
systemd.services."systemd-nspawn@".serviceConfig.ExecStart = [
|
||||
"" # deliberately empty. signals systemd to override the ExecStart
|
||||
# Only difference between upstream is that we do not pass the -U flag
|
||||
"${pkgs.systemd}/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --settings=override --machine=%i"
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue