snapshot
This commit is contained in:
parent
47036cde64
commit
0968b6f955
57 changed files with 426 additions and 86 deletions
|
@ -1,84 +0,0 @@
|
|||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
audiocomp = pkgs.writeShellApplication {
|
||||
name = "audiocomp";
|
||||
runtimeInputs = [
|
||||
pkgs.parallel
|
||||
pkgs.rsync
|
||||
pkgs.openssh
|
||||
];
|
||||
text = let
|
||||
remoteDir = inputs.self.nixosConfigurations.abacus.config.services.navidrome.settings.MusicFolder;
|
||||
enc = pkgs.writeShellApplication {
|
||||
name = "enc";
|
||||
runtimeInputs = [
|
||||
pkgs.opusTools
|
||||
];
|
||||
text = ''
|
||||
src=$1
|
||||
dst=$src
|
||||
dst=''${dst%.flac}.opus
|
||||
dst=/srv/compmusic/''${dst#/srv/music/}
|
||||
|
||||
if [[ -f "$dst" ]]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
mkdir --parents -- "$(dirname -- "$dst")"
|
||||
|
||||
echo "encoding ''${src@Q} -> ''${dst@Q}" >&2
|
||||
exec opusenc --quiet --bitrate 96.000 -- "$src" "$dst"
|
||||
'';
|
||||
};
|
||||
clean = pkgs.writeShellApplication {
|
||||
name = "clean";
|
||||
text = ''
|
||||
del=$1
|
||||
chk=$del
|
||||
chk=''${chk%.opus}.flac
|
||||
chk=/srv/music/''${chk#/srv/compmusic/}
|
||||
|
||||
if [[ ! -f "$chk" ]]; then
|
||||
echo "deleting ''${del@Q}" >&2
|
||||
rm --force -- "$del"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
in ''
|
||||
shopt -s globstar nullglob
|
||||
|
||||
find /srv/music -name '*.flac' -print0 | parallel --null -- ${lib.getExe enc} {}
|
||||
|
||||
find /srv/compmusic -name '*.flac' -exec ${clean} {} \;
|
||||
|
||||
echo syncing >&2
|
||||
rsync --verbose --verbose --archive --update --delete --mkpath --exclude lost+found \
|
||||
--rsh 'ssh -i /etc/ssh/ssh_host_ed25519_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' \
|
||||
-- /srv/compmusic/ root@wrz.one:${remoteDir}
|
||||
'';
|
||||
};
|
||||
in {
|
||||
systemd.services.audiocomp = {
|
||||
description = "Compress and sync music";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = "root";
|
||||
Group = "root";
|
||||
ExecStart = lib.getExe audiocomp;
|
||||
};
|
||||
};
|
||||
|
||||
systemd.timers.audiocomp = {
|
||||
description = "Compress and sync music daily";
|
||||
wantedBy = ["timers.target"];
|
||||
timerConfig = {
|
||||
OnCalendar = "*-*-* 03:00:00";
|
||||
Persistent = true;
|
||||
Unit = "audiocomp.service";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
{
|
||||
attrName,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
backups = {
|
||||
music = "/srv/music";
|
||||
safe = "/srv/safe";
|
||||
storage = "/srv/storage";
|
||||
sync = config.services.syncthing.dataDir;
|
||||
};
|
||||
in {
|
||||
systemd = lib.mkMerge (map (
|
||||
backupName: let
|
||||
systemdName = "${backupName}-backup";
|
||||
in {
|
||||
timers.${systemdName} = {
|
||||
description = "Local rsync Backup ${backupName}";
|
||||
wantedBy = ["timers.target"];
|
||||
timerConfig = {
|
||||
OnCalendar = "*-*-* 03:00:00";
|
||||
Persistent = true;
|
||||
Unit = "${systemdName}.service";
|
||||
};
|
||||
};
|
||||
|
||||
services.${systemdName} = {
|
||||
description = "Local rsync Backup ${backupName}";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = "root";
|
||||
Group = "root";
|
||||
};
|
||||
script = ''
|
||||
${lib.getExe pkgs.rsync} --verbose --verbose --archive --update --delete --mkpath -- ${backups.${backupName}}/ /srv/backup/${backupName}/
|
||||
'';
|
||||
};
|
||||
}
|
||||
) (lib.attrNames backups));
|
||||
|
||||
age.secrets."restic-${attrName}".file = ../../secrets/restic-${attrName}.age;
|
||||
|
||||
services.restic.backups.${attrName} = {
|
||||
repository = "sftp:u385962@u385962.your-storagebox.de:/restic/${attrName}";
|
||||
initialize = true;
|
||||
paths = [
|
||||
backups.safe
|
||||
backups.sync
|
||||
];
|
||||
passwordFile = config.age.secrets."restic-${attrName}".path;
|
||||
pruneOpts = ["--keep-daily 7" "--keep-weekly 5" "--keep-monthly 12"];
|
||||
timerConfig = {
|
||||
OnCalendar = "*-*-* 03:00:00";
|
||||
Persistent = true;
|
||||
};
|
||||
extraOptions = ["sftp.args='-i /etc/ssh/ssh_host_ed25519_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'"];
|
||||
};
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
let
|
||||
upstream = "https://one.one.one.one/dns-query";
|
||||
in {
|
||||
services.blocky = {
|
||||
enable = true;
|
||||
settings = {
|
||||
port = 53;
|
||||
upstream.default = [upstream];
|
||||
bootstrapDns = {
|
||||
inherit upstream;
|
||||
ips = ["1.1.1.1" "1.0.0.1"];
|
||||
};
|
||||
blocking = {
|
||||
blackLists.ads = ["https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"];
|
||||
clientGroupsBlock.default = ["ads"];
|
||||
};
|
||||
caching = {
|
||||
minTime = "5m";
|
||||
maxTime = "30m";
|
||||
prefetching = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
fileSystems."/srv/backup" = {
|
||||
label = "backup";
|
||||
fsType = "ext4";
|
||||
options = ["noatime"];
|
||||
};
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
inputs,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
"${modulesPath}/installer/scan/not-detected.nix"
|
||||
|
||||
inputs.hardware.nixosModules.common-cpu-intel
|
||||
inputs.hardware.nixosModules.common-gpu-intel
|
||||
inputs.hardware.nixosModules.common-pc-ssd
|
||||
];
|
||||
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
||||
kernelModules = ["kvm-intel"];
|
||||
};
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
systemd.tmpfiles.settings = {
|
||||
"10-safe"."/srv/safe".d = {
|
||||
user = "lukas";
|
||||
group = "users";
|
||||
mode = "0755";
|
||||
};
|
||||
|
||||
"10-storage"."/srv/storage".d = {
|
||||
user = "lukas";
|
||||
group = "users";
|
||||
mode = "0755";
|
||||
};
|
||||
|
||||
"10-music"."/srv/music".d = {
|
||||
user = "lukas";
|
||||
group = "users";
|
||||
mode = "0755";
|
||||
};
|
||||
|
||||
"10-compmusic"."/srv/compmusic".d = {
|
||||
user = "lukas";
|
||||
group = "users";
|
||||
mode = "0755";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
{lib, ...}: let
|
||||
guiPort = 8384;
|
||||
in {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
systemService = true;
|
||||
openDefaultPorts = true;
|
||||
guiAddress = lib.formatHostPort {
|
||||
host = "0.0.0.0";
|
||||
port = guiPort;
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [guiPort];
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue