working desktop environment config

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

View File

@@ -1,86 +1,89 @@
{ 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 {
desktopManager = { services.xserver = {
xfce.enable = true; enable = true;
desktopManager = {
xfce.enable = true;
};
}; };
}; environment.systemPackages = with pkgs; [
environment.systemPackages = with pkgs; [ xfce.xfce4-pulseaudio-plugin
xfce.xfce4-goodies xfce.xfce4-clipman-plugin
xfce.xfce4-pulseaudio-plugin xfce.xfce4-screenshooter
xfce.xfce4-clipman-plugin xfce.xfce4-whiskermenu-plugin
xfce.xfce4-screenshooter thunar-archive-plugin
xfce.xfce4-whiskermenu-plugin thunar-volman
thunar-archive-plugin gvfs
thunar-volman gnome-keyring
gvfs libgnome-keyring
gvfs-mtp ];
gvfs-afc })
gvfs-goa
gnome-keyring
libgnome-keyring
];
} ++ lib.mkIf gnome.enable {
desktopManager.gnome.enable = true; (lib.mkIf cfg.gnome.enable {
environment.systemPackages = with pkgs; [ services.xserver = {
gnome-tweaks enable = true;
gnome-software desktopManager.gnome.enable = true;
gnomeExtensions.pop-shell };
gnome-remote-desktop environment.systemPackages = with pkgs; [
]; gnome-tweaks
gnome-software
gnomeExtensions.pop-shell
gnome-remote-desktop
];
})
} ++ lib.mkIf plasma.enable { (lib.mkIf cfg.kde.enable {
services.xserver.enable = true;
services.desktopManager.plasma6.enable = true;
environment.systemPackages = with pkgs; [
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
gnome-keyring
libgnome-keyring
];
})
(lib.mkIf cfg.cosmic.enable {
services.desktopManager.cosmic.enable = true;
services.desktopManager.cosmic.xwayland.enable = true;
environment.systemPackages = with pkgs; [
desktopManager.plasma6.enable = true; gnome-keyring
environment.systemPackages = with pkgs kdePackages; [ libgnome-keyring
];
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
];
};
} }