diff options
Diffstat (limited to 'nixpkgs/nixos/modules/services/x11/desktop-managers')
8 files changed, 87 insertions, 346 deletions
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/budgie.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/budgie.nix index fe39097a22e8..466ef5c565b7 100644 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/budgie.nix +++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/budgie.nix @@ -44,6 +44,8 @@ let enableSshSocket = config.services.openssh.startWhenNeeded; }; in { + meta.maintainers = lib.teams.budgie.members; + options = { services.xserver.desktopManager.budgie = { enable = mkEnableOption (mdDoc "the Budgie desktop"); @@ -144,7 +146,6 @@ in { mate.atril mate.engrampa mate.mate-calc - mate.mate-terminal mate.mate-system-monitor vlc @@ -158,8 +159,11 @@ in { ] config.environment.budgie.excludePackages) ++ cfg.sessionPath; + # Both budgie-desktop-view and nemo defaults to this emulator. + programs.gnome-terminal.enable = mkDefault true; + # Fonts. - fonts.packages = mkDefault [ + fonts.packages = [ pkgs.noto-fonts pkgs.hack-font ]; @@ -212,7 +216,6 @@ in { services.colord.enable = mkDefault true; # for BCC's Color panel. services.gnome.at-spi2-core.enable = mkDefault true; # for BCC's A11y panel. services.accounts-daemon.enable = mkDefault true; # for BCC's Users panel. - services.fprintd.enable = mkDefault true; # for BCC's Users panel. services.udisks2.enable = mkDefault true; # for BCC's Details panel. # For BCC's Online Accounts panel. diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/deepin.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/deepin.nix index 0824d6e30a8a..902e3a9317dd 100644 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/deepin.nix +++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/deepin.nix @@ -66,6 +66,7 @@ in services.upower.enable = mkDefault config.powerManagement.enable; networking.networkmanager.enable = mkDefault true; programs.dconf.enable = mkDefault true; + programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt; fonts.packages = with pkgs; [ noto-fonts ]; xdg.mime.enable = true; diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix index ecb8d1e91bde..33d0a7b52643 100644 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix +++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix @@ -18,7 +18,7 @@ in # determines the default: later modules (if enabled) are preferred. # E.g., if Plasma 5 is enabled, it supersedes xterm. imports = [ - ./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ./plasma6.nix ./lumina.nix + ./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ../../desktop-managers/plasma6.nix ./lumina.nix ./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix ./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix ./cinnamon.nix ./budgie.nix ./deepin.nix diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/lxqt.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/lxqt.nix index 50ad72dc7388..3d02deba6fc7 100644 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/lxqt.nix +++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/lxqt.nix @@ -62,6 +62,8 @@ in # Link some extra directories in /run/current-system/software/share environment.pathsToLink = [ "/share" ]; + programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt; + # virtual file systems support for PCManFM-QT services.gvfs.enable = true; diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix index f535a1d298b9..957eac7848e7 100644 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix +++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix @@ -20,6 +20,22 @@ in }; debug = mkEnableOption (lib.mdDoc "mate-session debug messages"); + + extraPanelApplets = mkOption { + default = [ ]; + example = literalExpression "with pkgs.mate; [ mate-applets ]"; + type = types.listOf types.package; + description = lib.mdDoc "Extra applets to add to mate-panel."; + }; + + extraCajaExtensions = mkOption { + default = [ ]; + example = lib.literalExpression "with pkgs.mate; [ caja-extensions ]"; + type = types.listOf types.package; + description = lib.mdDoc "Extra extensions to add to caja."; + }; + + enableWaylandSession = mkEnableOption (lib.mdDoc "MATE Wayland session"); }; environment.mate.excludePackages = mkOption { @@ -31,55 +47,63 @@ in }; - config = mkIf cfg.enable { - - services.xserver.displayManager.sessionPackages = [ - pkgs.mate.mate-session-manager - ]; - - # Let caja find extensions - environment.sessionVariables.CAJA_EXTENSION_DIRS = [ "${config.system.path}/lib/caja/extensions-2.0" ]; - - # Let mate-panel find applets - environment.sessionVariables."MATE_PANEL_APPLETS_DIR" = "${config.system.path}/share/mate-panel/applets"; - environment.sessionVariables."MATE_PANEL_EXTRA_MODULES" = "${config.system.path}/lib/mate-panel/applets"; - - # Debugging - environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1"; - - environment.systemPackages = utils.removePackagesByName - (pkgs.mate.basePackages ++ - pkgs.mate.extraPackages ++ - [ - pkgs.desktop-file-utils - pkgs.glib - pkgs.gtk3.out - pkgs.shared-mime-info - pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ - pkgs.yelp # for 'Contents' in 'Help' menus - ]) - config.environment.mate.excludePackages; - - programs.dconf.enable = true; - # Shell integration for VTE terminals - programs.bash.vteIntegration = mkDefault true; - programs.zsh.vteIntegration = mkDefault true; - - # Mate uses this for printing - programs.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); - - services.gnome.at-spi2-core.enable = true; - services.gnome.gnome-keyring.enable = true; - services.udev.packages = [ pkgs.mate.mate-settings-daemon ]; - services.gvfs.enable = true; - services.upower.enable = config.powerManagement.enable; - services.xserver.libinput.enable = mkDefault true; - - security.pam.services.mate-screensaver.unixAuth = true; - - xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ]; - - environment.pathsToLink = [ "/share" ]; - }; - + config = mkMerge [ + (mkIf (cfg.enable || cfg.enableWaylandSession) { + services.xserver.displayManager.sessionPackages = [ + pkgs.mate.mate-session-manager + ]; + + # Debugging + environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1"; + + environment.systemPackages = utils.removePackagesByName + (pkgs.mate.basePackages ++ + pkgs.mate.extraPackages ++ + [ + (pkgs.mate.caja-with-extensions.override { + extensions = cfg.extraCajaExtensions; + }) + (pkgs.mate.mate-panel-with-applets.override { + applets = cfg.extraPanelApplets; + }) + pkgs.desktop-file-utils + pkgs.glib + pkgs.gtk3.out + pkgs.shared-mime-info + pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ + pkgs.yelp # for 'Contents' in 'Help' menus + ]) + config.environment.mate.excludePackages; + + programs.dconf.enable = true; + # Shell integration for VTE terminals + programs.bash.vteIntegration = mkDefault true; + programs.zsh.vteIntegration = mkDefault true; + + # Mate uses this for printing + programs.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); + + services.gnome.at-spi2-core.enable = true; + services.gnome.gnome-keyring.enable = true; + services.udev.packages = [ pkgs.mate.mate-settings-daemon ]; + services.gvfs.enable = true; + services.upower.enable = config.powerManagement.enable; + services.xserver.libinput.enable = mkDefault true; + + security.pam.services.mate-screensaver.unixAuth = true; + + xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ]; + + environment.pathsToLink = [ "/share" ]; + }) + (mkIf cfg.enableWaylandSession { + programs.wayfire.enable = true; + programs.wayfire.plugins = [ pkgs.wayfirePlugins.firedecor ]; + + environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${pkgs.mate.mate-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas"; + + environment.systemPackages = [ pkgs.mate.mate-wayland-session ]; + services.xserver.displayManager.sessionPackages = [ pkgs.mate.mate-wayland-session ]; + }) + ]; } diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix index 7645b3070369..f516a29fb5db 100644 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -336,6 +336,7 @@ in serif = [ "Noto Serif" ]; }; + programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt; programs.ssh.askPassword = mkDefault "${pkgs.plasma5Packages.ksshaskpass.out}/bin/ksshaskpass"; # Enable helpful DBus services. diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix deleted file mode 100644 index 1237261e0af7..000000000000 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix +++ /dev/null @@ -1,291 +0,0 @@ -{ - config, - lib, - pkgs, - utils, - ... -}: let - xcfg = config.services.xserver; - cfg = xcfg.desktopManager.plasma6; - - inherit (pkgs) kdePackages; - inherit (lib) literalExpression mkDefault mkIf mkOption mkPackageOptionMD types; - - activationScript = '' - # will be rebuilt automatically - rm -fv $HOME/.cache/ksycoca* - ''; -in { - options = { - services.xserver.desktopManager.plasma6 = { - enable = mkOption { - type = types.bool; - default = false; - description = lib.mdDoc "Enable the Plasma 6 (KDE 6) desktop environment."; - }; - - enableQt5Integration = mkOption { - type = types.bool; - default = true; - description = lib.mdDoc "Enable Qt 5 integration (theming, etc). Disable for a pure Qt 6 system."; - }; - - notoPackage = mkPackageOptionMD pkgs "Noto fonts - used for UI by default" { - default = ["noto-fonts"]; - example = "noto-fonts-lgc-plus"; - }; - }; - - environment.plasma6.excludePackages = mkOption { - description = lib.mdDoc "List of default packages to exclude from the configuration"; - type = types.listOf types.package; - default = []; - example = literalExpression "[ pkgs.kdePackages.elisa ]"; - }; - }; - - config = mkIf cfg.enable { - assertions = [ - { - assertion = cfg.enable -> !config.services.xserver.desktopManager.plasma5.enable; - message = "Cannot enable plasma5 and plasma6 at the same time!"; - } - ]; - - qt.enable = true; - environment.systemPackages = with kdePackages; let - requiredPackages = [ - # Hack? To make everything run on Wayland - qtwayland - # Needed to render SVG icons - qtsvg - - # Frameworks with globally loadable bits - frameworkintegration # provides Qt plugin - kauth # provides helper service - kcoreaddons # provides extra mime type info - kded # provides helper service - kfilemetadata # provides Qt plugins - kguiaddons # provides geo URL handlers - kiconthemes # provides Qt plugins - kimageformats # provides Qt plugins - kio # provides helper service + a bunch of other stuff - kpackage # provides kpackagetool tool - kservice # provides kbuildsycoca6 tool - kwallet # provides helper service - kwallet-pam # provides helper service - kwalletmanager # provides KCMs and stuff - plasma-activities # provides plasma-activities-cli tool - solid # provides solid-hardware6 tool - phonon-vlc # provides Phonon plugin - - # Core Plasma parts - kwin - pkgs.xwayland - - kscreen - libkscreen - - kscreenlocker - - kactivitymanagerd - kde-cli-tools - kglobalacceld - kwrited # wall message proxy, not to be confused with kwrite - - milou - polkit-kde-agent-1 - - plasma-desktop - plasma-workspace - - # Crash handler - drkonqi - - # Application integration - libplasma # provides Kirigami platform theme - plasma-integration # provides Qt platform theme - kde-gtk-config - - # Artwork + themes - breeze - breeze-icons - breeze-gtk - ocean-sound-theme - plasma-workspace-wallpapers - pkgs.hicolor-icon-theme # fallback icons - qqc2-breeze-style - qqc2-desktop-style - - # misc Plasma extras - kdeplasma-addons - - pkgs.xdg-user-dirs # recommended upstream - - # Plasma utilities - kmenuedit - - kinfocenter - plasma-systemmonitor - ksystemstats - libksysguard - - spectacle - systemsettings - kcmutils - - # Gear - baloo - dolphin - dolphin-plugins - ffmpegthumbs - kdegraphics-thumbnailers - kde-inotify-survey - kio-admin - kio-extras - kio-fuse - ]; - optionalPackages = [ - plasma-browser-integration - konsole - (lib.getBin qttools) # Expose qdbus in PATH - - ark - elisa - gwenview - okular - kate - khelpcenter - print-manager - ]; - in - requiredPackages - ++ utils.removePackagesByName optionalPackages config.environment.plasma6.excludePackages - ++ lib.optionals config.services.xserver.desktopManager.plasma6.enableQt5Integration [ - breeze.qt5 - plasma-integration.qt5 - pkgs.plasma5Packages.kwayland-integration - kio-extras-kf5 - ] - # Optional hardware support features - ++ lib.optionals config.hardware.bluetooth.enable [bluedevil bluez-qt pkgs.openobex pkgs.obexftp] - ++ lib.optional config.networking.networkmanager.enable plasma-nm - ++ lib.optional config.hardware.pulseaudio.enable plasma-pa - ++ lib.optional config.services.pipewire.pulse.enable plasma-pa - ++ lib.optional config.powerManagement.enable powerdevil - ++ lib.optional config.services.colord.enable colord-kde - ++ lib.optional config.services.hardware.bolt.enable plasma-thunderbolt - ++ lib.optionals config.services.samba.enable [kdenetwork-filesharing pkgs.samba] - ++ lib.optional config.services.xserver.wacom.enable wacomtablet - ++ lib.optional config.services.flatpak.enable flatpak-kcm; - - environment.pathsToLink = [ - # FIXME: modules should link subdirs of `/share` rather than relying on this - "/share" - "/libexec" # for drkonqi - ]; - - environment.etc."X11/xkb".source = xcfg.xkb.dir; - - # Add ~/.config/kdedefaults to XDG_CONFIG_DIRS for shells, since Plasma sets that. - # FIXME: maybe we should append to XDG_CONFIG_DIRS in /etc/set-environment instead? - environment.sessionVariables.XDG_CONFIG_DIRS = ["$HOME/.config/kdedefaults"]; - - # Needed for things that depend on other store.kde.org packages to install correctly, - # notably Plasma look-and-feel packages (a.k.a. Global Themes) - # - # FIXME: this is annoyingly impure and should really be fixed at source level somehow, - # but kpackage is a library so we can't just wrap the one thing invoking it and be done. - # This also means things won't work for people not on Plasma, but at least this way it - # works for SOME people. - environment.sessionVariables.KPACKAGE_DEP_RESOLVERS_PATH = "${kdePackages.frameworkintegration.out}/libexec/kf6/kpackagehandlers"; - - # Enable GTK applications to load SVG icons - services.xserver.gdk-pixbuf.modulePackages = [pkgs.librsvg]; - - fonts.packages = [cfg.notoPackage pkgs.hack-font]; - fonts.fontconfig.defaultFonts = { - monospace = ["Hack" "Noto Sans Mono"]; - sansSerif = ["Noto Sans"]; - serif = ["Noto Serif"]; - }; - - programs.ssh.askPassword = mkDefault "${kdePackages.ksshaskpass.out}/bin/ksshaskpass"; - - # Enable helpful DBus services. - services.accounts-daemon.enable = true; - # when changing an account picture the accounts-daemon reads a temporary file containing the image which systemsettings5 may place under /tmp - systemd.services.accounts-daemon.serviceConfig.PrivateTmp = false; - - services.power-profiles-daemon.enable = mkDefault true; - services.system-config-printer.enable = mkIf config.services.printing.enable (mkDefault true); - services.udisks2.enable = true; - services.upower.enable = config.powerManagement.enable; - services.xserver.libinput.enable = mkDefault true; - - # Extra UDEV rules used by Solid - services.udev.packages = [ - # libmtp has "bin", "dev", "out" outputs. UDEV rules file is in "out". - pkgs.libmtp.out - pkgs.media-player-info - ]; - - # Set up Dr. Konqi as crash handler - systemd.packages = [kdePackages.drkonqi]; - systemd.services."drkonqi-coredump-processor@".wantedBy = ["systemd-coredump@.service"]; - - xdg.portal.enable = true; - xdg.portal.extraPortals = [kdePackages.xdg-desktop-portal-kde]; - xdg.portal.configPackages = mkDefault [kdePackages.xdg-desktop-portal-kde]; - services.pipewire.enable = mkDefault true; - - services.xserver.displayManager = { - sessionPackages = [kdePackages.plasma-workspace]; - defaultSession = mkDefault "plasma"; - }; - services.xserver.displayManager.sddm = { - package = kdePackages.sddm; - theme = mkDefault "breeze"; - extraPackages = with kdePackages; [ - breeze-icons - kirigami - plasma5support - qtsvg - qtvirtualkeyboard - ]; - }; - - security.pam.services = { - login.kwallet = { - enable = true; - package = kdePackages.kwallet-pam; - }; - kde.kwallet = { - enable = true; - package = kdePackages.kwallet-pam; - }; - kde-fingerprint = lib.mkIf config.services.fprintd.enable { fprintAuth = true; }; - kde-smartcard = lib.mkIf config.security.pam.p11.enable { p11Auth = true; }; - }; - - programs.dconf.enable = true; - - programs.firefox.nativeMessagingHosts.packages = [kdePackages.plasma-browser-integration]; - - programs.chromium = { - enablePlasmaBrowserIntegration = true; - plasmaBrowserIntegrationPackage = pkgs.kdePackages.plasma-browser-integration; - }; - - programs.kdeconnect.package = kdePackages.kdeconnect-kde; - - # FIXME: ugly hack. See #292632 for details. - system.userActivationScripts.rebuildSycoca = activationScript; - systemd.user.services.nixos-rebuild-sycoca = { - description = "Rebuild KDE system configuration cache"; - wantedBy = [ "graphical-session-pre.target" ]; - serviceConfig.Type = "oneshot"; - script = activationScript; - }; - }; -} diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix index e28486bcc12d..3ba27b201507 100644 --- a/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix +++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix @@ -131,6 +131,7 @@ in xfdesktop ] ++ optional cfg.enableScreensaver xfce4-screensaver) excludePackages; + programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-gtk2; programs.xfconf.enable = true; programs.thunar.enable = true; |