backups
This commit is contained in:
parent
1f7771ec3f
commit
550ce08e41
|
@ -17,7 +17,10 @@
|
||||||
|
|
||||||
mkSystem = name: class:
|
mkSystem = name: class:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {inherit inputs;};
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
attrName = name;
|
||||||
|
};
|
||||||
modules = [
|
modules = [
|
||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
|
|
|
@ -9,20 +9,6 @@
|
||||||
group = "nextcloud";
|
group = "nextcloud";
|
||||||
};
|
};
|
||||||
|
|
||||||
system.fsPackages = [pkgs.sshfs];
|
|
||||||
fileSystems."${config.services.nextcloud.home}/data/${config.services.nextcloud.config.adminuser}/files/remote" = {
|
|
||||||
device = "u385962@u385962.your-storagebox.de:/";
|
|
||||||
fsType = "sshfs";
|
|
||||||
options = [
|
|
||||||
"allow_other"
|
|
||||||
"IdentityFile=/persist/etc/ssh/ssh_host_ed25519_key"
|
|
||||||
"_netdev"
|
|
||||||
"reconnect"
|
|
||||||
"ServerAliveInterval=15"
|
|
||||||
"x-systemd.automount"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud28;
|
package = pkgs.nextcloud28;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
attrName,
|
||||||
inputs,
|
inputs,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
attrName,
|
||||||
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
safePath = "/srv/storage/safe";
|
||||||
|
in {
|
||||||
systemd.timers.local-backup = {
|
systemd.timers.local-backup = {
|
||||||
description = "Local rsync Backup";
|
description = "Local rsync Backup";
|
||||||
wantedBy = ["timers.target"];
|
wantedBy = ["timers.target"];
|
||||||
|
@ -17,7 +21,7 @@
|
||||||
description = "Local rsync Backup";
|
description = "Local rsync Backup";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = ''${lib.getExe pkgs.rsync} --verbose --verbose --archive --update --delete /srv/storage/ /srv/backup/'';
|
ExecStart = "${lib.getExe pkgs.rsync} --verbose --verbose --archive --update --delete /srv/storage/ /srv/backup/";
|
||||||
User = "root";
|
User = "root";
|
||||||
Group = "root";
|
Group = "root";
|
||||||
};
|
};
|
||||||
|
@ -28,4 +32,23 @@
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=main" "compress=zstd" "noatime"];
|
options = ["subvol=main" "compress=zstd" "noatime"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
age.secrets."restic-${attrName}".file = ../../secrets/restic-lukas.age;
|
||||||
|
|
||||||
|
services.restic.backups.${attrName} = {
|
||||||
|
repostiory = "sftp:u385962@u385962.your-storagebox.de:/restic/${attrName}";
|
||||||
|
initialize = true;
|
||||||
|
paths = [safePath];
|
||||||
|
passwordFile = config.age.secrets."restic-${attrName}".path;
|
||||||
|
pruneOpts = ["--keep-daily 7" "--keep-weekly 5" "--keep-monthly 12"];
|
||||||
|
extraOptions = ["sftp.args='-i /etc/ssh/ssh_host_ed25519_key'"];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.settings = {
|
||||||
|
"10-storage-safe".${safePath}.d = {
|
||||||
|
user = "root";
|
||||||
|
group = "root";
|
||||||
|
mode = "0755";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,24 +10,18 @@
|
||||||
inputs.hardware.nixosModules.common-gpu-intel
|
inputs.hardware.nixosModules.common-gpu-intel
|
||||||
inputs.hardware.nixosModules.common-pc-ssd
|
inputs.hardware.nixosModules.common-pc-ssd
|
||||||
|
|
||||||
./backup.nix
|
# ./backup.nix
|
||||||
./blocky.nix
|
# ./blocky.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd.availableKernelModules = ["ahci" "xhci_pci" "usbhid" "usb_storage" "sd_mod"];
|
initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
||||||
kernelModules = ["kvm-intel"];
|
kernelModules = ["kvm-intel"];
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = "performance";
|
powerManagement.cpuFreqGovernor = "powersave";
|
||||||
|
|
||||||
fileSystems."/srv/storage" = {
|
|
||||||
device = "/dev/disk/by-label/storage";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=main" "compress=zstd" "noatime"];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
BIN
secrets/restic-vessel.age
Normal file
BIN
secrets/restic-vessel.age
Normal file
Binary file not shown.
|
@ -17,4 +17,5 @@ in {
|
||||||
"mail-lukas.age".publicKeys = (builtins.attrValues users) ++ [hosts.abacus];
|
"mail-lukas.age".publicKeys = (builtins.attrValues users) ++ [hosts.abacus];
|
||||||
"vaultwarden.age".publicKeys = (builtins.attrValues users) ++ [hosts.abacus];
|
"vaultwarden.age".publicKeys = (builtins.attrValues users) ++ [hosts.abacus];
|
||||||
"nextcloud-lukas.age".publicKeys = (builtins.attrValues users) ++ [hosts.abacus];
|
"nextcloud-lukas.age".publicKeys = (builtins.attrValues users) ++ [hosts.abacus];
|
||||||
|
"restic-vessel.age".publicKeys = (builtins.attrValues users) ++ [hosts.vessel];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue