From 9d79d01c5edfdf9e4730ff59b5d02245a24f83b1 Mon Sep 17 00:00:00 2001 From: Kopatz <7265381+Kropatz@users.noreply.github.com> Date: Tue, 16 Apr 2024 21:20:04 +0200 Subject: [PATCH] moar options --- modules/collections/desktop.nix | 10 +++-- modules/collections/laptop.nix | 4 ++ modules/collections/server.nix | 6 ++- modules/default.nix | 22 ++++------ modules/hardware/default.nix | 7 ++- modules/hardware/firmware.nix | 14 +++++- modules/hardware/nvidia.nix | 68 +++++++++++++++++------------ modules/hardware/scheduler.nix | 20 +++++++-- modules/hardware/ssd.nix | 14 +++++- modules/hardware/vfio.nix | 14 +++++- modules/{ => misc}/cli-tools.nix | 0 modules/misc/default.nix | 10 +++++ modules/{ => misc}/nftables.nix | 0 modules/{ => misc}/tmpfs.nix | 0 modules/{ => misc}/virt-manager.nix | 0 modules/{ => misc}/wireshark.nix | 0 16 files changed, 132 insertions(+), 57 deletions(-) rename modules/{ => misc}/cli-tools.nix (100%) create mode 100644 modules/misc/default.nix rename modules/{ => misc}/nftables.nix (100%) rename modules/{ => misc}/tmpfs.nix (100%) rename modules/{ => misc}/virt-manager.nix (100%) rename modules/{ => misc}/wireshark.nix (100%) diff --git a/modules/collections/desktop.nix b/modules/collections/desktop.nix index ee1a5c6..b7f51bc 100644 --- a/modules/collections/desktop.nix +++ b/modules/collections/desktop.nix @@ -15,9 +15,6 @@ ../graphical/openrgb.nix ../graphical/plasma.nix ../graphical/shared.nix - ../hardware/firmware.nix - ../hardware/nvidia.nix - ../hardware/ssd.nix ../kernel.nix # use latest kernel ../nix/index.nix ../nix/ld.nix @@ -29,11 +26,16 @@ ]; kop = { - hardware.wooting.enable = true; tmpfs.enable = true; wireshark.enable = true; virt-manager.enable = true; nftables.enable = true; cli-tools.enable = true; + hardware = { + nvidia.enable = true; + firmware.enable = true; + ssd.enable = true; + wooting.enable = true; + }; }; } diff --git a/modules/collections/laptop.nix b/modules/collections/laptop.nix index edff090..b590d40 100644 --- a/modules/collections/laptop.nix +++ b/modules/collections/laptop.nix @@ -5,5 +5,9 @@ tmpfs.enable = true; wireshark.enable = true; virt-manager.enable = true; + hardware = { + firmware.enable = true; + ssd.enable = true; + }; }; } diff --git a/modules/collections/server.nix b/modules/collections/server.nix index 407ac1d..ce85caa 100644 --- a/modules/collections/server.nix +++ b/modules/collections/server.nix @@ -30,12 +30,14 @@ ../motd.nix ../nix/settings.nix ../static-ip.nix - ### Hardware ### - ../hardware/ssd.nix ]; kop = { cli-tools.enable = true; tmpfs.enable = true; + hardware = { + firmware.enable = true; + ssd.enable = true; + }; }; } diff --git a/modules/default.nix b/modules/default.nix index cc388dd..133a91d 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,16 +1,12 @@ { pkgs, config, ...}: { - imports = [ - ./fh - ./graphical - ./hardware - ./nix - ./services - ./support - ./tmpfs.nix - ./wireshark.nix - ./virt-manager.nix - ./nftables.nix - ./cli-tools.nix - ]; + imports = [ + ./fh + ./graphical + ./hardware + ./misc + ./nix + ./services + ./support + ]; } diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 9c4b7cf..85cee61 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -1,6 +1,11 @@ { pkgs, config, ...}: { imports = [ - ./wooting.nix + ./firmware.nix + ./nvidia.nix + ./scheduler.nix + ./ssd.nix + ./vfio.nix + ./wooting.nix ]; } diff --git a/modules/hardware/firmware.nix b/modules/hardware/firmware.nix index a62f709..644974f 100644 --- a/modules/hardware/firmware.nix +++ b/modules/hardware/firmware.nix @@ -1,3 +1,15 @@ +{config, lib, ...}: +with lib; +let + cfg = config.kop.hardware.firmware; +in { - services.fwupd.enable = true; + options.kop.hardware.firmware = { + enable = mkEnableOption "Enables firmware"; + }; + + config = mkIf cfg.enable { + services.fwupd.enable = true; + }; } + diff --git a/modules/hardware/nvidia.nix b/modules/hardware/nvidia.nix index 1017c4e..eea135f 100644 --- a/modules/hardware/nvidia.nix +++ b/modules/hardware/nvidia.nix @@ -1,33 +1,43 @@ -{config, pkgs, ...}: +{lib, config, pkgs, ...}: +with lib; +let + cfg = config.kop.hardware.nvidia; +in { - # Enable OpenGL - hardware.opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; + options.kop.hardware.nvidia = { + enable = mkEnableOption "Enables nvidia gpus"; }; - - services.xserver.videoDrivers = ["nvidia"]; - hardware.nvidia = { - # Modesetting is required. - modesetting.enable = true; - # Nvidia power management. Experimental, and can cause sleep/suspend to fail. - powerManagement.enable = false; - # Fine-grained power management. Turns off GPU when not in use. - # Experimental and only works on modern Nvidia GPUs (Turing or newer). - powerManagement.finegrained = false; - # Use the NVidia open source kernel module (not to be confused with the - # independent third-party "nouveau" open source driver). - # Support is limited to the Turing and later architectures. Full list of - # supported GPUs is at: - # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus - # Only available from driver 515.43.04+ - # Currently alpha-quality/buggy, so false is currently the recommended setting. - open = false; - # Enable the Nvidia settings menu, - # accessible via `nvidia-settings`. - nvidiaSettings = true; - # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.beta; + + config = mkIf cfg.enable { + # Enable OpenGL + hardware.opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + }; + + services.xserver.videoDrivers = ["nvidia"]; + hardware.nvidia = { + # Modesetting is required. + modesetting.enable = true; + # Nvidia power management. Experimental, and can cause sleep/suspend to fail. + powerManagement.enable = false; + # Fine-grained power management. Turns off GPU when not in use. + # Experimental and only works on modern Nvidia GPUs (Turing or newer). + powerManagement.finegrained = false; + # Use the NVidia open source kernel module (not to be confused with the + # independent third-party "nouveau" open source driver). + # Support is limited to the Turing and later architectures. Full list of + # supported GPUs is at: + # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus + # Only available from driver 515.43.04+ + # Currently alpha-quality/buggy, so false is currently the recommended setting. + open = false; + # Enable the Nvidia settings menu, + # accessible via `nvidia-settings`. + nvidiaSettings = true; + # Optionally, you may need to select the appropriate driver version for your specific GPU. + package = config.boot.kernelPackages.nvidiaPackages.beta; + }; }; } diff --git a/modules/hardware/scheduler.nix b/modules/hardware/scheduler.nix index b9d379d..3bd4f6c 100644 --- a/modules/hardware/scheduler.nix +++ b/modules/hardware/scheduler.nix @@ -1,7 +1,19 @@ +{config, lib, ...}: +with lib; +let + cfg = config.kop.hardware.scheduler; +in { - services.system76-scheduler = { - enable = true; + options.kop.hardware.scheduler = { + enable = mkEnableOption "Enables scheduler"; + }; + + config = mkIf cfg.enable { + services.system76-scheduler = { + enable = true; + }; + + hardware.system76.enableAll = true; }; - - hardware.system76.enableAll = true; } + diff --git a/modules/hardware/ssd.nix b/modules/hardware/ssd.nix index 5866c1c..4356350 100644 --- a/modules/hardware/ssd.nix +++ b/modules/hardware/ssd.nix @@ -1,3 +1,15 @@ +{config, lib, ...}: +with lib; +let + cfg = config.kop.hardware.ssd; +in { - services.fstrim.enable = true; + options.kop.hardware.ssd = { + enable = mkEnableOption "Enables fstrim"; + }; + + config = mkIf cfg.enable { + services.fstrim.enable = true; + }; } + diff --git a/modules/hardware/vfio.nix b/modules/hardware/vfio.nix index 115c500..ce912fd 100644 --- a/modules/hardware/vfio.nix +++ b/modules/hardware/vfio.nix @@ -1,6 +1,16 @@ { pkgs, lib, config, ... }: +with lib; +let + cfg = config.kop.hardware.vfio; +in { - config = lib.mkIf config.virtualisation.libvirtd.enable { - boot.kernelParams = [ "amd_iommu=on" ]; + options.kop.hardware.vfio = { + enable = mkEnableOption "Enables vfio"; + }; + + config = mkIf cfg.enable { + config = lib.mkIf config.virtualisation.libvirtd.enable { + boot.kernelParams = [ "amd_iommu=on" ]; + }; }; } diff --git a/modules/cli-tools.nix b/modules/misc/cli-tools.nix similarity index 100% rename from modules/cli-tools.nix rename to modules/misc/cli-tools.nix diff --git a/modules/misc/default.nix b/modules/misc/default.nix new file mode 100644 index 0000000..b9a7c18 --- /dev/null +++ b/modules/misc/default.nix @@ -0,0 +1,10 @@ +{ pkgs, config, ...}: +{ + imports = [ + ./wireshark.nix + ./virt-manager.nix + ./nftables.nix + ./cli-tools.nix + ./tmpfs.nix + ]; +} diff --git a/modules/nftables.nix b/modules/misc/nftables.nix similarity index 100% rename from modules/nftables.nix rename to modules/misc/nftables.nix diff --git a/modules/tmpfs.nix b/modules/misc/tmpfs.nix similarity index 100% rename from modules/tmpfs.nix rename to modules/misc/tmpfs.nix diff --git a/modules/virt-manager.nix b/modules/misc/virt-manager.nix similarity index 100% rename from modules/virt-manager.nix rename to modules/misc/virt-manager.nix diff --git a/modules/wireshark.nix b/modules/misc/wireshark.nix similarity index 100% rename from modules/wireshark.nix rename to modules/misc/wireshark.nix