All this just to get nyx to even build

This commit is contained in:
blahai 2025-01-12 18:35:44 +02:00
parent ed1aafe645
commit fdfd4e0434
No known key found for this signature in database
24 changed files with 2272 additions and 0 deletions

5
modules/base/default.nix Normal file
View file

@ -0,0 +1,5 @@
{
imports = [
./nix
];
}

View file

@ -0,0 +1,5 @@
{
imports = [
./system.nix
];
}

View file

@ -0,0 +1,11 @@
{
lib,
pkgs,
...
}: let
inherit (lib.modules) mkDefault;
in {
system = {
stateVersion = mkDefault "25.05";
};
}

17
modules/flake/args.nix Normal file
View file

@ -0,0 +1,17 @@
{inputs, ...}: {
systems = import inputs.systems;
perSystem = {system, ...}: {
# this is what controls how packages in the flake are built, but this is not passed to the
# builders in lib which is important to note, since we have to do something different for
# the builders to work correctly
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
config = {
allowUnfree = true;
allowUnsupportedSystem = true;
};
# overlays = [ inputs.nix-topology.overlays.default ];
};
};
}

View file

@ -0,0 +1,7 @@
{
imports = [
../../systems
./args.nix
];
}

View file

@ -0,0 +1,7 @@
{
imports = [
./loader
./generic.nix
./plymouth.nix
];
}

View file

@ -0,0 +1,160 @@
{
pkgs,
config,
lib,
...
}: let
inherit (lib.modules) mkIf mkForce mkMerge mkDefault mkOverride;
inherit (lib.lists) optionals;
inherit (lib.options) mkOption mkEnableOption literalExpression;
inherit (lib.types) str raw listOf package;
cfg = config.olympus.system.boot;
in {
options.olympus.system.boot = {
enableKernelTweaks = mkEnableOption "security and performance related kernel parameters";
recommendedLoaderConfig = mkEnableOption "tweaks for common bootloader configs per my liking";
loadRecommendedModules = mkEnableOption "kernel modules that accommodate for most use cases";
kernel = mkOption {
type = raw;
default = pkgs.linuxPackages_6_12;
description = "The kernel to use for the system";
};
initrd = {
enableTweaks = mkEnableOption "quality of life tweaks for the initrd stage";
optimizeCompressor = mkEnableOption ''
initrd compression algorithm optimizations for size.
Enabling this option will force initrd to use zstd (default) with
level 19 and -T0 (STDIN). This will reduce the initrd size greatly
at the cost of compression speed.
Not recommended for low-end hardware.
'';
};
silentBoot =
mkEnableOption ''
almost entirely silent boot process through `quiet` kernel parameter
''
// {
default = cfg.plymouth.enable;
};
};
config = {
boot = {
consoleLogLevel = 3;
kernelPackages = mkDefault cfg.kernel;
loader = {
# if set to 0, space needs to be held to get the boot menu to appear
timeout = mkForce 2;
# copy boot files to /boot so that /nix/store is not required to boot
# it takes up more space but it makes my messups a bit safer
generationsDir.copyKernels = true;
# we need to allow installation to modify EFI variables
efi.canTouchEfiVariables = true;
};
# increase the map count, this is important for applications that require a lot of memory mappings
# such as games and emulators
kernel.sysctl."vm.max_map_count" = 2147483642;
initrd = mkMerge [
(mkIf cfg.initrd.enableTweaks {
# Verbosity of the initrd
# disabling verbosity removes only the mandatory messages generated by the NixOS
verbose = false;
systemd = {
# enable systemd in initrd (experimental)
enable = true;
# strip copied binaries and libraries from inframs
# saves some nice space
strip = true;
};
kernelModules = [
"nvme"
"xhci_pci"
"ahci"
"btrfs"
"sd_mod"
"dm_mod"
];
availableKernelModules = [
"vmd"
"usbhid"
"sd_mod"
"sr_mod"
"dm_mod"
"uas"
"usb_storage"
"ata_piix"
"virtio_pci"
"virtio_scsi"
"ehci_pci"
];
})
(mkIf cfg.initrd.optimizeCompressor {
compressor = "zstd";
compressorArgs = [
"-19"
"-T0"
];
})
];
# https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
kernelParams =
optionals cfg.enableKernelTweaks [
# https://en.wikipedia.org/wiki/Kernel_page-table_isolation
# auto means kernel will automatically decide the pti state
"pti=auto" # on || off
# enable IOMMU for devices used in passthrough and provide better host performance
"iommu=pt"
# disable usb autosuspend
"usbcore.autosuspend=-1"
# allow systemd to set and save the backlight state
"acpi_backlight=native"
# prevent the kernel from blanking plymouth out of the fb
"fbcon=nodefer"
# disable boot logo
"logo.nologo"
# disable the cursor in vt to get a black screen during intermissions
"vt.global_cursor_default=0"
]
++ optionals cfg.silentBoot [
# tell the kernel to not be verbose, the voices are too loud
"quiet"
# kernel log message level
"loglevel=3" # 1: system is unusable | 3: error condition | 7: very verbose
# udev log message level
"udev.log_level=3"
# lower the udev log level to show only errors or worse
"rd.udev.log_level=3"
# disable systemd status messages
# rd prefix means systemd-udev will be used instead of initrd
"systemd.show_status=auto"
"rd.systemd.show_status=auto"
];
};
};
}

