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.

Changed files
+25 -2
nixos
+15
nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix
···
···
+
{ pkgs, ... }:
+
+
{
+
imports = [ ./installation-cd-minimal-new-kernel.nix ];
+
+
# Makes `availableOn` fail for zfs, see <nixos/modules/profiles/base.nix>.
+
# 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 = [];
+
});
+
})];
+
}
+10 -2
nixos/release.nix
···
inherit system;
});
-
# A variant with a more recent (but possibly less stable) kernel
-
# that might support more hardware.
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;
});
···
inherit system;
});
+
# 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;
});