# @TODO create inventory group variables akin to structure of sukaato group's for homeserver
# <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<enum>> representing Linux distro or OS image to be used for VPS 
# operating_system: "tftp://hikiki.local:69/debian.iso"
operating_system: ~
# <list[<str>]> of control node or local SSH key basenames
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: "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: sudo
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "kitty-terminfo"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: whois
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: smartmontools
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: snapd
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: git
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: git
      - name: "git-delta"
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "git-doc"
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "git-man"
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - 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: pandoc
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: curl
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "build-essential"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: fastfetch
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: gcc
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: dpkg-dev
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: ufw
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: avahi-daemon
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: avahi-utils
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: libpam-u2f
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: pamu2fcfg
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: pcscd
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: tftpd-hpa
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: gocryptfs
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: cryfs
        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: gnupg
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "gnupg-agent"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: minidlna
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
    userspace:
      - name: aria2
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: aria
      - 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: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: neovim
      - name: sqlite3
        uri: ~
        sources: ~
        sigkey: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: podman
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: podman
      - name: passt
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "podman-compose"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: distrobox
        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: "python3-doc"
        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
      - name: hugo
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "yt-dlp"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "syncthing-discosrv"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "syncthing-relaysrv"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: burp
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: rsync
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: rclone
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: proftpd
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: reprepro
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: erlang
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "erlang-hex"
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: erlang-doc
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: elixir
        uri: ~
        sigkey: ~
        sources: ~
        types: ~
        suites: ~
        comps: ~
        handler: default
      - name: "libsecret-1-dev"
        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: julia
        src: "https://install.julialang.org"
        pre: ~
        post: ~
        handler: julia
      - 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: surge
        src: "https://github.com/SurgeDM/Surge/releases/download/v0.8.6/Surge_0.8.6_linux_amd64.tar.gz"
        deploy: ~
        pre: ~
        post: ~
        handler: surge
      - name: nvm
        src: "https://nodejs.org/dist/v24.16.0/node-v24.16.0-linux-x64.tar.xz"
        deploy: ~
        pre: ~
        post: ~
        handler: nvm
      - 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:
      # # @TODO use below to build Podman container instead, to deploy with podman-compose
      # # @NOTE https://github.com/papis/papis and https://papis.readthedocs.io/en/latest/
      # - name: papis
      #   src: "https://github.com/papis/papis.git"
      #   branch: main
      #   deploy: ~
      #   pre: ~
      #   post: ~
      #   handler: false
      - name: "skato-compose"
        src: "https://{{ source_code.host }}/{{ source_code.user }}/{{ source_code.repos.compose.name }}.git"
        branch: main
        deploy: ~
        pre: ~
        post: ~
        handler: skato_compose
      - name: skato-cli
        src: "https://{{ source_code.host }}/{{ source_code.user }}/{{ source_code.repos.cli.name }}.git"
        branch: main
        deploy: ~
        pre: ~
        post: ~
        handler: skato_cli
      - name: "skato-blog-theme"
        src: "https://{{ source_code.host }}/{{ source_code.user }}/{{ source_code.repos.blog_theme.name }}.git"
        branch: main
        deploy: ~
        pre: ~
        post: ~
        handler: skato_blog_theme
      - name: "skato-blog"
        src: "https://{{ source_code.host }}/{{ source_code.user }}/{{ source_code.repos.blog.name }}.git"
        branch: main
        deploy: ~
        pre: ~
        post: ~
        handler: skato_blog
      - name: sukaato
        src: "https://{{ source_code.host }}/{{ source_code.user }}/{{ source_code.repos.site.name }}.git"
        branch: main
        deploy: ~
        pre: ~
        post: ~
        handler: sukaato
      - name: quartz
        src: "https://github.com/jackyzha0/quartz.git"
        branch: v5.0.0
        deploy: ~
        pre: ~
        post: ~
        handler: quartz
