[Desktop/(Plasma+SDDM)] migrate SDDM to its own config files + fix SDDM Wayland on Nvidia drivers!

This commit is contained in:
Antoine Viallon 2024-04-05 12:45:39 +02:00
parent 8f2097e07a
commit 916430febd
Signed by: aviallon
GPG key ID: 186FC35EDEB25716
4 changed files with 85 additions and 45 deletions

View file

@ -11,5 +11,6 @@ with lib;
./gnome.nix
./printing.nix
./flatpak.nix
./sddm.nix
];
}

View file

@ -1,13 +1,9 @@
{config, pkgs, lib, sddm-unstable, ...}:
{config, pkgs, nixpkgs-unstable, lib, ...}:
with lib;
let
cfg = config.aviallon.desktop;
optimizeCfg = config.aviallon.optimizations;
_sddm = if cfg.sddm.unstable then pkgs.unstable.sddm else pkgs.sddm;
sddmOptimized = optimizeCfg.optimizePkg { recursive = 0; } _sddm;
sddmPackage = if optimizeCfg.enable then sddmOptimized else _sddm;
in {
options.aviallon.desktop.sddm.unstable = mkEnableOption (mdDoc "bleeding-edge SDDM");
config = mkIf (cfg.enable && (cfg.environment == "plasma")) {
# Enable the Plasma 5 Desktop Environment.
@ -22,10 +18,6 @@ in {
# supportDDC = true;
};
systemd.tmpfiles.rules = mkAfter [
"e ${config.users.users.sddm.home}/.cache/sddm-greeter/qmlcache/ - - - 0"
"x ${config.users.users.sddm.home}/.cache"
];
programs.firefox.enable = true;
# Already brought in by ${nixpkgs}/nixos/modules/services/x11/desktop-managers/plasma5.nix
@ -35,48 +27,15 @@ in {
environment.etc = {
"chromium/native-messaging-hosts/org.kde.plasma.browser_integration.json".source =
"${pkgs.plasma-browser-integration}/etc/chromium/native-messaging-hosts/org.kde.plasma.browser_integration.json";
"${pkgs.libsForQt5.plasma-browser-integration}/etc/chromium/native-messaging-hosts/org.kde.plasma.browser_integration.json";
};
programs.chromium.extensions = [
"cimiefiiaegbelhefglklhhakcgmhkai" # Plasma Browser Integration
];
# Prevents blinking cursor
services.xserver.displayManager.sddm = {
enable = true;
wayland.enable = mkDefault true;
settings = {
Theme = {
CursorTheme = "breeze_cursors";
};
X11 = {
MinimumVT = mkOverride 50 1;
};
};
};
systemd.services.display-manager = {
serviceConfig = {
Restart = mkOverride 50 "on-failure";
TimeoutStopSec = 10;
SendSIGHUP = true;
};
after = [
"getty@tty1.service"
];
conflicts = [
"getty@tty1.service"
];
};
nixpkgs.overlays = [(final: prev: { mySddm = sddmPackage; } )];
services.xserver.displayManager.job = {
execCmd = mkOverride 2 "exec ${sddmPackage}/bin/sddm";
};
aviallon.desktop.sddm.enable = true;
environment.systemPackages = with pkgs; with libsForQt5; [
skanpage
packagekit-qt

25
desktop/sddm-unstable.nix Normal file
View file

@ -0,0 +1,25 @@
{ config, nixpkgs-unstable, lib, pkgs, ... }:
with lib;
let
cfg = config.aviallon.desktop;
in {
disabledModules = [ "services/x11/display-managers/sddm.nix" ];
imports = [
(import (nixpkgs-unstable + /nixos/modules/services/x11/display-managers/sddm.nix))
];
config = {
services.xserver.displayManager.sddm.wayland.compositor = "kwin";
nixpkgs.overlays = [
(final: prev: {
sddm = final.libsForQt5.sddm;
libsForQt5 = prev.libsForQt5.overrideScope (f: p: {
sddm = f.callPackage (import (nixpkgs-unstable + /pkgs/applications/display-managers/sddm)) {};
});
kdePackages = final.libsForQt5;
})
];
};
}

55
desktop/sddm.nix Normal file
View file

@ -0,0 +1,55 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.aviallon.desktop;
sddmCfg = config.services.xserver.displayManager.sddm;
in {
options.aviallon.desktop.sddm.unstable = mkEnableOption "bleeding-edge SDDM";
options.aviallon.desktop.sddm.enable = mkEnableOption "custom SDDM configuration";
imports = [ ./sddm-unstable.nix ];
config = mkIf cfg.sddm.enable {
# Delete SDDM QMLCache
systemd.tmpfiles.rules = mkAfter [
"e ${config.users.users.sddm.home}/.cache/sddm-greeter/qmlcache/ - - - 0"
];
# Prevents blinking cursor
services.xserver.displayManager.sddm = {
enable = true;
wayland.enable = mkDefault true;
settings = {
/*General.GreeterEnvironment = mkIf sddmCfg.wayland.enable (concatStringsSep "," [
"QT_WAYLAND_SHELL_INTEGRATION=layer-shell"
"QT_QPA_PLATFORM=wayland"
]);*/
Theme = {
CursorTheme = "breeze_cursors";
};
/*Wayland = mkIf sddmCfg.wayland.enable {
CompositorCommand = mkOverride 60 "${pkgs.libsForQt5.kwin}/bin/kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1";
};*/
};
};
systemd.services.display-manager = {
serviceConfig = {
Restart = mkOverride 50 "on-failure";
TimeoutStopSec = 10;
SendSIGHUP = true;
};
after = [
"getty@tty1.service"
];
conflicts = [
"getty@tty1.service"
];
};
#services.xserver.displayManager.job = mkIf config.services.xserver.displayManager.sddm.enable {
# execCmd = mkOverride 2 "exec ${sddmPackage}/bin/sddm";
#};
};
}