homepage: audiobookshelf init

This commit is contained in:
Danilo Reyes 2024-07-05 20:46:50 -06:00
parent 96e5a4b8ca
commit 8d70d160cf
5 changed files with 72 additions and 11 deletions

View File

@ -1,5 +1,6 @@
{ lib, config, pkgs, ... }: { lib, config, pkgs, ... }:
let let
setup = import ./servers/base.nix { inherit lib config; };
serviceBase = { serviceBase = {
enable = true; enable = true;
group = "piracy"; group = "piracy";
@ -43,7 +44,7 @@ in {
./servers/adguardhome.nix ./servers/adguardhome.nix
./servers/paperless.nix ./servers/paperless.nix
./servers/postgres.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 { (import ./servers/bazarr.nix {
inherit lib config serviceBase proxyReverse; inherit lib config serviceBase proxyReverse;
}) })

View File

@ -1,19 +1,20 @@
{ lib, config, proxy, ... }: { { lib, config, proxy, setup, ... }:
options.my.servers.audiobookshelf.enable = lib.mkEnableOption "enable"; let cfg = config.my.servers.audiobookshelf;
in {
options.my.servers.audiobookshelf =
setup.mkServerOptions "audiobookshelf" "audiobooks" 5687;
config = lib.mkIf config.my.servers.audiobookshelf.enable { config = lib.mkIf config.my.servers.audiobookshelf.enable {
services = { services = {
audiobookshelf = { audiobookshelf = {
enable = true; enable = true;
group = "piracy"; group = "piracy";
port = 5687; port = cfg.port;
}; };
nginx = { nginx = {
enable = true; enable = true;
virtualHosts."audiobooks.${config.my.domain}" = proxy { virtualHosts."${cfg.host}" = proxy {
"/" = { "/" = {
proxyPass = "http://${config.my.localhost}:${ proxyPass = cfg.local;
toString config.services.audiobookshelf.port
}";
extraConfig = '' extraConfig = ''
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;

23
modules/servers/base.nix Normal file
View File

@ -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; }

View File

@ -3,11 +3,46 @@ let port = 8082;
in { in {
options.my.servers.homepage.enable = lib.mkEnableOption "enable"; options.my.servers.homepage.enable = lib.mkEnableOption "enable";
config = lib.mkIf config.my.servers.homepage.enable { config = lib.mkIf config.my.servers.homepage.enable {
# sops.secrets.homepage.sopsFile = ../../secrets/env.yaml; sops.secrets.homepage.sopsFile = ../../secrets/env.yaml;
services = { services = {
homepage-dashboard = { homepage-dashboard = {
enable = true; enable = true;
listenPort = port; 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 = { nginx = {
enable = true; enable = true;

View File

@ -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] 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] 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] 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: sops:
kms: [] kms: []
gcp_kms: [] gcp_kms: []
@ -49,8 +50,8 @@ sops:
QXRUYWtGcWZCVW11U3VYRktuUjlCbDgKsTK4WhUza/JuoDTU3uATa6fq/8eYzxtb QXRUYWtGcWZCVW11U3VYRktuUjlCbDgKsTK4WhUza/JuoDTU3uATa6fq/8eYzxtb
9BUK1ddzx9Mghea9XBMS17YGtGmW800OsLBomb3SINnOFvejcnKf8Q== 9BUK1ddzx9Mghea9XBMS17YGtGmW800OsLBomb3SINnOFvejcnKf8Q==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-07-05T19:17:53Z" lastmodified: "2024-07-06T02:35:26Z"
mac: ENC[AES256_GCM,data:vdIXGAUjuEc0W77Gzn+Aqv8HAepvXco+25OsiILhBA7sQwdOc+OSoFYy9jVjPnpJ8nWUL0Cm8ZnTbmg1+m7L9nWroenVaf6p/BkNLB+UvOc1gwMkEfik698rQr31urPWReDk5TKmg5h2yyGLVL09AUFcJpkKkjyCttelFCzbyKE=,iv:41wHWRpzDOTtff5HvWF8UehF5CvXLA8+zl38pBr9PBU=,tag:vP60YEpnTQY4Eb1hOyeU8A==,type:str] mac: ENC[AES256_GCM,data:wO5qwIr4IDpHUIQHJMxyzkD+9oBLVSKeut8Vi7KwG5ktBeMIPOyFh4fiRzCuMe74CovQLlUVlE1B3p28oO3azIgdoAMaotRkfsmtQDkVbuWX09H1qkjhwt4WvWMhTDT8Ov39HLMiGYrjohdh8siBbiXBDi+j2W0l73okDFeKv6M=,iv:cPwUVpG1mw6SZLFZpn9t6aF5rvlpuiIiAV+yiyBdcw0=,tag:ENdefW17cQruvKu3eGN9yg==,type:str]
pgp: [] pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.8.1 version: 3.8.1