Merge pull request #306339 from Mic92/systemd-boot

nixos/systemd-boot: avoid expensive mypy builds on configuration changes

Changed files
+14 -12
nixos
modules
system
boot
loader
systemd-boot
+14 -12
nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix
···
efi = config.boot.loader.efi;
systemdBootBuilder = pkgs.substituteAll rec {
-
src = ./systemd-boot-builder.py;
isExecutable = true;
···
'';
};
-
checkedSystemdBootBuilder = pkgs.runCommand "systemd-boot" { } ''
-
mkdir -p $out/bin
-
install -m755 ${systemdBootBuilder} $out/bin/systemd-boot-builder
-
${lib.getExe pkgs.buildPackages.mypy} \
-
--no-implicit-optional \
-
--disallow-untyped-calls \
-
--disallow-untyped-defs \
-
$out/bin/systemd-boot-builder
-
'';
-
finalSystemdBootBuilder = pkgs.writeScript "install-systemd-boot.sh" ''
#!${pkgs.runtimeShell}
-
${checkedSystemdBootBuilder}/bin/systemd-boot-builder "$@"
${cfg.extraInstallCommands}
'';
in {
···
efi = config.boot.loader.efi;
+
# We check the source code in a derivation that does not depend on the
+
# system configuration so that most users don't have to redo the check and require
+
# the necessary dependencies.
+
checkedSource = pkgs.runCommand "systemd-boot" { } ''
+
install -m755 -D ${./systemd-boot-builder.py} $out
+
${lib.getExe pkgs.buildPackages.mypy} \
+
--no-implicit-optional \
+
--disallow-untyped-calls \
+
--disallow-untyped-defs \
+
$out
+
'';
+
systemdBootBuilder = pkgs.substituteAll rec {
+
src = checkedSource;
isExecutable = true;
···
'';
};
finalSystemdBootBuilder = pkgs.writeScript "install-systemd-boot.sh" ''
#!${pkgs.runtimeShell}
+
${systemdBootBuilder} "$@"
${cfg.extraInstallCommands}
'';
in {