63 lines
2.2 KiB
Nix
63 lines
2.2 KiB
Nix
# the Asahi Linux kernel and options that must go along with it
|
|
|
|
{ config, pkgs, lib, ... }:
|
|
{
|
|
config = {
|
|
boot.kernelPackages = pkgs.callPackage ./package.nix {
|
|
crossBuild = config.boot.kernelBuildIsCross;
|
|
_16KBuild = config.boot.kernelBuildIs16K;
|
|
};
|
|
|
|
# we definitely want to use CONFIG_ENERGY_MODEL, and
|
|
# schedutil is a prerequisite for using it
|
|
# source: https://www.kernel.org/doc/html/latest/scheduler/sched-energy.html
|
|
powerManagement.cpuFreqGovernor = lib.mkOverride 800 "schedutil";
|
|
|
|
# our kernel config is weird and doesn't really have any modules
|
|
# remove?
|
|
# boot.initrd.availableKernelModules = lib.mkForce [];
|
|
boot.initrd.availableKernelModules = lib.mkForce [ "dm_crypt" ];
|
|
|
|
boot.kernelParams = [
|
|
"earlycon"
|
|
"console=ttySAC0,1500000"
|
|
"console=tty0"
|
|
"boot.shell_on_fail"
|
|
# Apple's SSDs are slow (~dozens of ms) at processing flush requests which
|
|
# slows down programs that make a lot of fsync calls. This parameter sets
|
|
# a delay in ms before actually flushing so that such requests can be
|
|
# coalesced. Be warned that increasing this parameter above zero (default
|
|
# is 1000) has the potential, though admittedly unlikely, risk of
|
|
# UNBOUNDED data corruption in case of power loss!!!! Don't even think
|
|
# about it on desktops!!
|
|
"nvme_apple.flush_interval=1000"
|
|
];
|
|
|
|
# U-Boot does not support EFI variables
|
|
boot.loader.efi.canTouchEfiVariables = lib.mkForce false;
|
|
|
|
# GRUB has to be installed as removable if the user chooses to use it
|
|
boot.loader.grub = lib.mkDefault {
|
|
version = 2;
|
|
efiSupport = true;
|
|
efiInstallAsRemovable = true;
|
|
device = "nodev";
|
|
};
|
|
};
|
|
|
|
options.boot.kernelBuildIsCross = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = "Set that the Asahi Linux kernel should be cross-compiled.";
|
|
};
|
|
|
|
options.boot.kernelBuildIs16K = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = ''
|
|
Set that the Asahi Linux kernel should be built with 16K pages and various
|
|
software patched to be compatible. Some software may still be broken.
|
|
'';
|
|
};
|
|
}
|