diff options
author | Sandro Jäckel <sandro.jaeckel@gmail.com> | 2024-02-28 20:27:26 +0100 |
---|---|---|
committer | Sandro Jäckel <sandro.jaeckel@gmail.com> | 2024-03-12 10:49:42 +0100 |
commit | b07cdeb1b34503576ec4aba981740466d19cb8e5 (patch) | |
tree | bd3610b0b34c977a13fdc58492280cae0f7c1a00 /nixos/modules/services/x11 | |
parent | d7c968da6c83ec5df1242ac72973ed2e7f592cfe (diff) | |
download | nixlib-b07cdeb1b34503576ec4aba981740466d19cb8e5.tar nixlib-b07cdeb1b34503576ec4aba981740466d19cb8e5.tar.gz nixlib-b07cdeb1b34503576ec4aba981740466d19cb8e5.tar.bz2 nixlib-b07cdeb1b34503576ec4aba981740466d19cb8e5.tar.lz nixlib-b07cdeb1b34503576ec4aba981740466d19cb8e5.tar.xz nixlib-b07cdeb1b34503576ec4aba981740466d19cb8e5.tar.zst nixlib-b07cdeb1b34503576ec4aba981740466d19cb8e5.zip |
nixos/plasma6: move out of x11
This release focuses on wayland, lets give that justice
Diffstat (limited to 'nixos/modules/services/x11')
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/default.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/plasma6.nix | 292 |
2 files changed, 1 insertions, 293 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix index ecb8d1e91bde..33d0a7b52643 100644 --- a/nixos/modules/services/x11/desktop-managers/default.nix +++ b/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/nixos/modules/services/x11/desktop-managers/plasma6.nix b/nixos/modules/services/x11/desktop-managers/plasma6.nix deleted file mode 100644 index a471a48c9002..000000000000 --- a/nixos/modules/services/x11/desktop-managers/plasma6.nix +++ /dev/null @@ -1,292 +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.optional config.services.samba.enable kdenetwork-filesharing - ++ 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.gnupg.agent.pinentryPackage = pkgs.pinentry-qt; - 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; - }; - }; -} |