diff --git a/modules/nixos/desktop-environment/default.nix b/modules/nixos/desktop-environment/default.nix new file mode 100644 index 0000000..08942bc --- /dev/null +++ b/modules/nixos/desktop-environment/default.nix @@ -0,0 +1,86 @@ +{ config, lib, pkgs, namespace, options, ... }: + +let + desktop-environment = config.${namespace}.desktop-environment; + xfce = config.${namespace}.desktop-environment.xfce; + gnome = config.${namespace}.desktop-environment.gnome; + plasma = config.${namespace}.desktop-environment.plasma; +in { + + options.${namespace}.desktop-environment = lib.mkOption { + type = lib.types.attrsOf lib.types.any; + description = "Configuration options for desktop environments."; + default = { }; + xfce = { + enable = lib.mkEnableOption "Enable xfce desktop environment."; + }; + gnome = { + enable = lib.mkEnableOption "Enable gnome desktop environment."; + }; + plasma = { + enable = lib.mkEnableOption "Enable plasma desktop environment."; + }; + }; + config = lib.mkIf xfce.enable { + xserver = { + enable = true; # Enable the deprecated X11 teletype terminal connection system. + desktopManager = { + xfce.enable = true; + }; + }; + environment.systemPackages = with pkgs; [ + xfce.xfce4-goodies + xfce.xfce4-pulseaudio-plugin + xfce.xfce4-clipman-plugin + xfce.xfce4-screenshooter + xfce.xfce4-whiskermenu-plugin + thunar-archive-plugin + thunar-volman + gvfs + gvfs-mtp + gvfs-afc + gvfs-goa + gnome-keyring + libgnome-keyring + ]; + } ++ lib.mkIf gnome.enable { + + desktopManager.gnome.enable = true; + environment.systemPackages = with pkgs; [ + gnome-tweaks + gnome-software + gnomeExtensions.pop-shell + gnome-remote-desktop + ]; + + } ++ lib.mkIf plasma.enable { + + desktopManager.plasma6.enable = true; + environment.systemPackages = with pkgs kdePackages; [ + + kdePackages.qtwebsockets + kdePackages.qtwebchannel + kdePackages.korganizer + kdePackages.akonadi + kdePackages.akonadi-calendar + kdePackages.akonadi-contacts + kdePackages.kaddressbook + kdePackages.kmail + kdePackages.kdepim-runtime + kdePackages.kontact + kdePackages.kidentitymanagement + kdePackages.libkdepim + kdePackages.kwin + kdePackages.plasma-workspace + + plasma.plasma-desktop + plasma.plasma-nm + plasma.plasma-pa + + gnome-keyring + libgnome-keyring + ]; + + }; + +} \ No newline at end of file