{ pkgs, inputs, lib, config, flakeDir, True, False, ... }: with lib; let cfg = config.module.programs; in { options = { module.programs = { common.enable = mkEnableOption ""; hyprland.enable = mkEnableOption ""; sway.enable = mkEnableOption ""; steam.enable = mkEnableOption ""; torrserver.enable = mkEnableOption ""; hamachi.enable = mkEnableOption ""; pkgs = mkOption { type = types.listOf types.package; default = null; }; }; }; imports = [ ./torrserver ]; config = mkMerge [ (mkIf cfg.common.enable { environment.systemPackages = [ ] ++ cfg.pkgs; programs = { nano = False; light = True; git = True // { package = pkgs.gitMinimal; }; nh = True // { flake = flakeDir; }; }; }) (mkIf cfg.hyprland.enable { programs.hyprland = with inputs.hyprland.packages.${pkgs.system}; True // { package = hyprland; portalPackage = xdg-desktop-portal-hyprland; }; }) (mkIf cfg.sway.enable { programs.sway = True // { package = pkgs.swayfx; }; }) (mkIf cfg.hamachi.enable { programs.haguichi = True; }) (mkIf cfg.steam.enable { environment.systemPackages = with pkgs; [ protonup-qt ]; hardware.xone = True; programs = { gamescope = True; gamemode = True; steam = True // { # GAMING gamescopeSession = True; remotePlay.openFirewall = true; extraCompatPackages = with pkgs; [ proton-ge-bin ]; package = pkgs.steam.override { extraEnv = { MANGOHUD = true; OBS_VKCAPTURE = true; RADV_TEX_ANISO = 16; }; }; }; }; }) ]; }