nixos: add session environment guards
This commit is contained in:
@@ -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
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
11
nixos/session-variables.nix
Normal file
11
nixos/session-variables.nix
Normal 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";
|
||||
}
|
||||
@@ -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" ];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user