nixfiles/system/sessions/plasma.nix

59 lines
1.6 KiB
Nix

{
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
];
};
}