From 29a269dcfbe3ed3768918d595a59b83d5735be73 Mon Sep 17 00:00:00 2001 From: Jordan Holt Date: Sat, 26 Jul 2025 16:29:26 +0100 Subject: [PATCH] hosts/artemis: add hardware config from Jovian-NixOS --- hosts/artemis/default.nix | 14 ++++- hosts/artemis/hardware-configuration.nix | 75 ++++++++++++++++++++---- 2 files changed, 78 insertions(+), 11 deletions(-) diff --git a/hosts/artemis/default.nix b/hosts/artemis/default.nix index 08c3e99..d757645 100644 --- a/hosts/artemis/default.nix +++ b/hosts/artemis/default.nix @@ -6,7 +6,9 @@ }: let - inherit (lib) mkForce; + inherit (lib) + mkForce + ; in { imports = [ @@ -45,6 +47,16 @@ in }; }; + services.earlyoom = { + enable = true; + extraArgs = [ + "-M" + "409600,307200" + "-S" + "409600,307200" + ]; + }; + services.sunshine = { enable = false; package = pkgs.unstable.sunshine; diff --git a/hosts/artemis/hardware-configuration.nix b/hosts/artemis/hardware-configuration.nix index 75e9766..dc73385 100644 --- a/hosts/artemis/hardware-configuration.nix +++ b/hosts/artemis/hardware-configuration.nix @@ -6,23 +6,59 @@ ... }: +let + inherit (lib) + mkDefault + mkOverride + ; +in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + # Inspired by: https://github.com/Jovian-Experiments/Jovian-NixOS boot = { - initrd.availableKernelModules = [ - "xhci_pci" - "ehci_pci" - "nvme" - "usbhid" - "usb_storage" - "sd_mod" + initrd = { + availableKernelModules = [ + "xhci_pci" + "ehci_pci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + ]; + kernelModules = [ + "amdgpu" + ]; + supportedFilesystems = [ "zfs" ]; + }; + kernel.sysctl = { + "kernel.sched_cfs_bandwidth_slice_u" = mkDefault 3000; + "kernel.sched_latency_ns" = mkDefault 3000000; + "kernel.sched_min_granularity_ns" = mkDefault 300000; + "kernel.sched_wakeup_granularity_ns" = mkDefault 500000; + "kernel.sched_migration_cost_ns" = mkDefault 50000; + "kernel.sched_nr_migrate" = mkDefault 128; + "kernel.split_lock_mitigate" = mkDefault 0; + + "net.ipv4.tcp_mtu_probing" = true; + "net.ipv4.tcp_fin_timeout" = mkDefault 5; + + "vm.max_map_count" = mkOverride 999 2147483642; + }; + kernelModules = [ + "hid_nintendo" + "hid_playstation" + "kvm-amd" + ]; + kernelParams = [ + "log_buf_len=4M" + "amdgpu.lockup_timeout=5000,10000,10000,5000" + "ttm.pages_min=2097152" + "amdgpu.sched_hw_submission=4" + "audit=0" ]; - initrd.kernelModules = [ "amdgpu" ]; - initrd.supportedFilesystems = [ "zfs" ]; - kernelModules = [ "kvm-amd" ]; kernelPackages = pkgs.linuxPackages_6_12; supportedFilesystems = [ "ntfs" ]; }; @@ -31,6 +67,23 @@ bluetooth = { enable = true; powerOnBoot = true; + settings = { + General = { + MultiProfile = "multiple"; + FastConnectable = true; + # enable experimental LL privacy, experimental offload codecs + KernelExperimental = "15c0a148-c273-11ea-b3de-0242ac130004"; + }; + LE = { + ScanIntervalSuspend = 2240; + ScanWindowSuspend = 224; + }; + }; + }; + graphics = { + enable32Bit = true; + extraPackages = [ pkgs.gamescope-wsi ]; + extraPackages32 = [ pkgs.pkgsi686Linux.gamescope-wsi ]; }; cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; enableRedistributableFirmware = true; @@ -38,6 +91,8 @@ powerManagement.cpuFreqGovernor = "schedutil"; + services.pulseaudio.enable = false; + services.xserver.videoDrivers = [ "amdgpu" ]; networking.useDHCP = lib.mkDefault true;