flake/modules/nixos/system/desktop-environment.nix
2025-10-24 08:37:55 +03:00

97 lines
2.3 KiB
Nix

{
pkgs,
lib,
config,
...
}:
let
cfg = config.osbmModules;
in
{
config = lib.mkMerge [
# Plasma Desktop Environment
(lib.mkIf (cfg.desktopEnvironment == "plasma") {
services.xserver.enable = true;
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
environment.plasma6.excludePackages = with pkgs.kdePackages; [
kate
konsole
yakuake
# kfind ??
];
# Enable printing
services.printing.enable = true;
# Desktop packages
environment.systemPackages = with pkgs; [
alacritty
ghostty
obsidian
mpv
kitty
qbittorrent
element-desktop
];
# Wayland support
environment.sessionVariables.NIXOS_OZONE_WL = "1";
})
# GNOME Desktop Environment
(lib.mkIf (cfg.desktopEnvironment == "gnome") {
# Enable GNOME Desktop Environment
services.xserver.enable = true;
services.desktopManager.gnome.enable = true;
services.displayManager.gdm.enable = true;
# Enable GNOME Keyring for password management
services.gnome.gnome-keyring.enable = true;
# Enable dconf for GNOME settings
programs.dconf.enable = true;
# Remove unwanted GNOME applications
environment.gnome.excludePackages = with pkgs; [
baobab # disk usage analyzer
cheese # photo booth
eog # image viewer
epiphany # web browser
simple-scan # document scanner
totem # video player
yelp # help viewer
evince # document viewer
file-roller # archive manager
geary # email client
seahorse # password manager
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-contacts
gnome-font-viewer
gnome-logs
gnome-maps
gnome-music
gnome-screenshot
gnome-system-monitor
gnome-weather
gnome-disk-utility
pkgs.gnome-connections
];
})
# Common settings for any desktop environment
(lib.mkIf (cfg.desktopEnvironment != "none") {
# Enable X11 keymap
services.xserver.xkb = {
layout = lib.mkDefault "us";
variant = lib.mkDefault "";
};
})
];
}