{
  config,
  lib,
  pkgs,
  ...
}:
with lib; let
  cfg = config.custom.programs.bitwarden-menu;
  hm = config.home-manager.users.${config.custom.username};

  walker = getExe hm.programs.walker.package;
in {
  options.custom.programs.bitwarden-menu = {
    enable = mkOption {default = false;};
  };

  config = {
    # https://github.com/firecat53/bitwarden-menu
    environment.systemPackages = with pkgs; [
      bitwarden-cli
      bitwarden-menu
    ];

    home-manager.sharedModules = mkIf cfg.enable [
      {
        # TODO: Check for official options
        # https://github.com/firecat53/bitwarden-menu/blob/main/docs/configure.md
        xdg.configFile."bwm/config.ini".text = generators.toINI {} {
          dmenu = {
            dmenu_command = "${walker} --dmenu --forceprint";
          };

          dmenu_passphrase = {
            obscure = true;
          };

          vault = {
            server_1 = "https://vault.${config.custom.domain}";
            login_1 = "${config.custom.username}@${config.custom.domain}";
            twofactor_1 = 0;
          };
        };
      }
    ];
  };
}