# <str<vault>> representing password for Linux root user account of VPS
password: "{{ lookup('password', './.tmp/' + inventory_hostname + '.pass', seed=inventory_hostname, encrypt='sha512_crypt') }}"
# <str<vault>> representing API token for VPS cloud service
token: ~
# <str<enum>> representing region options from or for given VPS cloud service
origin: us-east
# <str<enum>> representing Linux distro or OS image available in VPS service to be used for VPS 
operating_system: linode/debian13
# <list[<str>]> list of control node or local SSH key basenames for root user
ssh_keys:
  - ed25519@staging
  - ecdsa@staging
# <list<dict>> list of administrative users (in Linux, users that can use "sudo")
admins:
  - username: senpai # <str> arbitrary valid user name
    services: ~ # <list[<str>]> if linux system user, assocated servce
    # <list[<str>]> list of control node or local SSH key basenames for this user
    ssh_keys:
      # @TODO add secondary and teriary Yubikeys
      - ed25519@staging
      - ecdsa@staging
    # <str<vault?>> hashed (and maybe salted) password
    password: "{{ lookup('password', './.tmp/senpai@' + inventory_hostname + '.pass', seed='senpai@' + inventory_hostname, encrypt='sha512_crypt') }}"
# <dict[<str>:<dict>]> package groups
pkgs:
  # <dict[<str>:<dict>]> representing package groups installed by package manager via repositories
  mngr:
    # <list[<dict>]> representing system-level or essential packages
    core:
      - name: "zfsutils-linux"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "zfs-dkms"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: cron
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "cron-daemon-common"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "python3-certbot"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "python3-certbot-dns-standalone"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: certbot
      - name: sudo
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "xz-utils"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: wireguard
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: wireguard
      - name: "wireguard-tools"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: vagrant
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "vagrant-libvirt"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "qemu-system"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "qemu-kvm"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "bridge-utils"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: libvirt
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "libvirt-clients"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "libvirt-daemon-system"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "virt-install"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "virt-viewer"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: gcc
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "kitty-terminfo"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "git-doc"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "git-delta"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: fastfetch
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: git
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: git
      - name: fail2ban
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: glow
        uri: ~
        sigkey: "https://repo.charm.sh/apt/gpg.key"
        sources: "https://repo.charm.sh/apt/"
        types: deb
        suites: "*"
        comps: "*"
        handler: default
      - name: whois
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      # @TODO make sure to create handler inclusion of tasks in file under/at `tasks/contingent/pkg` for below
      - name: iptables
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: gnupg
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "gnupg-agent"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: tmux
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "cpu-checker"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: libpam-doc
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: headscale
        uri: "https://github.com/juanfont/headscale/releases/download/v0.28.0/headscale_0.28.0_linux_amd64.deb"
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: headscale
    userspace:
      - name: "libpam-google-authenticator"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: "libpam-google-authenticator"
      - name: vim
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: vim
      - name: "vim-vimwiki"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "vim-doc"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: neovim
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: neovim
      - name: distrobox
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: smartmontools
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: python3.13
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "python3-venv"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "python3-pip"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: golang
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "golang-doc"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
  # <dict[<str>:<dict>]> representing package groups installed by shell scripts
  script:
    # <list[<dict>]> representing user-level or supplemental shell script installations
    userspace:
      - name: radicle
        src: "https://radicle.dev/install"
        pre: ~
        post: ~
        handler: radicle
      - name: rustup
        src: "https://sh.rustup.rs"
        pre: ~
        post: ~
        handler: rustup
      - name: uv
        src: "https://astral.sh/uv/install.sh"
        pre: ~
        post: ~
        handler: uv
  # <dict[<str>:<dict>]> representing package groups installed from source archives
  archive:
    # <list[<dict>]> representing user-level or supplemental source archives
    userspace:
      - name: difftastic
        src: "https://github.com/Wilfred/difftastic/releases/download/0.69.0/difft-x86_64-unknown-linux-gnu.tar.gz"
        deploy: ~
        pre: ~
        post: ~
        handler: difftastic
  # <dict[<str>:<dict>]> representing package groups installed from source git repositories
  git_repos:
    # userspace:
    #   - name: quartz
    #     src: "https://github.com/jackyzha0/quartz.git"
    #     branch: v5.0.0
    #     deploy: ~
    #     pre: ~
    #     post: ~
    #     handler: default
  binaries:
    core:
      - name: dsnet
        src: "https://github.com/naggie/dsnet/releases/download/v0.8.1/dsnet-linux-amd64"
        handler: dsnet
