From b047f80dd113eb7beed24f9a46d03999fc52b460 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 17:28:12 -0300 Subject: [PATCH 01/12] Add Nextcloud to NixOracle with dynamic project homepage - services.nextcloud with PostgreSQL, hostName nextcloud.tadix.dev - nginx vhost with ACME for nextcloud.tadix.dev - Homepage PROJECTS section now fetches repos from Forgejo API - Added nextcloud link to footer --- hosts/NixOracle/configuration.nix | 21 +++++++++++++++++++ hosts/NixOracle/site/index.html | 34 +++++++++++++++++++++++++------ 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index 88905e7..c607d0a 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -69,6 +69,7 @@ in { systemd.tmpfiles.rules = [ "d /home/${username}/notebooks 0750 ${username} users -" + "d /etc/nextcloud-secrets 0750 nextcloud nextcloud -" ]; environment.etc."jupyter/jupyter_server_config.py".text = '' @@ -95,6 +96,10 @@ in { forceSSL = true; root = "${site}"; }; + virtualHosts."nextcloud.tadix.dev" = { + enableACME = true; + forceSSL = true; + }; virtualHosts."git.tadix.dev" = { enableACME = true; forceSSL = true; @@ -129,6 +134,22 @@ in { }; }; + services.nextcloud = { + enable = true; + package = pkgs.nextcloud31; + hostName = "nextcloud.tadix.dev"; + https = true; + database.createLocally = true; + config = { + adminuser = "admin"; + adminpassFile = "/etc/nextcloud-secrets/admin-password"; + }; + settings = { + default_phone_region = "BR"; + maintenance_window_start = 1; + }; + }; + services.forgejo = { enable = true; database.type = "sqlite3"; diff --git a/hosts/NixOracle/site/index.html b/hosts/NixOracle/site/index.html index 3e3df24..c17c4ab 100644 --- a/hosts/NixOracle/site/index.html +++ b/hosts/NixOracle/site/index.html @@ -22,12 +22,7 @@

PROJECTS

-

- BioLab - — bioprocess modeling and parameter estimation tool -
- source · live -

+

— loading —

@@ -42,6 +37,33 @@ github git jupyter + nextcloud + + From 6e293a5c8da86afed98ca4e8a9a279f170a23d5f Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 17:28:36 -0300 Subject: [PATCH 02/12] Use nextcloud32 (nextcloud31 is EOL in nixpkgs 25.11) --- hosts/NixOracle/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index c607d0a..d35e8b2 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -136,7 +136,7 @@ in { services.nextcloud = { enable = true; - package = pkgs.nextcloud31; + package = pkgs.nextcloud32; hostName = "nextcloud.tadix.dev"; https = true; database.createLocally = true; From 540f819b18c903c0483194d0814ba1e5927c58e6 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 17:28:52 -0300 Subject: [PATCH 03/12] Set nextcloud dbtype = pgsql (required since 25.05) --- hosts/NixOracle/configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index d35e8b2..a4d88f3 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -143,6 +143,7 @@ in { config = { adminuser = "admin"; adminpassFile = "/etc/nextcloud-secrets/admin-password"; + dbtype = "pgsql"; }; settings = { default_phone_region = "BR"; From 76488c13cf6b733a4f18c9daaf362cd6e88f3f48 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 17:43:48 -0300 Subject: [PATCH 04/12] Set Nextcloud admin username to ltadeu6 --- hosts/NixOracle/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index a4d88f3..960f188 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -141,7 +141,7 @@ in { https = true; database.createLocally = true; config = { - adminuser = "admin"; + adminuser = "ltadeu6"; adminpassFile = "/etc/nextcloud-secrets/admin-password"; dbtype = "pgsql"; }; From c20f1e23aa7b0cddb0197c9494e1ad93595ecedb Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 17:51:18 -0300 Subject: [PATCH 05/12] Add nextcloud-minimize service: disable unused apps, dark minimal theme --- hosts/NixOracle/configuration.nix | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index 960f188..6df70bf 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -151,6 +151,42 @@ in { }; }; + systemd.services.nextcloud-minimize = { + description = "Configure Nextcloud for minimal file-storage use"; + after = [ "nextcloud-setup.service" ]; + requires = [ "nextcloud-setup.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + User = "nextcloud"; + Group = "nextcloud"; + }; + unitConfig.X-Restart-Triggers = [ + (builtins.toFile "nextcloud-minimize-trigger" '' + defaultapp=files + disabled=activity,calendar,contacts,dashboard,firstrunwizard,photos,weather_status,circles,recommendations,user_status,systemtags + theme=dark,#7aa2f7,plain + '') + ]; + script = '' + set -eu + occ=/run/current-system/sw/bin/nextcloud-occ + + $occ config:system:set defaultapp --value=files + + for app in activity calendar contacts dashboard firstrunwizard photos weather_status circles recommendations user_status systemtags; do + $occ app:disable "$app" 2>/dev/null || true + done + + $occ config:app:set theming defaultColorScheme --value=dark + $occ config:app:set theming color --value="#7aa2f7" + $occ config:app:set theming background --value="plain" + $occ config:app:set theming name --value="Files" + $occ config:app:set theming slogan --value="" + ''; + }; + services.forgejo = { enable = true; database.type = "sqlite3"; From f88d8bc51d4547be2aa10bb3dfd5efc0898a4f90 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 18:00:36 -0300 Subject: [PATCH 06/12] Fix Nextcloud warnings: opcache interned_strings_buffer=16, run mimetype repair --- hosts/NixOracle/configuration.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index 6df70bf..fa6397b 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -145,6 +145,7 @@ in { adminpassFile = "/etc/nextcloud-secrets/admin-password"; dbtype = "pgsql"; }; + phpOptions."opcache.interned_strings_buffer" = "16"; settings = { default_phone_region = "BR"; maintenance_window_start = 1; @@ -167,6 +168,7 @@ in { defaultapp=files disabled=activity,calendar,contacts,dashboard,firstrunwizard,photos,weather_status,circles,recommendations,user_status,systemtags theme=dark,#7aa2f7,plain + repair=mimetypes '') ]; script = '' @@ -184,6 +186,8 @@ in { $occ config:app:set theming background --value="plain" $occ config:app:set theming name --value="Files" $occ config:app:set theming slogan --value="" + + $occ maintenance:repair --include-expensive ''; }; From 920832638961272b2da0e77a9b127cd0bb0d9fd1 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 18:03:28 -0300 Subject: [PATCH 07/12] Enable Forgejo CORS for tadix.dev (homepage git projects fetch) --- hosts/NixOracle/configuration.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index fa6397b..072eb3d 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -203,6 +203,11 @@ in { }; service.DISABLE_REGISTRATION = true; log.LEVEL = "Warn"; + cors = { + ENABLED = true; + ALLOW_DOMAIN = "tadix.dev"; + METHODS = "GET,HEAD,OPTIONS"; + }; }; }; From c67e1a7a712db08d46f808106177f5168b31cdcb Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 18:05:47 -0300 Subject: [PATCH 08/12] Add CORS header for Forgejo API via nginx (fix homepage project fetch) --- hosts/NixOracle/configuration.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index 072eb3d..be57e3e 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -112,6 +112,15 @@ in { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ''; }; + locations."/api/" = { + proxyPass = "http://127.0.0.1:3000"; + extraConfig = '' + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + add_header 'Access-Control-Allow-Origin' 'https://tadix.dev' always; + ''; + }; }; virtualHosts."biolab.tadix.dev" = { enableACME = true; From 63ed960353c938ab44ec7841658e92c45ce29d13 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 18:08:26 -0300 Subject: [PATCH 09/12] Homepage: remove duplicate source link from project list --- hosts/NixOracle/site/index.html | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/hosts/NixOracle/site/index.html b/hosts/NixOracle/site/index.html index c17c4ab..c126411 100644 --- a/hosts/NixOracle/site/index.html +++ b/hosts/NixOracle/site/index.html @@ -54,11 +54,8 @@ } el.innerHTML = visible.map(r => { const desc = r.description ? ` — ${r.description}` : ''; - const live = r.website ? `live · ` : ''; - return `

- ${r.name}${desc} -
${live}source -

`; + const live = r.website ? `
live` : ''; + return `

${r.name}${desc}${live}

`; }).join(''); } catch { el.innerHTML = '

— could not load repositories —

'; From c08f061187a02117b57722bb8211d0b895fd7db8 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 18:10:14 -0300 Subject: [PATCH 10/12] Homepage: static project list with descriptions from READMEs --- hosts/NixOracle/site/index.html | 39 ++++++++++++++------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/hosts/NixOracle/site/index.html b/hosts/NixOracle/site/index.html index c126411..a58531b 100644 --- a/hosts/NixOracle/site/index.html +++ b/hosts/NixOracle/site/index.html @@ -22,7 +22,22 @@

PROJECTS

-

— loading —

+

+ BioLab + — web tool for kinetic parameter estimation from experimental growth data.
+ Fits seven microbial models simultaneously via PSO and ranks results by AIC.
+
live +

+

+ matrix-android + — minimal Android Matrix client with a terminal aesthetic.
+ Text-only, E2EE via libolm, SSO login, push via a self-hosted Cloudflare Worker.
+

+

+ nixos-config + — NixOS and Home Manager config for desktop and Oracle VPS.
+ Covers system services, secrets via agenix, Hyprland, and self-hosted infrastructure.
+

@@ -40,27 +55,5 @@ nextcloud - From a7481769e50ad2b58b8d3177d499c064b37bb327 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 18:12:10 -0300 Subject: [PATCH 11/12] Fix matrix-android description: Cloudflare Worker is not self-hosted --- hosts/NixOracle/site/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/NixOracle/site/index.html b/hosts/NixOracle/site/index.html index a58531b..7d0a9a1 100644 --- a/hosts/NixOracle/site/index.html +++ b/hosts/NixOracle/site/index.html @@ -31,7 +31,7 @@

matrix-android — minimal Android Matrix client with a terminal aesthetic.
- Text-only, E2EE via libolm, SSO login, push via a self-hosted Cloudflare Worker.
+ Text-only, E2EE via libolm, SSO login, push via a Cloudflare Worker push gateway.

nixos-config From eb1c0dba4ddbb5b03b78a54e8921a44329dcf5d2 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Mon, 25 May 2026 18:12:54 -0300 Subject: [PATCH 12/12] Trim matrix-android description --- hosts/NixOracle/site/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/NixOracle/site/index.html b/hosts/NixOracle/site/index.html index 7d0a9a1..06834a1 100644 --- a/hosts/NixOracle/site/index.html +++ b/hosts/NixOracle/site/index.html @@ -31,7 +31,7 @@

matrix-android — minimal Android Matrix client with a terminal aesthetic.
- Text-only, E2EE via libolm, SSO login, push via a Cloudflare Worker push gateway.
+ Text-only, E2EE via libolm, SSO login.

nixos-config