at 25.11-pre 3.9 kB view raw
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. 5 6{ 7 config, 8 lib, 9 pkgs, 10 ... 11}: 12let 13 platform = pkgs.stdenv.hostPlatform; 14in 15{ 16 17 options = { 18 hardware.enableAllHardware = lib.mkEnableOption "Enable support for most hardware"; 19 }; 20 21 config = lib.mkIf config.hardware.enableAllHardware { 22 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" 29 30 "ata_piix" 31 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" 44 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" 73 74 # SCSI support (incomplete). 75 "3w-9xxx" 76 "3w-xxxx" 77 "aic79xx" 78 "aic7xxx" 79 "arcmsr" 80 "hpsa" 81 82 # USB support, especially for booting from USB CD-ROM 83 # drives. 84 "uas" 85 86 # SD cards. 87 "sdhci_pci" 88 89 # NVMe drives 90 "nvme" 91 92 # Firewire support. Not tested. 93 "ohci1394" 94 "sbp2" 95 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" 104 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" 115 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 124 125 # PWM for the backlight 126 "pwm-sun4i" 127 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 135 136 # Broadcom 137 138 "pcie-brcmstb" 139 140 # Rockchip 141 "dw-hdmi" 142 "dw-mipi-dsi" 143 "rockchipdrm" 144 "rockchip-rga" 145 "phy-rockchip-pcie" 146 "pcie-rockchip-host" 147 148 # Misc. uncategorized hardware 149 150 # Used for some platform's integrated displays 151 "panel-simple" 152 "pwm-bl" 153 154 # Power supply drivers, some platforms need them for USB 155 "axp20x-ac-power" 156 "axp20x-battery" 157 "pinctrl-axp209" 158 "mp8859" 159 160 # USB drivers 161 "xhci-pci-renesas" 162 163 # Reset controllers 164 "reset-raspberrypi" # Triggers USB chip firmware load. 165 166 # Misc "weak" dependencies 167 "analogix-dp" 168 "analogix-anx6345" # For DP or eDP (e.g. integrated display) 169 ]; 170 171 # Include lots of firmware. 172 hardware.enableRedistributableFirmware = true; 173 }; 174}