diff --git a/modules/system/boot/systemd.nix b/modules/system/boot/systemd.nix index 720c8efc53fa..eee65a3ffe0f 100644 --- a/modules/system/boot/systemd.nix +++ b/modules/system/boot/systemd.nix @@ -22,7 +22,7 @@ let upstreamUnits = [ # Targets. "basic.target" - "sysinit.target" + #"sysinit.target" "sockets.target" "graphical.target" "multi-user.target" @@ -459,6 +459,17 @@ in { description = "Security Keys"; }; + # This is like the upstream sysinit.target, except that it doesn't + # depend on local-fs.target and swap.target. If services need to + # be started after some filesystem (local or otherwise) has been + # mounted, they should use the RequiresMountsFor option. + boot.systemd.targets.sysinit = + { description = "System Initialization"; + after = [ "emergency.service" "emergency.target" ]; + unitConfig.Conflicts = "emergency.service emergency.target"; + unitConfig.RefuseManualStart = true; + }; + boot.systemd.units = { "rescue.service".text = rescueService; } // mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets