nixos: add session environment guards
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
nixos,
|
nixos,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
session = import ./session-variables.nix;
|
||||||
mimeMap = desktopId: mimeTypes: lib.genAttrs mimeTypes (_: [desktopId]);
|
mimeMap = desktopId: mimeTypes: lib.genAttrs mimeTypes (_: [desktopId]);
|
||||||
browser = "google-chrome.desktop";
|
browser = "google-chrome.desktop";
|
||||||
imageViewer = "org.kde.gwenview.desktop";
|
imageViewer = "org.kde.gwenview.desktop";
|
||||||
@@ -293,7 +294,7 @@ in {
|
|||||||
preferStatusNotifierItems = true;
|
preferStatusNotifierItems = true;
|
||||||
importedVariables = ["GDK_PIXBUF_ICON_LOADER"];
|
importedVariables = ["GDK_PIXBUF_ICON_LOADER"];
|
||||||
profileExtra = ''
|
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 = {
|
home-manager.users.imalison = {
|
||||||
imports = [
|
imports = [
|
||||||
./emacs.nix
|
./emacs.nix
|
||||||
@@ -16,6 +20,7 @@
|
|||||||
systemd.user.targets.hyprland-session = {
|
systemd.user.targets.hyprland-session = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Hyprland session (custom)";
|
Description = "Hyprland session (custom)";
|
||||||
|
ConditionEnvironment = session.hyprland;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -139,8 +144,9 @@
|
|||||||
in {
|
in {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Hyprpaper (managed by home-manager)";
|
Description = "Hyprpaper (managed by home-manager)";
|
||||||
PartOf = ["hyprland-session.target"];
|
ConditionEnvironment = session.hyprland;
|
||||||
After = ["hyprland-session.target"];
|
PartOf = [ "hyprland-session.target" ];
|
||||||
|
After = [ "hyprland-session.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
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, ... }:
|
{ config, pkgs, inputs, lib, makeEnable, ... }:
|
||||||
|
let
|
||||||
|
session = import ./session-variables.nix;
|
||||||
|
in
|
||||||
makeEnable config "myModules.xmonad" true {
|
makeEnable config "myModules.xmonad" true {
|
||||||
myModules.taffybar.enable = lib.mkDefault (config.myModules.desktop.shellUi == "taffybar");
|
myModules.taffybar.enable = lib.mkDefault (config.myModules.desktop.shellUi == "taffybar");
|
||||||
|
|
||||||
@@ -36,7 +39,7 @@ makeEnable config "myModules.xmonad" true {
|
|||||||
home-manager.sharedModules = [
|
home-manager.sharedModules = [
|
||||||
{
|
{
|
||||||
services.autorandr.enable = true;
|
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 = {
|
services.random-background = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -45,10 +48,10 @@ makeEnable config "myModules.xmonad" true {
|
|||||||
imageDirectory = "/var/lib/syncthing/sync/Wallpaper/use";
|
imageDirectory = "/var/lib/syncthing/sync/Wallpaper/use";
|
||||||
};
|
};
|
||||||
# This service uses feh (X11), so don't run it in Wayland sessions.
|
# 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;
|
services.xsettingsd.enable = true;
|
||||||
systemd.user.services.xsettingsd.Unit.ConditionEnvironment = "IMALISON_SESSION_TYPE=x11";
|
systemd.user.services.xsettingsd.Unit.ConditionEnvironment = session.x11;
|
||||||
|
|
||||||
# services.parcellite = {
|
# services.parcellite = {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
@@ -63,7 +66,7 @@ makeEnable config "myModules.xmonad" true {
|
|||||||
systemd.user.services.picom = {
|
systemd.user.services.picom = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Picom X11 compositor";
|
Description = "Picom X11 compositor";
|
||||||
ConditionEnvironment = "IMALISON_SESSION_TYPE=x11";
|
ConditionEnvironment = session.x11;
|
||||||
After = [ "graphical-session.target" ];
|
After = [ "graphical-session.target" ];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [ "graphical-session.target" ];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user