{ lib, config, pkgs, ... }:
with lib;
let
  util = import ../util pkgs;
  cfg = config.services.niri;
in {
  options.services.niri = {
    enable = mkEnableOption "niri";
    settings = mkOption {
      type = types.attrs;
      default = {};
    };
  };

  config = mkIf cfg.enable {
    home.packages = [ pkgs.niri ];
    xdg.configFile."niri/config.kdl".text = util.generators.toNiriConf cfg.settings;
    systemd.user.services.niri = {
      Unit.Description = "A scrollable-tiling Wayland compositor";
      Install.WantedBy = [ "default.target" ];
      Service.ExecStart = "${pkgs.niri}/bin/niri --session";
    };
  };
}