diff --git a/modules/nixos/bundles/server.nix b/modules/nixos/bundles/server.nix index 2795aca..2d34890 100644 --- a/modules/nixos/bundles/server.nix +++ b/modules/nixos/bundles/server.nix @@ -23,6 +23,7 @@ "radarr" "radicale" "readarr" + "send" "sonarr" "vaultwarden" # keep-sorted end diff --git a/modules/nixos/features/homepage-dashboard.nix b/modules/nixos/features/homepage-dashboard.nix index abd4624..57c8a5d 100644 --- a/modules/nixos/features/homepage-dashboard.nix +++ b/modules/nixos/features/homepage-dashboard.nix @@ -46,6 +46,17 @@ in listenPort = port; allowedHosts = "homepage-dashboard.fi33.buzz"; services = [ + { + "Public Services" = [ + { + Send = { + description = " Simple, private file sharing"; + icon = "send.svg"; + href = "https://send.fi33.buzz/"; + }; + } + ]; + } { "Media Management" = [ { @@ -146,6 +157,52 @@ in } ]; } + { + "Private Services" = [ + { + "copyparty" = { + "description" = "Cloud file manager"; + "icon" = "sh-copyparty.svg"; + "href" = "https://copyparty.fi33.buzz/"; + }; + } + { + CouchDB = { + description = "Obsidian sync database"; + icon = "couchdb.svg"; + href = "https://couchdb.fi33.buzz/_utils/"; + }; + } + { + ntfy = { + description = "Notification service"; + icon = "ntfy.svg"; + href = "https://ntfy-sh.fi33.buzz/"; + }; + } + { + Radicale = { + description = "CalDAV/CardDAV service"; + icon = "radicale.svg"; + href = "https://radicale.fi33.buzz"; + }; + } + { + Syncthing = { + description = "Decentralised file synchronisation"; + icon = "syncthing.svg"; + href = "https://syncthing.fi33.buzz/"; + }; + } + { + Vaultwarden = { + description = "Password manager"; + icon = "vaultwarden.svg"; + href = "https://vaultwarden.fi33.buzz/"; + }; + } + ]; + } { "Media Streaming" = [ { @@ -223,52 +280,7 @@ in } ]; } - { - Services = [ - { - "copyparty" = { - "description" = "Cloud file manager"; - "icon" = "sh-copyparty.svg"; - "href" = "https://copyparty.fi33.buzz/"; - }; - } - { - CouchDB = { - description = "Obsidian sync database"; - icon = "couchdb.svg"; - href = "https://couchdb.fi33.buzz/_utils/"; - }; - } - { - ntfy = { - description = "Notification service"; - icon = "ntfy.svg"; - href = "https://ntfy-sh.fi33.buzz/"; - }; - } - { - Radicale = { - description = "CalDAV/CardDAV service"; - icon = "radicale.svg"; - href = "https://radicale.fi33.buzz"; - }; - } - { - Syncthing = { - description = "Decentralised file synchronisation"; - icon = "syncthing.svg"; - href = "https://syncthing.fi33.buzz/"; - }; - } - { - Vaultwarden = { - description = "Password manager"; - icon = "vaultwarden.svg"; - href = "https://vaultwarden.fi33.buzz/"; - }; - } - ]; - } + { Utilities = [ { @@ -288,14 +300,21 @@ in headerStyle = "clean"; layout = [ { - "Media Streaming" = { + "Public Services" = { style = "row"; columns = 3; useEqualHeights = true; }; } { - Services = { + "Private Services" = { + style = "row"; + columns = 3; + useEqualHeights = true; + }; + } + { + "Media Streaming" = { style = "row"; columns = 3; useEqualHeights = true; diff --git a/modules/nixos/features/send.nix b/modules/nixos/features/send.nix new file mode 100644 index 0000000..defb025 --- /dev/null +++ b/modules/nixos/features/send.nix @@ -0,0 +1,28 @@ +let + port = 5020; + certloc = "/var/lib/acme/fi33.buzz"; +in +{ + services = { + send = { + enable = true; + inherit port; + baseUrl = "https://send.fi33.buzz"; + environment = { + DEFAULT_EXPIRE_SECONDS = 360; + EXPIRE_TIMES_SECONDS = "360"; + DOWNLOAD_COUNTS = "1"; + MAX_DOWNLOADS = 1; + MAX_EXPIRE_SECONDS = 1024; + MAX_FILE_SIZE = 134217728; + }; + }; + + caddy.virtualHosts."send.fi33.buzz".extraConfig = '' + reverse_proxy localhost:${toString port} + tls ${certloc}/cert.pem ${certloc}/key.pem { + protocols tls1.3 + } + ''; + }; +}