Hi all,
Using nixos 23.05.
As I’m creating a lot of borgbackup jobs and I don’t want to have a very long .nix file (you know, the DRY thing…), I would like to create a nix function (or whatever else is most suited for my need) that:
- create a borgbackup job using
services.borgbackup.jobs.<jobname>
- add a
onFailure
property to the created systemd “borgbackup-job-${name}” service
This is what I’ve done so far:
{ pkgs, nixpkgs, ... }:
let
mkBackupJob = name: secret: paths: {
services.borgbackup.jobs."${name}" = {
paths = paths;
encryption = {
mode = "repokey";
passphrase = secret;
};
repo = "/data/borgbackup/repos/${name}";
extraInitArgs = "--make-parent-dirs";
startAt = "daily";
persistentTimer = true;
};
systemd.services."borgbackup-job-${name}".onFailure = [ "service-failure-notification@%i.service" ];
};
in
{
mkBackupJob "job1" "secret1" [ "/path1" "/path1.1" ];
mkBackupJob "job2" "secret2" [ "/path2" "/path2.1" ];
}
But I got this error:
[root@nixos:~]# nixos-rebuild switch
error: syntax error, unexpected '"', expecting '.' or '='
at /etc/nixos/borgbackup.nix:20:17:
19| {
20| mkBackupJob "job1" "secret1" [ "/path1" "/path1.1" ];
| ^
21| mkBackupJob "job2" "secret2" [ "/path2" "/path2.1" ];
(use '--show-trace' to show detailed location information)
building Nix...
I think I’m doing something wrong, in the sense that I’m not doing it the nix way to achieve what I want. But being new to nixos and nix, I must confess that I’m a bit lost in the nix documentation and I’m not yet used with nix patterns.
Any help will be appreciated.