Loading nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py +14 −3 Original line number Diff line number Diff line Loading @@ -88,9 +88,20 @@ def write_loader_conf(profile: str | None, generation: int, specialisation: str def get_bootspec(profile: str | None, generation: int) -> BootSpec: boot_json_path = os.path.realpath("%s/%s" % (system_dir(profile, generation, None), "boot.json")) system_directory = system_dir(profile, generation, None) boot_json_path = os.path.realpath("%s/%s" % (system_directory, "boot.json")) if os.path.isfile(boot_json_path): boot_json_f = open(boot_json_path, 'r') bootspec_json = json.load(boot_json_f) else: boot_json_str = subprocess.check_output([ "@bootspecTools@/bin/synthesize", "--version", "1", system_directory, "/dev/stdout"], universal_newlines=True) bootspec_json = json.loads(boot_json_str) return bootspec_from_json(bootspec_json) def bootspec_from_json(bootspec_json: Dict) -> BootSpec: Loading nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ let systemd = config.systemd.package; bootspecTools = pkgs.bootspec; nix = config.nix.package.out; timeout = optionalString (config.boot.loader.timeout != null) config.boot.loader.timeout; Loading nixos/tests/systemd-boot.nix +16 −0 Original line number Diff line number Diff line Loading @@ -277,4 +277,20 @@ in machine.wait_for_unit("multi-user.target") ''; }; no-bootspec = makeTest { name = "systemd-boot-no-bootspec"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { imports = [ common ]; boot.bootspec.enable = false; }; testScript = '' machine.start() machine.wait_for_unit("multi-user.target") ''; }; } pkgs/tools/misc/bootspec/default.nix +12 −0 Original line number Diff line number Diff line { lib , rustPlatform , fetchFromGitHub , fetchpatch }: rustPlatform.buildRustPackage rec { pname = "bootspec"; Loading @@ -13,6 +14,17 @@ rustPlatform.buildRustPackage rec { hash = "sha256-5IGSMHeL0eKfl7teDejAckYQjc8aeLwfwIQSzQ8YaAg="; }; patches = [ # https://github.com/DeterminateSystems/bootspec/pull/127 # Fixes the synthesize tool for aarch64-linux (fetchpatch { name = "aarch64-support.patch"; url = "https://github.com/DeterminateSystems/bootspec/commit/1d0e925f360f0199f13422fb7541225fd162fd4f.patch"; sha256 = "sha256-wU/jWnOqVBrU2swANdXbQfzRpNd/JIS4cxSyCvixZM0="; }) ]; cargoHash = "sha256-eGSKVHjPnHK7WyGkO5LIjocNGHawahYQR3H5Lgk1C9s="; meta = with lib; { Loading Loading
nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py +14 −3 Original line number Diff line number Diff line Loading @@ -88,9 +88,20 @@ def write_loader_conf(profile: str | None, generation: int, specialisation: str def get_bootspec(profile: str | None, generation: int) -> BootSpec: boot_json_path = os.path.realpath("%s/%s" % (system_dir(profile, generation, None), "boot.json")) system_directory = system_dir(profile, generation, None) boot_json_path = os.path.realpath("%s/%s" % (system_directory, "boot.json")) if os.path.isfile(boot_json_path): boot_json_f = open(boot_json_path, 'r') bootspec_json = json.load(boot_json_f) else: boot_json_str = subprocess.check_output([ "@bootspecTools@/bin/synthesize", "--version", "1", system_directory, "/dev/stdout"], universal_newlines=True) bootspec_json = json.loads(boot_json_str) return bootspec_from_json(bootspec_json) def bootspec_from_json(bootspec_json: Dict) -> BootSpec: Loading
nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ let systemd = config.systemd.package; bootspecTools = pkgs.bootspec; nix = config.nix.package.out; timeout = optionalString (config.boot.loader.timeout != null) config.boot.loader.timeout; Loading
nixos/tests/systemd-boot.nix +16 −0 Original line number Diff line number Diff line Loading @@ -277,4 +277,20 @@ in machine.wait_for_unit("multi-user.target") ''; }; no-bootspec = makeTest { name = "systemd-boot-no-bootspec"; meta.maintainers = with pkgs.lib.maintainers; [ julienmalka ]; nodes.machine = { imports = [ common ]; boot.bootspec.enable = false; }; testScript = '' machine.start() machine.wait_for_unit("multi-user.target") ''; }; }
pkgs/tools/misc/bootspec/default.nix +12 −0 Original line number Diff line number Diff line { lib , rustPlatform , fetchFromGitHub , fetchpatch }: rustPlatform.buildRustPackage rec { pname = "bootspec"; Loading @@ -13,6 +14,17 @@ rustPlatform.buildRustPackage rec { hash = "sha256-5IGSMHeL0eKfl7teDejAckYQjc8aeLwfwIQSzQ8YaAg="; }; patches = [ # https://github.com/DeterminateSystems/bootspec/pull/127 # Fixes the synthesize tool for aarch64-linux (fetchpatch { name = "aarch64-support.patch"; url = "https://github.com/DeterminateSystems/bootspec/commit/1d0e925f360f0199f13422fb7541225fd162fd4f.patch"; sha256 = "sha256-wU/jWnOqVBrU2swANdXbQfzRpNd/JIS4cxSyCvixZM0="; }) ]; cargoHash = "sha256-eGSKVHjPnHK7WyGkO5LIjocNGHawahYQR3H5Lgk1C9s="; meta = with lib; { Loading