{
  config,
  lib,
  pkgs,
  namespace,
  ...
}:
with lib;
let
  cfg = config.${namespace}.programs.nwg-dock;
in
{
  imports = [ ./options.nix ];

  config = mkIf cfg.enable {
    home.packages = with pkgs; [ nwg-dock-hyprland ];

    home.file = {
      ".config/nwg-dock-hyprland/config.json".text = ''
        {
          "position": "bottom",
          "anchor": "center",
          "margin": 12,
          "icon_size": 48,
          "icon_size_hover": 64,
          "spacing": 6,
          "padding": 8,
          "autohide": false,
          "autohide_timeout": 0.3,
          "exclusive": true,
          "layer": "top",
          "height": 72,
          "background_alpha": 0.55,
          "rounded_corners": 16,
          "show_labels": false,
          "show_running": true,
          "show_pinned": true,
          "pinned": [
            "firefox.desktop",
            "org.wezfurlong.wezterm.desktop",
            "codium.desktop",
            "org.gnome.Nautilus.desktop"
          ]
        }
      '';

      ".config/nwg-dock-hyprland/style.css".text = ''
        window {
          background: #36364f;
          border-radius: 10px;
          border-style: none;
          border-width: 1px;
          border-color: rgba(156, 142, 122, 0.7)
        }

        #box {
          /* Define attributes of the box surrounding icons here */
          padding: 10px
        }

        #active {
          /* This is to underline the button representing the currently active window */
          border-bottom: solid 1px;
          border-color: rgba(255, 255, 255, 0.3)
        }

        button, image {
          background: none;
          border-style: none;
          box-shadow: none;
          color: #999
        }

        button {
          padding: 4px;
          margin-left: 4px;
          margin-right: 4px;
          color: #eee;
          font-size: 12px
        }

        button:hover {
          background-color: rgba(255, 255, 255, 0.15);
          border-radius: 2px;
        }

        button:focus {
          box-shadow: none
        }
      '';

      ".config/nwg-dock-hyprland/drawer.css".text = ''
        window {
          background: ${config.lib.stylix.colors.base00};
          border-radius: 10px;
          border-style: none;
          border-width: 1px;
          border-color: ${config.lib.stylix.colors.base0E}b0
        }

        #box {
          /* Define attributes of the box surrounding icons here */
          padding: 10px
        }

        active {
          /* This is to underline the button representing the currently active window */
          border-bottom: solid 1px;
          border-color: ${config.lib.stylix.colors.base0B}1a
        }

        button, image {
          background: none;
          border-style: none;
          box-shadow: none;
          color: ${config.lib.stylix.colors.base0F}
        }

        button {
          padding: 4px;
          margin-left: 4px;
          margin-right: 4px;
          color: #eee;
          font-size: 12px
        }

        button:hover {
          background-color: ${config.lib.stylix.colors.base00}1a;
          border-radius: 2px;
        }

        button:focus {
          box-shadow: none
        }
      '';
    };
  };
}
