(T)im's N(ix) Flake, Multi-Host Configurations for all of my machines! 74k1.sh/
nixos nix
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(multi-scrobbler): init config

74k1 20a2037c 4901b1f3

+112
+3
hosts/nixos/eiri/configuration.nix
··· 47 47 loki 48 48 alloy 49 49 50 + 51 + multi-scrobbler 52 + 50 53 fourget 51 54 52 55 # everything else
+34
hosts/nixos/knights/configuration.nix
··· 314 314 # proxyWebsockets = true; 315 315 # }; 316 316 # }; 317 + "scrobble.${domain01}" = { 318 + addSSL = true; 319 + enableACME = true; 320 + locations."= /tinyauth" = { 321 + proxyPass = "https://auth.${domain01}/api/auth/nginx"; 322 + extraConfig = /* nginx */ '' 323 + internal; 324 + proxy_pass_request_body off; 325 + proxy_set_header Content-Length ""; 326 + proxy_set_header x-forwarded-proto $scheme; 327 + proxy_set_header x-forwarded-host $http_host; 328 + proxy_set_header x-forwarded-uri $request_uri; 329 + ''; 330 + }; 331 + locations."/" = { 332 + proxyPass = "http://10.100.0.1:9078"; 333 + recommendedProxySettings = true; 334 + extraConfig = /* nginx */ '' 335 + auth_request /tinyauth; 336 + error_page 401 = @tinyauth_login; 337 + error_page 403 = @tinyauth_unauthorized; 338 + ''; 339 + }; 340 + extraConfig = '' 341 + location @tinyauth_login { 342 + return 302 https://auth.${domain01}/login?redirect_uri=$scheme://$http_host$request_uri; 343 + } 344 + 345 + location @tinyauth_unauthorized { 346 + return 302 https://auth.${domain01}/unauthorized?username=unavailable; 347 + } 348 + ''; 349 + }; 350 + 317 351 "auth.${domain01}" = { 318 352 addSSL = true; 319 353 enableACME = true;
+74
modules/nixos/daemons/multi-scrobbler/default.nix
··· 1 + { 2 + inputs, 3 + outputs, 4 + config, 5 + lib, 6 + pkgs, 7 + allSecrets, 8 + ... 9 + }: 10 + { 11 + imports = [ 12 + inputs.tixpkgs.nixosModules'.services.multi-scrobbler 13 + ]; 14 + 15 + 16 + age.secrets."multi-scrobbler_env" = { 17 + rekeyFile = "${inputs.self}/secrets/multi-scrobbler_env.age"; 18 + # mode = "770"; 19 + # owner = "multi-scrobbler"; 20 + # group = "multi-scrobbler"; 21 + }; 22 + 23 + services.multi-scrobbler = rec { 24 + enable = true; 25 + stateDir = "/mnt/btrfs_pool/multi-scrobbler"; 26 + 27 + port = 9078; 28 + 29 + baseUrl = "https://scrobble.${allSecrets.global.domain01}"; 30 + 31 + # see below in [[]] 32 + environmentFile = config.age.secrets."multi-scrobbler_env".path; 33 + 34 + environment = { 35 + TZ = "Europe/Zurich"; 36 + # PROMETHEUS_FULL = true; 37 + }; 38 + 39 + configFiles = { 40 + # Clients 41 + lastfm = { 42 + name = "lastfm_client"; 43 + configureAs = "client"; 44 + data = { 45 + apiKey = "[[TIX_LASTFM_API_KEY]]"; 46 + secret = "[[TIX_LASTFM_SECRET]]"; 47 + redirectUri = "${baseUrl}/lastfm/callback"; 48 + }; 49 + }; 50 + 51 + # Sources 52 + spotify = { 53 + name = "spotify"; 54 + clients = [ "lastfm_client" ]; 55 + data = { 56 + clientId = "[[TIX_SPOTIFY_CLIENT_ID]]"; 57 + clientSecret = "[[TIX_SPOTIFY_CLIENT_SECRET]]"; 58 + redirectUri = "${baseUrl}/callback"; 59 + interval = 60; 60 + }; 61 + }; 62 + 63 + plex = { 64 + name = "plex"; 65 + clients = [ "lastfm_client" ]; 66 + data = { 67 + url = "http://192.168.1.100:32400"; 68 + token = "[[TIX_PLEX_TOKEN]]"; 69 + librariesAllow = [ "[JAM] Music" ]; 70 + }; 71 + }; 72 + }; 73 + }; 74 + }
+1
modules/nixos/default.nix
··· 20 20 loki = import ./daemons/loki; 21 21 memos = import ./daemons/memos; 22 22 miniflux = import ./daemons/miniflux; 23 + multi-scrobbler = import ./daemons/multi-scrobbler; 23 24 murmur = import ./daemons/murmur; 24 25 n8n = import ./daemons/n8n; 25 26 navidrome = import ./daemons/navidrome;
secrets/multi-scrobbler_env.age

This is a binary file and will not be displayed.

secrets/rekeyed/eiri/dc38266684c46d8a8605bd507cd943b8-multi-scrobbler_env.age

This is a binary file and will not be displayed.