{ pkgs, lib, config, ... }: { options = { software = { desktop = { enable = lib.mkEnableOption "enables desktop apps"; extra.enable = lib.mkEnableOption "enables extra desktop apps"; }; dev = { enable = lib.mkEnableOption "enables development utilities"; extra.enable = lib.mkEnableOption "enables extra development utilities"; }; utils = { enable = lib.mkEnableOption "enables general utilities"; }; }; }; config = { environment.systemPackages = with pkgs; pkgs.lib.optionals config.software.desktop.enable [ # Desktop alacritty arandr dmenu firefox mpv pavucontrol pcmanfm redshift sxiv zathura ] ++ pkgs.lib.optionals config.software.desktop.extra.enable [ # Desktop Extra geeqie gimp inkscape qbittorrent qdirstat ungoogled-chromium ] ++ pkgs.lib.optionals config.software.dev.enable [ # Development dash # TODO should be default /bin/sh entr gcc git gnumake jq lm_sensors nmap openssl python3 sassc sslscan wget ] ++ pkgs.lib.optionals config.software.dev.extra.enable [ # Development Extra android-tools cargo hugo #python-pip # TODO figure this one out uhubctl wireguard-tools ] ++ pkgs.lib.optionals config.software.utils.enable [ # Utilities ddcutil # TODO fastfetch htop light neovim p7zip powertop pv rsync screen scrot smartmontools stress testdisk tmux xxHash ]; # More desktop programs.dconf.enable = config.software.desktop.enable; # For home-manager to configure gtk TODO this should be there instead # More utilities programs.zsh.enable = config.software.utils.enable; users.defaultUserShell = lib.mkIf config.software.utils.enable pkgs.zsh; services.openssh.enable = config.software.utils.enable; }; }