Fix restoring snapshot on boot
This commit is contained in:
parent
9a25143a9b
commit
0544defe93
7 changed files with 24 additions and 4 deletions
|
@ -42,6 +42,7 @@
|
||||||
zfs = {
|
zfs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
rootDataset = "zroot/local/root";
|
rootDataset = "zroot/local/root";
|
||||||
|
rootPool = "zroot";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
rootDataset = "rpool/local/root";
|
rootDataset = "rpool/local/root";
|
||||||
|
rootPool = "rpool";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
development = {
|
development = {
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
rootDataset = "zroot/local/root";
|
rootDataset = "zroot/local/root";
|
||||||
|
rootPool = "zroot";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
games = {
|
games = {
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
zfs = {
|
zfs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
rootDataset = "zroot/local/root";
|
rootDataset = "zroot/local/root";
|
||||||
|
rootPool = "zroot";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
rootDataset = "zroot/local/root";
|
rootDataset = "zroot/local/root";
|
||||||
|
rootPool = "zroot";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
config = lib.mkIf config.chvp.base.zfs.enable {
|
config = lib.mkIf config.chvp.base.zfs.enable {
|
||||||
|
@ -8,10 +8,22 @@
|
||||||
boot = {
|
boot = {
|
||||||
supportedFilesystems = [ "zfs" ];
|
supportedFilesystems = [ "zfs" ];
|
||||||
zfs.requestEncryptionCredentials = config.chvp.base.zfs.encrypted;
|
zfs.requestEncryptionCredentials = config.chvp.base.zfs.encrypted;
|
||||||
initrd.postDeviceCommands = lib.mkAfter ''
|
initrd.systemd = {
|
||||||
zfs rollback -r ${config.chvp.base.zfs.rootDataset}@blank
|
enable = true;
|
||||||
|
services.rollback = {
|
||||||
|
description = "Rollback root filesystem to a pristine state on boot";
|
||||||
|
wantedBy = [ "initrd.target" ];
|
||||||
|
after = [ "zfs-import-${config.chvp.base.zfs.rootPool}.service" ];
|
||||||
|
before = [ "sysroot.mount" ];
|
||||||
|
path = with pkgs; [ zfs ];
|
||||||
|
unitConfig.DefaultDependencies = "no";
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
script = ''
|
||||||
|
zfs rollback -r ${config.chvp.base.zfs.rootDataset}@blank && echo " >> >> rollback complete << <<"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
znapzend = {
|
znapzend = {
|
||||||
|
|
|
@ -45,5 +45,8 @@
|
||||||
rootDataset = lib.mkOption {
|
rootDataset = lib.mkOption {
|
||||||
example = "rpool/local/root";
|
example = "rpool/local/root";
|
||||||
};
|
};
|
||||||
|
rootPool = lib.mkOption {
|
||||||
|
example = "rpool";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue