Author SHA1 Message Date
Greg Hellings 21cb84ac7a Major update for linode and Nebula
* Consolidate Linode into a single file
* Convert gitea and matrix to using Nebula connections
* Have Linode proxy to Nebula connections instead of Tailscale
* Update Acme to use DNS-01
* Update Flake to pull from branch that supports ACME 5.x client
2026-08-01 14:38:01 -05:00
Greg Hellings 1c52f8a6b9 chore: baseline nixos for proxmox configuration 2026-07-28 22:42:21 -05:00
Greg Hellings d9334a237d chore: first bit of local IP querying 2026-07-28 22:41:01 -05:00
Greg Hellings 93a847c658 chore: get kuma up and running 2026-07-28 22:40:17 -05:00
Greg Hellings b9051d017e chore: add java web start to exodus 2026-07-28 19:50:24 -05:00
Greg Hellings b9dcd227e8 chore: fix wait-forever bug in updater
buildbot/nix-eval Build done. (2 warnings)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-27 07:27:34 -05:00
Greg Hellings 2d816d50e0 chore: update zim pins 2026-07-27 07:19:37 -05:00
Greg Hellings 5f951c6c12 chore: fix zims updater
Zims update script has been slightly mangled since nix-prefetch stopped
working.

Now it is updated to use nix-prefetch-url and no longer pulls from the
Torrent sources. That script exports a regular SHA256 hash and not an
SRI signature, so we now convert that to SRI as a second step in the
pre-fetch pipline

Also adding a cron to run the tool every month on the first, in order to
keep it up to date.
2026-07-26 21:36:46 -05:00
Greg Hellings 42efe476db chore: update framework firmware settings 2026-07-26 21:36:46 -05:00
greg 07e85d35ab Merge pull request 'chore: update flake.lock 2026-07-19' (#29) from auto/update-flake-lock-20260719 into main
buildbot/nix-eval Build done. (2 warnings)
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-builder2 Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-linode Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-jeremiah Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-zeke Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-exodus Build done.
buildbot/nix-build Build done.
Reviewed-on: https://src.thehellings.com/greg/nixos/pulls/29
2026-07-25 20:54:30 +00:00
Greg Hellings b4ab1bde50 chore: cleanup defunct CA infra
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-25 15:49:49 -05:00
Greg Hellings 4e7ca2910a chore: remove compose files that are now unused 2026-07-25 15:48:26 -05:00
Greg Hellings 64a253e9e4 chore: remove proxmoxtemplate entries as well 2026-07-25 15:48:04 -05:00
Greg Hellings e4008a0beb chore: remove icdm-root as well
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-darwin Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux Build done.
2026-07-25 15:45:21 -05:00
Greg Hellings 363098c0a1 chore: remove references to hermes
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-darwin Build done.
2026-07-25 15:43:27 -05:00
Greg Hellings a07068a4fb chore: remove unused attic reference
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-darwin Build done.
2026-07-25 15:39:30 -05:00
Greg Hellings ec53199532 chore: remove attic-client 2026-07-25 15:38:40 -05:00
Greg Hellings 389798c4f0 chore: buildbot over Nebula 2026-07-25 15:38:28 -05:00
Greg Hellings 475fe50d19 Expand Nebula
* Add Nebula to Kubernetes node
* Update k3s nodes to support nebula keepalived
* Move external IPs to a separate structure
2026-07-25 15:18:15 -05:00
Greg Hellings 0d1d846884 chore: update deprecated nushell pipe 2026-07-25 13:49:47 -05:00
klaatuandgreg 1d9921f1ae chore: update flake.lock 2026-07-19
buildbot/nix-eval Build done. (2 warnings)
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-setup-ssh Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-builder2 Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-icdm-root Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-hermes Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-linode Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-jeremiah Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-zeke Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-exodus Build done.
buildbot/nix-build Build done.
2026-07-25 17:06:07 +00:00
Greg Hellings 7388715d30 chore: where possible, use nebula 2026-07-25 12:05:07 -05:00
Greg Hellings b3304c0ef5 chore: migrate to Garage 2026-07-25 11:40:35 -05:00
Greg Hellings e955ea82f3 fix: update hermes secrets
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-21 20:50:07 -05:00
Greg Hellings 067c00330b chore: enable Hermes agent Matrix connection
buildbot/nix-eval Build done.
2026-07-21 20:49:26 -05:00
Greg Hellings 60e2450c66 chore: proxy hermes dashboard
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-hermes Build done.
2026-07-21 20:04:23 -05:00
Greg Hellings 3185a5a375 chore: add tools to Exodus 2026-07-21 19:21:10 -05:00
Greg Hellings 348a1d7301 fix: get Hermes host built
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-hermes Build done.
2026-07-21 19:07:39 -05:00
Greg Hellings 33eda7d2cb chore: add hermes key secret
buildbot/nix-eval Build done.
2026-07-21 18:57:47 -05:00
Greg Hellings 34ca5aec6b chore: add nebluaIps nushell function
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-hermes Build done.
buildbot/nix-build Build done.
2026-07-21 17:17:04 -05:00
Greg Hellings d2f7b85283 chore: bring hermes into nebula 2026-07-21 17:16:37 -05:00
Greg Hellings d12ef9faec chore: rekey to add hermes visibility 2026-07-21 16:15:32 -05:00
Greg Hellings 3e60f73251 chore: initial configuration for Hermes
buildbot/nix-eval Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-darwin Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-hms Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-dockerCompat Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-create_ssl Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-adblock_update Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-gcc-tune Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-inject Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-inject-darwin Build done.
buildbot/nix-build Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-setup-ssh Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-upgrade-pg-cluster Build done.
2026-07-21 16:11:39 -05:00
Greg Hellings bc986f0e51 chore: add hermes
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-21 16:00:52 -05:00
Greg Hellings 214f6a4d2a chore: add bmc IP addresses
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-20 08:50:03 -05:00
Greg Hellings 41d02d19ea chore: forward ssh-agent 2026-07-13 20:04:00 -05:00
Greg Hellings 4f79033b04 chore: add Proxmox CT baseline
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-13 18:18:54 -05:00
Greg Hellings 9b99b2dd8c chore: bump flake pin
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-adblock_update Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-create_ssl Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-darwin Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-hms Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-upgrade-pg-cluster Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-inject Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-dockerCompat Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-setup-ssh Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-gcc-tune Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-linux.pkg-inject-darwin Build done.
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-setup-ssh Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-create_ssl Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-brew Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-phet-phet_fr_all.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-hms Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-adblock_update Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikipedia-wikipedia_en_all_maxi.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-linode Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-jeremiah Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-gcc-tune Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-inject Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-gutenberg-gutenberg_fr_all.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-inject-darwin Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-vfio_startup Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-vfio_shutdown Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-zeke Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-gutenberg-gutenberg_en_all.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-phet-phet_en_all.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikibooks-wikibooks_fr_all_maxi.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-icdm-root Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-jeremiah Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-linode Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-isaiah Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-iso Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-hosea Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-exodus Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-zeke Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-genesis Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-phet-phet_ht_all.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikibooks-wikibooks_en_all_maxi.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikipedia-wikipedia_fr_all_maxi.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-icdm-root Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-dockerCompat Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-upgrade-pg-cluster Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-qemu-hook Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-proxmoxtemplate Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-aacs Build done.
buildbot/nix-build Build done.
2026-07-07 23:29:53 -05:00
Greg Hellings a145f6ca43 feat: use colima on Lithic
buildbot/nix-eval Build done. (10 warnings)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-07 14:16:27 -05:00
Greg Hellings f77f46c4e5 feat: add procps to Darwin baseline 2026-07-07 14:15:59 -05:00
Greg Hellings c2ea5ff472 chore: convert from podman to docker 2026-07-07 14:15:19 -05:00
Greg Hellings 0e972936d3 chore: update macOS settings 2026-07-07 14:15:17 -05:00
Greg Hellings b35004a3ad chore: add ulimit raise to Darwin 2026-07-07 14:14:09 -05:00
Greg Hellings d7e98290c3 chore: add new pve hosts
buildbot/nix-eval Build done. (10 warnings)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-07-07 14:09:05 -05:00
Greg Hellings f5922887bf chore: clean up IP name duplication 2026-07-07 14:08:48 -05:00
Greg Hellings 879230dca7 feat: add nix-index to Exodus 2026-06-26 11:08:43 -05:00
Greg Hellings 1c7e2ff268 feat: rebuild optional targets 2026-06-24 12:49:32 -05:00
Greg Hellings b324ee5352 chore: update bookmarks 2026-06-15 22:43:24 -05:00
Greg Hellings d21cbcb85d feat: podman compat also on mbp
buildbot/nix-eval Build done. (10 warnings)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-06-11 13:13:43 -05:00
Greg Hellings 6a0c87b77d feat: add dockerCompat package from podman
buildbot/nix-eval Build done. (10 warnings)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-06-11 09:20:19 -05:00
Greg Hellings db5ef17dba chore: bump flake version
buildbot/nix-eval Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-proxmoxtemplate Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-genesis Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-icdm-root Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-hosea Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-06-08 11:28:56 -05:00
Greg Hellings 251f2804c6 chore: transmission to deluge 2026-06-08 11:18:12 -05:00
Greg Hellings c8951f6da8 chore: add build tools
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-06-05 10:39:41 -05:00
Greg Hellings 394c2c2aba chore: arr to NAS
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-06-04 13:31:26 -05:00
Greg Hellings bb7a01f758 fix: point directly to pypi, not through simple
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-06-04 10:24:49 -05:00
Greg Hellings a6b46f9c74 chore: remove unused anubis container
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-06-03 21:02:00 -05:00
Greg Hellings e865d0832e chore: update longhorn and gitea versions 2026-06-01 15:56:06 -05:00
Greg Hellings 307dbbe044 fix: do not claim mastery of TS net
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build started.
2026-05-30 00:24:36 -05:00
Greg Hellings 69651258d6 chore: connect buildbot and gitea by tailscale 2026-05-28 16:57:05 -05:00
Greg Hellings 53c491f537 fix: buildbot domain name 2026-05-26 07:48:39 -05:00
klaatuandGreg Hellings a8ccb1b6ba chore: update flake.lock 2026-05-24
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build started.
2026-05-24 21:30:35 -05:00
rootandGreg Hellings e6217401f9 feat(gitea): add Anubis anti-crawler proxy
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Anubis (https://anubis.techaro.lol) is a lightweight proof-of-work
challenge that protects web services from AI crawlers and scrapers.
2026-05-24 21:25:50 -05:00
Greg Hellings d97fb37f0e chore: update SSH config for home-manager updates
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Update flake.lock / update-flake-lock (push) Successful in 1m46s
Update manifest chart versions / update-manifests (push) Successful in 29s
2026-05-21 13:19:26 -05:00
Greg Hellings 75e71f9ce9 fix: get Matrix running again
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-effects Build done.
buildbot/nix-build Build done.
2026-05-20 03:27:45 -05:00
Greg Hellings 19540ea1da chore: update mariadb-operator version 2026-05-20 03:26:37 -05:00
Greg Hellings 431f78f8af fix: enable minio access for gitea backups 2026-05-19 23:48:34 -05:00
Greg Hellings 95eea6fc26 fix: enable s3 DNS aliases 2026-05-19 23:47:42 -05:00
greg 387a34ffff Merge pull request 'chore: update flake.lock 2026-05-18' (#23) from auto/update-flake-lock-20260518 into main
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Reviewed-on: https://src.thehellings.com/greg/nixos/pulls/23
Reviewed-by: klaatu <klaatu@thehellings.com>
2026-05-19 15:16:50 +00:00
108 changed files with 1792 additions and 1872 deletions
+51
View File
@@ -0,0 +1,51 @@
name: Update zims pin
"on":
schedule:
- cron: "0 2 1 * *" # 0200 on the first of every month
workflow_dispatch:
jobs:
update-flake-lock:
runs-on: nix-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Update flake.lock
run: nix run .#zim-updater -- --output pkgs/zim/blobs.json
- name: Create PR if changed
env:
GITEA_TOKEN: ${{ secrets.KLAATU_TOKEN }}
GITEA_URL: https://src.thehellings.com
REPO: greg/nixos
run: |
if git diff --quiet pkgs/zim/blobs.json; then
echo "blobs.json unchanged, nothing to do"
exit 0
fi
BRANCH="auto/update-zims-$(date +%Y%m%d)"
git config user.email "klaatu@thehellings.com"
git config user.name "klaatu"
git checkout -b "$BRANCH"
git add pkgs/zim/blobs.json
git commit -m "chore: update zim blobs.json $(date +%Y-%m-%d)"
# Push branch using token auth
git remote set-url origin "https://klaatu:${GITEA_TOKEN}@${GITEA_URL#https://}/${REPO}.git"
git push origin "$BRANCH"
# Create PR via Gitea API
curl -s -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_URL}/api/v1/repos/${REPO}/pulls" \
-d "{
\"title\": \"chore: update zims $(date +%Y-%m-%d)\",
\"head\": \"$BRANCH\",
\"base\": \"main\",
\"body\": \"Automated monthly zims update.\\n\\nGenerated by Gitea Actions.\",
\"assignees\": [\"greg\"]
}"
-12
View File
@@ -1,12 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIByDCCAW+gAwIBAgIRANS+dPEH5Vqug7OWhCMmcx4wCgYIKoZIzj0EAwIwLjER
MA8GA1UEChMISGVsbGluZ3MxGTAXBgNVBAMTEEhlbGxpbmdzIFJvb3QgQ0EwHhcN
MjQwMjIwMjEyNzIxWhcNMzQwMjE3MjEyNzIxWjA2MREwDwYDVQQKEwhIZWxsaW5n
czEhMB8GA1UEAxMYSGVsbGluZ3MgSW50ZXJtZWRpYXRlIENBMFkwEwYHKoZIzj0C
AQYIKoZIzj0DAQcDQgAErZUhPfx5MpNbNVyqHDrIgUGnb6Hitl8hXlpH+kgjBzCi
7I/+TQnl9Tc0VVNOFOYLOfBi7hV3/QudUtLGk0FKeaNmMGQwDgYDVR0PAQH/BAQD
AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMZR8LDd+hNy+TmtEHvt
zRzXboh2MB8GA1UdIwQYMBaAFAlH11TwIFGB/K75qZ3e0S+fN3JUMAoGCCqGSM49
BAMCA0cAMEQCIBxHK6r8pMX5hrTwYKRfMmRIt44m0KtNejA2T5t09hs+AiBfvmHb
LfoE4qoC6NgpvXorAbx+O7xkem/9svF0Ob+RsA==
-----END CERTIFICATE-----
-11
View File
@@ -1,11 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIBoTCCAUagAwIBAgIRAL/1mvE8+73nRFGsvzaaVSAwCgYIKoZIzj0EAwIwLjER
MA8GA1UEChMISGVsbGluZ3MxGTAXBgNVBAMTEEhlbGxpbmdzIFJvb3QgQ0EwHhcN
MjQwMjIwMjEyNzIwWhcNMzQwMjE3MjEyNzIwWjAuMREwDwYDVQQKEwhIZWxsaW5n
czEZMBcGA1UEAxMQSGVsbGluZ3MgUm9vdCBDQTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABEgNBjlT/7gmzNp9vKJvGPJn9/IizuMGVpucdrN9+J1u1ABkLNRzj5p2
g7s3e/BG+EJnnTf/2tuq3p/wPqmQkdujRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNV
HRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBQJR9dU8CBRgfyu+amd3tEvnzdyVDAK
BggqhkjOPQQDAgNJADBGAiEA/uBclcFCOpkEgAeBAVurktYB82sMdIyyDGHcjlwi
pvkCIQC2kuZ/nXRjibeIebQIVTBskQ1LxlLxnx7zNSjtr3kFfQ==
-----END CERTIFICATE-----
-54
View File
@@ -1,54 +0,0 @@
services:
attic:
container_name: attic
image: ghcr.io/zhaofengli/attic:latest
command: ["-f", "/attic/server.toml"]
restart: unless-stopped
ports:
- 8080:8080
networks:
attic:
pgattic:
volumes:
- /mnt/all/configs/attic/server.toml:/attic/server.toml
- /mnt/all/containers/attic/data:/attic/storage
env_file:
- stack.env
depends_on:
pgattic:
condition: service_healthy
healthcheck:
test:
[
"CMD-SHELL",
"wget --no-verbose --tries=1 --spider http://attic:8080 || exit 1",
]
interval: 15s
timeout: 10s
retries: 10
start_period: 15s
deploy:
resources:
reservations:
cpus: 1.0
pgattic:
container_name: pgattic
image: postgres:17.6-alpine
restart: unless-stopped
ports: []
networks:
pgattic:
volumes:
- /mnt/all/containers/attic/postgres:/var/lib/postgresql/data
env_file:
- stack.env
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
networks:
attic:
pgattic:
-9
View File
@@ -1,9 +0,0 @@
services:
pinchflat:
image: ghcr.io/kieraneglin/pinchflat:latest
ports:
- "8945:8945"
volumes:
- "/mnt/all/configs/pinchflat:/config"
- "/mnt/all/video/yt:/downloads"
restart: unless-stopped
-19
View File
@@ -1,19 +0,0 @@
# Demo of rest-server with prometheus and grafana
version: "2"
services:
restserver:
image: "restic/rest-server:0.14.0"
volumes:
- /mnt/all/backups:/data
- /mnt/all/configs/certs:/certs
environment:
OPTIONS: >-
--tls
--tls-cert /certs/nas1.shire-zebra.ts.net.crt
--tls-key /certs/nas1.shire-zebra.ts.net.key
--path /data
--prometheus
--debug
ports:
- "30248:8000"
+32 -4
View File
@@ -32,10 +32,38 @@ let
}; };
in in
{ {
environment.systemPackages = with pkgs; [ environment = {
agenix launchDaemons = {
pkgs'.hms "limit.maxfiles.plist" = {
]; enable = true;
text = ''
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>524288</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
'';
};
};
systemPackages = with pkgs; [
agenix
pkgs'.hms
procps # Includes tools like `watch`, `kill`, and `ps`
];
};
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
dejavu_fonts dejavu_fonts
+1 -1
View File
@@ -11,6 +11,7 @@ in
enable = true; enable = true;
brews = [ brews = [
"bitwarden-cli" "bitwarden-cli"
"colima"
"direnv" "direnv"
"github-mcp-server" "github-mcp-server"
{ {
@@ -37,7 +38,6 @@ in
"notion" "notion"
"notunes" "notunes"
"onlyoffice" "onlyoffice"
"podman-desktop"
"tabby" "tabby"
"zed" "zed"
]; ];
Generated
+136 -87
View File
@@ -31,11 +31,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1779096866, "lastModified": 1783833875,
"narHash": "sha256-8HtF1G7OPMXzo+f+0W+7zwzhuBUSk2EMrOS4ZvFw7+I=", "narHash": "sha256-G+hRtNJ/Nnr6VFMQp2UZdx/ckJDR/RJoK0Fy/yx1/YY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "buildbot-nix", "repo": "buildbot-nix",
"rev": "891f2baba218f4365f0c6ef96ea33f9b277f5ed0", "rev": "147af587241e2af85399402da60a4f44fdb1e5d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -53,11 +53,11 @@
"stable": "stable" "stable": "stable"
}, },
"locked": { "locked": {
"lastModified": 1762034856, "lastModified": 1783909498,
"narHash": "sha256-QVey3iP3UEoiFVXgypyjTvCrsIlA4ecx6Acaz5C8/PQ=", "narHash": "sha256-T9OfLPLuh1Bf1xojlpWXwooJ6IXapxvb8GM0p3YNy8g=",
"owner": "zhaofengli", "owner": "zhaofengli",
"repo": "colmena", "repo": "colmena",
"rev": "349b035a5027f23d88eeb3bc41085d7ee29f18ed", "rev": "76ba0daa542880b730faec81f4e87efcaa63bc57",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -95,11 +95,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779036909, "lastModified": 1784362797,
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=", "narHash": "sha256-EP9b9b+OXDxHBPefFwMYCIaLq0fn3UkmrbfzbLUT7kQ=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "56c666e108467d87d13508936aade6d567f2a501", "rev": "b4cccbd4bc299c1f71ae185b79c3cf99aa82805c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -112,11 +112,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1650374568, "lastModified": 1767039857,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8", "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -162,11 +162,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1778716662, "lastModified": 1782949081,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -183,11 +183,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1778716662, "lastModified": 1782949081,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -218,12 +218,15 @@
} }
}, },
"flake-utils": { "flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": { "locked": {
"lastModified": 1659877975, "lastModified": 1731533236,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -239,11 +242,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779125151, "lastModified": 1784407317,
"narHash": "sha256-bPHT0oJAHe5a43lkkSGAiCEg/RBqpwv5xsFrcj+Bog8=", "narHash": "sha256-iZrxHToDJWnvt+5LGAtvuQMTy1NZYlNEKbKaVtBJNcc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "fab3fd7327a0ac7a1fae5095bf140377704fac7f", "rev": "39411a8e12a5526d992e65bc7e3dc9a4414d6713",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -278,14 +281,14 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"systems": "systems_2" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1778039471, "lastModified": 1784344393,
"narHash": "sha256-Arjg44jFcpSqOKK05EIxbKIjhfjou/EGF12COFU+9QA=", "narHash": "sha256-yAo2ZzSIdeBZg7cOKUpQxwflL+DRYN+1DMObZk2lP2Q=",
"owner": "Infinidoge", "owner": "Infinidoge",
"repo": "nix-minecraft", "repo": "nix-minecraft",
"rev": "87611ef4788116de05f851920c5958f0c37d5b05", "rev": "7297d14c52ec8ef39c6aeff2c1818541fd030473",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -300,11 +303,11 @@
"treefmt-nix": "treefmt-nix_2" "treefmt-nix": "treefmt-nix_2"
}, },
"locked": { "locked": {
"lastModified": 1778839878, "lastModified": 1784016977,
"narHash": "sha256-S2nSP6YWUz8I2uRZuAY93FoAAUa9TiZetLzjBv1n5vk=", "narHash": "sha256-TydDba3YD2u15uS0L+PDs7lMqPopnzWggljTKDqOCSw=",
"owner": "Mic92", "owner": "Mic92",
"repo": "niks3", "repo": "niks3",
"rev": "c29f3641de064545d75f00318cd45bea2b4ea1d0", "rev": "b306808bf381e7e66e33de1e9446a1be0935f4e3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -321,11 +324,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1729742964, "lastModified": 1737420293,
"narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-github-actions", "repo": "nix-github-actions",
"rev": "e04df33f62cdcf93d73e9a04142464753a16db67", "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -335,12 +338,15 @@
} }
}, },
"nix-hardware": { "nix-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": { "locked": {
"lastModified": 1779099457, "lastModified": 1784310968,
"narHash": "sha256-u73aVD/lUmmT3JV+kPDztl7zPwQKd0eobD1AbJltaGs=", "narHash": "sha256-rkSPTePrKqs4dg+i7ZFCq93+HrClac6oSwXX927SVjA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "8792fab9d4a6454a9201675f01326f827ce35ead", "rev": "779c32a00155994c86cde8213a8dd4df139d4355",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -351,11 +357,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1750134718, "lastModified": 1783224372,
"narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", "narHash": "sha256-8i/87eeoqiGE4yOTjwSA3Eh/ziJRQEmd/unYU+K27sk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", "rev": "d407951447dcd00442e97087bf374aad70c04cea",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -367,11 +373,11 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1777168982, "lastModified": 1782614948,
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=", "narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14", "rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -382,11 +388,11 @@
}, },
"nixpkgs-lib_2": { "nixpkgs-lib_2": {
"locked": { "locked": {
"lastModified": 1778984393, "lastModified": 1783821755,
"narHash": "sha256-r755Kh5Q0XBTPNuv9rL2rsUJTq8BDhb+lIwRWhl6yYA=", "narHash": "sha256-eMPX9S6MKPyUnaOgeRfrG7OKUiAlc1AlcRinMbSB0WA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "0d14a58ab7aa3f513c58ccc9e47e77ffd92be204", "rev": "228ab8523d81526e57a6ca342e1a919fb6d246a8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -413,11 +419,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1778491576, "lastModified": 1783978241,
"narHash": "sha256-9YOHDS9ANGbRmf3DSQ9UCvas3CyYNIBwBkKGQZTLXGY=", "narHash": "sha256-7kK0Y/fIV2NTKArkd/eZGaFg+dEmgP8KDRsGK2vB5M4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1174f92bf37f1a5914be77e1b44482d6fbc75ecc", "rev": "a8b81d3cc8d35af7bc98694696bea61ad4f8fca7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -429,11 +435,40 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1767892417,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1783915482,
"narHash": "sha256-FmieJB8/OUvNxbkboi7+IGfIuSXY3nF/hZQm8kD0r50=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6cdc7fc76e8bf7fde9fa43a849fcaaa70e230dee",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1784356753,
"narHash": "sha256-12KrbMiWLcf8m7pCvAtZh1ZrgF85ZXDXvfR/fWTKy84=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb", "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -443,7 +478,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1777207419, "lastModified": 1777207419,
"narHash": "sha256-V3bmPWAajDiC+1ClDOp55gianW2EyRJSJOyu1RUQibc=", "narHash": "sha256-V3bmPWAajDiC+1ClDOp55gianW2EyRJSJOyu1RUQibc=",
@@ -461,16 +496,16 @@
}, },
"nixunstable": { "nixunstable": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1784700541,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-LcCdjhqwjFVrFTNW6tHm3KNYRrD1TA6bYRea30yIIjw=",
"owner": "nixos", "owner": "geri1701",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb", "rev": "3c598184d1f70c5d0beeea8b95d01ab0179e4ef7",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "geri1701",
"ref": "nixos-unstable", "ref": "lego-v5-acme-spike",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -478,17 +513,15 @@
"nixvimunstable": { "nixvimunstable": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts_2",
"nixpkgs": [ "nixpkgs": "nixpkgs_5",
"nixunstable" "systems": "systems_4"
],
"systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1779116047, "lastModified": 1784057377,
"narHash": "sha256-2BnXm4/BvR5B0CH8nxC4CL+y+Z7woqPbPxKO7IMH85U=", "narHash": "sha256-yycNej5//EsRbV10moBoh+/63vXEwZD1ZFEiRm6C9rQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "1367315826ebda2bebbf896029f44ac05df523f5", "rev": "07180a087e4a00720dc0731cbcd8dec796974381",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -501,14 +534,14 @@
"nurpkgs": { "nurpkgs": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_3", "flake-parts": "flake-parts_3",
"nixpkgs": "nixpkgs_4" "nixpkgs": "nixpkgs_6"
}, },
"locked": { "locked": {
"lastModified": 1779124721, "lastModified": 1784417922,
"narHash": "sha256-Z1q8QkuHAdkmXh4SItOzViVVFVLb+tzaEaYCTHI2UKk=", "narHash": "sha256-19XZ56wJXArMKxjY25pKXkNp/FrYHGoo+HuQtW6teSM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "ad57d8faf36bb02c65c90012cd0289daa0b2d9c4", "rev": "2c806d314605495dd7fd75b5950003a062e2b47a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -538,16 +571,16 @@
}, },
"stable": { "stable": {
"locked": { "locked": {
"lastModified": 1750133334, "lastModified": 1783625654,
"narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=", "narHash": "sha256-pI1244/PJfTyKhlAr2QYQC55vR6UQdnGA0rJUgtO2IQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "36ab78dab7da2e4e27911007033713bab534187b", "rev": "a0230bd8d5cbd13893b2263918d396a2c7dd0407",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-25.05", "ref": "release-26.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -597,6 +630,22 @@
"type": "github" "type": "github"
} }
}, },
"systems_4": {
"locked": {
"lastModified": 1774449309,
"narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=",
"owner": "nix-systems",
"repo": "default",
"rev": "c29398b59d2048c4ab79345812849c9bd15e9150",
"type": "github"
},
"original": {
"owner": "nix-systems",
"ref": "future-26.11",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -605,11 +654,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775636079, "lastModified": 1780220602,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", "rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -626,11 +675,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775636079, "lastModified": 1780220602,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", "rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -641,14 +690,14 @@
}, },
"vsext": { "vsext": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_7"
}, },
"locked": { "locked": {
"lastModified": 1779077424, "lastModified": 1784343266,
"narHash": "sha256-2nuxPFMR1R3IlV/OlF65qjs2gGjHhASa7U0+8QX0bJg=", "narHash": "sha256-EGkegdTz2n6ESyih8s3dUuPyJQWlYfPp7U41J05g8PY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "b7bde1772cdb20e77381516fbbb5306a621d0965", "rev": "472a3e862c76c64ac3ad75a24d332cb5cdd5f1bb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -665,11 +714,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1777732699, "lastModified": 1784058842,
"narHash": "sha256-2uX/XtOWZ/oy2rerRynVhqVA//ZXZ3Fo60PikLHEPQc=", "narHash": "sha256-3u3tvbCIAid3Mv7RrJx13jusIEQC/HeKYhO/SUSxR3A=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NixOS-WSL", "repo": "NixOS-WSL",
"rev": "5482f113fd31ebac131d1ebeb2ae90bf0d5e41f5", "rev": "24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad",
"type": "github" "type": "github"
}, },
"original": { "original": {
+8 -7
View File
@@ -27,11 +27,9 @@
niks3.url = "github:Mic92/niks3"; niks3.url = "github:Mic92/niks3";
nix-hardware.url = "github:nixos/nixos-hardware"; nix-hardware.url = "github:nixos/nixos-hardware";
nixpkgs-lib.url = "github:nix-community/nixpkgs.lib"; nixpkgs-lib.url = "github:nix-community/nixpkgs.lib";
nixvimunstable = { nixvimunstable.url = "github:nix-community/nixvim/main";
url = "github:nix-community/nixvim/main"; #nixunstable.url = "github:nixos/nixpkgs/nixos-unstable";
inputs.nixpkgs.follows = "nixunstable"; nixunstable.url = "github:geri1701/nixpkgs/lego-v5-acme-spike";
};
nixunstable.url = "github:nixos/nixpkgs/nixos-unstable";
nurpkgs.url = "github:nix-community/NUR"; nurpkgs.url = "github:nix-community/NUR";
vsext.url = "github:nix-community/nix-vscode-extensions"; vsext.url = "github:nix-community/nix-vscode-extensions";
wsl = { wsl = {
@@ -65,7 +63,10 @@
config = { config = {
allowUnfree = true; allowUnfree = true;
allowUnfreePredicate = _: true; allowUnfreePredicate = _: true;
permittedInsecurePackages = [ "ventoy-1.1.05" ]; permittedInsecurePackages = [
"ventoy-1.1.05"
"electron-39.8.10"
];
}; };
} }
); );
@@ -100,7 +101,7 @@
{ {
deployment = { deployment = {
inherit (v) tags; inherit (v) tags;
targetHost = v.ts; targetHost = if (v ? "nebulaIp") then v.nebulaIp else v.ts;
targetUser = "greg"; targetUser = "greg";
}; };
} }
+46 -12
View File
@@ -1,5 +1,5 @@
# vim: set filetype=nushell : # vim: set filetype=nushell :
let servers = [isaiah jeremiah zeke genesis] let servers = [isaiah jeremiah zeke genesis hosea]
def par-map [ items: list, c: closure ] { def par-map [ items: list, c: closure ] {
let results = $items | par-each -k $c let results = $items | par-each -k $c
@@ -12,15 +12,55 @@ def --env unlock [] {
} }
} }
def rebuild [] { def nebulaIps [] {
open /etc/nixos/network.json | get hosts | items { |h, e| $e.nebulaIp? } | where $it != null | sort
}
def localIps [] {
open /etc/nixos/network.json | get hosts | items { |h, e| $e.ip? } | where $it != null | sort
}
def genNebulaCert [ --ips: string, --name: string ] {
let public = $'~/SynologyDrive/nebula/($name).key.pub' | path expand
let private = $'~/SynologyDrive/nebula/($name).key' | path expand
let cert = $'/etc/nixos/secrets/nebula/($name).crt'
let ca_cert = '~/SynologyDrive/nebula/ca.crt' | path expand
let ca_key = '~/SynologyDrive/nebula/ca.key' | path expand
# Generate public key if there isn't one already
if ( not ($public | path exists) ) {
nebula-cert keygen -out-key $private -out-pub $public
}
# Clear old cert if there is one
if ( $cert | path exists) {
rm $cert
}
# Create and sign certs
(nebula-cert sign
-ca-crt $ca_cert
-ca-key $ca_key
-name $name
-networks $ips
-out-crt $cert
-in-pub $public
)
# Agenix update
cd /etc/nixos/secrets
cat $private | agenix -e $'nebula/($name).key.age'
}
def rebuild [ $target: string = "switch" ] {
if (uname | get operating-system) == "Darwin" { if (uname | get operating-system) == "Darwin" {
sudo darwin-rebuild switch sudo darwin-rebuild $target
} else { } else {
let hostname = uname | get nodename let hostname = uname | get nodename
let build = ^nom build --keep-going $"/etc/nixos#nixosConfigurations.($hostname).config.system.build.toplevel" let build = ^nom build --keep-going $"/etc/nixos#nixosConfigurations.($hostname).config.system.build.toplevel"
if $env.LAST_EXIT_CODE == 0 { if $env.LAST_EXIT_CODE == 0 {
nvd diff /run/current-system result nvd diff /run/current-system result
run0 result/bin/switch-to-configuration switch run0 result/bin/switch-to-configuration $target
} else { } else {
print "Error during build" print "Error during build"
} }
@@ -35,7 +75,8 @@ def deploy [ $host: string, $build: string = "" ] {
if $buildhost == "linode" or $buildhost == "genesis" { if $buildhost == "linode" or $buildhost == "genesis" {
$buildhost = "isaiah" $buildhost = "isaiah"
} }
nixos-rebuild switch --sudo --use-substitutes --target-host $host --build-host $buildhost colmena apply --on $host
#nixos-rebuild switch --sudo --use-substitutes --target-host $host --build-host $buildhost
} }
def ff [ $file: string ] { def ff [ $file: string ] {
@@ -69,13 +110,6 @@ def dc [ $cmd: string = "sh" ] {
} }
} }
def claude [ ] {
unlock
$env.GITLAB_TOKEN = ^bw get item 7d3da4e9-5f9a-49d0-8e14-b39c010a4001 | from json | get fields | find claudeapi | get value
#$env.ANTHROPIC_API_KEY = ^bw get item e122fd08-3506-4f21-9c6a-b42b00fe5be1 | from json | get login.password
^claude
}
if ("/usr/local/bin" | path exists) { if ("/usr/local/bin" | path exists) {
$env.PATH = $env.PATH | append "/usr/local/bin" $env.PATH = $env.PATH | append "/usr/local/bin"
} }
+26 -25
View File
@@ -13,24 +13,25 @@
includes = [ "config.local" ]; includes = [ "config.local" ];
enableDefaultConfig = false; enableDefaultConfig = false;
matchBlocks = settings =
let let
nas = { nas = {
user = "admin"; User = "admin";
}; };
owned = { owned = {
user = "greg"; User = "greg";
}; };
in in
{ {
inherit nas; inherit nas;
"*" = { "*" = {
dynamicForwards = [ { port = 10240; } ]; DynamicForward = [ "10240" ];
serverAliveInterval = 60; ForwardAgent = "yes";
extraOptions = { LogLevel = "error";
LogLevel = "error"; ServerAliveInterval = 60;
SetEnv = "TERM=xterm-256color"; SetEnv = {
TERM = "xterm-256color";
}; };
}; };
@@ -41,46 +42,46 @@
"chronicles.thehellings.lan" = lib.hm.dag.entryBefore [ "*.thehellings.lan" ] nas; "chronicles.thehellings.lan" = lib.hm.dag.entryBefore [ "*.thehellings.lan" ] nas;
gh = { gh = {
user = "git"; User = "git";
hostname = "github.com"; Hostname = "github.com";
}; };
"src" = { "src" = {
user = "git"; User = "git";
hostname = "jeremiah.shire-zebra.ts.net"; Hostname = "jeremiah.shire-zebra.ts.net";
port = 32222; Port = 32222;
}; };
srcpub = { srcpub = {
user = "git"; User = "git";
hostname = "src.thehellings.com"; Hostname = "src.thehellings.com";
port = 2222; Port = 2222;
}; };
ivr = { ivr = {
user = "git"; User = "git";
hostname = "gitlab.com"; Hostname = "gitlab.com";
}; };
"ivr.thehellings.lan" = lib.hm.dag.entryBefore [ "ivr" ] { "ivr.thehellings.lan" = lib.hm.dag.entryBefore [ "ivr" ] {
user = "gregory.hellings"; User = "gregory.hellings";
}; };
"*.thehellings.lan" = owned; "*.thehellings.lan" = owned;
"10.42.*" = owned; "10.42.*" = owned;
"host.crosswire.org crosswire" = { "host.crosswire.org crosswire" = {
hostname = "host.crosswire.org"; Hostname = "host.crosswire.org";
user = "ghellings"; User = "ghellings";
}; };
fedpeople = { fedpeople = {
hostname = "fedorapeople.org"; Hostname = "fedorapeople.org";
user = "greghellings"; User = "greghellings";
}; };
"src.fedoraproject.org pkgs.fedoraproject.org" = { "src.fedoraproject.org pkgs.fedoraproject.org" = {
user = "greghellings"; User = "greghellings";
}; };
"127.*".extraOptions = { "127.*" = {
PubkeyAcceptedAlgorithms = "+ssh-rsa"; PubkeyAcceptedAlgorithms = "+ssh-rsa";
HostkeyAlgorithms = "+ssh-rsa"; HostkeyAlgorithms = "+ssh-rsa";
}; };
-1
View File
@@ -8,7 +8,6 @@
home.packages = home.packages =
with pkgs; with pkgs;
[ [
attic-client
dig dig
jqp jqp
kubernetes-helm kubernetes-helm
+1
View File
@@ -0,0 +1 @@
{...}: {}
+4
View File
@@ -23,8 +23,12 @@
mattermost-desktop mattermost-desktop
minio-client minio-client
mumble mumble
nebula
nix-index
adoptopenjdk-icedtea-web
pre-commit pre-commit
prismlauncher prismlauncher
rclone
restic restic
restic-browser restic-browser
tea tea
+9 -3
View File
@@ -1,5 +1,6 @@
{ {
pkgs, pkgs,
pkgs',
lib, lib,
username, username,
... ...
@@ -20,6 +21,7 @@
claude-code claude-code
direnv direnv
home-manager home-manager
pkgs'.dockerCompat
python3Packages.ipython python3Packages.ipython
just just
glab glab
@@ -36,18 +38,22 @@
".pip/pip.conf".text = '' ".pip/pip.conf".text = ''
[global] [global]
retries = 1 retries = 1
index-url = https://pypi.python.org/simple index-url = https://pypi.python.org/
extra-index-url = extra-index-url =
https://pypidev.ivrtechnology.com/simple/ https://pypidev.ivrtechnology.com/
''; '';
".config/uv/uv.toml".text = '' ".config/uv/uv.toml".text = ''
index-strategy = "unsafe-first-match" index-strategy = "unsafe-first-match"
[[index]] [[index]]
url = "https://pypidev.ivrtechnology.com/simple/" url = "https://pypidev.ivrtechnology.com/"
name = "pypidev" name = "pypidev"
ignore-error-codes = [403] ignore-error-codes = [403]
''; '';
}; };
sessionVariables = {
BW_GITLAB_ITEM = "7d3da4e9-5f9a-49d0-8e14-b39c010a4001";
BW_ANTHROPIC_ITEM = "e122fd08-3506-4f21-9c6a-b42b00fe5be1";
};
username = username; username = username;
homeDirectory = "/Users/${username}"; homeDirectory = "/Users/${username}";
}; };
-4
View File
@@ -1,4 +0,0 @@
{ ... }:
{
}
+8 -1
View File
@@ -1,5 +1,6 @@
{ {
pkgs, pkgs,
pkgs',
lib, lib,
... ...
}: }:
@@ -26,12 +27,17 @@ in
ansible ansible
awscli2 awscli2
cargo cargo
clippy
direnv direnv
docker
docker-compose
docker-buildx
go
home-manager home-manager
just just
mcp-grafana mcp-grafana
nil
nixVersions.stable nixVersions.stable
podman
poetry poetry
pre-commit pre-commit
(pulumi.withPackages ( (pulumi.withPackages (
@@ -45,6 +51,7 @@ in
)) ))
python python
rustc rustc
rustfmt
terraform terraform
]; ];
}; };
+1
View File
@@ -30,6 +30,7 @@ let
modules = [ modules = [
{ {
nixpkgs.hostPlatform = system; nixpkgs.hostPlatform = system;
networking.hostName = name;
} }
# Imported ones # Imported ones
top.agenix.nixosModules.default top.agenix.nixosModules.default
+60
View File
@@ -0,0 +1,60 @@
{
config,
metadata,
modulesPath,
...
}:
{
# Then build nixosConfiguration.<host>.config.system.build.images.proxmox
# SCP that to /var/lib/vz/dumps on the Proxmox host
imports = [ "${modulesPath}/virtualisation/proxmox-image.nix" ];
greg = {
home = true;
nebula.enable = true;
};
networking = {
defaultGateway = metadata.infra.gw;
nameservers = [ metadata.infra.dns ];
interfaces.ens18 = {
useDHCP = false;
ipv4.addresses = [
{
address = metadata.hosts."${config.networking.hostName}".ip;
prefixLength = 16;
}
];
};
};
virtualisation.diskSize = 20480; # Size in mebbibytes for the base disk image
# Use these instead of the above to run an LXC image
# The main reason I wouldn't use these is because Proxmox LXC does
# not seem to be well supported by either Nebula VPN or Tailscale,
# both of which I use for my mesh networking. If there isn't a need
# for the service to run on those networks, then by all means go ahead
# and use LXC!
# imports = [ (modulesPath + "/virtualisation/proxmox-lxc.nix") ];
# proxmoxLXC = {
# manageNetwork = false;
# privileged = true;
# };
# systemd.suppressedSystemUnits = [
# "dev-mqueue.mount"
# "sys-kernel-debug.mount"
# "sys-fs-fuse-connections.mount"
# ];
nix.settings = {
sandbox = false;
};
services = {
fstrim.enable = false; # Let Proxmox host handle fstrim
openssh = {
enable = true;
openFirewall = true;
settings = {
PermitRootLogin = "yes";
PasswordAuthentication = true;
PermitEmptyPasswords = "yes";
};
};
};
}
+1 -5
View File
@@ -9,13 +9,9 @@
{ {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
top.nix-hardware.nixosModules.framework-11th-gen-intel top.nix-hardware.nixosModules.framework-intel-core-ultra-series1
]; ];
age.secrets = {
compose-attic.file = ../../../secrets/compose/attic.env.age;
};
boot = { boot = {
loader = { loader = {
systemd-boot = { systemd-boot = {
+9 -3
View File
@@ -22,6 +22,7 @@ let
#"1.0.0.1" # Cloudflare #"1.0.0.1" # Cloudflare
#"149.112.112.112" # Quad 9 #"149.112.112.112" # Quad 9
metadata.infra.gw # Currently using our UniFi router for DNS as well metadata.infra.gw # Currently using our UniFi router for DNS as well
"100.100.100.100"
]; ];
in in
{ {
@@ -115,16 +116,21 @@ in
"@\tIN\tSOA\t${config.networking.hostName}\tgreg@thehellings.com (1 1m 1m 1m 1m)" "@\tIN\tSOA\t${config.networking.hostName}\tgreg@thehellings.com (1 1m 1m 1m 1m)"
"\tIN\tNS\t${config.networking.hostName}" "\tIN\tNS\t${config.networking.hostName}"
]; ];
makeHost = host: "${host.name}\tIN\tA\t${host.address}"; makeHost =
host:
[ "${host.name}\tIN\tA\t${host.address}" ]
++ lib.map (a: "${a}\tIN\tA\t${host.address}") (
if builtins.hasAttr "aliases" host then host.aliases else [ ]
);
in in
pkgs.writeText "${domain}" ( pkgs.writeText "${domain}" (
builtins.concatStringsSep "\n" (preamble ++ (lib.map makeHost hosts) ++ [ "" ]) builtins.concatStringsSep "\n" (preamble ++ (lib.flatten (lib.map makeHost hosts)) ++ [ "" ])
); );
in in
lib.mapAttrs lib.mapAttrs
(domain: net: { (domain: net: {
master = true; master = true;
file = makeZoneFile (lib'.hostsByNet net metadata.hosts) domain; file = makeZoneFile (lib'.hostsByNet net (metadata.hosts // metadata.external)) domain;
}) })
{ {
"shire-zebra.ts.net" = "tailscale"; "shire-zebra.ts.net" = "tailscale";
-70
View File
@@ -1,70 +0,0 @@
{
lib,
metadata,
pkgs,
...
}:
let
ips = lib.filterAttrs (_k: v: v ? "ip" && v.ip != null) metadata.hosts;
tps = lib.filterAttrs (_k: v: v ? "ts" && v.ts != null) metadata.hosts;
get = field: set: lib.mapAttrsToList (_k: v: v.${field}) set;
getTS = get "ts" tps;
getIP = get "ip" ips;
whitelists = builtins.concatStringsSep "," (
[
"localhost"
"127.0.0.1"
]
++ getTS
++ getIP
);
in
{
services = {
prowlarr = {
enable = true;
dataDir = "/arr/prowlarr";
openFirewall = true;
};
radarr = {
enable = true;
openFirewall = true;
};
transmission = {
enable = true;
openPeerPorts = true;
openRPCPort = true;
package = pkgs.transmission_4;
settings = {
download-dir = "/arr/transmission/downloads";
rpc-bind-address = "0.0.0.0";
rpc-host-whitelist = whitelists;
rpc-host-whitelist-enabled = false;
rpc-whitelist = whitelists;
rpc-whitelist-enabled = false;
watch-dir-enabled = true;
watch-dir = "/arr/transmission/incoming";
};
};
};
systemd.mounts =
let
nfs = name: {
what = "nas1.shire-zebra.ts.net:/mnt/all/${name}";
type = "nfs";
name = "${name}.mount";
where = "/${name}";
requires = [ "tailscaled-autoconnect.service" ];
after = [ "tailscaled-autoconnect.service" ];
wantedBy = [ "multi-user.target" ];
mountConfig.Options = "_netdev,noexec,timeo=50,retrans=5,soft";
};
in
[
(nfs "arr")
(nfs "music")
(nfs "photos")
(nfs "video")
];
}
+20 -2
View File
@@ -18,7 +18,6 @@ in
{ {
imports = [ imports = [
# Include the results of the hardware scan. # Include the results of the hardware scan.
./arr.nix
./hardware-configuration.nix ./hardware-configuration.nix
top.niks3.nixosModules.niks3 top.niks3.nixosModules.niks3
]; ];
@@ -186,7 +185,7 @@ in
s3 = { s3 = {
accessKeyFile = config.age.secrets.niks3-access-key-id.path; accessKeyFile = config.age.secrets.niks3-access-key-id.path;
bucket = "niks3"; bucket = "niks3";
endpoint = "nas1.shire-zebra.ts.net:9000"; endpoint = "nas1.shire-zebra.ts.net:30188";
secretKeyFile = config.age.secrets.niks3-secret-access-key.path; secretKeyFile = config.age.secrets.niks3-secret-access-key.path;
useSSL = false; useSSL = false;
}; };
@@ -200,6 +199,25 @@ in
}; };
}; };
systemd.mounts =
let
nfs = name: {
what = "nas1.shire-zebra.ts.net:/mnt/all/${name}";
type = "nfs";
name = "${name}.mount";
where = "/${name}";
requires = [ "tailscaled-autoconnect.service" ];
after = [ "tailscaled-autoconnect.service" ];
wantedBy = [ "multi-user.target" ];
mountConfig.Options = "_netdev,noexec,timeo=50,retrans=5,soft";
};
in
[
(nfs "music")
(nfs "photos")
(nfs "video")
];
# After first deploy: create a Grafana service account + API token for Klaatu # After first deploy: create a Grafana service account + API token for Klaatu
# via the Grafana UI, then encrypt it: agenix -e secrets/grafana-api-token.age # via the Grafana UI, then encrypt it: agenix -e secrets/grafana-api-token.age
age.secrets.grafana-api-token = { age.secrets.grafana-api-token = {
-11
View File
@@ -1,11 +0,0 @@
{ ... }:
{
# Bootloader.
boot = {
loader.grub = {
enable = true;
device = "/dev/sda";
};
};
}
-28
View File
@@ -1,28 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ pkgs, ... }:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
./boot.nix
./filesystem.nix
./location.nix
./networking.nix
./wiki.nix
];
# Define a user account. Don't forget to set a password with passwd.
users.users.greg = {
isNormalUser = true;
description = "Gregory Hellings";
extraGroups = [
"networkmanager"
"wheel"
];
packages = with pkgs; [ ];
};
}
-13
View File
@@ -1,13 +0,0 @@
{ ... }:
let
in
{
fileSystems."serve" = {
#device = "10.42.1.4:/volume1/icdm-mysql/";
#fsType = "nfs";
device = "/dev/sdb1";
fsType = "auto";
mountPoint = "/srv";
};
}
@@ -1,53 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
modulesPath,
...
}:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ehci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/dab0d455-e25e-4445-8fa4-5320047d7e7b";
fsType = "btrfs";
options = [ "subvol=@" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/5aedbb07-5761-423b-909d-2560405eae32";
fsType = "ext4";
};
fileSystems."/var" = {
device = "/dev/disk/by-uuid/57968536-c29d-417d-997e-85223d1d1f65";
fsType = "btrfs";
};
swapDevices = [ { device = "/dev/disk/by-uuid/09691dce-375a-43c6-8d40-4498d20a6d9a"; } ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
-15
View File
@@ -1,15 +0,0 @@
{ ... }:
{
# Set your time zone.
time.timeZone = "America/Chicago";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
}
-63
View File
@@ -1,63 +0,0 @@
{ ... }:
let
dnsHosts = builtins.concatStringsSep "\n" [ "wiki.icdm.lan 10.42.101.1" ];
in
{
# If we have to do proxying in Bayonnais, we can start to work on that here
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
networking = {
hostName = "icdm-root";
useDHCP = false;
defaultGateway = "10.42.1.1";
nameservers = [
"100.100.100.100"
"10.42.1.2"
];
enableIPv6 = false;
interfaces = {
eno1.ipv4.addresses = [
{
address = "10.42.101.1";
prefixLength = 16;
}
{
address = "10.77.1.2";
prefixLength = 16;
}
];
};
# Allow traffic through
firewall = {
enable = true;
allowedTCPPorts = [ 53 ];
allowedUDPPorts = [
53
67
];
};
extraHosts = "${dnsHosts}";
};
services.dnsmasq = {
enable = true;
settings = {
domain = "icdm.lan";
dhcp-range = [ "eno1,10.77.1.10,10.77.1.255,255.255.0.0,12h" ];
dhcp-option = [
"eno1,option:router,10.77.1.1"
"eno1,option:dns-server,10.77.1.2,1.1.1.1"
"eno1,option:domain-search,icdm.lan"
];
expand-hosts = true;
log-dhcp = true;
log-queries = true;
# Upstream servers
server = [
"1.1.1.1"
"8.8.4.4"
];
};
};
}
-17
View File
@@ -1,17 +0,0 @@
{ pkgs, ... }:
let
wikiHost = "wiki.icdm.lan";
kiwixport = 8080;
in
{
services.kiwix-serve = {
enable = true;
port = kiwixport;
library = {
inherit (pkgs) zim;
};
};
greg.proxies."${wikiHost}".target = "http://localhost:${toString kiwixport}";
networking.firewall.allowedTCPPorts = [ 80 ];
}
+3 -2
View File
@@ -88,6 +88,7 @@ in
priority = 254; priority = 254;
}; };
nebula.enable = true; nebula.enable = true;
proxies."buildbot.nebula.thehellings.com".target = "http://buildbot.nebula.thehellings.com:8010/";
tailscale = { tailscale = {
enable = true; enable = true;
tags = [ "home" ]; tags = [ "home" ];
@@ -142,7 +143,7 @@ in
updateOutputs = false; updateOutputs = false;
}; };
}; };
domain = "${config.networking.hostName}.shire-zebra.ts.net"; domain = "buildbot.nebula.thehellings.com:8010";
evalMaxMemorySize = 8192; evalMaxMemorySize = 8192;
evalWorkerCount = 4; evalWorkerCount = 4;
gitea = { gitea = {
@@ -155,7 +156,7 @@ in
webhookSecretFile = config.age.secrets.gitea-webhookSecret.path; webhookSecretFile = config.age.secrets.gitea-webhookSecret.path;
}; };
showTrace = true; showTrace = true;
#webhookBaseUrl = "http://${config.networking.hostName}.shire-zebra.ts.net:8010"; #webhookBaseUrl = "http://${config.networking.hostName}.nebula.thehellings.com:8010";
workersFile = config.age.secrets.gitea-buildbotWorkersFile.path; workersFile = config.age.secrets.gitea-buildbotWorkersFile.path;
}; };
worker = { worker = {
+76
View File
@@ -0,0 +1,76 @@
{
config,
metadata,
modulesPath,
pkgs,
...
}:
{
imports = [ "${modulesPath}/virtualisation/proxmox-image.nix" ];
greg = {
home = true;
nebula.enable = true;
proxies =
let
tgt = {
target = "http://localhost:${config.services.uptime-kuma.settings.PORT}";
genAliases = false;
};
in
{
"kuma.nebula.thehellings.com" = tgt;
"kuma.thehellings.lan" = tgt;
"kuma.shire-zebra.ts.net" = tgt;
};
};
nix.settings = {
sandbox = false;
};
networking = {
defaultGateway = metadata.infra.gw;
nameservers = [ metadata.infra.dns ];
interfaces.ens18 = {
useDHCP = false;
ipv4.addresses = [
{
address = metadata.hosts."${config.networking.hostName}".ip;
prefixLength = 16;
}
];
};
};
proxmox.cloudInit.enable = false;
services = {
fstrim.enable = true;
mysql = {
enable = true;
ensureDatabases = [
config.services.uptime-kuma.settings.UPTIME_KUMA_DB_NAME
];
ensureUsers = [
{
name = config.services.uptime-kuma.settings.UPTIME_KUMA_DB_USERNAME;
ensurePermissions = {
"uptimekuma.*" = "ALL PRIVILEGES";
};
}
];
package = pkgs.mariadb;
};
openssh = {
enable = true;
openFirewall = true;
};
uptime-kuma = {
enable = true;
settings = {
PORT = "3001"; # Default, but this allows us to explicitly use it elsewhere
UPTIME_KUMA_DB_TYPE = "mariadb";
UPTIME_KUMA_DB_SOCKET = "/run/mysqld/mysqld.sock";
UPTIME_KUMA_DB_NAME = "uptimekuma";
UPTIME_KUMA_DB_USERNAME = "uptimekuma";
UPTIME_KUMA_DB_PASSWORD = "uptimekuma";
};
};
};
}
+284 -15
View File
@@ -1,31 +1,65 @@
{ {
pkgs, pkgs,
pkgs',
lib, lib,
config, config,
... ...
}: }:
let
homepage = "127.0.0.1:30080";
nextcloudPort = 8080;
sshPort = 2222;
in
{ {
imports = [ imports = [
./git.nix
./hardware-configuration.nix ./hardware-configuration.nix
./podman.nix
./matrix.nix
./nextcloud.nix
./nginx.nix
./postgres.nix
]; ];
age.secrets = {
acme.file = ../../../secrets/acme.age;
nextcloudadmin = {
file = ../../../secrets/nextcloudadmin.age;
owner = "nextcloud";
};
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
bind bind
graphviz graphviz
nix-du nix-du
pgloader pgloader
podman-compose
pkgs'.upgrade-pg-cluster
]; ];
greg = { greg = {
backup.jobs = {
nextcloud-bkup = {
src = "/var/lib/nextcloud";
dest = "nextcloud-backup";
pre = lib.getExe (
pkgs.writeShellApplication {
name = "nextcloud-backup-pre";
runtimeInputs = [ config.services.nextcloud.occ ];
text = "nextcloud-occ maintenance:mode --on";
}
);
post = lib.getExe (
pkgs.writeShellApplication {
name = "nextcloud-backup-post";
runtimeInputs = [ config.services.nextcloud.occ ];
text = "nextcloud-occ maintenance:mode --off";
}
);
};
greg-postgresql-backup = {
src = config.services.postgresqlBackup.location;
dest = "linode-postgres";
};
};
gitea-runner = { gitea-runner = {
enable = true; enable = false;
extraLabels = [ extraLabels = [
"vps:host" "vps:host"
"blog:host" "blog:host"
@@ -37,19 +71,22 @@
enable = true; enable = true;
isLighthouse = true; isLighthouse = true;
}; };
proxies."immich.thehellings.com" = {
genAliases = false;
target = "http://localhost:${builtins.toString config.services.immich-public-proxy.port}";
ssl = true;
};
tailscale.enable = true; tailscale.enable = true;
}; };
networking = { networking = {
networkmanager.enable = lib.mkForce false;
hostName = "linode";
domain = "thehellings.com"; domain = "thehellings.com";
nameservers = [ "100.88.91.27" ]; firewall.allowedTCPPorts = [
sshPort
80
443
];
hostName = "linode";
nameservers = [
"10.157.0.2"
"100.96.198.104"
];
networkmanager.enable = lib.mkForce false;
}; };
programs.ssh.extraConfig = lib.strings.concatStringsSep "\n" [ programs.ssh.extraConfig = lib.strings.concatStringsSep "\n" [
@@ -60,10 +97,242 @@
" UserKnownHostsFile /dev/null" " UserKnownHostsFile /dev/null"
]; ];
security.acme = {
acceptTerms = true;
defaults = {
dnsPropagationCheck = false;
dnsResolver = "92.123.95.3:53,92.123.94.3:53,92.123.94.2:53,92.123.95.4:53,92.123.95.2:53";
email = "greg.hellings@gmail.com";
extraLegoRunFlags = [ "--ipv4only" ]; # Force IPv4 only
#server = "https://acme-staging-v02.api.letsencrypt.org/directory";
};
certs."thehellings.com" = {
dnsProvider = "linode";
environmentFile = config.age.secrets.acme.path;
extraDomainNames = [
"*.thehellings.com"
];
};
};
services = { services = {
anubis = {
instances = {
git = {
enable = true;
settings = {
BIND = "/run/anubis/anubis-git/anubis.sock";
COOKIE_DOMAIN = "thehellings.com";
SERVE_ROBOTS_TXT = true;
SLOG_LEVEL = "DEBUG";
TARGET = "http://git.k3s.nebula.thehellings.com";
};
};
};
};
haproxy = {
enable = true;
config = ''
global
nbthread 4
maxconn 80
log /dev/log local0
defaults
timeout connect 500s
timeout client 500s
timeout server 1h
listen gitsshd
bind *:${toString sshPort}
timeout client 1h
mode tcp
server git-isaiah isaiah.nebula.thehellings.com:32222
server git-jeremiah jeremiah.nebula.thehellings.com:32222
server git-zeke zeke.nebula.thehellings.com:32222
frontend https
bind *:80
bind *:443 ssl crt ${config.security.acme.certs."thehellings.com".directory}/full.pem
http-request redirect scheme https unless { ssl_fc }
http-request add-header X-Forwarded-Proto https
http-response replace-header ^Set-Cookie:\ (.*) Set-Cookie \1;\ Secure
option http-server-close
option http-keep-alive
#option httplog
#declare capture response len 80
#http-response capture res.hdr(Location) id 0
use_backend git if { hdr(host) -i src.thehellings.com }
use_backend git if { req_ssl_sni -i src.thehellings.com }
use_backend next if { hdr(host) -i next.thehellings.com }
use_backend next if { req_ssl_sni -i next.thehellings.com }
use_backend matrix if { hdr(host) -i matrix.thehellings.com }
use_backend matrix if { req_ssl_sni -i matrix.thehellings.com }
use_backend web if { hdr(host) -i thehellings.com }
use_backend web if { req_ssl_sni -i thehellings.com }
backend git
mode http
balance roundrobin
option accept-unsafe-violations-in-http-response
retries 3
option forwardfor
http-request set-header Host git.k3s.nebula.thehellings.com
server git-isaiah isaiah.nebula.thehellings.com:80
server git-jeremiah jeremiah.nebula.thehellings.com:80
server git-zeke zeke.nebula.thehellings.com:80
backend matrix
mode http
balance roundrobin
option accept-unsafe-violations-in-http-response
retries 3
option forwardfor
http-request set-header Host matrix.k3s.nebula.thehellings.com
server git-isaiah isaiah.nebula.thehellings.com:80
server git-jeremiah jeremiah.nebula.thehellings.com:80
server git-zeke zeke.nebula.thehellings.com:80
backend web
mode http
balance roundrobin
option accept-unsafe-violations-in-http-response
retries 3
option forwardfor
server web-container ${homepage}
backend next
log global
mode http
balance roundrobin
option accept-unsafe-violations-in-http-response
retries 3
option forwardfor
#http-response replace-value Location http://localhost:${builtins.toString nextcloudPort}/(.*) https://next.thehellings.com/\2
server nextcloud 127.0.0.1:${builtins.toString nextcloudPort}
'';
};
immich-public-proxy = { immich-public-proxy = {
enable = true; enable = true;
immichUrl = "https://immich.shire-zebra.ts.net"; immichUrl = "https://immich.shire-zebra.ts.net";
}; };
logrotate = {
enable = true;
settings = {
postgresBackup = {
enable = true;
files = "${config.services.postgresqlBackup.location}/*.gz";
};
postgresLog = {
enable = true;
files = "/var/lib/postgresql/*/log/*.log";
compress = true;
compresscmd = "${pkgs.xz}/bin/xz";
};
};
};
nextcloud = {
enable = true;
package = pkgs.nextcloud33;
appstoreEnable = true;
hostName = "localhost";
https = false;
config = {
adminpassFile = config.age.secrets.nextcloudadmin.path;
adminuser = "greg";
dbhost = "/run/postgresql";
dbtype = "pgsql";
};
settings = {
default_phone_region = "US";
overwriteprotocol = "http";
trusted_domains = [ "next.thehellings.com" ];
trusted_proxies = [
"localhost"
"127.0.0.1"
];
};
};
# Move to :8080 so that we can run haproxy as the primary HTTP service
nginx.virtualHosts."${config.services.nextcloud.hostName}".listen = [
{
addr = "127.0.0.1";
port = nextcloudPort;
}
];
openssh.settings.PasswordAuthentication = false;
postgresql = {
enable = true;
package = pkgs.postgresql_15;
checkConfig = true;
ensureDatabases = [ "nextcloud" ];
#initialScript = pkgs.writeText "create-matrix-db.sql" ''
# CREATE ROLE "matrix-synapse" WITH LOGIN;
# CREATE DATABASE "synapse" WITH OWNER "matrix-synapse" TEMPLATE template0 LC_COLLATE = "C" LC_CTYPE = "C";
# GRANT ALL PRIVILEGES ON DATABASE "synapse" TO "matrix-synapse";
#''; # These are done manually in order to set the LC_COLLATE values properly
ensureUsers = [
{
name = "nextcloud";
ensureDBOwnership = true;
}
];
settings = {
log_connections = true;
log_statement = "all";
logging_collector = true;
log_filename = "postgresql.log";
};
identMap = ''
root root postgres
'';
};
postgresqlBackup = {
enable = true;
databases = [ "nextcloud" ];
};
};
systemd.services = {
haproxy = {
after = [
"nextcloud.service"
"network-online.target"
];
wants = [
"nextcloud.service"
"network-online.target"
];
};
};
users.users.haproxy.extraGroups = [ config.security.acme.certs."thehellings.com".group ];
# Actually serve the content from here
virtualisation.oci-containers = {
backend = "podman";
containers."homepage" = {
image = "registry.thehellings.com:443/greg/homepage/gregs-homepage:latest";
ports = [ "${homepage}:80" ];
};
};
virtualisation.podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
}; };
} }
-122
View File
@@ -1,122 +0,0 @@
{ ... }:
let
srcDomain = "src.thehellings.com";
sshPort = 2222;
in
{
greg.proxies."${srcDomain}" = {
target = "https://gitea.shire-zebra.ts.net";
ssl = true;
genAliases = false;
extraConfig = ''
proxy_ssl_verify off;
proxy_ssl_server_name on;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
client_max_body_size 100000m;
# Ultimate AI Block List v1.7 20250924
# https://perishablepress.com/ultimate-ai-block-list/
if ($http_user_agent ~* "(openai\.com|\.ai|-ai|_ai|ai\.|ai-|ai_|ai=|AddSearchBot|Agentic|AgentQL|Agent\ 3|Agent\ API|AI\ Agent|AI\ Article\ Writer|AI\ Chat|AI\ Content\ Detector|AI\ Detection|AI\ Dungeon|AI\ Journalist|AI\ Legion)") {
return 444;
}
if ($http_user_agent ~* "(AI\ RAG|AI\ Search|AI\ SEO\ Crawler|AI\ Training|AI\ Web|AI\ Writer|AI2|AIBot|aiHitBot|AIMatrix|AISearch|AITraining|Alexa|Alice\ Yandex|AliGenie|AliyunSec|Alpha\ AI|AlphaAI|Amazon|Amelia)") {
return 444;
}
if ($http_user_agent ~* "(AndersPinkBot|AndiBot|Anonymous\ AI|Anthropic|AnyPicker|Anyword|Applebot|Aria\ AI|Aria\ Browse|Articoolo|Ask\ AI|AutoGen|AutoGLM|Automated\ Writer|AutoML|Autonomous\ RAG|AwarioRssBot|AwarioSmartBot|AWS\ Trainium|Azure)") {
return 444;
}
if ($http_user_agent ~* "(BabyAGI|BabyCatAGI|BardBot|Basic\ RAG|Bedrock|Big\ Sur|Bigsur|Botsonic|Brightbot|Browser\ MCP\ Agent|Browser\ Use|Bytebot|ByteDance|Bytespider|CarynAI|CatBoost|CC-Crawler|CCBot|Chai|Character)") {
return 444;
}
if ($http_user_agent ~* "(Charstar\ AI|Chatbot|ChatGLM|Chatsonic|ChatUser|Chinchilla|Claude|ClearScope|Clearview|Cognitive\ AI|Cohere|Common\ Crawl|CommonCrawl|Content\ Harmony|Content\ King|Content\ Optimizer|Content\ Samurai|ContentAtScale|ContentBot|Contentedge)") {
return 444;
}
if ($http_user_agent ~* "(ContentShake|Conversion\ AI|Copilot|CopyAI|Copymatic|Copyscape|CoreWeave|Corrective\ RAG|Cotoyogi|CRAB|Crawl4AI|CrawlQ\ AI|Crawlspace|Crew\ AI|CrewAI|Crushon\ AI|DALL-E|DarkBard|DataFor|DataProvider)") {
return 444;
}
if ($http_user_agent ~* "(Datenbank\ Crawler|DeepAI|Deep\ AI|DeepL|DeepMind|Deep\ Research|DeepResearch|DeepSeek|Devin|Diffbot|Doubao\ AI|DuckAssistBot|DuckDuckGo\ Chat|DuckDuckGo-Enhanced|Echobot|Echobox|Elixir|FacebookBot|FacebookExternalHit|Factset)") {
return 444;
}
if ($http_user_agent ~* "(Falcon|FIRE-1|Firebase|Firecrawl|Flux|Flyriver|Frase\ AI|FriendlyCrawler|Gato|Gemini|Gemma|Gen\ AI|GenAI|Generative|Genspark|Gentoo-chat|Ghostwriter|GigaChat|GLM|GodMode)") {
return 444;
}
if ($http_user_agent ~* "(Goose|GPT|Grammarly|Grendizer|Grok|GT\ Bot|GTBot|GTP|Hemingway\ Editor|Hetzner|Hugging|Hunyuan|Hybrid\ Search\ RAG|Hypotenuse\ AI|iAsk|ICC-Crawler|ImageGen|ImagesiftBot|img2dataset|imgproxy)") {
return 444;
}
if ($http_user_agent ~* "(INK\ Editor|INKforall|Instructor|IntelliSeek|Inferkit|ISSCyberRiskCrawler|Janitor\ AI|Jasper|Jenni\ AI|Julius\ AI|Kafkai|Kaggle|Kangaroo|Keyword\ Density\ AI|Kimi|Knowledge|KomoBot|Kruti|LangChain|Le\ Chat)") {
return 444;
}
if ($http_user_agent ~* "(Lensa|Lightpanda|LinerBot|LLaMA|LLM|Local\ RAG\ Agent|Lovable|Magistral|magpie-crawler|Manus|MarketMuse|Meltwater|Meta-AI|Meta-External|Meta-Webindexer|Meta\ AI|MetaAI|MetaTagBot|Middleware|Midjourney)") {
return 444;
}
if ($http_user_agent ~* "(Mini\ AGI|MiniMax|Mintlify|Mistral|Mixtral|model-training|Monica|Narrative|NeevaBot|netEstate|Neural\ Text|NeuralSEO|NinjaAI|NodeZero|Nova\ Act|NovaAct|OAI-SearchBot|OAI\ SearchBot|OASIS|Olivia)") {
return 444;
}
if ($http_user_agent ~* "(Omgili|Open\ AI|Open\ Interpreter|OpenAGI|OpenAI|OpenBot|OpenPi|OpenRouter|OpenText\ AI|Operator|Outwrite|Page\ Analyzer\ AI|PanguBot|Panscient|Paperlibot|Paraphraser\.io|peer39_crawler|Perflexity|Perplexity|Petal)") {
return 444;
}
if ($http_user_agent ~* "(Phind|PiplBot|PoeBot|PoeSearchBot|ProWritingAid|Proximic|Puppeteer|Python\ AI|Qualified|Quark|QuillBot|Qopywriter|Qwen|RAG\ Agent|RAG\ Azure\ AI|RAG\ Chatbot|RAG\ Database|RAG\ IS|RAG\ Pipeline|RAG\ Search)") {
return 444;
}
if ($http_user_agent ~* "(RAG\ with|RAG-|RAG_|Raptor|React\ Agent|Redis\ AI\ RAG|RobotSpider|Rytr|SaplingAI|SBIntuitionsBot|Scala|Scalenut|Scrap|ScriptBook|Seekr|SEObot|SEO\ Content\ Machine|SEO\ Robot|SemrushBot|Sentibot)") {
return 444;
}
if ($http_user_agent ~* "(Serper|ShapBot|Sidetrade|Simplified\ AI|Sitefinity|Skydancer|SlickWrite|SmartBot|Sonic|Sora|Spider/2|SpiderCreator|Spin\ Rewrite|Spinbot|Stability|StableDiffusionBot|Sudowrite|SummalyBot|Super\ Agent|Superagent)") {
return 444;
}
if ($http_user_agent ~* "(SuperAGI|Surfer\ AI|TerraCotta|Text\ Blaze|TextCortex|Thinkbot|Thordata|TikTokSpider|Timpibot|Tinybird|Together\ AI|Traefik|TurnitinBot|uAgents|VelenPublicWebCrawler|Venus\ Chub\ AI|Vidnami\ AI|Vision\ RAG|WebSurfer|WebText)") {
return 444;
}
if ($http_user_agent ~* "(Webzio|WeChat|Whisper|WordAI|Wordtune|WPBot|Writecream|WriterZen|Writescope|Writesonic|xAI|xBot|YaML|YandexAdditional|YouBot|Zendesk|Zero|Zhipu|Zhuque\ AI|Zimm)") {
return 444;
}
'';
};
#greg.proxies."registry.thehellings.com" = {
#target = "https://gitea.shire-zebra.ts.net:5000";
#ssl = true;
#genAliases = false;
#extraConfig = ''
#proxy_set_header X-Forwarded-Proto https;
#proxy_set_header X-Forwarded-Ssl on;
#client_max_body_size 25000m;
#'';
#};
networking.firewall.allowedTCPPorts = [ sshPort ];
systemd.services = {
haproxy = {
after = [
"network-online.target"
];
wants = [
"network-online.target"
];
};
};
services.haproxy = {
enable = true;
config = ''
global
daemon
maxconn 20
defaults
timeout connect 500s
timeout client 500s
timeout server 1h
listen gitsshd
bind *:${toString sshPort}
timeout client 1h
mode tcp
server git-isaiah isaiah.shire-zebra.ts.net:32222
server git-jeremiah jeremiah.shire-zebra.ts.net:32222
server git-zeke zeke.shire-zebra.ts.net:32222
'';
};
}
-88
View File
@@ -1,88 +0,0 @@
# Registration of new users is disabled for the public, but I can create
# them by the following commands:
# nix run nixpkgs.matrix-synapse
# register_new_matrix_user -k "B9EoPr2WV9hzwc7uL2Sx1JmvCeKDEOGCpB0uginQcQtEH4wzRtkSIdo7lltrjSQa" http://localhost:8448
{ config, lib, ... }:
let
domain = "${config.networking.domain}";
fqdn = "matrix.${domain}";
in
{
services.nginx = {
virtualHosts = {
# Server the '.well-known' files to find the Matrix API server
"${domain}" = {
enableACME = true;
forceSSL = true;
# This is needed so that servers contacting hellings.com can find
# the actual application server at matrix.thehellings.com
locations."= /.well-known/matrix/server".extraConfig =
let
server = {
"m.server" = "${fqdn}:443";
};
in
''
add_header Content-Type application/json;
return 200 '${builtins.toJSON server}';
'';
locations."= /.well-known/matrix/client".extraConfig =
let
client = {
"m.homeserver" = {
"base_url" = "https://${fqdn}";
};
"m.identity_server" = {
"base_url" = "https://vector.im";
};
};
in
''
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '${builtins.toJSON client}';
'';
};
# Reverse proxy in front of the actual Matrix server
"${fqdn}" = {
enableACME = true;
forceSSL = true;
extraConfig = ''
error_log /var/log/nginx/debug.log debug;
'';
# Not the appropriate place for the chat client
locations =
(builtins.listToAttrs (
builtins.map
(
val:
lib.nameValuePair "/_${val}" {
proxyPass = "https://matrix.shire-zebra.ts.net";
}
)
[
"matrix"
"synapse"
"dendrite"
]
))
// {
"/".extraConfig = "return 404;";
};
};
};
};
# Open networking ports for the server
networking.firewall = {
enable = true;
allowedTCPPorts = [
80
443
];
};
}
-58
View File
@@ -1,58 +0,0 @@
{
config,
lib,
pkgs,
...
}:
{
age.secrets.nextcloudadmin = {
file = ../../../secrets/nextcloudadmin.age;
owner = "nextcloud";
};
services.nextcloud = {
enable = true;
package = pkgs.nextcloud33;
appstoreEnable = true;
hostName = "next.${config.networking.domain}";
https = true;
config = {
adminpassFile = config.age.secrets.nextcloudadmin.path;
adminuser = "greg";
dbhost = "/run/postgresql";
dbtype = "pgsql";
};
settings = {
default_phone_region = "US";
overwriteprotocol = "https";
};
};
services.nginx.virtualHosts."next.thehellings.com" = {
forceSSL = true;
enableACME = true;
};
# Otherwise nginx errors looking for the nextcloud sock file
systemd.services.nginx.after = [ "nextcloud.service" ];
greg.backup.jobs.nextcloud-bkup = {
src = "/var/lib/nextcloud";
dest = "nextcloud-backup";
pre = lib.getExe (
pkgs.writeShellApplication {
name = "nextcloud-backup-pre";
runtimeInputs = [ config.services.nextcloud.occ ];
text = "nextcloud-occ maintenance:mode --on";
}
);
post = lib.getExe (
pkgs.writeShellApplication {
name = "nextcloud-backup-post";
runtimeInputs = [ config.services.nextcloud.occ ];
text = "nextcloud-occ maintenance:mode --off";
}
);
};
}
-43
View File
@@ -1,43 +0,0 @@
{ ... }:
let
homepage = "127.0.0.1:30080";
in
{
security.acme = {
acceptTerms = true;
defaults.email = "greg.hellings@gmail.com";
};
services.nginx = {
enable = true;
clientMaxBodySize = "25000m"; # To help with uploading container images
# If there are recommended settings, let's use them!
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
};
# Actually serve the content from here
virtualisation.podman.enable = true;
virtualisation.oci-containers = {
backend = "podman";
containers."homepage" = {
image = "registry.thehellings.com:443/greg/homepage/gregs-homepage:latest";
ports = [ "${homepage}:80" ];
};
};
greg.proxies = {
"thehellings.com" = {
target = "http://${homepage}/";
ssl = true;
genAliases = false;
};
"doubles.thehellings.com" = {
target = "http://localhost:8081";
ssl = true;
genAliases = false;
};
};
}
-13
View File
@@ -1,13 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
podman-compose
];
virtualisation.podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
};
}
-63
View File
@@ -1,63 +0,0 @@
{
config,
pkgs,
pkgs',
...
}:
{
environment.systemPackages = [ pkgs'.upgrade-pg-cluster ];
services.postgresql = {
enable = true;
package = pkgs.postgresql_15;
checkConfig = true;
ensureDatabases = [ "nextcloud" ];
#initialScript = pkgs.writeText "create-matrix-db.sql" ''
# CREATE ROLE "matrix-synapse" WITH LOGIN;
# CREATE DATABASE "synapse" WITH OWNER "matrix-synapse" TEMPLATE template0 LC_COLLATE = "C" LC_CTYPE = "C";
# GRANT ALL PRIVILEGES ON DATABASE "synapse" TO "matrix-synapse";
#''; # These are done manually in order to set the LC_COLLATE values properly
ensureUsers = [
{
name = "nextcloud";
ensureDBOwnership = true;
}
];
settings = {
log_connections = true;
log_statement = "all";
logging_collector = true;
log_filename = "postgresql.log";
};
identMap = ''
root root postgres
'';
};
services.postgresqlBackup = {
enable = true;
databases = [ "nextcloud" ];
};
services.logrotate = {
enable = true;
settings = {
postgresBackup = {
enable = true;
files = "${config.services.postgresqlBackup.location}/*.gz";
};
postgresLog = {
enable = true;
files = "/var/lib/postgresql/*/log/*.log";
compress = true;
compresscmd = "${pkgs.xz}/bin/xz";
};
};
};
greg.backup.jobs.greg-postgresql-backup = {
src = config.services.postgresqlBackup.location;
dest = "linode-postgres";
};
}
@@ -1,60 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ pkgs, ... }:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
environment.systemPackages = with pkgs; [
];
greg = {
home = true;
tailscale = {
enable = true;
tags = [ "home" ];
};
};
networking = {
hostName = "proxmoxtemplate"; # Define your hostname.
# defaultGateway = {
# address = " 10.42.1.2";
# interface = "enp6s18";
# };
# interfaces = {
# enp6s18 = {
# ipv4.addresses = [
# {
# address = "10.42.1.8";
# prefixLength = 16;
# }
# ];
# };
# };
nameservers = [ "10.42.1.5" ];
};
services.qemuGuest.enable = true;
system.stateVersion = "24.11"; # Did you read the comment?
# Define a user account. Don't forget to set a password with passwd.
users.users.greg = {
isNormalUser = true;
description = "Greg Hellings";
extraGroups = [ "wheel" ];
packages = with pkgs; [ ];
};
}
@@ -1,50 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
lib,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [
"uhci_hcd"
"ehci_pci"
"ahci"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/507251f1-efe7-448d-8de8-91ee582a9afb";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/7115-EFA6";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp6s18.useDHCP = lib.mkDefault true;
}
+1
View File
@@ -15,6 +15,7 @@
(name: value: { (name: value: {
inherit name; inherit name;
address = builtins.getAttr netAttr value; address = builtins.getAttr netAttr value;
aliases = lib.optionals (builtins.hasAttr "aliases" value) (builtins.getAttr "aliases" value);
}) })
( (
lib.filterAttrs ( lib.filterAttrs (
+4 -4
View File
@@ -15,7 +15,7 @@ spec:
chart: chart:
spec: spec:
chart: gitea chart: gitea
version: "12.5.3" version: "12.6.0"
sourceRef: sourceRef:
kind: HelmRepository kind: HelmRepository
name: gitea-repository name: gitea-repository
@@ -35,7 +35,7 @@ spec:
storageClass: longhorn-default storageClass: longhorn-default
image: image:
tag: "1.25.5" tag: "1.26.2"
replicaCount: 1 replicaCount: 1
@@ -66,8 +66,8 @@ spec:
APP_NAME: "Gitea: Greg's Cup of Git" APP_NAME: "Gitea: Greg's Cup of Git"
RUN_MODE: dev RUN_MODE: dev
server: server:
DOMAIN: "thehellings.com" DOMAIN: "shire-zebra.ts.net"
ROOT_URL: "https://src.thehellings.com" ROOT_URL: "https://gitea.shire-zebra.ts.net"
SSH_PORT: "2222" SSH_PORT: "2222"
database: database:
DB_TYPE: postgres DB_TYPE: postgres
+17
View File
@@ -12,3 +12,20 @@ spec:
tls: tls:
- hosts: - hosts:
- gitea - gitea
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gitea-direct
spec:
rules:
- host: git.k3s.nebula.thehellings.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: gitea-release-http
port:
name: http
+1 -1
View File
@@ -27,7 +27,7 @@ spec:
chart: chart:
spec: spec:
chart: longhorn chart: longhorn
version: "1.11.1" version: "1.11.2"
sourceRef: sourceRef:
kind: HelmRepository kind: HelmRepository
name: longhorn name: longhorn
+2
View File
@@ -19,6 +19,7 @@ spec:
kind: HelmRepository kind: HelmRepository
name: mariadb-operator name: mariadb-operator
interval: "1h" interval: "1h"
version: "26.3.0"
--- ---
apiVersion: helm.toolkit.fluxcd.io/v2 apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease kind: HelmRelease
@@ -33,6 +34,7 @@ spec:
kind: HelmRepository kind: HelmRepository
name: mariadb-operator name: mariadb-operator
interval: "1h" interval: "1h"
version: "26.3.0"
dependsOn: dependsOn:
- name: mariadb-operator-crds - name: mariadb-operator-crds
- name: longhorn - name: longhorn
@@ -11,6 +11,7 @@ spec:
kind: HelmRepository kind: HelmRepository
name: mariadb-operator name: mariadb-operator
interval: "1h" interval: "1h"
version: "26.3.0"
dependsOn: dependsOn:
- name: mariadb-operator-crds - name: mariadb-operator-crds
- name: mariadb-operator - name: mariadb-operator
+17
View File
@@ -13,3 +13,20 @@ spec:
tls: tls:
- hosts: - hosts:
- matrix - matrix
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: matrix-direct
spec:
rules:
- host: matrix.k3s.nebula.thehellings.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: dendrite
port:
number: 8008
+1
View File
@@ -77,6 +77,7 @@ in
programs.firefox = { programs.firefox = {
enable = true; # (!pkgs.stdenv.hostPlatform.isDarwin); enable = true; # (!pkgs.stdenv.hostPlatform.isDarwin);
configPath = if pkgs.stdenv.hostPlatform.isDarwin then "${config.home.homeDirectory}/Library/Application Support/Firefox" else "${config.xdg.configHome}/mozilla/firefox";
package = pkgs.firefox-bin; package = pkgs.firefox-bin;
policies = { policies = {
DisableAppUpdate = true; DisableAppUpdate = true;
+33 -5
View File
@@ -316,6 +316,26 @@
name = "Buildbot"; name = "Buildbot";
url = "http://jeremiah.shire-zebra.ts.net:8010/"; url = "http://jeremiah.shire-zebra.ts.net:8010/";
} }
{
name = "Garage WebUI";
url = "http://nas1.shire-zebra.ts.net:30186/";
}
{
name = "Garage RPC";
url = "http://nas1.shire-zebra.ts.net:30187/";
}
{
name = "Garage S3 API";
url = "http://nas1.shire-zebra.ts.net:30188/";
}
{
name = "Garage S3 Web";
url = "http://nas1.shire-zebra.ts.net:30189/";
}
{
name = "Garage Admin";
url = "http://nas1.shire-zebra.ts.net:30190/";
}
]; ];
} }
{ {
@@ -399,16 +419,24 @@
name = "Media"; name = "Media";
bookmarks = [ bookmarks = [
{ {
name = "Prowlarr"; name = "Flaresolverr";
url = "https://hosea.shire-zebra.ts.net:9696/"; url = "http://nas1.shire-zebra.ts.net:30098";
} }
{ {
name = "Transmission"; name = "Prowlarr";
url = "https://hosea.shire-zebra.ts.net:9091/"; url = "http://nas1.shire-zebra.ts.net:30050/";
}
{
name = "Sonarr (TV)";
url = "http://nas1.shire-zebra.ts.net:30113/";
} }
{ {
name = "Radarr (Movies)"; name = "Radarr (Movies)";
url = "https://hosea.shire-zebra.ts.net:7878/"; url = "http://nas1.shire-zebra.ts.net:30025/";
}
{
name = "Deluge";
url = "http://nas1.shire-zebra.ts.net:30038/";
} }
]; ];
} }
+2 -2
View File
@@ -62,12 +62,12 @@ in
if cfg.cache then if cfg.cache then
[ [
#"http://chronicles.shire-zebra.ts.net:9000/binary-cache/" #"http://chronicles.shire-zebra.ts.net:9000/binary-cache/"
"http://nas1.shire-zebra.ts.net:9000/niks3" "http://niks3.nas1.shire-zebra.ts.net:30189/"
#"http://nas1.shire-zebra.ts.net:8080/default" #"http://nas1.shire-zebra.ts.net:8080/default"
] ]
else else
[ [
"http://nas1.thehellings.lan:8080/default" "http://niks3.nas1.thehellings.lan:30189/"
] ]
) )
++ [ ++ [
-27
View File
@@ -1,7 +1,6 @@
{ {
config, config,
lib, lib,
pkgs,
... ...
}: }:
@@ -18,35 +17,9 @@ with lib;
}; };
config = mkIf cfg { config = mkIf cfg {
age.secrets.attic.file = ../../secrets/attic.age;
networking.domain = "thehellings.lan"; networking.domain = "thehellings.lan";
time.timeZone = "America/Chicago"; time.timeZone = "America/Chicago";
systemd.services.attic-client = {
enable = true;
description = "Attic client watch-store service";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
Restart = "on-failure";
RestartSec = "5s";
};
preStart = ''
set -x
mkdir -p $XDG_CONFIG_HOME/attic
cp ${config.age.secrets.attic.path} $XDG_CONFIG_HOME/attic/config.toml
'';
script = "${pkgs.attic-client}/bin/attic watch-store --ignore-upstream-cache-filter default";
environment = {
XDG_CONFIG_HOME = "/var/lib/attic-client";
};
};
systemd.tmpfiles.rules = [
"d /var/lib/attic-client 0755 root root -"
];
# Open Prometheus exporter ports on LAN-connected hosts only. # Open Prometheus exporter ports on LAN-connected hosts only.
# NOT in baseline.nix to avoid exposing these on internet-facing hosts (e.g. linode). # NOT in baseline.nix to avoid exposing these on internet-facing hosts (e.g. linode).
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
+44 -14
View File
@@ -14,6 +14,9 @@ let
url = "https://github.com/fluxcd/flux2/releases/download/v2.7.2/install.yaml"; url = "https://github.com/fluxcd/flux2/releases/download/v2.7.2/install.yaml";
sha256 = "sha256-Qs1qJmgZm8q9xZsORjT/N/wzpbWVVODXtzDpjnAYMuQ="; sha256 = "sha256-Qs1qJmgZm8q9xZsORjT/N/wzpbWVVODXtzDpjnAYMuQ=";
}; };
keepaliveIp = "10.42.5.1";
nebulaName = "k3s.nebula.thehellings.com";
nebulaIp = "10.157.100.1";
in in
{ {
options.greg = { options.greg = {
@@ -43,6 +46,13 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
assertions = [
{
assertion = config.greg.nebula.enable;
message = "Configure Nebula for this host, first";
}
];
age.secrets = { age.secrets = {
bw_secret.file = ../../secrets/kubernetes/bw_secret.age; bw_secret.file = ../../secrets/kubernetes/bw_secret.age;
dendrite_key.file = ../../secrets/dendrite_key.age; dendrite_key.file = ../../secrets/dendrite_key.age;
@@ -95,6 +105,9 @@ in
"--supervisor-metrics=true" "--supervisor-metrics=true"
"--tls-san ${config.networking.hostName}.thehellings.lan" "--tls-san ${config.networking.hostName}.thehellings.lan"
"--tls-san ${config.networking.hostName}.shire-zebra.ts.net" "--tls-san ${config.networking.hostName}.shire-zebra.ts.net"
"--tls-san ${keepaliveIp}"
"--tls-san ${nebulaName}"
"--tls-san ${nebulaIp}"
]; ];
manifests = { manifests = {
cert-manager.source = cert-manager; cert-manager.source = cert-manager;
@@ -110,20 +123,37 @@ in
keepalived = { keepalived = {
enable = true; enable = true;
openFirewall = true; openFirewall = true;
vrrpInstances.kubernetes = { vrrpInstances = {
interface = cfg.vipInterface; kubernetes = {
priority = cfg.priority; interface = cfg.vipInterface;
state = if (config.networking.hostName == "isaiah") then "MASTER" else "BACKUP"; priority = cfg.priority;
virtualIps = [ state = if (config.networking.hostName == "isaiah") then "MASTER" else "BACKUP";
{ virtualIps = [
addr = "10.42.5.1/16"; {
dev = cfg.vipInterface; addr = "${keepaliveIp}/16";
} dev = cfg.vipInterface;
]; }
virtualRouterId = 77; ];
extraConfig = '' virtualRouterId = 77;
advert_int 1 extraConfig = ''
''; advert_int 1
'';
};
k3s-nebula = {
interface = "nebula0";
priority = 1;
state = if (config.networking.hostName == "isaiah") then "MASTER" else "BACKUP";
virtualIps = [
{
addr = "${nebulaIp}/16";
dev = "nebula0";
}
];
virtualRouterId = 78;
extraConfig = ''
advert_int 1
'';
};
}; };
}; };
openiscsi = { openiscsi = {
+73 -37
View File
@@ -9,11 +9,9 @@
"tailscale": "100.64.0.0/10" "tailscale": "100.64.0.0/10"
}, },
"hosts": { "hosts": {
"chronicles": { "builder2": {
"ip": "10.42.1.4", "ip": "10.42.1.17",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS", "system": "x86_64-linux"
"external": true,
"ts": "100.119.228.115"
}, },
"exodus": { "exodus": {
"ip": null, "ip": null,
@@ -30,6 +28,15 @@
"tags": ["router", "server"], "tags": ["router", "server"],
"nebulaIp": "10.157.0.2" "nebulaIp": "10.157.0.2"
}, },
"gregory.hellings-mbp": {
"external": true,
"system": "aarch64-darwin",
"user": "gregory.hellings"
},
"gregs-MacBook-Pro-16-inch-Nov-2024": {
"external": true,
"system": "aarch64-darwin"
},
"hosea": { "hosea": {
"ip": "10.42.1.7", "ip": "10.42.1.7",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKLIwkTTXA56sUlUjEulXXZRvZy5H4a5ZwgKWLlpkQDz", "pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKLIwkTTXA56sUlUjEulXXZRvZy5H4a5ZwgKWLlpkQDz",
@@ -38,10 +45,6 @@
"tags": ["server"], "tags": ["server"],
"nebulaIp": "10.157.0.3" "nebulaIp": "10.157.0.3"
}, },
"icdm-root": {
"external": true,
"system": "x86_64-linux"
},
"isaiah": { "isaiah": {
"builder": true, "builder": true,
"ip": "10.42.1.6", "ip": "10.42.1.6",
@@ -56,12 +59,12 @@
"external": true, "external": true,
"system": "x86_64-linux" "system": "x86_64-linux"
}, },
"gregory.hellings-mbp": { "ivr": {
"external": true, "external": true,
"system": "aarch64-darwin", "system": "aarch64-darwin"
"user": "gregory.hellings"
}, },
"jeremiah": { "jeremiah": {
"aliases": ["buildbot"],
"builder": true, "builder": true,
"ip": "10.42.1.8", "ip": "10.42.1.8",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOjQjXq9WYU2Ki27BR9WwJ4ZruS/lJXbjC1b0Q42Adi0", "pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOjQjXq9WYU2Ki27BR9WwJ4ZruS/lJXbjC1b0Q42Adi0",
@@ -71,14 +74,12 @@
"tags": ["builder", "kube", "server"], "tags": ["builder", "kube", "server"],
"nebulaIp": "10.157.0.5" "nebulaIp": "10.157.0.5"
}, },
"joel": { "kuma": {
"external": true, "ip": "10.42.1.19",
"ip": "10.42.0.4", "nebulaIp": "10.157.0.8",
"ts": null "pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIhr+LmYMOk4Hixxew2FiAvL8sycgQvnhK8PBGjfnkJb",
}, "system": "x86_64-linux",
"gregs-MacBook-Pro-16-inch-Nov-2024": { "tags": ["server"]
"external": true,
"system": "aarch64-darwin"
}, },
"lithic": { "lithic": {
"external": true, "external": true,
@@ -92,10 +93,6 @@
"tags": ["public", "server"], "tags": ["public", "server"],
"nebulaIp": "10.157.0.1" "nebulaIp": "10.157.0.1"
}, },
"ivr": {
"external": true,
"system": "aarch64-darwin"
},
"MacBook-Pro.local": { "MacBook-Pro.local": {
"external": true, "external": true,
"system": "aarch64-darwin" "system": "aarch64-darwin"
@@ -104,23 +101,10 @@
"external": true, "external": true,
"system": "aarch64-darwin" "system": "aarch64-darwin"
}, },
"nas1": {
"external": true,
"ip": "10.42.1.14",
"ts": "100.114.187.61"
},
"nixos": { "nixos": {
"external": true, "external": true,
"system": "x86_64-linux" "system": "x86_64-linux"
}, },
"printer": {
"external": true,
"ip": "10.42.1.3"
},
"proxmoxtemplate": {
"external": true,
"system": "x86_64-linux"
},
"wsl": { "wsl": {
"external": true, "external": true,
"system": "aarch64-linux" "system": "aarch64-linux"
@@ -135,5 +119,57 @@
"tags": ["builder", "kube", "server"], "tags": ["builder", "kube", "server"],
"nebulaIp": "10.157.0.6" "nebulaIp": "10.157.0.6"
} }
},
"external": {
"chronicles": {
"ip": "10.42.1.4",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS",
"ts": "100.119.228.115",
"aliases": ["s3"]
},
"hermes": {
"ip": "10.42.1.18",
"mac": "BC:24:11:E4:72:AB",
"nebulaIp": "10.157.0.8",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILFYyzz/9i5rXprCQj9IL1ulrbQ6E9BOSeOcvf4D/b0G",
"tags": ["server"]
},
"joel": {
"ip": "10.42.0.4"
},
"k3s": {
"aliases": ["*.k3s"],
"ip": "10.42.5.1",
"nebulaIp": "10.157.100.1"
},
"nas1": {
"aliases": ["*.nas1"],
"ip": "10.42.1.14",
"ts": "100.114.187.61"
},
"printer": {
"ip": "10.42.1.3"
},
"pve2": {
"ip": "10.42.1.15"
},
"pve2bmc": {
"ip": "10.42.6.2",
"mac": "00:25:90:4b:34:e8"
},
"pve3": {
"ip": "10.42.1.16"
},
"pve3bmc": {
"ip": "10.42.6.3",
"mac": "00:25:90:4a:dc:2e"
},
"pve4": {
"ip": "10.42.1.17"
},
"pve4bmc": {
"ip": "10.42.6.4",
"mac": "00:25:90:4a:d8:2e"
}
} }
} }
+10
View File
@@ -16,6 +16,15 @@ let
adblock_update = c ./adblock_update.nix { }; adblock_update = c ./adblock_update.nix { };
brew = c ./homebrew.nix { }; brew = c ./homebrew.nix { };
create_ssl = c ./create_ssl.nix { }; create_ssl = c ./create_ssl.nix { };
dockerCompat =
pkgs.runCommand "docker-compat"
{
nativeBuildInputs = [ ];
}
''
mkdir -p $out/bin
ln -s ${pkgs.podman}/bin/podman $out/bin/docker
'';
gcc-tune = c ./gcc-tune.nix { }; gcc-tune = c ./gcc-tune.nix { };
#gen-build = c ./gen-build { }; #gen-build = c ./gen-build { };
hms = c ./hms { }; hms = c ./hms { };
@@ -23,6 +32,7 @@ let
inject = c ./inject.nix { }; inject = c ./inject.nix { };
setup-ssh = c ./setup-ssh { }; setup-ssh = c ./setup-ssh { };
upgrade-pg-cluster = c ./upgrade-pg-cluster.nix { }; upgrade-pg-cluster = c ./upgrade-pg-cluster.nix { };
zim-updater = c ./zim/updater.nix { };
}; };
x86Linux = { x86Linux = {
qemu-hook = c ./qemu-hook.nix { }; qemu-hook = c ./qemu-hook.nix { };
+28 -28
View File
@@ -2,18 +2,18 @@
"en": { "en": {
"gutenberg": { "gutenberg": {
"name": "gutenberg_en_all", "name": "gutenberg_en_all",
"version": "2023-08", "version": "2025-11",
"hash": "sha256-OXmdHdsLZcW4nCUQsy7sMpUssS8NV7ztkCgS/nsISuw=" "hash": "sha256-AWd8jVVKHKssv9AgrJnryn3Wx0084NE/JmorpgPfryg="
}, },
"phet": { "phet": {
"name": "phet_en_all", "name": "phet_en_all",
"version": "2025-03", "version": "2026-05",
"hash": "sha256-ARuUzU2o17J2/ZedHc2acXl33dtHCbQJEb72UQUEm1Y=" "hash": "sha256-zAAq/X5rjQUiYmjMpBtWP5z3J2ZHJMmIxFKnxLAhOlA="
}, },
"wikibooks": { "wikibooks": {
"name": "wikibooks_en_all_maxi", "name": "wikibooks_en_all_maxi",
"version": "2025-10", "version": "2026-04",
"hash": "sha256-ONBh/ze1Fv2Ffm5b9vDzYS/i2cWSa4pM4MLZnozr2n8=" "hash": "sha256-wt7Zr+RkfCsFrOudMCYBADacu6IvPQDkZ6Y0VG2j9hA="
}, },
"wikipedia": { "wikipedia": {
"name": "wikipedia_en_all_maxi", "name": "wikipedia_en_all_maxi",
@@ -22,40 +22,40 @@
}, },
"wikisource": { "wikisource": {
"name": "wikisource_en_all_maxi", "name": "wikisource_en_all_maxi",
"version": "2025-11", "version": "2026-05",
"hash": "sha256-p1Jio+PMTZVSLIDIOBeMG3acXJg83CwQM7zIWDUyozM=" "hash": "sha256-OA4b+U8mxpcX3fst6hrMyctucYTQOlG/b4qZDiVlcf4="
}, },
"wikiversity": { "wikiversity": {
"name": "wikiversity_en_all_maxi", "name": "wikiversity_en_all_maxi",
"version": "2025-11", "version": "2026-05",
"hash": "sha256-IG/gAUdc/vHRrIWGHhw8vMJdLWwqrNbfh+SiclQRIAI=" "hash": "sha256-8mZ1CSUcF4QnDIyN0M2KedQ4pcSUCmzHBlOm93MYpCE="
}, },
"wiktionary": { "wiktionary": {
"name": "wiktionary_en_all_nopic", "name": "wiktionary_en_all_nopic",
"version": "2025-09", "version": "2026-05",
"hash": "sha256-Ghcb60qeGaSJtTKQkJoMx/XucX7Lt1XY145lD3gHlMg=" "hash": "sha256-Dwiz+viVQt0zb077R9KQRgtUtxG9ixA/DeXAkCdD4rM="
} }
}, },
"fr": { "fr": {
"gutenberg": { "gutenberg": {
"name": "gutenberg_fr_all", "name": "gutenberg_fr_all",
"version": "2025-10", "version": "2026-01",
"hash": "sha256-gLHxLXJNwwcxM/mZHtoJ8ojbGQ1fugxgni/+RXccwhU=" "hash": "sha256-sGn1TeKwBK0+Er5YOJWq6g0itEm4gIGvKxv/PW0DIao="
}, },
"phet": { "phet": {
"name": "phet_fr_all", "name": "phet_fr_all",
"version": "2025-03", "version": "2026-05",
"hash": "sha256-CSboZNTIowLLhp1u9wkxH8xmu3LvQNx5q493AOYJRIc=" "hash": "sha256-bJmchFnaPcofE/hy3ZcRggMT9osHqXwLbwMLJ+cpF28="
}, },
"wikibooks": { "wikibooks": {
"name": "wikibooks_fr_all_maxi", "name": "wikibooks_fr_all_maxi",
"version": "2025-09", "version": "2026-07",
"hash": "sha256-KHCc/73L5Bd9iZ47SRV6vpI8fVM1v9hk1TpEvTro2uo=" "hash": "sha256-csI+E5UFGi42BLGWWHxQhVr5KSihCFc53KGKwo557Ck="
}, },
"wikipedia": { "wikipedia": {
"name": "wikipedia_fr_all_maxi", "name": "wikipedia_fr_all_maxi",
"version": "2025-06", "version": "2026-05",
"hash": "sha256-ve7Mbh96/ObNbV/KVNYZpfLN+HdWlJ7C5LItEdVkRH0=" "hash": "sha256-YUAbGzYYr+c2RQqGjHIF9XL1kNsxDgRKnHK1H7/PtDE="
}, },
"wikisource": { "wikisource": {
"name": "wikisource_fr_all_maxi", "name": "wikisource_fr_all_maxi",
@@ -64,25 +64,25 @@
}, },
"wikiversity": { "wikiversity": {
"name": "wikiversity_fr_all_maxi", "name": "wikiversity_fr_all_maxi",
"version": "2025-09", "version": "2026-05",
"hash": "sha256-55fdtw/cRezq6nkRp6wuwkukBiqsQKdwh9QWVAgFcBI=" "hash": "sha256-nVDHtkWIOJkoiGixnA1zVR1QS58thjc12FJyagK3Ec0="
}, },
"wiktionary": { "wiktionary": {
"name": "wiktionary_fr_all_nopic", "name": "wiktionary_fr_all_nopic",
"version": "2025-11", "version": "2026-05",
"hash": "sha256-P0CJptee5rDzccxyRDBzyRLuuFOcaLsJYi6DkBFUfIc=" "hash": "sha256-7UXByW2IIL0hec8RPT39jpg5IEGvRMD47hc4Y4vFkJs="
} }
}, },
"ht": { "ht": {
"phet": { "phet": {
"name": "phet_ht_all", "name": "phet_ht_all",
"version": "2025-03", "version": "2026-05",
"hash": "sha256-bHrPzE8H7ptrP6r5wPlXSsXNlTiKxJ9KatABC4kwx+s=" "hash": "sha256-GiJ1jllhioyMYidQ7+Lcbdd9JN2yf04ZQgnO8XaGAqY="
}, },
"wikipedia": { "wikipedia": {
"name": "wikipedia_ht_all_maxi", "name": "wikipedia_ht_all_maxi",
"version": "2026-04", "version": "2026-07",
"hash": "sha256-qUX0pKxIyNsWX4V6kNIsP4Z9nc6TDhwdDR0MmpDOQFs=" "hash": "sha256-InS9cMRaIv9ArlKVwKUypz56m4DgSR7Tl6XpSTMzH+o="
} }
} }
} }
+167 -112
View File
@@ -9,7 +9,7 @@ import (
"net/http" "net/http"
"os" "os"
"os/exec" "os/exec"
"path/filepath" "reflect"
"regexp" "regexp"
"sort" "sort"
"strings" "strings"
@@ -17,27 +17,144 @@ import (
const BASE = "https://download.kiwix.org/zim" const BASE = "https://download.kiwix.org/zim"
func getTypes() []string { // ///////////////////////////////////////////////////////////////////////////
return []string{ // //////////////// THE BLOB ITSELF /////////////////////////////////////////
"phet", // ///////////////////////////////////////////////////////////////////////////
"wikipedia", type Blobs struct {
"wiktionary", En Language `json:"en"`
"wikiversity", Fr Language `json:"fr"`
"wikisource", Ht Language `json:"ht"`
"wikibooks", dirty bool
"gutenberg", }
"ted",
func (b *Blobs) Populate() {
done := make(chan bool)
waitFor := 0
// Launch self-populating efforts
blobType := reflect.Indirect(reflect.ValueOf(b)).Type()
for f := range blobType.Fields() {
if f.IsExported() {
//fmt.Printf("%s:\tBeginning population efforts\n", f.Name)
waitFor += 1
go reflect.Indirect(reflect.ValueOf(b)).
FieldByName(f.Name).
Addr().
Interface().
(*Language).
Populate(strings.ToLower(f.Name), done)
}
}
// Wait until all languages are completed
for d := range done {
waitFor -= 1
if waitFor == 0 {
fmt.Println("Completed waiting for all languages")
close(done)
break
}
b.dirty = b.dirty || d
} }
} }
func getLanguages() []string { /////////////////////////////////////////////////////////////////////////////
return []string{ //////////////////////// The Language ///////////////////////////////////////
"ht", /////////////////////////////////////////////////////////////////////////////
"en",
"fr", type Language struct {
Gutenberg *Zim `json:"gutenberg,omitempty"`
Phet *Zim `json:"phet,omitempty"`
Ted *Zim `json:"ted,omitempty"`
Wikibooks *Zim `json:"wikibooks,omitempty"`
Wikipedia *Zim `json:"wikipedia,omitempty"`
Wikisource *Zim `json:"wikisource,omitempty"`
Wikiversity *Zim `json:"wikiversity,omitempty"`
Wiktionary *Zim `json:"wiktionary,omitempty"`
dirty bool
}
func (l *Language) Populate(code string, done chan bool) {
childDone := make(chan bool)
waitFor := 0
languageType := reflect.Indirect(reflect.ValueOf(l)).Type()
l.dirty = false
for f := range languageType.Fields() {
if f.IsExported() {
ptrPtrZim := reflect.Indirect(reflect.ValueOf(l)).
FieldByName(f.Name)
if ptrPtrZim.IsValid() && !ptrPtrZim.IsNil() {
waitFor += 1
go reflect.Indirect(ptrPtrZim).
Addr().
Interface().
(*Zim).
Populate(strings.ToLower(f.Name), code, childDone)
} else {
// TODO: Figure out how to set a value over the nil pointer
// of the field, so we can auto-detect when these are available
// in the future
// waitFor += 1
//z := &Zim{Name: f.Name, Version: "1999-01-01", Hash: ""}
//ptrPtrZim.Set(reflect.ValueOf(z))
//go z.Populate(strings.ToLower(f.Name), code, childDone)
}
}
}
// Wait until children are all done
for d := range childDone {
waitFor -= 1
if waitFor == 0 {
close(childDone)
break
}
l.dirty = l.dirty || d
}
//fmt.Printf("%s\tFinished populate\n", code)
done <- l.dirty
}
// ///////////////////////////////////////////////////////////////////////////
// ////////////////////// A Single Zim ///////////////////////////////////////
// ///////////////////////////////////////////////////////////////////////////
type Zim struct {
Name string `json:"name"`
Version string `json:"version"`
Hash string `json:"hash"`
dirty bool
}
func (z *Zim) Populate(category string, language string, done chan bool) {
//fmt.Printf("%s:%s\tBeginning populate for\n", language, category)
// Look for a possible Zim file
links := getLinks(getPage(category))
link, err := getName(links, category, language)
if err != nil {
fmt.Printf("%s:%s\tNo zim found\n", language, category)
done <- false
return
}
//fmt.Printf("%s:%s\tFound link: %s\n", category, language, link)
// Extract name and version
re := regexp.MustCompilePOSIX("^([a-zA-Z_]+)_([0-9-]+)\\.zim$")
match := re.FindStringSubmatch(link)
if len(match) != 3 {
fmt.Printf("%s:%s Matches: %s", language, category, match)
os.Exit(1)
}
// Check if the name and version mismatch
if match[1] == z.Name && match[2] == z.Version {
fmt.Printf("Skipping existing hash: %s\n", link)
done <- false
} else {
z.Name = match[1]
z.Version = match[2]
// Fetch the Zim file, if it differs from what we currently have
z.UpdateHash(category)
done <- true
} }
} }
// Helper function to fetch the HTML of a given type page
func getPage(t string) string { func getPage(t string) string {
page, err := http.Get(fmt.Sprintf("%s/%s/", BASE, t)) page, err := http.Get(fmt.Sprintf("%s/%s/", BASE, t))
if err != nil { if err != nil {
@@ -48,6 +165,7 @@ func getPage(t string) string {
return string(pageBytes) return string(pageBytes)
} }
// Helper function to parse out all the links from the page
func getLinks(page string) []string { func getLinks(page string) []string {
ret := []string{} ret := []string{}
@@ -60,6 +178,7 @@ func getLinks(page string) []string {
return ret return ret
} }
// Helper function to get the most likely link for this particular entry
func getName(links []string, t, lang string) (string, error) { func getName(links []string, t, lang string) (string, error) {
candidates := []string{} candidates := []string{}
prefix := fmt.Sprintf("%s_%s_all", t, lang) prefix := fmt.Sprintf("%s_%s_all", t, lang)
@@ -79,44 +198,39 @@ func getName(links []string, t, lang string) (string, error) {
} }
} }
func getHash(ch chan result, file, category, language string) { // Helper function to get the hash value from the resulting link
// TODO: Only call this if the file doesn't already have a hash func (z *Zim) UpdateHash(category string) error {
// in the existing file file := fmt.Sprintf("%s_%s.zim", z.Name, z.Version)
fmt.Printf("Fetching hash for %s\n", file)
cmd := exec.Command( "nix-prefetch-url", fmt.Sprintf("%s/%s/%s", BASE, category, file)) // First fetch the file into our local Nix store
fmt.Printf("Fetching hash: %s\n", file)
cmd := exec.Command("nix-prefetch-url", fmt.Sprintf("%s/%s/%s", BASE, category, file))
out, err := cmd.Output() out, err := cmd.Output()
if err != nil { if err != nil {
fmt.Printf("Error fetching hash for %s (category: %s, language: %s): %v\n", file, category, language, err) fmt.Printf("%s: ERROR fetching hash: %v\n", file, err)
if exitErr, ok := err.(*exec.ExitError); ok { if exitErr, ok := err.(*exec.ExitError); ok {
fmt.Printf("Command stderr: %s\n", string(exitErr.Stderr)) fmt.Printf("Command stderr: %s\n", string(exitErr.Stderr))
} }
ch <- result{category, language, ""} return errors.New("Error fetching file")
return
} }
hash := strings.TrimSpace(string(out)) hash := strings.TrimSpace(string(out))
fmt.Printf("Successfully fetched hash for %s (category: %s, language: %s)\n", file, category, language) fmt.Printf("%s: Successfully fetched raw hash\n", file)
ch <- result{category, language, hash} fmt.Printf("%s: Hash is: %s\n", file, hash)
}
func outputIsValid(o map[string]map[string]Zim) bool { // Then, convert the hash to SRI
for a := range o { cmd2 := exec.Command("nix", "hash", "convert", "--to", "sri", hash, "--hash-algo", "sha256")
for b := range o[a] { out2, err2 := cmd2.Output()
if o[a][b].Hash == "" { if err2 != nil {
return false fmt.Printf("%s: Error converting hash to SRI: %v\n", file, err)
} if exitErr, ok := err.(*exec.ExitError); ok {
fmt.Printf("%s: Command stderr: %s\n", file, string(exitErr.Stderr))
} }
return errors.New("Error fetching file")
} }
return true z.Hash = strings.TrimSpace(string(out2))
} z.dirty = true
fmt.Printf("%s: Successfully convert hash to SRI: %s", file, out2)
type result struct { return nil
category, language, hash string
}
type Zim struct {
Name string `json:"name"`
Version string `json:"version"`
Hash string `json:"hash"`
} }
func main() { func main() {
@@ -125,90 +239,31 @@ func main() {
// Determine the output file path // Determine the output file path
var outputPath string var outputPath string
if *outputFile != "" { outputPath = *outputFile
outputPath = *outputFile
} else {
// Get the directory where updater.go is located
execPath, err := os.Executable()
if err != nil {
// Fallback to current directory if we can't determine executable path
outputPath = "blobs.json"
} else {
dir := filepath.Dir(execPath)
outputPath = filepath.Join(dir, "blobs.json")
}
}
fmt.Println("Writing file to ", outputPath) fmt.Println("Writing file to ", outputPath)
// Read existing cache if it exists // Read existing cache if it exists
cached := make(map[string]map[string]Zim) var blobs Blobs
if data, err := os.ReadFile(outputPath); err == nil { if data, err := os.ReadFile(outputPath); err == nil {
if err := json.Unmarshal(data, &cached); err != nil { if err := json.Unmarshal(data, &blobs); err != nil {
fmt.Printf("Warning: could not parse existing cache file: %v\n", err) fmt.Printf("Warning: could not parse existing cache file: %v\n", err)
} else { } else {
fmt.Printf("Loaded existing cache from %s\n", outputPath) fmt.Printf("Loaded existing cache from %s\n", outputPath)
} }
} else {
fmt.Printf("Error reading file: %s", err)
os.Exit(1)
} }
blobs.Populate()
output := make(map[string]map[string]Zim) ret, err := json.MarshalIndent(&blobs, "", " ")
comms := make(chan result)
pendingHashes := 0
for _, t := range getTypes() {
page := getPage(t)
links := getLinks(page)
for _, lang := range getLanguages() {
if file, err := getName(links, t, lang); err == nil {
if _, ok := output[lang]; !ok {
output[lang] = make(map[string]Zim)
}
// Check if this file already exists in cache with same name
if cachedLang, ok := cached[lang]; ok {
if cachedEntry, ok := cachedLang[t]; ok && cachedEntry.Name == file {
// Reuse cached hash
fmt.Printf("Using cached hash for %s (category: %s, language: %s)\n", file, t, lang)
output[lang][t] = cachedEntry
continue
}
}
// File is new or name has changed, fetch hash
output[lang][t] = Zim{file, ""}
pendingHashes++
go getHash(comms, file, t, lang)
}
}
}
// Only wait for results if we actually spawned goroutines
if pendingHashes > 0 {
hashesReceived := 0
for r := range comms {
if entry, ok := output[r.language][r.category]; ok {
entry.Hash = r.hash
output[r.language][r.category] = entry
}
hashesReceived++
if hashesReceived >= pendingHashes {
close(comms)
break
}
}
}
// Verify all hashes are present
if !outputIsValid(output) {
fmt.Println("Warning: Some hashes are missing from the output")
}
ret, err := json.MarshalIndent(output, "", " ")
if err != nil { if err != nil {
fmt.Printf("Error marshaling JSON: %v\n", err) fmt.Printf("Error marshaling JSON: %v\n", err)
os.Exit(1) os.Exit(1)
} }
err = os.WriteFile(outputPath, ret, 0644) err = os.WriteFile(outputPath, []byte(fmt.Sprintf("%s\n", ret)), 0644)
if err != nil { if err != nil {
fmt.Printf("Error writing to file %s: %v\n", outputPath, err) fmt.Printf("Error writing to file %s: %v\n", outputPath, err)
os.Exit(1) os.Exit(1)
BIN
View File
Binary file not shown.
-37
View File
@@ -1,37 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 87huqg LKhlbZI1BygDI8E4kkzhw0/Y1BfWnzekf/URa/Bma30
uT7QzE8DPX8j3us7oNRKwu6hPUFpQosbcMRmMNgS/Gw
-> ssh-ed25519 8UnW5Q dDAJI5EnPMIhs5H21wLT84GWhkROEJRXE1QVp1aOH38
qZJt4Kip5qVZl9QoIFEXgrhtrlQEpbkfLarCgaHugj8
-> ssh-ed25519 UFfTmg kbrSoge204JvRPBszhAfMewPM4oHg0HkF52BNeb9kx8
E4ASRdn0pjF//GiFCjmRlgXRS2wiJxIXDFSjldMtTdQ
-> ssh-ed25519 xNtnoA 7b9/Z/qUEmRnFCiCYzVGJVvxvV8onjZemSg6sllaDyA
bQosZIGbaSsUqFO2JuRpIhm3FJd79JyYS43A9+zr+1w
-> ssh-ed25519 aY2AXA m4gIzzAX8pkBHHzsSykIy24E6Kru/I4uNnjihKH3JHg
S18CWIY5wNcR5PVkCqbjp1FJRrGxco6fdoykQeHhyX0
-> ssh-ed25519 AQhf1g LBmvyUbKRLKtPGIEqt+NwOSrtGwlFt2zqgdmRDHu9n8
zb8OnKRsJBEkH6eJ76mlKvJmtZ8NvVwVS9/0tsZlMUk
-> ssh-ed25519 mOmPfg TuPbRMlX9eRATxSbv6v88TtzGhOKWn5FOkIg4xR6FH0
NLNzJM/9r2jZ70Y2r5Hsc36gcRTSPw40Aabn/H7OE+4
-> ssh-ed25519 YJiRbw bVMyOOgBcFFRNulym46YwKAIPlOkbQhmQAo9kl4dRx8
5W2fIxGXCXbzULOismGg4NxE+VQ8LDEbODlJ0OpFMiI
-> ssh-ed25519 Nl/5yA ydFS0bVjjDzymhQFaBJ3YqDREQDpVO6VzgS2MBtuOUo
tNzj/85BiYe6th2N6A9ZkMSPKduwAIe/qnf2NVJiHOg
-> ssh-ed25519 GdLgCQ wmfT7bCzwnkwEtn2mRnElIM75MmdRw+33MhSegSHJWk
YHrCYB1wF1njNjzpIy3hKZ9l1cj7m5yicLuj71TvKr8
-> ssh-ed25519 tOH/HQ z5/GMQOtkpMWwWdMXqxmf12MM84xkgXL/OLliq3RHh0
mVhBt+uc7z/YkoIAyXTqBgv00cJOrZ0bsBP0lD9S24c
-> ssh-ed25519 FpzvfQ D8N5JQ+3rGdSZIPmzlZqO5VpS90v6r99WMXtyUqCGiw
A2SSvI4H5TRY13R/iOa60bCdc0zR6lUAHJVHfAUR5mQ
-> ssh-ed25519 2UotMw eaM1Kkzw53Oq8lW0BFn3rqWFcTQaTz9jcDsULDg/fwU
3QVYFrhKnvwWDpIdsyTp0amontUXePko8z8PeUub9EE
-> ssh-ed25519 kdPvzQ 08LE8a24S5cvuK9DVWD2ta0GjJMNzUidmgYT4RfhQDA
cRFH8vOr2y1/C9F2wZWV2deUxUpoL34IFRyOBHPYifI
-> ssh-ed25519 onmXpg J5MKGIovNwv4FyTN4ofExlHV8qYzU/J9O3MI4tZYcTo
iagT0Ypo8gTwvGpV66XNuNPedefx2S72q9hyeB2Rz/w
-> ssh-ed25519 CnhD0g se/N4hrYxOiukByYzsIhxToceXNuBO7J7VmM4muJ3Dk
cW+WW8iWjj3eXDqDO8aEON1ZH/+6AXQGAEXkLRbL3AI
-> ssh-ed25519 4ep2UA uyjvubY39oSGeCNsX3/VIdM5CzNBlrnRpkF+YN5MBCo
xiNuksI7olV5Db392Vjz/7uDNDIssGmI9bez6vSOXTk
--- VsGbd8K7JzHe/eoYUeTMwcg/GrY9SXVzNxL4HZ23tKQ
£_÷t/¢ªØËVÎÞ}7J'%?™Á‰Å0“¤¼^õ¿-„ÏÛ„äu4¥ù‹íäóü0!®ÝîËðMÜÅ·
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+36 -36
View File
@@ -1,37 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg CsPCBXcVp7krsPi1k0WbjKFZxUzuZNJkkpOImMDWNns -> ssh-ed25519 8UnW5Q MDrURGpcaqY6DVIURK6dJs7xKCGLtFS8+hH0UCRT7G4
h6evECCNa5VGBe1dtbVwOBFBPkzwUKPFyVdQsTNMUXo qsqMoWCrssVlJ2kP1cvP9+Fj+c07iFvbFs3Cs+RYVLM
-> ssh-ed25519 8UnW5Q 1pioLo4kA+RJ6r35H9FNCQ5LZqmYUmxZTVyTdD0o92Q -> ssh-ed25519 UFfTmg lTHOOV5/G7IPaYWqrAwM9Nb75//N9O1wMDFSUtyo1gI
4r/sOb3IcQElEJnKAgmYeHtubm1Hk/cdiY6gUI1GkHg kEWctDmQRHNzxMIwONsZo9EEIc/wkPxqX851BO6ohYo
-> ssh-ed25519 UFfTmg ruMzDG9lKKSHo2I1L/2wigVZs1Jhi6aTNmrr4zAyEiI -> ssh-ed25519 xNtnoA lm6OHoKNa8wB1ML5lA/xl13Xp8WUSF2UY89bP8BZP0E
3gsAmzM6fE8RL/fLL63pPIH75P9TW954nw11/JpU77M iPDWUaoViQ7faVkUf2V1MQxrklAw8lJ2KXfJZTYN2X4
-> ssh-ed25519 xNtnoA eTZoJFu1SqUoUGPcdVDw/2wW82xvRiSCnAmQSZPQT2w -> ssh-ed25519 aY2AXA 4E8FsRsfsEKsLNVvBRTAoxghfex8omAQcy8NKzJ17kw
Y9Cf+/h80vn2w6G9n+V4uNV7bj3tpOT1KWRKajM7d5k uzZQp9nVfyVH3dz0UinqZjsZ0Kft7tPVSk1EkE6NvA8
-> ssh-ed25519 aY2AXA c4MkdSio2FFkulOBKDSAG3Iq71ghRdw8/SQF0B98chY -> ssh-ed25519 AQhf1g rgcA2UeG0s75kSpok9+VR4ixNyZUqD+8ye1TJsMMA3Q
lvT+m2ey5+HqipuC7MrPQIKu8KrSsLHM0XRK8c0iS8w rfM5/54WWHrnG1qfex57tGH97lbvKM+J6TGztYOrU+c
-> ssh-ed25519 AQhf1g vLig+8a5jPo3cQhdmQw/C/P1hgzKHiVkVwUTkMBNmTk -> ssh-ed25519 r/3ipA 7pNJRvOFO5v2nlMPbXP9oad6jp1pPAsByfiEhdCTAWI
N5ROr2EtHpTwti7NByDiR8R3pOQ/STwlIuNeY1pDA20 Vh+iyg2P6fvNWyCS+V4087zRf+pCIBj0jsPX0DtPp0c
-> ssh-ed25519 mOmPfg WcbxDQfraXfxkN1+IGaArpIHOmlUlhGjBijQt5ZYSxE -> ssh-ed25519 mOmPfg 9WuzH4QasTe0NNcIf+XSremq5GuBZoKP+7t4MJNAFA0
6KHLewxXWwo8fVIuaTuY/T/igsI6CKqEl2tyM/gkn6g 5E1Rbupw8IUnTuicTubXWmwkJ2xVg5K4BpkZCsUj5UU
-> ssh-ed25519 YJiRbw IblKWpY9DeDSWDfvlEmNeWSV1lGdz9aHcv2oQVmKQFI -> ssh-ed25519 YJiRbw msPFM69Tuy/luxASGVA8ey77vqtvXNy7ytf2VxQWNi8
qPcdGcA6Z7YaLL5umR8ZOKzOyNIUJVHRBpV5HyAJeqw oD5vRs439A/YT5FxkSltl1Qf56NNhiKt17++vlFvwPA
-> ssh-ed25519 Nl/5yA wr0Q96yztc+Rf88q6ooiDHlKqpVdWPkRWApfJsc7uQc -> ssh-ed25519 Nl/5yA C3zn641k6eFQePbp2q7dwlIu7Iiw2aU5dmSrH2HCai4
hQZTwZ36mkajMcSbxDsL+TtAezJIY+H+J7VaU1QOqEo v1/XJRKIrIgHWfFtSDaFCvOKtcIR84abUZHPjaxP5bw
-> ssh-ed25519 GdLgCQ LiwfxrAh9dLjMeo6FglQzvUQ3hfWRAZr2naADkB5/WM -> ssh-ed25519 GdLgCQ ZztOWiw1ao1pvJ9REB/wBuxq00uyO+JAkIWjLUMueSc
Bn4fnoqTvKPd73qi28NAgAN8AZl4EWcr9e/uhuUwVgI zXSv3MauG2E2el+Yv5oocTgDQjQ1fKXLpm6y2OTyIvw
-> ssh-ed25519 tOH/HQ x35ypXVDI9C1wpquWxDUFYXYHxEsD2NJ0VIDosRONyE -> ssh-ed25519 tOH/HQ /eEgAf2KH1Zgd4yQf+kzyESkvPI8GKJC0MAJl+8+WD4
Aa5eZt98GQQZmKlBDzRC9KRyMCy2z1htSAsjKNGCuFw H35T+ulGSCrWAuIsZs8ISRJRj2wqpRrOGlaoq9fnN5o
-> ssh-ed25519 FpzvfQ jlAbIzsWi8eX+PTKn100NaiSoezN1kXzZ3gWUOKfQVg -> ssh-ed25519 FpzvfQ dRq/NtT/TxJ/k9WlaMl/PrLTvPzkhV8LpF/LxjqjGmM
NQARp2qsxIdSG3OLJyP33A97r6cBRaMSaneT8NBnhDI LJN8xxnNF3EcMmXKdLhc70b2Y6n9qS3A5wdFXY6hUjw
-> ssh-ed25519 2UotMw 53sXK937St2F3MzVIhmsjH6WeCSRdkpv4oFa2ZBaelI -> ssh-ed25519 2UotMw I+kJsu4GAflSfMjzE/8+vp6AZb88OpiCREuxfAnQPis
lNsjlQzS8Szj0FcAvrQno9rDO17iKDjMN7VwMLvIleE hRu7IbLMdc3U+NQo1PDhc+O9uyd/wJZyPtfTv9z9TvI
-> ssh-ed25519 kdPvzQ YdeMlv40jR9bFnXVjPJDpvCnqn091dCKAB60m4Obwgo -> ssh-ed25519 kdPvzQ uOLSQFzsGSNg1HsiJLCYi2Lp8pasc7H/jhUBlf6b0zg
vgPAO0evfCXQUX7Tu/G9ERUhLO3KiWXqpxIqATDl5vw KbUOl2WOsc6VuAC33SjEJS3tM3o82A3QO0bA9wd0rbA
-> ssh-ed25519 onmXpg mrDB6F061SjeYOZuUJVvZP8SzOVrFdpAAEfgPOzp608 -> ssh-ed25519 onmXpg NKdAvcN3TStWYtQeLW1oEn7+shQuuNBndHaQRAU4f1o
AzAEEHK6Q71YxPfiljl7ZCy0b3YBdSBMKORJd7Opkck vCuDnPc3tayIwDbHJneLQNoENyfA6GRpQi6+OZ34Jjc
-> ssh-ed25519 CnhD0g Ov3v97PyY79WoXUDAdvXEZvTE7ruIgDeXVz3jD5O1HY -> ssh-ed25519 CnhD0g Co6fy3fm8BUi2qn+xBY1X33N2m40jEM7CJhSQcLokR0
+0rSmiqdxP6PgplxLkim4AJtKPcjn7OlkXpcu0BsI4s kwrOzTRiVe1aQH/P+ua3xZNgNRZh2pfQrQl2k2Y727Q
-> ssh-ed25519 4ep2UA bDGTw6Msbh9sOp66l1VKGrT53AlrPv+QG2T6ZJv1pDk -> ssh-ed25519 4ep2UA /f1HxU62FqhDJyJ9fPMKiqJdw1m/UjASKuYhY5Aq8D8
WvHFJ3LIlpiuVhHUxY6egKifWNepzIB7Ls2R4Kx1Kng tckIOvPq3Qid9Z5ud2v9syaed/h+3GrackXKZonDYEg
--- Ec6/6bQEn4GQOedrSzE+Yw1xRjQA34sj29Tr3zLFgZo --- FHj/yA6RDV1VYPsi84z5Y3NrbfVUthwdtuRWqiKC57Q
NïP¢uGc!Wcݼ¯£ \¼ìæ—K-©;]Ðu¹!,ó$#nŒ¶dZ‹«­¦yž“-kX’BÕÙƒ°·ªc'‡Lò¯Flݪš6L‚n˸n’Ý£f$ƒðÀ´ê Õ=Â7T÷Ü`6¦K./ ¾¿àO Ö¼‰R•Pá€K…2NYqWÖ¹£®ê0v{±µi'¢žÖVûÆ!+‘|ÎÕ0¿ŽšÆ¼ú´Ìi ½†Ä?QŽq¢2Ô5ÖÀéŽ gÜ/c_
Binary file not shown.
+36 -36
View File
@@ -1,37 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg OP0JAd66/SUS9oBMmOAUdDc+zLgKJ90OUrfO5fhf/zk -> ssh-ed25519 8UnW5Q /cVdlKHdFUszYMCldfAZVCCHSt15HjcWFtz2TkiXyjY
YUlZvlaZF8o7BBPEYbxDeqiMmOnV3HdUUX3aUdhnPKk DWQdhHSYXFTHJG21uhDMlljeSqCKSriFtDW3LptRtK8
-> ssh-ed25519 8UnW5Q VD5yOGQB6wS7ChQwaLFCEYEF5Yt6bCA7mHrytolI8WU -> ssh-ed25519 UFfTmg 4ezUQ1CrfVmPvm/B4twGSqbYgN5aOKe7TfOzJCwzJXQ
Jphq2HxVsMJD79yZM1SlxpD5RuJnE05OfuH0aOIGPvk MiEugBcdP9lcO/nP1mpuf7lhPXKbUUd9zVu0gmeXasU
-> ssh-ed25519 UFfTmg 1s7VkQEbq1L9BCAOVlCQ4NfPfwYjcqItN4PMatuSTjE -> ssh-ed25519 xNtnoA I/664KfHWJsCcRxQC47dccXgl31HoxnUlt697f5cID4
EOj0rFqARHPeBRKP0chH5BJcr8lyLCFEBZ6wfAhYbbc DwENqVKt4GxU+ynL99K0kIj/qeT+krZvPXZefbij11A
-> ssh-ed25519 xNtnoA CKFIZ8blJvm+vT2xJxBz5xzp4afsIU56Z5gP6cxba3Q -> ssh-ed25519 aY2AXA 6VlRolPP+GvsEzSNDtY6NtqsV/fCLwkKX2frsVx/e34
scD+SuipcZkWT2WERFEnjwGdbA9XrXfsmIZ7r8bmM8U tBlkTlDE/iEOhO0zfgto98hiJzS4pEzr29iuZXL9nnM
-> ssh-ed25519 aY2AXA f6Mt6J6Iqdex7SP0ngYwFrQFOObwNx/kLp7QVsJkFVE -> ssh-ed25519 AQhf1g rjIeZ1pT0WmkWTxA27HfHLJRWNOSJXH1hWEFQaTWKk4
KtF/G7BBmgg0eonne52KN/hRSfc7muRg+aqllcaGZTU 4nPriRa628dVznIoL2Wqu7rC0h/34OCNgkrbqfewiZs
-> ssh-ed25519 AQhf1g sKGPNRD/rgVQj0/wModKct9dFOr1Nm20GJV44HLn7Es -> ssh-ed25519 r/3ipA UsT9khxY0QbCgjsjVq6C8w1sAc14ldHA47QIZ/z2i1M
rr4SInqIn8tUamEBACummSzUvq6TK/Nnz4M2zHY6dRQ DHf6CipFevIS+12XXO4hU8uFC9RtpDe8MZoTrdjM264
-> ssh-ed25519 mOmPfg sGlYKhIISYka5/5mVBGoCwEUk2j+6tcYRiDBtvKosVI -> ssh-ed25519 mOmPfg uVhT1cO1hfr9FF1vX01AVMfcuL4Fne8K21llW6MKAgc
938SaOYsIjFpJZJAfRV9JWUoCQZ2nm6NGn0AE5RtlM4 QJWSUgpSKCM8MionIw2uFM7sz0zrNhwPZUftDMQWfaU
-> ssh-ed25519 YJiRbw D58sw+Z+YuSoTg4pZeGOJcFCuRDVqA45R/r9MntQWB4 -> ssh-ed25519 YJiRbw Helxk3oufur9cbJSc5PLN6/LmIRCBQgD7WZqNyd292I
fpV33ShLgn3XuPxD2EZ3CQ2WdSdqmCQyfVOmMCPl9zs +9IKaKUkrJr/hWSq/+xIzYqbOqnxBBfVfBV6A+TEz/o
-> ssh-ed25519 Nl/5yA 7QHmS3lFG+cU8+Ik9iRvaXyf/vBPe7wa9sAYekQKB1c -> ssh-ed25519 Nl/5yA QDrpal6sH+qykRk9RbmNJVuQZnq1fU2KD2DfADBQFQM
dHsGrtXNbt0+reajFztW8SlGuz+0PTMsWbtUMcTaF2U XLPBHeipZz2TiS28SmQGsPikGyfhvCJCFPaFyMXtFz8
-> ssh-ed25519 GdLgCQ c+IZuoQzLMbn6N44w/SsCGaeL9KxwIe1Yj1iHLj0TQw -> ssh-ed25519 GdLgCQ EIEU+UNtsnnIDg9Cz/aUoCuLpgGysnpjMuzeWTHsMCM
KzWUk7/C1xDxZXSu5YKFiwctg0k6Vee6PmudFUPoEq8 +d6a83uoBqes28e0KTjxOulwhVPwdJ4K5dsBXAGSrDI
-> ssh-ed25519 tOH/HQ 0W8zyXYP6RzIBFfFZl3Z/b5IphG0OUZgJDgjvDC0FG0 -> ssh-ed25519 tOH/HQ ttYI97W+nqSunHhEHhaHrGPxIRmhKKyyHDgoFF6R5U4
WojVazNzk2mlfUCsNnJFC+74nYCEjO1fp0pvsq7FHLA +sf4VdWrsOTWfi7OUKET/OucniwkvctcyqP3eCqCI7E
-> ssh-ed25519 FpzvfQ mMziPqzzRrQDf0cYJS028icRScECfi8aCxPz3Xe/w1I -> ssh-ed25519 FpzvfQ hJigNhU18mMxIlIx/NvuZc9bi45PplnROyyDRzEknSk
1TzjHZYunhMmZCPMjam7LpvGtvw40hRuk0IlUUe45f0 b0aFC/vUi1CgRO3Dttodv3R/VBI5HJXk5eAb1PXY6rY
-> ssh-ed25519 2UotMw v8kYr544AHHIv1C5HJb47sFYAhLLPANZ0r1nWLjYYmo -> ssh-ed25519 2UotMw 8IEuY5An4B2NPjSyawKN6YpRlutsOjZdYpmr3Zed6EQ
Yr8QHe/V0LQJroyJncVabqS8m4YtF8mrMBMIaiZO7r0 R2PhWVN+HL+Cpa5UCeZnYDhUCDn+8wbvvHgWDyRWR4A
-> ssh-ed25519 kdPvzQ 7Uv+ltj/EOX/jseUjGXAryi9r1w6uO39ao3yeH3z0V4 -> ssh-ed25519 kdPvzQ xBmYNmttCwRBMQCyfvb16p2wuHrHwqtUo98RSRWiUCE
oVp5cJCiDi/Lb6cH708QanulTNI7386GalxHfYiZQWY oapGMLXigHx/anDaV2s9SZZosccqP1a8/2t/4yMLodM
-> ssh-ed25519 onmXpg nFhA0zvOJYDK8C7DNNIbJSi56UrjgHaXyhzQH+pNkmY -> ssh-ed25519 onmXpg hH0VAFzTN3CezRdY9KhLkYlHnrlvCo/eHlvnuTzVtWQ
Mrl7Urw2EJ/SIF+fnf4fqNMJ9QsF1YzKQLRIc4kPNPI vIyTINNw/pHL1gEl7MA4J7GvtL+8/oPjG86uDvET/jk
-> ssh-ed25519 CnhD0g slBtQIp3uM2x2NhUz+yt9z+4Y5IoGeohW03j/B0VSUU -> ssh-ed25519 CnhD0g XBpQYVj4CX7Bv64cFxR3YevKKW5Oelt1uFoQCZVR4kQ
yY1IRFJEgtNuKG6nP05XOiwPUZXTFxOgttT1gXBMBcc prmdbQuuTNMikogdkdhED8g9oWUXPP5u3Jn3qbqq6Pg
-> ssh-ed25519 4ep2UA Xe+tcFe77241jAAyj96ShjVsdCIA2ECNp72rJdefSj0 -> ssh-ed25519 4ep2UA S2PhUuDTrNBtZDdLUnnl6Ck0jAq+duWdhzAKtRNpuhQ
ruNsQAjf3dGmIxV7qNYPQAPRTWi18UDNOAETfMBAd4s dsEv7lSU0G6RAUBtqv7zg7nYt9vfTXzqvKjtTCgF0nk
--- FoB0CBe8heDBXHuPn056QFz6+RTC+AFPyRBewoI0cwo --- mNxL6onhO2/m3dfTuAosml1qIMtfUkNlucKPmG0t0so
.(\û*0›U݆P€{CˆL9Ö„ÕGèχ±£9e!‹–5)!¶j¸bÞ‘nmðÅ–b1_¨Ocþ–ÝsW¥¹6«Ðˆ Î†‹šÀ©è ˆŸÉ]tÇSìngç-ž„È`ò‘_ágÇœc$ÐH¾&úñwo[lăcßÐrz½u{€öÌ<÷åDƒgç>8<# ï*Ò\¾©w+=)É2@ú?&M—w^;{G*?¹À­÷n/™*ñ‚ð?×óÝ*¬ß1?Z8(ld:3óß¾•|ìÀßK½eû g^Ðä{âFPš€òídCŒIHÔBé¢Mg¡¶Þ®¿K•" ¤w%ìW1Góǧ<HK qfxt¯1„/
+37 -36
View File
@@ -1,37 +1,38 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg ua9lzblqM2d0AmRbEj9c6p8LVBxNkYYr/vH5+HFoDEI -> ssh-ed25519 8UnW5Q UlSvWFtyzP1itr1QuvrEQYhvw1oMjOgXyR1H8Geyc30
Y08ot6KWTZdHXjYUsc2hcKnQlJBtcmE1oD5+OX86J80 m7GOH/FvAh35dmtU8SrQUcHre3QjrHZ/rvbSzq+DJFI
-> ssh-ed25519 8UnW5Q QW+RWL8RfOoPfZEb+m2XHNgvlUoLZqPSDjx6riMCXDk -> ssh-ed25519 UFfTmg 4ifiDuC+WyaZCJEWLkUogxEFz/3CnwlMbBojSznie1A
DyJSnhbUWRCMUWlHYnz/jbqBxazGXEaxe6/T6CNtvsc qgeDtFVdt2+WGGlYJL43iIdu3+nmtHZJEh5R1PdwL/g
-> ssh-ed25519 UFfTmg XcNVYggkFQmj591cbFEpz0ishJgp90W1Eu1OWphmj1g -> ssh-ed25519 xNtnoA g73KMG80Xe8DP3ou9YllkmG4f5RtTu70md3WG6XVkzE
3/GL+Q2euyXgcapUXDt8Mw5Q2+bbk2C2voQgGuTtiUU gUylPhlmUwx2y4Ld2ibDFdIQHHPYGkbI9ghT/YBYuME
-> ssh-ed25519 xNtnoA CYfNyaWgYlM4oe/G2sI99gvldiKY9ScDsi7XPLnDTjU -> ssh-ed25519 aY2AXA VHCrb4MI+LIY169KZIOqlRoRHl7qeqeweI5/Q6IFq24
h07PCdnOUF4o6YggrJ27Cdc/Gb9cu5CE0cZegyqLiKc hA1eiydZmy+A8FtX8kPP9biAzI7SUPRzaJAMvayBXvE
-> ssh-ed25519 aY2AXA NxBftj7RM1QeZ5Np3Mt/xsxZ12XMtgHh/foWN2uyyT8 -> ssh-ed25519 AQhf1g Ht0O8KwIzi4FSjj3Gsx3d6tR9L1VWDssNw4MI0JH0GE
nXUQI/tjhtPSYH6GFDxw5oIQnrLrQHYfNpriXXqH5fg 6xWDy+DXY3etU3QSNs+6nS2vQ/zO6tBUcMKlpyCnWlA
-> ssh-ed25519 AQhf1g 8BTUwRGn9xPBIO+Ez2viFtp1B0LzWR69Aer0B/OfhS0 -> ssh-ed25519 r/3ipA CkosmEHp1uLBUzMTWkQLLT/2HicXU6QNQhbe2hyK3xo
uKAkoOTpuyLFnqKPXgTPYBriaNCQZz/hwSLkUKypBwo rHAaWdoqLtK7awKgXixVudFkzvvuJLqW0esFFJRTxOY
-> ssh-ed25519 mOmPfg FNLltRffV5bNxipVpxAOkfviS/RKJfrZ1TBWIVSspHM -> ssh-ed25519 mOmPfg z/D9xXbXsI2O4kOtHnaB9uqA7pAB6q2mpNzkQInNxRU
ML0HeuZwms//wyIBfXspWQPLh/DSbl5YkcyHHJ4vZ/8 ELp9idvf6ytjUlwXcwjDskx/nNxWzZBAu3z/35H2raA
-> ssh-ed25519 YJiRbw rgJDr6qSeN679l+aIfDuhonxcoGw1h5C+nVGS0ce3nE -> ssh-ed25519 YJiRbw PuTysdLGmt/N0K3HirjfBRv1v+rvnfXOl5EOZDyKOWU
c5xynEMZNtHuPb3wc9d8QADay6Pgf5dhSw9jLw5jkjw XQitNgPuduUQ0/kYD2oKgDaDAkM+eUsRDtJimxulE2E
-> ssh-ed25519 Nl/5yA /5IxJynZ+oP2iBZikH1dePktiwHrjYMSSeEn0wR4ywc -> ssh-ed25519 Nl/5yA F8xymke/81LlgOQq4IZtpUL8zAYIZLDU7/hYPbDW+UQ
My8esaXF11AgCEOeyNX+JRgLGuMlSPYGHqJIbxG3XWk BL5pks4vXzbM2Obzmb3vEUdYe/dEP5cm6490o1MjpMY
-> ssh-ed25519 GdLgCQ zKBABsXQE98vU0BgEj5onnfHs/Ta9qWwMgKKPFI//n4 -> ssh-ed25519 GdLgCQ J7fDZ4MEt/A8jhfCM8Qq2++v/bwhpSvykKefrp0R2Dk
h0cMTFqCZ3pON8JwZBfJz1E2HPWVEqH9fRc2ry59HaM E8BrcouvDsBTcAITuhUyENKTR2U3SlyUFgHThBkZ5NU
-> ssh-ed25519 tOH/HQ oPtW9p3QZzva2unDORMZURJAl7VVbuGF91HCe+wbTzo -> ssh-ed25519 tOH/HQ 5pbs0Qpugt2Z4GnERpgG7V1E+u/PqQZ8jmdhxiGAKmY
9bTm0B3q1tFNVepL20MIU5hWUFK6uUn3781NDqhWkv8 B6HXWpicDrESt1NcCrpjTTmWla11zRGInKpe5EqRKK8
-> ssh-ed25519 FpzvfQ R4ZCZsgf2tlN4h07M6mzgR/lhaZnP7uyUxajO+oC+UE -> ssh-ed25519 FpzvfQ ErKw/iWsCByk10H1SRr0771IsOF5kuKZYYynOI4NIhk
iJnJWKYrushgkegJPxw7M2aimtQ/dqOB31BHnMaFTm8 DXo1XN6lRhGcbZ0wOn4FKK+k3Qx8jp5jY2GYJ+5S/Oo
-> ssh-ed25519 2UotMw eIow72TygjpYbhJLCqt2vm2X7bu3NjY6MFTOWjl+pgI -> ssh-ed25519 2UotMw JvfWHcMKFS/FNr6dpLso8xDEmtKrd+bf6W4FSU+9vys
2EgimzYzga4FW5c79N3ppEMVvREAmh5wx3lI8gh0/BU MSHnO/7jZUAo/7FKWOYzaRWbLAC1Sn7JfSyN0Shoo7U
-> ssh-ed25519 kdPvzQ 5XbOccIDpMFKcCaBWFRWWCaUh3p1LBJ0ayolQroZeA4 -> ssh-ed25519 kdPvzQ TqAXhvp06kZR6czrD0ZKWRlyqU6kUYoZfP8gakziS2U
Jb+n0HeR3gDYizA0kta1TBvEiZryKlDwbuoa2u8PyKM ad0/vG0CRQ7sHiHvzedRAkdWarR+vHfgPMAjvXHBk7M
-> ssh-ed25519 onmXpg PZR1T8ylkM55nGIBYiCroNWNTwBcEA5PZU1YWH3tsWA -> ssh-ed25519 onmXpg ndkl5ubOnF20q+1Cd5d8b5Zy6KZ88EjWlmhGzy8+70c
LsOHqiryBJkA7b463zyg3IToKy1Teo/miyPfENewGnQ 18mzoHrH0VHlDfia5ch2+pLy/EA6PejcVEkV1+cWQnI
-> ssh-ed25519 CnhD0g j8T3e67+tDXJFRsX/gC9qqQn6YGFxgAMwWsQ9vlDsGg -> ssh-ed25519 CnhD0g JJ20jASeobaaiVJvg2m/JYp57UeCs9P0ddDJbE0I5E4
KAOrCxfTTo4uB0EjrV6VwAx71hbrNiJuP6G8F9lOr2Q uxGbgcL7CA+Gk8p0jRtc/1uXMM6fflOJKKvCCscsYMw
-> ssh-ed25519 4ep2UA wC0BaXPYM2iRPRBhQlOo2QRM0nX084cDp6brzKWjkzo -> ssh-ed25519 4ep2UA Gt5+6tALjGgyLYln/5GME6/cyX6zBIIoKEbfU3k5XVo
wNBztDXiPi6K9q+HJRXsr56/nf6k/aQJQIEpVCjQjQE 8+jhXYNZqIGP9gxYPTEUAeclc2yOoi1iPc0Wlsb2Fw4
--- IsVY/KsFoTGubmdpOdoTI64+O40RJplehy026aS1RJc --- C93ywGKoxGqj+uUh7M8VrRr9+6/sl4jbUWvIUlwOack
]̃R…ÊYá½²1ù\½LœÙkœ”­“¡Q:ÙŸý6 š¶¥b»Ø*ÙI­ÝZ3ýAóQÆ%HÑ4Êða0,ìvÇåÙ÷Ä­Äþ7ð- 8ÕXÛêÐÞQŸà¡•$Œ¬G¹„Ön.
2sÏÞ›n®ê®‘&­›XÙßü«?‡!Ñþ`g7Ó §DÕ‘ôëMìÓæŽiÍŒáé±è*ú 
Binary file not shown.
+36 -36
View File
@@ -1,37 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg 0BPWYqZmhRyvis9uvGwUUSW+ele+l8IeF800BDyGSzg -> ssh-ed25519 8UnW5Q E0Cdhbg4mRNzzHLghvg/dgtXcgt/1kuQagBhFjDdfnQ
5VjgpSd1sFRNREuv1C3MYCWhDs1a9xiXc/PhvesR22g gEByb0FlQRO3RvqS7uop6kvyHCK8lkkdApI7KKDiLLo
-> ssh-ed25519 8UnW5Q PbSyI0V2Yi2zGhgHhi7bFQzN8nGw3YTJaDCltysRJmI -> ssh-ed25519 UFfTmg eCt3JllYLv+BIRrfHTNvOVY2bOmvU7Vn9dgdSETLxWg
m3o81t3eHybGoyid9mCulXu2TiCXoYZgEJkeMTVOIGE RYr//nOKClYqf6wT2ZfaUdWUvhZwdnAd9KuQRIAog/o
-> ssh-ed25519 UFfTmg EefXcU4i8wJ7Zxf3tFkjcZhnAuJRl2yvx3+tmUZiJQQ -> ssh-ed25519 xNtnoA ZD2sNDXV39GdAm0H5PDB1glXHjNTwgpmy03B/tX1G3A
XSsgWWZvEdyEZMluvbPr5WkGBCPmyQDMejtzwf8DNI4 v4HNBA77JAAOjgOqIEmgvM9TaTcX1Pgsh4mA8FJbDJ0
-> ssh-ed25519 xNtnoA 30K1t7yvl8xp+r3G048X4dTBBt7yuIJpSsirj4TuhT0 -> ssh-ed25519 aY2AXA Pgw8zantkYPSIlEVtApmrv6FANvJMScFlGn7XuVINnQ
TowyK2GWXSO4k1Y/eYA3jrQow1j8Ti3JGNj+KGEHs7s F55HvsAjccLCDXwsnLtiCTzqjCykI1LgNvrBPo/9Hhg
-> ssh-ed25519 aY2AXA 0CcV1pMMlaQpvuba3YVvOAmGKQbMNn3pciGhUsU9rGg -> ssh-ed25519 AQhf1g ocWSVOtSSwziSbHLpfzt9onAo+f20CnD92HDmHuvjms
BBsUSmzFL4nlyHeoDGCplOCNcgCGVXyw8ZcdY1V8UU0 +RfduLd2K1PXzXbjfBUsvSlErh1a7HcWq1uEmYccwOQ
-> ssh-ed25519 AQhf1g w7CyGajIHe+QtVcxd7LkmAfoViCGlETXUzmdfwAnfUg -> ssh-ed25519 r/3ipA GHKAUd/EJW/fhYqlZcoMJvDN0JnxOSnJ85zaWHCoEj8
k3pttObVlS9U+k3AaSmr5RdteuV7KS4FoD+jKP+ohjw VPBMtl/vSBUuQka53xmUtmcZ7Ug09rmVLr0zz4J7qa0
-> ssh-ed25519 mOmPfg TdZUGOwl8iLES+lLOOUS5z2vrmzn0UszNTAsoY0KtQw -> ssh-ed25519 mOmPfg H5wv8RYDXisyIbKDEfmy5qYofko73JLPEdwqW527q1o
jEV5asKniZYCzdbALXyIcF/leiaV1e0Xo50Qq1ni5VM gzykZnqY4Rxvnol4k24zrcSrX+Rhb5I5ueGSsHM2do0
-> ssh-ed25519 YJiRbw SQsOrXQaFPTKUWSKIjluoWbd5Sg0wP1ZVMOOiVilN04 -> ssh-ed25519 YJiRbw TANfFv+VCX835WeB4xwzE+7bSzOlNcUiiWeTc7ZSVWw
2Sl9esKTW0hAI2QITOM7tCXmU//86i9qIHqbzmT1LQw W4IJ3e6KMPEu4LGpPYNedPpd7yYM2WDwpO8cFOKCO8g
-> ssh-ed25519 Nl/5yA Y+rlhRD1PNIUEZhdfgZTcWe8qY0SQe8V9OavljXjxQ8 -> ssh-ed25519 Nl/5yA 5A04J8hrMgo+Zc1kueTxjEWOiLhXS2Z61Bt1Ykz1+0Y
oEbfC1+We251iuRBzQOFS0mb0QrPuP1184sqEq6J+As iGHr1oYbfYjuyrpgMBZSg8O/GGlx4fsBZGI3xb/8010
-> ssh-ed25519 GdLgCQ 7s9Jz+QDMx/VCpauGudchhYmdozHi+Drk1FTJkCZIlQ -> ssh-ed25519 GdLgCQ rqmXK9UWq6h8LYNhwzZv2JVEpO9pTWPOEZ07NEdftB8
JpNnTmbMZuAq1t19usJeaFk/XWIvI/E6O2XYW9xk1lo Pow3I9bqgjbaWzq+HPoliD2ZWe4xp4YROGQsv9WPxy8
-> ssh-ed25519 tOH/HQ bQjSTr7z9m0FnCwcwVNvXb6q7b7N8waWzDz2ext7xQc -> ssh-ed25519 tOH/HQ VJSZ0038Bq3VtvV9fG0rpNp33dozSAYUE7ILBG0KjGQ
fkGOxszYZbvfEgKCf8h1bSFDdhTQudWahW5GaoRvKwU dSwc/Kf7sC0qah7UKmXgbvKah3CiIABSS9e3SwVnf4g
-> ssh-ed25519 FpzvfQ WA8BXVcevPVZHqAQkcMuPygLD8qqFtNWU3tJYpwHMHo -> ssh-ed25519 FpzvfQ d3qVUKv1cKsoeuXK0KcDyViMExlsF4z9Zod6T6v5eCM
BMemxjA6UjegYD2DK0wmOc0ULYukqyDsRBAFYDeG7lA UyYVI9cPFMr5XRETLWcO/eqSpch7zKJElwuBU8CNGwY
-> ssh-ed25519 2UotMw KYrj8o6902OrxXaJf1RFG8H5HIVeRKwaTBiL/aXbWlU -> ssh-ed25519 2UotMw AiFjRIE+vsMZP1oF7jSlXK2VNRthzXyUuBvbhZIcAV0
J3xUYx69EUnyZUbzeN7X/Eh/J2Spva/3hlemM5171j4 xyZ79tTLJ+1QpEVfQ+un5Sz3CTKq0T7wuF/Qka/NBE4
-> ssh-ed25519 kdPvzQ 4mJ/cUrhX8UQa9+tStk81pxyJZiKKEv8nA1S3YIWbxc -> ssh-ed25519 kdPvzQ IRv2zsdpO0axmwXMBicAAgN8ebqBPgCmCK177xwU6Qc
JAhwjDcn63KA56ArrgCfb8ImF4+gdYb2t37RDHzREC0 v4HbNhr9Ma4f5UIkNqgdXLylmOyg42sa2NOLz9Sisgw
-> ssh-ed25519 onmXpg BaBbFKcLHhk2HmvWuC8oCv19H/gGplhQrYI3jhJSiC8 -> ssh-ed25519 onmXpg 4TlZ050M+oJdS88xGgMjSYjIP4tcekkxKYBrs59FVzs
DffAJpgSSISvUe+fGjiV/0ZD7ilpRjVfylbBgmzvwu0 yH8FE7Jg1r/vxNYXYlZ688A3tKdFuner17OvZNTZv0g
-> ssh-ed25519 CnhD0g 2pIX282qmM1TjcenouThl+EVDe7liSf48Xty52ryjzU -> ssh-ed25519 CnhD0g EkUxGQbJ9/B8KkXYnhSniZUhCIkuauilRhpC+N1HTBk
AdRqyALk3xZoG6Q26y3ueB6HgGBvojUfBmVVkI+/GoY rf0m3TU0xg9ch/0KEJcE2NGFqW3Aumt1NbnxCtAEjHo
-> ssh-ed25519 4ep2UA xWUwvjYFMJhMtg4hS4D0FOpfs/yPFZkNdVv8xhQgGEE -> ssh-ed25519 4ep2UA /1we2B4B3jY/ADtXPYxNe5bRoRbFHeSDzIR7qu3BA30
tBCKF5X+gYNbCik4j9YVXKkPA8BVb/pywmmVPEByUDg f0wku5YBXpggzWRsYs1rs1EHwOjWygyjLIM2xSYo1MY
--- 38S1jD1FbeM20/LKFLWepHbatAh6Kyy+wKS+Ptz5qtw --- vhT0oAaUS7BzF6k2pSvO08EILvWQcl0h3X8IBtnrUrc
Öþ­c$Kf”æ£ßr%Vù]U¥Šä#Þ¡2m$c …ï÷ áév2Ü< 6LÖƒÏ- nteºPöđԳ۪ðn„¢”Ý+¤3 O0T :LÇoV|âžezÔ~Pôòšü­ÔÁ鑯9Qà\ÞÇ¢p‚ºg'jëf;ÕjŽ{Ã{લþTE¸dÏ;*› 0¸k€¼O
+37 -36
View File
@@ -1,37 +1,38 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg iZk0mtBXNJEHptCG6sm5Bre86Ittrbshc7mgBg8lHwA -> ssh-ed25519 8UnW5Q FRrvjiuNlnu4/DkwfY2K5p3MdQ5bDF3+u+JKrYiHzGw
YgWizpWE1BvU8p4A2nnVM+KEW+pP/VQfeXNyn2C+RkY 9dGLw4PT4OapoTW2GnoJ85GEWgO3Aepj7hl0LpPZylk
-> ssh-ed25519 8UnW5Q rWJlpARVcYaUwReRg3WP0Lo5EK1WHXnDF281NfRCTh0 -> ssh-ed25519 UFfTmg uMTPiCPPoVqt/3SOr+y5oKGTxpFq2UNGrwaRVmnZT1Q
6JMBB4BVRxh4irXU5jR7NEtGgHUKEnATl05kPLkIJVk Rn7dRYCGZwYN7sCmAsne6kAuKmD6CFlGXR130ELiJCA
-> ssh-ed25519 UFfTmg r5QfXMP2yX1sT5/NSZOk81uKuUD2gHKCJ00OUfMstxg -> ssh-ed25519 xNtnoA FW0dLFehc2yVvpxIDEcVWD1zHspZuvwrn2qgYltdp1Y
9vQme3i/ip6BdyWXSqKf9KtBciD/xWnlTfU5bF9n6KM 1zYm+LF/8lvfEhQVr4cbyDF5CfhPu/fNBYZMQLtTrqw
-> ssh-ed25519 xNtnoA kiD+2ao6nBdkn3Us43lwCK4FMTWUX83AXZTdNS2ct1k -> ssh-ed25519 aY2AXA aNRD8OIqKluKhHQZCGkW+kS71vlU2N8K6k590eLO7HM
BQaO2/DuYW42uSRu9XLz8A3N7H1H3LZk8kz1Za12qTk PZHX6fqbX0U+55MtJ2iSur7TSHFEgQBiAgpXiGlHbuU
-> ssh-ed25519 aY2AXA cG0+CVmbBoR3El6TwvwrJhHbuLKpO0FNLMQQuAMU5XA -> ssh-ed25519 AQhf1g cIhfdle1UsPx86LETXhB46evMenWtypO4GmL2/oLbXs
uedc7XXzPp1q877M4Kb2AfGAafp2unNIB8Hz/15hSbg ezwVMUSz5KbBymwnZlKuLD7RbNBJigfkb4sOpHAAnBk
-> ssh-ed25519 AQhf1g ZIT944IUaACBEPFVv0/Q3Era9425gfYPDHTKQDFj0TA -> ssh-ed25519 r/3ipA Gt94r1I1CUMKrGQKBVgq/FLlOa7V3weD6N1rv/dVIV0
nJsuyOXfhNqejnljvd07tiGAH/6cVebb8N9op+yUkaQ UsBIZfHiU17IjzhcKc1kvSEIMIk7I/DizSdBGhXNwqA
-> ssh-ed25519 mOmPfg O+i/JqV2MSpDtjq2fGYsZk4cGe4mY1IMxfFiVsZX8FE -> ssh-ed25519 mOmPfg b3/Gwqh1kik/AuBzcpqsuSuFcK0Pko3hRu32wFB/yks
mqjMKCEPYrP9T5QvrPgrqpuQj90syD5Nly3xcZzlu+s X9AXKVJ3d0IV7wkV2ZibScIV9En9uJNyUIPIk7WFKb0
-> ssh-ed25519 YJiRbw cww2VvvXfFmWdspOqp0fYNizYF5gOJoWo2z0cmc2Q3E -> ssh-ed25519 YJiRbw yDkwCFtGXgS18DwqMCBied8+Jt8u2GBWuFQSrajij1s
t746Geby8GdPXb4G6PSnYWxAYHhwEygAy2kWOTNlQSE eSeFTNbeOT/tDb9iQo/YzThtQeMgNYmEK61o8hjG43k
-> ssh-ed25519 Nl/5yA /sbUMK+/aNe604RdYYGhC76NUAUV0zWC/d/BOFUMdDE -> ssh-ed25519 Nl/5yA ee68eLzrRi35az65YmfA/WF9VliRmnlPEbGQAet91nw
UYGmy1Cq4aZCJ6XghmqJVgCI+Q50NXKzVTbDV0cwCVo 2KdTnyBTyJu8q03eH5s4oRyvhTQ6f/qvwrLabvk3C3o
-> ssh-ed25519 GdLgCQ 7DVn9soiWBMSoWH8s0vJh9CxTnOGqwT1kCD2kKJffXo -> ssh-ed25519 GdLgCQ DAlJqI0uIBSrFpPMfl4FkrpjCO5qkzvJU/PBOWFh+XQ
1S3yC99Gp7im+ntDy5BF6Gbja0qI1iAcbBnUGBOdG2U S5tkvMrTrYbOK3U3wWxLn3MuJTfrP8vUIYe6nBpixQo
-> ssh-ed25519 tOH/HQ HjMJb09INVPg9p6eFWDq0x6aXxtv3e9WHns/b9dRq1w -> ssh-ed25519 tOH/HQ zQMhFkG/vkqosDn3VvzuKt4xagkUWoqE/DW6AsYtBGE
rol+78bs1kWGNNT9uGgpyhLo8Qg2KFZOZNV40o9ngjI MGQA/Jxv/YTny5CyqfQBorfwIUVPZFf/hAcUTFrX9vk
-> ssh-ed25519 FpzvfQ DYtu2GOhQMVefKgpFzGsUwQE93AABG7o7zlYBx4Sax0 -> ssh-ed25519 FpzvfQ d4cgnsFfo5xGDUFyT65HJ6S6vtzLmvB0eugwq6t0nGg
p9aaahOTOcwTwJh887brzzAz0K9eM1Q2okGwS6wcPWA 0hEFjipS1Jbp6xycUsZYHzcjQVJ22JlGMUsjPCkDfbI
-> ssh-ed25519 2UotMw XrenSoEXsC9g8pF+nIYu3/mEEE92h9NsjQlMHWf9RVo -> ssh-ed25519 2UotMw C8ukSysPTKrwKCVnqjBzspXLLyJyhn2YCHcr1n0ulRg
c3GnMhYdVXnTZ4zBpp+ZOL47i4iQ7PKKreWCrLz1JC4 NErsgu49C3ElHmpsz4q+zR/0Oj+9jBPnC0BErB/48Fc
-> ssh-ed25519 kdPvzQ wKe++MlxxvHTN1fogMxxO/Ek8ytLnUY4rS3/TGwYun0 -> ssh-ed25519 kdPvzQ oreOkf0nFgkgm5KuEjP28nbbqRZTA/b+bj7SSBmAslc
yERY9pzUSb7/YSkVPuhX9fJ6SHFZhgBztvx42wRU9i0 OrQ99MlWePEk5IVeoC/X4UYLhK10oTLFrS4KqzoVOE0
-> ssh-ed25519 onmXpg fccql4vrSXq2rmGNJAwNmnXXj/6rMp9rQL2/T19AeAs -> ssh-ed25519 onmXpg v8MQUHZj5sSu2XqiUH+8wcvEJmrGWQqs0e9evQKkzHw
41pFfrrmas1ttzD/wpQjJIbzgi27p80hJtuyXhpwE+4 ffZTIoH8stR+ZLhoz8GjvGG61xVbv4+VkHbd25Jyc/w
-> ssh-ed25519 CnhD0g cgwxIxMn6IFqHIaFhTrN1ycr9d4B+sSVcLZeiHaVn28 -> ssh-ed25519 CnhD0g Ja9KftQBH93zJAl8nOMQZXHbXIFIs9W4UqXwYr9gdDI
WFaOrcE8RuxatVGWCU+EAYTOZmks9bfKTme7s7VrDpM StRE03gMP6QQ+fCuhE1Q5ptCpBrUxrWINgCrWzwSqxo
-> ssh-ed25519 4ep2UA zStnhLrVw1+BNhOd+LQ1euusmCQnyQx7/ukUSgEs10w -> ssh-ed25519 4ep2UA fbcuNM4FWkTOVSNSJGAwncdkjLN1K2Uv3dxFsnC60VU
NDzx2fwKDs+of+62Gj9dE3l1+Wh0aVQAfjXPjYFjVc8 uVbHhoO/IXfakiYFJ4yrtReK9uvYLsj4BTILRBqbRgk
--- 63bVjaHZOWE+1hpG5yDQN8vMspyOOfw3NnXLCYSL3eE --- dYPR49CT7omcJ7jDRNUAoc4t7az/pEg00aqPF00OlA4
Ú![„•j-C3[äæª0µj gÄ Ñ³ª‚È(Lv¹•Õ¬›Øþá2Eý+qæ%ªѹP­ÃŒíËÑLs;3˜ù,³7]\¯– „Ï¿Ÿ ðç(C›Ø
I'ð^¿mc¶bßH…¹«CûK 0ýĉwé¯;lú¿P<üH㛬õI¿{àÈ|øª·ý Páy(Oì«81åÐß
+36 -37
View File
@@ -1,38 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg 9bSltGjltla8XkrCzhfU6yqy/Kb73jHmaaxpgE/mYjc -> ssh-ed25519 8UnW5Q mCwgPdwCWzi8QXME7vc1nncnCjUdhXJfHgz5CI2ppWI
q+UwMDloa3ud2r09prz5/nsIF98LI9xDqnxW12GPx0k rnBpIQ9WYgFs65Rh4eMICoesrg76o46AjmtY9fTbCl4
-> ssh-ed25519 8UnW5Q MjKIEX54pROJm4wMTQFP9vc1uhz/gN81zyy69zQA2A8 -> ssh-ed25519 UFfTmg EW1P9WRcH6esoNH098Vj4E+udGzKWYw+HkxaHcRpF3M
B71KLdMEXUgyD1lg1nyJPXnZXxDSKyvRb0BBOMN/y6E t3AsT1kOCeDbpYotmYAFQA5/k0NA9KJ+R1DRnbLX63c
-> ssh-ed25519 UFfTmg fk/DRRcki6qQf/TnwBA+FIgLVdrYdktLR9yf9r/82Uc -> ssh-ed25519 xNtnoA shOVkNxHyvKcLRYAAIW1C6UPAGiwxZl0Y7i73DkA3j0
PUpzNkavVk/VfO8X+mb2IfKrseA1yJJ6xNnap9W+FUM MgFo9Gy+24rWvIkqQKDogakf4q1nE+MTdmXg2nYMNR0
-> ssh-ed25519 xNtnoA 8wXxop/HSkpNJe2W+Lq6J1dPLk8P1w75xHKUxUjv918 -> ssh-ed25519 aY2AXA dXi7BYpOVSGbbxI5KOQkElq0GQj3vmbU8AA9rzqGIE0
may0BdqkiYxgaUGxv80Udz+UVCI/+pFgzlCZetEzLoY GlpXrUk11XX6zirXrTK3uIhLBwlTKwn4/cyCWjPBVTE
-> ssh-ed25519 aY2AXA /GeX9PATA0svXJ2cq7IIoWAx+Jap36OYFFw52mbtZ3A -> ssh-ed25519 AQhf1g qV41Qx3onxW0Z91xCiUwse51OoEU7tBAi9t6MrwF8Fw
BEOqSa4F8PVxGkVT4lSsP8FiloINw4mEjtZ+Dq6u9Kw rFXGO8JG1HE916LMS8xMLACVqHuQzP/SAgM5Ngi9tLQ
-> ssh-ed25519 AQhf1g URV4/G7uUPxZNpP09qyS6Tok7KlcfjYCGqEGftwkM3o -> ssh-ed25519 r/3ipA u1cHvRRt6JrScsmCY6PtybjU80VuU7NuRwtBW+Omc28
+l4j3tVMj8TcCE7KobympPIv3fRlLu7UGnZFeNZP4xY ztXCVbWHTMBY/x6dDdSSPQmTWfLCGNG7xkYBtupKRQ0
-> ssh-ed25519 mOmPfg NoIRVRE3P4/nnerdYsAw+S9csK6NB+AhnjYQj7NZZk0 -> ssh-ed25519 mOmPfg jCT547k33Dxx8nTS/WVe+Peo1eViKVSjLumucXempBc
GUuYluAhGcuiIfB6oh9rvfcd1Trhb/Jeyb7FAz4Plcs X2SCtafedtleUTQoYtKN/85uUnWS3kuY9Bb90xHXXBM
-> ssh-ed25519 YJiRbw n3/TMqijUG2LdAsqrq13Jelw4hEenbjMu70YknGrtCE -> ssh-ed25519 YJiRbw j16MQ20JnMktKiREpNRx5qed8jXXKCAq+8b5AvkW0gM
LCfUQDnpe2a7dD5YOKcteXQ4K8FyZNQ1gZi1GPkuCYs KovMsW55OvGyjSJuAN5M0Ga7ln0TOQoQEQKvCkODJJs
-> ssh-ed25519 Nl/5yA W0IMc+9Mpjehqib77k1LLeUoKSp8QwJkz0aEfAttMTo -> ssh-ed25519 Nl/5yA oYGAT0greb0CHjptVKt1vPBhBX1KXsJAVlU4WoV0vjo
0yrHlLQR3g5JGAuICMYQ8UBQ1SEdkPCiVq/j4PBLm+I SI4ZXY4pHqYEn2AKEX7MpcYT71LsVUGiZQd0LmwGywY
-> ssh-ed25519 GdLgCQ W1evgMNEDrmT5cgqRPK7NsTde8igIIiYbjRPBu38WSw -> ssh-ed25519 GdLgCQ rEB3gHJ+MovVDQsQd3X4pGI03itwoUGeHg7aCQ9oUms
5gDQVJxEcChyAGak31Qh70eFjOu3z4iLXZejBRXjUwo mAVXvwQqslqP4sm7uG9LXfNvD0XtnaB5W37esGyRsgU
-> ssh-ed25519 tOH/HQ iGA0Bf0Moa6UsXC484hFHp+4by41o8QhjsrCtnlnjDw -> ssh-ed25519 tOH/HQ XPExYlY9j8DKCZwviAAgSvJ2+xpx3lUBsktfMPwo8U4
YELtzO3zBhul4CCPdSaOm5KctPAoU1y27Jgfrs1H7KU v2PV6wtTTQINJ2XfCcA/0OpNkOHr4AER3lG73CJL7J8
-> ssh-ed25519 FpzvfQ LcehUBu0dDyGfYKqbdfxS7d6aTtYTgpokG+GWHnjtzI -> ssh-ed25519 FpzvfQ RRpPZ5GIdzvRimAXe1ybhxs+lV+SSigyyvEn3qmkOUg
6Rcos5SJmbUXXtMFqge/CRUb4RVYaHrt/H9V9tprBxQ z7QV/M3zO3tnOO3XiabL62w7Uphs9OxARpGbND1tm1I
-> ssh-ed25519 2UotMw Az0wVK6RPjD6Mm5H+gvCZDRuNbHFmuVXRGMKBgL1SAY -> ssh-ed25519 2UotMw JfTnR9wed+1B9Hung4FdV3Zvx8eQ+lrweFiFrhX8B2g
hf/DmLzyPoMQIYoV1A7CEifAdKQD8nOy7kWfpiJnuN0 k2KYxpsSoTBaHuXCCl5fBgn/jyi4KDKvg2QShU0Awpc
-> ssh-ed25519 kdPvzQ mP9FISgXfkj1Vflxun3bgnlwwqLFhL/RI7knX+Qpml4 -> ssh-ed25519 kdPvzQ GrUGPXTVNTMafGGfn2xA5pTIBEnEfSKmDtQ+W/QYpUU
ax99X2ePfqnYIsA3knPz19lcEv35pTF3YgEAI7FI/Xo eDNGzwGWhnZ2kLXzDLVWJNvl6F6vZBTFZ16zrh87bxY
-> ssh-ed25519 onmXpg 1Hg7Hf+HW28fBH4fMvrNUAd1XwiLOFGDQ7Tscqn7UzM -> ssh-ed25519 onmXpg LiArSCT2VCCbEE02Q9n6fsWP1VtYL7OcahnM7CJyywU
Cr1Y/Z60BwLm9b7GA94QnlNBwgmUqe8X8ksAZMHcgCk LUKTMk2IAFpg7mPpHjBBw8NbpbgpDGnH9FCvjuF9qBw
-> ssh-ed25519 CnhD0g TR6lw5KiTVLkgoErQMMTbgDAhV/Vdka35izHR5SJIjI -> ssh-ed25519 CnhD0g H2M/9h954AS4ROeJFDfOpwU2DsACwQ/20OdGVaeGxxE
EJs5EOZlprrfpQfpJgE4//VI3bAWE/OPV6bNOF7O3s4 tSMsZUT079DdPhW1yvFbk4DBlNd6Lvhk4SAarFjYfpY
-> ssh-ed25519 4ep2UA pSDKM7BZFXY+6BAfJYTar/eZ2eE2U18iFGdfmb7xPzo -> ssh-ed25519 4ep2UA /FZ8+q7M90Iug7/qUkpmyL3uhUz2WTBSoc2O719JhBs
0Og+gnsiBQcoCJzLIDSfTLRbnPf9ZqF62HKbtNcknrI y0dpaERxrnygXbDhp6v/rIZsoKx7kv/aQI667jt+/t8
--- 8adV1z73QFaTnpZABU9wkK/QfvnFdsVamSgndB6aGx4 --- K04yLmYsJIXBing2v+tijM5K1vOLQy0hWu7TItk3xCM
\!Ïç>ín;¥.\¿±¹üÆBsC Ò#é!)D}ÆPx ï` ‡t Hëw’÷ìgn$c\ÑØG >T¤b Ã,z¿ì|~u§Dhs±KP©íÜ0c‹ªŒ–÷ÙþÔ{™­w`ZªPODmüxOägƒ+FäCH
O±zøCÙFB¾tèÞÝnë½ßÇxÊŸ÷صÿ @²8
Binary file not shown.
+38 -38
View File
@@ -1,39 +1,39 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg 4imtB78FqoMY9NrpnUqx8laJYPvR6Y/4unT0Yx+r9D4 -> ssh-ed25519 8UnW5Q CqKPHehQL2BnMddbuQneUdwqNiUP7R5tJd6T6ziapzs
dkFCwD1ZQHUVEbk3c46MFjfe84Gr+9JFY3cM4fX/qto RusP1Hx9OPTlwxDo+wUZMIN0uUkBvRHABx1YBtWX458
-> ssh-ed25519 8UnW5Q ZMebFCDpAO2tzL7QLHzyq9t0Q7Escrooxz1iZit+2Hg -> ssh-ed25519 UFfTmg JUmMJZQepN/3eH7tm3xg0rPdcX2lKnKLnXz0BdTsQWc
D/5Vtbq1xob13K1LRC978D+FOUqP3Mpeyc+JjFvsXxU BWuon+vqjGb0FzRBLrF47zz+fCXrEm4Q7Rn145hGtaM
-> ssh-ed25519 UFfTmg h/ide1M5xfsiWWTQgq4fORUvF1tnk70PAgnmrBZC+1c -> ssh-ed25519 xNtnoA hA890A2iPMkKNVRpeoLD9f1ra7bTIyooNk8HxKihpEs
citT/IavIS7UGO14JhnqD0cVeErVQYveoQzUn2XHHrE Fhs8yKdEQBBnPKK71petL/buoQ/u5qQu9QUzPQk9kEE
-> ssh-ed25519 xNtnoA sGyjrbntQRxHVGceKHNxIZSoHMmQw7YeMI4xc1cTYiE -> ssh-ed25519 aY2AXA Xh3Q/V4hhIzEWA/nyzm2cJl4Gc1CEjaGPzNkHsu5tTE
aATE5RthE9VHbjNFpLqrZCA4nRqzzOtuX9xsG62Fog4 epgPCd650QcZklIEvA2N+Fo2092nridRmOznqyhjEYo
-> ssh-ed25519 aY2AXA cvoOV250VlD457rmCOBt/O2zO8tYZTARdd0DcfD+Mz4 -> ssh-ed25519 AQhf1g SfFv871Bk8fNlYwaCdUGqX6CFHzx9yRh7CuVsDmQL3c
g5MPyZUtmYp9Xvr+SAB8XL7ru8becKN+gzsiCFSq+LA E2iXIVWGaxBUpskndz2JzaxqpSPe+oHG7GoRCGy56ic
-> ssh-ed25519 AQhf1g wijsxw0j4hCW+LZoDiWax8Xt3zx7KEx1FGykHWMURnQ -> ssh-ed25519 r/3ipA 3xGxebUpT7Pzy44AmTGKHARM6E4qMzWJftnYWrUtik0
ECB//PR0Q21RuXYaJ/3JQkVd9SKfs1NvmEea+06CbWI GZLGvM+p8Frm1xnW+KtvD4RDN6+NB/v9qSg+O9skLQY
-> ssh-ed25519 mOmPfg Il7TQ7PR83W6yQLsJZ/IuqX0xQqQCy9TKGMCH6j/wAI -> ssh-ed25519 mOmPfg jQSfjwVwDV5bPch7RxZen9ZgwkI4IgQ5L5uW+8HQm2E
hy9/lPJ48v8W1g2lOuoArEm4BqT6broUy/p1BbSdO/A /+UkOQMpEwZClSiDYGNbRNO5C9IaNhABtzHAeFIu0WI
-> ssh-ed25519 YJiRbw YlOmjiSm/Ppb4eFJkT8NAc0lrRWEq7h5sz8AlJHRaxA -> ssh-ed25519 YJiRbw KV4Z8+jYtQ3WLijaT2ZsKwMsTXkRJt7bNSPZEj4xPkc
AlShI5xiA6lsYpURJL1GA+A5Q4RGQov86EswdsfBfOo i66H3Li7nT8FcTwrEnKhEhKjEW1uJcQ4GuZHYk38bI8
-> ssh-ed25519 Nl/5yA BhtmDI17gcP071u/keXn4pk8Lzk2RrHFUj5SA86YPjc -> ssh-ed25519 Nl/5yA p/qQ9BaVRLvRbKStTBCaH8Ntq7zi74JzmIDFTAFOgAI
w3klEe6jsFHxny1DkvsC8zHc/wwdPZsn3Ekxrop3Xws iTWXq8Ku1VHTn12P8zsoj4SnWvM63AKjt488t1R/cWQ
-> ssh-ed25519 GdLgCQ kRBH7X+OONkYlv2av7y371WxkhRfj9gNBG+5giG3LwE -> ssh-ed25519 GdLgCQ 0ZOAYbrOH78UxqWRcOgNj0oRn8/AGFslaYSJ5PRUbAw
amS7HHCavB5Gr3BtmFjntD0Sx+H3bXWtaoSf6jVmFO8 xZCujxWQPdATjVRk1H9L0gNZ+ckXLh4yC3ceIW1Ml70
-> ssh-ed25519 tOH/HQ eER991bgNQRsADztOtmua6uiOQXEvnGLVZxios5ta3Y -> ssh-ed25519 tOH/HQ J+0byujDRE/R+PoQliD1cibDyY5RY5Qn8OqNE+V4phM
tEdCqRSuUtxpea8HfvgniwOsNRp5xfMqjMDIlErv56M mtg7BbrYgCbhPmjr/O6xbh0js31eCxwoKqKsg5fgkB0
-> ssh-ed25519 FpzvfQ cuXaHencZnnjeehxIu6ly/RuyGmJpfUneO3JFE4dTlo -> ssh-ed25519 FpzvfQ 7P7MocdQ3F+2teb1l94cIyl5JyQUpXt0NAPwJMYZr2Q
OSWFiVWRZFfRlNqyb1uKaCf08MIs8vq5wv8D8NhTAD8 9vL3xZtGzea52omaxAFzHdx3Jw/yD/U5i5XTi8W0KHs
-> ssh-ed25519 2UotMw 5UnadpCeceAWgVt7fY1TvdQXb9W3s/IxpS/2KnkNOjA -> ssh-ed25519 2UotMw C7tThItOAHfQyJ1MlHIDplHd8PPZu/5VgpGrxeu/tWY
IrSCTgxIWW7FX5BswNjnWYHyLG8x2SSZ+lyfT+NGR3Y DR27WXj+eR0IEyNNdvMyQqy9qeWl0DlF/eulSJnLthk
-> ssh-ed25519 kdPvzQ /Rv/935vYmo0ZKS7ZSr2gV8f9PtfRND2PKHQ7MqAdSU -> ssh-ed25519 kdPvzQ omZiV5NRshERdMvvTfdveSNdD8scIfN6w1/c7u7yyVU
FPLlv/gzTSKJUjXjUdU5wx0TOVEJCsCKTNXdAcuv4MM DZuLNfOnEhnZZupK3n9mwAt1WO+NnAasQ6hFQYJyOJM
-> ssh-ed25519 onmXpg mW/e5COuywLc37juvVAJisyj6BGwFIjWDu6PLSBiNio -> ssh-ed25519 onmXpg LMn2z/lokc1nGWRgqoy3MEjWzhT1IoZPjb6yeL5tMSI
uba4LFRs/83aaylrJxCJfOYmYPkhb+B9OK8q3Mvjh9E 0EYg5UBrjCyNBTWleKanrOLed0Y5EMHTfbFmyzbv/uY
-> ssh-ed25519 CnhD0g yYdtSbtbhuqj8eFByPLuPrMwJ8/Y9l4MstlwwxN4m3k -> ssh-ed25519 CnhD0g /U+AshTlGAoXgcMGSLxI+zgc8lqVZQ/GwdiNol0r8BE
8Ud99nL6ss6a/qGvkvPp2ktqcPeCbC7QcPpubBDZmzA hKMI0WdzqScgtEChnF3PZbkjdtr2nA87HNHhk3W1jhA
-> ssh-ed25519 4ep2UA f1Qtpz9OfqMHwMErL9GFTmb/vQuNcy9z3wj8YZ+P9nw -> ssh-ed25519 4ep2UA qrrOtCpjyVdRPaWTFgfAQhZAwFB5q7DKVdj2qUr4VRc
3iEe/oUuiwiaaOAMrFmxHkqKEBx2G7PiKHvYO5eGM7Y FwQKHyUNciA+kBB/NnIftVParmV7nEFSdYQjrOIr6xA
--- zjpoq6iZ3w19eqyHXVOUDgJSNT2D2DqILWfKD4CmJiQ --- lWmGHk4zxXa+0DmZj1CnYHOYWlxlQPSB8gTpknMFYQE
SK&­[|ƒ6¾ð‡!»|t ZØÙC
»¬¸ËB^O†d‡ØzkrÙð»(ÔÆ-êê²â¡+1R8 Õ• ,’hëoK$Ÿñ ¸€²¯ê
BÍO¬L€gE H3Îiä\HÅqBcx'^gÑx¶Ûm·²v²¥ÝîÉÁlû} êB»`'¼#ä`k}MHäé2UÖ# s yØ^ØøÒ7çµÞ†4mØÂf8 þ©âsƒÃ
+39
View File
@@ -0,0 +1,39 @@
age-encryption.org/v1
-> ssh-ed25519 8UnW5Q AvtCfDMZZ51gAeWxQlfxp+AEZDM/54vKlH96kU+sgn8
IE9cWU99bJ8RJd/q1NCLwvjBozHsKNVLLxj4vX+f1nI
-> ssh-ed25519 UFfTmg jN40d8++rmq4aJ2MY7Mb2zrj4gWV67GqHjv29QRNxjs
jJJx3pTDSQ/0QescNSbnWmI4aJx/mvqXg7YJeYY384o
-> ssh-ed25519 xNtnoA MJrW1Ti4mAhq3b490wLp61PTe4IhEPokfeMxSek/7QY
AdgEkxhMRWcswzmLFzbbIKPW4a40Vlrct+ivvNGYhW0
-> ssh-ed25519 aY2AXA 5is/WyAjC4/oqlDIxAwq/Eaw6ZV9NLtQGFnBqWBm+mo
gadDw+GbSmtYxI7DZUIWOLaH2i67eaM1m1uJakDTg8o
-> ssh-ed25519 AQhf1g SSk081gv31ND5QM1V0KzlFQw05Hfx0UJ2EosCAzeS0k
wpefMRyZgwWcaP5mZBPVnL3MZ2k+L5a+ChLqRGCa/4g
-> ssh-ed25519 r/3ipA 5FoRCnYDLxjERHPTR+vY+2Y9ewOBZoXrvy+N6wnAS3Y
7Z+5IwEeM1iRlr/cUWt+sfv1QEOJmkvEG91xq1LmajA
-> ssh-ed25519 mOmPfg YMuWe/N8ZOrUdSnu2blap3HP+q1XJtVaK5pSUG44RBE
bvvZrMAGJ4hj83Kl6MYA5IXRgJidJGpYHVfqN1w3zBk
-> ssh-ed25519 YJiRbw fOo8kP29gbO6OI6Zq2YBvcX07Wjrm0qlZv+AS7KLcVI
7CCA1UgDtjmQi4L58TG2qVxxiDuxFm70LgOFpG18d/4
-> ssh-ed25519 Nl/5yA MZl/ydcywiEBzU2P396An7TVnTdtclNwsoItiSiUNRQ
upyVL3DUnmIE61NWVu0+gqaHNfmWIToOwJzLZOCsyo4
-> ssh-ed25519 GdLgCQ dva4KwyCz99k3Ah8WibFI2ez+hUdK6wFzMLS/bQJdAI
k5rNjS1IszxzKy3t8FFNoclyYRpkaWRgyzP5D/RAdc8
-> ssh-ed25519 tOH/HQ AL1zBCwXkMLNQWiD8eoGbTJKI6+ja22p5NH/dHitgFU
qJPaXsp4k5g/D0/wmcHtAAqqCeiFDpRhftXWAhxzr5o
-> ssh-ed25519 FpzvfQ 4IOwoeQE5od8jFEqWziCF2mzqCLoxOEdUM6sFOp8Zjw
Ea5bSCfza6i4cd8nL5p7tcoYyHC0B0V9lyuBM/PR3LI
-> ssh-ed25519 2UotMw 942H9PoyZwAfevk1yVlTLSUTQh17U/UjGfBcbHO0EEw
UMLFxLUf1Xv31JCyri1YcYKezAy9p/C5gc3EJMlSIvM
-> ssh-ed25519 kdPvzQ rYlwUzY8uJIe87A/x50Al3WMnPxnvxCOEZiYOvhPwF0
WmP5r+aWqNkmO2PQwLPdxIKIUr2BYzsU0I8U+kwhF+g
-> ssh-ed25519 onmXpg mIhPpC8xYbbf6DK0Upag73K7k+YfCE1S+ZgCfvu1fik
XgJ655mD/y8bWwrhjdMNH/v0J9DWJQiXVBgGTsSRr+8
-> ssh-ed25519 CnhD0g UvRupvnJ0zqie6y891Au6EBw+1YZ1Mc3rYWOOBZH5Ho
WMBj6BdYtIxgzSCVbqRXBIbFQhmXCPJMyLxG8OgZXAQ
-> ssh-ed25519 4ep2UA hyu7qF9mof2QhPfgMm2Xe/xsfJVQV03UK67b05ODeRw
tb54Ihc54Yeew4pRp0Y3aKAy9W7bpw++VeT9trHq4oQ
--- XXv9DYSwOiHB+rSASovGULreR0ZUVPr4MYYFrH9SnSw
7µ¾ø—Ó½{O¼™y —Ì?Ma§ß³2é‰yà£à‰§8¸E5¶jdµÀ ‚ŸBûn ôgþÞgb,NئH|
cA,<»XFãò(Ke7þ Ný
½ÁP‹Ò{&HK$
+36 -36
View File
@@ -1,37 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg U8uPBXNbi62qdlf1E2o2FrI/fqVqFyXmu/ULCXnpHGM -> ssh-ed25519 8UnW5Q zKwZaiVwcb3twBRyisICah2+RLb5NUStt0h3Ch7t/Tw
IunC0CoSgR95ajkrqox9fw3lMk05o0c5VeKklP+JLEo 9O3yKkWIOiJy6ese/ytnDRvyNbytQKDXR7HSZLNWNjY
-> ssh-ed25519 8UnW5Q VN8Pn7h65r1CCq4TX/0/i7CR12uNGYpH9a/wBwXzbgU -> ssh-ed25519 UFfTmg erGwb0GnZV12BoEa1JYiYevuf3Uq0Tv73ObbDRvv+Tw
Gzu05BaP3A4rwhsfAwDgNEa8a+qlYWf+BJpxGGbjIGw a0YD87ft8y3ZTYWw38GSwbmIUHe3HW6FuaGksF5pi3I
-> ssh-ed25519 UFfTmg 0aRMaqK95Xaxm9jHV9VHDsTQRcQFE4861N0mtKIQNlY -> ssh-ed25519 xNtnoA KajAZC29v2JqZY+OPkeHpKv0biPJLDgnT2CN//WnjhM
XJjbY5BMJKLFzPh8EnsuUGddKgY1Et7MfkXbtSeN2E4 GJdu44xGefwsI0g99wuwTmWGVQD8uwIcyINRCHMb6I4
-> ssh-ed25519 xNtnoA GhQ/AZC+5kQIhxOXJy592Dtk88yFsskT2e84p0dqij4 -> ssh-ed25519 aY2AXA aQk0/BCQyyPCZCuaI8NiyjuDZBIRB+nAWZBKs+3Z8Wk
AehOjw0IYQ3jFYvyeT+AoOr9KCgm2tPpEOb49JK+VRg KSZxNCGThfNjoSZh9hIRjP9o5cQ1FjZP4G7GuLbBZn8
-> ssh-ed25519 aY2AXA WevuwuDwXqOST+E8+WmSSdRRO0AAk7zSrSCx7W7O9lY -> ssh-ed25519 AQhf1g 6usKpTxVUNIT92ugQl7Z8LFPFPStTgoPhEGdyXjmhwQ
aHFYfor2DwmXelh6Bo8QNr+OTtku6jKnLOPK8MAVMcM QqGWtkb4Bom4sKMrV347/jf6YptbQIm78zzNwxZN1UU
-> ssh-ed25519 AQhf1g r89DcqddHqaMsIc1JA3bRYcBEozm48riPGzDbj1edB4 -> ssh-ed25519 r/3ipA M77+oa8Kbvt6eGbAaq6/0oG9ggXSbYZeBOkced0F5zg
Xhhcb9EFo+f98nCQZcbGDsBSSPp7oaUpI7TbE3wL6fw hkEFOfMRY4iIZ31X8ty11lGkouOxHm2r/tLwPRfQ050
-> ssh-ed25519 mOmPfg 7HRNQ2uGBYTCEcNVzBYdV6EYY4uaWlvOyod2MHYYTy4 -> ssh-ed25519 mOmPfg RohXdUXobV/fC3JYQ9IuVvDqdfnS2xodARJYmT1Ch3A
kSATymc+CkV81UlULdmR9pcVlRQSPDOVPiImbProIuQ VdDNZFmvud6FGSX/I1c4iKg+6uhWgslPKAk0Uf5Vhds
-> ssh-ed25519 YJiRbw DN/cmcdvFuyWoadDv17T4VVdRiLxmGQR2L1pj4iCoBA -> ssh-ed25519 YJiRbw /xSl3swqNc5q0hsY+hO4nSk6PzPk9lRV7Hni/yNX4WE
50uR0WxUPclelkW34H5YHg/DwCpGXWKz/TpsLI/G7NM GXD3wBcBf6k1mjr14vIP58bjRWOnnVBxm1zunv7SVo0
-> ssh-ed25519 Nl/5yA 9ddHSHSnUhQSGku3IiGzSCSWm7FnxmrKbLbcCNaEBTo -> ssh-ed25519 Nl/5yA BAgdJDYBnUE0/8dR32V5D/ONiwLufRL9/9CY0YgpW1U
2tCo9JH6zGZI7WVQfyduLKzKjjxkvOkozhjweaf4iLc aUgdT4MPYEAVjSuWm2lqr+r3xwlX35UyrbYGh5v5C6s
-> ssh-ed25519 GdLgCQ 4wvfVoBYh0h16OWu3ZzRbr+dol2lngyvj1rJN4i1uT4 -> ssh-ed25519 GdLgCQ fOAibyd4PSLdTsOM/ntG3/Jcz6TZFTlGk1oO9MLQWXc
biuW9V+AlvmgZ6mysvL1vhB9bixlaEHVtXIipHkMeyE HNyui1pe4ZcrjHafzZtCad6Nc3MbzFu8YSMS6qae+mo
-> ssh-ed25519 tOH/HQ QfhF+jx9QwF+O9JBUAUR52KC54c+8uWAhyG/2QGYn08 -> ssh-ed25519 tOH/HQ oE4PbISWQe/kW2DxIkwqJKhKp/SNNa2OVje5iX21RA0
QJhHnuCH4lhLk+c6PRgdBxalKw+GnXSHemjANwzUPUs lx0r//kRfV5df3+5cApTmpE9zxFjKoNBSguhoeHqgjQ
-> ssh-ed25519 FpzvfQ KskGYGofL8Pqhd/w+lS1r0pYADgnl/YvsO7CIDBIgT0 -> ssh-ed25519 FpzvfQ L5a5UzaBYkaDLRKKu3z/9tou8SFmzL7615l8Ejyb23w
IhnEjqIe84snAczdB7w9Pu2oxfmSRCcIbLuFJvKPXwc Z9G1pnjjBk7H+XoNGNiBUtsZVQYiXe6/crYjUb4LIFM
-> ssh-ed25519 2UotMw +enPlZd+vgBCBGOM0qiJ1ho8KIh27DupWzt5tD7Zl38 -> ssh-ed25519 2UotMw sw24R6i1jaa2t2NcPsXxeJz1FSNGY8dpTJQBPM4Y60M
ui1jDgw+mrlKS/6/2MsgHHhFnGpe08QdD2nwcnU6rWE t+fZa71iWWxAqfusahrNV/Gx4RvlklnmZHgz4VsxGRk
-> ssh-ed25519 kdPvzQ /MPjIuGxfLHPzo2nn1tjIzpFKpmifFYntyWJ886YUBg -> ssh-ed25519 kdPvzQ BevwDGBlvPar9elbiiFK5gnbF1qjXG4lsTSaOHdZwA4
thzutSnYQriI0NxPUhEotCTWWZ6rjj9FhBv5e6/HCZY DBYjAo0HLsF7GzGPAw5wGate8QIpFQ2F/FNEITQqOrk
-> ssh-ed25519 onmXpg uyfJ3oEuR8N3+gf9AC0BXBfkv43iSFmSqLV1qMLFzGM -> ssh-ed25519 onmXpg XFXmGNe6X+JbLS6f26x8OEooWGCsSKdPXfNwFoSDknE
DjUnrn8uZqqOTgQ9fJK3mV1qLEbFfLSi0s6vJ0vULlQ zEKhchCyQN+rMBGXpnwMeOoRLDPiQSRQbHeG3V9ifLE
-> ssh-ed25519 CnhD0g 9nH5vKR7QFOhe/bj1yoiU9/NAwbx3X7eTlFcpfqjf0U -> ssh-ed25519 CnhD0g Cua/knFngt15egS+o7s848bfy9YM0/fFijrdkrreWi4
nVFLIzj84ezlygoAQc/qayRitkDY+hO0PcMl2VJ8SMQ tSj9HuyLRTiLPFlkNUHQrmY2scEBQvzYIXUuuUuYyjc
-> ssh-ed25519 4ep2UA 2Oxpu+LjXH8IUEeIf5gTF6RA+btk5h24TpZuY4in2kA -> ssh-ed25519 4ep2UA lZYn4isPidCnEz33aBI0Q+oONJqFy+a63slmhw2rBlo
7QzWbGo4tbywGWfMi79f2deB+D8j8oWyNp/WGCfaMoc i0zEbwLS3kXVoqfMpdnti0UIn5pDEd7OJjX1cA2idWs
--- 45iGBeXO4jCDGIXRimelAK5/mAK0GDxNkHzjEChYnS4 --- H8Qm4uuJHlwWSBopEIN+ZUr0hZ5RndYYO2jQWAIDW4Q
ü´ cïØÇyiÇÇ%­ôËRÑ%[-5Hдàç󢺅<>ø{í€93§z']qG#¹%h-ŸSPàn‰©oÈŸy'64þñ`Tå ‘g¡CèæPÖ•ê²¢dW\@Mïs¨×þ‡[‚Á_‹ü±®¶ÁNÇžBÜïo§Í,0ƒt…d8Þ"Ÿ“Ã#¥ŽET¯‡h=GTOh+Mú
Binary file not shown.
Binary file not shown.
+36 -37
View File
@@ -1,38 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg vxxJYuYVAGUWKCo4CMkpZqmnNsEc8vmhUlR/4OOv+CI -> ssh-ed25519 8UnW5Q Z1Zt3ObMDbq7suhJb1k/O9dgrQN95vTIDu2STbO71g4
kMmbwKU/Mul9mi2YRbMLxS3A2TycCD0adiwfLXQtpOg UiyIVoagk70mtct1YxFQtUCHcGbfYhtA1QDUtfFz+eQ
-> ssh-ed25519 8UnW5Q V8ZCZNP17Ju2YotNlpvZGnC1tqXzfgwEKAWIST1Xs0E -> ssh-ed25519 UFfTmg IsYLw4pCTs1Xkels8aGAGSc6Lqx5Y8mWBpervFWsKUA
aDd2d9hr0uRq8C8SzByScecHnN/0nvOUiD5VAxg6Slg eBFYqndg81YgePY0yEuKWDCD9LTnOxLevT7iy6m6Nfo
-> ssh-ed25519 UFfTmg 5oH9RDbIOKDEOUmvxtTqJhT1nJeN2j0/6f6CdOqfins -> ssh-ed25519 xNtnoA H5M7J8lYq8r5GuNNjx+1QHCtiTNw9SSWdWcpmRlTUyQ
R9C5BA0aOUwC9KSmh944RrZb3cYDOFa/ZTmvISNDgOU 4N/qiG/TZoWIn2KuZwlrqxt27wB7HGtxJPxHRzeRXo4
-> ssh-ed25519 xNtnoA i4HShuPm6wOIRTuAo1Y7PbHTFJAoHAGDk1rzbdoQ3Rc -> ssh-ed25519 aY2AXA wN6zKGGRfj9Uyib2+94wRnqzkltJbjn6LyOjnJGMXEk
SZSahEYgKfCrrBVH3I8r2axJDclbtcVeu1u0RDh6C0M Rx5FQte2kyo1m05YMupG2LA6Ddzp0kAVFkoB2tpgV0w
-> ssh-ed25519 aY2AXA OJHZCfYQUjHGhedjU0Tut4xB82gXA4ZMZ55et+thKjE -> ssh-ed25519 AQhf1g ocOb67dklB9G6Pi0icJ6OuB0nvMsb3gyvSdkTulqbUI
NJsfILBLkrxEm4+3VptwD+c0GSyi+6kCldKeS2ZJ1UQ PEjigA1SVW19c/yyWxCNrRbxWNAowcQYbw2z9busLIY
-> ssh-ed25519 AQhf1g R3h0LqzMJbmJZkEywShDwpGH8Xl1GZO4T5hn6VjH21U -> ssh-ed25519 r/3ipA vFM4wk+L8Wv04+Rry0brtnSLz/ChaNYup4VI1Fm/kmc
ldwB27ZtmbvJ3fgf1uVX695ozeuYuvSNxrRBdSfNilQ Du849WnNg6E/CQ+ui4+9vFAZJ47jJ0L2o/T2Sv0j/UY
-> ssh-ed25519 mOmPfg o0KXv8SqQt8MXFokvOkTAHsyZOzOIt/4igwX5gZdmUE -> ssh-ed25519 mOmPfg NrTgNtkHKFT+ZPmW4ga8DGrJk7tiDF8Lel3By8uRRic
VKO6mc2E2AvkvoanRhBsQkXRPSBsYz3bv+32lrmjzC0 y39BsMv6CAjVU0EYdfMA9Z+Sc0dFG89Toz/EBvFLMYE
-> ssh-ed25519 YJiRbw jOHp5x3xeuNWi0aWlnscfoRRb7hYuJL9b+iMPkUbkR8 -> ssh-ed25519 YJiRbw k4IxoHzHTll31zEQldtYFJLAZcoACKulR1L/ch9lRRw
wipv/qLWM1OzZANBW8SyqwYbSZZQTAfh/JFVbDlXrsY /EPni0kgRovc2cESxbAV9c8hCLXzxBqr5S8Lt4WXrqU
-> ssh-ed25519 Nl/5yA zukrkYXaQl1VvrOZGlpXgIJGwCR3NRwumarhIdVFBkg -> ssh-ed25519 Nl/5yA uC1gIjNtYyoJ1bsemEJRFnBV7MAAVrV5beyDpIJj5nE
w2HlF4T/n9g+M+xyF4jM5DHvh6waUcJU2e7OFvN+q+Q K+n4T8IGULklGYuoCr0x3Q4sN1NZ3YwAyEORG1Y0YiI
-> ssh-ed25519 GdLgCQ e5kGII2yVWVxUHErS/wfkwBmTbjAHVwF4/gXWdUsDh0 -> ssh-ed25519 GdLgCQ dljs/yoxh5IV8S1wjksMF3f3+xw3Tsqv3ZPj459KWjo
14885f8Ii0tf4sZ98SFn43LfGmgBZ+a67DeC94RXZfs SZclrcYwhgwyrG6Sg4iHjN+PbKvet3B0AcaWFlMvdpA
-> ssh-ed25519 tOH/HQ aA6MoMhE8EimHbt/MRahwSEocrq3UJNyQF+h98igvVs -> ssh-ed25519 tOH/HQ 9zHh+cM1vXMRx3zZwfOCkyQ2eBobH50JcWIO5UmoDB0
CAjS+No8uKd69bWROKzf58QiekD2YUaWMDUpj5HiCp4 lEA2DAb0UuiRknrKfmKjEpHnuWpSYEWw5Qk0s1JB3bY
-> ssh-ed25519 FpzvfQ cBPJRE565YgznijwB4KKtsBvM+sedIRMY1pOcSDwinI -> ssh-ed25519 FpzvfQ WxXIAYo3SVayrHVhiIS0enua5l+1LHuEYLI2ZJcrVkE
ScFyjKFl+W1qiYauuAwJn4V0CiajOJ/1MTOJAm14QzI 5siODJVz1gQxoZgeUfl25Koqt4ilTYIYqxOGGwyh3Gk
-> ssh-ed25519 2UotMw jD0mowh/pYuaGI0Wkfq0HAHbLBC7c2Xtc2jRzIH8/QY -> ssh-ed25519 2UotMw 7v7u40Gn57E1M/VNNTpgFhg7nsa0JmcZvOBjJ+/Y1mc
208T5wRJYpggU4JYBFyYtOCIN+nloce/goz2DrNRIGE yT1hqZue6sN65PnKgRr/upxXQlloD5s1WS/sosBKH6k
-> ssh-ed25519 kdPvzQ lXXPGLn2ARXCwBTrvWEjU6qKRs99wB6o1jbXJ8mEvXA -> ssh-ed25519 kdPvzQ Ey8yhg4MocBop8aKb9Y5Vulz26NleTREH0O9ga8kgmw
z0GlVxzmN54zUWUw0fD/uTy+KjmsekmMz4qjwmqMt3g eGr2QQasypgk26uQVwUkgjHGjgYVtJfjb80y9fht3qo
-> ssh-ed25519 onmXpg vP2Cyn/4hjbJTaRwekv7O8DO3Srfk7t4nhfezEUeVlc -> ssh-ed25519 onmXpg Gk8NZVb+7qaAdps/C5u1CG+2DIFtHFDhAu+m/43Gd2Y
WK4ccaVpkVub9jJL9S3gNk7B/DoJQ++f/2FkSCDCECw A3WMc+zyVq2ra80T8SeXWxe+eeN/SmdicoOGQJaohDQ
-> ssh-ed25519 CnhD0g BshR8FqJo3NryNCnBrWGChM64BATOeXE+afUvn1EUUQ -> ssh-ed25519 CnhD0g MR+oV7rqxoBN3Xkoo4FJeMpMamkbU8kAbIivnzQDDlY
8Us+VEboP6sysgEyZhKbIWQcdc50PDqCnVEQGFzGhKE djQB7mKq8raqp2Yy/N8s1fcoQ4Xi7KoWgn0axihsPm8
-> ssh-ed25519 4ep2UA yhHUIaGDKbX9ztb5eoiu+CXZLm0fxIEGyzXWoJLBqSQ -> ssh-ed25519 4ep2UA Cxu6m1Fu9gmC6Y14Yo6nebc2tUyo6zc2RRrskhoavE8
H8Yk+e63hoJ4n6WCLFLf2MSGGADPuypT8vkmQDamo0s g56/R04ow0jremNusFjtkWahskNc4pfynVKG+C4WYIY
--- mAaldzUhX8Exw58dUPxKipXmz+5y+O6L9jgFsTsN0Rc --- yn/4D5+C+8iqvDcMNFOrozE6KeEjPq35cMW468nMjzk
¥'tºQ®‰ÙK÷†Yh×#ù*Gf=Diô‡jÙÒ³>]oyö©Ñ«·‚¨æ`Ì×Bè‹&§®Ÿ {aýà ôvœíJëiÀ~ö³Ä*, i¹þ®‡¸Qzyµ,Ncæ­BÔºœ•ìk—~$ᤈž2¼¤/[¹®Tª‰¥¢,þCchÁ
|ÂHƒ¢Â«óñÒz0ø
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+36 -37
View File
@@ -1,38 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg H/DKlkMJvCTrAyOatWBTUxz07PhActR3jU0VWNTX230 -> ssh-ed25519 8UnW5Q y9PK+VDf73/nElH7/STk9n0ru0NIGJ0qp4eQTokEKWs
B/Re9Q6j8wmXO5vqT3uMkDjL0onlwi5zIgY1o0+LMik 8HF0hEGCfbmYfEj0gn2EWUOBo8KC9/znCo7nxW3rkeQ
-> ssh-ed25519 8UnW5Q WPEhhyJUrj7NyQPk+YveNi0M4oiRj6KXFtls7nPzU2s -> ssh-ed25519 UFfTmg piv4fjTj3Ua1VdM82I5B8BI0jk3Qh4S29PnKs9GmokE
V/1vkX4qYBjkrU1K6YaKIevtKU09UBA+8JzXoPK2Buw inY59fSHk4xAZn8xkBQQIoI7xnQW6rsRKCCnszngq34
-> ssh-ed25519 UFfTmg tyqAbdrn6cWfGsR5SJ+v/yjZ6sqgsRqIQXYQBi7N8hE -> ssh-ed25519 xNtnoA vNufVdYaFm+k78r+ioCcm9EWuwCF+zoH1bffrOEmJTQ
tffX/243iUcemnsMv7FeJCaVB3Bu8Tq1KT5PbaOzwFk Y/NDZ01jQEJYAu9U7d5nRI9S67wj6SNz1FXNBoVzho8
-> ssh-ed25519 xNtnoA fhMD2iyPlEDxDYF+Nv96B/XO7Chej+qlVLcLAIOBkh8 -> ssh-ed25519 aY2AXA pHfVblA8IhBLMiTWmq9KT+EBv5/AP3XSQ01bT2VY+lk
lHBYMrcITRGTdcP3R/1WicLLoo+t9LSAKccUosPXsEM kTiFQBOh2sYHx+CAHyduwVauYDOXtfPc4FrKeNZHcE8
-> ssh-ed25519 aY2AXA aCae49UEevT72yF+noITuHhJI2hs4TPTfQWL4FTxxU8 -> ssh-ed25519 AQhf1g uWlt9FLfTmlFmVlPx3o57lVQInTRuT80YZbbwFSAVjM
jGdSacqSHevNEbAgKMKUt4KmWLtDEtQoKknDuKs+lds 3PscKZhny+pMuy+Q4C994e9o9sxsONdZCgewkuo4l3g
-> ssh-ed25519 AQhf1g CplUJMJ+jydffPRTQtLN7v8SZmgtr/MhWJy1h/KTEnU -> ssh-ed25519 r/3ipA ksZgnGbPwj14xBftMDA4R2o7ui1KNOVVunBrA3xwjy8
d17nuN5nzbpLZGr9UstzIfNnr6351IiSS4yopnyGVnk IZZX800pMneP/0SAMDiFlt2wlRqIyMW9bNm19E0uqtQ
-> ssh-ed25519 mOmPfg 8Ppt4dOFq+hUNONGarDhQqoScoVCCu1LBLUc2qRB8Vs -> ssh-ed25519 mOmPfg 6iuNsMJ5qbGog2wMnjLJ3AnQpeTK/oiKmJFU4NmpbXo
+SmwsUKclbWWj8/1xmmaCQA0vCIfnu++At9LpEgrNrI rWPbp574Zb6sU8RFXD4Sw1d6yatcW45LTMkT10FL2ZI
-> ssh-ed25519 YJiRbw oYUo3XEcMfETbDfKlULuNUmGDw3Co+3wum/SrghP8i4 -> ssh-ed25519 YJiRbw MutfBuiITaQ4zs+ELUihuB1Rl7LeAICL2+c5xbr5Rj8
fAkWFlyrgbS9A7x0+G93vuX0QBKTGWlSUPnVZrBcfCk o0mGn86fAERZ8DQ4rSWZh1MOaPLCZ5Su27U+5XExxV0
-> ssh-ed25519 Nl/5yA D47Wn+HH+FO1Zt5RACp1yqsQUD4bpkyMsrVn5PsKaQw -> ssh-ed25519 Nl/5yA NKo72CIorQwlJ3vcfjWZ7IcEWgkrxSpp81P3k2nTk3c
ge54JnSDRgA1F4klkzyL2TBgBTWxqFGOtCr7FNJCWog 4/0XpBgS3C44qqU5zcWBqAzFbMl6DV8V5+xYxBiXCCk
-> ssh-ed25519 GdLgCQ HNxhS03p04Yfp4+tNDE+kr2z+Ol1cr0utxKGwgyBrEg -> ssh-ed25519 GdLgCQ jJ99c7pKMPL9jGM45fbcYRv9k2aeXKFcBidMxinmYQQ
T1MmJ7QxENwg1Tq511rwLXKaYcAfgF5U7qaFwRFcpks 6pA6kX5sxxQLY+IFpVnIp7ximqAsA2Ifo/d2gYTy9uk
-> ssh-ed25519 tOH/HQ LlG3wQJdvjVaVQ1qEaznsS4qg92Yhz+0d80GmzLJR3o -> ssh-ed25519 tOH/HQ o1g4ibiZdld2EzoPUYsEJKUwMciJlqvzpv4hL42WfRk
kZ7Lx5k3a9+6B8e9wcD7iWIXk4Z6Vl/zW2iLr8YRBfQ ZYi5u8ep38jxeHDKq4uCAB13wSb/oJC2+Lpyjyk4UHQ
-> ssh-ed25519 FpzvfQ xG+5fr9yn4gkB88oaoHXiDsmQb4RueRjL4/97GGyGWo -> ssh-ed25519 FpzvfQ YN3SyUVugq1S/4GkWtnfs6qeQ1ukpX64k1dZNFV+UBk
BVwZSswrKY5OVB1+8S7k+F2iv8iluWx/m5ZJgcvXI5c Yaq2dI1oBEQ228g9f3i9mFGklUbOk9s7DFDHTXZN/J0
-> ssh-ed25519 2UotMw VoX97iRr+yxKP5JT7bbM1Vm319ebTy5hAS6KjaLSaB8 -> ssh-ed25519 2UotMw /93PQpOj4bxRoi7Z38nioyN0IHi8Fi9ERBqnZIZ7rh0
AH9XM7XnopkFf71lfrTuxZpHX50Vh/xlCWuijjhYX1I M45TdKIss0NkVObm5T95npKzyBM7A1QcT5DORLORnFI
-> ssh-ed25519 kdPvzQ t7RCE4fMpbOfHer7B0bmyKpPEIWrfFy5IZuMkpvcJhE -> ssh-ed25519 kdPvzQ v5oxUVW0nFpWJt8NFuVubwXhQrx+SHpJ38BU2kJKqnQ
5aLpZihgZJEGWd6e9lRwYFjMGjjCuUJPOvM6ioKSVhU dYeaVnni5QQUg4CaNxbuNYzQsL/KPuQNgFtXk96adXc
-> ssh-ed25519 onmXpg GaE/l9BuV0pYRccwQiH5ACI7Q0hmHsab14VTf0nrXHk -> ssh-ed25519 onmXpg K+8SnidvOmL3kzDCRnJdHg/RFCLcUaWJ2HrA4Awe7lA
q5FC6aDTuFBXPa7d3sxcvXDekNexm6RAXfVvi9lOmw4 iyYRzYexYHNYhI0mlEZyNth7LBYVW9pL67E+gxLf4Is
-> ssh-ed25519 CnhD0g NKOglfGtpdxnyu1Dgit6SrBJdVTwHcJLlWTDXKYcfVk -> ssh-ed25519 CnhD0g inYTXGWEAMNKTpK+uj1xN6jg2xfVzO6s9j5R/bUx6D4
GL7TTMcbeul1mhZE+UQaXHJjJRtXd/PUianSXnOU/gs Sas1bzhaBLXDRkG0dvfEtXn689aLGih+NJ5IVoEAvC8
-> ssh-ed25519 4ep2UA Tmv5PRRGPczoAwLvYroU3iDQji8DFfDI4qq6KIwljxQ -> ssh-ed25519 4ep2UA UokZFgeEqY3/7DABaODXVpxxhjhUrBx1ZWMv4xJdYDQ
y/a+RTJ9vGrnq1GyHj/82On2Q2r78xF+wk/rH/PH0Fk ral1UaG6TlRUVZRTYhpHknIeTrhRvS2LfZ9ET/LM6bY
--- +O+y+oEnUy7/2d80ZBM1YRuqMvw7OcCvuXIXPtE5Ttk --- 5KW+UYA/aip08dG72P0VeJteMlK5lW3vfrCxoMV4+yE
ëã"8TˆUIÛ.ž« ¯ë›« ž¦ðýÿ:¡˜Ü,ú.Nn,3îà.W3b‡%˜ê$ê
3ÕsJ¸e ‰ìÛNËv¿[ØÅ‹
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6
View File
@@ -0,0 +1,6 @@
-----BEGIN NEBULA CERTIFICATE V2-----
MIGloD+ABmhlcm1lc6EHBAUKnQAIEIUEal/riYYEa668pYcgg4lMYGB2VakRFO6b
K9vHSLzjZpuqhBVQ7MReOwUHQKyCIFCN4I/nO1jII+C/GwY6XVW89ddkng95yO4D
awC9mMYng0DNzKvg2r/X1qyEBzEPu101iikgcSJeQ4X7xkA+UQo3dmXsAiZH6RSu
ujn0TMZqZpwGP/7lUTcUEjqO7nh/o2kA
-----END NEBULA CERTIFICATE V2-----
Binary file not shown.
Binary file not shown.
+4 -4
View File
@@ -1,6 +1,6 @@
-----BEGIN NEBULA CERTIFICATE V2----- -----BEGIN NEBULA CERTIFICATE V2-----
MIGloD+ABmlzYWlhaKEHBAUKnQAEEIUEac2MaYYEa668pYcgg4lMYGB2VakRFO6b MIGsoEaABmlzYWlhaKEOBAUKnQAEEAQFCp1kARCFBGplFeuGBGuuvKWHIIOJTGBg
K9vHSLzjZpuqhBVQ7MReOwUHQKyCIBv+1Lr/E3Q6d99laLGdXRTss2SIL4OGBp8z dlWpERTumyvbx0i842abqoQVUOzEXjsFB0CsgiDoVBJV1aKswyKPq1E4ZH9H21tx
qqfEsAMpg0CyDSEYuL8GaHQq708GbCxhxFifCZaRTB+ReGBScmhT9XhIwSLHRRZJ 2IB0pKfEqNVdOLVedYNAjZSaY/IreMGnplY6txmSNuqSpFe1UTEDu4MOGSeZTKsO
1TmoY4QvrdPOS3NAWvlawk/JUqN7SWQL 71y33z4AWsexnDD2ItFLT2rA5EgbApacaYF0AxtSCQ==
-----END NEBULA CERTIFICATE V2----- -----END NEBULA CERTIFICATE V2-----
Binary file not shown.
+4 -4
View File
@@ -1,6 +1,6 @@
-----BEGIN NEBULA CERTIFICATE V2----- -----BEGIN NEBULA CERTIFICATE V2-----
MIGnoEGACGplcmVtaWFooQcEBQqdAAUQhQRpzYxphgRrrrylhyCDiUxgYHZVqREU MIGuoEiACGplcmVtaWFooQ4EBQqdAAUQBAUKnWQBEIUEamUYxYYEa668pYcgg4lM
7psr28dIvONmm6qEFVDsxF47BQdArIIgHXr6BLGmqfF92GXiN6MBj3ac0p/EtNYf YGB2VakRFO6bK9vHSLzjZpuqhBVQ7MReOwUHQKyCIBHK000U9B0TVjuoTaMhQZFi
xR3/EdI5GnGDQIFxfV5fVwi26+IRk9QIFxyyFBtmsZyPbdxL8ca1WUPm3lCNA4BT 8cKytw8is2cqUW4XAENBg0CLM+fuJcMVMbk6VHmRhko4KUTaQzWG2dggEwskTWCf
Knd9Y3Zlp6L35L4/dzSqAVoXu2nlHF6SOAA= IPXiTY2L/hInHSGFynIIe+Ux9hSRJ1W1KF4J8jq5LBwN
-----END NEBULA CERTIFICATE V2----- -----END NEBULA CERTIFICATE V2-----
Binary file not shown.
+6
View File
@@ -0,0 +1,6 @@
-----BEGIN NEBULA CERTIFICATE V2-----
MIGjoD2ABGt1bWGhBwQFCp0ACBCFBGppSlqGBGuuvKWHIIOJTGBgdlWpERTumyvb
x0i842abqoQVUOzEXjsFB0CsgiDh5M2hyejw6E2FJKlukNDuEBUWhctocJ3Zovyc
x+HwE4NAGX+FSOpGbnZ9QFYBfq1FvRqXdyFtAyXWqOkq59j3hR5QSG7E7/KAHFFS
1NJ60rKABZhTepqhACZRCeyoGfMFAA==
-----END NEBULA CERTIFICATE V2-----
Binary file not shown.
+36 -36
View File
@@ -1,37 +1,37 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg OrQU6PdMcCIa3LFbhyw0uruEXKPKjh3EEHCcT4rbiyk -> ssh-ed25519 8UnW5Q n9GImTATabmorvZdYfmlwogI19kDC2q0Pn36oIaHjV0
dgJuit2gMEnZBREW9We/YgXdKLLqchfx/DdKCE7VRHk LIbb+QWyJTMKeSb7brkPtRrp1Hzh1wAEoQaWjLd3faA
-> ssh-ed25519 8UnW5Q NhncgN+/uGdf9QtsW/87TnN+xWCsodc93pefacAzsWs -> ssh-ed25519 UFfTmg wsBWO0eruy1hTfDW+hRogrdBmCKwCBApdfWbl446tyI
TXOayo7PZSdN7Gjv23ayI/AUp0Ix3BjBG1apjZML3Rw S4Di+tWvsWChYEcnIAvDJHBCKODEbwZfkhV7UOsLXs0
-> ssh-ed25519 UFfTmg blhCWXafW5PVXsZ91nWevv/2ydb8ETFRGyOEBn+IH2I -> ssh-ed25519 xNtnoA G/7vE3GJBDY9JrwnlHsR3WlaysDUpib8a3cqSNINE0g
tdpcfeFHrl3SqrqjVKKno13nFvPlI/+z6J1sN+REu/o ckMLqrwEyf4/k9DN+sjhBsHiyABBlCAEpzjA3M3wzvo
-> ssh-ed25519 xNtnoA 1Co3+zD8QXJ3+cwvUHz1Ua/GzAjiPhKTMiAHTSt95Ww -> ssh-ed25519 aY2AXA PmlfZmS6gON8BtCCnklSE7iYyXtCwc+hYKZ8BeS9ohU
dx5SESrOeBw4CqsK38aRXpE/ZloPR/AEH2X88WhV/fo A4bBzr+64i5VQo0TR2+FwUucODgCRWQGaOBQKh+DRzI
-> ssh-ed25519 aY2AXA SmalHmG3tZrwVXxViBtuPR4mdv82EOZJcESSvOKEB3g -> ssh-ed25519 AQhf1g qvdgQJVD6LUcQ4SBp3QQv995bGS06StlMtgLkkwGVBY
8t1YLmiQ8ctpP/HOLyJEzQp9+2zlnHcPtY1WGc9xhF4 wEUduXnr2lEl1QSAdIi+U5lCzs2vXAxTTtFL116NxSA
-> ssh-ed25519 AQhf1g md3XNHVrQHRGPAYezZbJqwnxzgaQi21Wjy9DrhF+12w -> ssh-ed25519 r/3ipA idNoKxD2x/oipXYfx5BzFKMbj//odBWcodAKEhQ72Qg
U9UB7d4VAayzFSwFJ3wxws3cLiPXdN3WK3B1tMtIW+4 Z5Agpyxc6e5hhXfkW38m24apmdL0YQkA/Sv44NNBnoU
-> ssh-ed25519 mOmPfg F53t7zXnR7tYXtTkLso/7z1gLrXe+xeHdDMT2KM13Dk -> ssh-ed25519 mOmPfg Z1dCxZcYXJtsGYQQ6T6Ua0B8oNiWM+KtdxhwpP7C/gY
pkHqGoA+LLivtZMjOoLScjEq8Omb1IeumbdCdQMdXS0 ZXlHq7tFJdrZBjpoaR5kWrwTHi0m0FaiMG5RHPs75vY
-> ssh-ed25519 YJiRbw q32M0uWWQZPcupI4tONjcjJrRnsgueZgiL+Uyvf9oHk -> ssh-ed25519 YJiRbw jb8zqdGeli0yTTabdv+C72UHd3F3Kf1VCeOGjqi6oxk
QZX4bxyyYGx5tFGiSqd/iUWWtQOuRRGzk5LteymQgjI y0OBqyi5Rgdxdfdcdrt9SC+rqUfwB/Db9YGx1jBIn1g
-> ssh-ed25519 Nl/5yA fvwieHNfPldy7WXjP5o8ruYqBZFQof7xX9JdoKFJxHo -> ssh-ed25519 Nl/5yA XABrTPgqVEU+H3vVciDTE5cUOiLogPNtnKgc0hFfjjY
pKcqdTK4tDy6EIpK5hi6GUNr9munkP4zbk34AzuWe4U PGcnW9bss2ST4sbM5c1OemW8sjZb4JmgjokAwICPR3o
-> ssh-ed25519 GdLgCQ bCuIznwsYwctq6DjODQNfsS7vY2fyfwV/VwnTWfydHM -> ssh-ed25519 GdLgCQ IxqW2RoEzka8OLv1t84UJ4QIZgdMC7uv1VC/1aOCKTU
ki+n+eEiCKfmLwqsJQ/AKNeUk4xYDl4NncIX73qxmRE 681zK7CVFrn692BsZ0nKnIdgv5lZteuzgX57VuTPds4
-> ssh-ed25519 tOH/HQ 8CRisN/dgZqvbNAoD5HqbLt+tHNBesVyKDlxPVCOpRk -> ssh-ed25519 tOH/HQ ffHb95tfhzMnUOR3JzsN3SynReV7hzaS5CG8ETwS61M
JULBuvGzpEKIgmtj0z+fKngId+hDOEkVFY4MD4zS7GU 1WkVjlKTu3qHci8yfgsr1zifjvbZqAZW+KHWQv1z+g0
-> ssh-ed25519 FpzvfQ 8CHuhhkjlcEWDyXdSd/tzREvtjep9VZ7OMAevY48cG4 -> ssh-ed25519 FpzvfQ 1I1miMxckl6r4MJlsaHUGQeRlF/MArYOvVpxWoR1WCA
W1/Dp/eEAfWz+CSVE2cxR4Gt/MfcXURInEVQIdwUAj8 G686WbFoGcUrlSTqJ8ZhXxg57hgt2OwOLGPUUxVepVU
-> ssh-ed25519 2UotMw rNqoI3CqyjeeYwtCMHCcKqEZ1d6S1JW5LAe/df7mWBQ -> ssh-ed25519 2UotMw 13+e9PAn6rScb8SlQyrpuVJGgQxhRF6PnFIAhmuMKhY
y4/Uwm9tKhl7ijc5334ono9sLm5wQd+dhMwiDr+Jq6w 0OBeqN1Lok4iVN3ybcKvn5N8PkysO2KOhLVxVm0Hp4M
-> ssh-ed25519 kdPvzQ weu8fLA1OeNms5N821SMT9F+0w6ZDsQUwTCYNa9ht2Y -> ssh-ed25519 kdPvzQ 05Mecby4PtXbMG6PrRkRCehFoX5+E+iElj0OhC28uFQ
7Agj2zykLwIsG2pPTWuuBMw50rrc57Bdmma6oGTMkOA Dz1SW3MYl9po/wOJrvZP547PYxNy6g/nfdFI7+AizhQ
-> ssh-ed25519 onmXpg i3bUv+Hs38JtY1Y63/bTkR20cRWd0inq3icrdQWt2nI -> ssh-ed25519 onmXpg dO+Z197lqZNCYj8QMjuI+JegkECteQUNO0N2WgcW/30
Gu1XJtFA6W5dFvaorRGBacNE3uIEvtcMfLCQXCGwbg4 SfhhHvb5j/BPHKksMzQwMF02K7RhlQ2T4dIQc+h96sU
-> ssh-ed25519 CnhD0g qXkWhaf1HyzUd9iR4sB8y1i6AHCR3qqKTajDKt8XUHE -> ssh-ed25519 CnhD0g qMU+iswZGN3HrgRTRLvpmZBspUhzOhxaB4IEgZGeO10
Iknry4nOsgOzY/0HIPAH2tb7u70wO3g3CD6rFE05riI kLLPnVwr7BNz3m0ZsXOkrWijQimiaNh85uhGFpvGZQQ
-> ssh-ed25519 4ep2UA qvbd+Mq6yJ75Uqs5atLAD9o6iVr4XLqdhwuNEhmDQwE -> ssh-ed25519 4ep2UA CEndKjv+s2dcIHFJaI60dB79S/HRiEVZmWaga3AvmH8
6+6iBJy5ebBsF7ryp0F9VloRCsD8luFiH4ftSUWhtuE oDfdLqU29FEORoqHzerZe6PRXomtfYLE1FrwLiaa2Jw
--- hMLItkpoqWAE0+pmuuk6je7a37Qfsdi+kUNgM2tcMXk --- U7vY+jp7wVpzuA640iJfNm1OsRfjQwbmvfF0z7VleTM
tm-;ÒOý3Nt®ò¥Û@ä#OÀ)‹E™Iµ¤ÏÅWÒõ½Íœã(Ãä'¦Z:@¾\ª|Ž0àT úU6Ô.ÿ·Ù÷fqñí™À³Ý+DTð¦[Ôƒez½:ù7áHiüØoâ"áÊ“{é&Xú«Ú3.2¶«)_÷„œÇÛÔÀ¯¼vuÜâ¯]À‰jD¯Ò@0£z O!PÁSÛ¹åQãו"O×2«µL•—A¯rèÿ\6ç»ï9|qÑà:Àб­qü½ÜdˆõF×§†Ø\JH¢1;ñ…l.OŸj­cHeÚ-¢Ë.ší:¶çê6žñÖ_òº&8Ý3‰‰5p,ݤ¶Ä€&4Ÿk„Ó¤y¿Í–3Á½VNè”S齜¼§)ÔøuD
+4 -4
View File
@@ -1,6 +1,6 @@
-----BEGIN NEBULA CERTIFICATE V2----- -----BEGIN NEBULA CERTIFICATE V2-----
MIGjoD2ABHpla2WhBwQFCp0ABhCFBGnNjGmGBGuuvKWHIIOJTGBgdlWpERTumyvb MIGqoESABHpla2WhDgQFCp0ABhAEBQqdZAEQhQRqZRi1hgRrrrylhyCDiUxgYHZV
x0i842abqoQVUOzEXjsFB0CsgiCirKKbej7yAALn41C+MYmertD9LOv09gZ61ODF qREU7psr28dIvONmm6qEFVDsxF47BQdArIIg+FmKGTcvIvUcFdcguETRybn3jh58
wEcnB4NAfix/r3q+XLYe3egKUoqJUW2i11x0ST0hxqhJUd8LjHKirRyHsvUraMbG jJL6X5BHcmrxOWODQCfB4+92Zs/315a6I60PXsUaw3Jk0MQPLUuHykTO19imWsYa
c8x+CXsCPLgheGt548PpmrObQWtrBA== DyKFlk26ePhczGlhO2svq9J8p0zce0w+TPveOw8=
-----END NEBULA CERTIFICATE V2----- -----END NEBULA CERTIFICATE V2-----
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More