restic: Rename option resticBackups to restic.backups

This commit is contained in:
SebastianStork 2025-10-23 20:21:37 +02:00
parent 9ec0c676be
commit ba78828f4f
Signed by: SebastianStork
SSH key fingerprint: SHA256:tRrGdjYOwgHxpSc/wTOZQZEjxcb15P0tyXRsbAfd+2Q
10 changed files with 17 additions and 17 deletions

View file

@ -0,0 +1,57 @@
{
config,
pkgs,
lib,
...
}:
let
backupsWithRestoreCommand =
config.custom.services.restic.backups
|> lib.filterAttrs (_: value: value.enable)
|> lib.filterAttrs (_: value: value.restoreCommand.enable);
in
{
options.custom.services.restic.backups = lib.mkOption {
type = lib.types.attrsOf (
lib.types.submodule {
options.restoreCommand = {
enable = lib.mkEnableOption "" // {
default = true;
};
preRestore = lib.mkOption {
type = lib.types.str;
default = "";
};
postRestore = lib.mkOption {
type = lib.types.str;
default = "";
};
};
}
);
};
config = {
environment.systemPackages =
backupsWithRestoreCommand
|> lib.mapAttrsToList (
name: value:
pkgs.writeShellApplication {
name = "restic-restore-${name}";
text =
let
inherit (value) conflictingService;
inherit (value.restoreCommand) preRestore postRestore;
hasconflictingService = conflictingService != null;
in
''
${lib.optionalString hasconflictingService "systemctl stop ${conflictingService}"}
${preRestore}
restic-${name} restore latest --target /
${postRestore}
${lib.optionalString hasconflictingService "systemctl start ${conflictingService}"}
'';
}
);
};
}