View file

@ -0,0 +1,19 @@
{lib, ...}: let
inherit (lib.options) mkOption;
inherit (lib.types) enum;
in {
imports = [
./systemd-boot.nix
./grub.nix
];
options.olympus.system.boot.loader = mkOption {
type = enum [
"none"
"grub"
"systemd-boot"
];
default = "none";
description = "The bootloader";
};
}

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1,21 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib.modules) mkIf mkDefault;
inherit (lib.attrsets) optionalAttrs;
inherit (lib.options) mkEnableOption mkPackageOption;
cfg = config.olympus.system.boot;
in {
config = mkIf (cfg.loader == "systemd-boot") {
boot.loader.systemd-boot = {
enable = mkDefault true;
configurationLimit = 5;
consoleMode = "max";
editor = false;
};
};
}

View file

@ -0,0 +1,24 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib.meta) getExe';
inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption;
cfg = config.olympus.system.boot.plymouth;
in {
options.olympus.system.boot.plymouth.enable = mkEnableOption "plymouth boot splash";
config = mkIf cfg.enable {
boot.plymouth.enable = true;
# make plymouth work with sleep
powerManagement = {
powerDownCommands = "${getExe' pkgs.plymouth "plymouth"} --show-splash";
resumeCommands = "${getExe' pkgs.plymouth "plymouth"} --quit";
};
};
}

View file

@ -0,0 +1,7 @@
{
imports = [
./boot
./environment
./networking
];
}

View file

@ -0,0 +1,6 @@
{
imports = [
./documentation.nix
./zram.nix
];
}

View file

@ -0,0 +1,18 @@
{lib, ...}: let
inherit (lib.modules) mkForce;
inherit (lib.attrsets) mapAttrs;
in {
documentation = mapAttrs (_: mkForce) {
enable = false;
dev.enable = false;
doc.enable = false;
info.enable = false;
nixos.enable = false;
man = {
enable = false;
generateCaches = false;
man-db.enable = false;
mandoc.enable = false;
};
};
}

View file

@ -0,0 +1,24 @@
{
lib,
config,
...
}: let
inherit (lib.modules) mkIf;
in {
# compress half of the ram to use as swap
# basically, get more memory per memory
zramSwap = {
enable = true;
algorithm = "zstd";
memoryPercent = 90; # defaults to 50
};
boot.kernel.sysctl = mkIf config.zramSwap.enable {
# zram is relatively cheap, prefer swap
"vm.swappiness" = 180;
"vm.watermark_boost_factor" = 0;
"vm.watermark_scale_factor" = 125;
# zram is in memory, no need to readahead
"vm.page-cluster" = 0;
};
}

View file

@ -0,0 +1,19 @@
{
lib,
config,
...
}: let
inherit (lib.modules) mkDefault mkForce;
in {
imports = [
];
networking = {
hostId = builtins.substring 0 8 (builtins.hashString "md5" config.networking.hostName);
useDHCP = mkForce false;
useNetworkd = mkForce true;
usePredictableInterfaceNames = mkDefault true;
};
}

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1 @@
{}