From 254804698513c586519014c18d30fdde81b9b933 Mon Sep 17 00:00:00 2001 From: Will Holdsworth Date: Sat, 7 Mar 2026 16:42:57 +1100 Subject: [PATCH 1/2] feat(mealie): install --- modules/nixos/bundles/server.nix | 1 + modules/nixos/features/mealie.nix | 56 +++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 modules/nixos/features/mealie.nix diff --git a/modules/nixos/bundles/server.nix b/modules/nixos/bundles/server.nix index 0cbc9e9..1aa12e4 100644 --- a/modules/nixos/bundles/server.nix +++ b/modules/nixos/bundles/server.nix @@ -18,6 +18,7 @@ "kavita" "libretranslate" "lidarr" + "mealie" "miniflux" "ntfy-sh" "nzbget" diff --git a/modules/nixos/features/mealie.nix b/modules/nixos/features/mealie.nix new file mode 100644 index 0000000..368ee09 --- /dev/null +++ b/modules/nixos/features/mealie.nix @@ -0,0 +1,56 @@ +{ + config, + ... +}: +let + port = 5026; + certloc = "/var/lib/acme/fi33.buzz"; + hostname = "mealie.fi33.buzz"; + url = "https://${hostname}"; +in +{ + services = { + mealie = { + enable = true; + inherit port; + settings = { + TZ = "Australia/Melbourne"; + ALLOW_SIGNUP = "false"; + }; + }; + + gatus.settings.endpoints = [ + { + name = "Mealie"; + group = "Private Services"; + inherit url; + interval = "5m"; + conditions = [ + "[STATUS] == 200" + "[CONNECTED] == true" + "[RESPONSE_TIME] < 500" + ]; + alerts = [ { type = "ntfy"; } ]; + } + ]; + + # borgmatic.settings = { + # source_directories = [ ]; + # postgresql_databases = [ + # { + # name = "mealie"; + # hostname = "localhost"; + # username = "root"; + # password = "{credential systemd borgmatic-pg}"; + # } + # ]; + # }; + + caddy.virtualHosts.${hostname}.extraConfig = '' + reverse_proxy localhost:${toString port} + tls ${certloc}/cert.pem ${certloc}/key.pem { + protocols tls1.3 + } + ''; + }; +} From 1b86bc33db643908e8ea658d16796afb13b77ff7 Mon Sep 17 00:00:00 2001 From: Will Holdsworth Date: Sat, 7 Mar 2026 16:43:12 +1100 Subject: [PATCH 2/2] feat(homepage-dashboard): add mealie --- modules/nixos/features/homepage-dashboard.nix | 15 +++++++++++++++ secrets/mealie.age | Bin 0 -> 681 bytes secrets/secrets.nix | 1 + 3 files changed, 16 insertions(+) create mode 100644 secrets/mealie.age diff --git a/modules/nixos/features/homepage-dashboard.nix b/modules/nixos/features/homepage-dashboard.nix index 694ad77..3516600 100644 --- a/modules/nixos/features/homepage-dashboard.nix +++ b/modules/nixos/features/homepage-dashboard.nix @@ -27,6 +27,7 @@ let "jellyfin" "kavita-api" "lidarr" + "mealie" "miniflux" "nzbget" "paperless" @@ -202,6 +203,20 @@ in siteMonitor = "https://couchdb.fi33.buzz/_utils/"; }; } + { + Mealie = { + description = "Recipe manager and meal planner"; + icon = "mealie.svg"; + href = "https://mealie.fi33.buzz/"; + siteMonitor = "https://mealie.fi33.buzz/"; + widget = { + type = "mealie"; + url = "https://mealie.fi33.buzz/"; + version = 2; + key = "@mealie@"; + }; + }; + } { ntfy = { description = "Send push notifications using PUT/POST"; diff --git a/secrets/mealie.age b/secrets/mealie.age new file mode 100644 index 0000000000000000000000000000000000000000..e15d8914dfafbca8a0cacf30ed3bc2aa2bd22ce6 GIT binary patch literal 681 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSH^a;^+2~==&G_eeF z)3z*6^0D+V3($87FL5i$jw&`W^G%jgPYS3kP0u$e2`KQ+3p6SZs7g0;GeNh_FEP)vJWwGb!q7Cb*x$l9%G@wd zJ3`;jvLY-rvLMXU(A_7wusq1e!ad4Auh7@Pqns;)i}*8CD_>` z*VWU_!`<1SB+sqP!yw$Nq9QS?G!or5pAv7&%0LC9(t@&57ZWdwAP?8f%19RrV`Bra zz#Pw{K*RD}3m<>?&@AsHZ9{E$4^J+$N~1g{V-x?vsPw2*=d98o?{aNNuhO94vZTPE z0!ND?PuEhna`#Y69}6yBU0sE$@bYrUL-Oa#p^xyn_V~|7qXF6r*+Ob`!i*hyn^f|PJOS!(?Xl)`YKCYf6RW#pD+Ag zu=h^S*w{r|Ere2!rG+=8w;E2@x3EZN{LR#-F5H#%IpoE+eFdwkzs|F@HkkHq&oi54%gSXkf