add snaplink

I know snaplink should be put to the nix store, but currently I have no idea how to do it.
This commit is contained in:
Motiejus Jakštys 2023-01-05 13:23:29 +02:00
parent 4e280aeb69
commit 098fd77b3e
3 changed files with 14 additions and 0 deletions

View File

@ -85,6 +85,7 @@ let ssh_pubkeys = {
daily = 7; daily = 7;
autosnap = true; autosnap = true;
autoprune = true; autoprune = true;
post_snapshot_script = "/var/src/snaplink";
}; };
datasets."rpool/nixos/home".use_template = [ "prod" ]; datasets."rpool/nixos/home".use_template = [ "prod" ];
datasets."rpool/nixos/var".use_template = [ "prod" ]; datasets."rpool/nixos/var".use_template = [ "prod" ];

View File

@ -9,6 +9,9 @@ let
{ {
nixpkgs.symlink = "/root/.nix-defexpr/channels/nixos"; nixpkgs.symlink = "/root/.nix-defexpr/channels/nixos";
nixos-config.file = toString ./configuration.nix; nixos-config.file = toString ./configuration.nix;
# TODO: how to make this nix-managed?
snaplink.file = toString ./scripts/snaplink;
secrets.pass = { secrets.pass = {
dir = toString ./secrets; dir = toString ./secrets;
name = "hel1-a"; name = "hel1-a";

10
scripts/snaplink Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
_fatal() { >&2 echo "ERROR: $*"; exit 1; }
mountpoint=$(zfs list -H -t filesystem -o mountpoint "$SANOID_TARGET")
[[ -n "$mountpoint" ]] || _fatal "expected non-empty $SANOID_TARGET"
snap_path="$mountpoint/.zfs/snapshot/$SANOID_SNAPNAME"
[[ -d "$snap_path" ]] || _fatal "expected to find a directory in $snap_path"
link_path="$mountpoint/.snapshot-latest"
ln -sf "$snap_path" "$link_path"
>&2 printf "successfully created %s -> %s\n" "$link_path" "$snap_path"