diff --git a/home/programs/games.nix b/home/programs/games.nix index 4dd1347..b9d63e5 100644 --- a/home/programs/games.nix +++ b/home/programs/games.nix @@ -5,8 +5,9 @@ lib, ... }: let - inherit (osConfig.niksos) desktop bluetooth; + inherit (osConfig.niksos) desktop hardware; inherit (desktop) games; + inherit (hardware) bluetooth; in { # Also look at system/programs/games.nix (some programs have to be overlayed or have systemwide modules that have to be installed.) home.packages = lib.mkIf games ([ diff --git a/home/shell/other.nix b/home/shell/other.nix index f90f855..bee2c7d 100644 --- a/home/shell/other.nix +++ b/home/shell/other.nix @@ -4,25 +4,27 @@ osConfig, inputs, ... -}: { +}: let + inherit (lib) optionals; + inherit (osConfig.niksos.hardware) bluetooth portable; +in { home.packages = [ pkgs.ripgrep pkgs.p7zip + pkgs.dua + pkgs.ffmpeg + pkgs.usbutils pkgs.pciutils pkgs.inetutils pkgs.aria2 - pkgs.dua pkgs.file - pkgs.ffmpeg - pkgs.gurk-rs - pkgs.playerctl ] - ++ lib.optionals osConfig.niksos.bluetooth [ + ++ optionals bluetooth [ pkgs.ear2ctl ] - ++ lib.optionals osConfig.niksos.portable.enable [ + ++ optionals portable.enable [ inputs.somcli.defaultPackage.${pkgs.system} ]; } diff --git a/home/wayland/hyprland/binds.nix b/home/wayland/hyprland/binds.nix index ff8b519..405c4ec 100644 --- a/home/wayland/hyprland/binds.nix +++ b/home/wayland/hyprland/binds.nix @@ -8,7 +8,8 @@ }: let inherit (lib) getExe; inherit (config.lib.stylix.colors) base0D; - inherit (osConfig.niksos) desktop portable bluetooth; + inherit (osConfig.niksos) desktop hardware; + inherit (hardware) portable bluetooth; inherit (desktop) games; runOnce = program: "pgrep ${program} || uwsm app -- ${program}"; diff --git a/home/wayland/hyprland/default.nix b/home/wayland/hyprland/default.nix index 98d05ad..dfb5a44 100644 --- a/home/wayland/hyprland/default.nix +++ b/home/wayland/hyprland/default.nix @@ -26,7 +26,7 @@ in { "${uwsm} finalize" "${hyprlock}" # Lock screen ] - ++ lib.optional osConfig.niksos.portable.enable "powermode sync"; + ++ lib.optional osConfig.niksos.hardware.portable.enable "powermode sync"; }; }; } diff --git a/home/wayland/hyprlock.nix b/home/wayland/hyprlock.nix index cfdc5e8..411ca37 100644 --- a/home/wayland/hyprlock.nix +++ b/home/wayland/hyprlock.nix @@ -15,7 +15,7 @@ in { hide_cursor = false; no_fade_in = true; }; - auth."fingerprint:enabled" = true; + auth."fingerprint:enabled" = osConfig.niksos.hardware.fingerprint; label = [ { diff --git a/hosts/lapserv/default.nix b/hosts/lapserv/default.nix index b187cb8..680d1a9 100644 --- a/hosts/lapserv/default.nix +++ b/hosts/lapserv/default.nix @@ -5,8 +5,10 @@ niksos = { server = true; - graphics.nvidia = false; #FIXME: Compile error - graphics.intel = true; + hardware.graphics = { + nvidia = false; #FIXME: Compile error + intel = true; + }; }; services.immich = { diff --git a/hosts/laptop/default.nix b/hosts/laptop/default.nix index 42e9511..a4f0d08 100644 --- a/hosts/laptop/default.nix +++ b/hosts/laptop/default.nix @@ -23,18 +23,21 @@ # programs.evolution.enable = true; # FIXME: move to appropiate place. niksos = { - joycond = false; #NOTE: enable when game night lol - fingerprint = true; - bluetooth = true; - portable = { - enable = true; - hyprland = { - powerSaver = '' - hyprctl keyword monitor eDP-1,2880x1920@60,0x0,1.5,vrr,1 - ''; - performance = '' - hyprctl keyword monitor eDP-1,2880x1920@120,0x0,1.5,vrr,1 - ''; + hardware = { + joycond = false; #NOTE: enable when game night lol + fingerprint = true; + bluetooth = true; + + portable = { + enable = true; + hyprland = { + powerSaver = '' + hyprctl keyword monitor eDP-1,2880x1920@60,0x0,1.5,vrr,1 + ''; + performance = '' + hyprctl keyword monitor eDP-1,2880x1920@120,0x0,1.5,vrr,1 + ''; + }; }; }; diff --git a/hosts/minimal/default.nix b/hosts/minimal/default.nix index db7e1de..ee6495e 100644 --- a/hosts/minimal/default.nix +++ b/hosts/minimal/default.nix @@ -9,7 +9,6 @@ services.fwupd.enable = false; niksos = { - bluetooth = false; desktop = { enable = false; hyprland = false; @@ -17,20 +16,24 @@ apps = false; games = false; }; - fingerprint = false; - graphics = { - enable = false; - intel = false; - nvidia = false; - }; - neovim = false; - portable = { - enable = false; - hyprland = { - powerSaver = ""; - performance = ""; + hardware = { + fingerprint = false; + bluetooth = false; + joycond = false; + graphics = { + enable = false; + intel = false; + nvidia = false; + }; + portable = { + enable = false; + hyprland = { + powerSaver = ""; + performance = ""; + }; }; }; + neovim = false; server = false; }; diff --git a/system/hardware/bluetooth.nix b/system/hardware/bluetooth.nix index 5d08c73..72d31e2 100644 --- a/system/hardware/bluetooth.nix +++ b/system/hardware/bluetooth.nix @@ -4,9 +4,7 @@ pkgs, ... }: { - options.niksos.bluetooth = lib.mkEnableOption "bluetooth related stuff."; - - config = lib.mkIf config.niksos.bluetooth { + config = lib.mkIf config.niksos.hardware.bluetooth { hardware.bluetooth = { enable = true; input.General.ClassicBondedOnly = false; diff --git a/system/hardware/default.nix b/system/hardware/default.nix index f513c91..720648d 100644 --- a/system/hardware/default.nix +++ b/system/hardware/default.nix @@ -1,5 +1,7 @@ -{ - hardware.enableRedistributableFirmware = true; +{lib, ...}: let + mkEO = lib.mkEnableOption; +in { + config.hardware.enableRedistributableFirmware = true; imports = [ ./bluetooth.nix @@ -9,4 +11,32 @@ ./joycond.nix ./power.nix ]; + + options.niksos.hardware = { + bluetooth = mkEO "bluetooth related stuff."; + fingerprint = mkEO "fingerprint support."; + + graphics = { + enable = mkEO "core graphics"; + intel = mkEO "additional intel drivers"; + nvidia = mkEO "additoinal nvidia drivers"; + }; + + joycond = mkEO "support for nintendo switch controllers."; + + portable = { + enable = mkEO "battery optimisers"; + hyprland = let + gen = mode: + lib.mkOption { + default = ""; + description = "Shell commands to run when switching to ${mode} mode."; + type = lib.types.lines; + }; + in { + powerSaver = gen "power-saver"; + performance = gen "performance"; + }; + }; + }; } diff --git a/system/hardware/fingerprint.nix b/system/hardware/fingerprint.nix index f3a16fc..f84f6f7 100644 --- a/system/hardware/fingerprint.nix +++ b/system/hardware/fingerprint.nix @@ -4,13 +4,12 @@ pkgs, ... }: let - inherit (config.niksos) fingerprint desktop; + inherit (config.niksos) hardware desktop; inherit (lib) mkIf mkEnableOption; uwsm = lib.getExe pkgs.uwsm; foot = lib.getExe pkgs.foot; in { - options.niksos.fingerprint = mkEnableOption "fingerprint support."; - config = mkIf fingerprint { + config = mkIf hardware.fingerprint { services = { fprintd.enable = true; logind.extraConfig = mkIf desktop.hyprland '' diff --git a/system/hardware/graphics.nix b/system/hardware/graphics.nix index ee1c34e..3134ff9 100644 --- a/system/hardware/graphics.nix +++ b/system/hardware/graphics.nix @@ -5,20 +5,14 @@ ... }: let inherit (lib) optionals mkEnableOption mkDefault; - inherit (config.niksos) graphics; - inherit (graphics) enable; + inherit (config.niksos.hardware) graphics; + inherit (graphics) enable nvidia intel; - nvidia = graphics.enable && graphics.nvidia; - intel = graphics.enable && graphics.intel; + Nvidia = enable && nvidia; + Intel = enable && intel; in { - options.niksos.graphics = { - enable = mkEnableOption "core graphics"; - intel = mkEnableOption "additional intel drivers"; - nvidia = mkEnableOption "additoinal nvidia drivers"; - }; - config = { - niksos.graphics.enable = mkDefault true; + niksos.hardware.graphics.enable = mkDefault true; hardware.graphics = { inherit enable; @@ -29,10 +23,10 @@ in { vaapiVdpau libvdpau-va-gl ] - ++ optionals intel [ + ++ optionals Intel [ pkgs.intel-media-driver ] - ++ optionals nvidia [ + ++ optionals Nvidia [ nvidia-vaapi-driver ]; extraPackages32 = with pkgs.pkgsi686Linux; @@ -41,18 +35,18 @@ in { vaapiVdpau libvdpau-va-gl ] - ++ optionals intel [ + ++ optionals Intel [ pkgs.pkgsi686Linux.intel-media-driver ] - ++ optionals nvidia [ + ++ optionals Nvidia [ pkgs.pkgsi686Linux.nvidia-vaapi-driver ]; }; hardware.nvidia = { - modesetting.enable = nvidia; + modesetting.enable = Nvidia; open = false; }; - services.xserver.videoDrivers = optionals nvidia ["nvidia"]; + services.xserver.videoDrivers = optionals Nvidia ["nvidia"]; }; } diff --git a/system/hardware/joycond.nix b/system/hardware/joycond.nix index a87d760..919487b 100644 --- a/system/hardware/joycond.nix +++ b/system/hardware/joycond.nix @@ -3,9 +3,7 @@ lib, ... }: { - options.niksos.joycond = lib.mkEnableOption "support for nintendo switch controllers."; - - config.services = lib.mkIf config.niksos.joycond { + config.services = lib.mkIf config.niksos.hardware.joycond { usbmuxd.enable = true; joycond.enable = true; }; diff --git a/system/hardware/power.nix b/system/hardware/power.nix index 0f22c63..b5522a6 100644 --- a/system/hardware/power.nix +++ b/system/hardware/power.nix @@ -5,22 +5,8 @@ ... }: let inherit (config) niksos; - cfg = niksos.portable; + cfg = niksos.hardware.portable; in { - options.niksos.portable = { - enable = lib.mkEnableOption "battery optimisers"; - hyprland = let - gen = mode: - lib.mkOption { - default = ""; - description = "Shell commands to run when switching to ${mode} mode."; - type = lib.types.lines; - }; - in { - powerSaver = gen "power-saver"; - performance = gen "performance"; - }; - }; config = { services = lib.mkIf cfg.enable { logind = { diff --git a/system/services/ssh.nix b/system/services/ssh.nix index fddd575..dc386eb 100644 --- a/system/services/ssh.nix +++ b/system/services/ssh.nix @@ -1,7 +1,7 @@ {config, ...}: { services.openssh = { enable = true; - openFirewall = !config.niksos.portable.enable; + openFirewall = !config.niksos.hardware.portable.enable; settings.UseDns = true; }; }