feat(zfs): manage jeeves datasets declaratively from nix #47
Closed
Richie
wants to merge 2 commits from
feature/manage-jeeves-datasets-declaratively-from-nix into main
pull from: feature/manage-jeeves-datasets-declaratively-from-nix
merge into: Richie:main
Richie:main
Richie:automation/update-flake-lock
Richie:bugfix/fix-gitbub-runnets
Richie:feature/kanidm-setup
Richie:feature/building-metrics-and-logs-for-ha-proxy
Richie:feature/flake-update-10-16-26
Richie:feature/configuring-builders-for-x86-64-v3
Richie:feature/Implement-authentication-system-with-WebAuthn-and-password-fallback
Richie:feature/adding-tortoise
Richie:bugfix/fixing-update-flake-lock.yaml-permissions
Richie:feature/adding-qwen3.6-27b
Richie:update_flake_lock_action
Richie:feature/removing-brain_substituter.nix-from-bob
Richie:feature/creating-prompt_bench
Richie:claude/add-line-counter-tool-zaW28
Richie:feature/setting-up-bluesky-firehose
Richie:claude/sheet-music-ocr-mxml-4OGMU
Richie:feature/adding-congress-data-to-database
Richie:claude/improve-code-coverage-aW1aD
Richie:claude/implement-todo-item-w2KGe
Richie:feature/adding-open_webui-to-jeeves
Richie:feature/testing-unshare
Richie:bugfix/fixed-energy-out-integrations
Richie:feature/adding-fix_eval_warnings.yml
Richie:feature/building-safe_reboot
Richie:feature/fixing-jeeves-locked-linux-firmware-and-6.12.52
Richie:feature/adding-cool-tools
Richie:feature/adding-xf86_input_wacom
Richie:feature/adding-making-esphome-battery-more-stable
Richie:feature/linux-6.17
Richie:bugfix/added-math-the-jeeves
Richie:feature/improving-treefmt-action-debugging
Richie:feature/added-merge_group
Richie:feature/testing-merge_group
Richie:feature/removing-auto-update
Richie:feature/linux-6.15
Richie:feature/setting-up-unifi-video-archiving
Richie:feature/updating-system_tools
Richie:feature/decreasing-cloud-flair-usage
Richie:feature/creating-a-custom-installer-iso
Richie:feature/setting-up-mxr-deploment
Richie:feature/adding-system-for-brendan
Richie:feature/testing-microvm
Richie:feature/testing-cosmic
Richie:feature/building-nixos-based-router
Richie:feature/setting-up-transmission
Richie:feature/improving-muninns-bluetooth
Richie:intresting-error
Richie:feature/setting-up-keyFile-for-muninn
Richie:feature/setting-up-cleves-for-muninn
Richie:feature/testing-tang-and-clevis
Richie:feature/testing-nixos-router
Richie:updating-bobs-zfs-settings
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Add a zfs_manager module that reconciles the live datasets on jeeves
against a nix declaration, and generate the snapshot retention config
from that same declaration so the two can no longer drift apart.
systems/jeeves/datasets.nix declares every dataset on the media, storage
and scratch pools, nested the way zfs nests them and flattened into
pool/parent/child names. Values were transcribed from the live pools
rather than from scripts/zfs.sh, which had gone stale: acltype reads back
as posix, and media/secure/important, scratch/kestra and storage/nomad
were never recorded. root_pool datasets are declared for retention only,
their properties stay unmanaged for now.
python.tools.zfs_manager creates missing datasets and corrects drifted
properties, and never destroys anything. Undeclared properties are judged
by the zfs source field, so inherited and default values stay quiet while
locally set ones warn. Size values are normalised to bytes so that 16K and
16384 do not re-issue zfs set on every run.
vars.nix now derives its paths from the declared mountpoints instead of
repeating them, dropping three zfs_* keys that nothing referenced.
Replaces systems/jeeves/snapshot_config.toml, which listed a dataset that
does not exist and omitted thirteen that do.
ae18feb0fdtoaa552ecca1aa552ecca1to45479c7d3345479c7d33toef4ebc6cdfPull request closed