From 8e9ee08e09f4351e302421bd53da77691736d0ac Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 11 Jul 2024 18:20:05 +0200 Subject: [PATCH] Modularize hardware config --- nix/base/common_hardware.nix | 11 +++++++++- nix/hardware/marmo/marmo.nix | 23 -------------------- nix/hardware/overheating/configuration.nix | 7 ------ nix/hardware/overheating/overheating.nix | 25 +++++++--------------- nix/hardware/spaceship/spaceship.nix | 23 ++------------------ nix/modules/conf.nix | 10 +++++++++ 6 files changed, 30 insertions(+), 69 deletions(-) delete mode 100644 nix/hardware/marmo/marmo.nix diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index ac4e20e..e64801b 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -1,8 +1,11 @@ -{ pkgs, config, ... }: +{ pkgs, config, lib, modulesPath, ... }: let username = config.conf.username; in { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -115,4 +118,10 @@ in swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + services.fstrim.enable = lib.mkDefault true; + nix.settings.auto-optimise-store = true; + networking.useDHCP = lib.mkDefault true; } diff --git a/nix/hardware/marmo/marmo.nix b/nix/hardware/marmo/marmo.nix deleted file mode 100644 index 3969c18..0000000 --- a/nix/hardware/marmo/marmo.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, modulesPath, ... }: -{ - imports = - [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp15s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - services.fstrim.enable = lib.mkDefault true; - nix.settings.auto-optimise-store = true; -} diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index bbfa866..941b63e 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -1,8 +1,6 @@ { imports = [ ../../modules/conf.nix - ./dsdt.nix - ./firmware.nix ]; conf = { monitor = "eDP-1"; @@ -24,9 +22,4 @@ }; }; - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = true; - - # for hyprdock - services.acpid.enable = true; } diff --git a/nix/hardware/overheating/overheating.nix b/nix/hardware/overheating/overheating.nix index e30f979..0ca9ea1 100644 --- a/nix/hardware/overheating/overheating.nix +++ b/nix/hardware/overheating/overheating.nix @@ -1,24 +1,15 @@ -{ config, lib, modulesPath, ... }: { imports = [ - (modulesPath + "/installer/scan/not-detected.nix") + ./dsdt.nix + ./firmware.nix ]; - - boot.initrd.kernelModules = [ ]; + # special hardware modules + # TODO: needed? boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp15s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - services.fstrim.enable = lib.mkDefault true; - nix.settings.auto-optimise-store = true; + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + # for hyprdock + services.acpid.enable = true; } diff --git a/nix/hardware/spaceship/spaceship.nix b/nix/hardware/spaceship/spaceship.nix index 62f5ee2..191def7 100644 --- a/nix/hardware/spaceship/spaceship.nix +++ b/nix/hardware/spaceship/spaceship.nix @@ -1,13 +1,7 @@ -{ pkgs, config, lib, modulesPath, ... }: +{ pkgs, lib, ... }: { - imports = - [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.kernelModules = [ ]; +# TODO: needed? boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; fileSystems."/drive2" = { @@ -20,19 +14,6 @@ ]; }; - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp15s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - services.fstrim.enable = lib.mkDefault true; - nix.settings.auto-optimise-store = true; - virtualisation.virtualbox.host.enable = true; # enable hardware acceleration and rocm diff --git a/nix/modules/conf.nix b/nix/modules/conf.nix index a3da21e..ded538b 100644 --- a/nix/modules/conf.nix +++ b/nix/modules/conf.nix @@ -1,5 +1,15 @@ { lib, config, pkgs, ... }: { options.conf = { + cpu = lib.mkOption { + # TODO: how to enable arm? + default = "amd"; + type = with lib.types; (enum [ "amd" "intel" ]); + example = "intel"; + description = '' + cpu microcode. + ''; + }; + monitor = lib.mkOption { default = ""; example = "eDP-1";