From 067e0c9970f3130df380ddc930eae997db4e9d42 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Sun, 18 May 2025 15:35:42 +0800 Subject: [PATCH] refactor(modules/hardware): move hardware config to modules --- modules/nixos/hardware/audio.nix | 9 +++++++++ modules/nixos/hardware/btrfs.nix | 1 + modules/nixos/hardware/cpu.nix | 9 +++++++++ modules/nixos/hardware/default.nix | 3 +++ modules/nixos/system/boot.nix | 12 ++++++++++++ modules/nixos/system/default.nix | 2 ++ systems/x86_64-linux/nemesis/default.nix | 14 ++++---------- 7 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 modules/nixos/hardware/audio.nix create mode 100644 modules/nixos/hardware/cpu.nix create mode 100644 modules/nixos/system/boot.nix diff --git a/modules/nixos/hardware/audio.nix b/modules/nixos/hardware/audio.nix new file mode 100644 index 0000000..426c003 --- /dev/null +++ b/modules/nixos/hardware/audio.nix @@ -0,0 +1,9 @@ +{ config, lib, ... }: +{ + config = { + services.pipewire = { + enable = true; + pulse.enable = true; + }; + }; +} diff --git a/modules/nixos/hardware/btrfs.nix b/modules/nixos/hardware/btrfs.nix index 5faa3fc..d2f9155 100644 --- a/modules/nixos/hardware/btrfs.nix +++ b/modules/nixos/hardware/btrfs.nix @@ -5,6 +5,7 @@ in { config = lib.mkIf (cfg.enable) (lib.mkMerge [ { + boot.initrd.kernelModules = [ "dm-snapshot" ]; disko.devices.disk.main = { device = cfg.drive; type = "disk"; diff --git a/modules/nixos/hardware/cpu.nix b/modules/nixos/hardware/cpu.nix new file mode 100644 index 0000000..7d1f809 --- /dev/null +++ b/modules/nixos/hardware/cpu.nix @@ -0,0 +1,9 @@ +{ config, lib, ... }: +{ + config = lib.mkMerge [ + (lib.mkIf (config.hardware.platform == "amd"){ + hardware.cpu.amd.updateMicrocode = true; + boot.kernelModules = [ "kvm-amd" ]; + }) + ]; +} diff --git a/modules/nixos/hardware/default.nix b/modules/nixos/hardware/default.nix index 19cd3e2..961a605 100644 --- a/modules/nixos/hardware/default.nix +++ b/modules/nixos/hardware/default.nix @@ -3,6 +3,8 @@ imports = [ ./btrfs.nix ./nvidia.nix + ./audio.nix + ./cpu.nix ]; options.hardware = { @@ -12,5 +14,6 @@ ephemeralRoot = lib.mkEnableOption ""; }; gpu = lib.pantheon.mkStrOption; + platform = lib.pantheon.mkStrOption; }; } diff --git a/modules/nixos/system/boot.nix b/modules/nixos/system/boot.nix new file mode 100644 index 0000000..5421655 --- /dev/null +++ b/modules/nixos/system/boot.nix @@ -0,0 +1,12 @@ +{ config, lib, ... }: +{ + config = lib.mkMerge [ + { + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.loader.efi.canTouchEfiVariables = true; + } + (lib.mkIf (config.system.bootloader == "systemd-boot"){ + boot.loader.systemd-boot.enable = true; + }) + ]; +} diff --git a/modules/nixos/system/default.nix b/modules/nixos/system/default.nix index d6c4763..a762a7b 100644 --- a/modules/nixos/system/default.nix +++ b/modules/nixos/system/default.nix @@ -1,6 +1,7 @@ { config, lib, ...}: { imports = [ + ./boot.nix ./users.nix ./localisation.nix ./nix-config.nix @@ -8,6 +9,7 @@ options.system = { mainUser = lib.pantheon.mkStrOption; + bootloader = lib.pantheon.mkStrOption; }; config = { diff --git a/systems/x86_64-linux/nemesis/default.nix b/systems/x86_64-linux/nemesis/default.nix index c3121e2..2e97738 100644 --- a/systems/x86_64-linux/nemesis/default.nix +++ b/systems/x86_64-linux/nemesis/default.nix @@ -1,30 +1,24 @@ { config, lib, pkgs, ... }: { system.mainUser = "rafiq"; + system.bootloader = "systemd-boot"; hardware.drives.btrfs = { enable = true; drive = "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434"; ephemeralRoot = true; }; + hardware.platform = "amd"; hardware.gpu = "nvidia"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ "dm-snapshot" ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + + networking.useDHCP = lib.mkDefault true; networking.hostName = "nemesis"; # Define your hostname. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - services.pipewire = { - enable = true; - pulse.enable = true; - }; }