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:
parent
4e280aeb69
commit
098fd77b3e
@ -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" ];
|
||||||
|
@ -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
10
scripts/snaplink
Executable 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"
|
Loading…
Reference in New Issue
Block a user