python312Packages.arviz: fix build, python312Packages.numba: skip failing test on...
[NixPkgs.git] / nixos / modules / hardware / all-hardware.nix
blob6ffd8b677686f6adc9dc61a1bf72db0e0533f0f4
1 # This module enables all hardware supported by NixOS: i.e., all
2 # firmware is included, and all devices from which one may boot are
3 # enabled in the initrd.  Its primary use is in the NixOS installation
4 # CDs.
7   config,
8   lib,
9   pkgs,
10   ...
12 let
13   platform = pkgs.stdenv.hostPlatform;
17   options = {
18     hardware.enableAllHardware = lib.mkEnableOption "Enable support for most hardware";
19   };
21   config = lib.mkIf config.hardware.enableAllHardware {
23     # The initrd has to contain any module that might be necessary for
24     # supporting the most important parts of HW like drives.
25     boot.initrd.availableKernelModules =
26       [
27         # SATA/PATA support.
28         "ahci"
30         "ata_piix"
32         "sata_inic162x"
33         "sata_nv"
34         "sata_promise"
35         "sata_qstor"
36         "sata_sil"
37         "sata_sil24"
38         "sata_sis"
39         "sata_svw"
40         "sata_sx4"
41         "sata_uli"
42         "sata_via"
43         "sata_vsc"
45         "pata_ali"
46         "pata_amd"
47         "pata_artop"
48         "pata_atiixp"
49         "pata_efar"
50         "pata_hpt366"
51         "pata_hpt37x"
52         "pata_hpt3x2n"
53         "pata_hpt3x3"
54         "pata_it8213"
55         "pata_it821x"
56         "pata_jmicron"
57         "pata_marvell"
58         "pata_mpiix"
59         "pata_netcell"
60         "pata_ns87410"
61         "pata_oldpiix"
62         "pata_pcmcia"
63         "pata_pdc2027x"
64         "pata_qdi"
65         "pata_rz1000"
66         "pata_serverworks"
67         "pata_sil680"
68         "pata_sis"
69         "pata_sl82c105"
70         "pata_triflex"
71         "pata_via"
72         "pata_winbond"
74         # SCSI support (incomplete).
75         "3w-9xxx"
76         "3w-xxxx"
77         "aic79xx"
78         "aic7xxx"
79         "arcmsr"
80         "hpsa"
82         # USB support, especially for booting from USB CD-ROM
83         # drives.
84         "uas"
86         # SD cards.
87         "sdhci_pci"
89         # NVMe drives
90         "nvme"
92         # Firewire support.  Not tested.
93         "ohci1394"
94         "sbp2"
96         # Virtio (QEMU, KVM etc.) support.
97         "virtio_net"
98         "virtio_pci"
99         "virtio_mmio"
100         "virtio_blk"
101         "virtio_scsi"
102         "virtio_balloon"
103         "virtio_console"
105         # VMware support.
106         "mptspi"
107         "vmxnet3"
108         "vsock"
109       ]
110       ++ lib.optional platform.isx86 "vmw_balloon"
111       ++ lib.optionals (pkgs.stdenv.hostPlatform.isi686 || pkgs.stdenv.hostPlatform.isx86_64) [
112         "vmw_vmci"
113         "vmwgfx"
114         "vmw_vsock_vmci_transport"
116         # Hyper-V support.
117         "hv_storvsc"
118       ]
119       ++ lib.optionals pkgs.stdenv.hostPlatform.isAarch [
120         # Allwinner support
121         # Required for early KMS
122         "sun4i-drm"
123         "sun8i-mixer" # Audio, but required for kms
125         # PWM for the backlight
126         "pwm-sun4i"
128         # Broadcom
129         "vc4"
130       ]
131       ++ lib.optionals pkgs.stdenv.hostPlatform.isAarch64 [
132         # Most of the following falls into two categories:
133         #  - early KMS / early display
134         #  - early storage (e.g. USB) support
136         # Broadcom
138         "pcie-brcmstb"
140         # Rockchip
141         "dw-hdmi"
142         "dw-mipi-dsi"
143         "rockchipdrm"
144         "rockchip-rga"
145         "phy-rockchip-pcie"
146         "pcie-rockchip-host"
148         # Misc. uncategorized hardware
150         # Used for some platform's integrated displays
151         "panel-simple"
152         "pwm-bl"
154         # Power supply drivers, some platforms need them for USB
155         "axp20x-ac-power"
156         "axp20x-battery"
157         "pinctrl-axp209"
158         "mp8859"
160         # USB drivers
161         "xhci-pci-renesas"
163         # Reset controllers
164         "reset-raspberrypi" # Triggers USB chip firmware load.
166         # Misc "weak" dependencies
167         "analogix-dp"
168         "analogix-anx6345" # For DP or eDP (e.g. integrated display)
169       ];
171     # Include lots of firmware.
172     hardware.enableRedistributableFirmware = true;
173   };