{
  lib,
  pkgs,
  config,
  lib',
  ...
}: let
  inherit (builtins) toJSON;
  inherit (config.local.systemVars) username;
  inherit (lib') generateGtkColors;
in {
  config = lib.mkIf config.local.modules.hyprland.enable {
    hjem.users.${username} = {
      files = {
        ".config/swaync/config.json".text = toJSON {
          positionX = "right";
          positionY = "top";
          layer = "overlay";
          control-center-layer = "top";
          layer-shell = true;
          cssPriority = "application";
          control-center-margin-top = 0;
          control-center-margin-bottom = 0;
          control-center-margin-right = 0;
          control-center-margin-left = 0;
          notification-2fa-action = true;
          notification-inline-replies = false;
          notification-icon-size = 64;
          notification-body-image-height = 100;
          notification-body-image-width = 200;
        };
        ".config/swaync/style.css".text = (generateGtkColors config.local.style.scheme.palette) + builtins.readFile ./style.css;
      };

      packages = [pkgs.swaynotificationcenter];
    };

    systemd.user.services.swaync = {
      description = "Swaync notification daemon";
      documentation = ["https://github.com/ErikReider/SwayNotificationCenter"];
      after = ["graphical-session.target"];
      partOf = ["graphical-session.target"];
      wantedBy = ["graphical-session.target"];
      serviceConfig = {
        BusName = "org.freedesktop.Notifications";
        ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync";
        Restart = "on-failure";
        Type = "dbus";
      };
    };
  };
}