From 62d581f9607ee618b42377a0858bc22e849649b7 Mon Sep 17 00:00:00 2001 From: Adriano Caloiaro Date: Sat, 25 Jan 2025 08:39:54 -0700 Subject: [PATCH] chore: use reflex instead of air --- .gitignore | 1 + cmd/dev_server/main.go | 3 + flake.lock | 698 +++++++++++------------------------------ flake.nix | 69 +++- go.mod | 2 +- go.sum | 2 + 6 files changed, 246 insertions(+), 529 deletions(-) diff --git a/.gitignore b/.gitignore index 76f4270..c77d9a0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .pre-commit-config.yaml .env tmp +trigger_restart.go diff --git a/cmd/dev_server/main.go b/cmd/dev_server/main.go index 532b99f..10f116e 100644 --- a/cmd/dev_server/main.go +++ b/cmd/dev_server/main.go @@ -66,6 +66,9 @@ func main() { logger.Info("frm dev server started") chiRouter := chi.NewRouter() chiRouter.Use(httplog.RequestLogger(requestLogger)) + chiRouter.Get("/ping", func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + }) const workspaceParamName = "frm_workspace_id" f, err := frm.New(frm.Args{ PostgresURL: os.Getenv("POSTGRES_URL"), diff --git a/flake.lock b/flake.lock index d4a58e4..0233041 100644 --- a/flake.lock +++ b/flake.lock @@ -1,31 +1,8 @@ { "nodes": { - "air": { - "inputs": { - "devenv": "devenv", - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_2" - }, - "locked": { - "lastModified": 1706646947, - "narHash": "sha256-/FqDfCOnMPrYqB+PI2oXDCdEl3MORWec9I+Dwiem4Ps=", - "owner": "acaloiaro", - "repo": "air", - "rev": "57f33b58e0fa9cb199e9bd7b549a225e5dfcfd7f", - "type": "github" - }, - "original": { - "owner": "acaloiaro", - "repo": "air", - "type": "github" - } - }, "cachix": { "inputs": { - "devenv": "devenv_3", + "devenv": "devenv_2", "flake-compat": [ "devenv", "flake-compat" @@ -55,7 +32,7 @@ }, "cachix_2": { "inputs": { - "devenv": "devenv_4", + "devenv": "devenv_3", "flake-compat": [ "devenv", "cachix", @@ -91,7 +68,7 @@ }, "cachix_3": { "inputs": { - "devenv": "devenv_6", + "devenv": "devenv_5", "flake-compat": [ "ess", "devenv", @@ -124,7 +101,7 @@ }, "cachix_4": { "inputs": { - "devenv": "devenv_7", + "devenv": "devenv_6", "flake-compat": [ "ess", "devenv", @@ -163,7 +140,7 @@ }, "cachix_5": { "inputs": { - "devenv": "devenv_8", + "devenv": "devenv_7", "flake-compat": [ "ess", "devenv", @@ -207,34 +184,12 @@ } }, "devenv": { - "inputs": { - "flake-compat": "flake-compat", - "nix": "nix", - "nixpkgs": "nixpkgs", - "pre-commit-hooks": "pre-commit-hooks" - }, - "locked": { - "lastModified": 1688058187, - "narHash": "sha256-ipDcc7qrucpJ0+0eYNlwnE+ISTcq4m03qW+CWUshRXI=", - "owner": "cachix", - "repo": "devenv", - "rev": "c8778e3dc30eb9043e218aaa3861d42d4992de77", - "type": "github" - }, - "original": { - "owner": "cachix", - "ref": "v0.6.3", - "repo": "devenv", - "type": "github" - } - }, - "devenv_2": { "inputs": { "cachix": "cachix", - "flake-compat": "flake-compat_3", - "nix": "nix_4", - "nixpkgs": "nixpkgs_4", - "pre-commit-hooks": "pre-commit-hooks_3" + "flake-compat": "flake-compat_2", + "nix": "nix_3", + "nixpkgs": "nixpkgs_3", + "pre-commit-hooks": "pre-commit-hooks_2" }, "locked": { "lastModified": 1730745597, @@ -250,7 +205,7 @@ "type": "github" } }, - "devenv_3": { + "devenv_2": { "inputs": { "cachix": "cachix_2", "flake-compat": [ @@ -258,7 +213,7 @@ "cachix", "flake-compat" ], - "nix": "nix_3", + "nix": "nix_2", "nixpkgs": [ "devenv", "cachix", @@ -284,7 +239,7 @@ "type": "github" } }, - "devenv_4": { + "devenv_3": { "inputs": { "flake-compat": [ "devenv", @@ -293,8 +248,8 @@ "cachix", "flake-compat" ], - "nix": "nix_2", - "nixpkgs": "nixpkgs_2", + "nix": "nix", + "nixpkgs": "nixpkgs", "poetry2nix": "poetry2nix", "pre-commit-hooks": [ "devenv", @@ -319,13 +274,13 @@ "type": "github" } }, - "devenv_5": { + "devenv_4": { "inputs": { "cachix": "cachix_3", - "flake-compat": "flake-compat_5", - "nix": "nix_8", - "nixpkgs": "nixpkgs_8", - "pre-commit-hooks": "pre-commit-hooks_6" + "flake-compat": "flake-compat_4", + "nix": "nix_7", + "nixpkgs": "nixpkgs_7", + "pre-commit-hooks": "pre-commit-hooks_5" }, "locked": { "lastModified": 1728573431, @@ -341,7 +296,7 @@ "type": "github" } }, - "devenv_6": { + "devenv_5": { "inputs": { "cachix": "cachix_4", "flake-compat": [ @@ -350,7 +305,7 @@ "cachix", "flake-compat" ], - "nix": "nix_7", + "nix": "nix_6", "nixpkgs": [ "ess", "devenv", @@ -378,7 +333,7 @@ "type": "github" } }, - "devenv_7": { + "devenv_6": { "inputs": { "cachix": "cachix_5", "flake-compat": [ @@ -389,7 +344,7 @@ "cachix", "flake-compat" ], - "nix": "nix_6", + "nix": "nix_5", "nixpkgs": [ "ess", "devenv", @@ -421,7 +376,7 @@ "type": "github" } }, - "devenv_8": { + "devenv_7": { "inputs": { "flake-compat": [ "ess", @@ -433,8 +388,8 @@ "cachix", "flake-compat" ], - "nix": "nix_5", - "nixpkgs": "nixpkgs_5", + "nix": "nix_4", + "nixpkgs": "nixpkgs_4", "poetry2nix": "poetry2nix_2", "pre-commit-hooks": [ "ess", @@ -464,12 +419,12 @@ }, "ess": { "inputs": { - "devenv": "devenv_5", - "gomod2nix": "gomod2nix_2", + "devenv": "devenv_4", + "gomod2nix": "gomod2nix", "nixpkgs": [ "nixpkgs" ], - "systems": "systems_6" + "systems": "systems_4" }, "locked": { "lastModified": 1729888235, @@ -503,22 +458,6 @@ } }, "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { "flake": false, "locked": { "lastModified": 1696426674, @@ -534,7 +473,7 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1673956053, @@ -550,7 +489,7 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1673956053, @@ -637,27 +576,15 @@ } }, "flake-utils": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" + "inputs": { + "systems": "systems" }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_10": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -667,15 +594,12 @@ } }, "flake-utils_2": { - "inputs": { - "systems": "systems" - }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -686,7 +610,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1689068808, @@ -718,15 +642,12 @@ } }, "flake-utils_5": { - "inputs": { - "systems": "systems_4" - }, "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -736,12 +657,15 @@ } }, "flake-utils_6": { + "inputs": { + "systems": "systems_3" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -765,66 +689,7 @@ "type": "github" } }, - "flake-utils_8": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_9": { - "inputs": { - "systems": "systems_9" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "gitignore": { - "inputs": { - "nixpkgs": [ - "air", - "devenv", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { "inputs": { "nixpkgs": [ "devenv", @@ -846,7 +711,7 @@ "type": "github" } }, - "gitignore_3": { + "gitignore_2": { "inputs": { "nixpkgs": [ "ess", @@ -869,7 +734,7 @@ "type": "github" } }, - "gitignore_4": { + "gitignore_3": { "inputs": { "nixpkgs": [ "templ", @@ -892,29 +757,7 @@ }, "gomod2nix": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": [ - "air", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1705314449, - "narHash": "sha256-yfQQ67dLejP0FLK76LKHbkzcQqNIrux6MFe32MMFGNQ=", - "owner": "nix-community", - "repo": "gomod2nix", - "rev": "30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_2": { - "inputs": { - "flake-utils": "flake-utils_8", + "flake-utils": "flake-utils_6", "nixpkgs": [ "ess", "nixpkgs" @@ -934,28 +777,6 @@ "type": "github" } }, - "gomod2nix_3": { - "inputs": { - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "templ", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1722589758, - "narHash": "sha256-sbbA8b6Q2vB/t/r1znHawoXLysCyD4L/6n6/RykiSnA=", - "owner": "nix-community", - "repo": "gomod2nix", - "rev": "4e08ca09253ef996bd4c03afa383b23e35fe28a1", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "gomod2nix", - "type": "github" - } - }, "libgit2": { "flake": false, "locked": { @@ -1004,43 +825,30 @@ "type": "github" } }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, "nix": { "inputs": { - "lowdown-src": "lowdown-src", + "flake-compat": "flake-compat", "nixpkgs": [ - "air", + "devenv", + "cachix", + "devenv", + "cachix", "devenv", "nixpkgs" ], "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1676545802, - "narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=", + "lastModified": 1712911606, + "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", "owner": "domenkozar", "repo": "nix", - "rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f", + "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", "type": "github" }, "original": { "owner": "domenkozar", - "ref": "relaxed-flakes", + "ref": "devenv-2.21", "repo": "nix", "type": "github" } @@ -1102,10 +910,13 @@ }, "nix_2": { "inputs": { - "flake-compat": "flake-compat_2", - "nixpkgs": [ + "flake-compat": [ "devenv", "cachix", + "devenv", + "flake-compat" + ], + "nixpkgs": [ "devenv", "cachix", "devenv", @@ -1129,37 +940,6 @@ } }, "nix_3": { - "inputs": { - "flake-compat": [ - "devenv", - "cachix", - "devenv", - "flake-compat" - ], - "nixpkgs": [ - "devenv", - "cachix", - "devenv", - "nixpkgs" - ], - "nixpkgs-regression": "nixpkgs-regression_3" - }, - "locked": { - "lastModified": 1712911606, - "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", - "owner": "domenkozar", - "repo": "nix", - "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", - "type": "github" - }, - "original": { - "owner": "domenkozar", - "ref": "devenv-2.21", - "repo": "nix", - "type": "github" - } - }, - "nix_4": { "inputs": { "flake-compat": [ "devenv", @@ -1167,10 +947,10 @@ ], "flake-parts": "flake-parts", "libgit2": "libgit2", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "nixpkgs-23-11": "nixpkgs-23-11", - "nixpkgs-regression": "nixpkgs-regression_4", - "pre-commit-hooks": "pre-commit-hooks_2" + "nixpkgs-regression": "nixpkgs-regression_3", + "pre-commit-hooks": "pre-commit-hooks" }, "locked": { "lastModified": 1727438425, @@ -1187,9 +967,9 @@ "type": "github" } }, - "nix_5": { + "nix_4": { "inputs": { - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_3", "nixpkgs": [ "ess", "devenv", @@ -1201,6 +981,43 @@ "devenv", "nixpkgs" ], + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "locked": { + "lastModified": 1712911606, + "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", + "owner": "domenkozar", + "repo": "nix", + "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "devenv-2.21", + "repo": "nix", + "type": "github" + } + }, + "nix_5": { + "inputs": { + "flake-compat": [ + "ess", + "devenv", + "cachix", + "devenv", + "cachix", + "devenv", + "flake-compat" + ], + "nixpkgs": [ + "ess", + "devenv", + "cachix", + "devenv", + "cachix", + "devenv", + "nixpkgs" + ], "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -1225,32 +1042,26 @@ "devenv", "cachix", "devenv", - "cachix", - "devenv", "flake-compat" ], - "nixpkgs": [ - "ess", - "devenv", - "cachix", - "devenv", - "cachix", - "devenv", - "nixpkgs" - ], - "nixpkgs-regression": "nixpkgs-regression_6" + "flake-parts": "flake-parts_2", + "libgit2": "libgit2_2", + "nixpkgs": "nixpkgs_5", + "nixpkgs-23-11": "nixpkgs-23-11_2", + "nixpkgs-regression": "nixpkgs-regression_6", + "pre-commit-hooks": "pre-commit-hooks_3" }, "locked": { - "lastModified": 1712911606, - "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", + "lastModified": 1727438425, + "narHash": "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=", "owner": "domenkozar", "repo": "nix", - "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", + "rev": "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546", "type": "github" }, "original": { "owner": "domenkozar", - "ref": "devenv-2.21", + "ref": "devenv-2.24", "repo": "nix", "type": "github" } @@ -1260,14 +1071,12 @@ "flake-compat": [ "ess", "devenv", - "cachix", - "devenv", "flake-compat" ], - "flake-parts": "flake-parts_2", - "libgit2": "libgit2_2", + "flake-parts": "flake-parts_3", + "libgit2": "libgit2_3", "nixpkgs": "nixpkgs_6", - "nixpkgs-23-11": "nixpkgs-23-11_2", + "nixpkgs-23-11": "nixpkgs-23-11_3", "nixpkgs-regression": "nixpkgs-regression_7", "pre-commit-hooks": "pre-commit-hooks_4" }, @@ -1286,42 +1095,13 @@ "type": "github" } }, - "nix_8": { - "inputs": { - "flake-compat": [ - "ess", - "devenv", - "flake-compat" - ], - "flake-parts": "flake-parts_3", - "libgit2": "libgit2_3", - "nixpkgs": "nixpkgs_7", - "nixpkgs-23-11": "nixpkgs-23-11_3", - "nixpkgs-regression": "nixpkgs-regression_8", - "pre-commit-hooks": "pre-commit-hooks_5" - }, - "locked": { - "lastModified": 1727438425, - "narHash": "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=", - "owner": "domenkozar", - "repo": "nix", - "rev": "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546", - "type": "github" - }, - "original": { - "owner": "domenkozar", - "ref": "devenv-2.24", - "repo": "nix", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1678875422, - "narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=", + "lastModified": 1692808169, + "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459", + "rev": "9201b5ff357e781bf014d0330d18555695df7ba8", "type": "github" }, "original": { @@ -1491,39 +1271,7 @@ "type": "github" } }, - "nixpkgs-regression_8": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, "nixpkgs-stable": { - "locked": { - "lastModified": 1678872516, - "narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { "locked": { "lastModified": 1720386169, "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", @@ -1539,7 +1287,7 @@ "type": "github" } }, - "nixpkgs-stable_3": { + "nixpkgs-stable_2": { "locked": { "lastModified": 1678872516, "narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=", @@ -1555,55 +1303,39 @@ "type": "github" } }, - "nixpkgs_10": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1706683685, - "narHash": "sha256-FtPPshEpxH/ewBOsdKBNhlsL2MLEFv1hEnQ19f/bFsQ=", - "owner": "nixos", + "lastModified": 1737469691, + "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "5ad9903c16126a7d949101687af0aa589b1d7d3d", + "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_10": { "locked": { - "lastModified": 1724322575, - "narHash": "sha256-kRYwAdYsaICNb2WYcWtBFG6caSuT0v/vTAyR8ap0IR0=", + "lastModified": 1737569578, + "narHash": "sha256-6qY0pk2QmUtBT9Mywdvif0i/CLVgpCjMUn6g9vB+f3M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2a02822b466ffb9f1c02d07c5dd6b96d08b56c6b", + "rev": "47addd76727f42d351590c905d9d1905ca895b82", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-24.05", + "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_2": { - "locked": { - "lastModified": 1692808169, - "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9201b5ff357e781bf014d0330d18555695df7ba8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1717432640, "narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=", @@ -1619,7 +1351,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1716977621, "narHash": "sha256-Q1UQzYcMJH4RscmpTkjlgqQDX5yi1tZL0O345Ri6vXQ=", @@ -1635,7 +1367,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { "lastModified": 1692808169, "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", @@ -1651,7 +1383,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_5": { "locked": { "lastModified": 1717432640, "narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=", @@ -1667,7 +1399,7 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_6": { "locked": { "lastModified": 1728573531, "narHash": "sha256-WYerSn61NRVGaWlJaprHWDU9rGgMJVXlYZ+kmHB/gC8=", @@ -1683,7 +1415,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_7": { "locked": { "lastModified": 1716977621, "narHash": "sha256-Q1UQzYcMJH4RscmpTkjlgqQDX5yi1tZL0O345Ri6vXQ=", @@ -1699,7 +1431,7 @@ "type": "github" } }, - "nixpkgs_9": { + "nixpkgs_8": { "locked": { "lastModified": 1730768919, "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", @@ -1715,9 +1447,25 @@ "type": "github" } }, + "nixpkgs_9": { + "locked": { + "lastModified": 1706683685, + "narHash": "sha256-FtPPshEpxH/ewBOsdKBNhlsL2MLEFv1hEnQ19f/bFsQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "5ad9903c16126a7d949101687af0aa589b1d7d3d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils", "nix-github-actions": "nix-github-actions", "nixpkgs": [ "devenv", @@ -1744,7 +1492,7 @@ }, "poetry2nix_2": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_3", "nix-github-actions": "nix-github-actions_2", "nixpkgs": [ "ess", @@ -1773,42 +1521,12 @@ } }, "pre-commit-hooks": { - "inputs": { - "flake-compat": [ - "air", - "devenv", - "flake-compat" - ], - "flake-utils": "flake-utils", - "gitignore": "gitignore", - "nixpkgs": [ - "air", - "devenv", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1686050334, - "narHash": "sha256-R0mczWjDzBpIvM3XXhO908X5e2CQqjyh/gFbwZk/7/Q=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "6881eb2ae5d8a3516e34714e7a90d9d95914c4dc", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks_2": { "inputs": { "flake-compat": [ "devenv", "nix" ], - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_2", "gitignore": [ "devenv", "nix" @@ -1838,18 +1556,18 @@ "type": "github" } }, - "pre-commit-hooks_3": { + "pre-commit-hooks_2": { "inputs": { "flake-compat": [ "devenv", "flake-compat" ], - "gitignore": "gitignore_2", + "gitignore": "gitignore", "nixpkgs": [ "devenv", "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable_2" + "nixpkgs-stable": "nixpkgs-stable" }, "locked": { "lastModified": 1726745158, @@ -1865,7 +1583,7 @@ "type": "github" } }, - "pre-commit-hooks_4": { + "pre-commit-hooks_3": { "inputs": { "flake-compat": [ "ess", @@ -1874,7 +1592,7 @@ "devenv", "nix" ], - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_4", "gitignore": [ "ess", "devenv", @@ -1913,7 +1631,7 @@ "type": "github" } }, - "pre-commit-hooks_5": { + "pre-commit-hooks_4": { "inputs": { "flake-compat": [ "ess", @@ -1952,21 +1670,21 @@ "type": "github" } }, - "pre-commit-hooks_6": { + "pre-commit-hooks_5": { "inputs": { "flake-compat": [ "ess", "devenv", "flake-compat" ], - "flake-utils": "flake-utils_7", - "gitignore": "gitignore_3", + "flake-utils": "flake-utils_5", + "gitignore": "gitignore_2", "nixpkgs": [ "ess", "devenv", "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable_3" + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { "lastModified": 1686050334, @@ -1984,11 +1702,10 @@ }, "root": { "inputs": { - "air": "air", - "devenv": "devenv_2", + "devenv": "devenv", "ess": "ess", - "nixpkgs": "nixpkgs_9", - "systems": "systems_7", + "nixpkgs": "nixpkgs_8", + "systems": "systems_5", "tailwindcss": "tailwindcss", "templ": "templ" } @@ -2083,55 +1800,10 @@ "type": "github" } }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_9": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tailwindcss": { "inputs": { - "nixpkgs": "nixpkgs_10", - "systems": "systems_8" + "nixpkgs": "nixpkgs_9", + "systems": "systems_6" }, "locked": { "lastModified": 1730850516, @@ -2149,29 +1821,29 @@ }, "templ": { "inputs": { - "gitignore": "gitignore_4", - "gomod2nix": "gomod2nix_3", - "nixpkgs": "nixpkgs_11", + "gitignore": "gitignore_3", + "nixpkgs": "nixpkgs_10", + "nixpkgs-unstable": "nixpkgs-unstable", "xc": "xc" }, "locked": { - "lastModified": 1730278073, - "narHash": "sha256-0KGht5IMbJV8KkXgT5qJxA9bcmWevzXXAVPMQTm0ccw=", + "lastModified": 1735817715, + "narHash": "sha256-kTP/DLnou3KETZRtvHdeiMmRW6xldgZBAn9O9p9s/MA=", "owner": "a-h", "repo": "templ", - "rev": "d9eefff2eeea5c78c938baf556d7ded6880e2fca", + "rev": "e54517eb7d8a7d9ef67d43177709a0ca26235e43", "type": "github" }, "original": { "owner": "a-h", - "ref": "v0.2.793", + "ref": "v0.3.819", "repo": "templ", "type": "github" } }, "xc": { "inputs": { - "flake-utils": "flake-utils_10", + "flake-utils": "flake-utils_7", "nixpkgs": [ "templ", "nixpkgs" diff --git a/flake.nix b/flake.nix index 2cb1b93..d455510 100644 --- a/flake.nix +++ b/flake.nix @@ -8,11 +8,7 @@ url = "github:acaloiaro/ess/v2.13.0"; inputs.nixpkgs.follows = "nixpkgs"; }; - air = { - url = "github:acaloiaro/air"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - templ.url = "github:a-h/templ/v0.2.793"; + templ.url = "github:a-h/templ/v0.3.819"; }; outputs = { @@ -20,7 +16,6 @@ nixpkgs, devenv, systems, - air, tailwindcss, ... } @ inputs: let @@ -49,9 +44,9 @@ }; packages = with pkgs; [ - air.packages.${system}.default go-migrate nixpacks + reflex sqlc postgresql pre-commit @@ -148,10 +143,10 @@ description = "Execute 'ess' with default parameters"; }; - server = { + frm-server = { description = "Run the development server"; exec = '' - tailwindcss -c ui/tailwind.config.js -i ./ui/css/tailwind.css -o ./static/css/styles.css && run-generate-models && go generate ./... && go build -o ./tmp/frm ./cmd/dev_server && ./tmp/frm + bash -c 'pkill ./tmp/frm; exit 0' && go generate ./... && go build -o ./tmp/frm ./cmd/dev_server && ./tmp/frm ''; }; @@ -166,17 +161,61 @@ ${sqlc}/bin/sqlc generate && echo sqlc generate done ''; }; - }; - processes.air = { - exec = '' - ${air.packages.${system}.default}/bin/air -c .air.toml -build.bin server - ''; + rebuild-tailwind = { + description = "rebuild tailwind's output and trigger a templ rebuild by touching a templ file"; + # When tailwind updates CSS, we need to trigger a rebuild of the go application, hence the modification to main.go + exec = "tailwindcss -c ui/tailwind.config.js -i ./ui/css/tailwind.css -o ./static/css/styles.css && echo -e \"package frm\nimport \\x22fmt\\x22\nfunc main() { fmt.Println($(head -c2 /dev/urandom | od -An -vtu4)) }\" > ./trigger_restart.go"; + }; }; processes.templ = { exec = '' - templ generate --watch --proxy="http://localhost:3000" + templ generate -cmd frm-server -watch -watch-pattern='(^(?:[^e]|e[^n]|en[^u]|enu[^m]|enum[^e]|enume[^r])*\.go$)|(.+\.templ$)|(.+_templ\.txt$)|(.+styles\.css$)' -proxy 'http://localhost:3000' -v trace + ''; + process-compose = { + availability = { + restart = "on_failure"; + }; + readiness_probe = { + http_get = { + host = "127.0.0.1"; + scheme = "http"; + path = "/ping"; + port = "3000"; + initial_delay_seconds = 5; + period_seconds = 2; + timeout_seconds = 5; + success_threshold = 1; + failure_threshold = 3; + }; + }; + + depends_on = { + postgres = { + condition = "process_healthy"; + }; + }; + }; + }; + + processes.tailwindcss = { + exec = '' + reflex \ + -v \ + --inverse-regex='\.devenv' \ + --inverse-regex='\.direnv' \ + --inverse-regex='.+trigger_rebuild.+' \ + -r '.+tailwind\.css$|.+\.templ$' \ + -- rebuild-tailwind + ''; + }; + + processes.sqlc = { + exec = '' + reflex \ + -s -r '.+\.sql$' \ + -- run-generate-models ''; }; diff --git a/go.mod b/go.mod index 012100b..e899562 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/acaloiaro/frm go 1.23.2 require ( - github.com/a-h/templ v0.2.793 + github.com/a-h/templ v0.3.819 github.com/go-chi/chi/v5 v5.1.0 github.com/go-chi/httplog/v2 v2.1.1 github.com/golang-migrate/migrate/v4 v4.18.0 diff --git a/go.sum b/go.sum index 07c9021..59619c6 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/a-h/templ v0.2.793 h1:Io+/ocnfGWYO4VHdR0zBbf39PQlnzVCVVD+wEEs6/qY= github.com/a-h/templ v0.2.793/go.mod h1:lq48JXoUvuQrU0VThrK31yFwdRjTCnIE5bcPCM9IP1w= +github.com/a-h/templ v0.3.819 h1:KDJ5jTFN15FyJnmSmo2gNirIqt7hfvBD2VXVDTySckM= +github.com/a-h/templ v0.3.819/go.mod h1:iDJKJktpttVKdWoTkRNNLcllRI+BlpopJc+8au3gOUo= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=