-{ pkgs, lib, config, modulesPath, ... }:
+{ pkgs, lib, config, host, modulesPath, ... }:
{
imports = [
- "${modulesPath}/installer/sd-card/sd-image-armv7l-multiplatform.nix"
+ "${modulesPath}/installer/sd-card/sd-image.nix"
];
+
+# Too CPU hungry for this hardware, for too little Mio saved
+nix.autoOptimiseStore = false;
+
+powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
+
+boot.supportedFilesystems = [
+ #"btrfs"
+ #"reiserfs"
+ "vfat"
+ #"f2fs"
+ #"xfs"
+ #"zfs" # ZFS tools coredump with SIGSEGV
+ #"ntfs"
+ #"cifs"
+];
+
+# The serial ports listed here are:
+# - ttyS0: for Tegra (Jetson TK1)
+# - ttymxc0: for i.MX6 (Wandboard)
+# - ttyAMA0: for Allwinner (pcDuino3 Nano) and QEMU's -machine virt
+# - ttyO0: for OMAP (BeagleBone Black)
+# - ttySAC2: for Exynos (ODROID-XU3)
+boot.consoleLogLevel = lib.mkDefault 7;
+boot.kernelParams = [
+ "console=ttyS0,115200n8"
+ "console=ttymxc0,115200n8"
+ "console=ttyAMA0,115200n8"
+ "console=ttyO0,115200n8"
+ "console=ttySAC2,115200n8"
+ "console=tty0"
+];
+
#nixpkgs.config.allowUnfree = true;
nixpkgs.crossSystem = lib.systems.examples.armv7l-hf-multiplatform;
nixpkgs.overlays = [
vulkanDrivers = [];
};
})
-];
-boot.cleanTmpDir = true;
-boot.tmpOnTmpfs = lib.mkForce false;
-# TODO: is that needed?
-hardware.enableRedistributableFirmware = true;
-sdImage = {
- postBuildCommands = ''
- dd if=${pkgs.ubootCubieboard2}/u-boot-sunxi-with-spl.bin of=$img bs=1024 seek=8 conv=notrunc
- '';
- compressImage = true;
- expandOnBoot = true;
- firmwareSize = 1;
- populateFirmwareCommands = lib.mkForce "";
-};
-boot.initrd.availableKernelModules = lib.mkForce [
- "mmc_block"
- "usbhid"
- "hid_generic"
- "hid_microsoft"
-];
-# nix -L build .#nixosConfigurations.${hostName}.config.boot.kernelPackages.kernel.configfile
-boot.kernelPackages = lib.mkForce pkgs.linuxPackages_latest_Cubieboard2;
-nixpkgs.overlays = [
(final: super: {
- linuxPackages_latest_Cubieboard2 = super.linuxPackages_latest.extend (kself: ksuper: {
+ linuxPackages_latest_Cubieboard2 = super.linuxPackages_latest.extend (kfinal: ksuper: {
kernel = ksuper.kernel.override {
defconfig = "sunxi_defconfig";
structuredExtraConfig = with lib.kernel; {
+ # Workaround https://github.com/NixOS/nixpkgs/pull/141942#issuecomment-954301443
+ DEBUG_INFO = lib.mkForce no;
+ DEBUG_INFO_BTF = lib.mkForce no;
+ SUSPEND = no;
+ PM = no;
+ PM_SLEEP = no;
+ NVME_CORE = no;
+ TORTURE_TEST = no; # TODO: check if it's possible
+ USB_SERIAL_CH341 = module;
+ USB_SERIAL_PL2303 = module;
+ REGULATOR = lib.mkForce no;
+ MFD_CORE = no;
+
#
# File systems
#
- PSTORE = yes;
- VFAT_FS = yes;
EXT4_FS = yes;
EXT4_USE_FOR_EXT2 = yes;
+ FUSE_FS = module;
+ PSTORE = yes;
+ CONFIGFS_FS = module;
+ VFAT_FS = yes;
+ ZSWAP = yes;
+
+ # misc
+ DAX = module;
+ DRM_DISPLAY_CONNECTOR = module;
+ FB_SIMPLE = lib.mkForce module;
+ NET_SCH_CODEL = module;
+ NET_SCH_FQ_CODEL = module;
+ UIO = module;
+
+ # Sound options
+ SND_SOC_ADI = no;
+ SND_SOC_ADI_AXI_I2S = no;
+ SND_SOC_ADI_AXI_SPDIF = no;
+ SND_SOC_AMD_ACP = no;
+ SND_SOC_AMD_CZ_RT5645_MACH = no;
+ SND_ATMEL_SOC = no;
+ SND_SOC_MIKROE_PROTO = no;
+ SND_BCM63XX_I2S_WHISTLER = no;
+ SND_DESIGNWARE_I2S = no;
+ SND_SOC_FSL_ASRC = no;
+ SND_SOC_FSL_SAI = no;
+ SND_SOC_FSL_MQS = no;
+ SND_SOC_FSL_AUDMIX = no;
+ SND_SOC_FSL_SSI = no;
+ SND_SOC_FSL_SPDIF = no;
+ SND_SOC_FSL_ESAI = no;
+ SND_SOC_FSL_MICFIL = no;
+ SND_SOC_FSL_EASRC = no;
+ SND_SOC_FSL_XCVR = no;
+ SND_SOC_FSL_RPMSG = no;
+ SND_SOC_IMX_AUDMUX = no;
+ SND_I2S_HI6210_I2S = no;
+ SND_SOC_MTK_BTCVSD = no;
+ SND_SOC_XILINX_I2S = no;
+ SND_SOC_XILINX_AUDIO_FORMATTER = no;
+ SND_SOC_XILINX_SPDIF = no;
+ SND_SOC_XTFPGA_I2S = no;
+ SND_SOC_AC97_CODEC = no;
+ SND_SOC_ADAU_UTILS = no;
+ SND_SOC_ADAU1372 = no;
+ SND_SOC_ADAU1372_I2C = no;
+ SND_SOC_ADAU1372_SPI = no;
+ SND_SOC_ADAU1701 = no;
+ SND_SOC_ADAU17X1 = no;
+ SND_SOC_ADAU1761 = no;
+ SND_SOC_ADAU1761_I2C = no;
+ SND_SOC_ADAU1761_SPI = no;
+ SND_SOC_ADAU7002 = no;
+ SND_SOC_ADAU7118 = no;
+ SND_SOC_ADAU7118_HW = no;
+ SND_SOC_ADAU7118_I2C = no;
+ SND_SOC_AK4104 = no;
+ SND_SOC_AK4118 = no;
+ SND_SOC_AK4458 = no;
+ SND_SOC_AK4554 = no;
+ SND_SOC_AK4613 = no;
+ SND_SOC_AK4642 = no;
+ SND_SOC_AK5386 = no;
+ SND_SOC_AK5558 = no;
+ SND_SOC_ALC5623 = no;
+ SND_SOC_BD28623 = no;
+ SND_SOC_BT_SCO = no;
+ SND_SOC_CPCAP = no;
+ SND_SOC_CS35L32 = no;
+ SND_SOC_CS35L33 = no;
+ SND_SOC_CS35L34 = no;
+ SND_SOC_CS35L35 = no;
+ SND_SOC_CS35L36 = no;
+ SND_SOC_CS42L42 = no;
+ SND_SOC_CS42L51 = no;
+ SND_SOC_CS42L51_I2C = no;
+ SND_SOC_CS42L52 = no;
+ SND_SOC_CS42L56 = no;
+ SND_SOC_CS42L73 = no;
+ SND_SOC_CS4234 = no;
+ SND_SOC_CS4265 = no;
+ SND_SOC_CS4270 = no;
+ SND_SOC_CS4271 = no;
+ SND_SOC_CS4271_I2C = no;
+ SND_SOC_CS4271_SPI = no;
+ SND_SOC_CS42XX8 = no;
+ SND_SOC_CS42XX8_I2C = no;
+ SND_SOC_CS43130 = no;
+ SND_SOC_CS4341 = no;
+ SND_SOC_CS4349 = no;
+ SND_SOC_CS53L30 = no;
+ SND_SOC_CX2072X = no;
+ SND_SOC_DA7213 = no;
+ SND_SOC_DMIC = no;
+ SND_SOC_HDMI_CODEC = no;
+ SND_SOC_ES7134 = no;
+ SND_SOC_ES7241 = no;
+ SND_SOC_ES8316 = no;
+ SND_SOC_ES8328 = no;
+ SND_SOC_ES8328_I2C = no;
+ SND_SOC_ES8328_SPI = no;
+ SND_SOC_GTM601 = no;
+ SND_SOC_INNO_RK3036 = no;
+ SND_SOC_MAX98088 = no;
+ SND_SOC_MAX98357A = no;
+ SND_SOC_MAX98504 = no;
+ SND_SOC_MAX9867 = no;
+ SND_SOC_MAX98927 = no;
+ SND_SOC_MAX98373 = no;
+ SND_SOC_MAX98373_I2C = no;
+ SND_SOC_MAX98373_SDW = no;
+ SND_SOC_MAX98390 = no;
+ SND_SOC_MAX9860 = no;
+ SND_SOC_MSM8916_WCD_ANALOG = no;
+ SND_SOC_MSM8916_WCD_DIGITAL = no;
+ SND_SOC_PCM1681 = no;
+ SND_SOC_PCM1789 = no;
+ SND_SOC_PCM1789_I2C = no;
+ SND_SOC_PCM179X = no;
+ SND_SOC_PCM179X_I2C = no;
+ SND_SOC_PCM179X_SPI = no;
+ SND_SOC_PCM186X = no;
+ SND_SOC_PCM186X_I2C = no;
+ SND_SOC_PCM186X_SPI = no;
+ SND_SOC_PCM3060 = no;
+ SND_SOC_PCM3060_I2C = no;
+ SND_SOC_PCM3060_SPI = no;
+ SND_SOC_PCM3168A = no;
+ SND_SOC_PCM3168A_I2C = no;
+ SND_SOC_PCM3168A_SPI = no;
+ SND_SOC_PCM5102A = no;
+ SND_SOC_PCM512x = no;
+ SND_SOC_PCM512x_I2C = no;
+ SND_SOC_PCM512x_SPI = no;
+ SND_SOC_RK3328 = no;
+ SND_SOC_RK817 = no;
+ SND_SOC_RL6231 = no;
+ SND_SOC_RT1308_SDW = no;
+ SND_SOC_RT1316_SDW = no;
+ SND_SOC_RT5616 = no;
+ SND_SOC_RT5631 = no;
+ SND_SOC_RT5640 = no;
+ SND_SOC_RT5645 = no;
+ SND_SOC_RT5659 = no;
+ SND_SOC_RT5682 = no;
+ SND_SOC_RT5682_SDW = no;
+ SND_SOC_RT700 = no;
+ SND_SOC_RT700_SDW = no;
+ SND_SOC_RT711 = no;
+ SND_SOC_RT711_SDW = no;
+ SND_SOC_RT711_SDCA_SDW = no;
+ SND_SOC_RT715 = no;
+ SND_SOC_RT715_SDW = no;
+ SND_SOC_RT715_SDCA_SDW = no;
+ SND_SOC_SGTL5000 = no;
+ SND_SOC_SIGMADSP = no;
+ SND_SOC_SIGMADSP_I2C = no;
+ SND_SOC_SIGMADSP_REGMAP = no;
+ SND_SOC_SIMPLE_AMPLIFIER = no;
+ SND_SOC_SIMPLE_MUX = no;
+ SND_SOC_SPDIF = no;
+ SND_SOC_SSM2305 = no;
+ SND_SOC_SSM2518 = no;
+ SND_SOC_SSM2602 = no;
+ SND_SOC_SSM2602_SPI = no;
+ SND_SOC_SSM2602_I2C = no;
+ SND_SOC_SSM4567 = no;
+ SND_SOC_STA32X = no;
+ SND_SOC_STA350 = no;
+ SND_SOC_STI_SAS = no;
+ SND_SOC_TAS2552 = no;
+ SND_SOC_TAS2562 = no;
+ SND_SOC_TAS2764 = no;
+ SND_SOC_TAS2770 = no;
+ SND_SOC_TAS5086 = no;
+ SND_SOC_TAS571X = no;
+ SND_SOC_TAS5720 = no;
+ SND_SOC_TAS6424 = no;
+ SND_SOC_TDA7419 = no;
+ SND_SOC_TFA9879 = no;
+ SND_SOC_TFA989X = no;
+ SND_SOC_TLV320AIC23 = no;
+ SND_SOC_TLV320AIC23_I2C = no;
+ SND_SOC_TLV320AIC23_SPI = no;
+ SND_SOC_TLV320AIC31XX = no;
+ SND_SOC_TLV320AIC32X4 = no;
+ SND_SOC_TLV320AIC32X4_I2C = no;
+ SND_SOC_TLV320AIC32X4_SPI = no;
+ SND_SOC_TLV320AIC3X = no;
+ SND_SOC_TLV320AIC3X_I2C = no;
+ SND_SOC_TLV320AIC3X_SPI = no;
+ SND_SOC_TLV320ADCX140 = no;
+ SND_SOC_TS3A227E = no;
+ SND_SOC_TSCS42XX = no;
+ SND_SOC_TSCS454 = no;
+ SND_SOC_UDA1334 = no;
+ SND_SOC_WCD9335 = no;
+ SND_SOC_WCD_MBHC = no;
+ SND_SOC_WCD934X = no;
+ SND_SOC_WCD938X = no;
+ SND_SOC_WCD938X_SDW = no;
+ SND_SOC_WM8510 = no;
+ SND_SOC_WM8523 = no;
+ SND_SOC_WM8524 = no;
+ SND_SOC_WM8580 = no;
+ SND_SOC_WM8711 = no;
+ SND_SOC_WM8728 = no;
+ SND_SOC_WM8731 = no;
+ SND_SOC_WM8737 = no;
+ SND_SOC_WM8741 = no;
+ SND_SOC_WM8750 = no;
+ SND_SOC_WM8753 = no;
+ SND_SOC_WM8770 = no;
+ SND_SOC_WM8776 = no;
+ SND_SOC_WM8782 = no;
+ SND_SOC_WM8804 = no;
+ SND_SOC_WM8804_I2C = no;
+ SND_SOC_WM8804_SPI = no;
+ SND_SOC_WM8903 = no;
+ SND_SOC_WM8904 = no;
+ SND_SOC_WM8960 = no;
+ SND_SOC_WM8962 = no;
+ SND_SOC_WM8974 = no;
+ SND_SOC_WM8978 = no;
+ SND_SOC_WM8985 = no;
+ SND_SOC_WSA881X = no;
+ SND_SOC_ZL38060 = no;
+ SND_SOC_MAX9759 = no;
+ SND_SOC_MT6351 = no;
+ SND_SOC_MT6358 = no;
+ SND_SOC_MT6660 = no;
+ SND_SOC_NAU8315 = no;
+ SND_SOC_NAU8540 = no;
+ SND_SOC_NAU8810 = no;
+ SND_SOC_NAU8822 = no;
+ SND_SOC_NAU8824 = no;
+ SND_SOC_TPA6130A2 = no;
+ SND_SOC_LPASS_WSA_MACRO = no;
+ SND_SOC_LPASS_VA_MACRO = no;
+ SND_SOC_LPASS_RX_MACRO = no;
+ SND_SOC_LPASS_TX_MACRO = no;
+ SND_SIMPLE_CARD_UTILS = no;
+ SND_SIMPLE_CARD = no;
+ SND_AUDIO_GRAPH_CARD = no;
+ SND_VIRTIO = no;
+ MOST_SND = no;
#
# Networking options
#
TCP_CONG_BBR = module;
+ #PPP = no;
+ #PPP_MULTILINK = lib.mkForce no;
+ #PPP_FILTER = lib.mkForce no;
+ #PPPOE = no;
+ NET_DSA = no;
+ L2TP = no;
+ PARPORT = no;
+ PARIDE = no;
+ CDROM = no;
+ GPIOLIB = no;
+ NEW_LEDS = no;
+ #LEDS_CLASS = no;
+
IPV6 = yes;
IPV6_ROUTER_PREF = yes;
IPV6_ROUTE_INFO = yes;
CAN = no;
COMEDI = no;
DRM_STM = lib.mkForce no;
+ DRM_PANEL = lib.mkForce no;
+
+ DRM_BRIDGE = no;
+ DRM_PANEL_BRIDGE = no;
+ DRM_CDNS_DSI = no;
+ DRM_CHIPONE_ICN6211 = no;
+ DRM_CHRONTEL_CH7033 = no;
+ #DRM_DISPLAY_CONNECTOR = no;
+ DRM_LONTIUM_LT8912B = no;
+ DRM_LONTIUM_LT9611 = no;
+ DRM_LONTIUM_LT9611UXC = no;
+ DRM_ITE_IT66121 = no;
+ DRM_LVDS_CODEC = no;
+ DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW = no;
+ DRM_NWL_MIPI_DSI = no;
+ DRM_NXP_PTN3460 = no;
+ DRM_PARADE_PS8622 = no;
+ DRM_PARADE_PS8640 = no;
+ DRM_SIL_SII8620 = no;
+ DRM_SII902X = no;
+ DRM_SII9234 = no;
+ DRM_SIMPLE_BRIDGE = no;
+ DRM_THINE_THC63LVD1024 = no;
+ DRM_TOSHIBA_TC358762 = no;
+ DRM_TOSHIBA_TC358764 = no;
+ DRM_TOSHIBA_TC358767 = no;
+ DRM_TOSHIBA_TC358768 = no;
+ DRM_TOSHIBA_TC358775 = no;
+ DRM_TI_TFP410 = no;
+ DRM_TI_SN65DSI83 = no;
+ DRM_TI_SN65DSI86 = no;
+ DRM_TI_TPD12S015 = no;
+ DRM_ANALOGIX_ANX6345 = no;
+ DRM_ANALOGIX_ANX78XX = no;
+ DRM_ANALOGIX_DP = no;
+ DRM_ANALOGIX_ANX7625 = no;
+ DRM_I2C_ADV7511 = no;
+ DRM_I2C_ADV7511_CEC = no;
+ DRM_CDNS_MHDP8546 = no;
+ DRM_DW_HDMI = no;
+ DRM_DW_HDMI_AHB_AUDIO = no;
+ DRM_DW_HDMI_I2S_AUDIO = no;
+ DRM_DW_HDMI_CEC = no;
+ DRM_STI = no;
+ DRM_IMX = no;
+ DRM_IMX_PARALLEL_DISPLAY = no;
+ DRM_IMX_TVE = no;
+ DRM_IMX_LDB = no;
+ DRM_IMX_HDMI = no;
+ DRM_ETNAVIV = no;
+ DRM_ETNAVIV_THERMAL = no;
+ DRM_MXS = no;
+ DRM_MXSFB = no;
+ DRM_ARCPGU = no;
+ DRM_GM12U320 = no;
+ TINYDRM_HX8357D = no;
+ TINYDRM_ILI9225 = no;
+ TINYDRM_ILI9341 = no;
+ TINYDRM_ILI9486 = no;
+ TINYDRM_MI0283QT = no;
+ TINYDRM_REPAPER = no;
+ TINYDRM_ST7586 = no;
+ TINYDRM_ST7735R = no;
+ DRM_PL111 = no;
+ DRM_TVE200 = no;
+ DRM_LIMA = no;
+ DRM_PANFROST = no;
+ DRM_MCDE = no;
+ DRM_TIDSS = no;
+ DRM_GUD = no;
+ DRM_EXPORT_FOR_TESTS = no;
+ DRM_PANEL_ORIENTATION_QUIRKS = no;
+ DRM_LIB_RANDOM = no;
+
INFINIBAND = no;
INPUT_TOUCHSCREEN = no;
MEDIA_ANALOG_TV_SUPPORT = lib.mkForce no;
XEN = lib.mkForce no;
#NVME_CORE = no;
};
+ features.debug = false;
#ignoreConfigErrors = true;
};
});
})
];
+boot.cleanTmpDir = true;
+boot.tmpOnTmpfs = lib.mkForce false;
+# TODO: is that needed?
+hardware.enableRedistributableFirmware = true;
+sdImage = {
+ postBuildCommands = ''
+ dd if=${pkgs.ubootCubieboard2}/u-boot-sunxi-with-spl.bin of=$img bs=1024 seek=8 conv=notrunc
+ '';
+ compressImage = true;
+ expandOnBoot = true;
+ firmwareSize = 1;
+ populateFirmwareCommands = "";
+ populateRootCommands = ''
+ mkdir -p ./files/boot
+ ${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot
+ '';
+};
+boot.loader.grub.enable = false;
+boot.loader.generic-extlinux-compatible.enable = true;
+# nix -L build .#nixosConfigurations.${hostName}.config.boot.kernelPackages.kernel.configfile
+boot.kernelPackages = lib.mkForce pkgs.linuxPackages_latest_Cubieboard2;
+boot.initrd.availableKernelModules = lib.mkForce [
+ "mmc_block"
+ "usbhid"
+ "hid_generic"
+ "hid_microsoft"
+];
}