diff --git a/lib/meta.nix b/lib/meta.nix index 199030c103a..8516cc1cd6f 100644 --- a/lib/meta.nix +++ b/lib/meta.nix @@ -86,4 +86,6 @@ rec { then { system = elem; } else { parsed = elem; }; in lib.matchAttrs pattern platform; + + enableIfAvailable = p: if p.meta.available or true then [ p ] else []; } diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index e8ea2bed25f..2f0c402f398 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -39,8 +39,6 @@ rec { isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ]; isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; - isKexecable = map (family: { kernel = kernels.linux; cpu.family = family; }) - [ "x86" "arm" "aarch64" "mips" ]; isEfi = map (family: { cpu.family = family; }) [ "x86" "arm" "aarch64" ]; isSeccomputable = map (family: { kernel = kernels.linux; cpu.family = family; }) diff --git a/nixos/modules/system/boot/kexec.nix b/nixos/modules/system/boot/kexec.nix index 14ebe66e632..3fc1af28f62 100644 --- a/nixos/modules/system/boot/kexec.nix +++ b/nixos/modules/system/boot/kexec.nix @@ -1,7 +1,7 @@ { config, pkgs, lib, ... }: { - config = lib.mkIf (pkgs.kexectools != null) { + config = lib.mkIf (pkgs.kexectools.meta.available) { environment.systemPackages = [ pkgs.kexectools ]; systemd.services."prepare-kexec" = diff --git a/pkgs/os-specific/linux/kexectools/default.nix b/pkgs/os-specific/linux/kexectools/default.nix index c4c5b7cc3b9..26f3d89c662 100644 --- a/pkgs/os-specific/linux/kexectools/default.nix +++ b/pkgs/os-specific/linux/kexectools/default.nix @@ -22,5 +22,6 @@ stdenv.mkDerivation rec { homepage = http://horms.net/projects/kexec/kexec-tools; description = "Tools related to the kexec Linux feature"; platforms = platforms.linux; + badPlatforms = platforms.riscv; }; } diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index d0f35d6736d..763c28464ab 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -41,7 +41,8 @@ in stdenv.mkDerivation rec { buildInputs = [ linuxHeaders libcap kmod xz pam acl /* cryptsetup */ libuuid glib libgcrypt libgpgerror libidn2 - libmicrohttpd kexectools libseccomp libffi audit lz4 bzip2 libapparmor + libmicrohttpd ] ++ stdenv.lib.meta.enableIfAvailable kexectools ++ + [ libseccomp libffi audit lz4 bzip2 libapparmor iptables gnu-efi # This is actually native, but we already pull it from buildPackages pythonLxmlEnv diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 831fc8344cb..8d2a17a79da 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3131,9 +3131,7 @@ with pkgs; keepalived = callPackage ../tools/networking/keepalived { }; - kexectools = if hostPlatform.isKexecable - then callPackage ../os-specific/linux/kexectools { } - else null; + kexectools = callPackage ../os-specific/linux/kexectools { }; keybase = callPackage ../tools/security/keybase { };