about summary refs log tree commit diff
path: root/nixpkgs/nixos/modules/services/x11/desktop-managers
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/x11/desktop-managers')
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/budgie.nix9
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/deepin.nix1
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix2
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/lxqt.nix2
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/mate.nix126
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix1
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix291
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/xfce.nix1
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;