{ config, lib, pkgs, ...}: let sleep = "${pkgs.coreutils}/bin/sleep"; systemctl = "${pkgs.systemd}/bin/systemctl"; inherit (lib) mkIf mkEnableOption mkForce mkDefault; cfg = config.nixfiles.sessions.plasma; in { # imports = [ # ./desktop-common.nix # ]; options.nixfiles.sessions.plasma = { enable = mkEnableOption "KDE Plasma session"; }; config = mkIf cfg.enable { nixfiles.programs.greetd.enable = lib.mkDefault true; nixfiles.programs.greetd.settings.command = lib.mkDefault [ "${pkgs.kdePackages.plasma-workspace}/libexec/plasma-dbus-run-session-if-needed" "startplasma-wayland" ]; services.xserver.enable = true; services.desktopManager.plasma6.enable = true; services.displayManager.defaultSession = "plasma"; programs.kdeconnect.enable = mkDefault true; nixfiles.meta.wayland = true; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; systemd.user = { services.restart-xdg-desktop-portal-kde = { enable = true; description = "hack to fix xdg-desktop-portal on kde"; wantedBy = [ "graphical-session.target" ]; after = [ "plasma-core.target" "xdg-desktop-portal.service" ]; requisite = [ "plasma-core.target" ]; serviceConfig = { ExecStart = [ "${sleep} 5" "${systemctl} --user restart xdg-desktop-portal.service" ]; Type = "oneshot"; RemainAfterExit = "yes"; }; }; }; environment.systemPackages = with pkgs; [ # this fixes tiny file dialogs for Minecraft kdePackages.kdialog kdePackages.yakuake ]; }; }