Avoid repetition of variables and keywords

This commit is contained in:
SebastianStork 2024-09-18 21:16:38 +02:00
parent 6e58af8f01
commit 50d87e37a4
8 changed files with 76 additions and 31 deletions

View file

@ -1,6 +1,11 @@
{ config, pkgs, ... }: {
config,
pkgs,
lib,
...
}:
let let
serviceName = "actualbudget"; serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
subdomain = "budget"; subdomain = "budget";
serveConfig = builtins.toJSON { serveConfig = builtins.toJSON {

View file

@ -1,6 +1,11 @@
{ config, pkgs, ... }: {
config,
pkgs,
lib,
...
}:
let let
serviceName = "onlyoffice"; serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
subdomain = "office"; subdomain = "office";
serveConfig = builtins.toJSON { serveConfig = builtins.toJSON {

View file

@ -5,8 +5,13 @@
dataDir, dataDir,
... ...
}: }:
let
serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
userName = config.services.forgejo.user;
groupName = config.services.forgejo.group;
in
{ {
systemd.tmpfiles.rules = [ "d ${dataDir}/backup 750 forgejo forgejo -" ]; systemd.tmpfiles.rules = [ "d ${dataDir}/backup 750 ${userName} ${groupName} -" ];
security.polkit = { security.polkit = {
enable = true; enable = true;
@ -21,9 +26,9 @@
''; '';
}; };
myConfig.resticBackup.forgejo = { myConfig.resticBackup.${serviceName} = {
enable = true; enable = true;
user = config.users.users.forgejo.name; user = userName;
healthchecks.enable = true; healthchecks.enable = true;
extraConfig = { extraConfig = {
@ -47,11 +52,11 @@
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writeShellApplication { (pkgs.writeShellApplication {
name = "forgejo-restore"; name = "${serviceName}-restore";
text = '' text = ''
systemctl stop forgejo.service systemctl stop forgejo.service
sudo -u forgejo restic-forgejo restore --target / latest sudo -u ${userName} restic-${serviceName} restore --target / latest
sudo -u forgejo pg_restore --clean --if-exists --dbname forgejo ${dataDir}/backup/db.dump sudo -u ${userName} pg_restore --clean --if-exists --dbname forgejo ${dataDir}/backup/db.dump
systemctl start forgejo.service systemctl start forgejo.service
''; '';
}) })

View file

@ -1,11 +1,20 @@
{ lib, ... }:
let
serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
subdomain = "git";
in
{ {
containers.forgejo.config = containers.${serviceName}.config =
{ {
config, config,
lib, lib,
dataDir, dataDir,
... ...
}: }:
let
userName = config.services.forgejo.user;
groupName = config.services.forgejo.group;
in
{ {
imports = [ ./backup.nix ]; imports = [ ./backup.nix ];
@ -15,7 +24,7 @@
}; };
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d ${dataDir}/home 750 forgejo forgejo -" "d ${dataDir}/home 750 ${userName} ${groupName} -"
"d ${dataDir}/postgresql 700 postgres postgres -" "d ${dataDir}/postgresql 700 postgres postgres -"
]; ];
@ -42,7 +51,7 @@
''; '';
myConfig.tailscale = { myConfig.tailscale = {
subdomain = "git"; inherit subdomain;
serve = "3000"; serve = "3000";
}; };
}; };

View file

@ -5,12 +5,17 @@
dataDir, dataDir,
... ...
}: }:
let
serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
userName = config.users.users.nextcloud.name;
groupName = config.users.users.nextcloud.group;
in
{ {
systemd.tmpfiles.rules = [ "d ${dataDir}/backup 700 nextcloud nextcloud -" ]; systemd.tmpfiles.rules = [ "d ${dataDir}/backup 700 ${userName} ${groupName} -" ];
myConfig.resticBackup.nextcloud = { myConfig.resticBackup.${serviceName} = {
enable = true; enable = true;
user = config.users.users.nextcloud.name; user = userName;
healthchecks.enable = true; healthchecks.enable = true;
extraConfig = { extraConfig = {
@ -31,12 +36,12 @@
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writeShellApplication { (pkgs.writeShellApplication {
name = "nextcloud-restore"; name = "${serviceName}-restore";
text = '' text = ''
sudo -u nextcloud ${lib.getExe' config.services.nextcloud.occ "nextcloud-occ"} maintenance:mode --on sudo -u ${userName} ${lib.getExe' config.services.nextcloud.occ "nextcloud-occ"} maintenance:mode --on
sudo -u nextcloud restic-nextcloud restore --target / latest sudo -u ${userName} restic-${serviceName} restore --target / latest
sudo -u nextcloud pg_restore --clean --if-exists --dbname nextcloud ${dataDir}/backup/db.dump sudo -u ${userName} pg_restore --clean --if-exists --dbname nextcloud ${dataDir}/backup/db.dump
sudo -u nextcloud ${lib.getExe' config.services.nextcloud.occ "nextcloud-occ"} maintenance:mode --off sudo -u ${userName} ${lib.getExe' config.services.nextcloud.occ "nextcloud-occ"} maintenance:mode --off
''; '';
}) })
]; ];

View file

@ -1,8 +1,10 @@
{ lib, ... }:
let let
serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
subdomain = "cloud"; subdomain = "cloud";
in in
{ {
containers.nextcloud.config = containers.${serviceName}.config =
{ {
config, config,
inputs, inputs,
@ -10,6 +12,10 @@ in
dataDir, dataDir,
... ...
}: }:
let
userName = config.users.users.nextcloud.name;
groupName = config.users.users.nextcloud.group;
in
{ {
imports = [ imports = [
./email-server.nix ./email-server.nix
@ -22,7 +28,7 @@ in
}; };
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d ${dataDir}/home 750 nextcloud nextcloud -" "d ${dataDir}/home 750 ${userName} ${groupName} -"
"d ${dataDir}/postgresql 700 postgres postgres -" "d ${dataDir}/postgresql 700 postgres postgres -"
]; ];

View file

@ -5,14 +5,19 @@
dataDir, dataDir,
... ...
}: }:
let
serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
userName = config.services.paperless.user;
groupName = config.users.users.${userName}.group;
in
{ {
systemd.tmpfiles.rules = [ "d ${dataDir}/backup 700 paperless paperless -" ]; systemd.tmpfiles.rules = [ "d ${dataDir}/backup 700 ${userName} ${groupName} -" ];
users.users.paperless.extraGroups = [ "redis-paperless" ]; users.users.paperless.extraGroups = [ "redis-paperless" ];
myConfig.resticBackup.paperless = { myConfig.resticBackup.${serviceName} = {
enable = true; enable = true;
user = config.users.users.paperless.name; user = userName;
healthchecks.enable = true; healthchecks.enable = true;
extraConfig = { extraConfig = {
@ -33,10 +38,10 @@
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writeShellApplication { (pkgs.writeShellApplication {
name = "paperless-restore"; name = "${serviceName}-restore";
text = '' text = ''
sudo -u paperless restic-paperless restore --target / latest sudo -u ${userName} restic-${serviceName} restore --target / latest
sudo -u paperless ${dataDir}/paperless-manage document_importer ${dataDir}/backup sudo -u ${userName} ${dataDir}/paperless-manage document_importer ${dataDir}/backup
''; '';
}) })
]; ];

View file

@ -1,5 +1,10 @@
{ lib, ... }:
let
serviceName = lib.last (lib.splitString "/" (builtins.toString ./.)); # Parent directory name
subdomain = "paper";
in
{ {
containers.paperless.config = containers.${serviceName}.config =
{ {
config, config,
dataDir, dataDir,
@ -18,7 +23,7 @@
}; };
myConfig.tailscale = { myConfig.tailscale = {
subdomain = "paper"; inherit subdomain;
serve = "28981"; serve = "28981";
}; };
}; };