working desktop environment config

This commit is contained in:
2026-01-23 19:53:43 +01:00
parent 0e31504687
commit ab9acedf49

View File

@@ -1,35 +1,33 @@
{ config, lib, pkgs, namespace, options, ... }: { config, lib, pkgs, namespace, ... }:
let let
desktop-environment = config.${namespace}.desktop-environment; cfg = config.${namespace}.desktop-environment;
xfce = config.${namespace}.desktop-environment.xfce;
gnome = config.${namespace}.desktop-environment.gnome;
plasma = config.${namespace}.desktop-environment.plasma;
in { in {
options.${namespace}.desktop-environment = lib.mkOption { options.${namespace}.desktop-environment = {
type = lib.types.attrsOf lib.types.any;
description = "Configuration options for desktop environments.";
default = { };
xfce = { xfce = {
enable = lib.mkEnableOption "Enable xfce desktop environment."; enable = lib.mkEnableOption "XFCE desktop environment";
}; };
gnome = { gnome = {
enable = lib.mkEnableOption "Enable gnome desktop environment."; enable = lib.mkEnableOption "GNOME desktop environment";
}; };
plasma = { kde = {
enable = lib.mkEnableOption "Enable plasma desktop environment."; enable = lib.mkEnableOption "KDE Plasma desktop environment";
}; };
cosmic = {
enable = lib.mkEnableOption "Cosmic desktop environment";
}
}; };
config = lib.mkIf xfce.enable {
xserver = { config = lib.mkMerge [
enable = true; # Enable the deprecated X11 teletype terminal connection system. (lib.mkIf cfg.xfce.enable {
services.xserver = {
enable = true;
desktopManager = { desktopManager = {
xfce.enable = true; xfce.enable = true;
}; };
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
xfce.xfce4-goodies
xfce.xfce4-pulseaudio-plugin xfce.xfce4-pulseaudio-plugin
xfce.xfce4-clipman-plugin xfce.xfce4-clipman-plugin
xfce.xfce4-screenshooter xfce.xfce4-screenshooter
@@ -37,27 +35,28 @@ in {
thunar-archive-plugin thunar-archive-plugin
thunar-volman thunar-volman
gvfs gvfs
gvfs-mtp
gvfs-afc
gvfs-goa
gnome-keyring gnome-keyring
libgnome-keyring libgnome-keyring
]; ];
} ++ lib.mkIf gnome.enable { })
(lib.mkIf cfg.gnome.enable {
services.xserver = {
enable = true;
desktopManager.gnome.enable = true; desktopManager.gnome.enable = true;
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
gnome-tweaks gnome-tweaks
gnome-software gnome-software
gnomeExtensions.pop-shell gnomeExtensions.pop-shell
gnome-remote-desktop gnome-remote-desktop
]; ];
})
} ++ lib.mkIf plasma.enable { (lib.mkIf cfg.kde.enable {
services.xserver.enable = true;
desktopManager.plasma6.enable = true; services.desktopManager.plasma6.enable = true;
environment.systemPackages = with pkgs kdePackages; [ environment.systemPackages = with pkgs; [
kdePackages.qtwebsockets kdePackages.qtwebsockets
kdePackages.qtwebchannel kdePackages.qtwebchannel
kdePackages.korganizer kdePackages.korganizer
@@ -72,15 +71,19 @@ in {
kdePackages.libkdepim kdePackages.libkdepim
kdePackages.kwin kdePackages.kwin
kdePackages.plasma-workspace kdePackages.plasma-workspace
gnome-keyring
plasma.plasma-desktop libgnome-keyring
plasma.plasma-nm ];
plasma.plasma-pa })
(lib.mkIf cfg.cosmic.enable {
services.desktopManager.cosmic.enable = true;
services.desktopManager.cosmic.xwayland.enable = true;
environment.systemPackages = with pkgs; [
gnome-keyring gnome-keyring
libgnome-keyring libgnome-keyring
]; ];
})
}; ];
} }