From 35bb28b367312d94815f03d07d5600ecd362fb26 Mon Sep 17 00:00:00 2001 From: Samuel Dionne-Riel Date: Thu, 22 Dec 2022 23:00:14 -0500 Subject: [PATCH] nixos: Add iso_minimal_new_kernel_no_zfs Support for ZFS, while desirable, is problematic with newer kernel releases. The stable ZFS release seldom supports the current newest kernel version, and this makes the new_kernel iso basically useless as it cannot be published, and is not often built with new kernel releases. This uses a dirty workaround to work around the fact it is impossible to remove a list item from a modules system list type. Since ZFS support is conditional to being supported on the current platform, we can fake ZFS not being supported *for the no-zfs build only*. This overlay is only added when evaluating the iso, nothing else. --- .../installation-cd-minimal-new-kernel-no-zfs.nix | 15 +++++++++++++++ nixos/release.nix | 12 ++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix diff --git a/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix b/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix new file mode 100644 index 000000000000..9d09cdbe0206 --- /dev/null +++ b/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: + +{ + imports = [ ./installation-cd-minimal-new-kernel.nix ]; + + # Makes `availableOn` fail for zfs, see . + # This is a workaround since we cannot remove the `"zfs"` string from `supportedFilesystems`. + # The proper fix would be to make `supportedFilesystems` an attrset with true/false which we + # could then `lib.mkForce false` + nixpkgs.overlays = [(final: super: { + zfs = super.zfs.overrideAttrs(_: { + meta.platforms = []; + }); + })]; +} diff --git a/nixos/release.nix b/nixos/release.nix index 919aa86a2d63..7907be3c02fa 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -181,14 +181,22 @@ in rec { inherit system; }); - # A variant with a more recent (but possibly less stable) kernel - # that might support more hardware. + # A variant with a more recent (but possibly less stable) kernel that might support more hardware. + # This variant keeps zfs support enabled, hoping it will build and work. iso_minimal_new_kernel = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeIso { module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix; type = "minimal-new-kernel"; inherit system; }); + # A variant with a more recent (but possibly less stable) kernel that might support more hardware. + # ZFS support disabled since it is unlikely to support the latest kernel. + iso_minimal_new_kernel_no_zfs = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeIso { + module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix; + type = "minimal-new-kernel-no-zfs"; + inherit system; + }); + sd_image = forMatchingSystems [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ] (system: makeSdImage { module = { armv6l-linux = ./modules/installer/sd-card/sd-image-raspberrypi-installer.nix;