Option: added active desktop option which allows kde to be primary desktop environment.

This commit is contained in:
Jurn Wubben 2025-07-09 19:48:10 +02:00
parent d233e18593
commit e2af7ce527
17 changed files with 82 additions and 60 deletions

View file

@ -1,6 +1,6 @@
{ {osConfig, ...}: {
services.udiskie = { services.udiskie = {
enable = true; inherit (osConfig.services.udisks2) enable;
tray = "never"; #NOTE: Don't have a bar (yet?) tray = "never"; #NOTE: Don't have a bar (yet?)
}; };
} }

View file

@ -6,7 +6,6 @@
./other.nix ./other.nix
./repl ./repl
./starship.nix ./starship.nix
./transfer.nix
./yazi.nix ./yazi.nix
./zoxide.nix ./zoxide.nix
]; ];

View file

@ -5,7 +5,7 @@
... ...
}: let }: let
inherit (lib) mkIf; inherit (lib) mkIf;
cfg = osConfig.niksos.desktop.hyprland; cfg = osConfig.programs.hyprland.enable;
in { in {
imports = [ imports = [
./fuzzel.nix ./fuzzel.nix

View file

@ -5,7 +5,7 @@
... ...
}: { }: {
programs.fuzzel = { programs.fuzzel = {
enable = osConfig.niksos.desktop.hyprland; inherit (osConfig.programs.hyprland) enable;
settings.main = { settings.main = {
launch-prefix = "${lib.getExe pkgs.uwsm} app --"; launch-prefix = "${lib.getExe pkgs.uwsm} app --";
}; };

View file

@ -15,7 +15,7 @@ in {
]; ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = osConfig.niksos.desktop.hyprland; inherit (osConfig.programs.hyprland) enable;
settings = { settings = {
env = [ env = [
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_WAYLAND_DISABLE_WINDOWDECORATION,1"

View file

@ -6,7 +6,7 @@
inherit (config.lib.stylix.colors) base05; inherit (config.lib.stylix.colors) base05;
in { in {
programs.hyprlock = { programs.hyprlock = {
enable = osConfig.niksos.desktop.hyprland; inherit (osConfig.programs.hyprland) enable;
settings = { settings = {
general = { general = {

View file

@ -1,6 +1,8 @@
{osConfig, ...}: { {osConfig, ...}: let
inherit (osConfig.niksos) desktop;
in {
services.mako = { services.mako = {
enable = osConfig.niksos.desktop.hyprland; inherit (osConfig.programs.hyprland) enable;
settings.defaultTimeout = 5000; settings.defaultTimeout = 5000;
}; };
} }

View file

@ -21,8 +21,20 @@ in {
enable = mkEO "enable desktop related programs (+home manager)."; enable = mkEO "enable desktop related programs (+home manager).";
apps = mkEO "extra bloat."; apps = mkEO "extra bloat.";
games = mkEO "gaming related programs"; games = mkEO "gaming related programs";
hyprland = mkEO "enable hyprland related programs."; hyprland = mkEO "enable hyprland related programs.";
kde = mkEO "enable kde specialisation."; kde = mkEO "enable kde specialisation.";
activeDesktop = lib.mkOption {
type = lib.types.enum ["hyprland" "kde"];
description = "What desktop should be the default, other enabled desktops will be specialized.";
default =
if cfg.hyprland
then "hyprland"
else if cfg.kde
then "kde"
else "hyprland";
example = "hyprland";
};
}; };
config.assertions = mkIf (cfg.hyprland config.assertions = mkIf (cfg.hyprland

View file

@ -5,21 +5,9 @@
}: { }: {
config = lib.mkIf config.niksos.desktop.enable { config = lib.mkIf config.niksos.desktop.enable {
# greetd display manager # greetd display manager
services.greetd = let services.greetd = {
session = {
command = lib.mkDefault "${lib.getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
user = "jsw";
};
in {
enable = true; enable = true;
settings.terminal.vt = 1;
settings = {
terminal.vt = 1;
default_session = session;
initial_session = session;
};
}; };
programs.uwsm.enable = config.niksos.desktop.hyprland;
}; };
} }

View file

@ -1,16 +1,37 @@
{ {
config,
pkgs,
lib, lib,
pkgs,
config,
... ...
}: let }: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland; inherit (config.niksos) desktop;
cfg = desktop.enable && desktop.hyprland;
active = cfg && desktop.activeDesktop == "hyprland";
ifActive = x: lib.mkIf active x;
in { in {
config = lib.mkIf cfg { specialisation.de.configuration =
programs.hyprland = { lib.mkIf cfg
&& !active {
niksos.desktop.activeDesktop = lib.mkForce "hyprland";
};
programs = ifActive {
hyprland = {
enable = true; enable = true;
withUWSM = true; withUWSM = true;
}; };
environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland. uwsm.enable = true;
}; };
services.greetd.settings = let
session = {
command = "${lib.getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
user = "jsw";
};
in
ifActive {
default_session = session;
initial_session = session;
};
environment.sessionVariables.NIXOS_OZONE_WL = ifActive "1"; # Makes electron apps use wayland.
} }

View file

@ -4,25 +4,28 @@
config, config,
... ...
}: let }: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.kde; inherit (config.niksos) desktop;
cfg = desktop.enable && desktop.kde;
active = cfg && desktop.activeDesktop == "kde";
ifActive = x: lib.mkIf active x;
in { in {
specialisation.de.configuration = lib.mkIf cfg { specialisation.de.configuration =
niksos.desktop.hyprland = lib.mkForce false; lib.mkIf cfg
services = { && !active {
greetd = let niksos.desktop.activeDesktop = lib.mkForce "kde";
session.command = "${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland";
in {
enable = true;
settings = {
terminal.vt = 1;
default_session = session;
initial_session = session;
};
};
desktopManager.plasma6.enable = true;
}; };
home-manager.users.jsw.stylix.autoEnable = false; services = ifActive {
greetd.settings = let
session.command = "${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland";
in {
default_session = session;
initial_session = session;
};
desktopManager.plasma6.enable = true;
};
home-manager.users = ifActive {
jsw.stylix.autoEnable = false;
}; };
} }

View file

@ -3,10 +3,8 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }: {
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland; systemd.user.services.polkit-gnome-authentication-agent-1 = lib.mkIf config.programs.hyprland.enable {
in {
systemd.user.services.polkit-gnome-authentication-agent-1 = lib.mkIf cfg {
description = "polkit-gnome-authentication-agent-1"; description = "polkit-gnome-authentication-agent-1";
wantedBy = ["graphical-session.target"]; wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"]; wants = ["graphical-session.target"];

View file

@ -3,10 +3,8 @@
config, config,
lib, lib,
... ...
}: let }: {
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland; xdg.portal = lib.mkIf config.programs.hyprland.enable {
in {
xdg.portal = lib.mkIf cfg {
enable = true; enable = true;
xdgOpenUsePortal = true; xdgOpenUsePortal = true;
config = { config = {

View file

@ -5,20 +5,21 @@
... ...
}: let }: let
inherit (config.niksos) hardware desktop; inherit (config.niksos) hardware desktop;
inherit (lib) mkIf mkEnableOption; inherit (lib) mkIf;
uwsm = lib.getExe pkgs.uwsm; uwsm = lib.getExe pkgs.uwsm;
foot = lib.getExe pkgs.foot; foot = lib.getExe pkgs.foot;
hypr = config.programs.hyprland.enable;
in { in {
config = mkIf hardware.fingerprint { config = mkIf hardware.fingerprint {
services = { services = {
fprintd.enable = true; fprintd.enable = true;
logind.extraConfig = mkIf desktop.hyprland '' logind.extraConfig = mkIf hypr ''
# dont shutdown when power button is short-pressed # dont shutdown when power button is short-pressed
HandlePowerKey=ignore HandlePowerKey=ignore
''; '';
}; };
home-manager.users.jsw.wayland.windowManager.hyprland.settings = mkIf desktop.hyprland { home-manager.users.jsw.wayland.windowManager.hyprland.settings = mkIf hypr {
bind = [ bind = [
", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" ", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'"
]; ];

View file

@ -4,7 +4,7 @@
lib, lib,
... ...
}: let }: let
inherit (lib) optionals mkEnableOption mkDefault; inherit (lib) optionals mkDefault;
inherit (config.niksos.hardware) graphics; inherit (config.niksos.hardware) graphics;
inherit (graphics) enable nvidia intel; inherit (graphics) enable nvidia intel;

View file

@ -3,7 +3,7 @@
lib, lib,
... ...
}: { }: {
config.services = lib.mkIf config.niksos.hardware.joycond { services = lib.mkIf config.niksos.hardware.joycond {
usbmuxd.enable = true; usbmuxd.enable = true;
joycond.enable = true; joycond.enable = true;
}; };

View file

@ -17,7 +17,7 @@ in {
power-profiles-daemon.enable = true; power-profiles-daemon.enable = true;
}; };
environment.systemPackages = lib.mkIf niksos.desktop.hyprland [ environment.systemPackages = lib.mkIf config.programs.hyprland.enable [
(pkgs.writeScriptBin "powermode" '' (pkgs.writeScriptBin "powermode" ''
#!/usr/bin/env bash #!/usr/bin/env bash