diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index a8885aee78f2..aea6855f91c5 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -47,6 +47,9 @@ let "rescue.target" "rescue.service" + # systemd-debug-generator + "debug-shell.service" + # Udev. "systemd-tmpfiles-setup-dev-early.service" "systemd-udevd-control.socket" diff --git a/nixos/modules/system/boot/systemd/initrd.nix b/nixos/modules/system/boot/systemd/initrd.nix index 06359f273846..6546b500ed98 100644 --- a/nixos/modules/system/boot/systemd/initrd.nix +++ b/nixos/modules/system/boot/systemd/initrd.nix @@ -18,10 +18,10 @@ let cfg = config.boot.initrd.systemd; - # Copied from fedora upstreamUnits = [ "basic.target" "ctrl-alt-del.target" + "debug-shell.service" "emergency.service" "emergency.target" "final.target" @@ -398,7 +398,8 @@ in { ++ lib.optional (config.boot.initrd.systemd.root == "gpt-auto") "rw"; boot.initrd.systemd = { - initrdBin = [pkgs.bash pkgs.coreutils cfg.package.kmod cfg.package]; + # bashInteractive is easier to use and also required by debug-shell.service + initrdBin = [pkgs.bashInteractive pkgs.coreutils cfg.package.kmod cfg.package]; extraBin = { less = "${pkgs.less}/bin/less"; mount = "${cfg.package.util-linux}/bin/mount"; @@ -472,6 +473,9 @@ in { "${cfg.package.util-linux}/bin/umount" "${cfg.package.util-linux}/bin/sulogin" + # required for script services + "${pkgs.runtimeShell}" + # so NSS can look up usernames "${pkgs.glibc}/lib/libnss_files.so.2" ] ++ optionals (cfg.package.withCryptsetup && cfg.enableTpm2) [