96 lines
2.7 KiB
Nix
96 lines
2.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib; let
|
|
sed = "${pkgs.gnused}/bin/sed";
|
|
|
|
cfg = config.custom.settings.boot;
|
|
in {
|
|
options.custom.settings.boot = {
|
|
enable = mkOption {default = false;};
|
|
console-mode = mkOption {default = "max";};
|
|
grub = mkOption {default = false;};
|
|
kernel = mkOption {
|
|
default =
|
|
if config.custom.full
|
|
then pkgs.linuxPackages_6_11
|
|
else pkgs.linuxPackages;
|
|
};
|
|
systemd-boot = mkOption {default = config.custom.minimal;};
|
|
timeout = mkOption {
|
|
default =
|
|
if config.custom.minimal
|
|
then 2
|
|
else 10;
|
|
};
|
|
u-boot = mkOption {default = false;};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
boot = {
|
|
# https://wiki.nixos.org/wiki/Linux_kernel
|
|
kernelPackages = cfg.kernel;
|
|
|
|
kernel.sysctl = mkIf config.custom.default {
|
|
# https://wiki.archlinux.org/title/Sysctl#Virtual_memory
|
|
"vm.dirty_bytes" = 256 * 1024 * 1024; # 256MB
|
|
"vm.dirty_background_bytes" = 128 * 1024 * 1024; # 128MB
|
|
"vm.vfs_cache_pressure" = 50; # Default: 100
|
|
|
|
# https://wiki.archlinux.org/title/Swap#Swappiness
|
|
"vm.swappiness" = 1; # Default: 60
|
|
|
|
# https://redis.io/docs/latest/develop/get-started/faq/#background-saving-fails-with-a-fork-error-on-linux
|
|
"vm.overcommit_memory" = 1;
|
|
|
|
# https://docs.syncthing.net/users/faq.html#inotify-limits
|
|
"fs.inotify.max_user_watches" = 204800;
|
|
};
|
|
|
|
loader = {
|
|
timeout = cfg.timeout;
|
|
|
|
systemd-boot = mkIf cfg.systemd-boot {
|
|
enable = true;
|
|
configurationLimit = 15;
|
|
consoleMode = mkIf (!isInt cfg.console-mode || cfg.console-mode <= 2) cfg.console-mode;
|
|
editor = false; # Disable cmdline
|
|
|
|
# HACK: consoleMode does not accept undocumented device modes (e.g. 3 4 5)
|
|
extraInstallCommands = mkIf (isInt cfg.console-mode && cfg.console-mode > 2) ''
|
|
${sed} -i 's|console-mode.*|console-mode ${toString cfg.console-mode}|' /boot/loader/loader.conf
|
|
'';
|
|
};
|
|
|
|
generic-extlinux-compatible.enable = cfg.u-boot;
|
|
grub.enable = cfg.grub;
|
|
};
|
|
};
|
|
|
|
console = mkIf config.custom.minimal {
|
|
# Modified Solarized Dark
|
|
# https://github.com/coderonline/base16-vtrgb/blob/master/consolecolors/base16-solarized-dark.hex
|
|
colors = [
|
|
"073642"
|
|
"002b36" # Background
|
|
"859900" # Success
|
|
"657b83"
|
|
"839496"
|
|
"b58900"
|
|
"eee8d5"
|
|
"93a1a1" # Primary
|
|
"dc322f"
|
|
"cb4b16"
|
|
"d33682" # Tertiary
|
|
"586e75"
|
|
"6c71c4" # Accent
|
|
"268bd2"
|
|
"2aa198"
|
|
"fdf6e3" # Secondary
|
|
];
|
|
};
|
|
};
|
|
}
|