nixos/programs/sessiond: add session example

This commit is contained in:
Gabriel Arazas 2024-01-25 12:17:47 +08:00
parent 537f4910f5
commit 952fde19cf
No known key found for this signature in database
GPG Key ID: ADE0C41DAB221FCC

View File

@ -89,6 +89,84 @@ in
}; };
modules = [ ./submodules/session-type.nix ]; modules = [ ./submodules/session-type.nix ];
}); });
example = lib.literalExpression ''
{
"com.example.Beepeedobolyuessemm" = {
description = "Simple desktop environment featuring bspwm";
desktopNames = [ "Beepeedobolyuessemm" ];
settings = {
Idle = {
Inputs = [ "motion" "button-press" "key-press" ];
IdleSec = 120;
};
Lock = {
OnIdle = true;
OnSleep = true;
MuteAudio = true;
};
Hook = [
{
Trigger = "Idle";
ExecStart = "''${lib.getExe' pkgs.betterlockscreen "betterlockscreen"} --off 240";
}
];
};
components = {
window-manager = {
description = "Window manager";
serviceUnit = {
# This is required for sessiond to recognize which unit is the
# window manager.
aliases = [ "window-manager.service" ];
script = '''
''${lib.getExe' pkgs.bspwm "bspwm"} -c ''${./config/bspwm/bspwmrc}
''';
serviceConfig = {
ExecStopPost = "''${lib.getExe' sessiondPkg "sessionctl"} stop";
OOMScoreAdjust = -1000;
};
};
targetUnit = {
requires = [ "sessiond-session.target" ];
partOf = [ "sessiond-session.target" ];
wantedBy = [ "sessiond-session.target" ];
};
};
hotkey-daemon = {
description = "Hotkey daemon";
serviceUnit = {
documentation = [ "man:sxhkd(1)" ];
script = '''
''${lib.getExe' pkgs.sxhkd "sxhkd"} -c ''${./config/sxhkd/bindings}
''';
serviceConfig = {
ExecReload = "''${lib.getExe' pkgs.coreutils "kill"} -SIGUSR1 $MAINPID";
ExecStopPost = "''${lib.getExe' sessiondPkg "sessionctl"} stop";
OOMScoreAdjust = -1000;
};
};
targetUnit = {
after = [ "display-manager.service" ];
partOf = [ "sessiond-session.target" ];
};
};
};
};
}
'';
description = '' description = ''
A set of desktop sessions to be configured with sessiond. Each of the A set of desktop sessions to be configured with sessiond. Each of the
attribute name will be used as the identifier of the desktop attribute name will be used as the identifier of the desktop
@ -117,8 +195,8 @@ in
systemd.packages = [ cfg.package ]; systemd.packages = [ cfg.package ];
systemd.user.units = lib.mkMerge sessionSystemdUnits; systemd.user.units = lib.mkMerge sessionSystemdUnits;
# We're disabling the upstream sessiond service since there can be multiple # We're disabling the upstream sessiond service since we have our own set
# sessiond sessions here. # of sessiond sessions here.
systemd.user.services.sessiond.enable = false; systemd.user.services.sessiond.enable = false;
}; };
} }