bootspec: generalize the bootspec tooling packaging (#401484)
This commit is contained in:
@@ -111,6 +111,8 @@ in
|
||||
Enable this option if you want to ascertain that your documents are correct
|
||||
'';
|
||||
|
||||
package = lib.mkPackageOption pkgs "bootspec" { };
|
||||
|
||||
extensions = lib.mkOption {
|
||||
# NOTE(RaitoBezarius): this is not enough to validate: extensions."osRelease" = drv; those are picked up by cue validation.
|
||||
type = lib.types.attrsOf lib.types.anything; # <namespace>: { ...namespace-specific fields }
|
||||
|
||||
@@ -47,7 +47,7 @@ let
|
||||
|
||||
systemd = config.systemd.package;
|
||||
|
||||
bootspecTools = pkgs.bootspec;
|
||||
bootspecTools = config.boot.bootspec.package;
|
||||
|
||||
nix = config.nix.package.out;
|
||||
|
||||
|
||||
+83
-81
@@ -680,95 +680,97 @@ let
|
||||
in
|
||||
{
|
||||
# The configuration of the system used to run "nixos-install".
|
||||
installer = {
|
||||
imports = [
|
||||
commonConfig
|
||||
../modules/profiles/installation-device.nix
|
||||
../modules/profiles/base.nix
|
||||
extraInstallerConfig
|
||||
./common/auto-format-root-device.nix
|
||||
];
|
||||
installer =
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [
|
||||
commonConfig
|
||||
../modules/profiles/installation-device.nix
|
||||
../modules/profiles/base.nix
|
||||
extraInstallerConfig
|
||||
./common/auto-format-root-device.nix
|
||||
];
|
||||
|
||||
# In systemdStage1, also automatically format the device backing the
|
||||
# root filesystem.
|
||||
virtualisation.fileSystems."/".autoFormat = systemdStage1;
|
||||
# In systemdStage1, also automatically format the device backing the
|
||||
# root filesystem.
|
||||
virtualisation.fileSystems."/".autoFormat = systemdStage1;
|
||||
|
||||
boot.initrd.systemd.enable = systemdStage1;
|
||||
boot.initrd.systemd.enable = systemdStage1;
|
||||
|
||||
# Use a small /dev/vdb as the root disk for the
|
||||
# installer. This ensures the target disk (/dev/vda) is
|
||||
# the same during and after installation.
|
||||
virtualisation.emptyDiskImages = [ 512 ];
|
||||
virtualisation.rootDevice = "/dev/vdb";
|
||||
# Use a small /dev/vdb as the root disk for the
|
||||
# installer. This ensures the target disk (/dev/vda) is
|
||||
# the same during and after installation.
|
||||
virtualisation.emptyDiskImages = [ 512 ];
|
||||
virtualisation.rootDevice = "/dev/vdb";
|
||||
|
||||
hardware.enableAllFirmware = mkForce false;
|
||||
nix.package = selectNixPackage pkgs;
|
||||
nix.package = selectNixPackage pkgs;
|
||||
hardware.enableAllFirmware = mkForce false;
|
||||
|
||||
# The test cannot access the network, so any packages we
|
||||
# need must be included in the VM.
|
||||
system.extraDependencies =
|
||||
with pkgs;
|
||||
[
|
||||
bintools
|
||||
brotli
|
||||
brotli.dev
|
||||
brotli.lib
|
||||
desktop-file-utils
|
||||
docbook5
|
||||
docbook_xsl_ns
|
||||
kbd.dev
|
||||
kmod.dev
|
||||
libarchive.dev
|
||||
libxml2.bin
|
||||
libxslt.bin
|
||||
nixos-artwork.wallpapers.simple-dark-gray-bottom
|
||||
ntp
|
||||
perlPackages.ConfigIniFiles
|
||||
perlPackages.FileSlurp
|
||||
perlPackages.JSON
|
||||
perlPackages.ListCompare
|
||||
perlPackages.XMLLibXML
|
||||
# make-options-doc/default.nix
|
||||
(python3.withPackages (p: [ p.mistune ]))
|
||||
shared-mime-info
|
||||
sudo
|
||||
switch-to-configuration-ng
|
||||
texinfo
|
||||
unionfs-fuse
|
||||
xorg.lndir
|
||||
shellcheck-minimal
|
||||
|
||||
# add curl so that rather than seeing the test attempt to download
|
||||
# curl's tarball, we see what it's trying to download
|
||||
curl
|
||||
]
|
||||
++ optionals (bootLoader == "grub") (
|
||||
let
|
||||
zfsSupport = extraInstallerConfig.boot.supportedFilesystems.zfs or false;
|
||||
in
|
||||
# The test cannot access the network, so any packages we
|
||||
# need must be included in the VM.
|
||||
system.extraDependencies =
|
||||
with pkgs;
|
||||
[
|
||||
(pkgs.grub2.override { inherit zfsSupport; })
|
||||
(pkgs.grub2_efi.override { inherit zfsSupport; })
|
||||
pkgs.nixos-artwork.wallpapers.simple-dark-gray-bootloader
|
||||
pkgs.perlPackages.FileCopyRecursive
|
||||
pkgs.perlPackages.XMLSAX
|
||||
pkgs.perlPackages.XMLSAXBase
|
||||
]
|
||||
)
|
||||
++ optionals (bootLoader == "systemd-boot") [
|
||||
pkgs.zstd.bin
|
||||
pkgs.mypy
|
||||
pkgs.bootspec
|
||||
]
|
||||
++ optionals clevisTest [ pkgs.klibc ]
|
||||
++ optional systemdStage1 pkgs.chroot-realpath;
|
||||
bintools
|
||||
brotli
|
||||
brotli.dev
|
||||
brotli.lib
|
||||
desktop-file-utils
|
||||
docbook5
|
||||
docbook_xsl_ns
|
||||
kbd.dev
|
||||
kmod.dev
|
||||
libarchive.dev
|
||||
libxml2.bin
|
||||
libxslt.bin
|
||||
nixos-artwork.wallpapers.simple-dark-gray-bottom
|
||||
ntp
|
||||
perlPackages.ConfigIniFiles
|
||||
perlPackages.FileSlurp
|
||||
perlPackages.JSON
|
||||
perlPackages.ListCompare
|
||||
perlPackages.XMLLibXML
|
||||
# make-options-doc/default.nix
|
||||
(python3.withPackages (p: [ p.mistune ]))
|
||||
shared-mime-info
|
||||
sudo
|
||||
switch-to-configuration-ng
|
||||
texinfo
|
||||
unionfs-fuse
|
||||
xorg.lndir
|
||||
shellcheck-minimal
|
||||
|
||||
nix.settings = {
|
||||
substituters = mkForce [ ];
|
||||
hashed-mirrors = null;
|
||||
connect-timeout = 1;
|
||||
# add curl so that rather than seeing the test attempt to download
|
||||
# curl's tarball, we see what it's trying to download
|
||||
curl
|
||||
]
|
||||
++ optionals (bootLoader == "grub") (
|
||||
let
|
||||
zfsSupport = extraInstallerConfig.boot.supportedFilesystems.zfs or false;
|
||||
in
|
||||
[
|
||||
(pkgs.grub2.override { inherit zfsSupport; })
|
||||
(pkgs.grub2_efi.override { inherit zfsSupport; })
|
||||
pkgs.nixos-artwork.wallpapers.simple-dark-gray-bootloader
|
||||
pkgs.perlPackages.FileCopyRecursive
|
||||
pkgs.perlPackages.XMLSAX
|
||||
pkgs.perlPackages.XMLSAXBase
|
||||
]
|
||||
)
|
||||
++ optionals (bootLoader == "systemd-boot") [
|
||||
pkgs.zstd.bin
|
||||
pkgs.mypy
|
||||
config.boot.bootspec.package
|
||||
]
|
||||
++ optionals clevisTest [ pkgs.klibc ]
|
||||
++ optional systemdStage1 pkgs.chroot-realpath;
|
||||
|
||||
nix.settings = {
|
||||
substituters = mkForce [ ];
|
||||
hashed-mirrors = null;
|
||||
connect-timeout = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
target = {
|
||||
imports = [ commonConfig ];
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromGitea,
|
||||
fetchpatch,
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "bootspec-lix";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "git.lix.systems";
|
||||
owner = "lix-community";
|
||||
repo = "bootspec";
|
||||
rev = "v${version}";
|
||||
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=";
|
||||
})
|
||||
];
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-65jk8UlXZgQoxuwRcGlMnI4e+LpCJuP2TaqK+Kn4GnQ=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Vendor-neutral implementation of RFC-0125's datatype and synthesis tooling";
|
||||
homepage = "https://git.lix.systems/lix-community/bootspec";
|
||||
license = licenses.mit;
|
||||
maintainers = [ lib.maintainers.raitobezarius ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user