From 7f0f92dcf2525eddc99e55645e125ec491fc2734 Mon Sep 17 00:00:00 2001 From: Will Holdsworth Date: Mon, 2 Mar 2026 21:46:11 +1100 Subject: [PATCH 1/3] feat(homepage-dashboard): add send --- modules/nixos/features/homepage-dashboard.nix | 115 ++++++++++-------- 1 file changed, 67 insertions(+), 48 deletions(-) diff --git a/modules/nixos/features/homepage-dashboard.nix b/modules/nixos/features/homepage-dashboard.nix index abd4624..2ccc718 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; -- 2.53.0 From 2551f74ca474eb9247e78e0c0d1e78a9b40f709e Mon Sep 17 00:00:00 2001 From: Will Holdsworth Date: Mon, 2 Mar 2026 22:01:48 +1100 Subject: [PATCH 2/3] feat(cryptpad): install --- modules/nixos/bundles/server.nix | 1 + modules/nixos/features/cryptpad.nix | 49 +++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 modules/nixos/features/cryptpad.nix diff --git a/modules/nixos/bundles/server.nix b/modules/nixos/bundles/server.nix index 2d34890..a4a7fbf 100644 --- a/modules/nixos/bundles/server.nix +++ b/modules/nixos/bundles/server.nix @@ -9,6 +9,7 @@ "caddy" "copyparty" "couchdb" + "cryptpad" "homepage-dashboard" "immich" "jellyfin" diff --git a/modules/nixos/features/cryptpad.nix b/modules/nixos/features/cryptpad.nix new file mode 100644 index 0000000..8c031ff --- /dev/null +++ b/modules/nixos/features/cryptpad.nix @@ -0,0 +1,49 @@ +let + httpPort = 5022; + websocketPort = 5024; + certloc = "/var/lib/acme/fi33.buzz"; +in +{ + services = { + cryptpad = { + enable = true; + settings = { + inherit httpPort; + inherit websocketPort; + httpUnsafeOrigin = "https://cryptpad.fi33.buzz"; + httpSafeOrigin = "https://cryptpad-ui.fi33.buzz"; + inactiveTime = 7; + archiveRetentionTime = 7; + accountRetentionTime = 7; + }; + }; + + caddy.virtualHosts."cryptpad.fi33.buzz, cryptpad-ui.fi33.buzz".extraConfig = '' + header Strict-Transport-Security "includeSubDomains; preload" + + handle /cryptpad_websocket* { + reverse_proxy localhost:${toString websocketPort} { + header_up Host {host} + header_up X-Real-IP {remote_host} + } + } + + handle { + reverse_proxy localhost:${toString httpPort} { + header_up Host {host} + header_up X-Real-IP {remote_host} + } + } + + @register { + host cryptpad.fi33.buzz + path /register* + } + respond @register 403 + + tls ${certloc}/cert.pem ${certloc}/key.pem { + protocols tls1.3 + } + ''; + }; +} -- 2.53.0 From 036e7758351638006efa911be62fabcffc94af82 Mon Sep 17 00:00:00 2001 From: Will Holdsworth Date: Mon, 2 Mar 2026 22:02:02 +1100 Subject: [PATCH 3/3] feat(homepage-dashboard): add cryptpad --- modules/nixos/features/homepage-dashboard.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/nixos/features/homepage-dashboard.nix b/modules/nixos/features/homepage-dashboard.nix index 2ccc718..63f9cae 100644 --- a/modules/nixos/features/homepage-dashboard.nix +++ b/modules/nixos/features/homepage-dashboard.nix @@ -48,6 +48,13 @@ in services = [ { "Public Services" = [ + { + CryptPad = { + description = "Collaborative office suite"; + icon = "cryptpad.svg"; + href = "https://cryptpad.fi33.buzz/"; + }; + } { Send = { description = "Simple, private file sharing"; -- 2.53.0