Author SHA1 Message Date
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
greg 37a833887b Merge branch 'main' into auto/update-flake-lock-20260518
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-hosea Build done.
2026-05-19 07:53:55 +00:00
Greg Hellings a69fc4240a chore: build IVR home config
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-05-19 02:40:33 -05:00
Greg Hellings 15c586fbdb fix: build failures on darwin
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-05-19 02:37:25 -05:00
klaatu 2daf74d134 chore: update flake.lock 2026-05-18
buildbot/nix-eval Build done. (1 warning)
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.pkg-hms 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-exodus 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.hm-icdm-root 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-zeke 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-jeremiah 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-zeke 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-exodus 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-linode Build done.
buildbot/nix-build Build done.
2026-05-18 17:58:09 +00:00
Greg Hellings 1934787e80 chore: create desktop entry for prismlauncher
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-05-18 12:45:52 -05:00
Greg Hellings 2a476a7bfe chore: update refined-storage to release 2026-05-18 12:45:34 -05:00
Greg Hellings e94137ecbf fix: enable colmena building with new overlays 2026-05-18 12:45:04 -05:00
Greg Hellings d22f543043 chore: update niks3 pin to fix mega file problem 2026-05-18 12:44:34 -05:00
Greg Hellings e5e4a38cf1 chore: begin updating zim updater
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
Update manifest chart versions / update-manifests (push) Successful in 29s
Update flake.lock / update-flake-lock (push) Successful in 2m49s
2026-05-13 11:01:33 -05:00
Greg Hellings 89faa7d97d fix: update SHA hashes 2026-05-13 10:50:26 -05:00
Greg Hellings fc4430e4f1 fix: system build fixes for new package setup 2026-05-13 08:33:48 -05:00
Greg Hellings f735423d98 chore: make zims separate packages
buildbot/nix-eval Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.hm-exodus 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-jeremiah 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.hm-zeke Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-linode Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-darwin.hm-gregs-MacBook-Pro-16-inch-Nov-2024 Build done.
buildbot/nix-build gitea:greg/nixos#checks.aarch64-darwin.hm-ivr Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikipedia-wikipedia_ht_all_maxi.zim" 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-zim-phet-phet_en_all.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikiversity-wikiversity_fr_all_maxi.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."pkg-zim-wiktionary-wiktionary_fr_all_nopic.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikiversity-wikiversity_en_all_maxi.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-wiktionary-wiktionary_en_all_nopic.zim" 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-zim-wikisource-wikisource_en_all_maxi.zim" Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikisource-wikisource_fr_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 Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux."pkg-zim-wikipedia-wikipedia_en_all_maxi.zim" Build done.
2026-05-13 08:06:57 -05:00
Greg Hellings 985dd927c4 chore: move from attic to niks3
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-05-12 21:25:24 -05:00
Greg Hellings 10d6f85b5e chore: update pre-commit
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Update manifest chart versions / update-manifests (push) Successful in 3s
2026-05-10 01:48:45 -05:00
Greg Hellings 85cdfce6a9 fix: use proper runs-on for updates 2026-05-10 01:47:34 -05:00
Greg Hellings e62757cf1c chore: add Ubuntu 26.04 to matrix 2026-05-10 01:42:28 -05:00
Greg Hellings a1fb195bf4 chore: add podman-tui and other goodies
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Update flake.lock / update-flake-lock (push) Failing after 4s
2026-05-07 08:28:44 -05:00
Greg Hellings 9eb9fdec6c chore: try allowing nix darwin builds
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Update flake.lock / update-flake-lock (push) Failing after 3s
Update manifest chart versions / update-manifests (push) Successful in 4s
2026-04-30 17:18:36 -05:00
Greg Hellings a8323e2396 fix: unstick macOS builds for libdrm missing
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-04-30 16:13:36 -05:00
Greg Hellings 855ab6e277 chore: try forcing build of linux-builder packages
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-04-30 16:08:23 -05:00
Greg Hellings 2932e9e335 chore: remove vm-gitlab which is no longer in use 2026-04-30 16:06:58 -05:00
Greg Hellings 4940550c62 chore: enable linux-builder on Mac
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
2026-04-30 14:42:55 -05:00
Greg Hellings 258934a46b chore: update Claude code usage 2026-04-30 14:42:29 -05:00
135 changed files with 1981 additions and 2094 deletions
+2 -2
View File
@@ -1,13 +1,13 @@
name: Update flake.lock name: Update flake.lock
on: "on":
schedule: schedule:
- cron: "0 0 * * 0" # Every Sunday at midnight UTC - cron: "0 0 * * 0" # Every Sunday at midnight UTC
workflow_dispatch: workflow_dispatch:
jobs: jobs:
update-flake-lock: update-flake-lock:
runs-on: [bare-metal, nix-latest] runs-on: nix-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
-23
View File
@@ -1,23 +0,0 @@
stages:
- eval
- build
- push
"Evaluate for builds":
stage: eval
tags:
- kubernetes
image: "$CI_REGISTRY/greg/ci-images/builder:latest"
artifacts:
paths:
- gitlab-ci-continue.yml
script: nix run ".#gen-build" > gitlab-ci-continue.yml
"Trigger builds":
stage: build
trigger:
include:
- artifact: gitlab-ci-continue.yml
job: "Evaluate for builds"
variables:
PARENT_PIPELINE_ID: $CI_PIPELINE_ID
+3 -2
View File
@@ -17,7 +17,7 @@ repos:
- id: mixed-line-ending - id: mixed-line-ending
- id: trailing-whitespace - id: trailing-whitespace
- repo: https://github.com/adrienverge/yamllint.git - repo: https://github.com/adrienverge/yamllint.git
rev: v1.37.1 rev: v1.38.0
hooks: hooks:
- id: yamllint - id: yamllint
args: args:
@@ -30,8 +30,9 @@ repos:
comments: false comments: false
comments-indentation: false comments-indentation: false
document-start: false document-start: false
line-length: false
- repo: https://github.com/NixOS/nixfmt - repo: https://github.com/NixOS/nixfmt
rev: v1.1.0 rev: v1.2.0
hooks: hooks:
- id: nixfmt-nix - id: nixfmt-nix
- repo: https://github.com/astro/deadnix - repo: https://github.com/astro/deadnix
+53 -25
View File
@@ -1,54 +1,82 @@
{ {
lib,
pkgs, pkgs,
pkgs',
top, top,
... ...
}: }:
let let
builder-config = { system = builtins.replaceStrings [ "darwin" ] [ "linux" ] pkgs.stdenv.hostPlatform.system;
darwin-aarch-builder = top.self.nixosConfigurations.builder-aarch; builderConfig = top.nixunstable.lib.nixosSystem {
darwin-x86-builder = top.self.nixosConfigurations.builder-x86; inherit system;
modules = [
"${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix"
{
virtualisation = {
host.pkgs = pkgs;
darwin-builder = {
workingDirectory = "/var/lib/darwin-builder";
hostPort = 22;
}; };
builder = arch: let };
b = builder-config."darwin-${arch}-builder"; }
in { ];
command = "${b.config.system.build.macos-builder-installer}/bin/create-builder"; };
builder = {
command = "${builderConfig.config.system.build.macos-builder-installer}/bin/create-builder";
serviceConfig = { serviceConfig = {
KeepAlive = true; KeepAlive = true;
RunAtLoad = true; RunAtLoad = true;
StandardOutPath = "/var/log/builder-vm-${arch}.log"; StandardOutPath = "/var/log/builder-vm-${system}.log";
StandardErrorPath = "/var/log/builder-vm-${arch}.stderr.log"; StandardErrorPath = "/var/log/builder-vm-${system}.stderr.log";
}; };
}; };
in in
{ {
environment.systemPackages = with pkgs; [ environment = {
launchDaemons = {
"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 agenix
hms pkgs'.hms
procps # Includes tools like `watch`, `kill`, and `ps`
]; ];
};
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
dejavu_fonts dejavu_fonts
nerd-fonts.hack nerd-fonts.hack
]; ];
launchd.daemons = lib.genAttrs' [ "x86" "aarch" ] (arch: lib.nameValuePair "builder-${arch}-machine" (builder arch)); #launchd.daemons.darwin-builder = builder;
nix = { nix = {
#buildMachines = [ { systems = ["aarch64-linux"]; sshUser = "builder"; sshKey = "/etc/nix/builder_ed25519"; hostName = "localhost:31022"; protocol = "ssh-ng"; }];
enable = true; enable = true;
buildMachines = [
{
hostName = "ssh-ng://builder@localhost";
system = "aarch64-linux";
maxJobs = 4;
supportedFeatures = [
"kvm"
"benchmarch"
"big-parallel"
];
}
];
gc.interval.Hour = 3; gc.interval.Hour = 3;
#linux-builder.enable = true;
settings.auto-optimise-store = false; # Darwin bugs? settings.auto-optimise-store = false; # Darwin bugs?
}; };
+2 -8
View File
@@ -19,6 +19,7 @@ let
specialArgs = { specialArgs = {
inherit metadata top; inherit metadata top;
inherit (top) self; inherit (top) self;
pkgs' = top.self.packages.${system};
}; };
modules = [ modules = [
{ {
@@ -37,11 +38,4 @@ let
++ lib.optionals (builtins.pathExists ./hosts/${name}) [ ./hosts/${name} ]; ++ lib.optionals (builtins.pathExists ./hosts/${name}) [ ./hosts/${name} ];
}; };
in in
( (lib.genAttrs (builtins.attrNames (builtins.readDir ./hosts)) (name: mac { inherit name; }))
lib.genAttrs
(builtins.attrNames (builtins.readDir ./hosts))
(
name:
mac { inherit name; }
)
)
+1
View File
@@ -31,6 +31,7 @@ in
"bitwarden" "bitwarden"
"bruno" "bruno"
"chromium" "chromium"
"claude"
"dbeaver-community" "dbeaver-community"
"ghostty" "ghostty"
"firefox" "firefox"
+2 -2
View File
@@ -1,4 +1,4 @@
{ config, ... }: { ... }:
let let
username = "greg"; username = "greg";
in in
@@ -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
+320 -103
View File
@@ -25,19 +25,17 @@
}, },
"buildbot": { "buildbot": {
"inputs": { "inputs": {
"flake-parts": "flake-parts",
"hercules-ci-effects": "hercules-ci-effects",
"nixpkgs": [ "nixpkgs": [
"nixunstable" "nixunstable"
], ],
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1776626072, "lastModified": 1783833875,
"narHash": "sha256-NF6x9h74mrA0Acl1JHWwuSSrwzyTm3KyV8a85QUqTW0=", "narHash": "sha256-G+hRtNJ/Nnr6VFMQp2UZdx/ckJDR/RJoK0Fy/yx1/YY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "buildbot-nix", "repo": "buildbot-nix",
"rev": "f298855ee69709374a25ae9543ad11bd549d7b8b", "rev": "147af587241e2af85399402da60a4f44fdb1e5d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -55,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": {
@@ -97,11 +95,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775037210, "lastModified": 1784362797,
"narHash": "sha256-KM2WYj6EA7M/FVZVCl3rqWY+TFV5QzSyyGE2gQxeODU=", "narHash": "sha256-EP9b9b+OXDxHBPefFwMYCIaLq0fn3UkmrbfzbLUT7kQ=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "06648f4902343228ce2de79f291dd5a58ee12146", "rev": "b4cccbd4bc299c1f71ae185b79c3cf99aa82805c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -114,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": {
@@ -161,17 +159,14 @@
}, },
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": "nixpkgs-lib"
"buildbot",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1775087534, "lastModified": 1782949081,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -182,14 +177,17 @@
}, },
"flake-parts_2": { "flake-parts_2": {
"inputs": { "inputs": {
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": [
"hermes",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1775087534, "lastModified": 1772408722,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -206,11 +204,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775087534, "lastModified": 1782949081,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -241,12 +239,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": {
@@ -255,28 +256,28 @@
"type": "github" "type": "github"
} }
}, },
"hercules-ci-effects": { "hermes": {
"inputs": { "inputs": {
"flake-parts": [ "flake-parts": "flake-parts_2",
"buildbot",
"flake-parts"
],
"nixpkgs": [ "nixpkgs": [
"buildbot", "nixunstable"
"nixpkgs" ],
] "npm-lockfile-fix": "npm-lockfile-fix",
"pyproject-build-systems": "pyproject-build-systems",
"pyproject-nix": "pyproject-nix",
"uv2nix": "uv2nix"
}, },
"locked": { "locked": {
"lastModified": 1776380511, "lastModified": 1784663791,
"narHash": "sha256-3A2B8k6YCuzt5pT/CQEltUghtE6heSlk2tMYkg/fUWI=", "narHash": "sha256-bPip7Rk/5n5idLvedBXWjzuRw6cc30XGxCRJewlwwUE=",
"owner": "hercules-ci", "owner": "nousresearch",
"repo": "hercules-ci-effects", "repo": "hermes-agent",
"rev": "4a80b7e95a298b7bb4418c0a2b55fe95a662c377", "rev": "e2e8823f1d2de2aa95c8147d0abd105539d5daff",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "hercules-ci", "owner": "nousresearch",
"repo": "hercules-ci-effects", "repo": "hermes-agent",
"type": "github" "type": "github"
} }
}, },
@@ -287,11 +288,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1776904464, "lastModified": 1784407317,
"narHash": "sha256-sBUCj7/4d3Hoevpu3oQp8ccJNA1EDeVmFi1F8O6VJro=", "narHash": "sha256-iZrxHToDJWnvt+5LGAtvuQMTy1NZYlNEKbKaVtBJNcc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "667b3c47325441e6a444faaf405bba76ec70338a", "rev": "39411a8e12a5526d992e65bc7e3dc9a4414d6713",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -326,14 +327,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": 1777001712, "lastModified": 1784344393,
"narHash": "sha256-9JX9msZU1NvHzjKM24PRorP76Ge8GBy6LAkJKA21mlY=", "narHash": "sha256-yAo2ZzSIdeBZg7cOKUpQxwflL+DRYN+1DMObZk2lP2Q=",
"owner": "Infinidoge", "owner": "Infinidoge",
"repo": "nix-minecraft", "repo": "nix-minecraft",
"rev": "394d3bfd943458baf29e4798bc9b256d824a3bb9", "rev": "7297d14c52ec8ef39c6aeff2c1818541fd030473",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -342,6 +343,25 @@
"type": "github" "type": "github"
} }
}, },
"niks3": {
"inputs": {
"nixpkgs": "nixpkgs_3",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1784016977,
"narHash": "sha256-TydDba3YD2u15uS0L+PDs7lMqPopnzWggljTKDqOCSw=",
"owner": "Mic92",
"repo": "niks3",
"rev": "b306808bf381e7e66e33de1e9446a1be0935f4e3",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "niks3",
"type": "github"
}
},
"nix-github-actions": { "nix-github-actions": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -350,11 +370,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": {
@@ -364,12 +384,15 @@
} }
}, },
"nix-hardware": { "nix-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": { "locked": {
"lastModified": 1776830795, "lastModified": 1784310968,
"narHash": "sha256-PAfvLwuHc1VOvsLcpk6+HDKgMEibvZjCNvbM1BJOA7o=", "narHash": "sha256-rkSPTePrKqs4dg+i7ZFCq93+HrClac6oSwXX927SVjA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "72674a6b5599e844c045ae7449ba91f803d44ebc", "rev": "779c32a00155994c86cde8213a8dd4df139d4355",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -380,11 +403,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": {
@@ -396,11 +419,26 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1774748309, "lastModified": 1782614948,
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=", "narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "333c4e0545a6da976206c74db8773a1645b5870a", "rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1783821755,
"narHash": "sha256-eMPX9S6MKPyUnaOgeRfrG7OKUiAlc1AlcRinMbSB0WA=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "228ab8523d81526e57a6ca342e1a919fb6d246a8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -427,11 +465,56 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1776548001, "lastModified": 1783978241,
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=", "narHash": "sha256-7kK0Y/fIV2NTKArkd/eZGaFg+dEmgP8KDRsGK2vB5M4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a8b81d3cc8d35af7bc98694696bea61ad4f8fca7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1767892417,
"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": "b12141ef619e0a9c1c84dc8c684040326f27cdcc", "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -441,29 +524,29 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1766025857, "lastModified": 1777207419,
"narHash": "sha256-Lav5jJazCW4mdg1iHcROpuXqmM94BWJvabLFWaJVJp0=", "narHash": "sha256-V3bmPWAajDiC+1ClDOp55gianW2EyRJSJOyu1RUQibc=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce", "rev": "a7ecea3deccfbdbf22945a89984fcc5a169da8aa",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce", "rev": "a7ecea3deccfbdbf22945a89984fcc5a169da8aa",
"type": "github" "type": "github"
} }
}, },
"nixunstable": { "nixunstable": {
"locked": { "locked": {
"lastModified": 1776548001, "lastModified": 1784356753,
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=", "narHash": "sha256-12KrbMiWLcf8m7pCvAtZh1ZrgF85ZXDXvfR/fWTKy84=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc", "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -476,17 +559,15 @@
"nixvimunstable": { "nixvimunstable": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_3", "flake-parts": "flake-parts_3",
"nixpkgs": [ "nixpkgs": "nixpkgs_5",
"nixunstable" "systems": "systems_4"
],
"systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1776830812, "lastModified": 1784057377,
"narHash": "sha256-L2q0bpa6evlzE4IfIQ7JWqhTAuINggUSIxMmOAxUsCg=", "narHash": "sha256-yycNej5//EsRbV10moBoh+/63vXEwZD1ZFEiRm6C9rQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "53aad7a9aaadaec21d740117ba0f0531b9a9b3cd", "rev": "07180a087e4a00720dc0731cbcd8dec796974381",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -496,17 +577,38 @@
"type": "github" "type": "github"
} }
}, },
"npm-lockfile-fix": {
"inputs": {
"nixpkgs": [
"hermes",
"nixpkgs"
]
},
"locked": {
"lastModified": 1775903712,
"narHash": "sha256-2GV79U6iVH4gKAPWYrxUReB0S41ty/Y3dBLquU8AlaA=",
"owner": "jeslie0",
"repo": "npm-lockfile-fix",
"rev": "c6093acb0c0548e0f9b8b3d82918823721930fe8",
"type": "github"
},
"original": {
"owner": "jeslie0",
"repo": "npm-lockfile-fix",
"type": "github"
}
},
"nurpkgs": { "nurpkgs": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_4", "flake-parts": "flake-parts_4",
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_6"
}, },
"locked": { "locked": {
"lastModified": 1776910402, "lastModified": 1784417922,
"narHash": "sha256-SvRshrmzz9SmiiflE+Ph2RQ2YJkmQRpluebVt94mHPQ=", "narHash": "sha256-19XZ56wJXArMKxjY25pKXkNp/FrYHGoo+HuQtW6teSM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "b3ab759ea8da0d514dbbcb89e269fd59676a92ae", "rev": "2c806d314605495dd7fd75b5950003a062e2b47a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -515,16 +617,69 @@
"type": "github" "type": "github"
} }
}, },
"pyproject-build-systems": {
"inputs": {
"nixpkgs": [
"hermes",
"nixpkgs"
],
"pyproject-nix": [
"hermes",
"pyproject-nix"
],
"uv2nix": [
"hermes",
"uv2nix"
]
},
"locked": {
"lastModified": 1772555609,
"narHash": "sha256-3BA3HnUvJSbHJAlJj6XSy0Jmu7RyP2gyB/0fL7XuEDo=",
"owner": "pyproject-nix",
"repo": "build-system-pkgs",
"rev": "c37f66a953535c394244888598947679af231863",
"type": "github"
},
"original": {
"owner": "pyproject-nix",
"repo": "build-system-pkgs",
"type": "github"
}
},
"pyproject-nix": {
"inputs": {
"nixpkgs": [
"hermes",
"nixpkgs"
]
},
"locked": {
"lastModified": 1772865871,
"narHash": "sha256-/ZTSg97aouL0SlPHaokA4r3iuH9QzHVuWPACD2CUCFY=",
"owner": "pyproject-nix",
"repo": "pyproject.nix",
"rev": "e537db02e72d553cea470976b9733581bcf5b3ed",
"type": "github"
},
"original": {
"owner": "pyproject-nix",
"repo": "pyproject.nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"buildbot": "buildbot", "buildbot": "buildbot",
"colmena": "colmena", "colmena": "colmena",
"darwin": "darwin_2", "darwin": "darwin_2",
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts",
"hermes": "hermes",
"hmunstable": "hmunstable", "hmunstable": "hmunstable",
"minecraft": "minecraft", "minecraft": "minecraft",
"niks3": "niks3",
"nix-hardware": "nix-hardware", "nix-hardware": "nix-hardware",
"nixpkgs-lib": "nixpkgs-lib_2",
"nixunstable": "nixunstable", "nixunstable": "nixunstable",
"nixvimunstable": "nixvimunstable", "nixvimunstable": "nixvimunstable",
"nurpkgs": "nurpkgs", "nurpkgs": "nurpkgs",
@@ -534,16 +689,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"
} }
@@ -593,6 +748,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": [
@@ -601,11 +772,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": {
@@ -614,16 +785,62 @@
"type": "github" "type": "github"
} }
}, },
"vsext": { "treefmt-nix_2": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_4" "nixpkgs": [
"niks3",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1776828494, "lastModified": 1780220602,
"narHash": "sha256-gQ5+syn8ndyF/+c5g5ZpeAScNKhkTF4/63JsO2hqGHo=", "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"uv2nix": {
"inputs": {
"nixpkgs": [
"hermes",
"nixpkgs"
],
"pyproject-nix": [
"hermes",
"pyproject-nix"
]
},
"locked": {
"lastModified": 1773039484,
"narHash": "sha256-+boo33KYkJDw9KItpeEXXv8+65f7hHv/earxpcyzQ0I=",
"owner": "pyproject-nix",
"repo": "uv2nix",
"rev": "b68be7cfeacbed9a3fa38a2b5adc0cfb81d9bb1f",
"type": "github"
},
"original": {
"owner": "pyproject-nix",
"repo": "uv2nix",
"type": "github"
}
},
"vsext": {
"inputs": {
"nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1784343266,
"narHash": "sha256-EGkegdTz2n6ESyih8s3dUuPyJQWlYfPp7U41J05g8PY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "ea6764d22ff5478f5db39ede57eeafc70d14e8e6", "rev": "472a3e862c76c64ac3ad75a24d332cb5cdd5f1bb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -640,11 +857,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1776910211, "lastModified": 1784058842,
"narHash": "sha256-0ku3gW8bZ9TTpEU2fQw86oU6ZLT2vF6pacF+cLaf7VY=", "narHash": "sha256-3u3tvbCIAid3Mv7RrJx13jusIEQC/HeKYhO/SUSxR3A=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NixOS-WSL", "repo": "NixOS-WSL",
"rev": "4e6cad241baa0115a7aae8c55b04c166da4997c9", "rev": "24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad",
"type": "github" "type": "github"
}, },
"original": { "original": {
+16 -8
View File
@@ -19,16 +19,19 @@
inputs.nixpkgs.follows = "nixunstable"; inputs.nixpkgs.follows = "nixunstable";
}; };
flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.url = "github:hercules-ci/flake-parts";
hermes = {
url = "github:nousresearch/hermes-agent";
inputs.nixpkgs.follows = "nixunstable";
};
hmunstable = { hmunstable = {
url = "github:nix-community/home-manager/master"; url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixunstable"; inputs.nixpkgs.follows = "nixunstable";
}; };
minecraft.url = "github:Infinidoge/nix-minecraft"; minecraft.url = "github:Infinidoge/nix-minecraft";
niks3.url = "github:Mic92/niks3";
nix-hardware.url = "github:nixos/nixos-hardware"; nix-hardware.url = "github:nixos/nixos-hardware";
nixvimunstable = { nixpkgs-lib.url = "github:nix-community/nixpkgs.lib";
url = "github:nix-community/nixvim/main"; nixvimunstable.url = "github:nix-community/nixvim/main";
inputs.nixpkgs.follows = "nixunstable";
};
nixunstable.url = "github:nixos/nixpkgs/nixos-unstable"; 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";
@@ -63,7 +66,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"
];
}; };
} }
); );
@@ -84,6 +90,7 @@
self self
top top
; ;
pkgs' = top.self.packages.x86_64-linux;
}; };
}; };
} }
@@ -97,7 +104,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";
}; };
} }
@@ -145,16 +152,17 @@
pkgs = imported_packages.${system}; pkgs = imported_packages.${system};
}; };
packages = (import ./pkgs { inherit pkgs; }); packages = (import ./pkgs { inherit pkgs top; });
checks = import ./checks.nix { checks = import ./checks.nix {
inherit system top self'; inherit system top self';
inherit (pkgs) lib; inherit (top.nixpkgs-lib) lib;
}; };
devShells = import ./shells.nix { devShells = import ./shells.nix {
inherit pkgs; inherit pkgs;
inherit (top) colmena; inherit (top) colmena;
inherit (self') packages;
}; };
}; };
}; };
+6 -16
View File
@@ -4,14 +4,6 @@ builds:
- "homeConfigurations.*" - "homeConfigurations.*"
- "nixosConfigurations.*" - "nixosConfigurations.*"
- "packages.*" - "packages.*"
# bitwarden-cli package is broken on aarch64-darwin
- "packages.aarch64-darwin.img-bitwarden"
# kmod-31 is not a thing on Darwin
- "packages.aarch64-darwin.qemu-hook"
- "packages.aarch64-darwin.vfio_shutdown"
- "packages.aarch64-darwin.vfio_startup"
# This one is a bit of a beast and shouldn't take up Garnix time
- "packages.aarch64-darwin.zim"
# These are just images which I will build when # These are just images which I will build when
# I feel like it # I feel like it
- "devShells.*" - "devShells.*"
@@ -20,14 +12,12 @@ builds:
- darwinConfigurations.MacBook-Pro - darwinConfigurations.MacBook-Pro
- darwinConfigurations.MacBook-Prolocal - darwinConfigurations.MacBook-Prolocal
- darwinConfigurations.li - darwinConfigurations.li
# Some specific includes which are not specific enough to override the rules above, # Some specific includes which are not specific enough to override the rules
# due to the intrepretation of the glob excludes, but which I still need included # above, due to the intrepretation of the glob excludes, but which I still
# need included
- include: - include:
# These are Mac homeConfigurations, which I do not have the infra to build at home # These are Mac homeConfigurations, which I do not have the infra
# to build at home
- homeConfigurations."gregory.hellings-mbp" - homeConfigurations."gregory.hellings-mbp"
- homeConfigurations.gregs-MacBook-Pro-16-inch-Nov-2024 - homeConfigurations.gregs-MacBook-Pro-16-inch-Nov-2024
# These are builder images used on my Macs, but they can't always access the cache - homeConfigurations.ivr
# on my local infrastructure, so I build them in Garnix so they are accessible
# outside of my network, too
- nixosConfigurations.builder-x86
- nixosConfigurations.builder-aarch
+8 -11
View File
@@ -1,5 +1,5 @@
# vim: set filetype=nushell : # vim: set filetype=nushell :
let servers = [isaiah jeremiah zeke genesis vm-gitlab] 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,19 @@ def --env unlock [] {
} }
} }
def rebuild [] { def nebulaIps [] {
open ../../network.json | get hosts | items { |h, e| $e.nebulaIp? } | filter { |e| $e != null } | sort
}
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"
} }
@@ -69,13 +73,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"
} }
+1
View File
@@ -26,6 +26,7 @@
nixcopy = "nix copy --to \"s3://binary-cache/?profile=default&endpoint=nas.home%3A9000&scheme=http\""; nixcopy = "nix copy --to \"s3://binary-cache/?profile=default&endpoint=nas.home%3A9000&scheme=http\"";
r = "run0"; r = "run0";
updateScript = "nix-shell maintainers/scripts/update.nix --argstr package"; updateScript = "nix-shell maintainers/scripts/update.nix --argstr package";
p = "${lib.getExe pkgs.podman-tui}";
# General # General
k = "kubectl"; k = "kubectl";
+26 -25
View File
@@ -5,7 +5,7 @@
# This allows things like SSH in distrobox to read the config file just fine # This allows things like SSH in distrobox to read the config file just fine
home.file.".ssh/config" = { home.file.".ssh/config" = {
target = ".ssh/config_source"; target = ".ssh/config_source";
onChange = ''cat ~/.ssh/config_source > ~/.ssh/config && chmod 600 ~/.ssh/config''; onChange = "cat ~/.ssh/config_source > ~/.ssh/config && chmod 600 ~/.ssh/config";
}; };
programs.ssh = { programs.ssh = {
enable = true; enable = true;
@@ -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";
SetEnv = "TERM=xterm-256color"; ServerAliveInterval = 60;
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";
}; };
-5
View File
@@ -38,11 +38,6 @@ def _ivr2(args):
vpn("gregory_hellings@ra.ivrtechnology.com", "IVR Technology") vpn("gregory_hellings@ra.ivrtechnology.com", "IVR Technology")
aliases['ivr2'] = _ivr2 aliases['ivr2'] = _ivr2
def _glrestart(args):
sudo nixos-container run gitlab -- systemctl restart gitlab
sudo nixos-container run gitlab -- systemctl restart nginx
aliases['glrestart'] = _glrestart
def _aws_creds(args): def _aws_creds(args):
$AWS_ACCESS_KEY_ID=$(bw get username "AWS Access Key") $AWS_ACCESS_KEY_ID=$(bw get username "AWS Access Key")
$AWS_SECRET_ACCESS_KEY=$(bw get password "AWS Access Key") $AWS_SECRET_ACCESS_KEY=$(bw get password "AWS Access Key")
+5 -6
View File
@@ -10,7 +10,9 @@ let
let let
inherit (metadata.hosts.${host}) system; inherit (metadata.hosts.${host}) system;
pkgs = nixpkgs.${system}; pkgs = nixpkgs.${system};
username = if builtins.hasAttr "user" metadata.hosts.${host} then metadata.hosts.${host}.user else "greg"; pkgs' = top.self.packages.${system};
username =
if builtins.hasAttr "user" metadata.hosts.${host} then metadata.hosts.${host}.user else "greg";
in in
top.hmunstable.lib.homeManagerConfiguration { top.hmunstable.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
@@ -24,6 +26,7 @@ let
host host
username username
metadata metadata
pkgs'
; ;
nixvim = top.nixvimunstable; nixvim = top.nixvimunstable;
gui = false; gui = false;
@@ -31,8 +34,4 @@ let
}; };
}; };
in in
( (lib.genAttrs (builtins.attrNames (builtins.readDir ./hosts)) user)
lib.genAttrs
(builtins.attrNames (builtins.readDir ./hosts))
user
)
+3 -2
View File
@@ -1,5 +1,6 @@
{ {
pkgs, pkgs,
pkgs',
lib, lib,
host ? "most", host ? "most",
top, top,
@@ -38,7 +39,7 @@ in
gh gh
git git
gnupatch gnupatch
hms pkgs'.hms
btop btop
inetutils inetutils
jq jq
@@ -46,7 +47,7 @@ in
nix-prefetch nix-prefetch
nmap nmap
openssl openssl
setup-ssh pkgs'.setup-ssh
tmux tmux
tree tree
unzip unzip
+1
View File
@@ -0,0 +1 @@
{...}: {}
+13 -1
View File
@@ -1,4 +1,4 @@
{ pkgs, ... }: { lib, pkgs, ... }:
{ {
greg = { greg = {
@@ -23,8 +23,11 @@
mattermost-desktop mattermost-desktop
minio-client minio-client
mumble mumble
nebula
nix-index
pre-commit pre-commit
prismlauncher prismlauncher
rclone
restic restic
restic-browser restic-browser
tea tea
@@ -36,4 +39,13 @@
settings.SKIP_HOST_UPDATE = true; settings.SKIP_HOST_UPDATE = true;
}; };
}; };
xdg.desktopEntries = {
prismlauncher = {
name = "Prism Launcher - Minecraft";
actions.minecraft = {
name = "Minecraft";
exec = lib.getExe pkgs.prismlauncher;
};
};
};
} }
+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}";
}; };
+1
View File
@@ -0,0 +1 @@
{...}: {}
+18 -4
View File
@@ -1,12 +1,15 @@
{ {
pkgs, pkgs,
pkgs',
lib, lib,
... ...
}: }:
let let
python = pkgs.python312.withPackages (p: with p; [ python = pkgs.python312.withPackages (
p: with p; [
ipython ipython
]); ]
);
in in
{ {
# Disables hitting local cache # Disables hitting local cache
@@ -24,21 +27,32 @@ 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
poetry
pre-commit pre-commit
(pulumi.withPackages (p: with p; [ (pulumi.withPackages (
p: with p; [
pulumi-aws-native pulumi-aws-native
pulumi-command pulumi-command
pulumi-go pulumi-go
pulumi-nodejs pulumi-nodejs
pulumi-python pulumi-python
])) ]
))
python python
rustc rustc
rustfmt
terraform
]; ];
}; };
+12 -2
View File
@@ -3,19 +3,24 @@
lib, lib,
metadata, metadata,
pkgs, pkgs,
top,
... ...
}: }:
{ {
imports = [ imports = [
../modules/nix-conf.nix ../modules/nix-conf.nix
top.niks3.nixosModules.niks3-auto-upload
]; ];
age.secrets.niks3-api-token.file = ../secrets/niks3/api_token.age;
console = { console = {
font = "Lat2-Terminus16"; font = "Lat2-Terminus16";
keyMap = "us"; keyMap = "us";
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
top.niks3.packages.${pkgs.stdenv.hostPlatform.system}.niks3
agenix agenix
bitwarden-cli bitwarden-cli
bmon bmon
@@ -26,10 +31,9 @@
efibootmgr efibootmgr
findutils findutils
file file
gcc-tune
git git
gnupatch gnupatch
hms # My own home manager switcher top.self.packages.${pkgs.stdenv.hostPlatform.system}.hms # My own home manager switcher
iperf iperf
killall killall
nano nano
@@ -97,6 +101,12 @@
# Enable the OpenSSH daemon for remote control # Enable the OpenSSH daemon for remote control
services = { services = {
locate.enable = true; locate.enable = true;
niks3-auto-upload = {
enable = config.greg.nix.cache;
authTokenFile = config.age.secrets.niks3-api-token.path;
serverUrl = "http://hosea.nebula.thehellings.com:5751";
verifyS3Integrity = true;
};
openssh = { openssh = {
enable = true; enable = true;
settings.X11Forwarding = true; settings.X11Forwarding = true;
+8 -33
View File
@@ -15,15 +15,22 @@ let
}: }:
let let
inherit (metadata.hosts.${name}) system; inherit (metadata.hosts.${name}) system;
pkgs' = top.self.packages.${system};
in in
channel.lib.nixosSystem { channel.lib.nixosSystem {
pkgs = nixpkgs.${system}; pkgs = nixpkgs.${system};
specialArgs = { specialArgs = {
inherit metadata top lib'; inherit
metadata
top
lib'
pkgs'
;
}; };
modules = [ modules = [
{ {
nixpkgs.hostPlatform = system; nixpkgs.hostPlatform = system;
networking.hostName = name;
} }
# Imported ones # Imported ones
top.agenix.nixosModules.default top.agenix.nixosModules.default
@@ -45,16 +52,6 @@ in
}) })
) )
) )
// (lib.genAttrs
(builtins.attrNames (lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./vm)))
(
name:
(unstable {
inherit name;
extraMods = [ ./vm/${name} ];
})
)
)
// { // {
# nix build '.#nixosConfigurations.wsl.config.system.build.installer' # nix build '.#nixosConfigurations.wsl.config.system.build.installer'
#nixos = wsl { name = "wsl"; }; #nixos = wsl { name = "wsl"; };
@@ -63,26 +60,4 @@ in
# name = "wsl"; # name = "wsl";
# system = "aarch64-linux"; # system = "aarch64-linux";
#}; #};
builder-aarch = lib.nixosSystem {
system = "aarch64-linux";
modules = [
"${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix"
{
virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; };
boot.loader.grub.devices = [ "/dev/vda" ];
}
];
};
builder-x86 = lib.nixosSystem {
system = "x86_64-linux";
modules = [
"${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix"
{
virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; };
boot.loader.grub.devices = [ "/dev/vda" ];
}
];
};
} }
+19
View File
@@ -0,0 +1,19 @@
{ config, modulesPath, pkgs, lib, ... }:
{
imports = [ (modulesPath + "/virtualisation/proxmox-lxc.nix") ];
nix.settings = { sandbox = false; };
proxmoxLXC = {
manageNetwork = false;
privileged = true;
};
services.fstrim.enable = false; # Let Proxmox host handle fstrim
services.openssh = {
enable = true;
openFirewall = true;
settings = {
PermitRootLogin = "yes";
PasswordAuthentication = true;
PermitEmptyPasswords = "yes";
};
};
}
-4
View File
@@ -43,10 +43,6 @@
enable = true; enable = true;
tags = [ "mobile" ]; tags = [ "mobile" ];
}; };
runner = {
enable = true;
qemu = true;
};
}; };
hardware = { hardware = {
+15 -4
View File
@@ -2,7 +2,12 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ top, pkgs, ... }: {
top,
pkgs,
pkgs',
...
}:
{ {
imports = [ imports = [
# Include the results of the hardware scan. # Include the results of the hardware scan.
@@ -31,7 +36,7 @@
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
create_ssl pkgs'.create_ssl
step-ca step-ca
]; ];
@@ -57,6 +62,7 @@
serverProperties = { serverProperties = {
allow-flight = true; allow-flight = true;
motd = "Maya's Minecraft World"; motd = "Maya's Minecraft World";
online-mode = true;
}; };
whitelist = { }; whitelist = { };
@@ -123,9 +129,14 @@
# Better storage engines # Better storage engines
# https://www.curseforge.com/minecraft/mc-mods/refined-storage # https://www.curseforge.com/minecraft/mc-mods/refined-storage
refined-storage = pkgs.fetchurl { refined-storage = pkgs.fetchurl {
url = "https://mediafilez.forgecdn.net/files/7961/605/refinedstorage-fabric-3.0.0-beta.5.jar"; url = "https://mediafilez.forgecdn.net/files/8086/588/refinedstorage-fabric-3.0.0.jar";
hash = "sha256-UiXNrGw/giCZAnCjFzFc9k4mrq6deTtL6Z00arSUFOU="; hash = "sha256-LuOF0aYQon78AQeD5fQ8OXHCnekfa+PNKpH7cqimFNs=";
}; };
# https://www.curseforge.com/minecraft/mc-mods/storage-drawers
#storagedrawers = pkgs.fetchurl {
#url = "https://mediafilez.forgecdn.net/files/7352/799/StorageDrawers-fabric-1.21.11-20.0.0.jar";
#hash = "sha256-eBKCmAtjAhdAjOyLMRneu/NZnNt+orIezxPy6V8g/S8=";
#};
survivalfly = pkgs.fetchurl { survivalfly = pkgs.fetchurl {
url = "https://mediafilez.forgecdn.net/files/7870/312/survivalfly-1.3_fabric-mc26.1.1.jar"; url = "https://mediafilez.forgecdn.net/files/7870/312/survivalfly-1.3_fabric-mc26.1.1.jar";
hash = "sha256-Kai4wSxckpXbs1yLp8wJ4BmmjNkdDbeqerqWGIz3+Zk="; hash = "sha256-Kai4wSxckpXbs1yLp8wJ4BmmjNkdDbeqerqWGIz3+Zk=";
-3
View File
@@ -22,8 +22,6 @@
# VMs # VMs
10.42.4.1 matrix matrix.thehellings.lan 10.42.4.1 matrix matrix.thehellings.lan
#10.42.4.2 vm-jellyfin vm-jellyfin.thehellings.lan
10.42.4.3 git gitlab git.thehellings.lan gitlab.thehellings.lan
# VIP # VIP
10.42.5.1 longhorn.cluster matrix.cluster pgadmin.cluter postgres.cluster immich.cluster 10.42.5.1 longhorn.cluster matrix.cluster pgadmin.cluter postgres.cluster immich.cluster
@@ -37,7 +35,6 @@
100.88.91.27 dns.home 100.88.91.27 dns.home
100.70.99.91 exodus.home exodus.shire-zebra.ts.net 100.70.99.91 exodus.home exodus.shire-zebra.ts.net
100.96.198.104 genesis.home genesis.shire-zebra.ts.net smart.home zwave.home nixcache.home gitcache.home dashy.home uptime.home speed.home 100.96.198.104 genesis.home genesis.shire-zebra.ts.net smart.home zwave.home nixcache.home gitcache.home dashy.home uptime.home speed.home
100.117.28.111 gitlab.home gitlab.shire-zebra.ts.net gitlab.thehellings.lan registry.thehellings.lan git.thehellings.lan
100.68.203.1 hosea.home hosea.shire-zebra.ts.net grafana.home 100.68.203.1 hosea.home hosea.shire-zebra.ts.net grafana.home
100.84.183.79 isaiah.home isaiah.shire-zebra.ts.net pgadmin.kubernetes longhorn.kubernetes 100.84.183.79 isaiah.home isaiah.shire-zebra.ts.net pgadmin.kubernetes longhorn.kubernetes
100.102.186.39 jeremiah.home jeremiah.shire-zebra.ts.net matrix.kubernetes immich.kubernetes postgres.kubernetes buildbot.home 100.102.186.39 jeremiah.home jeremiah.shire-zebra.ts.net matrix.kubernetes immich.kubernetes postgres.kubernetes buildbot.home
+8 -2
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,10 +116,15 @@ 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
+161
View File
@@ -0,0 +1,161 @@
{
config,
modulesPath,
lib,
top,
...
}:
{
imports = [
(modulesPath + "/virtualisation/proxmox-lxc.nix")
top.hermes.nixosModules.default
];
age.secrets.hermes = {
file = ../../../secrets/hermes.age;
owner = "hermes";
};
greg = {
nebula = {
enable = true;
nebulaIp = "10.157.0.8";
};
nix.cache = false;
proxies = lib.genAttrs' [ "thehellings.lan" "nebula.thehellings.com" "shire-zebra.ts.net" ] (
name:
(lib.nameValuePair "${config.networking.hostName}.${name}" { target = "http://127.0.0.1:9119"; })
);
};
nix.settings = {
sandbox = false;
};
proxmoxLXC = {
manageHostName = true;
manageNetwork = false;
privileged = true;
};
services = {
fstrim.enable = false;
hermes-agent = {
enable = true;
addToSystemPackages = true;
environment = {
MATRIX_HOMESERVER = "https://thehellings.com";
};
environmentFiles = [
config.age.secrets.hermes.path
];
settings = {
agent = {
reasoning_effort = "medium";
reasoning_overrides = {
claude-fable = "xhigh";
claude-opus = "high";
};
tool_loop_guardrails = {
hard_stop_enabled = true;
warnings_enabled = true;
};
tool_use_enforcement = "auto";
};
code_execution = {
mode = "strict";
timeout = 300;
};
compression = {
enabled = true;
protect_first_n = 3;
protect_last_n = 5;
target_ratio = 0.25;
threshold = 0.75;
};
context_file_max_chars = 25000;
file_read_max_chars = 100000;
goals = {
max_turns = 20; # Number of times Hermes tells the model to keep working towards the goal
};
matrix = {
allowed_users = [
"@greg:thehellings.com"
];
allowed_rooms = [
"!agents:thehellings.com"
];
free_response_rooms = [
"!agents:thehellings.com"
];
require_mention = true;
};
memory = {
memory_enabled = true;
user_profile_enabled = true;
write_approval = true;
};
model.default = "anthropic/claude-opus-4.8";
quick_commands = {
disk = {
type = "exec";
command = "df -h";
};
free = {
type = "exec";
command = "free -h";
};
restart = {
type = "alias";
target = "/gateway restart";
};
};
skills = {
guard_agent_created = true;
write_approval = true;
};
stt = {
enabled = true;
echo_transcripts = true;
provider = "local";
local.model = "medium";
};
terminal = {
backend = "local";
};
tool_output = {
max_bytes = 50000;
max_lines = 2000;
max_line_length = 2000;
};
toolsets = [ "all" ];
worktree = true; # Enable multiple agents in the same repo
};
};
nebula.networks."nebula.thehellings.com" = {
tun.disable = true;
};
openssh = {
enable = true;
openFirewall = true;
settings = {
PermitRootLogin = "yes";
PasswordAuthentication = true;
PermitEmptyPasswords = "yes";
};
};
wyoming.faster-whisper.servers.medium = {
enable = true;
device = "cpu";
initialPrompt = ''
The user's name is 'Greg Hellings'. The street he lives on is 'Kardinal Court'
in 'Midlothian'. Keep these in mind as they are often misspelled.
'';
language = "en";
model = "medium";
uri = "tcp://127.0.0.1:10300";
sttLibrary = "faster-whisper";
};
};
systemd.suppressedSystemUnits = [
"dev-mqueue.mount"
"sys-kernel-debug.mount"
"sys-fs-fuse-connections.mount"
];
}
-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")
];
}
+62 -2
View File
@@ -6,6 +6,7 @@
config, config,
metadata, metadata,
pkgs, pkgs,
top,
... ...
}: }:
let let
@@ -17,14 +18,32 @@ 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
]; ];
age.secrets.grafana-secret-key = { age.secrets = {
cache-private-key = {
file = ../../../secrets/cache-private-key.age;
owner = "niks3";
};
grafana-secret-key = {
file = ../../../secrets/grafana-secret-key.age; file = ../../../secrets/grafana-secret-key.age;
owner = "grafana"; owner = "grafana";
}; };
niks3-access-key-id = {
file = ../../../secrets/niks3/access_key_id.age;
owner = "niks3";
};
niks3-api-token = {
file = ../../../secrets/niks3/api_token.age;
owner = "niks3";
};
niks3-secret-access-key = {
file = ../../../secrets/niks3/secret_access_key.age;
owner = "niks3";
};
};
# Bootloader # Bootloader
boot = { boot = {
@@ -98,6 +117,7 @@ in
]; ];
}; };
}; };
firewall.interfaces.nebula0.allowedTCPPorts = [ 5751 ];
nameservers = [ metadata.infra.dns ]; nameservers = [ metadata.infra.dns ];
}; };
@@ -150,6 +170,27 @@ in
analytics.reporting_enabled = false; analytics.reporting_enabled = false;
}; };
}; };
niks3 = {
enable = true;
apiTokenFile = config.age.secrets.niks3-api-token.path;
gc.enable = false;
httpAddr = "${metadata.hosts.hosea.nebulaIp}:5751";
nginx = {
enable = true;
domain = "hosea.nebula";
enableACME = false;
forceSSL = false;
};
s3 = {
accessKeyFile = config.age.secrets.niks3-access-key-id.path;
bucket = "niks3";
endpoint = "nas1.shire-zebra.ts.net:30188";
secretKeyFile = config.age.secrets.niks3-secret-access-key.path;
useSSL = false;
};
signKeyFiles = [ config.age.secrets.cache-private-key.path ];
};
prometheus.exporters.graphite.enable = true; prometheus.exporters.graphite.enable = true;
# Configure keymap # Configure keymap
xserver.xkb = { xserver.xkb = {
@@ -158,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 = {
-4
View File
@@ -43,10 +43,6 @@
tags = [ "home" ]; tags = [ "home" ];
}; };
remote-builder.enable = true; remote-builder.enable = true;
runner = {
enable = true;
qemu = true;
};
gitea-runner = { gitea-runner = {
enable = true; enable = true;
extraLabels = [ "bare-metal:host" ]; extraLabels = [ "bare-metal:host" ];
+2 -9
View File
@@ -22,8 +22,6 @@ in
]; ];
age.secrets = { age.secrets = {
runner-reg.file = ../../../secrets/gitlab/nixos-qemu-shell.age;
gitea-buildbotWorkersFile = mk ../../../secrets/gitea/buildbotWorkersFile.age; gitea-buildbotWorkersFile = mk ../../../secrets/gitea/buildbotWorkersFile.age;
gitea-oauthToken = mk ../../../secrets/gitea/oauthToken.age; gitea-oauthToken = mk ../../../secrets/gitea/oauthToken.age;
gitea-oauthSecret = mk ../../../secrets/gitea/oauthSecret.age; gitea-oauthSecret = mk ../../../secrets/gitea/oauthSecret.age;
@@ -95,11 +93,6 @@ in
tags = [ "home" ]; tags = [ "home" ];
}; };
remote-builder.enable = true; remote-builder.enable = true;
runner = {
enable = true;
threads = 3;
qemu = true;
};
}; };
hardware = { hardware = {
@@ -149,12 +142,12 @@ in
updateOutputs = false; updateOutputs = false;
}; };
}; };
domain = "${config.networking.hostName}.shire-zebra.ts.net"; domain = "${config.networking.hostName}.shire-zebra.ts.net:8010";
evalMaxMemorySize = 8192; evalMaxMemorySize = 8192;
evalWorkerCount = 4; evalWorkerCount = 4;
gitea = { gitea = {
enable = true; enable = true;
instanceUrl = "https://src.thehellings.com"; instanceUrl = "https://gitea.shire-zebra.ts.net";
oauthId = "7ec9107d-379b-47c8-870f-1191956d0500"; oauthId = "7ec9107d-379b-47c8-870f-1191956d0500";
oauthSecretFile = config.age.secrets.gitea-oauthSecret.path; oauthSecretFile = config.age.secrets.gitea-oauthSecret.path;
tokenFile = config.age.secrets.gitea-oauthToken.path; tokenFile = config.age.secrets.gitea-oauthToken.path;
-16
View File
@@ -66,20 +66,4 @@
immichUrl = "https://immich.shire-zebra.ts.net"; immichUrl = "https://immich.shire-zebra.ts.net";
}; };
}; };
security.sudo.extraRules = [
{
users = [ "gitlab-runner" ];
commands = [
{
command = "/run/current-system/sw/bin/systemctl";
options = [ "NOPASSWD" ];
}
{
command = "/run/current-system/sw/bin/podman";
options = [ "NOPASSWD" ];
}
];
}
];
} }
+41 -15
View File
@@ -1,4 +1,4 @@
{ ... }: { config, ... }:
let let
srcDomain = "src.thehellings.com"; srcDomain = "src.thehellings.com";
@@ -6,15 +6,23 @@ let
in in
{ {
greg.proxies."${srcDomain}" = { greg.proxies."${srcDomain}" = {
target = "https://gitea.shire-zebra.ts.net"; target = "http://unix:${config.services.anubis.instances.git.settings.BIND}";
ssl = true; ssl = true;
genAliases = false; genAliases = false;
extraConfig = '' extraConfig = ''
proxy_ssl_verify off; #proxy_ssl_verify off;
proxy_ssl_server_name on; #proxy_ssl_server_name on;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Http-Version $server_protocol;
proxy_set_header User-Agent $http_user_agent;
client_max_body_size 100000m; client_max_body_size 100000m;
#proxy_set_header Host $host;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Proto $scheme;
#proxy_set_header X-Forwarded-Ssl on;
# Ultimate AI Block List v1.7 20250924 # Ultimate AI Block List v1.7 20250924
# https://perishablepress.com/ultimate-ai-block-list/ # https://perishablepress.com/ultimate-ai-block-list/
@@ -87,18 +95,22 @@ in
networking.firewall.allowedTCPPorts = [ sshPort ]; networking.firewall.allowedTCPPorts = [ sshPort ];
systemd.services = { services = {
haproxy = { anubis = {
after = [ instances = {
"network-online.target" git = {
]; enable = true;
wants = [ settings = {
"network-online.target" BIND = "/run/anubis/anubis-git/anubis.sock";
]; COOKIE_DOMAIN = "thehellings.com";
SERVE_ROBOTS_TXT = true;
TARGET = "https://gitea.shire-zebra.ts.net/";
};
};
}; };
}; };
services.haproxy = { haproxy = {
enable = true; enable = true;
config = '' config = ''
global global
@@ -119,4 +131,18 @@ in
server git-zeke zeke.shire-zebra.ts.net:32222 server git-zeke zeke.shire-zebra.ts.net:32222
''; '';
}; };
};
systemd.services = {
haproxy = {
after = [
"network-online.target"
];
wants = [
"network-online.target"
];
};
};
users.users.nginx.extraGroups = [ config.users.groups.anubis.name ];
} }
+13 -31
View File
@@ -2,12 +2,24 @@
# them by the following commands: # them by the following commands:
# nix run nixpkgs.matrix-synapse # nix run nixpkgs.matrix-synapse
# register_new_matrix_user -k "B9EoPr2WV9hzwc7uL2Sx1JmvCeKDEOGCpB0uginQcQtEH4wzRtkSIdo7lltrjSQa" http://localhost:8448 # register_new_matrix_user -k "B9EoPr2WV9hzwc7uL2Sx1JmvCeKDEOGCpB0uginQcQtEH4wzRtkSIdo7lltrjSQa" http://localhost:8448
{ config, lib, ... }: { config, ... }:
let let
domain = "${config.networking.domain}"; domain = "${config.networking.domain}";
fqdn = "matrix.${domain}"; fqdn = "matrix.${domain}";
in in
{ {
greg.proxies."${fqdn}" = {
extraConfig = ''
error_log /var/log/nginx/debug.log debug;
proxy_ssl_verify off;
proxy_ssl_server_name on;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
'';
genAliases = false;
ssl = true;
target = "https://matrix.shire-zebra.ts.net";
};
services.nginx = { services.nginx = {
virtualHosts = { virtualHosts = {
# Server the '.well-known' files to find the Matrix API server # Server the '.well-known' files to find the Matrix API server
@@ -44,36 +56,6 @@ in
return 200 '${builtins.toJSON client}'; 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 = "http://matrix.kubernetes";
}
)
[
"matrix"
"synapse"
"dendrite"
]
))
// {
"/".extraConfig = "return 404;";
};
};
}; };
}; };
-6
View File
@@ -24,7 +24,6 @@ in
virtualisation.oci-containers = { virtualisation.oci-containers = {
backend = "podman"; backend = "podman";
containers."homepage" = { containers."homepage" = {
# needs explicit port to match what gitlab-runner sees when pulling
image = "registry.thehellings.com:443/greg/homepage/gregs-homepage:latest"; image = "registry.thehellings.com:443/greg/homepage/gregs-homepage:latest";
ports = [ "${homepage}:80" ]; ports = [ "${homepage}:80" ];
}; };
@@ -35,10 +34,5 @@ in
ssl = true; ssl = true;
genAliases = false; genAliases = false;
}; };
"doubles.thehellings.com" = {
target = "http://localhost:8081";
ssl = true;
genAliases = false;
};
}; };
} }
+7 -2
View File
@@ -1,7 +1,12 @@
{ config, pkgs, ... }: {
config,
pkgs,
pkgs',
...
}:
{ {
environment.systemPackages = [ pkgs.upgrade-pg-cluster ]; environment.systemPackages = [ pkgs'.upgrade-pg-cluster ];
services.postgresql = { services.postgresql = {
enable = true; enable = true;
-4
View File
@@ -28,10 +28,6 @@
}; };
nebula.enable = true; nebula.enable = true;
remote-builder.enable = true; remote-builder.enable = true;
runner = {
enable = true;
vbox = false;
};
tailscale = { tailscale = {
enable = true; enable = true;
tags = [ "home" ]; tags = [ "home" ];
-273
View File
@@ -1,273 +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).
{
config,
pkgs,
lib,
...
}:
let
registryPort = 5000;
vpnIp = "100.117.28.111";
in
{
imports = [
./hardware-configuration.nix
];
age.secrets =
let
cfg = n: {
file = ../../../secrets/gitlab/${n}.age;
owner = "gitlab";
group = "gitlab";
mode = "0444";
};
in
{
gitlab-secret = cfg "secret";
gitlab-otp = cfg "otp";
gitlab-db = cfg "db";
gitlab-db-password = cfg "db-password";
gitlab-jws = cfg "jws";
gitlab-key = cfg "key";
gitlab-cert = cfg "cert";
gitlab-salt = cfg "salt";
gitlab-primary-key = cfg "primary-key";
gitlab-deterministic-key = cfg "deterministic-key";
minio_access_key_id = {
file = ../../../secrets/minio_access_key_id.age;
owner = "gitlab";
group = "gitlab";
mode = "0444";
};
minio_secret_access_key = {
file = ../../../secrets/minio_secret_access_key.age;
owner = "gitlab";
group = "gitlab";
mode = "0444";
};
};
greg = {
backup.jobs.nas-backup = {
src = "/var/gitlab/state/backup/";
dest = "gitlab";
};
home = true;
tailscale = {
enable = true;
tags = [ "home" ];
};
};
networking = {
hostName = "gitlab"; # Define your hostname.
firewall.allowedTCPPorts = [
80
registryPort
];
};
services = {
gitlab = {
enable = true;
backup = {
keepTime = 288;
startAt = [ "03:00" ];
};
databaseHost = "postgres.kubernetes";
databaseName = "gitlab";
databaseUsername = "gitlab";
databasePasswordFile = config.age.secrets.gitlab-db-password.path;
databaseCreateLocally = false;
extraConfig = {
registry.port = null;
gitlab = {
trustedProxies = [
"${vpnIp}/32" # The system itself
"100.109.86.8/32" # Public server's IP
];
};
object_store = {
enabled = true;
proxy_download = true; # Tell them to reach out to object storage themselves!
connection = {
provider = "AWS";
endpoint = "http://s3.thehellings.lan:9000";
region = "us-east-1";
aws_access_key_id = {
_secret = config.age.secrets.minio_access_key_id.path;
};
aws_secret_access_key = {
_secret = config.age.secrets.minio_secret_access_key.path;
};
path_style = true; # True for MinIO
aws_signature_version = 2;
};
#storage_options = ...;
objects = builtins.listToAttrs (
builtins.map
(
x: lib.attrsets.nameValuePair x { bucket = "gitlab-${builtins.replaceStrings [ "_" ] [ "-" ] x}"; }
)
[
"artifacts"
"ci_secure_files"
"dependency_proxy"
"external_diffs"
"lfs"
"packages"
"pages"
"terraform_state"
"uploads"
]
);
};
};
host = "src.thehellings.com";
https = true;
initialRootEmail = "greg@thehellings.com";
initialRootPasswordFile = pkgs.writeText "initialRootPassword" "root_password";
pages = {
enable = true;
settings.pages-domain = "pages.thehellings.com";
};
port = 443;
puma = {
threadsMax = 6;
threadsMin = 2;
workers = 6;
};
redisUrl = "unix:${config.services.redis.servers.gitlab.unixSocket}";
registry = {
enable = true;
certFile = config.age.secrets.gitlab-cert.path;
keyFile = config.age.secrets.gitlab-key.path;
externalAddress = "registry.thehellings.com";
externalPort = 443;
};
secrets = {
activeRecordDeterministicKeyFile = config.age.secrets.gitlab-deterministic-key.path;
activeRecordPrimaryKeyFile = config.age.secrets.gitlab-primary-key.path;
activeRecordSaltFile = config.age.secrets.gitlab-salt.path;
dbFile = config.age.secrets.gitlab-db.path;
jwsFile = config.age.secrets.gitlab-jws.path;
otpFile = config.age.secrets.gitlab-otp.path;
secretFile = config.age.secrets.gitlab-secret.path;
};
};
nginx = {
enable = true;
clientMaxBodySize = "25000m";
virtualHosts = {
"vm-gitlab.shire-zebra.ts.net" = {
listen = [
{
addr = "0.0.0.0";
port = 443;
ssl = true;
}
];
locations."/" = {
proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
recommendedProxySettings = true;
};
extraConfig = ''
ssl_certificate /etc/certs/vm-gitlab.shire-zebra.ts.net.crt ;
ssl_certificate_key /etc/certs/vm-gitlab.shire-zebra.ts.net.key ;
client_max_body_size 10000m ;
'';
};
"registry" = {
listen = [
{
addr = "0.0.0.0";
port = registryPort;
ssl = true;
}
];
locations."/" = {
proxyPass = "http://127.0.0.1:4567/";
recommendedProxySettings = true;
};
extraConfig = ''
ssl_certificate /etc/certs/vm-gitlab.shire-zebra.ts.net.crt ;
ssl_certificate_key /etc/certs/vm-gitlab.shire-zebra.ts.net.key ;
client_max_body_size 25000m ;
'';
serverAliases = [
"vm-gitlab.shire-zebra.ts.net"
];
};
};
};
openssh.enable = true;
postgresql.enable = true;
qemuGuest.enable = true;
redis.servers.gitlab = {
enable = true;
};
#resolved.enable = true;
};
# Do not start nginx until we have tailscaled up and running, so it can bind
# to the 100.* addresses
systemd = {
services = {
certRefresh =
let
script = pkgs.writeShellApplication {
name = "cert-refresh";
runtimeInputs = [ pkgs.tailscale ];
text = ''
cd /etc/certs
tailscale cert vm-gitlab.shire-zebra.ts.net
chown nginx ./*
systemctl reload nginx
'';
};
in
{
script = lib.getExe script;
serviceConfig = {
Type = "oneshot";
User = "root";
};
};
nginx = rec {
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
wants = after;
serviceConfig = {
RestartMaxDelaySec = "30s";
RestartSteps = "5";
};
};
tailscaled.partOf = [ "network-online.target" ];
};
timers = {
"cert-refresh" = {
wantedBy = [ "cert-refresh.service" ];
timerConfig = {
OnCalendar = "monthly";
Persistent = true;
};
};
};
};
system.stateVersion = lib.mkForce "24.11";
}
@@ -1,58 +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")
];
# Bootloader.
boot = {
extraModulePackages = [ ];
initrd = {
availableKernelModules = [
"uhci_hcd"
"ehci_pci"
"ahci"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
kernelModules = [ ];
};
loader = {
efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
};
};
fileSystems."/" = {
device = lib.mkDefault "/dev/disk/by-uuid/1fdbe86e-ce6f-4af3-a876-aec35731adab";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/1E6A-C3BB";
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 (
-3
View File
@@ -21,9 +21,6 @@ spec:
spec: spec:
containers: containers:
- name: bitwarden-cli - name: bitwarden-cli
# Since my gitlab instance depends on the database hosted in k3s, and
# the database depends on this image, I need a way to bootstrap the
# system if # I am doing disaster recovery. And this is it.
image: "ghcr.io/greg-hellings/nixos-config/img-bitwarden:latest" image: "ghcr.io/greg-hellings/nixos-config/img-bitwarden:latest"
#image: >- #image: >-
# registry.thehellings.com/greg/nixos-config/img-bitwarden:latest # registry.thehellings.com/greg/nixos-config/img-bitwarden:latest
-2
View File
@@ -14,14 +14,12 @@ spec:
- 100.88.91.27 # dns? - 100.88.91.27 # dns?
- 100.80.99.48 # exodus - 100.80.99.48 # exodus
- 100.88.91.27 # genesis - 100.88.91.27 # genesis
- 100.117.28.111 # gitlab
- 100.68.203.1 # hosea - 100.68.203.1 # hosea
- 100.84.183.79 # isaiah - 100.84.183.79 # isaiah
- 100.102.186.39 # jeremiah - 100.102.186.39 # jeremiah
- 100.90.74.19 # zeke - 100.90.74.19 # zeke
- 100.115.57.8 # linode - 100.115.57.8 # linode
- 100.65.5.38 # matrix - 100.65.5.38 # matrix
#- 100.127.55.22 # jellyfin
--- ---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP kind: IngressRouteTCP
-1
View File
@@ -4,7 +4,6 @@ resources:
- namespace.yaml - namespace.yaml
- secrets.yaml - secrets.yaml
- postgres-cluster.yaml - postgres-cluster.yaml
- postgres-gitlab.yaml
- postgres-pgadmin.yaml - postgres-pgadmin.yaml
- postgres-matrix.yaml - postgres-matrix.yaml
- ingress.yaml - ingress.yaml
@@ -11,13 +11,6 @@ spec:
managed: managed:
roles: roles:
- name: gitlab
ensure: present
comment: Gitlab user
login: true
superuser: false
passwordSecret:
name: postgres-user-gitlab
- name: pgadmin - name: pgadmin
ensure: present ensure: present
comment: PG Admin user comment: PG Admin user
-9
View File
@@ -1,9 +0,0 @@
apiVersion: postgresql.cnpg.io/v1
kind: Database
metadata:
name: database-gitlab
spec:
name: gitlab
owner: gitlab
cluster:
name: postgres
-34
View File
@@ -1,39 +1,5 @@
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata:
name: postgres-user-gitlab
namespace: db
spec:
target:
name: postgres-user-gitlab
deletionPolicy: Delete
template:
type: Opaque
data:
username: |-
{{ .username }}
password: |-
{{ .password }}
data:
- secretKey: username
sourceRef:
storeRef:
name: bitwarden-login
kind: ClusterSecretStore
remoteRef:
key: 5282ad16-c2dc-49d3-8fb3-b2e9012bab57
property: username
- secretKey: password
sourceRef:
storeRef:
name: bitwarden-login
kind: ClusterSecretStore
remoteRef:
key: 5282ad16-c2dc-49d3-8fb3-b2e9012bab57
property: password
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata: metadata:
name: postgres-user-matrix name: postgres-user-matrix
namespace: db namespace: db
+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
-1
View File
@@ -76,4 +76,3 @@ spec:
secretKeyRef: secretKeyRef:
name: gitea-config name: gitea-config
key: minio_secret key: minio_secret
-64
View File
@@ -1,64 +0,0 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: gitlab-runner
spec:
interval: "24h"
url: https://charts.gitlab.io
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: gitlab-runner
spec:
interval: 10m
chart:
spec:
chart: gitlab-runner
version: "0.83.1"
sourceRef:
kind: HelmRepository
name: gitlab-runner
interval: "1h"
dependsOn:
- name: external-secrets
namespace: external-secrets
- name: tailscae
namespace: tailscale
values:
crds:
create: true
includeCRDs: true
gitlabUrl: https://src.thehellings.com
runners:
secret: gitlab-runner
imagePullSecrets:
- name: image-pull-secrets
rbac:
create: true
serviceAccount:
create: true
metrics:
enabled: true
extraEnv:
CACHE_TYPE: s3
CACHE_SHARED: "true"
CACHE_S3_BUCKET_NAME: gitlab-runner-cache
CACHE_S3_INSECURE: "true"
extraEnvFrom:
PACKER_GITHUB_API_TOKEN:
secretKeyRef:
name: gitlab-runner
key: PACKER_GITHUB_API_TOKEN
CACHE_S3_SERVER_ADDRESS:
secretKeyRef:
name: gitlab-runner
key: CACHE_S3_SERVER_ADDRESS
CACHE_S3_ACCESS_KEY:
secretKeyRef:
name: s3-access
key: username
CACHE_S3_SECRET_KEY:
secretKeyRef:
name: s3-access
key: password
@@ -1,6 +0,0 @@
namespace: gitlab-runner
resources:
- namespace.yaml
- secrets.yaml
- chart.yaml
-4
View File
@@ -1,4 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: gitlab-runner
-101
View File
@@ -1,101 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: gitlab-runner
namespace: gitlab-runner
spec:
secretStoreRef:
name: bitwarden-fields
kind: ClusterSecretStore
target:
name: gitlab-runner
deletionPolicy: Delete
template:
type: Opaque
data:
runner-registration-token: ""
runner-token: "{{ .runnerToken }}"
PACKER_GITHUB_API_TOKEN: "{{ .PACKER_GITHUB_API_TOKEN }}"
CACHE_S3_SERVER_ADDRESS: "{{ .CACHE_S3_SERVER_ADDRESS }}"
data:
- secretKey: runnerToken
remoteRef:
key: &key 53719920-b100-4355-8c80-b2f9002fad22
property: CI_SERVER_TOKEN
- secretKey: PACKER_GITHUB_API_TOKEN
remoteRef:
key: *key
property: PACKER_GITHUB_API_TOKEN
- secretKey: CACHE_S3_SERVER_ADDRESS
remoteRef:
key: *key
property: CACHE_S3_SERVER_ADDRESS
# Includes
# CI_SERVER_TOKEN
# PACKER_GITHUB_API_TOKEN
# CACHE_S3_SERVER_ADDRESS
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: s3-access
namespace: gitlab-runner
spec:
secretStoreRef:
name: bitwarden-login
kind: ClusterSecretStore
target:
name: s3-access
deletionPolicy: Delete
data:
- secretKey: username
remoteRef:
key: &key 04dd39c2-268d-4a33-aa4c-b1550166139f
property: username
- secretKey: password
remoteRef:
key: *key
property: password
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: image-pull-secrets
namespace: gitlab-runner
spec:
secretStoreRef:
name: bitwarden-login
kind: ClusterSecretStore
target:
deletionPolicy: Delete
template:
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: >-
{
"auths": {
"https://index.docker.io/v1/": {
"username": "{{ .user }}",
"password": "{{ .password }}",
"email": "greg.hellings@gmail.com",
"auth": "{{ .auth }}"
}
}
}
data:
- secretKey: user
remoteRef:
key: &key f560ae38-368c-4e58-898c-aeb90012d597
property: username
- secretKey: password
remoteRef:
key: *key
property: password
- secretKey: auth
sourceRef:
storeRef:
name: bitwarden-fields
kind: ClusterSecretStore
remoteRef:
key: *key
property: auth
+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
-1
View File
@@ -7,7 +7,6 @@ resources:
- mariadb-operator - mariadb-operator
- databases - databases
- matrix - matrix
#- gitlab-runner
- immich - immich
- monitoring - monitoring
- pinchflat - pinchflat
+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
+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/";
} }
]; ];
} }
+12 -5
View File
@@ -58,12 +58,18 @@ in
"gregory.hellings" "gregory.hellings"
]; # For home and for work machines ]; # For home and for work machines
substituters = substituters =
(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:8080/default" "http://niks3.nas1.shire-zebra.ts.net:30189/"
] else [ #"http://nas1.shire-zebra.ts.net:8080/default"
"http://nas1.thehellings.lan:8080/default" ]
]) else
[
"http://niks3.nas1.thehellings.lan:30189/"
]
)
++ [ ++ [
"https://ai.cachix.org" "https://ai.cachix.org"
"https://nixpkgs-python.cachix.org" "https://nixpkgs-python.cachix.org"
@@ -73,6 +79,7 @@ in
"https://nixhelm.cachix.org" "https://nixhelm.cachix.org"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"niks3:8iztr/NACwYEK5O7JJtGFGuv+ho/cmwql8NeoCiXNto="
#"chronicles.shire-zebra.ts.net:0qWYHn3gGllXChhAaaxKlNZtRy6yG/XJs1RFSqV3nW8=" #"chronicles.shire-zebra.ts.net:0qWYHn3gGllXChhAaaxKlNZtRy6yG/XJs1RFSqV3nW8="
"default:DTGxNijw2D8FrZJPT1pFTWcLqbt60tovL+9Z+VW0HRY=" "default:DTGxNijw2D8FrZJPT1pFTWcLqbt60tovL+9Z+VW0HRY="
"ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc=" "ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc="
-1
View File
@@ -10,7 +10,6 @@
./ceph.nix ./ceph.nix
./db.nix ./db.nix
./gitea-runner.nix ./gitea-runner.nix
./gitlab-runner.nix
./gnome.nix ./gnome.nix
./home.nix ./home.nix
./kde.nix ./kde.nix
+5
View File
@@ -45,22 +45,27 @@ in
"debian-latest:docker://node:25-trixie" "debian-latest:docker://node:25-trixie"
"ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest" "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
"ubuntu-26.04:docker://docker.gitea.com/runner-images:ubuntu-26.04"
"ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04" "ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04"
"ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04" "ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"
"ubuntu-full-latest:docker://ghcr.io/catthehacker/ubuntu:full-latest" "ubuntu-full-latest:docker://ghcr.io/catthehacker/ubuntu:full-latest"
"ubuntu-full-26.04:docker://ghcr.io/catthehacker/ubuntu:full-26.04"
"ubuntu-full-24.04:docker://ghcr.io/catthehacker/ubuntu:full-24.04" "ubuntu-full-24.04:docker://ghcr.io/catthehacker/ubuntu:full-24.04"
"ubuntu-full-22.04:docker://ghcr.io/catthehacker/ubuntu:full-22.04" "ubuntu-full-22.04:docker://ghcr.io/catthehacker/ubuntu:full-22.04"
"ubuntu-act-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest" "ubuntu-act-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest"
"ubuntu-act-26.04:docker://ghcr.io/catthehacker/ubuntu:act-26.04"
"ubuntu-act-24.04:docker://ghcr.io/catthehacker/ubuntu:act-24.04" "ubuntu-act-24.04:docker://ghcr.io/catthehacker/ubuntu:act-24.04"
"ubuntu-act-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04" "ubuntu-act-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04"
"ubuntu-runner-latest:docker://ghcr.io/catthehacker/ubuntu:runner-latest" "ubuntu-runner-latest:docker://ghcr.io/catthehacker/ubuntu:runner-latest"
"ubuntu-runner-26.04:docker://ghcr.io/catthehacker/ubuntu:runner-26.04"
"ubuntu-runner-24.04:docker://ghcr.io/catthehacker/ubuntu:runner-24.04" "ubuntu-runner-24.04:docker://ghcr.io/catthehacker/ubuntu:runner-24.04"
"ubuntu-runner-22.04:docker://ghcr.io/catthehacker/ubuntu:runner-22.04" "ubuntu-runner-22.04:docker://ghcr.io/catthehacker/ubuntu:runner-22.04"
"ubuntu-rust-latest:docker://ghcr.io/catthehacker/ubuntu:rust-latest" "ubuntu-rust-latest:docker://ghcr.io/catthehacker/ubuntu:rust-latest"
"ubuntu-rust-26.04:docker://ghcr.io/catthehacker/ubuntu:rust-26.04"
"ubuntu-rust-24.04:docker://ghcr.io/catthehacker/ubuntu:rust-24.04" "ubuntu-rust-24.04:docker://ghcr.io/catthehacker/ubuntu:rust-24.04"
"ubuntu-rust-22.04:docker://ghcr.io/catthehacker/ubuntu:rust-22.04" "ubuntu-rust-22.04:docker://ghcr.io/catthehacker/ubuntu:rust-22.04"
-82
View File
@@ -1,82 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.greg.runner;
environmentVariables = {
EFI_DIR = "${pkgs.OVMF.fd}/FV/";
STORAGE_URL = "s3.thehellings.lan:9000";
};
runnerCfg = file: {
inherit environmentVariables;
authenticationTokenConfigFile = file;
executor = "shell";
limit = cfg.threads;
};
in
# We want exactly one of these to be true, but not both. Neither can both be false
{
options.greg.runner = {
enable = lib.mkEnableOption "Enable as a gitlab-runner with both libvirt and virtualbox";
threads = lib.mkOption {
default = 5;
type = lib.types.int;
description = "The maximum number of concurrent jobs";
};
qemu = lib.mkEnableOption "Enable the qemu host (mutually exclusive with vbox)";
vbox = lib.mkEnableOption "Enable the vbox host (mutually exclusive with qemu)";
};
config = lib.mkIf cfg.enable ({
# assertions = [
# {
# assertion = cfg.qemu || cfg.vbox && (cfg.qemu != cfg.vbox);
# message = "You must enable exactly one of qemu or vbox";
# }
# ];
# Shared configurations
age.secrets = {
qemu.file = ../../secrets/gitlab/nixos-qemu-shell.age;
vbox.file = ../../secrets/gitlab/nixos-vbox-shell.age;
};
services.gitlab-runner = {
enable = false;
settings.concurrent = cfg.threads;
services = {
qemu = lib.mkIf cfg.qemu (runnerCfg config.age.secrets.qemu.path);
vbox = lib.mkIf cfg.vbox (runnerCfg config.age.secrets.vbox.path);
};
};
systemd.services.gitlab-runner = {
serviceConfig = {
DevicePolicy = lib.mkForce "auto";
User = "root";
DynamicUser = lib.mkForce false;
};
};
users.extraGroups.vboxusers.members = lib.optional cfg.vbox "greg";
virtualisation = {
libvirtd = lib.mkIf cfg.qemu {
enable = true;
allowedBridges = [
"br0"
"virbr0"
];
onBoot = "ignore"; # only restart VMs labeled 'autostart'
};
virtualbox.host = lib.mkIf cfg.vbox {
enable = true;
enableExtensionPack = true;
};
};
});
}
-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 = [
+3 -1
View File
@@ -14,6 +14,7 @@ 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";
in in
{ {
options.greg = { options.greg = {
@@ -95,6 +96,7 @@ 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}"
]; ];
manifests = { manifests = {
cert-manager.source = cert-manager; cert-manager.source = cert-manager;
@@ -116,7 +118,7 @@ in
state = if (config.networking.hostName == "isaiah") then "MASTER" else "BACKUP"; state = if (config.networking.hostName == "isaiah") then "MASTER" else "BACKUP";
virtualIps = [ virtualIps = [
{ {
addr = "10.42.5.1/16"; addr = "${keepaliveIp}/16";
dev = cfg.vipInterface; dev = cfg.vipInterface;
} }
]; ];
+1 -1
View File
@@ -27,7 +27,7 @@ let
nebulaDomain = "nebula.thehellings.com"; nebulaDomain = "nebula.thehellings.com";
# Linode's public address — used by all non-lighthouse hosts to reach it. # Linode's public address — used by all non-lighthouse hosts to reach it.
# Override with greg.nebula.lighthouseAddr if the public IP ever changes. # Override with greg.nebula.lighthouseAddr if the public IP ever changes.
defaultLighthouseAddr = "linode.${nebulaDomain}"; defaultLighthouseAddr = "thehellings.com";
in in
{ {
options.greg.nebula = { options.greg.nebula = {
+1 -1
View File
@@ -54,7 +54,7 @@ with lib;
target = mkOption { target = mkOption {
type = types.str; type = types.str;
description = ''The destination that is being proxied.''; description = "The destination that is being proxied.";
example = "http://localhost:8080"; example = "http://localhost:8080";
}; };
-1
View File
@@ -18,7 +18,6 @@ with lib;
devices = { devices = {
chronicles.id = "7FI6Y3M-C7YQEDI-IB345L6-RKLXMB6-AEIV57Y-3J2RCXQ-MK6QRNK-EINPXAE"; chronicles.id = "7FI6Y3M-C7YQEDI-IB345L6-RKLXMB6-AEIV57Y-3J2RCXQ-MK6QRNK-EINPXAE";
genesis.id = "YDTH4SD-GUAC5AA-SSYWYPZ-YMJW5LK-LE7PZKJ-GV2UJFZ-CU7LZAD-GTYWCQK"; genesis.id = "YDTH4SD-GUAC5AA-SSYWYPZ-YMJW5LK-LE7PZKJ-GV2UJFZ-CU7LZAD-GTYWCQK";
gitlab.id = "GKNOZWI-CNC2Q2F-R5GGGDX-RYFGHK4-CCC37LC-GVOEMJI-46QPC6G-AWFEOQE";
linode.id = "IJMMXPR-WNALZBD-FMJH5W5-WV7XGJY-HLJTKGT-5TKHJIH-75LT56D-UUZCYQE"; linode.id = "IJMMXPR-WNALZBD-FMJH5W5-WV7XGJY-HLJTKGT-5TKHJIH-75LT56D-UUZCYQE";
}; };
options = { options = {
+48 -2
View File
@@ -9,11 +9,16 @@
"tailscale": "100.64.0.0/10" "tailscale": "100.64.0.0/10"
}, },
"hosts": { "hosts": {
"builder2": {
"ip": "10.42.1.17",
"system": "x86_64-linux"
},
"chronicles": { "chronicles": {
"ip": "10.42.1.4", "ip": "10.42.1.4",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS", "pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS",
"external": true, "external": true,
"ts": "100.119.228.115" "ts": "100.119.228.115",
"aliases": ["s3"]
}, },
"exodus": { "exodus": {
"ip": null, "ip": null,
@@ -30,6 +35,15 @@
"tags": ["router", "server"], "tags": ["router", "server"],
"nebulaIp": "10.157.0.2" "nebulaIp": "10.157.0.2"
}, },
"hermes": {
"external": true,
"ip": "10.42.1.18",
"mac": "BC:24:11:E4:72:AB",
"nebulaIp": "10.157.0.8",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILFYyzz/9i5rXprCQj9IL1ulrbQ6E9BOSeOcvf4D/b0G",
"system": "x86_64-linux",
"tags": ["server"]
},
"hosea": { "hosea": {
"ip": "10.42.1.7", "ip": "10.42.1.7",
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKLIwkTTXA56sUlUjEulXXZRvZy5H4a5ZwgKWLlpkQDz", "pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKLIwkTTXA56sUlUjEulXXZRvZy5H4a5ZwgKWLlpkQDz",
@@ -105,6 +119,7 @@
"system": "aarch64-darwin" "system": "aarch64-darwin"
}, },
"nas1": { "nas1": {
"aliases": [ "*.nas1" ],
"external": true, "external": true,
"ip": "10.42.1.14", "ip": "10.42.1.14",
"ts": "100.114.187.61" "ts": "100.114.187.61"
@@ -121,9 +136,40 @@
"external": true, "external": true,
"system": "x86_64-linux" "system": "x86_64-linux"
}, },
"gitlab": { "pve2": {
"external": true,
"ip": "10.42.1.15",
"system": "x86_64-linux" "system": "x86_64-linux"
}, },
"pve2bmc": {
"derp": "10.42.2.129",
"external": true,
"mac": "00:25:90:4b:34:e8",
"ip": "10.42.6.2",
"system": "ipmi"
},
"pve3": {
"external": true,
"ip": "10.42.1.16",
"system": "x86_64-linux"
},
"pve3bmc": {
"derp": "10.42.2.181",
"external": true,
"ip": "10.42.6.3",
"mac": "00:25:90:4a:dc:2e",
"system": "ipmi"
},
"pve4": {
"external": true,
"ip": "10.42.1.17",
"system": "x86_64-linux"
},
"pve4bmc": {
"external": true,
"ip": "10.42.6.4",
"system": "ipmi"
},
"wsl": { "wsl": {
"external": true, "external": true,
"system": "aarch64-linux" "system": "aarch64-linux"
-1
View File
@@ -30,4 +30,3 @@ final: prev:
tpmSupport = true; tpmSupport = true;
}; };
} }
// (import ../pkgs { pkgs = prev; })
+18 -11
View File
@@ -1,13 +1,14 @@
{ {
pkgs, pkgs,
system ? pkgs.stdenv.hostPlatform.system, system ? pkgs.stdenv.hostPlatform.system,
top,
... ...
}: }:
let let
c = pkgs.callPackage; c = pkgs.newScope packages;
in packages = if system == "x86_64-linux" then (allSys // x86Linux) else allSys;
{ allSys = {
#default = iso; #default = iso;
#iso = top.self.nixosConfigurations.iso.config.system.build.isoImage; #iso = top.self.nixosConfigurations.iso.config.system.build.isoImage;
#iso-beta = self.nixosConfigurations.iso-beta.config.system.build.isoImage; #iso-beta = self.nixosConfigurations.iso-beta.config.system.build.isoImage;
@@ -15,6 +16,12 @@ in
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 { };
@@ -22,15 +29,15 @@ in
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 { };
} };
// ( x86Linux = {
if system == "x86_64-linux" then
{
qemu-hook = c ./qemu-hook.nix { }; qemu-hook = c ./qemu-hook.nix { };
vfio_startup = c ./vfio_startup.nix { }; vfio_startup = c ./vfio_startup.nix { };
vfio_shutdown = c ./vfio_shutdown.nix { }; vfio_shutdown = c ./vfio_shutdown.nix { };
zim = c ./zim.nix { };
} }
else // (import ./zim {
{ } inherit (top.nixpkgs-lib) lib;
) inherit pkgs;
});
in
packages
+48 -32
View File
@@ -1,72 +1,88 @@
{ {
"en": { "en": {
"gutenberg": { "gutenberg": {
"name": "gutenberg_en_all_2023-08.zim", "name": "gutenberg_en_all",
"hash": "sha256-wWi0vTyMD/Es0w/jk9uyg4DN94080thPfT5uphEqbUc=" "version": "2023-08",
"hash": "sha256-OXmdHdsLZcW4nCUQsy7sMpUssS8NV7ztkCgS/nsISuw="
}, },
"phet": { "phet": {
"name": "phet_en_all_2025-03.zim", "name": "phet_en_all",
"hash": "sha256-HT/gVNydkOitny6oUl2A+JvbFDGAIeb0h+xbMeQ2Rqs=" "version": "2025-03",
"hash": "sha256-ARuUzU2o17J2/ZedHc2acXl33dtHCbQJEb72UQUEm1Y="
}, },
"wikibooks": { "wikibooks": {
"name": "wikibooks_en_all_maxi_2025-10.zim", "name": "wikibooks_en_all_maxi",
"hash": "sha256-zmcvrvGO+LEHt7x8/SoguBDODUyRXy9x5LUGAkS+fF8=" "version": "2025-10",
"hash": "sha256-ONBh/ze1Fv2Ffm5b9vDzYS/i2cWSa4pM4MLZnozr2n8="
}, },
"wikipedia": { "wikipedia": {
"name": "wikipedia_en_all_maxi_2025-08.zim", "name": "wikipedia_en_all_maxi",
"hash": "sha256-r7Cd0vjEb84Ftw+EwZSlqb8qhqm8WA3LAPdHAav7wrg=" "version": "2026-02",
"hash": "sha256-vwhTv5TtjFNSTl7mcoi8SJiBm8nUlq8rP4UrZYir3Sc="
}, },
"wikisource": { "wikisource": {
"name": "wikisource_en_all_maxi_2025-11.zim", "name": "wikisource_en_all_maxi",
"hash": "sha256-jPHh/C20PARN6K7aPNw3k9fFHhpwzsREi/1o1DIISS4=" "version": "2025-11",
"hash": "sha256-p1Jio+PMTZVSLIDIOBeMG3acXJg83CwQM7zIWDUyozM="
}, },
"wikiversity": { "wikiversity": {
"name": "wikiversity_en_all_maxi_2025-11.zim", "name": "wikiversity_en_all_maxi",
"hash": "sha256-0DaE2EUdHvaX3XqD3f0lwurSAaDZ4hEKtrMEutL5xt0=" "version": "2025-11",
"hash": "sha256-IG/gAUdc/vHRrIWGHhw8vMJdLWwqrNbfh+SiclQRIAI="
}, },
"wiktionary": { "wiktionary": {
"name": "wiktionary_en_all_nopic_2025-09.zim", "name": "wiktionary_en_all_nopic",
"hash": "sha256-EzrrruJQWY/3pP93WCTeCCfaPvpshqdkR0TFxVz7bEI=" "version": "2025-09",
"hash": "sha256-Ghcb60qeGaSJtTKQkJoMx/XucX7Lt1XY145lD3gHlMg="
} }
}, },
"fr": { "fr": {
"gutenberg": { "gutenberg": {
"name": "gutenberg_fr_all_2025-10.zim", "name": "gutenberg_fr_all",
"hash": "sha256-1gU7v//LYX/2LyIRjO02A1fWPQz9Y7Qt5ftgeazd3G8=" "version": "2025-10",
"hash": "sha256-gLHxLXJNwwcxM/mZHtoJ8ojbGQ1fugxgni/+RXccwhU="
}, },
"phet": { "phet": {
"name": "phet_fr_all_2025-03.zim", "name": "phet_fr_all",
"hash": "sha256-K56i55WPu5EMQHIrnnqhgJ32WozZ6oYD9X3IBytGA0A=" "version": "2025-03",
"hash": "sha256-CSboZNTIowLLhp1u9wkxH8xmu3LvQNx5q493AOYJRIc="
}, },
"wikibooks": { "wikibooks": {
"name": "wikibooks_fr_all_maxi_2025-09.zim", "name": "wikibooks_fr_all_maxi",
"hash": "sha256-PQSdPbBHwK3IfFPH5GsKaxkNGTlZVJNJEI8gNioBl1U=" "version": "2025-09",
"hash": "sha256-KHCc/73L5Bd9iZ47SRV6vpI8fVM1v9hk1TpEvTro2uo="
}, },
"wikipedia": { "wikipedia": {
"name": "wikipedia_fr_all_maxi_2025-06.zim", "name": "wikipedia_fr_all_maxi",
"hash": "sha256-zzDhITMd1nRMYTUlvn56l4VBnpFuhiNrhhYMcrrBuOQ=" "version": "2025-06",
"hash": "sha256-ve7Mbh96/ObNbV/KVNYZpfLN+HdWlJ7C5LItEdVkRH0="
}, },
"wikisource": { "wikisource": {
"name": "wikisource_fr_all_maxi_2025-09.zim", "name": "wikisource_fr_all_maxi",
"hash": "sha256-2gEY5nTBecrmg61VJerxO4/oV7dZJmRgzLkqrcocW/0=" "version": "2025-09",
"hash": "sha256-FdLYCjoT6Yk34AZKFND/NaBHNe+GzW9Ibpd6mVPWlxI="
}, },
"wikiversity": { "wikiversity": {
"name": "wikiversity_fr_all_maxi_2025-09.zim", "name": "wikiversity_fr_all_maxi",
"hash": "sha256-4vOxYiX3TYht7ARY+PeCJ0ArVZZn9TeGtwCieqn3xUw=" "version": "2025-09",
"hash": "sha256-55fdtw/cRezq6nkRp6wuwkukBiqsQKdwh9QWVAgFcBI="
}, },
"wiktionary": { "wiktionary": {
"name": "wiktionary_fr_all_nopic_2025-11.zim", "name": "wiktionary_fr_all_nopic",
"hash": "sha256-oQS8DzKioceCER1p1oAvaS1gRooMLJLYnCqy1aLARi4=" "version": "2025-11",
"hash": "sha256-P0CJptee5rDzccxyRDBzyRLuuFOcaLsJYi6DkBFUfIc="
} }
}, },
"ht": { "ht": {
"phet": { "phet": {
"name": "phet_ht_all_2025-03.zim", "name": "phet_ht_all",
"hash": "sha256-UjC0REJ5d5wIKccutZADX74IxvZuF+CD/caVzZfHg9s=" "version": "2025-03",
"hash": "sha256-bHrPzE8H7ptrP6r5wPlXSsXNlTiKxJ9KatABC4kwx+s="
}, },
"wikipedia": { "wikipedia": {
"name": "wikipedia_ht_all_maxi_2025-09.zim", "name": "wikipedia_ht_all_maxi",
"hash": "sha256-spT7EFXLnI0FWT9Vlvp7QEP0urntmQ2C+fQB5bVLoLE=" "version": "2026-04",
"hash": "sha256-qUX0pKxIyNsWX4V6kNIsP4Z9nc6TDhwdDR0MmpDOQFs="
} }
} }
} }
+24
View File
@@ -0,0 +1,24 @@
{ pkgs, lib, ... }:
let
zimMetadata = builtins.fromJSON (builtins.readFile ./blobs.json);
oneZim =
sourceType: info:
pkgs.callPackage ./one_zim.nix {
inherit sourceType;
sourceName = info.name;
sourceHash = info.hash;
sourceVersion = info.version;
};
# Preserves structure in the blobs.json file, turning leaves into drvs
zimFileDrvs = builtins.mapAttrs (
_language: types: (builtins.mapAttrs (sourceType: info: oneZim sourceType info) types)
) zimMetadata;
# Flattens leaf drvs into the structure that flake packages expects
zimFilePkgs = builtins.listToAttrs (
lib.mapAttrsToListRecursiveCond (_path: x: !(x ? "name")) (_path: drv: {
inherit (drv) name;
value = drv;
}) zimFileDrvs
);
in
zimFilePkgs
+33
View File
@@ -0,0 +1,33 @@
{
sourceType,
sourceName,
sourceVersion,
sourceHash,
fetchurl,
stdenvNoCC,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
name = "zim-${sourceType}-${sourceName}.zim";
version = sourceVersion;
src = (
fetchurl {
url = "https://download.kiwix.org/zim/${sourceType}/${sourceName}_${sourceVersion}.zim";
hash = sourceHash;
}
# fetchtorrent {
# inherit (val) hash;
# url = "https://download.kiwix.org/zim/${type}/${val.name}.torrent";
# backend = "transmission";
# postUnpack = "mkdir -p $downloadedDirectory/tmp; mv $downloadedDirectory/*.zim $downloadedDirectory/tmp";
# }
);
phases = [ "installPhase" ];
preferLocalBuild = true;
installPhase = ''
set -x
ln -s ${finalAttrs.src} $out
'';
})
+2 -1
View File
@@ -83,7 +83,7 @@ func getHash(ch chan result, file, category, language string) {
// TODO: Only call this if the file doesn't already have a hash // TODO: Only call this if the file doesn't already have a hash
// in the existing file // in the existing file
fmt.Printf("Fetching hash for %s\n", file) fmt.Printf("Fetching hash for %s\n", file)
cmd := exec.Command( "nix-prefetch-url", fmt.Sprintf("%s/%s/%s.torrent", BASE, category, 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("Error fetching hash for %s (category: %s, language: %s): %v\n", file, category, language, err)
@@ -115,6 +115,7 @@ type result struct {
type Zim struct { type Zim struct {
Name string `json:"name"` Name string `json:"name"`
Version string `json:"version"`
Hash string `json:"hash"` Hash string `json:"hash"`
} }
+38 -37
View File
@@ -1,38 +1,39 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg HqGj+5hXjRLJcrRMC3biBE8K9B/OAJj68gqTqg9ja1k -> ssh-ed25519 87huqg cU4X1qZK41KRZ0pQvjGaVNDslGG9qmf0WROZIsq3WTE
K25Z2YGlWnUK02EUQmdNo0QM13apME/mc5w0gydrEDc fjJ4+eYXeuTts1ZPbaB5YzhPoHi6UGewDmlzrwOeOGs
-> ssh-ed25519 8UnW5Q Pj4iDE8Q9FhzudZ341W+V2aaWuotfzOZzN18fRnPqh8 -> ssh-ed25519 8UnW5Q Ror4AvYpT9lzfnr+LgNu3XZpRKIjocRRZHD7Zb1h5GE
kujFDr1mL/0YrsyoVpWQhkEwwjXr3l3AbbD2787z8zo krvgjoP6tgHsEWQCWA9z2VbBdwR5TmAA+xLmXoBNUYI
-> ssh-ed25519 UFfTmg Ga4FQrnrejoa6uSNDh0VMgB7ntPrp4Z2Ic8n5XCosHM -> ssh-ed25519 UFfTmg qFTu8meX/IPp8DsbMgBX9LNRbVAeW1ge1GjMsbZwI3I
cquCWegeBg6Mtv3/t5RAEmh66p6oHBlQvbuJMaZTB6g 8YGOxIvbkC02Gy6TpPvxdAJkboB6RiXyMboDgY57HGw
-> ssh-ed25519 xNtnoA Mf9EJ6mB79mWBN383e8t/BZQVjB7mXuFKvhyJdT9GA0 -> ssh-ed25519 KbVVUw Ar4IGQSYFb+hIm8o3wI/9rgBgP4F2/W45YlUxsPnUCM
QnnrGVbZIHMDBS4ZZrj8BDwx6deSP10t2kLLzu2ewXs tTPESO6d1pEumLGV+uew7IzqxdG9/EtGbb0vOfXtMRc
-> ssh-ed25519 aY2AXA 0Lop9E46qiaGNrFTVbgg0O1yKbqwCFmG9pjssoclMUM -> ssh-ed25519 xNtnoA 4HBphnFMeJPSTQO3/GI7phbhW98gNALrvY3lFgBshkU
I5lOVEogB8XV9pkyqmYcFojvZlAX31ADlMyHgDluxjY 8adXWowmuIbNruPWNTE6x1Om2JstPUrUoaS97N+bhZI
-> ssh-ed25519 AQhf1g Ktn1BuWcwx0eJS0ZJugnRiTmvAht6ABOVzTDcw58HlM -> ssh-ed25519 aY2AXA vmvo0o12q9meAnnAg+wDqDtkOTOFZ358ZrT5d62X2y4
7Vm9rx9P+rXDvrxTQnxxpUBZbvNRgd6UafmzuG0ePwM Y0qxZmOiqhBsQT5XfJtK0m47Z+dOO27bA4iWXDF1n3U
-> ssh-ed25519 mOmPfg VhUpDomkduEthbPGMr4bFpLqVcXgn3OrQojPjA+s8k4 -> ssh-ed25519 AQhf1g p0Xv0K3xtwpNmfNN9lvQ39cZw8/G6ToDHdmWbuwk1yo
1nrS2JxDSSe6PvPRK9VNBh7RTMiFChSiM3xbCQAQw/4 Ds1oqffX9y+WzNsznWsF+/RUTNQkZzVW6Sw8X+vuoW4
-> ssh-ed25519 YJiRbw XVylSfHTRne3B5zWru6x+yhAPJEp9Jj27P0Y63Wp2SE -> ssh-ed25519 mOmPfg rfAZzFVagHhbeK3esrQ67i61HWicvMiwal09Di+3K1A
APDEG5J9tBR1boxpsUBarSC8vN6q34KElRUK98fsQ+0 fxjUJS+640QyJo/Bg44ci+imnc3nLKgUUKr28AjSpAE
-> ssh-ed25519 0/WsKg FVXUmVyse3msAkDSkznhcUw5VYd4vwsKd9PCDBJwLiM -> ssh-ed25519 YJiRbw 75uSheAYHchkQg64z6mo9h5SbN7jJ+wRo/89ZAhHM0w
hRIDpMGWWFu127Q/jvxr+ieSM7KQfNagqhUZUnTwJMM xaBNhUzKhx4KKYEfu0v3av7fxge3r7Jgoym4SxAgx5U
-> ssh-ed25519 Nl/5yA qO4YJ4/gnfbLOdJFyGq1J4AJH5pMTPhR2IvEKMt4IlM -> ssh-ed25519 Nl/5yA W+9F2FObW6hlX7gdzXCcD+XxVJD+7zjcY6cwfg2c+nY
Dyhj/RQQ3LxgJVc5drDdgw0cAJi1t3zCFnO1zWKaWIw QOZdYtwrlUqUh57lceLQNx4qPlFcQaak+p8w+xvm4Is
-> ssh-ed25519 GdLgCQ GyVGc/nK0Zu3/Gm76KRvXHwjdnRvoM+WuY/psFaIv2Y -> ssh-ed25519 GdLgCQ XtYujNgBU7VIYy4F5Sx8Lfma2eI8xObwsWlsTWVQ4nQ
1O56ZsNvSBzhcFRPoIOyUCMQCGQYn3w5ES2AfGP75uw bj0pRWsqH3FxBwSv2cWuhLZSISY9BXK2yJT7K8lzc8Q
-> ssh-ed25519 tOH/HQ wR3dxHjLSzkHIG/6UX45qiGFqX0cHA18/oEFatBthUc -> ssh-ed25519 tOH/HQ ij84H+oh2GuFQQ6u84ecs1DZWDE8PKiUo/5xShokJRg
J/gpGWp8kOdmtFs9A65B68lsnD68gxfheiOZfp0AeI4 WKCqL+TyxHmtG4W2HqiuuBT7NWUL1X1YAkbHk7vPcTs
-> ssh-ed25519 FpzvfQ 0sdlOKrumgCJedenPUNY/QSIDmhrP3J077qZxTwvdQE -> ssh-ed25519 FpzvfQ FVbQ4Pj1Gcxi0R1QrfNbOjJExDET9cf6HJGEf3xaMFo
DdWxilImsFB/XXgbZNYXEjSCoqmVd0vaTH7rhR73fsw b721HyfPvlsd+yAYonnFUvb9a11/NJtwPX6RSqPsvnc
-> ssh-ed25519 kdPvzQ 9PxMQp7Y4Gh0V2uMa8K6SmldUhcqcBfYgVtMkzzzdAc -> ssh-ed25519 2UotMw z2IdT+cIwDEpbzcdPSzZXfpYdPuShklqNfatDVLGSgM
sS8Fqm1p72IPOKNZfJKIJTxTLoNt3MQaOI6w8qYCTRo qM31ztK1C30tt09lQQcaP2B+k2NOxtkQBXcedx8xL5o
-> ssh-ed25519 onmXpg Ig9ABzLLazyW4wxkUmq87XR7hmUt6l5/X0R9Zf2qBlE -> ssh-ed25519 kdPvzQ Ee7pccj9/YeQ+kUOpmDy0gHeCCNiVP8br954ZBoO+xY
n3DO7o4NdWRefqEkexyIJLeOQ8w1q9QN+wIslQNXIF4 w4JmkNKb3vIvBRY6FdB1tpdCO/I0xyrnHL/99W5UYms
-> ssh-ed25519 CnhD0g wtGoi7CzfIAs8ezcIF7ecjTXshD96xG8ZLlhYYaM6HQ -> ssh-ed25519 onmXpg tPWNTbyC8ihTBwkj4xKPKgjONNE7X/By9064z2BEGyQ
4hwG3V1Cf/iYDsNXT0RmzWJnW5kxnBWNvX3ECrP1/oE D6gjS7m3Dyk2BYhe5WjRAUFR3ayfsi4N6z0dklHFzWs
-> ssh-ed25519 4ep2UA AKSh5d04251XgyZKKscIJjU7RSpKclMqO5qPTEMQygo -> ssh-ed25519 CnhD0g SDxHr7dhCuF4DCu0PF0EgvmPDcTYOwleqkRw2I0F4xs
wSyIxArdlbLafOKmUyrlUqOZQbF1PXZND/PAFYCjClU WFzD7T2pQsDDwEovp6xpVXC1Uny9ImbrIuR5fSDLj1Y
--- DnRePhJDkX5QDmrkH5jiZkuljvOFaVm1BrqYMTDP3tg -> ssh-ed25519 4ep2UA wmk4HIdMZ/3N9TB90WEJC9ZGXgSGPsN+4uo5P3LAwSs
\bºîç:ý]3\ô<™rÔhމ׋|ÈFz.R{FEÝá<RòôœÊ'=ðY”­v xˆ˜o½ß ÌF Y99wQAsjnHgOhAEGd5CzYUd+0WXA3QVvcmt8z68RR8o
q␍¤lî0¥ä» --- UR17+b75zlMoHrIalvpAmdSegLhlbNIDnqZZBAI6LUo
Þc™Úxä=EŸÂËpÖ\”eÜ)Ñ£{š´Íû®2p=FkÑeæîẠO␍nÈ€,ƒà´¢Ž=ÌzƒnŠ>V|(Q
BIN
View File
Binary file not shown.
+38 -37
View File
@@ -1,38 +1,39 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg FccJVul84RKDnR/TVE5Ev6SAi9wi5d3UjyAYNCmncHk -> ssh-ed25519 87huqg 2adw32Tmw7tjm3xy/PxRAukA4BkhHC6xMhP07hgP1R0
335MAD56KCN4ZGZSyj65MygHEhvyunxooQEby+tjJJg ZxgOS1yxXmJ0fHcz1cRnChxcyby2BrNGcDNKXmJkB0Q
-> ssh-ed25519 8UnW5Q lGN+NyMtGXFXkmpBHr6cnioq7ji4RQU6nSEA7IbVLjI -> ssh-ed25519 8UnW5Q LSb0iW8mFQp6R1EgpAeqPBnBYTffyQbnuHF4gbG9gwg
9CPRIUIBJcY17pomQx4usFpywYYWBcb4DKVS3rrcW8c t6KO1HrgctPwz+xooRgAt350MApIQQJkNfYLxFEBF0o
-> ssh-ed25519 UFfTmg RsrK6+eHpdGn42Aek2c+sWSqGEPQuPCQ1cltmSNJ1RY -> ssh-ed25519 UFfTmg gxk9KLVLlYsX7ipfhxtoeRmU2LA50PsJ92hSUem+Sjk
JLP7SKLeQXx+1EiVBSVb2eyFBC6f7rAmMx6c8MuRUuI 0IvqPWsOCUj7ViDWOzf49m+wDnq6ZD5FP2UXB1o43LU
-> ssh-ed25519 xNtnoA HBJnWH8buvy0uN0PWNBHWelQQcQ7sVuwX5PIxnmE71Y -> ssh-ed25519 KbVVUw yVOQRLw8aMcoi3Bq8zVisFHYK5Jua5TCsxUdRtqn4AY
iPxler8tH9q3xvy/53Lz2wyyBtrQ+nCVZ/qRkK0LXZU K7EJl3+WbqEmng14SIsDMcBRhO3MADuSD5Vvu4+/1+o
-> ssh-ed25519 aY2AXA RaRgPcFOxKx/BvPt56IEDltUiFF1wxFERpxEmybg6yA -> ssh-ed25519 xNtnoA Zyqz/uE56D/KnED9zT5YZkN3fcBt4p9V4s4KItxC+Ag
ewJFmwI+3pTFwPDtPDitrEcK8dogu/4Y5dWIaCCSMWg 6jAtJ00gf+HLAWno+qjXbz+o+vl7BXuRuzJ6RUtKcIQ
-> ssh-ed25519 AQhf1g awiDTZLnt/wxMcz3Snn5rFV3irY0ma/cxYylmFx8uwY -> ssh-ed25519 aY2AXA yliUQYKNuq/Oo92SbaM9hh0COTZtLp2EES++JFQqaWQ
zOU3skyoRENDxJldzaLjA2WOv24vD41thPSfS9VN9B8 ZkZGRr0cGp7JOsExxnq2YFTFETPiVS/dZfozVdeNdAQ
-> ssh-ed25519 mOmPfg 7bx2mIA0YoeyHfY6HccoDJWLCEjz0XQW+C0XZi09bkE -> ssh-ed25519 AQhf1g dhzGNjEsT7hhX/K/ta+dJbXI3v2p6IyVXHWaS8nuzz4
2H8+g+4+itKcwy4NfOo4rz5gG45FZ4ilqbPnw5p5Jp4 Xab2y3S8AoLgnQNO4SdHx8ioG1DsWRJUfKM3RsmLkjQ
-> ssh-ed25519 YJiRbw H7FN13mZ11Im4R0cJs6Y0qs2xkLLqjEAM+QMUlt1XFI -> ssh-ed25519 mOmPfg Wb+LA3666buEuwE7S5353mZdU5hkjRlB+zwe7niPCEY
xEak37igbuepX8/m5irRyJPUvYz+jMp1XENmsPLg6oU 0+A9g3FFQYT4N8lM0d3KjPOGNlxJ8pKpuvOoTR960Oc
-> ssh-ed25519 0/WsKg FPuZmZPpjXVooyVhDZoqu7b6sqXXxN/Y3giiWmtfc0I -> ssh-ed25519 YJiRbw 7VQNPch30Ew5NAHh5Bmbe3JdCq7bTEG/ndCo2PC0Vx4
rNRSpOubIcbm5V/yOgprZ/D0KqbmBAf47ySfnejK7xo TmhQJzu/m7DfLnzsKl7tcIHl0k+TGJ7OasFWgwaF+YA
-> ssh-ed25519 Nl/5yA 9D+4HJ14L5KX2FzGRhltE/pPePUgZSufkA/t+aN3Umo -> ssh-ed25519 Nl/5yA Jq1ncqj6vnygwCQeSdYttMmWkikpsQZVm8MpZgGlFwk
jVH3RgVxqNgxu/+8Y/09nUqlUezl0VaYlD6HdqzO5Jg mTz+IK0CYcBlqAJ7/eNYdYchQiyfK+ILAjraJaULGiE
-> ssh-ed25519 GdLgCQ kpfgJsFC+alhCcXyJzm4qrGO/WzY52PeUfPxBWNQshE -> ssh-ed25519 GdLgCQ cRx9RTWXYDqtBDi9MKLVW6wRXjbwk8JZ8IWHwc3Xwww
pDrLxhlC6SZ0HoohQahcIMGf6yE/LX9qjIKvlfenABA 4VhHvHBVnKLo/8dqfMORCTEV4pGGvs7QaQjlJi97GTA
-> ssh-ed25519 tOH/HQ ghzvgNIYF4NUN23+juvWcSF9a33kmMi3b14L1DijlBY -> ssh-ed25519 tOH/HQ CLzuVJ/C6CXqOHSTAwlHSSnHTQdhtZHOX6JN9DlXC3c
p2SYIjMzVgMiRUkRidlfme9ZaANLL87phGWtMtvPd24 HmPZ4REBwaJWcRMTyThIZ5ZKz6P167+Qf6gCIdozblw
-> ssh-ed25519 FpzvfQ CdGC9zHx5NTdevkHc0u0GUO/qWR9eoWK5gkqht6SvyA -> ssh-ed25519 FpzvfQ jx88nIHu2H8XJky3qAQhTr9wE54D1eZgaR82UrfJFxY
hJ2ZqqVISnPfBGt10H0m6d6ZuLglq5qGdZj/lMZxVxg pWIJCFJWoZq5ivah4Ynlo9ob9hGAkXJT5UyGbV5s0hk
-> ssh-ed25519 kdPvzQ sFoIh+4wud+wg0XTE/GvDchVyLsnd/QNS0FU5LFjBjU -> ssh-ed25519 2UotMw EOSb36AGm6JZYAVhCJAr+H77rGKLdMef2GwLRlH1GAI
RGpXyV247iG28UonB97cE1I0pghwq0eVCoRoRdzxvJI 1ZaO3t5TAI9t0d7E4X5mSUjAmdqyQenjP65Mr8pITb4
-> ssh-ed25519 onmXpg 7NX8gGOL8gGli/gIIlItygEh6amLgUCEoNch6PrxyVk -> ssh-ed25519 kdPvzQ N0bGzFuEbcSdKk98BManPHjHM3rYrImzI6JdIOUTzho
4Ysx7HznkM7yA3FE4f7rHIQYXTXzSHizT07bo0jCYqI DV3TR0f25qcv9GJ5yuq1psKlcioXnwLyAcvXNsFq3Zg
-> ssh-ed25519 CnhD0g sU3lmlZuRMTCnDxoRfmmZUvZ4AkS0w/D38w3CTKfkQY -> ssh-ed25519 onmXpg rHXkabxqIP99M1SZgwCOx5thK3ibguONh+42sGL5Uk0
usqUhcEZv/M7nIdPY85LVZLcp7aktiAopF/bvK7xu8I AF+sIC4kvcMMlTmjgsBNFjXnMkgnHI7lfq7tiUWz2zk
-> ssh-ed25519 4ep2UA 89XKS2W/kjrFZYLxWmKFpGfwvVo1r8kiRT27vU+Q9Wg -> ssh-ed25519 CnhD0g YFuDnyk5ML+8kqAZqznPkhrdlebgPO8ncatfLeDNNxY
b04KiZG/ucpSkJ+DFV+JHniYdzOMTKpR8zK/XVkUWGI cnu39kgkX5CdCy9dmcYKvlQPu5NxqdKkbuoUkKb+FI0
--- C+p6CysdP9b8jPInNdYJrbQziDTry08D2okJRVngKMg -> ssh-ed25519 4ep2UA q1lMSlB+P8mgPeHrMnlshDq0ckjAnHQ74Mp+2kwpzXg
µß±±úªc½ð¸±¸ò¹cÀ>‹Ù· ÂÂf_÷V³{sª¹âÿ}EJ^6v<«õ¦è6݉=Tk²A€O¬üögŸCËZâÂKê×rw ’ØXP½ég'm~­û`-Ø|çKn¸àD%7Ïa~¨¹|ŒfgîÆqËP G_£õ|çÕ–n^ñr‚µü<ä°òH °æ¹²»¬-Ìûs]Øc™>}º›8G‡¿BM©Û„‡_¢-Ð qM‡Šî§Þ2hÙñÙ€3nýáásrO< ò¥ 0Lhvb7tvDmLKoFhACmRtWKhSVtCc31IjSENhih5GVEc
v` ËŠX;ǯ•­ne°†<pÜ%š#Ø¥q&¿·â␍æ”?€I%8ê␍oŒ8=R¤Çã@P]=U®Hð[ÄÕ7ú …‹% ¡ÏÞôÖÞ5Û¨üm¼»½ö-FÁ‹~±7)è`äÎ*Zo- @“²ÕþáëÈá --- FjiOMHh95R2Q8Ft3G/7VUbojHcWC3JXZ+nXBnZ9fSk0
h6~l|\fhIª¨ðå —,`•¼5ÐÏ¥²Íkorä¥w˜ÆžqÊ \vIËû¹woÅ„geÓ¡»J)\+ÅY˜å»±&uP&¹Ã³ÚêëݪR³ø¸<2™ ;Ãqþ¬ïtýRƒ¸²«qŸ'E’¢áUëþé)ø›ßµ5]!¸{’o!Ï#ætƒ×mÉu¯5ÝC™ªövÕ1ÿRéÐ’ýš|óᤅ$ÁP¹”“ëßéË6€åºŽ„B␍óÀVéÅù@1LÉgÄð¼À¸‡_ŒƒÒÑ•;³tWý²yŽ`K␍®®„z(Ç@}Ú?Üå~£¬¢8+¥‹„“7Ül¨Ë2†_^¦n“érˆë¢/¹ÜÀ‡€Êk«¢fMð)áÅ+6Ø)Ù²²ÞØÝÍÙîyë´Ñ ÏRTQ xn6•ï ÞæÓ?-B×ìYZ“F²~½WÖê'
Binary file not shown.
Binary file not shown.
+40 -16
View File
@@ -1,17 +1,41 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 aY2AXA HU+4yVH3avBUxCMrDare7bCepx+4q8p2O/XNqjUSxyY -> ssh-ed25519 87huqg yQ+ChAVhaF2JUmR5l4XVxA15edPMM2mtfTIYskYxMA0
Pe4scldjyE3qj7iingCerOJ88mCPf7dpPGyCbdC32t8 XLQioeVlZvwEP4lonmbWK3XDtwuhZbtrJud+Tov3oY0
-> ssh-ed25519 AQhf1g 02v5PhAfq3Em/ULRq2Rb7CqB1Ayw0USqmbWDAqGCzCc -> ssh-ed25519 8UnW5Q w13QV7AO2a8PkB8ADjcGDsSy6CJmitnqeglHXuCCrXE
wJxmhi2P/ffPoCDMkzgcD+WJphRuWg6eyS/8pXjm4tc iMkDqTBuTg6qxB8g0QVhR02Q1XhIpJJ+dmIkLSCEj48
-> ssh-ed25519 YJiRbw wyOuC5ktkSHmu3jg1XW2ieUsKHPJeH0QhYAUj9ibVmI -> ssh-ed25519 UFfTmg 68xIf6Ws46UFsCGM60ZI+WWEw23tCLrS8txQobkxT1I
rw6I5S2Eu9U2qxGvdM0MwRyQ2JyEjvS4mnK7cpA0T9Y pam9Uh9cUH/lTAT4SExDxVPVKMU21yKxvD/jFupNcjQ
-> ssh-ed25519 CnhD0g 2Rh5MJAxo/VAy2yo9X6fCiGwnv8l0UWnBiUb3ecinEw -> ssh-ed25519 KbVVUw zVGt6E/y6yo5Svg3pT/PFrJqdcDItTtY7iTtHw3xAAs
+WemY5Ydy91b0udadcW7y5cv9wpTCsld/mL3BFlpx5U pHAB9mcwcKNq8Qk1VWIMcG5gKS8B6hMbhAaT7J8zFBs
-> ssh-ed25519 kdPvzQ gCLwlt5M8LzpXlj8ARE0SG/FjDaIQfUdE5vR0UjkazA -> ssh-ed25519 xNtnoA Q8qCsBO+xEbY8HKO2QjsrBASa3GMkN+/NhA4YloQh1A
JG7Mb0JEXcXLvnOrQfKpvNnVaUFsjAJS/d4VKRckuZc WOqB67PuMU3po5SPFEuskSw3QYz/80zKVlV2cR1wb/0
-> ssh-ed25519 tOH/HQ W+HVeDX+2GdoCS0Tqlg+I5tbzPsdiQD5DvLQ20qk5BY -> ssh-ed25519 aY2AXA YxrS5wf4BgPdckDW+hpymBhBxBsiESkO+9IWI6xRjSU
v8hIW0lg9oqnYeJuU1CiP57Rr+P9e4D0kYX7oKuIFCU szYlR4jB+Vm43sMWoI6mt/pNi9K1ESCvvPvNtqXI5qo
-> ssh-ed25519 4ep2UA BE2nO/96pduUhsUuEStqfuBth8DDp9duYjhnQUbbF1k -> ssh-ed25519 AQhf1g CKzzFtvqdagNBkWsKifS/svWfp+TmEgKpv9RzaOZdzI
pkTD/ekiGw5ipPj9bpqcLJOeVHz251mFfCpPq+T5ojo pbjXLSY2s12MzwXXvwrFroJXRUvlxnL+/5afDmSB2es
--- 9yrA+4m628mJZQPFhpIBDRwYJ4/dplnYBvzfqzCDCm4 -> ssh-ed25519 mOmPfg OhqP2wxb9HMSnLY0I1tssQyDBveCXQZBQgOnbct1+yM
Ê_±{JOøŸIBq1)òr§Nã;VH±ÝÕwYÅWºÞ¥–¶P„&îÓÀÏè(ŒÔF€â1gyÝHÅáäÌ‚]ì ë#éö÷w‡ÿ£‚‹¨kÃè¨MC½ª ³à␍¯‰ŠÈ`£ ìÌPîo¼æH4µ›ö®˜¬³÷bv0 1s7wbRP59hWGuREWNE3ReyyW4DuSC4B1W4ndwxRICzg
-> ssh-ed25519 YJiRbw JqjGE7ty/3i2rouZmFoEfT2H4bpXtu+KdF2MLc4BAWI
SyOG4VKq03clWTjYcSU2fGLLH9pG7jOwFxpVC4nMd7U
-> ssh-ed25519 Nl/5yA paQvt0rjRYyT8rEJnlChUwuV0hEQuASE2TsNTPdIPx0
jOo6mBsb3zG6NMG3LXHC+yaXqA6uakDSYtgRbLeLEXw
-> ssh-ed25519 GdLgCQ W+GA/SL5OyVQPEF6SMJfRDPq+RWsjsqtQ3GTnKVMwWw
edcakGvsIJ1rVbok9HPY70jQ2qPT24Fx05G3xCV8dUk
-> ssh-ed25519 tOH/HQ 6DwpIUJxMTvG6zR1t7oJnDj3/CAGgWg0krlHtszKwFQ
BbNzDSCCuA+hJE2fzpc8kkKgJRh+ssn8v33F6+fz9g4
-> ssh-ed25519 FpzvfQ 14i56MD+qHFHYh84J+Y+H5KToSEtr+5PUIScS+8DOBQ
YcmBoUTSpm2EBR3MADURIXyN9+UebGTiYBnp0q5V9gc
-> ssh-ed25519 2UotMw AKa704qvbGtoTbKzCu7XTnBVfQJLjbeBjUaXGOs4+Xg
gyKLbQr41mhHgBO6OsKBk2JAqylGxtW//gdbXFxk1+k
-> ssh-ed25519 kdPvzQ YWTa8BfZjV6ke2JJ8T6H5mlQZXw3NJnJIzxOmlv2V1M
jwnAs1aF7YIKKvVmNy1zBjwgtfJ6fP6sZ+UQq4IGlQ4
-> ssh-ed25519 onmXpg VTK+oZBFFSTRW6C26nSIiz7GmdwHa5NCrlbE48H+dlY
2mJjLtZy+d5ohpGs7CPsBrCcZvvakfyD8uqE2S5zcmk
-> ssh-ed25519 CnhD0g aN7aF1nuz53x5u76zWhifAzKLmDWH+oG3ni/+CcHiDQ
PunfAegiWVxfgP1deGTuueA3RV4LADBkhbQ4uiKKIfU
-> ssh-ed25519 4ep2UA X/sVgcQpNxi3JDZPn6v5PmPnNT4AMP8g5Fw/PtxFFho
8vtv6aV3Mcy/AjhlGcM8H5vcEcO7YHmYrD4SBZ8PVv4
--- 550ZfMGzT3uBmP5NzcRZ5gtjeIpsr9+tZjigrw6eqZU
uJ4NÒ00DÚåòx!c”?ò>Rh]üZxë= öe8…]æ„”ËE
û\æ 7-Ï@I‹côYj´mßùöÊÍŒ )CÉPëVèK”Ê„ mØDuï©«Îç´)×зü
p0ïßr+ûŸ§Z´p)z!3…—Õé–«Ú´
Binary file not shown.
+38 -36
View File
@@ -1,37 +1,39 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg gv0jzWC7KtVxSEeepOckxiDwxN6VdPzYaXjZryNlUjE -> ssh-ed25519 87huqg tRkWo/tXovX5ukc6DRiC55s28fMJvry4lgSWeGnQXHY
04mMQsL99xW+VbpELVdnWehgq/3u50l5f98ZFTscSwU G266810Co/QUFWle5j9W8P2+cfoUmZ5gEKcCNg5jw1A
-> ssh-ed25519 8UnW5Q GzZDPqTzZNU5Dun3u7rSane+MXkDcbIM3TlEEJr7cUI -> ssh-ed25519 8UnW5Q OqyBBxWRBBpAlS93lZ+TGl2O2NwhS5/ZsMbN/sUiUVI
Dh/3ObCIG56797AvmSh5yrUk+MWqjxJ42/b4i2smnos N6csZzFJUU17JEsLUVRzBhM1at00bu9rUzXE5JAML9Q
-> ssh-ed25519 UFfTmg 7EWxx0WGxxAP2sErB6Rfteg2o1su5n1ELN7oCUsodEQ -> ssh-ed25519 UFfTmg iuxAyKikNUPm9QJU9O8UYspvWjWe7Te26uzPN6s8yww
S5x8TAYvjxjtCJgmY4ttCxvoZDdHMxY2RbsAJ7DxfJY VCpWZVtTwHlOC7PXk6xIezNbIMgFObavv1AFinouU40
-> ssh-ed25519 xNtnoA 9mPAgc7YI355QYNlTlJWmMhaScCNbCH9EofQcJJDeWk -> ssh-ed25519 KbVVUw pVU1pSoYn5SiePORWE9bJk+w8pn76xyhFrXi3PQJ0GE
QSlYi9COKd5ZjkC7Qxp8IcmmVJifJ1qy70VnExASqBM d8Y2dt840M954ZrqRoSeUPDjPLoM4EJwKwu4+5ehddw
-> ssh-ed25519 aY2AXA JUIOcOAjshTPueqEo/GDXWzEubBt1JuMM4NLv89zfTA -> ssh-ed25519 xNtnoA L8MxfT93s2I42dirqXnf+VRWq26NPuZ6Ta+0vcbwYRs
njcVfVgCmT374IdMqke8AWGyGcpCgpu5rGs2zrn/A2Y 0RyuZdK1sqCpuMDVpUpJkOs8OGhjz4vojNpmInX4a9o
-> ssh-ed25519 AQhf1g faN3428QM/K0P7o6nlPxT3lHlx88PBIWxw1mSN07zy8 -> ssh-ed25519 aY2AXA prgbsTVqCxDqX9fB1SwH0Pz3wHNNut2Kd/g2CT3pE1I
6G8FARubsbz7TtQWeQ5biww7XoXZrs0xDFdxKwyov/U 12LcMPa0xpx3vtrmNQ0JrJa5PUCcV+jj5s4c4ttRn18
-> ssh-ed25519 mOmPfg b7LviVrLo50sU195qKNxtD6lEqq/QJBnHFkQ3WdKT2g -> ssh-ed25519 AQhf1g Tdph+xLV/TIYMxExaUo+xgqd2Cl5o+BCSEKHWhYpTio
USSSrAIA3v3Luzt2Kft6fpMx4fXHAPBtWQVAAliiV2o ecuPMlwtgIbBoZ5mucYglIamW8FqeJT4ZXs84CcSaAM
-> ssh-ed25519 YJiRbw QjrEHQL9zx6pIR/HzrKyM94JF7efjkMo+ArkVOjkQlU -> ssh-ed25519 mOmPfg pmE+ZERem6G19KtQ339alV0mlSZxOdU0s/NSY9oykzQ
MfUl5yYO/LtxrENlcw2KgzyJiLpd/Xk0CbEJicxgG0E i57l9Oxl4mLYquHwFIsbPtmhyjyH62MereQzNf/vvhg
-> ssh-ed25519 0/WsKg ER1PXYwpONwb3U77qUoH2ZDFmfvRQ7SV8lkgHqRJQig -> ssh-ed25519 YJiRbw 7Q2ue0YEapF+lK7204mDbRTOxU4BrWC/01umQw0DCCM
MCRbKzFD72DdZwoVrV5DesMbNG6ikMlL5C6mTSVGtj8 +Ulv7yL+02WvDmrtlujCD7zR6V2Npm3WMqvvSyIpOH0
-> ssh-ed25519 Nl/5yA XKaH3S150ZwHo4uyLwaBrn2od5v6MRvc0bOR83Sz5Ag -> ssh-ed25519 Nl/5yA 0FmOQ2WA+qXbhHy6WimadXJKVmgUsRBbOPsgFJ6Qtiw
RqQn4/jo122fZA1oujOkwe4gbnGfn5BK8CJXi42NsDM xhJkG+SSdnYgMWeJk7ciLI9bS+c403p2PqVRObk9ezA
-> ssh-ed25519 GdLgCQ XVrC/NooMQFg4bSPQ09avkJ2mwROHp8mYbBA7dWjSCs -> ssh-ed25519 GdLgCQ Ovn3zHYbFImNyPz07xjMDYnUCnHpejotNfVyD6olgGc
Q72VZnjs6Y574eRwheabzTW2GH8A2oEOEyk1Mkh+NzU AfF78TueIj5jnz+q7vrXyu1BZ6VN0hkTpg1LItmnCYw
-> ssh-ed25519 tOH/HQ b55WhSZiczkXRQQTxAFBeN4HKyi2orpR+ikGiSyaonU -> ssh-ed25519 tOH/HQ x9alUL3V2mHyQHt5vPIDBq+TNE0tYkJuP8KYE80VinI
woTljkdrDmI6iCwUnJ7i1kLdfH3QaZgkxxQ+Upik6/E se1kqe3o8bKr1AkgH55NTPMD6ZRkdcLIIZ0YhEVkTq8
-> ssh-ed25519 FpzvfQ +kFO6lyChWKyGs1vN8XmRnp5wNUrOvKGAMtQB5gYJyQ -> ssh-ed25519 FpzvfQ W6oRWhWgbZjLrJTkFj9LJWcq3gapz6vRtdSjV4g/yzE
xQbRbUfvk9Eoi/JLfzugHeUVbPGfFItkul33A7MVx3Y GYh8HSC0mPRGRu7jT7DGx3py0Gvu/zu3BzVdXL8gU1A
-> ssh-ed25519 kdPvzQ dv1xr07TrUQRGwl6jbxMQlocvvYlTmyzyZpbRAU5rg0 -> ssh-ed25519 2UotMw +XsUycMbAALayfAxF/SvkoWv5ubzWp/RvJcD9sWeSAY
IYO9Af8yAxY5499AArmWCy1aV/ZB3w3deBS4OAHq+LY j3lHaEJzFk7R48RNbGNzcMs97p12n88L9WjockK1N+g
-> ssh-ed25519 onmXpg 8cNof6Uwd2MpA3ydHLQHAQvFvl7Kk5moWMRD5qVFxGs -> ssh-ed25519 kdPvzQ X06P2aEDkUoSk0KVLZWC9DGyNnVlleeBft1xQPecDnA
hTMO0oPxHajokrzMIWB5ksbrVFcpQGo6Jje9FWoiPxE 6p3jxcHePWO+cf4hnALXxaa5bN8B9AZo+qodDyK/Evc
-> ssh-ed25519 CnhD0g kqhzl+91aQ7CDRrXzrLPo+P5GuEOSF0MGQlfZESPJDA -> ssh-ed25519 onmXpg +9uXItde+0h/bBcSEwZ57y36bxwwoCWY2SvN1jG7rVM
64xA1PirxldhnScyJ0njwaOMZ/EgPRm1hQzojJIa+84 2VyLiThmzYQeDOk7TaUUslec0qvr7UMSiBTHsEpR6ss
-> ssh-ed25519 4ep2UA Zss5olMIbVxEJT8XdrFSrBOppplv8+x5ej3CktSUNDs -> ssh-ed25519 CnhD0g feqQLfUYnakAiHJo+gWHrbd5o9WyQ/qluJ7/d/n7PGU
ldPkN2iSBrU8M7WCZx+PlgUhEIZEoUmRWRgRHvG7+Dk g5l7RvpeBRwnFRKhAED75QC0d6DiGlFho3D5tPumiIY
--- emzp8uRGi0GDRt9HS6E6NvmwB7LyI8mWED2Mof9KFrA -> ssh-ed25519 4ep2UA nkc+pDUli0BTe7XoDAJEOLnBDeiekZSv7XVL3POXCTc
WK 烾ÄÆý;m7…%cl48Wáå‡÷'D} ýœ.l»fGºj«yàÈI2ˆ~h•YKè‚Ͼ†ÙŃɺ …"VÕ"(HQ>å­EAG€æx1 iWQSdc2hWP2UvyyISoUBKOhRotPCv2ySsfmoAAOLgFM
--- YRWXRvqVNx+YrIEW8vp0RcJLM/leQUhHD1WKnaEqprA
$f4jAjlÚaôp@™ e¢!(°^˜rˆèJ÷¾%h¼h@37üß1š+'žª´pŸ­œ†ÿbÿó1,¦jÂôA´n£€X¹ð‰¤3jýÈÇ[ìÑW#E\NÑÓÖ}¤
+39 -37
View File
@@ -1,38 +1,40 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg +F2U3yjndWx1Xb0oDf09pUyd+xljCHWyt9xcT8mjWkM -> ssh-ed25519 87huqg 42tvGwJ82PwlXbr+TqSz08omHABPqv1TH5plKNLLvkY
PcPUpkFUsc7gnAHZ+lkKqkHf4TWlrbQAjDRTCc2xXxg 4Xwl0lc+zSL4k1PuIO9qF1Ci8mOOWciq5yGbbqW6nLE
-> ssh-ed25519 8UnW5Q Xeq4SvJ6FYT1mIWhBUiNqqAF7aJKbjzRiIYBpnvDRlc -> ssh-ed25519 8UnW5Q gGcbBcV2tF2UaaYBvM/jiNH8Lc9Fl62NZIWSbNVZeX8
zG8aAFlLimU0SqnC2z5bDQw2Zm1cW2vvYqnVjMcxNSY 1TLxRM4e4/T/q/8Bdx/W3Sg5eeq3g6aUcka2kizF1O0
-> ssh-ed25519 UFfTmg 5FIJ9JJPIuMuK7BpVEZBbB0rztiLhu2G3dfRX52pYhs -> ssh-ed25519 UFfTmg oNyxvAIg2hYEJ6Z3r9MzuR5YgPW432T03/mcjLeLOgs
sbRMpJTh0ANEVIUUBAgr2i6Hs1cdy8r1wmMPkANE5DM NZOFUzuaaxwGbQDkDinSzjbFPrFETbQOEJwrgyYtKpY
-> ssh-ed25519 xNtnoA hQ0T/i4bj096xuY0GUYM4N6GhyyFUv/dajBD27SA/wA -> ssh-ed25519 KbVVUw annu9kT2zbKvaE3WwGtDGhvku/Pj8a4P5GEQLhahZiE
hmV8mKYGOR3WjAkH/mO8ZFyDGe3N6R3ze+dGVh7OGIM RKg/owcXYN5pqsDxjlaNPg6um/7/eoXxZ5oJxxouxjE
-> ssh-ed25519 aY2AXA QML1/v/gxLxdKa0zzKYPOWIAUVqcG8wRcx0HnM38B0A -> ssh-ed25519 xNtnoA tN13P6fRYHjVTmXo7w6y/ljzr/8nEqrlgZXpG5jA218
5hC6Si/IV1dmImIkn6SlIkWNRFgjNOmUTC6MjGTE0GA wg4SUSCWqE3iskGPE9qJ5Ot68pcvwCi9fmE5NXZqYCI
-> ssh-ed25519 AQhf1g 7h8ZokLoQFV3eUdzzt9qzRhxtP7U8Zl70ds+znsa8yg -> ssh-ed25519 aY2AXA VdvvL8lgjZBhflonEI96VSFgYaUX3Tfvjo148BA+Uks
M1WUYlD+1ZzrkiSEQG1CyyViv5Z/gqPEa8j6AGSbyOA ZljFDZ61GKr24lWG8z8sKke1TpTCiSeqyd05yxNFTVo
-> ssh-ed25519 mOmPfg xxbhbwb6mdf6q0G6TaXXSt8qN47ruYhDLCMnwYZyMS0 -> ssh-ed25519 AQhf1g jKvD41VnPGoCBEva5llD2NQo42TDnpp9M28BTBewuR8
fnsG3+N8DSQCxUGksvHmWQNdN00I0OO76YlDRFUW+no TSBZqNLhG/PyToBnX2kwevA35QKmKcjwcPe8/JUcywM
-> ssh-ed25519 YJiRbw Og85bpfNOPBZkIeD6qS022hxu/A9AyiS5rAodpblLzU -> ssh-ed25519 mOmPfg /yX7XUVozu8ZTCW9gJyoGd7EzBISb0c+i08HEsN7ODw
qX3irxsnsRO55DCQvzIkxxpQeIhWhfUNjlONJuGmXeY e1rAICTZajIF0AaWXBATDNuqQK4GAqxEjgxvaRzDark
-> ssh-ed25519 0/WsKg hDApnBntBbGhAJtVGVujL3kJDzFMpOh6zIsIowlJOF0 -> ssh-ed25519 YJiRbw cy9m8KQln8ryxLEqx1tIoZRq4SiABQFT5IzmMlgkQjA
wNTOOqR/tnZujRMlt/AqzTscsz46sbf6NSauj6uMunk P4OLv+oTFhgnLzb4YrhFdV6jreAGhXBkMCe7pb31KTw
-> ssh-ed25519 Nl/5yA O1CBq1B+yjgO5XW4zT1sQHXPX8QioIj1mbyWHDvtiyg -> ssh-ed25519 Nl/5yA Nx8mErRdN8sIaj8ueWnDkSw5vBhfkOW5Rk2ND3gwZmY
L/Duen+XqSD+mwe51nZSxT5MIa4nnywvVsq/Jgrujn8 6elVFcWQnwmh7NvRm17+WahOkvLmQbqBBKnruHT3yp0
-> ssh-ed25519 GdLgCQ 5Df3/IrcNYYFcSOyuDpHgtaJOtEPVaK++YhiUh1NvXw -> ssh-ed25519 GdLgCQ WwKSzJsPG8vJjRjc+nkyvGKtqLvpKe3V158fRezWtzk
K2Dmj4jajj6Df7zcjquFtTKZvUo3cDwBcCOpBaizv6E mKdk9Z2wOipmc6brgNWeIbxADdkkXAFcs8E956RdHTs
-> ssh-ed25519 tOH/HQ FgS143ErZf0eA7522s0KwCQWz3CSxyMWYo2a0N+bZ1A -> ssh-ed25519 tOH/HQ /CL2OxE6C8ZCfHgHTQQJmuACG5lZ8AdVpDe1YfG9mHw
byGgVzxGE9zfbg3aEgm3goeKGKvcgnYu/gmsi3aJZ9U 7uaalUdP5vCjsLEYdp+LREaxU3Vo0VUCVXn/H0WAa4I
-> ssh-ed25519 FpzvfQ +PrSsNewNU/exnAS9MD1IzqNar71A/4u89DaZvJCkF8 -> ssh-ed25519 FpzvfQ hE8FGN82H81RWUm+LgCuvQMWra0ulwMHuGSYTdQvc10
FLDdWILk85mpwgQHnzPGltf1Ua2EVKfxhBxgpDhFPZs Eq/btSgef+2nkQGreBhqRKAt/6CFo5ahdRbBfCO5Bv8
-> ssh-ed25519 kdPvzQ Tvto3BbEHZmOhEoRqDySQhVikIK3yn1+uCqoTC7kFxI -> ssh-ed25519 2UotMw mqdgTsPI9vockRACf/NdD466WkIyQvSLuEJSrT5mDwo
cQBdUfwLrJf/7eRNsXzc3u2McgoOdQC0bfwprg2JJPo hyZQCiUCu8gfVTCZ8wMxo+i+CqjhE9t+hdJrJcm1dNs
-> ssh-ed25519 onmXpg OHIlO+j2WYPOeNnZiQzH9uHL9ERpgmAXuy1pFF8i00Y -> ssh-ed25519 kdPvzQ fO2iL5QnWBxRFe88W488dkezFsMxJtMBc5GKACOZYjk
6x8w3js70/Uk9BJJ62eXjxIkjEMs6hIL6lrnk+YMW+Y NPa4r9t7lPt3mMgHjT6soAK/RWLUe70Lh5i7LwRYlgE
-> ssh-ed25519 CnhD0g EhEsiEqqpUuwmyrE2GIujh7sZf5/v7Ban5Lzx6sFOUY -> ssh-ed25519 onmXpg 9N98xltPTCAb42chNAOb4hYr7equq0lk9nTqol3EKXU
t9rI2DwfK8HRkSmGHsWMX+trPekWRRbLWQt/CFqwUCQ tdQ7FSABTifm9sHKzOVFyoEbOjS9TYS7DPsFrBqmnLo
-> ssh-ed25519 4ep2UA DsFQi2CtVrLPUdC4ReFKWIXDFsGoBXGjyFYKSHkGjiY -> ssh-ed25519 CnhD0g 1oi9mdmL6ODCgi3pWGKEqU/QN/v41XQg7nUZiu5frWw
M/cGbVkMhKrTkPl5cMV64MyI4tHrhPcW5hgeys3Tphk zXOUj1z6Z6DKyWr2ZqyFFZGNwKkz3NdyEUqWpnl1xI0
--- or7WlSQMXGKm4n9gglHmDGy05/fieyJcU4ytHyqHWeI -> ssh-ed25519 4ep2UA RKc7+piJY2Fh4NnZGvEuAzJIMxr9NBQQBSMj3xQqrSc
Ñ rèMIqTd¿oŸ BX.%µ£Òµ¦Åv µL> %â"¯ÆæYxK²ÝÁÁ}s8ñM„9eŸ²NñË␍>&£?’“I(\ KB~ùù3ØôZ鼃µ$Wıu•±€`‚€+Ùvˆieâü¼ÀÎÂÀÈ) =®²99›ú_pHŸñçP×ÅAnOÄÄõc«FÌî½R±ƒ)Ò_Ûd®ÈÞ(ûÖ%^S’ÊŽï¸õãX@ã,c«Ô¼ç Tþ§CkúõÆ yqLK6nR4b46QPwnH9DuZ5spzIu8fQMAxmLYNtj5jAu4
öQˆ8Íp0~RˆÕh±‡ªaïƒlš¬À)Œ"\LŠ-.©?à±DÄ®)/'W¸®Ô`iþé©´ª@%™UAÏûó[ --- R87vMnH5oLHLJgD7rCGZwz6dpc/a0kpm/fi28jqVcT8
\_UvF9‘ˆ±gøË2Ä®Ôbá/0=íOÙµò´``lú©žµ^2&…àâWëñº‰W§¼
Pc,™häZO'kÒ2f'hB©ºp>¯l\M§¤;‰òouFü ë…œ¥X)P!hÂRo]¬Ø† Ù/{—¶6Ä•÷ƒt»¢¶Á<Þ$6tá[6ÑüAéaó7œÙ–òúhiç«d´Y-jëº »_ý)£“Ò‘b˜˜ƒpÉ ªÙ9Hå»\HBÂ6dß(}ˆ…~¨¦íåèq¡x5P{x…@ü°GE0x&0ðYÐÆgó¤¿4•—±z‡•n•! Ù¿ªðòˆÍÐ{ú9
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+38 -37
View File
@@ -1,38 +1,39 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg iCgUGB5ce7TRS5Cm7+ROuxs4Rc4LXGsIEFFRd3Is+DQ -> ssh-ed25519 87huqg dA1cGGZS6hZzglVHlyxZA6HAGBtZfXYHedZLebiJuxk
95deqc2X7cXJOkBAJOu6mdk/gf4g0mOV41vWupQmRIo 9jOUxFha5O0lOo/p09thxSrGBeABTiAtc9caKRCXvSs
-> ssh-ed25519 8UnW5Q QTtK5n/dtnm5JzzeNrxh1JmvnVQMgu2Wz1G6MAq3LCk -> ssh-ed25519 8UnW5Q sT/26ON89MZLDFoMec531z4jvN4zcwtocwKpsy1agm8
WAIkKpMJLYMATfHCyj0AJVzTPnAlMGqqirn83NLXVeY 5lm9F/vDdN0do3Q02VYofWbXVv3v+POcVKe6hQBg4oM
-> ssh-ed25519 UFfTmg t+Deer+hgn2+45pkjuzW+hzJRocLdTSwZpbVRSrSeHA -> ssh-ed25519 UFfTmg mBEIRRxLahorqsYdWRfLKG3Atb0+ks3UPTLZbN/p9Qs
2Gb9IEKRPmSwE/lWS/lwQszl+y2YsiO7wIv21h2wXnw DMGHYSpSQG+rhg0wB0MUJBVARCcu3fIPodQxEO/glXY
-> ssh-ed25519 xNtnoA 4pov/sXP+HqiW3T6/kmOtOPlsmUGEScRRTq/ajvVGV4 -> ssh-ed25519 KbVVUw Pbn4kkRR1xiVeGlHqNR3oHCpqVpftztRyyTRI7jbQDs
eVXJAcNQ5JoFC9lZF8vtmLfGUiUqWUouvQSaMFpYGS0 4Ep3S6WUDXipUdmxuWdZJGy20HWR8MeJ0qG92dkVqRo
-> ssh-ed25519 aY2AXA FPATcHTZrjb709XkHJp6iqYQYtr0DECYHQiqM1jH71g -> ssh-ed25519 xNtnoA tqndUQdkCW7dc/tCVRNwC1953WC8/25J+CuNz7iFXy0
cLK2Fm7oDL6L2BBH5Gnoy3pn3bEJIIoAczYefN6+Dk4 jkiSMT9RSIkhyypkhMtKMDAaZcEOfuOs8PN+Fm5RJho
-> ssh-ed25519 AQhf1g XQfu4fJWgrdr7rm1kWVGq44wWTMa2ihE1XDi3etugxI -> ssh-ed25519 aY2AXA 8c4P/cE9ISbxW1h8j9eMSJ1+Y8mId5AMj6KVW90bHTc
4utpAuup+QisLRX62TiwjzkDxWRQ1OCX6JAdVXRTC8w Mn7nW8NRF+a/6d+Lv4RlxEkyH4GZnQjo+IrZQpjPscw
-> ssh-ed25519 mOmPfg DkI63znwJU3S1gjsSu++DZwV6ESAJ2gOroj2JgEToUI -> ssh-ed25519 AQhf1g yGuKYOPodxketnWOUwwsec93545XHR77DdBcSt0nQh4
9gxNErI/wYffYOno/1s5tTDj8qrFOUOfM2BHR/p8am4 78/c4+H8hGJFBkG+jHfL20W2rUSO6QeWR1s1YG9rEUE
-> ssh-ed25519 YJiRbw X2PJfMTDs6kQ+pecTkVATjtm5kzGNs0hKuM01GqzBVw -> ssh-ed25519 mOmPfg U+17chXPF1QtSBBS7KIZS2ye63ZnKd55CLspwRmVSig
pp5IZxmsNI8DaYyETCPz72BHdamsmT9e/0HH6M59kOA nje/FT7zkwDr9/gEzyd5oFBpZ4XmmPbJq0u24eUhHeY
-> ssh-ed25519 0/WsKg sYiDJlriTlNsDiE/pJx62UVmaiuB4TLuhMJ034PKUgA -> ssh-ed25519 YJiRbw z1WWdaDEbV46mo1s7c5COi8nsse9G7kZP82+ON8WznM
jv7IHgZBEBSslBfN0AbiEc7BzFAogvLLzt2zLD3IlRs 1sj1t9sM//HcTdaDJDG+sIz55jJ995qVtuE5v83q37M
-> ssh-ed25519 Nl/5yA kFZMA1SVQI2X5S2aXjnQMFZ2C/meQxb5Lte56Cgq5D0 -> ssh-ed25519 Nl/5yA kZzDe+hZVtexOK2cWp+xC+avuzOTVhw++MkfdQ/1wjY
FtlS4Y2cEkLuMJ8WNSh93S9GougZaIQrx+mFht2VKg4 XMfktagqBs1UE4iVPPx2rM3SnPns27m4KtqldWVFj+A
-> ssh-ed25519 GdLgCQ pe/bkOigydEzsrqu+Oq5YIHT0T09VZwSYEEMPEwTTVw -> ssh-ed25519 GdLgCQ CDa6LXTJhViLliv5wOTxlh1bKVVdhW08cSFggxQAdA4
iqSeqHCuJ1Nz9cylReoHpHZGKIiX+eCRK5K4x3Lm5XU YzaJCQw5Bnh2buHVTFLCmgQ2+xta5BHvR08gwOxE4Lc
-> ssh-ed25519 tOH/HQ HY+keQnvJe7RsG9/fCNKwgEpOvSg7WsmkI5KUwaMvn8 -> ssh-ed25519 tOH/HQ 4YF1ffsWDtKw/7A17kmFOVukG9K5jGL3gzVye0FzZ3c
YiJNm2UHF9xOlmU8JR5qL+/IhmVOmRx/ZvRYLky+baU BODYure5YmXASU5XhlfeksA4VqsKaKNp6Q0laeJ3z8s
-> ssh-ed25519 FpzvfQ OJUnmvwDnsLGdlXFuhWvpR4GAUBG8OHHNIAHPOLi+Ao -> ssh-ed25519 FpzvfQ H+dvG6G/fEDsLqHoHW4G8c0RSPooRhRgWUzL+5igAkM
ADIq39poY1hwe9OqvwMvwy/yuXTZsgdWfwRfTEUgJDk BFe1mOGLLURn0I0LHjw4Zue+3s6Ta+GA9vCj+ZNSGpM
-> ssh-ed25519 kdPvzQ W8njxBXDY6IAzwpduheN8oCQo9WBUuFCwPB15wbLDiM -> ssh-ed25519 2UotMw lSaXW+ve24TZnJf0RXdLEJ4FfGiYNZ67LqfkrUWo8Cw
wKeT83JqP4OqzDWzAZXfOnQouuMSMgHZyHvD0EgQNNk 45ZTeg1Y1P/DOa/yAbtrTLwNA897X9iuN3ZP/q0/rM0
-> ssh-ed25519 onmXpg k3DbEOOt17SYDvExM+3CpBAfepCPKAYz//4xHEkGSi0 -> ssh-ed25519 kdPvzQ XVaKM5korb9tfFDIYs4ueREKcw8U3VGRonwp/QmLK2E
kmn3tBnfmzRcNCn/bsWM5hTlgymBE+gVwn70UTOmztM RacYxiFK1vhTbJyfm0ffHxAq+JGFa9A5WtHWQ4iOEKg
-> ssh-ed25519 CnhD0g jCWQ/TzgDBXzQGVa7y+OFGamymNFQGYGRLEi6vYyJy0 -> ssh-ed25519 onmXpg apxJc3hLsgsudKiXwvXE59FDMW9H8qXtlRcdhqVvzxo
49hU8S/thJ56pQrT8pYN16FSMN589CYeTFumVuXYze8 5RYr4G2YSLLSQKpgaB3g1HkcD7Xv+1Q2XKRp4SGKv5c
-> ssh-ed25519 4ep2UA fY4fefeCcrRv90sudPnyQ2k9EKeoYOIKCjzd5n+B5wU -> ssh-ed25519 CnhD0g iiUwUS6wpQTXCL0qR2nUzkuG9bytZoQGI+0Xhq5O/VE
IYs/RtzBzDQVSffyWk3FxR2NbRTOthtZRCoxik0H0Z0 OLhhRnnAJATapn2WGr9UepY62D6DjCaoprZqMAiisBs
--- 5XoWoRuBZkC+4WE1lzTwVlwj2XoFOfB/fEmzRWb0+MY -> ssh-ed25519 4ep2UA WOSiDKxTlL97otLBmox6lvMabltrvUy8IqNsNQOCDAA
+]ÇÉyw aÚ»Ke¡üq9o m^x¶Aüíù˜Ó 4CY2Gq4E7iLbeqMup8mQEdOiOEbE9mWHNtwsaOOFWj0
q‘ù¿)0&ìO}§V“\4jÌþ-êu;z“3ïû+ˆ|P\jÿ␍fŸ»9—l --- ULVOLUkx4Hzk0DLOpFgD3ypoU+vv90TnWTIaPNWxyUk
˜iTSBý¥#õÛO×·Q¨Ödzia¸ÏjƒX ‡[dù†z¤å¢>AáúŽ*Ocîß…P°AErÐs“ø³YeföÛãœÌïÉÑù
+38 -37
View File
@@ -1,38 +1,39 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 87huqg A6H5BG0J9CcPatDKkraXHy+RSdgxtEH/jAaBMJrOT3o -> ssh-ed25519 87huqg wEnsPg/GBsOZp/g5+Wt5U86tA3LCSuuvqK3YKU22wgg
67qMA+bupmSdVl3n/Htt0F2DbCjoaHXazrFz5DQNqUQ 8H1eScTy08OWQ3Wm70UwpXkxQEJV//DDnKXO1Tsy3x8
-> ssh-ed25519 8UnW5Q rw5VvXm+g+clTmHSEruaUhZBxCjtdEoFxZtnDNH3kEQ -> ssh-ed25519 8UnW5Q 9McAlT3KjxwW4uA8JLW/IZ95NtyU8MB5XSzwJi00D08
uyHJMFUC164ggrAoU19kHisWRLxuKke73a5aYArSwCk jsJkSSVLMAhBrTSyjKg7q+ez6PnKdYP0GIOTG+BX6q8
-> ssh-ed25519 UFfTmg Yby4BvS1V+Rh75Y3blU6c94G4pzrc2B1AiXkz/GdHXs -> ssh-ed25519 UFfTmg HxnyFdoHZMYBD+RZqTCGnzVv0y6KlHdvV5obWrzzzkc
Q9J5HrXkuPmpEh8s28Sx+lM0sR+soekQ22g7ri9eu6w l9LCV/K18AwxfNIaMDc3ES7TZgHzBpMwPaHY6Mpwxtc
-> ssh-ed25519 xNtnoA zUICmSlbcLHf8fUW2yZMqwtVVoM62K3X8iq32DNVpR0 -> ssh-ed25519 KbVVUw cZ7aPpgdgNGg7tAmV8efvkMgVDUIyqZjc/WQMkv52Bg
FawGMjW+sjkYZFGOvXft2Is/1Y4eCBq0IZxVaq06rO4 td9LF8Pp4dhz8coW/DWBdBgRkM6+FGbHzCqvrdbm9nE
-> ssh-ed25519 aY2AXA 1gQtbMWqdwlaH7vUBMukz61J3vuF8FR+xSxHaY6ON2k -> ssh-ed25519 xNtnoA 2Gvn1fR8ufGGBkl8u8WdIb1Lo/UxkKkUXwEzmKK/VSU
aocdKBkmsZ3J45Fyy1jFovWW8Rh9tQL+AvWBH5C3dW8 s/4U7eALr0f8Yqk5SN5O2z0eZz8PslFZ7ikbmngvSX8
-> ssh-ed25519 AQhf1g u9qN6jmuYK4KtkBFhOcIzxbpFCY1EkqMCYIYx6q/P08 -> ssh-ed25519 aY2AXA e6nGnQE0/UTqUX12blfWq4CpNe/QkEMnztWQHyHuxjc
KtvwX3NN6HMc5lOMphqddXEjhuK4rUrFJ3nO8TJxJTg OdUQMd5+x/x6NAs0nbtr9pM7q+nF8ZybZBJD7mNNcg0
-> ssh-ed25519 mOmPfg oB/4Gy5dWL7EJLwIDLMr4+K2oUlgUIWBy/g7Yx8QyyM -> ssh-ed25519 AQhf1g qvmETHVucAF76fq+UkRyoK0Kw+nYVu18jn12ragg1T0
ZfIjUqOell70m8FJYSNKaLweU+jXtNXafeZ0mktVkac XEhKDlikdstmSSZOKs1Zhkm2XhtW19F4k+H+cKIvjzM
-> ssh-ed25519 YJiRbw 53FFjal/MjaqaVT3rNqNlmKVKc/P+lp64gW++C4GkxY -> ssh-ed25519 mOmPfg Qb/Yfy6jl10V0wTr/61/GbbYhkBciOx1ryYvzyTBpRo
Tu19fCXb/JMXuPqya6GNf1E45c6CmvAe51yFoSiXHMU kHMnWdDA02C7rAyJ11JMbmJaCjKkj1fBXZqJdGES+IY
-> ssh-ed25519 0/WsKg TrIDepX4dHixH4AwWaOnwjcHO9RVAqlqwBdr5MlQlmE -> ssh-ed25519 YJiRbw m58K4+oJ8ike/v8bhpGveQF6UxEBTuqjiM5UpRZUpV8
MWUCyLN0YWVXg7VD7vvSYTGdmzm/TBx9fHHffb5OjWU Cq1BpdnViOmd0JwdZf2gBB2vpcafm54FIaZWOhviP6s
-> ssh-ed25519 Nl/5yA aRu6l7Vib4imh9LqQKhoTA33KF5siMIlmK5DktnKJDc -> ssh-ed25519 Nl/5yA tNzmgsTG7d5xRhX6j5iwEnxtLYz8gJQmMWzBSOqaxwQ
qJeB4YB9Sdm+9NTBwueFLCnbhdi4N6O+ELTVGbJDvz8 WuYPgCAxhsHvXKty0dncAl9ejqF1b9ZHSFqtmOEDQAU
-> ssh-ed25519 GdLgCQ f93Q/At6T7Vt827F7ytV1bxZEOLtLZFUavsIaeW3agg -> ssh-ed25519 GdLgCQ gyuGdMzsShKl1TPOt6IrJYJ383CCK33+BXo3sELKvkc
xoChxHLnyEQs1T5ZnuotnwyyMZlZh4PJceOX+tmHAiI m02EYJ47DcH5wK+eDcvs5yyTwsH6cT8rWbf1BoGemQ8
-> ssh-ed25519 tOH/HQ jFZTM/OQpLUXZT4ENX+1Qq9iVJXXpEY+rfLpXJvM5Dk -> ssh-ed25519 tOH/HQ EpuIe55eq9FvBnygY1gn9o+MSU0AjxDHeIPwqGWAkDQ
f3ZC7CbikEQpBwZcqYfhBIws4up3ZmMk/2mOS/Rf2vg pypq4SL/0311MvwkilKPAI9Ho1gvOjsohnDwe4pDKPQ
-> ssh-ed25519 FpzvfQ rxuFxwpguxrqUBe10asuNe33Xg6Ebdoh9oNZdz3fqCo -> ssh-ed25519 FpzvfQ EY3I/fZxRn9qxZz5KmXjf5MDfXt9lhMmsj9ZW3nTdBE
MfEGIDV2nsX/MhUFEQDbLsWywFLHrk65gbbMVVPdJ/0 ktSKonkZwKcC7zvkddr8B0bg4M4pkeuukKOuZz9YauU
-> ssh-ed25519 kdPvzQ SdjtFcZ2kzuBSDOF/I6m+e/R/sJdf1gst9AYOpefDVw -> ssh-ed25519 2UotMw P+I74r2Z6TKpTehCrstz8bvG2sWPDmcKLYOwS20Smgo
G0+6qeS8QKHvWKbZjOv6+6lR324OVdAo31kTZJ1baC0 zOGqtVouwCOiMi/D+XjitWtQGdRrfrJw3cYU5v30Kb4
-> ssh-ed25519 onmXpg x3F8aAlT9ndzfeWqiOz6HX0Zs9kNIP4sW7mE+caJQmg -> ssh-ed25519 kdPvzQ JdHJ0HiJUO7h+fx86QJQvlwoLWjr1SWLll+sBHfmmic
bz+YEEnu/ETBhqBTZiLRyVnSX1SRJkfWSmrEx2Tzqgc tQQ+MEKgwYl/Ms76B1cPl8AA2HlrXqbF4cLmBdHBbck
-> ssh-ed25519 CnhD0g fNddA6YIHeuKUVFaAkwU9f/rSfYzQXPuw7QbhQD4YFQ -> ssh-ed25519 onmXpg KXbZQecpbZQLB/4slZl3hqOXldgyqHADIy6OkdnHbTA
4Vq9uwumfzpgMxtvmxt73EPkkqrhS2qApaJZoQwUEDM GltoWSI3qht8w6Bb90K27qJdW/fB5GflCLQlnu9ffkc
-> ssh-ed25519 4ep2UA MslFSRrk0185JfNOhRYkJH+GMtKIg4gEcsdsT6CBAX4 -> ssh-ed25519 CnhD0g wpoGeyLxBfk8tJkJSwWnFXhFLXrU4ezFaxWGVrnPIgI
Ta+Wz13G2NOcdJ7qxZHqBYiDz9fU+ax++BTPSEi6ZVQ RVAJ8njeIBbQtHNM0hslbD8ft9VuRlqcSyyKRN9cxjA
--- E31e3DZgEDqDTnYzMI/Pbh1pyQT16bWTzYz3XZY0LsI -> ssh-ed25519 4ep2UA Ydu1eNy1WiHw8bRwMQc29UsN6l0Kvs0MknyeNnDx4z0
\™l—`]yɺâY-‰g£‰ RjvAAe5nOkCHrZXn0u94NA7jWcNC9xAu9aly9tQC0q4
E»ÊÓ~oÜEåŽÍÓGo« ø/ܧXg<.Oº €<ƒúÙ °Øû ¢ƒC½cûÎðô©UËB( --- ZVJux6CJ52ghYaSl16+PH5uUQqk0T+VkMVDOHO7HKMI
¸ÐŽÕ%T–7]õ3¢¼D¼î·V!#NUžî~¸2·Ãc1duÁ6,¾Ÿ¿QDDDŸ{ß'êÉÕlý¯ïñx÷%JÏ +kõyiÝa
Binary file not shown.
-37
View File
@@ -1,37 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 87huqg Eh2E7tXjZj6ydDOSsFD8UKMjSjLWW6YZg/5bzcdMaSU
0vXZ9AGU3N8Jbep6TRijGKoo89jK0yauG1LmErtdT70
-> ssh-ed25519 8UnW5Q UxbfpTqUcjkdevd0WwFtUxifEtDvedj8l+V2wFVjThw
6aYQDmzFj1fin7G7e0cUCn55PBU8bDolkw4l+5A25qY
-> ssh-ed25519 UFfTmg Dfm/r13wimRQT2hQSWKhyr14BZliLrLGn/sZq3G3yTY
qzZLiowHu+HnSY31yXBOFPEYn2lJSJ5MyWvKSe2QZcI
-> ssh-ed25519 xNtnoA AltIha0Z9BqZY4V8LOzCcr5KPWAvoNoyktReER3Glgs
ac51BT1NGldAn6N/s7KEkNrRLhmntwx09SguGdZRR5o
-> ssh-ed25519 aY2AXA EmE9Bjzme13LSSMZDnJsPFvpXGamtc/H3DOziP+d+Cg
VN5z1+EzLF6N232QwkO5TT5Kf9NpoPDL2T50qCpCfgc
-> ssh-ed25519 AQhf1g Z3Ezie7ikLb/8u+iNALI8x327lFqLN1NRIqHLfjqNFs
QQDDH6Dio4zc0FCsLDRWl3ywaEdkp4zwGG+Iaegmi3I
-> ssh-ed25519 mOmPfg mSW3OSIm9/8myqUxEJlsf0LT7vCO9i6/D3WkWKCD7l4
U6TkEVyzxnb+9B2wLeEkQ4g6w5s31Q30/Q4ehQplf3c
-> ssh-ed25519 YJiRbw Gs9VBwzEPr1QA1PcaQUCUwS+jwXYVniqe5TaZBjrJmQ
rFS24MN8bzA+vj6/sJHuEC4yYglpf0OJT0GgUVm0HTs
-> ssh-ed25519 0/WsKg MbcckXyUg5JfGafnhidk4dH6mEuhZOPac4YncYeYOR4
oeFwgCrjDPauQSCgE1Q1/Smz6SI44TVfuNH0oP9WcdM
-> ssh-ed25519 Nl/5yA 9xL4/5nxpciN9HFFO/X3xQ1oMe+EvLohnI6631amwhw
n4As363EPOxuzN5f5RNuUrlEDFgmhVvjtEosQKTPVII
-> ssh-ed25519 GdLgCQ P+jwMHdoS74jIdGQjOx4sDngWs+zxNpnzSgrDXD7Vkk
NuGd8agrw/8PT+dw9RirCYATZRPnF5rKDSfyDaJ17iw
-> ssh-ed25519 tOH/HQ u7gM8oYWpfFFW54TqoisGDEeX5MKxaVxT+ozl4miF0I
avmdzbzCSDv4ovYMMmqx//G5FVEuz+hOJpr9/49w1Rk
-> ssh-ed25519 FpzvfQ 3bDfVBMNavjfMFaKO8C5VvXiDMQxfB4WYp9mJ1LnIQI
bl1KwNL5M8gJlqE/R5/lY7UlLOgeftiwinyC8yDb71A
-> ssh-ed25519 kdPvzQ 2Y9lCbnjBhF3N0BTzhBqxJ/NDe7Z9/Vpkd8bbL29D0k
pL4VMb6jnQv4bwt5SjcORlTWsvSWOhTNZXNYEkCZH5E
-> ssh-ed25519 onmXpg 2Nw16oXRct8XDRqs6TRiOK6tBk9kNZcR2VDLy9GvOkM
N95+6Ia9lpbKenojMDDAuLrT4cqjENsWzrwplcBKiUs
-> ssh-ed25519 CnhD0g j7udTMCoQHrqYnH/mxGgRzor7RaTm2HjaSwuoVQqCGw
ivg32RGKKCqe2yBjq58ym8shWlrYNfcvuK7xy1F2mmg
-> ssh-ed25519 4ep2UA bBdPC5asgGcu60Y/i0yVKvAQc9U+7Jruik0xT8rDUA0
ul6uiMBstdXVVmuIpgsZPSt6MQiyklPGYSbxOTLndeQ
--- 5mAFqAG9hgU00QxYRKkhNl3fJ1KwDevvTnUhf0xYUog
TW" ȧ]h|nÁdÇ„Œô¡QFWv¬à©»®¨oµiÅZÂSŸŽ‡ÑG–í`|Д "¬ó8n}:Î:ú6”
-37
View File
@@ -1,37 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 87huqg KMaYb+ubBiCqBKr08lmrIhiuNcvH/WnnEDYYvdgnvgk
lJM8dGwT3LYvI9NtPZOzY94bFhk6sxO6F4NCMJBDBuA
-> ssh-ed25519 8UnW5Q rUXfXe6S1jgTfJJGhT3NfIGhvYaf4aUAuD7wAa5GaxU
OCe5kE+IM1MHqMPfLpgO5spYxDm1SDp5euubLkOF6K4
-> ssh-ed25519 UFfTmg 8ZIBc9wr/hoQE/ItltZhSbqlZ3qEQMyLajy0cORbOQo
DocUbgXT5m8CgExF1ICAJv+Nu4rBogwaYz5vJKNRQhs
-> ssh-ed25519 xNtnoA x0uU0K78XzA9yYXg+jR6MIJASRxsJ9eMZctm276tP08
SGZYFFkfbQpLVqV9OUQMMbOmv+0qNS3bO7IkWWjqohE
-> ssh-ed25519 aY2AXA D5xP6cDYNLUsGeLgLO2x2gkBzfPByR58G2PjjGs/rxA
wiqNVVjyQPnZop7q0PXmOOw7cJr8WKQVl1mk7zL+/cM
-> ssh-ed25519 AQhf1g MJuVLCVIdZ7fKnXVvtJvSLriX1Q+2u20Y+aNI7N75hM
EocXr6NlaanErb3Nmc9R+3DSdfoCAyHa5gDYzBX+xJk
-> ssh-ed25519 mOmPfg wbQrmVm8CEeAHpJIjCyFI7Mfhn3i9bER7FppanAneTQ
jAvjziCLYUl//6ZlZ5d3gE1ONRjhEnPLTabvTJEhFg4
-> ssh-ed25519 YJiRbw 6ZAb7+mWKPCkYZrpcW1g1JoL9Q72rWwLIEZJtPx4ayY
WtKeYr7wxCVisATDyejwnasFcVRtGa175wJoXNzhyKk
-> ssh-ed25519 0/WsKg yyQBUeYAFIJUuH6xsMYztjO8zeswUWFCgqiNoMqxijY
y5azJJfyU9NgyY8kuIoWRfY1kMJUzgxx8UtqJ3XBNvI
-> ssh-ed25519 Nl/5yA Ffb3McX/NVo56cJXA51n9yrpeSTvD5/0S9n7ObeYrXA
Wg1EhU0nk/Wh3Jf3+LY6dVLXBNbAM8miuC8gYdabIwY
-> ssh-ed25519 GdLgCQ x/k3xO9fHAPFeOdeAwgWVNqWtU9u6RVXXNUnhUXk1B8
aNeOSmnUILJTjof6+7sN8h2zA+pqBmU6cpmD81xcmtw
-> ssh-ed25519 tOH/HQ ZEBu38T0q6tZkZSZIbGc3Kn9acTGqSbquPC6xlXt90o
LPvS9dVaPUiE5nxVV8LsAjfRdyKBNmCwGTxOcyCxWMA
-> ssh-ed25519 FpzvfQ iU+7myrJIbc+xbVZf7OxGSBy7Vq+FqItVYECvrvV7V4
YkMvBRDnkGf+zznWTVSbFbR/2BaqOT1ja7piiyRL+uM
-> ssh-ed25519 kdPvzQ cuzIgrPaJK1SY4soXT2lQkF8Ji7GZq+ihH2vYmbyDXY
E7cA3PDHBsqm7Z9SbflHXQXMzv7B0uxYR4UQv9NHZ70
-> ssh-ed25519 onmXpg aNcwAfrg7CfnC9Whp/qjikADbZzeSVM0m+kLkjExg1A
1RWx1F4Q6zA91UHxBmvuxqABv+mZZwNayAVAz0EqGQg
-> ssh-ed25519 CnhD0g LrFzQX5UKZAizqYkDCT/k6CWdFZYFqPguyLjgfcfQ2U
O7Ta5mpAcLI2XswerqtW2fC0evmy/gdSQqLgW7L99zo
-> ssh-ed25519 4ep2UA 8B0v6mE+hB0iKaZNrkvdlI4E2y4lWNR4zJ8oJS75jR0
l5M6WSWKGuHMCiL5V5PCyDfFCElGNmR5UIkXRivSl5Y
--- 1PM/nhbi3rtn26S1rtNwUT97plbJJvHOmPNzIYAsK4w
W'SàeÚäß>pÎ_­Çª´vcHN›×9¥Å¡àè 6L,_ž[3Ì␍_ìaØí¬¤Õ¦‚>¶¯D0Þ„lô‡F4.Ó’‰µ5±:úà0ò±É
Binary file not shown.
-37
View File
@@ -1,37 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 87huqg 3CNYW4sCTBsHWQaRdsyRomLXQ5V9jjzV+V9vHcKtqjc
ZjGxC8Fqddlzmdd4uZxQWs9aAut+COJ9zWXZFQvRdG8
-> ssh-ed25519 8UnW5Q rgmZ4hwUDXX8VdQQWxZn5NO70j4IuJ1l9aD6uXjAWiE
SfmW+u09bGEP164j1awAoGpvchg9UZS7tgtSdLeepB8
-> ssh-ed25519 UFfTmg MPZCtrzXXzusawPkfZ+fBWepH7MZihKXlz9ztfp/bBU
RkLU9HPTJjyiaRczJU3sYMT0RT+oSvL3TozGRxOZM6s
-> ssh-ed25519 xNtnoA HqhyTh67Yww4wHVR9i5+K7388nvAYwkPr1T95Sn3WDk
entg7nxJXWqq+N0LMUwv+psL+O6ivZjnGo+KbgKthxM
-> ssh-ed25519 aY2AXA XTpM0SssYVVEtnWPCfooazXvVccdO4IX+Zmp7dxoDUY
mz6v4rzOpLT4fu+XYC5BwkXndNoBbEpazUt2wh0tutk
-> ssh-ed25519 AQhf1g bUAsCyBen89j8JqUV3qAVTZ5QrxluYOmUO7D68Sd50k
14ebyL+xFEK8NMBzxAArVaxCPZwBPLNBLdalC9TGB/I
-> ssh-ed25519 mOmPfg Mv+p2kGC4PunQGSVD28emoEDra/ohZHK/xxTQVhafTM
gUrUjDQCxMfgcjWkbGWmi1A2GF5X07pUKdZuuaXWdcE
-> ssh-ed25519 YJiRbw 0jxrJSU71zCnF1bDUieGOsc/TAeR9gv/1ks2kPN2sD0
yho+rheLys+ET7uKrrlsljQZQ8VuUnzg5eUj7gVMgAk
-> ssh-ed25519 0/WsKg yxsm0H6tRCron9th/e9KfX+zFl5T3DH0/B602ak0s28
kkmfbZ1SyXLJxlM/EeBRJEf0Rb+15w3nXZEZ35xuCug
-> ssh-ed25519 Nl/5yA IoFwKIz+jrNUm4PB3wX5okeqtPKANPP+/lcZaJ+mZ00
0ChPqTpzLCCz7die5lgOnO+Yz8JQIqjTX5oLwXv/IbU
-> ssh-ed25519 GdLgCQ Fo9YJGiJMTpnhRQKd2cQ7XfQXLvOQ8+V5rlZvqOhWgQ
Lhie4dV3210DbNvbkBWFStgycrH3xgE3tt5PYF0OjEU
-> ssh-ed25519 tOH/HQ 7BXNJ/wYMc9HIswKCTkXQF42UXKXCCqcD7/RQINx5g0
G2HbqhnEuoCGmuowye/EWQJ1UWojp1cFLoyu6b5AaGA
-> ssh-ed25519 FpzvfQ l5jORObNye/4CGt9D0pkP7CAqhWZPPlEhCSmuc5JxVE
5P/S8vQEzlYgXcM+TxlQnlyO6fK0lUkxBElfTZ8dR14
-> ssh-ed25519 kdPvzQ rbwguFPeDqBJye6fzNAR+zqo3vA13o8VBqTDMtq/xF0
0wjGYDkSgeB1H4GvjFfM5HIxCFs1s6R/6US0TFv/o0I
-> ssh-ed25519 onmXpg GB5Hi8wAOxRaoyzcDuHK96+JNd/zfBdmR6oJdpYkmi8
svDcX5tYRR8IzuQi36TpxqKu/vKiDj290e1Hx/RoBAs
-> ssh-ed25519 CnhD0g 4vM1+uQTV/dYAbYP7Nsj9DZFjFVc1yFqNzKxWyz1OWQ
G7ifv77YIefxMqK1vSEzxPCxQaf8Sd2cdpyoy3DxGZg
-> ssh-ed25519 4ep2UA V+2q8xrX8eAQzuNV8Se/BUtut4EbkRsy/svnbRVO1TM
WYJTqLxIqFC3a4z3UtMp4z7CAXEZ2NJUGzxftIvgoeQ
--- t27r1Bedv2MW11oCtfWXl0ijG9/aiiWMdEbgymIqdSY
§66^¹‹§ÌVUÃuï6°â$ ÜQ[a²UW*©Ò&s9Iª23HœR÷ÖOJŠüÒ§É)CXeRýŽXi¾6yØB:b<tWÓ­¹nÀ>\+ûî
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

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