nixos: add session environment guards

This commit is contained in:
2026-04-30 02:53:17 -07:00
parent 9008190a90
commit 90bd377335
4 changed files with 29 additions and 8 deletions

View File

@@ -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
'';
};

View File

@@ -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 = {

View File

@@ -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";
}

View File

@@ -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" ];
};