From 2f4db1cd5be0afaa0a2ec8fa5da6460f0ebdbc11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20Rumle=20Nordstr=C3=B8m?= <85681203+madsrumlenordstrom@users.noreply.github.com> Date: Fri, 30 May 2025 02:12:57 +0200 Subject: [PATCH] yambar: add systemd service (#5469) --- modules/programs/yambar.nix | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/modules/programs/yambar.nix b/modules/programs/yambar.nix index 902aa41a..48e6a844 100644 --- a/modules/programs/yambar.nix +++ b/modules/programs/yambar.nix @@ -44,6 +44,23 @@ in See {manpage}`yambar(5)` for options. ''; }; + + systemd = { + enable = lib.mkEnableOption "yambar systemd integration"; + + target = lib.mkOption { + type = lib.types.str; + default = config.wayland.systemd.target; + example = "sway-session.target"; + description = '' + The systemd target that will automatically start the yambar service. + + When setting this value to `"sway-session.target"`, + make sure to also enable {option}`wayland.windowManager.sway.systemd.enable`, + otherwise the service may never be started. + ''; + }; + }; }; config = lib.mkIf cfg.enable { @@ -56,5 +73,26 @@ in xdg.configFile."yambar/config.yml" = lib.mkIf (cfg.settings != { }) { source = yamlFormat.generate "config.yml" cfg.settings; }; + + systemd.user.services.yambar = lib.mkIf cfg.systemd.enable { + Unit = { + Description = "Modular status panel for X11 and Wayland"; + Documentation = "man:yambar"; + PartOf = [ cfg.systemd.target ]; + After = [ cfg.systemd.target ]; + }; + + Service = { + ExecStart = "${cfg.package}/bin/yambar"; + ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID"; + Restart = "on-failure"; + RestartSec = 3; + KillMode = "mixed"; + }; + + Install = { + WantedBy = [ cfg.systemd.target ]; + }; + }; }; }