summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/audio/spotifyd.nix1
-rw-r--r--nixos/modules/services/backup/borgmatic.nix57
3 files changed, 59 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 9bb81d085c95..f226194efd56 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -242,6 +242,7 @@
./services/backup/automysqlbackup.nix
./services/backup/bacula.nix
./services/backup/borgbackup.nix
+ ./services/backup/borgmatic.nix
./services/backup/duplicati.nix
./services/backup/duplicity.nix
./services/backup/mysql-backup.nix
diff --git a/nixos/modules/services/audio/spotifyd.nix b/nixos/modules/services/audio/spotifyd.nix
index a589153248fe..9279a03aed4e 100644
--- a/nixos/modules/services/audio/spotifyd.nix
+++ b/nixos/modules/services/audio/spotifyd.nix
@@ -27,6 +27,7 @@ in
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" "sound.target" ];
description = "spotifyd, a Spotify playing daemon";
+ environment.SHELL = "/bin/sh";
serviceConfig = {
ExecStart = "${pkgs.spotifyd}/bin/spotifyd --no-daemon --cache-path /var/cache/spotifyd --config-path ${spotifydConf}";
Restart = "always";
diff --git a/nixos/modules/services/backup/borgmatic.nix b/nixos/modules/services/backup/borgmatic.nix
new file mode 100644
index 000000000000..5e5c0bbeccca
--- /dev/null
+++ b/nixos/modules/services/backup/borgmatic.nix
@@ -0,0 +1,57 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.services.borgmatic;
+ cfgfile = pkgs.writeText "config.yaml" (builtins.toJSON cfg.settings);
+in {
+ options.services.borgmatic = {
+ enable = mkEnableOption "borgmatic";
+
+ settings = mkOption {
+ description = ''
+ See https://torsion.org/borgmatic/docs/reference/configuration/
+ '';
+ type = types.submodule {
+ freeformType = with lib.types; attrsOf anything;
+ options.location = {
+ source_directories = mkOption {
+ type = types.listOf types.str;
+ description = ''
+ List of source directories to backup (required). Globs and
+ tildes are expanded.
+ '';
+ example = [ "/home" "/etc" "/var/log/syslog*" ];
+ };
+ repositories = mkOption {
+ type = types.listOf types.str;
+ description = ''
+ Paths to local or remote repositories (required). Tildes are
+ expanded. Multiple repositories are backed up to in
+ sequence. Borg placeholders can be used. See the output of
+ "borg help placeholders" for details. See ssh_command for
+ SSH options like identity file or port. If systemd service
+ is used, then add local repository paths in the systemd
+ service file to the ReadWritePaths list.
+ '';
+ example = [
+ "user@backupserver:sourcehostname.borg"
+ "user@backupserver:{fqdn}"
+ ];
+ };
+ };
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+
+ environment.systemPackages = [ pkgs.borgmatic ];
+
+ environment.etc."borgmatic/config.yaml".source = cfgfile;
+
+ systemd.packages = [ pkgs.borgmatic ];
+
+ };
+}