summaryrefslogtreecommitdiff
path: root/home-modules/desktop/wayland/mako.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-modules/desktop/wayland/mako.nix')
-rw-r--r--home-modules/desktop/wayland/mako.nix47
1 files changed, 40 insertions, 7 deletions
diff --git a/home-modules/desktop/wayland/mako.nix b/home-modules/desktop/wayland/mako.nix
index ddf0a91..99987db 100644
--- a/home-modules/desktop/wayland/mako.nix
+++ b/home-modules/desktop/wayland/mako.nix
@@ -1,16 +1,49 @@
{
+ pkgs,
config,
lib,
...
}:
+let
+ cfg = config.homeprogs.mako;
+in
{
- options.homeprogs.mako.enable = lib.mkEnableOption "Enable Mako notification manager";
- config = lib.mkIf config.homeprogs.mako.enable {
- services.mako = {
- enable = true;
+ options.homeprogs.mako = {
+ enable = lib.mkEnableOption "Enable Mako notification manager";
+ systemdWantedBy = lib.mkOption {
+ description = "SystemD targets where mako should start for.";
+ # TODO: Put a null here, so that we can add a non-persistent default
+ default = [ ];
+ example = [ "hyprland-session.target" ];
+ type = lib.types.listOf lib.types.str;
+ };
+ package = lib.mkOption {
+ description = "mako package to use";
+ default = pkgs.mako;
+ example = pkgs.mako;
+ type = lib.types.package;
};
- xdg.configFile."mako/config".source = ./mako.ini;
-
};
-
+ config = lib.mkIf config.homeprogs.mako.enable ({
+ home.packages = [ pkgs.mako ];
+ xdg.configFile."mako/config" = {
+ onChange = "${pkgs.mako}/bin/makoctl reload || true";
+ source = ./mako.ini;
+ };
+ systemd.user.services.mako = {
+ Install.WantedBy = config.homeprogs.mako.systemdWantedBy;
+ Unit = {
+ Description = "Lightweight Wayland notification daemon";
+ Documentation = "man:mako(1)";
+ After = "graphical-session.target";
+ };
+ Service = {
+ Type = "dbus";
+ BusName = "org.freedesktop.Notifications";
+ ExecCondition = "/bin/sh -c '[ -n \"$WAYLAND_DISPLAY\" ]'";
+ ExecStart = "${cfg.package}/bin/mako";
+ ExecReload = "${cfg.package}/bin/makoctl reload";
+ };
+ };
+ });
}