2023-07-07 15:28:05 -04:00
|
|
|
{ config, lib, pkgs, ... }: {
|
|
|
|
nixpkgs.overlays = [(self: super: {
|
|
|
|
makeModulesClosure = x: super.makeModulesClosure (x // {
|
|
|
|
allowMissing = true;
|
|
|
|
});
|
|
|
|
})];
|
|
|
|
|
|
|
|
# Somehow ttyS0 doesn't get enabled by default
|
|
|
|
systemd.services."serial-getty@ttyS0".enable = lib.mkDefault true;
|
|
|
|
systemd.services."serial-getty@ttyS0".wantedBy = lib.mkDefault [ "getty.target" ];
|
|
|
|
|
|
|
|
boot = {
|
|
|
|
# Force no ZFS (from nixos/modules/profiles/base.nix) until updated to kernel 6.0
|
|
|
|
# TODO still valid for star64?
|
|
|
|
supportedFilesystems =
|
|
|
|
lib.mkForce [ "btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs" ];
|
|
|
|
consoleLogLevel = lib.mkDefault 7;
|
|
|
|
kernelPackages = lib.mkDefault (pkgs.callPackage ./linux-5.15.nix {
|
|
|
|
inherit (config.boot) kernelPatches;
|
|
|
|
});
|
|
|
|
|
|
|
|
kernelParams =
|
|
|
|
lib.mkDefault [ "console=tty0" "console=ttyS0,115200n8" "earlycon=sbi" ];
|
|
|
|
|
2023-09-14 11:12:29 -04:00
|
|
|
initrd.availableKernelModules = [
|
|
|
|
"8250_dw" # serial port driver
|
|
|
|
"dw_mmc_starfive" # eMMC/SD
|
|
|
|
"i2c_designware_platform" # i2c (needed for GPIO -> eMMC RST)
|
|
|
|
"axp15060_regulator" # PMIC (needed for eMMC)
|
|
|
|
];
|
2023-07-07 15:28:05 -04:00
|
|
|
|
|
|
|
# Ethernet. The module gets forced m due to other modules even though
|
|
|
|
# it's marked y in defconfig.
|
|
|
|
kernelModules = [ "dwmac-starfive-plat" ];
|
|
|
|
|
|
|
|
loader = {
|
|
|
|
grub.enable = lib.mkDefault false;
|
|
|
|
generic-extlinux-compatible.enable = lib.mkDefault true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
hardware.deviceTree.name =
|
|
|
|
lib.mkDefault "starfive/jh7110-pine64-star64.dtb";
|
2023-09-30 11:37:38 -04:00
|
|
|
|
|
|
|
# Only "performance" and "schedutil" are available,
|
|
|
|
# and "performance" takes precedence by default, which is a waste of power.
|
|
|
|
powerManagement.cpuFreqGovernor = lib.mkDefault "schedutil";
|
2023-07-07 15:28:05 -04:00
|
|
|
}
|