nixpkgs/nixos/modules/services/x11/desktop-managers/none.nix
oxalica 45ba086ea5 nixos/desktop-manager/none: add option to run XDG autostart files
`fcitx5` and `service.earlyoom` rely on use XDG autostart files to start.
But for X session with only window manager and no desktop manager
(`none` is used), no one can start them.

This options is added to run these autostart files for sessions without
desktop manager to make other services just work.
2022-04-18 01:13:59 +08:00

47 lines
1.6 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
runXdgAutostart = config.services.xserver.desktopManager.runXdgAutostartIfNone;
in
{
options = {
services.xserver.desktopManager.runXdgAutostartIfNone = mkOption {
type = types.bool;
default = false;
description = ''
Whether to run XDG autostart files for sessions without a desktop manager
(with only a window manager), these sessions usually don't handle XDG
autostart files by default.
Some services like <option>i18n.inputMethod</option> and
<option>service.earlyoom</option> use XDG autostart files to start.
If this option is not set to <literal>true</literal> and you are using
a window manager without a desktop manager, you need to manually start
them or running <package>dex</package> somewhere.
'';
};
};
config = mkMerge [
{
services.xserver.desktopManager.session = [
{
name = "none";
start = optionalString runXdgAutostart ''
/run/current-system/systemd/bin/systemctl --user start xdg-autostart-if-no-desktop-manager.target
'';
}
];
}
(mkIf runXdgAutostart {
systemd.user.targets.xdg-autostart-if-no-desktop-manager = {
description = "Run XDG autostart files";
# From `plasma-workspace`, `share/systemd/user/plasma-workspace@.target`.
requires = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
before = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
bindsTo = [ "graphical-session.target" ];
};
})
];
}