-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
nixos: add option
hardware.enableAllHardware
(#364479)
- Loading branch information
Showing
6 changed files
with
184 additions
and
118 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,174 @@ | ||
# This module enables all hardware supported by NixOS: i.e., all | ||
# firmware is included, and all devices from which one may boot are | ||
# enabled in the initrd. Its primary use is in the NixOS installation | ||
# CDs. | ||
|
||
{ | ||
config, | ||
lib, | ||
pkgs, | ||
... | ||
}: | ||
let | ||
platform = pkgs.stdenv.hostPlatform; | ||
in | ||
{ | ||
|
||
options = { | ||
hardware.enableAllHardware = lib.mkEnableOption "Enable support for most hardware"; | ||
}; | ||
|
||
config = lib.mkIf config.hardware.enableAllHardware { | ||
|
||
# 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" | ||
|
||
"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" | ||
|
||
# USB support, especially for booting from USB CD-ROM | ||
# drives. | ||
"uas" | ||
|
||
# SD cards. | ||
"sdhci_pci" | ||
|
||
# NVMe drives | ||
"nvme" | ||
|
||
# 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" | ||
|
||
# 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 | ||
|
||
# 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 | ||
|
||
"pcie-brcmstb" | ||
|
||
# Rockchip | ||
"dw-hdmi" | ||
"dw-mipi-dsi" | ||
"rockchipdrm" | ||
"rockchip-rga" | ||
"phy-rockchip-pcie" | ||
"pcie-rockchip-host" | ||
|
||
# Misc. uncategorized hardware | ||
|
||
# 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" | ||
|
||
# USB drivers | ||
"xhci-pci-renesas" | ||
|
||
# Reset controllers | ||
"reset-raspberrypi" # Triggers USB chip firmware load. | ||
|
||
# Misc "weak" dependencies | ||
"analogix-dp" | ||
"analogix-anx6345" # For DP or eDP (e.g. integrated display) | ||
]; | ||
|
||
# Include lots of firmware. | ||
hardware.enableRedistributableFirmware = true; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,117 +1,5 @@ | ||
# This module enables all hardware supported by NixOS: i.e., all | ||
# firmware is included, and all devices from which one may boot are | ||
# enabled in the initrd. Its primary use is in the NixOS installation | ||
# CDs. | ||
|
||
{ pkgs, lib,... }: | ||
let | ||
platform = pkgs.stdenv.hostPlatform; | ||
in | ||
# Set `hardware.enableAllHardware = true` instead of importing this file. | ||
# This file provides backwards compatibility for older configurations. | ||
{ | ||
|
||
# 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" | ||
|
||
"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" | ||
|
||
# USB support, especially for booting from USB CD-ROM | ||
# drives. | ||
"uas" | ||
|
||
# SD cards. | ||
"sdhci_pci" | ||
|
||
# NVMe drives | ||
"nvme" | ||
|
||
# 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" | ||
|
||
# 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 | ||
|
||
# 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 | ||
|
||
"pcie-brcmstb" | ||
|
||
# Rockchip | ||
"dw-hdmi" | ||
"dw-mipi-dsi" | ||
"rockchipdrm" | ||
"rockchip-rga" | ||
"phy-rockchip-pcie" | ||
"pcie-rockchip-host" | ||
|
||
# Misc. uncategorized hardware | ||
|
||
# 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" | ||
|
||
# USB drivers | ||
"xhci-pci-renesas" | ||
|
||
# Reset controllers | ||
"reset-raspberrypi" # Triggers USB chip firmware load. | ||
|
||
# Misc "weak" dependencies | ||
"analogix-dp" | ||
"analogix-anx6345" # For DP or eDP (e.g. integrated display) | ||
]; | ||
|
||
# Include lots of firmware. | ||
hardware.enableRedistributableFirmware = true; | ||
|
||
imports = | ||
[ ../hardware/network/zydas-zd1211.nix ]; | ||
|
||
hardware.enableAllHardware = true; | ||
} |