{ pkgs, lib, config, ... }: { options = { software.desktop = { enable = lib.mkEnableOption "enables desktop apps"; chromium = { enable = lib.mkEnableOption "enables selected chromium browser package"; package = lib.mkOption { type = lib.types.package; default = pkgs.ungoogled-chromium; description = "chromium package to install"; }; }; cad.enable = lib.mkEnableOption "enables cad and 3d printing apps"; crypto.enable = lib.mkEnableOption "enables crypto wallet apps"; firefox.enable = lib.mkEnableOption "enables firefox"; graphics.enable = lib.mkEnableOption "enables graphic design apps"; office.enable = lib.mkEnableOption "enables office apps"; utilities.enable = lib.mkEnableOption "enables miscellaneous utility apps"; }; }; config = lib.mkIf config.software.desktop.enable { environment.systemPackages = with pkgs; [ # Default alacritty arandr dmenu jellyfin-mpv-shim libnotify mpv pavucontrol pcmanfm redshift sxiv wpa_supplicant_gui zathura ] ++ pkgs.lib.optionals config.software.desktop.chromium.enable [ # Chrome config.software.desktop.chromium.package ] ++ pkgs.lib.optionals config.software.desktop.cad.enable [ # CAD blender freecad prusa-slicer ] ++ pkgs.lib.optionals config.software.desktop.crypto.enable [ # Crypto Wallets bisq2 electrum monero-gui ] ++ pkgs.lib.optionals config.software.desktop.graphics.enable [ # Graphics blender geeqie gimp inkscape ] ++ pkgs.lib.optionals config.software.desktop.office.enable [ # Office libreoffice thunderbird ] ++ pkgs.lib.optionals config.software.desktop.utilities.enable [ # Misc Utilities qbittorrent qdirstat remmina ]; programs.localsend.enable = config.software.desktop.utilities.enable; # Installs & opens firewall programs.firefox.enable = config.software.desktop.firefox.enable; # GVfs allows for mounting drives in a graphical file manager services.gvfs.enable = true; # For home-manager to configure gtk # TODO this should be there instead programs.dconf.enable = config.software.desktop.enable; }; }