nixos/systemd-initrd: add boot.initrd.systemd.shell.enable option
This commit is contained in:
@@ -325,6 +325,22 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
shell.enable = lib.mkEnableOption "" // {
|
||||||
|
default = config.environment.shell.enable;
|
||||||
|
internal = true;
|
||||||
|
description = ''
|
||||||
|
Whether to enable a shell in the initrd.
|
||||||
|
|
||||||
|
In contrast to `environment.shell.enable`, this option actually
|
||||||
|
strictly disables all shells in the initrd because they're not copied
|
||||||
|
into it anymore. Paths that use a shell (e.g. via the `script` option),
|
||||||
|
will break if this option is set.
|
||||||
|
|
||||||
|
Only set this option if you're sure that you can recover from potential
|
||||||
|
issues.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
units = mkOption {
|
units = mkOption {
|
||||||
description = "Definition of systemd units.";
|
description = "Definition of systemd units.";
|
||||||
default = { };
|
default = { };
|
||||||
@@ -460,13 +476,15 @@ in
|
|||||||
++ lib.optional (config.boot.initrd.systemd.root == "gpt-auto") "rw";
|
++ lib.optional (config.boot.initrd.systemd.root == "gpt-auto") "rw";
|
||||||
|
|
||||||
boot.initrd.systemd = {
|
boot.initrd.systemd = {
|
||||||
# bashInteractive is easier to use and also required by debug-shell.service
|
|
||||||
initrdBin = [
|
initrdBin = [
|
||||||
pkgs.bashInteractive
|
|
||||||
pkgs.coreutils
|
pkgs.coreutils
|
||||||
cfg.package
|
cfg.package
|
||||||
]
|
]
|
||||||
++ lib.optional (config.system.build.kernel.config.isYes "MODULES") cfg.package.kmod;
|
++ lib.optional (config.system.build.kernel.config.isYes "MODULES") cfg.package.kmod
|
||||||
|
++ lib.optionals cfg.shell.enable [
|
||||||
|
# bashInteractive is easier to use and also required by debug-shell.service
|
||||||
|
pkgs.bashInteractive
|
||||||
|
];
|
||||||
extraBin = {
|
extraBin = {
|
||||||
less = "${pkgs.less}/bin/less";
|
less = "${pkgs.less}/bin/less";
|
||||||
mount = "${cfg.package.util-linux}/bin/mount";
|
mount = "${cfg.package.util-linux}/bin/mount";
|
||||||
@@ -550,11 +568,6 @@ in
|
|||||||
"${cfg.package.util-linux}/bin/umount"
|
"${cfg.package.util-linux}/bin/umount"
|
||||||
"${cfg.package.util-linux}/bin/sulogin"
|
"${cfg.package.util-linux}/bin/sulogin"
|
||||||
|
|
||||||
# required for services generated with writeShellScript and friends
|
|
||||||
pkgs.runtimeShell
|
|
||||||
# some tools like xfs still want the sh symlink
|
|
||||||
"${pkgs.bashNonInteractive}/bin"
|
|
||||||
|
|
||||||
# so NSS can look up usernames
|
# so NSS can look up usernames
|
||||||
"${pkgs.glibc}/lib/libnss_files.so.2"
|
"${pkgs.glibc}/lib/libnss_files.so.2"
|
||||||
|
|
||||||
@@ -566,6 +579,12 @@ in
|
|||||||
++ lib.optionals config.system.nixos-init.enable [
|
++ lib.optionals config.system.nixos-init.enable [
|
||||||
"${config.system.nixos-init.package}/bin/initrd-init"
|
"${config.system.nixos-init.package}/bin/initrd-init"
|
||||||
]
|
]
|
||||||
|
++ lib.optionals cfg.shell.enable [
|
||||||
|
# required for services generated with writeShellScript and friends
|
||||||
|
pkgs.runtimeShell
|
||||||
|
# some tools like xfs still want the sh symlink
|
||||||
|
"${pkgs.bashNonInteractive}/bin"
|
||||||
|
]
|
||||||
++ jobScripts
|
++ jobScripts
|
||||||
++ map (c: builtins.removeAttrs c [ "text" ]) (builtins.attrValues cfg.contents);
|
++ map (c: builtins.removeAttrs c [ "text" ]) (builtins.attrValues cfg.contents);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user