diff --git a/flake.lock b/flake.lock index b6ef42b..090204b 100644 --- a/flake.lock +++ b/flake.lock @@ -985,6 +985,22 @@ "type": "github" } }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1738410390, + "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3a228057f5b619feb3186e986dbe76278d707b6e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_10": { "locked": { "lastModified": 1714782413, @@ -1749,6 +1765,7 @@ "jobs-ms-develop": "jobs-ms-develop", "nfnix": "nfnix", "nixpkgs": "nixpkgs_23", + "nixpkgs-unstable": "nixpkgs-unstable", "sandkasten": "sandkasten", "shop-ms": "shop-ms", "shop-ms-develop": "shop-ms-develop", diff --git a/flake.nix b/flake.nix index 344b47e..c67abda 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,7 @@ { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; deploy-sh.url = "github:Defelo/deploy-sh"; sops-nix.url = "github:Mic92/sops-nix"; nfnix.url = "github:Defelo/nfnix"; diff --git a/hosts/prod/default.nix b/hosts/prod/default.nix index 2d8e12e..bf393d6 100644 --- a/hosts/prod/default.nix +++ b/hosts/prod/default.nix @@ -10,6 +10,7 @@ ./nginx.nix ./restic.nix ./wireguard.nix + ./youtube-downloads.nix ]; filesystems.defaultLayout = true; diff --git a/hosts/prod/youtube-downloads.nix b/hosts/prod/youtube-downloads.nix new file mode 100644 index 0000000..a2f4b7b --- /dev/null +++ b/hosts/prod/youtube-downloads.nix @@ -0,0 +1,40 @@ +{nixpkgs-unstable, ...}: { + imports = ["${nixpkgs-unstable}/nixos/modules/services/misc/ytdl-sub.nix"]; + + services.sshfs.mounts."/mnt/youtube" = { + host = "u381435.your-storagebox.de"; + port = 23; + user = "u381435"; + path = "youtube"; + readOnly = false; + allowOther = true; + }; + + services.ytdl-sub.instances.default = { + enable = true; + schedule = null; # TODO + + config = { + presets."YouTube Playlist" = { + preset = ["Max 480p"]; # TODO + download = "{subscription_value}"; + output_options = { + output_directory = "/mnt/youtube"; + file_name = "{subscription_name}/{playlist_index_padded}_{%sanitize(title)}.{ext}"; + maintain_download_archive = true; + }; + ytdl_options = { + cookiefile = "/var/lib/ytdl-sub/default/.cookies"; + }; + }; + }; + + subscriptions."YouTube Playlist" = { + rust = "https://www.youtube.com/playlist?list=PLNmsVeXQZj7r4HuTyVCDLKlsD9EQzoncP"; + quantencomputer = "https://www.youtube.com/playlist?list=PLNmsVeXQZj7qS21FP5tk1QqmeAmd2hpQF"; + clean_code = "https://www.youtube.com/playlist?list=PLNmsVeXQZj7ryyZikMDPxxyYxEKtKn0ji"; + }; + }; + + systemd.services.ytdl-sub-default.serviceConfig.ReadWritePaths = ["/mnt/youtube"]; +}