nixos: add option `hardware.enableAllHardware`

This allows users to simply enable support for all hardware by enabling the option `hardware.enableAllHardware`, instead of having to import `modules/profiles/all-hardware.nix`.

This is better, as the enableAllHardware option will be discoverable via search.nixos.org, while the `all-hardware.nix` is hidden inside nixpkgs and hard to discover.

Backward compatibility is provided by replacing the old `profiles/all-hardware.nix` with a file that sets the `enableAllHardware` option to true.

DavHau 08783a39 45628b14

Changed files
+98 -82
nixos
modules
+86 -79
nixos/modules/hardware/all-hardware.nix
···
# enabled in the initrd. Its primary use is in the NixOS installation
# CDs.
-
{ pkgs, lib,... }:
+
{ config, lib, pkgs, ... }:
let
platform = pkgs.stdenv.hostPlatform;
in
{
-
# The initrd has to contain any module that might be necessary for
-
# supporting the most important parts of HW like drives.
-
boot.initrd.availableKernelModules =
-
[ # SATA/PATA support.
-
"ahci"
+
options = {
+
hardware.enableAllHardware = lib.mkEnableOption "Enable support for most hardware";
+
};
-
"ata_piix"
+
config = lib.mkIf config.hardware.enableAllHardware {
-
"sata_inic162x" "sata_nv" "sata_promise" "sata_qstor"
-
"sata_sil" "sata_sil24" "sata_sis" "sata_svw" "sata_sx4"
-
"sata_uli" "sata_via" "sata_vsc"
+
# The initrd has to contain any module that might be necessary for
+
# supporting the most important parts of HW like drives.
+
boot.initrd.availableKernelModules =
+
[ # SATA/PATA support.
+
"ahci"
-
"pata_ali" "pata_amd" "pata_artop" "pata_atiixp" "pata_efar"
-
"pata_hpt366" "pata_hpt37x" "pata_hpt3x2n" "pata_hpt3x3"
-
"pata_it8213" "pata_it821x" "pata_jmicron" "pata_marvell"
-
"pata_mpiix" "pata_netcell" "pata_ns87410" "pata_oldpiix"
-
"pata_pcmcia" "pata_pdc2027x" "pata_qdi" "pata_rz1000"
-
"pata_serverworks" "pata_sil680" "pata_sis"
-
"pata_sl82c105" "pata_triflex" "pata_via"
-
"pata_winbond"
+
"ata_piix"
+
+
"sata_inic162x" "sata_nv" "sata_promise" "sata_qstor"
+
"sata_sil" "sata_sil24" "sata_sis" "sata_svw" "sata_sx4"
+
"sata_uli" "sata_via" "sata_vsc"
+
+
"pata_ali" "pata_amd" "pata_artop" "pata_atiixp" "pata_efar"
+
"pata_hpt366" "pata_hpt37x" "pata_hpt3x2n" "pata_hpt3x3"
+
"pata_it8213" "pata_it821x" "pata_jmicron" "pata_marvell"
+
"pata_mpiix" "pata_netcell" "pata_ns87410" "pata_oldpiix"
+
"pata_pcmcia" "pata_pdc2027x" "pata_qdi" "pata_rz1000"
+
"pata_serverworks" "pata_sil680" "pata_sis"
+
"pata_sl82c105" "pata_triflex" "pata_via"
+
"pata_winbond"
-
# SCSI support (incomplete).
-
"3w-9xxx" "3w-xxxx" "aic79xx" "aic7xxx" "arcmsr" "hpsa"
+
# SCSI support (incomplete).
+
"3w-9xxx" "3w-xxxx" "aic79xx" "aic7xxx" "arcmsr" "hpsa"
-
# USB support, especially for booting from USB CD-ROM
-
# drives.
-
"uas"
+
# USB support, especially for booting from USB CD-ROM
+
# drives.
+
"uas"
-
# SD cards.
-
"sdhci_pci"
+
# SD cards.
+
"sdhci_pci"
-
# NVMe drives
-
"nvme"
+
# NVMe drives
+
"nvme"
-
# Firewire support. Not tested.
-
"ohci1394" "sbp2"
+
# Firewire support. Not tested.
+
"ohci1394" "sbp2"
-
# Virtio (QEMU, KVM etc.) support.
-
"virtio_net" "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_scsi" "virtio_balloon" "virtio_console"
+
# Virtio (QEMU, KVM etc.) support.
+
"virtio_net" "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_scsi" "virtio_balloon" "virtio_console"
-
# VMware support.
-
"mptspi" "vmxnet3" "vsock"
-
] ++ lib.optional platform.isx86 "vmw_balloon"
-
++ lib.optionals (pkgs.stdenv.hostPlatform.isi686 || pkgs.stdenv.hostPlatform.isx86_64) [
-
"vmw_vmci" "vmwgfx" "vmw_vsock_vmci_transport"
+
# VMware support.
+
"mptspi" "vmxnet3" "vsock"
+
] ++ lib.optional platform.isx86 "vmw_balloon"
+
++ lib.optionals (pkgs.stdenv.hostPlatform.isi686 || pkgs.stdenv.hostPlatform.isx86_64) [
+
"vmw_vmci" "vmwgfx" "vmw_vsock_vmci_transport"
-
# Hyper-V support.
-
"hv_storvsc"
-
] ++ lib.optionals pkgs.stdenv.hostPlatform.isAarch [
-
# Allwinner support
-
# Required for early KMS
-
"sun4i-drm"
-
"sun8i-mixer" # Audio, but required for kms
+
# Hyper-V support.
+
"hv_storvsc"
+
] ++ lib.optionals pkgs.stdenv.hostPlatform.isAarch [
+
# Allwinner support
+
# Required for early KMS
+
"sun4i-drm"
+
"sun8i-mixer" # Audio, but required for kms
-
# PWM for the backlight
-
"pwm-sun4i"
+
# PWM for the backlight
+
"pwm-sun4i"
-
# Broadcom
-
"vc4"
-
] ++ lib.optionals pkgs.stdenv.hostPlatform.isAarch64 [
-
# Most of the following falls into two categories:
-
# - early KMS / early display
-
# - early storage (e.g. USB) support
+
# Broadcom
+
"vc4"
+
] ++ lib.optionals pkgs.stdenv.hostPlatform.isAarch64 [
+
# Most of the following falls into two categories:
+
# - early KMS / early display
+
# - early storage (e.g. USB) support
-
# Broadcom
+
# Broadcom
-
"pcie-brcmstb"
+
"pcie-brcmstb"
-
# Rockchip
-
"dw-hdmi"
-
"dw-mipi-dsi"
-
"rockchipdrm"
-
"rockchip-rga"
-
"phy-rockchip-pcie"
-
"pcie-rockchip-host"
+
# Rockchip
+
"dw-hdmi"
+
"dw-mipi-dsi"
+
"rockchipdrm"
+
"rockchip-rga"
+
"phy-rockchip-pcie"
+
"pcie-rockchip-host"
-
# Misc. uncategorized hardware
+
# Misc. uncategorized hardware
-
# Used for some platform's integrated displays
-
"panel-simple"
-
"pwm-bl"
+
# Used for some platform's integrated displays
+
"panel-simple"
+
"pwm-bl"
-
# Power supply drivers, some platforms need them for USB
-
"axp20x-ac-power"
-
"axp20x-battery"
-
"pinctrl-axp209"
-
"mp8859"
+
# Power supply drivers, some platforms need them for USB
+
"axp20x-ac-power"
+
"axp20x-battery"
+
"pinctrl-axp209"
+
"mp8859"
-
# USB drivers
-
"xhci-pci-renesas"
+
# USB drivers
+
"xhci-pci-renesas"
-
# Reset controllers
-
"reset-raspberrypi" # Triggers USB chip firmware load.
+
# Reset controllers
+
"reset-raspberrypi" # Triggers USB chip firmware load.
-
# Misc "weak" dependencies
-
"analogix-dp"
-
"analogix-anx6345" # For DP or eDP (e.g. integrated display)
-
];
+
# Misc "weak" dependencies
+
"analogix-dp"
+
"analogix-anx6345" # For DP or eDP (e.g. integrated display)
+
];
-
# Include lots of firmware.
-
hardware.enableRedistributableFirmware = true;
+
# Include lots of firmware.
+
hardware.enableRedistributableFirmware = true;
+
};
}
+2 -1
nixos/modules/installer/cd-dvd/installation-cd-base.nix
···
[ ./iso-image.nix
# Profiles of this basic installation CD.
-
../../profiles/all-hardware.nix
../../profiles/base.nix
../../profiles/installation-device.nix
];
+
+
hardware.enableAllHardware = true;
# Adds terminus_font for people with HiDPI displays
console.packages = options.console.packages.default ++ [ pkgs.terminus_font ];
+2 -1
nixos/modules/installer/netboot/netboot-base.nix
···
./netboot.nix
# Profiles of this basic netboot media
-
../../profiles/all-hardware.nix
../../profiles/base.nix
../../profiles/installation-device.nix
];
+
+
hardware.enableAllHardware = true;
}
+2 -1
nixos/modules/installer/sd-card/sd-image.nix
···
imports = [
(mkRemovedOptionModule [ "sdImage" "bootPartitionID" ] "The FAT partition for SD image now only holds the Raspberry Pi firmware files. Use firmwarePartitionID to configure that partition's ID.")
(mkRemovedOptionModule [ "sdImage" "bootSize" ] "The boot files for SD image have been moved to the main ext4 partition. The FAT partition now only holds the Raspberry Pi firmware files. Changing its size may not be required.")
-
../../profiles/all-hardware.nix
];
options.sdImage = {
···
};
config = {
+
hardware.enableAllHardware = true;
+
fileSystems = {
"/boot/firmware" = {
device = "/dev/disk/by-label/${config.sdImage.firmwarePartitionName}";
+1
nixos/modules/module-list.nix
···
./config/zram.nix
./hardware/acpilight.nix
./hardware/all-firmware.nix
+
./hardware/all-hardware.nix
./hardware/apple-touchbar.nix
./hardware/bladeRF.nix
./hardware/brillo.nix
+5
nixos/modules/profiles/all-hardware.nix
···
+
# Set `hardware.enableAllHardware = true` instead of importing this file.
+
# This file provides backwards compatibility for older configurations.
+
{
+
hardware.enableAllHardware = true;
+
}