From 8d70d160cf03b6c03841930f7b09e4ce71284ceb Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Fri, 5 Jul 2024 20:46:50 -0600 Subject: [PATCH] homepage: audiobookshelf init --- modules/servers.nix | 3 ++- modules/servers/audiobookshelf.nix | 15 ++++++------ modules/servers/base.nix | 23 +++++++++++++++++++ modules/servers/homepage.nix | 37 +++++++++++++++++++++++++++++- secrets/env.yaml | 5 ++-- 5 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 modules/servers/base.nix diff --git a/modules/servers.nix b/modules/servers.nix index 89510c7..ca343b2 100644 --- a/modules/servers.nix +++ b/modules/servers.nix @@ -1,5 +1,6 @@ { lib, config, pkgs, ... }: let + setup = import ./servers/base.nix { inherit lib config; }; serviceBase = { enable = true; group = "piracy"; @@ -43,7 +44,7 @@ in { ./servers/adguardhome.nix ./servers/paperless.nix ./servers/postgres.nix - (import ./servers/audiobookshelf.nix { inherit lib config proxy; }) + (import ./servers/audiobookshelf.nix { inherit lib config proxy setup; }) (import ./servers/bazarr.nix { inherit lib config serviceBase proxyReverse; }) diff --git a/modules/servers/audiobookshelf.nix b/modules/servers/audiobookshelf.nix index 9a5d2f3..e0f5e20 100644 --- a/modules/servers/audiobookshelf.nix +++ b/modules/servers/audiobookshelf.nix @@ -1,19 +1,20 @@ -{ lib, config, proxy, ... }: { - options.my.servers.audiobookshelf.enable = lib.mkEnableOption "enable"; +{ lib, config, proxy, setup, ... }: +let cfg = config.my.servers.audiobookshelf; +in { + options.my.servers.audiobookshelf = + setup.mkServerOptions "audiobookshelf" "audiobooks" 5687; config = lib.mkIf config.my.servers.audiobookshelf.enable { services = { audiobookshelf = { enable = true; group = "piracy"; - port = 5687; + port = cfg.port; }; nginx = { enable = true; - virtualHosts."audiobooks.${config.my.domain}" = proxy { + virtualHosts."${cfg.host}" = proxy { "/" = { - proxyPass = "http://${config.my.localhost}:${ - toString config.services.audiobookshelf.port - }"; + proxyPass = cfg.local; extraConfig = '' proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; diff --git a/modules/servers/base.nix b/modules/servers/base.nix new file mode 100644 index 0000000..e9182ff --- /dev/null +++ b/modules/servers/base.nix @@ -0,0 +1,23 @@ +{ lib, config, ... }: + +let + mkServerOptions = name: subdomain: port: { + enable = lib.mkEnableOption "enable"; + port = lib.mkOption { + type = lib.types.int; + default = port; + }; + host = lib.mkOption { + type = lib.types.str; + default = "${subdomain}.${config.my.domain}"; + }; + url = lib.mkOption { + type = lib.types.str; + default = "https://${config.my.servers.${name}.host}"; + }; + local = lib.mkOption { + type = lib.types.str; + default = "http://${config.my.localhost}:${toString port}"; + }; + }; +in { inherit mkServerOptions; } diff --git a/modules/servers/homepage.nix b/modules/servers/homepage.nix index 4e7dcad..15a03f3 100644 --- a/modules/servers/homepage.nix +++ b/modules/servers/homepage.nix @@ -3,11 +3,46 @@ let port = 8082; in { options.my.servers.homepage.enable = lib.mkEnableOption "enable"; config = lib.mkIf config.my.servers.homepage.enable { - # sops.secrets.homepage.sopsFile = ../../secrets/env.yaml; + sops.secrets.homepage.sopsFile = ../../secrets/env.yaml; services = { homepage-dashboard = { enable = true; listenPort = port; + environmentFile = config.sops.secrets.homepage.path; + settings = { + background = + "https://images.unsplash.com/photo-1502790671504-542ad42d5189?auto=format&fit=crop&w=2560&q=80"; + }; + widgets = [ + { + resources = { + cpu = true; + cputemp = true; + units = "metric"; + disk = "/"; + memory = true; + }; + } + { + search = { + provider = [ "brave" "bing" "google" ]; + target = "_blank"; + showSearchSuggestions = true; + }; + } + ]; + services = [{ + "Multimedia" = [{ + Audiobookshelf = lib.mkIf config.my.servers.audiobookshelf.enable { + href = config.my.servers.audiobookshelf.url; + widget = { + type = "audiobookshelf"; + url = config.my.servers.audiobookshelf.local; + key = "{{HOMEPAGE_VAR_AUDIOBOOKSHELF}}"; + }; + }; + }]; + }]; }; nginx = { enable = true; diff --git a/secrets/env.yaml b/secrets/env.yaml index ee02e0c..22c93d3 100644 --- a/secrets/env.yaml +++ b/secrets/env.yaml @@ -7,6 +7,7 @@ multi-scrobbler: ENC[AES256_GCM,data:4KENPA2BoCgBmlBkGrOzI7AOxwtpPjuBHi92XqbQzc3 vaultwarden: ENC[AES256_GCM,data:BH+G8FmYylTbOhzZy6T+sW0q2myJC2zpd/SrtG5WC7N5fmV++X4h+6/tU5dFv4owIOLm/13oGrkT/KOWkF2wwQ7qeQQ8bsyloEigNBMW6d7/ihXZtdtYid1HQrvc6U+Sjl8CPjInHz5j9fy5ouMrmDCGVIYdNrDzFW8AYn7KFLIa3c7oCWMTBCOeGS5rD55GSwy5y4AvBx7Hj9xnZmGG2cnzt5CR9hr/fnZhBTcPxquUZw==,iv:CxDdtWC7zKJZ/Ikq5fV33AT6MYx+pbAGI0Cy6I1fcyo=,tag:q8w4maD3vXTdxCLZ7qbCjg==,type:str] dns: ENC[AES256_GCM,data:eQACe2GRS0ZHyszFkZDG1CeJJZDe/0eXNnurujdv5VR5QQJjYRAQuJVzC3XgelXoWeIQdtW4IfpXTv7xaGuhEzPgsPm4hAdEKosNs6h0ZGg8FG73NSdMWw==,iv:n3i4Ll24+a82aKiRIJgMWLko1B2Lk7bLnpmUevBoHGA=,tag:bnZzVfRUSpZFvF2T6pMtsQ==,type:str] cloudflare-api: ENC[AES256_GCM,data:LDlxI/jJ0iRf4aVzsVDXfUFgidMsCtUmW24fcLTYyEiu82PG1p4Q3jt6xL/yUKHSXpNpDhfnuBx+iwT9Myo=,iv:mMdjsfev3yHnk99nPVWeTyR0CfVXTzVDFziDfnq4Ldw=,tag:pCLcNwprdtHLsSUcZOCHVw==,type:str] +homepage: ENC[AES256_GCM,data:4pOj1iOYaqD45yN3O7fgpWFFLZiWu1g9PPF0lmOlEUfXTS9PyZMqC2nLWIVjg3hXsdsa9fXKeuCZIJDDztWZ2ilWN1oTuzji1BCOXmV9aOwtCZ1pOhksVB7DFEdHX81fQ9SOc0LkU7mmx5EcdmfG+hHyiJjw0SIZJt0OUIixrRgz/mGv6LbyCTp6n1h+wUZGDYK/U73DQno35qV1R5/INxYsgzqOkrvw95gd+lEgDSzDGYd9R4XqQfM7jL8eqpHfzF9KigtbUeoUFOua/nt1HLmoHr++GAt96/9M5G6b,iv:ikgVgfMfrWVicaswSbHO3f7lLwm6A36yXFZxQZGtBwE=,tag:tW1gldIVIPsTZiE/0jXw6Q==,type:str] sops: kms: [] gcp_kms: [] @@ -49,8 +50,8 @@ sops: QXRUYWtGcWZCVW11U3VYRktuUjlCbDgKsTK4WhUza/JuoDTU3uATa6fq/8eYzxtb 9BUK1ddzx9Mghea9XBMS17YGtGmW800OsLBomb3SINnOFvejcnKf8Q== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-07-05T19:17:53Z" - mac: ENC[AES256_GCM,data:vdIXGAUjuEc0W77Gzn+Aqv8HAepvXco+25OsiILhBA7sQwdOc+OSoFYy9jVjPnpJ8nWUL0Cm8ZnTbmg1+m7L9nWroenVaf6p/BkNLB+UvOc1gwMkEfik698rQr31urPWReDk5TKmg5h2yyGLVL09AUFcJpkKkjyCttelFCzbyKE=,iv:41wHWRpzDOTtff5HvWF8UehF5CvXLA8+zl38pBr9PBU=,tag:vP60YEpnTQY4Eb1hOyeU8A==,type:str] + lastmodified: "2024-07-06T02:35:26Z" + mac: ENC[AES256_GCM,data:wO5qwIr4IDpHUIQHJMxyzkD+9oBLVSKeut8Vi7KwG5ktBeMIPOyFh4fiRzCuMe74CovQLlUVlE1B3p28oO3azIgdoAMaotRkfsmtQDkVbuWX09H1qkjhwt4WvWMhTDT8Ov39HLMiGYrjohdh8siBbiXBDi+j2W0l73okDFeKv6M=,iv:cPwUVpG1mw6SZLFZpn9t6aF5rvlpuiIiAV+yiyBdcw0=,tag:ENdefW17cQruvKu3eGN9yg==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.8.1