diff --git a/nixos/home-manager.nix b/nixos/home-manager.nix index c1561691..1579270e 100644 --- a/nixos/home-manager.nix +++ b/nixos/home-manager.nix @@ -5,6 +5,7 @@ nixos, ... }: let + session = import ./session-variables.nix; mimeMap = desktopId: mimeTypes: lib.genAttrs mimeTypes (_: [desktopId]); browser = "google-chrome.desktop"; imageViewer = "org.kde.gwenview.desktop"; @@ -293,7 +294,7 @@ in { preferStatusNotifierItems = true; importedVariables = ["GDK_PIXBUF_ICON_LOADER"]; profileExtra = '' - systemctl --user set-environment IMALISON_SESSION_TYPE=x11 + systemctl --user set-environment ${session.sessionType}=x11 ${session.windowManager}=xmonad ''; }; diff --git a/nixos/imalison.nix b/nixos/imalison.nix index 5f491847..f424bf2f 100644 --- a/nixos/imalison.nix +++ b/nixos/imalison.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ pkgs, ... }: +let + session = import ./session-variables.nix; +in +{ home-manager.users.imalison = { imports = [ ./emacs.nix @@ -16,6 +20,7 @@ systemd.user.targets.hyprland-session = { Unit = { Description = "Hyprland session (custom)"; + ConditionEnvironment = session.hyprland; }; }; @@ -139,8 +144,9 @@ in { Unit = { Description = "Hyprpaper (managed by home-manager)"; - PartOf = ["hyprland-session.target"]; - After = ["hyprland-session.target"]; + ConditionEnvironment = session.hyprland; + PartOf = [ "hyprland-session.target" ]; + After = [ "hyprland-session.target" ]; }; Service = { diff --git a/nixos/session-variables.nix b/nixos/session-variables.nix new file mode 100644 index 00000000..ecc00598 --- /dev/null +++ b/nixos/session-variables.nix @@ -0,0 +1,11 @@ +{ + sessionType = "IMALISON_SESSION_TYPE"; + windowManager = "IMALISON_WINDOW_MANAGER"; + + x11 = "IMALISON_SESSION_TYPE=x11"; + wayland = "IMALISON_SESSION_TYPE=wayland"; + + xmonad = "IMALISON_WINDOW_MANAGER=xmonad"; + hyprland = "IMALISON_WINDOW_MANAGER=hyprland"; + riverXmonad = "IMALISON_WINDOW_MANAGER=river-xmonad"; +} diff --git a/nixos/xmonad.nix b/nixos/xmonad.nix index 99ae1bac..71416291 100644 --- a/nixos/xmonad.nix +++ b/nixos/xmonad.nix @@ -1,4 +1,7 @@ { config, pkgs, inputs, lib, makeEnable, ... }: +let + session = import ./session-variables.nix; +in makeEnable config "myModules.xmonad" true { myModules.taffybar.enable = lib.mkDefault (config.myModules.desktop.shellUi == "taffybar"); @@ -36,7 +39,7 @@ makeEnable config "myModules.xmonad" true { home-manager.sharedModules = [ { services.autorandr.enable = true; - systemd.user.services.autorandr.Unit.ConditionEnvironment = "IMALISON_SESSION_TYPE=x11"; + systemd.user.services.autorandr.Unit.ConditionEnvironment = session.x11; services.random-background = { enable = true; @@ -45,10 +48,10 @@ makeEnable config "myModules.xmonad" true { imageDirectory = "/var/lib/syncthing/sync/Wallpaper/use"; }; # This service uses feh (X11), so don't run it in Wayland sessions. - systemd.user.services.random-background.Unit.ConditionEnvironment = "IMALISON_SESSION_TYPE=x11"; + systemd.user.services.random-background.Unit.ConditionEnvironment = session.x11; services.xsettingsd.enable = true; - systemd.user.services.xsettingsd.Unit.ConditionEnvironment = "IMALISON_SESSION_TYPE=x11"; + systemd.user.services.xsettingsd.Unit.ConditionEnvironment = session.x11; # services.parcellite = { # enable = true; @@ -63,7 +66,7 @@ makeEnable config "myModules.xmonad" true { systemd.user.services.picom = { Unit = { Description = "Picom X11 compositor"; - ConditionEnvironment = "IMALISON_SESSION_TYPE=x11"; + ConditionEnvironment = session.x11; After = [ "graphical-session.target" ]; PartOf = [ "graphical-session.target" ]; };