diff --git a/.envrc b/.envrc
index 565a52a..6403885 100644
--- a/.envrc
+++ b/.envrc
@@ -1,2 +1,8 @@
-source $(fetchurl https://gitlab.com/rensa-nix/direnv/-/raw/v0.3.0/direnvrc "sha256-u7+KEz684NnIZ+Vh5x5qLrt8rKdnUNexewBoeTcEVHQ=")
-use ren //repo/devShells/default
+if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
+fi
+
+if ! use flake . --impure
+then
+ echo "devenv could not be build. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
+fi
diff --git a/.gitignore b/.gitignore
index b2be92b..4ee2f34 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,7 @@
+.idea/
+.devenv/
+.direnv/
+*.tf*
result
+.pre-commit-config.yaml
+.terraform*
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e1db81f..fce2c08 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,4 @@
-# Generated by soonix, DO NOT EDIT
include:
-- component: gitlab.com/TECHNOFAB/nix-gitlab-ci/nix-gitlab-ci@3.0.1
- inputs:
- version: 3.0.1
+ - component: gitlab.com/TECHNOFAB/nix-gitlab-ci/nix-gitlab-ci@2.1.0
+ inputs:
+ version: 2.1.0
diff --git a/README.md b/README.md
index d1350a8..3411a76 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,16 @@
# Coder Templates
-Templates for [Coder](https://coder.com), built with [Tofunix](https://tofunix.projects.tf).
+Templates for [Coder](https://coder.com), built with Nix (Terranix).
-Check [this Coder tutorial](https://coder.com/docs/tutorials/template-from-scratch#add-the-template-files-to-coder) for how to install the templates ("Dashboard" method recommended).
+> [!NOTE]
+> !1 changed how the docker image is built.
+> If `nix store gc` results in `/nix/var/nix/profiles/default` being deleted
+> you might have to clear the /nix persistent volume to fix it. See the
+> merge request's comments for more information.
## Templates
-- Nix Kubernetes ([Download tar](https://gitlab.com/TECHNOFAB/coder-templates/-/jobs/artifacts/main/raw/templates/nix-kubernetes.tar?job=build:%20%5Bnix-kubernetes%5D))
+- Nix Kubernetes
> provisions a Coder workspace on Kubernetes, running a Nix-built image,
> which also contains Nix and supports Dotfiles management using home-manager.
+ > Nix-ception ;P
diff --git a/docs/images/logo.svg b/docs/images/logo.svg
deleted file mode 100644
index d6becf1..0000000
--- a/docs/images/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index b9db44c..0000000
--- a/docs/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Coder Templates
-
-Templates for [Coder](https://coder.com), built with [Tofunix](https://tofunix.projects.tf).
-
-Check [this Coder tutorial](https://coder.com/docs/tutorials/template-from-scratch#add-the-template-files-to-coder) for how to install the templates ("Dashboard" method recommended).
-
-## Templates
-
-- [Nix Kubernetes](./parameters/nix-kubernetes.md) ([Download tar](https://gitlab.com/TECHNOFAB/coder-templates/-/jobs/artifacts/main/raw/templates/nix-kubernetes.tar?job=build:%20%5Bnix-kubernetes%5D))
- > provisions a Coder workspace on Kubernetes, running a Nix-built image,
- > which also contains Nix and supports Dotfiles management using home-manager.
diff --git a/docs/style.css b/docs/style.css
deleted file mode 100644
index b2ae4ff..0000000
--- a/docs/style.css
+++ /dev/null
@@ -1,15 +0,0 @@
-.md-header__button.md-logo {
- margin: 0;
- padding-top: .2rem;
- padding-bottom: .2rem;
-}
-
-[dir="ltr"] .md-header__title {
- margin-left: 0;
-}
-
-.md-header__button.md-logo img,
-.md-header__button.md-logo svg {
- height: 2rem;
-}
-
diff --git a/flake.lock b/flake.lock
index 3fb2aac..0d00cdf 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,60 +1,878 @@
{
"nodes": {
- "nixpkgs": {
+ "bats-assert": {
+ "flake": false,
"locked": {
- "lastModified": 1762596750,
- "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e",
+ "lastModified": 1636059754,
+ "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=",
+ "owner": "bats-core",
+ "repo": "bats-assert",
+ "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5",
"type": "github"
},
"original": {
+ "owner": "bats-core",
+ "repo": "bats-assert",
+ "type": "github"
+ }
+ },
+ "bats-support": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1548869839,
+ "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=",
+ "owner": "bats-core",
+ "repo": "bats-support",
+ "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "bats-core",
+ "repo": "bats-support",
+ "type": "github"
+ }
+ },
+ "cachix": {
+ "inputs": {
+ "devenv": "devenv_2",
+ "flake-compat": [
+ "devenv",
+ "flake-compat"
+ ],
+ "git-hooks": [
+ "devenv",
+ "pre-commit-hooks"
+ ],
+ "nixpkgs": [
+ "devenv",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1724232775,
+ "narHash": "sha256-6u2DycIEgrgNYlLxyGqdFVmBNiKIitnQKJ1pbRP5oko=",
+ "owner": "cachix",
+ "repo": "cachix",
+ "rev": "03b6cb3f953097bff378fb8b9ea094bd091a4ec7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "cachix",
+ "type": "github"
+ }
+ },
+ "cachix_2": {
+ "inputs": {
+ "devenv": "devenv_3",
+ "flake-compat": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "flake-compat"
+ ],
+ "nixpkgs": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "nixpkgs"
+ ],
+ "pre-commit-hooks": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "pre-commit-hooks"
+ ]
+ },
+ "locked": {
+ "lastModified": 1712055811,
+ "narHash": "sha256-7FcfMm5A/f02yyzuavJe06zLa9hcMHsagE28ADcmQvk=",
+ "owner": "cachix",
+ "repo": "cachix",
+ "rev": "02e38da89851ec7fec3356a5c04bc8349cae0e30",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "cachix",
+ "type": "github"
+ }
+ },
+ "devenv": {
+ "inputs": {
+ "cachix": "cachix",
+ "flake-compat": "flake-compat_2",
+ "nix": "nix_3",
+ "nixpkgs": "nixpkgs_3",
+ "pre-commit-hooks": "pre-commit-hooks_2"
+ },
+ "locked": {
+ "lastModified": 1726417371,
+ "narHash": "sha256-tBq8w81ZV48tyFhLz5WQjqfoEShIXkOb6Rlzidcz8yQ=",
+ "owner": "cachix",
+ "repo": "devenv",
+ "rev": "1f55f89ca32d617b7a7c18422e3c364cb003df3d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "devenv",
+ "type": "github"
+ }
+ },
+ "devenv_2": {
+ "inputs": {
+ "cachix": "cachix_2",
+ "flake-compat": [
+ "devenv",
+ "cachix",
+ "flake-compat"
+ ],
+ "nix": "nix_2",
+ "nixpkgs": [
+ "devenv",
+ "cachix",
+ "nixpkgs"
+ ],
+ "pre-commit-hooks": [
+ "devenv",
+ "cachix",
+ "git-hooks"
+ ]
+ },
+ "locked": {
+ "lastModified": 1723156315,
+ "narHash": "sha256-0JrfahRMJ37Rf1i0iOOn+8Z4CLvbcGNwa2ChOAVrp/8=",
+ "owner": "cachix",
+ "repo": "devenv",
+ "rev": "ff5eb4f2accbcda963af67f1a1159e3f6c7f5f91",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "devenv",
+ "type": "github"
+ }
+ },
+ "devenv_3": {
+ "inputs": {
+ "flake-compat": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "cachix",
+ "flake-compat"
+ ],
+ "nix": "nix",
+ "nixpkgs": "nixpkgs",
+ "poetry2nix": "poetry2nix",
+ "pre-commit-hooks": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "cachix",
+ "pre-commit-hooks"
+ ]
+ },
+ "locked": {
+ "lastModified": 1708704632,
+ "narHash": "sha256-w+dOIW60FKMaHI1q5714CSibk99JfYxm0CzTinYWr+Q=",
+ "owner": "cachix",
+ "repo": "devenv",
+ "rev": "2ee4450b0f4b95a1b90f2eb5ffea98b90e48c196",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "ref": "python-rewrite",
+ "repo": "devenv",
+ "type": "github"
+ }
+ },
+ "flake-compat": {
+ "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_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "devenv",
+ "nix",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1712014858,
+ "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1712014858,
+ "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1689068808,
+ "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "locked": {
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_3": {
+ "locked": {
+ "lastModified": 1634851050,
+ "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "gitignore": {
+ "inputs": {
+ "nixpkgs": [
+ "devenv",
+ "pre-commit-hooks",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1709087332,
+ "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "type": "github"
+ }
+ },
+ "libgit2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1697646580,
+ "narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=",
+ "owner": "libgit2",
+ "repo": "libgit2",
+ "rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "libgit2",
+ "repo": "libgit2",
+ "type": "github"
+ }
+ },
+ "nix": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "nixpkgs": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "cachix",
+ "devenv",
+ "nixpkgs"
+ ],
+ "nixpkgs-regression": "nixpkgs-regression"
+ },
+ "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-devtools": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1722613543,
+ "narHash": "sha256-P3UoMSECGwbMAWIwViPlbw2s8lIqsj3uFzO/G/5EfnI=",
+ "owner": "TECHNOFAB",
+ "repo": "nix-devtools",
+ "rev": "a004f97ca84673c4438a8853ba3b5b3186903752",
+ "type": "gitlab"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "TECHNOFAB",
+ "repo": "nix-devtools",
+ "type": "gitlab"
+ }
+ },
+ "nix-github-actions": {
+ "inputs": {
+ "nixpkgs": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "cachix",
+ "devenv",
+ "poetry2nix",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1688870561,
+ "narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=",
+ "owner": "nix-community",
+ "repo": "nix-github-actions",
+ "rev": "165b1650b753316aa7f1787f3005a8d2da0f5301",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nix-github-actions",
+ "type": "github"
+ }
+ },
+ "nix-gitlab-ci": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1749124633,
+ "narHash": "sha256-vgYHrbAFRfgNYysW74Eam/S7KruYWMLCHG4U32xgHKY=",
+ "owner": "TECHNOFAB",
+ "repo": "nix-gitlab-ci",
+ "rev": "f121b10dc9a7417906a886154e3065410a72462d",
+ "type": "gitlab"
+ },
+ "original": {
+ "dir": "lib",
+ "owner": "TECHNOFAB",
+ "ref": "2.1.0",
+ "repo": "nix-gitlab-ci",
+ "type": "gitlab"
+ }
+ },
+ "nix_2": {
+ "inputs": {
+ "flake-compat": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "flake-compat"
+ ],
+ "nixpkgs": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "nixpkgs"
+ ],
+ "nixpkgs-regression": "nixpkgs-regression_2"
+ },
+ "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_3": {
+ "inputs": {
+ "flake-compat": [
+ "devenv",
+ "flake-compat"
+ ],
+ "flake-parts": "flake-parts",
+ "libgit2": "libgit2",
+ "nixpkgs": "nixpkgs_2",
+ "nixpkgs-23-11": "nixpkgs-23-11",
+ "nixpkgs-regression": "nixpkgs-regression_3",
+ "pre-commit-hooks": "pre-commit-hooks"
+ },
+ "locked": {
+ "lastModified": 1725980365,
+ "narHash": "sha256-uDwWyizzlQ0HFzrhP6rVp2+2NNA+/TM5zT32dR8GUlg=",
+ "owner": "domenkozar",
+ "repo": "nix",
+ "rev": "1e61e9f40673f84c3b02573145492d8af581bec5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "domenkozar",
+ "ref": "devenv-2.24",
+ "repo": "nix",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "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-23-11": {
+ "locked": {
+ "lastModified": 1717159533,
+ "narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "dir": "lib",
+ "lastModified": 1711703276,
+ "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
+ "type": "github"
+ },
+ "original": {
+ "dir": "lib",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
- "nixpkgs-lib": {
+ "nixpkgs-regression": {
"locked": {
- "lastModified": 1754184128,
- "narHash": "sha256-AjhoyBL4eSyXf01Bmc6DiuaMrJRNdWopmdnMY0Pa/M0=",
- "owner": "nix-community",
- "repo": "nixpkgs.lib",
- "rev": "02e72200e6d56494f4a7c0da8118760736e41b60",
+ "lastModified": 1643052045,
+ "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
- "owner": "nix-community",
- "repo": "nixpkgs.lib",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
- "ren": {
- "inputs": {
- "nixpkgs-lib": "nixpkgs-lib"
- },
+ "nixpkgs-regression_2": {
"locked": {
- "dir": "lib",
- "lastModified": 1758738378,
- "narHash": "sha256-NjzqdvQCDDdObEBH8x/vdhbdhrIB+N9E570uCdksGHY=",
- "owner": "rensa-nix",
- "repo": "core",
- "rev": "abe19f9f13aff41de2b63304545c87d193d19ef4",
- "type": "gitlab"
+ "lastModified": 1643052045,
+ "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
+ "type": "github"
},
"original": {
- "dir": "lib",
- "owner": "rensa-nix",
- "repo": "core",
- "type": "gitlab"
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
+ "type": "github"
+ }
+ },
+ "nixpkgs-regression_3": {
+ "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": 1720386169,
+ "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-24.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1717432640,
+ "narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "88269ab3044128b7c2f4c7d68448b2fb50456870",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-24.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1716977621,
+ "narHash": "sha256-Q1UQzYcMJH4RscmpTkjlgqQDX5yi1tZL0O345Ri6vXQ=",
+ "owner": "cachix",
+ "repo": "devenv-nixpkgs",
+ "rev": "4267e705586473d3e5c8d50299e71503f16a6fb6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "ref": "rolling",
+ "repo": "devenv-nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1728249353,
+ "narHash": "sha256-7NBJm1jfMeAowE1J2oljYqWVvI9X7FyyxBY4O8uB/Os=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c8a17040be4a20b29589cb4043a9e0c36af1930e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1636823747,
+ "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "locked": {
+ "lastModified": 1725103162,
+ "narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "poetry2nix": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nix-github-actions": "nix-github-actions",
+ "nixpkgs": [
+ "devenv",
+ "cachix",
+ "devenv",
+ "cachix",
+ "devenv",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1692876271,
+ "narHash": "sha256-IXfZEkI0Mal5y1jr6IRWMqK8GW2/f28xJenZIPQqkY0=",
+ "owner": "nix-community",
+ "repo": "poetry2nix",
+ "rev": "d5006be9c2c2417dafb2e2e5034d83fabd207ee3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "poetry2nix",
+ "type": "github"
+ }
+ },
+ "pre-commit-hooks": {
+ "inputs": {
+ "flake-compat": [
+ "devenv",
+ "nix"
+ ],
+ "flake-utils": "flake-utils_2",
+ "gitignore": [
+ "devenv",
+ "nix"
+ ],
+ "nixpkgs": [
+ "devenv",
+ "nix",
+ "nixpkgs"
+ ],
+ "nixpkgs-stable": [
+ "devenv",
+ "nix",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1712897695,
+ "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=",
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "type": "github"
+ }
+ },
+ "pre-commit-hooks_2": {
+ "inputs": {
+ "flake-compat": [
+ "devenv",
+ "flake-compat"
+ ],
+ "gitignore": "gitignore",
+ "nixpkgs": [
+ "devenv",
+ "nixpkgs"
+ ],
+ "nixpkgs-stable": "nixpkgs-stable"
+ },
+ "locked": {
+ "lastModified": 1725513492,
+ "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=",
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "rev": "7570de7b9b504cfe92025dd1be797bf546f66528",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "type": "github"
}
},
"root": {
"inputs": {
- "nixpkgs": "nixpkgs",
- "ren": "ren"
+ "devenv": "devenv",
+ "flake-parts": "flake-parts_2",
+ "nix-devtools": "nix-devtools",
+ "nix-gitlab-ci": "nix-gitlab-ci",
+ "nixpkgs": "nixpkgs_4",
+ "systems": "systems_2",
+ "terranix": "terranix",
+ "treefmt-nix": "treefmt-nix"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "systems_2": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "terranix": {
+ "inputs": {
+ "bats-assert": "bats-assert",
+ "bats-support": "bats-support",
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_5",
+ "terranix-examples": "terranix-examples"
+ },
+ "locked": {
+ "lastModified": 1695406838,
+ "narHash": "sha256-xiUfVD6rtsVWFotVtUW3Q1nQh4obKzgvpN1wqZuGXvM=",
+ "owner": "terranix",
+ "repo": "terranix",
+ "rev": "fc9077ca02ab5681935dbf0ecd725c4d889b9275",
+ "type": "github"
+ },
+ "original": {
+ "owner": "terranix",
+ "repo": "terranix",
+ "type": "github"
+ }
+ },
+ "terranix-examples": {
+ "locked": {
+ "lastModified": 1636300201,
+ "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=",
+ "owner": "terranix",
+ "repo": "terranix-examples",
+ "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "terranix",
+ "repo": "terranix-examples",
+ "type": "github"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_6"
+ },
+ "locked": {
+ "lastModified": 1725271838,
+ "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
}
}
},
diff --git a/flake.nix b/flake.nix
index fd3e3a8..6bd9be0 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,37 +1,175 @@
{
- inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
- ren.url = "gitlab:rensa-nix/core?dir=lib";
- };
+ description = "Coder Templates";
outputs = {
- ren,
- self,
+ nixpkgs,
+ flake-parts,
+ systems,
...
} @ inputs:
- ren.buildWith
- {
- inherit inputs;
- cellsFrom = ./nix;
- transformInputs = system: i:
- i
- // {
- pkgs = import i.nixpkgs {
- inherit system;
+ flake-parts.lib.mkFlake {inherit inputs;} {
+ imports = [
+ inputs.devenv.flakeModule
+ inputs.nix-gitlab-ci.flakeModule
+ inputs.nix-devtools.flakeModule
+ inputs.treefmt-nix.flakeModule
+ ];
+ systems = import systems;
+ flake = {
+ };
+ perSystem = {
+ pkgs,
+ config,
+ system,
+ ...
+ }: {
+ _module.args.pkgs = import nixpkgs {
+ inherit system;
+ config.allowUnfree = true;
+ };
+ treefmt = {
+ projectRootFile = "flake.nix";
+ programs = {
+ alejandra.enable = true;
+ mdformat = {
+ enable = true;
+ package = pkgs.mdformat.withPlugins (p: [
+ p.mdformat-gfm-alerts
+ ]);
+ };
};
};
- cellBlocks = with ren.blocks; [
- (simple "devShells")
- (simple "docs")
- (simple "ci")
- (simple "packages")
- ];
- }
- {
- packages = ren.select self [
- ["repo" "ci" "packages"]
- ["repo" "docs"]
- ["packages" "packages"]
- ];
+
+ devenv.shells.default = {
+ packages = with pkgs; [
+ opentofu
+ coder
+ buildah
+ ];
+
+ pre-commit.hooks = {
+ treefmt = {
+ enable = true;
+ packageOverrides.treefmt = config.treefmt.build.wrapper;
+ };
+ convco.enable = true;
+ };
+
+ task = {
+ enable = true;
+ alias = ",";
+ tasks = {
+ "build" = {
+ requires.vars = ["TEMPLATE"];
+ cmds = [
+ "nix build .#{{ .TEMPLATE }}"
+ "install result {{ .TEMPLATE }}/template.tf.json"
+ ];
+ };
+ "validate" = {
+ desc = "Validate the resulting terraform files";
+ deps = ["build"];
+ requires.vars = ["TEMPLATE"];
+ dir = "{{ .TEMPLATE }}";
+ cmds = [
+ "${pkgs.opentofu}/bin/tofu init"
+ "${pkgs.opentofu}/bin/tofu validate"
+ ];
+ };
+ "upload-to-coder" = {
+ desc = "Uploads the specified template to coder";
+ deps = ["build" "validate"];
+ requires.vars = ["TEMPLATE"];
+ dir = "{{ .TEMPLATE }}";
+ interactive = true;
+ cmd = ''${pkgs.coder}/bin/coder templates push "{{ .TEMPLATE }}"'';
+ };
+ };
+ };
+ };
+
+ packages = {
+ nix-coder-image = pkgs.callPackage ./image.nix {};
+ nix-kubernetes = inputs.terranix.lib.terranixConfiguration {
+ inherit system;
+ modules = [./nix-kubernetes];
+ };
+ };
+
+ ci = {
+ stages = ["build" "upload"];
+ jobs = let
+ SYSTEMS = ["aarch64-linux" "x86_64-linux"];
+ in {
+ "build" = {
+ stage = "build";
+ parallel.matrix = [
+ {TEMPLATE = ["nix-kubernetes"];}
+ ];
+ nix.deps = [pkgs.gnutar];
+ script = [
+ "nix build .#\${TEMPLATE}"
+ "install -D result templates/\${TEMPLATE}.tf.json"
+ "tar -cf templates/\${TEMPLATE}.tar -C templates \${TEMPLATE}.tf.json"
+ ];
+ artifacts.paths = ["templates/"];
+ };
+ "build:image" = {
+ stage = "build";
+ parallel.matrix = [
+ {SYSTEM = SYSTEMS;}
+ ];
+ script = [
+ "nix build .#nix-coder-image --system $SYSTEM"
+ "install -D result dist/nix-coder-image_\${SYSTEM}.tar.gz"
+ ];
+ artifacts.paths = ["dist/"];
+ };
+ "upload" = {
+ stage = "upload";
+ nix.deps = [pkgs.buildah];
+ needs = ["build:image"];
+ before_script = [
+ ''export REGISTRY_AUTH_FILE=''${HOME}/auth.json''
+ ''echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY''
+ ''
+ mkdir -p /etc/containers &&
+ echo '{"default":[{"type":"insecureAcceptAnything"}]}' > /etc/containers/policy.json
+ ''
+ ''mkdir -p /var/tmp''
+ ];
+ script =
+ [
+ ''buildah manifest create localhost/nix-coder-image''
+ ]
+ ++ (
+ builtins.map (sys: ''
+ buildah manifest add localhost/nix-coder-image docker-archive:dist/nix-coder-image_${sys}.tar.gz
+ '')
+ SYSTEMS
+ )
+ ++ [
+ ''
+ buildah manifest push --all localhost/nix-coder-image \
+ docker://''${CI_REGISTRY_IMAGE}/nix-coder-image:$CI_COMMIT_SHORT_SHA
+ ''
+ ];
+ };
+ };
+ };
+ };
};
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+
+ flake-parts.url = "github:hercules-ci/flake-parts";
+ systems.url = "github:nix-systems/default";
+ devenv.url = "github:cachix/devenv";
+ nix-gitlab-ci.url = "gitlab:TECHNOFAB/nix-gitlab-ci/2.1.0?dir=lib";
+ nix-devtools.url = "gitlab:TECHNOFAB/nix-devtools?dir=lib";
+ treefmt-nix.url = "github:numtide/treefmt-nix";
+
+ terranix.url = "github:terranix/terranix";
+ };
}
diff --git a/nix/packages/image.nix b/image.nix
similarity index 100%
rename from nix/packages/image.nix
rename to image.nix
diff --git a/nix-kubernetes/coder.nix b/nix-kubernetes/coder.nix
index f324f75..5a55d01 100644
--- a/nix-kubernetes/coder.nix
+++ b/nix-kubernetes/coder.nix
@@ -1,15 +1,7 @@
-{
- ref,
- utils,
- ...
-}: {
- locals."git_repo_folder" = with utils; let
- split_repo = split (quot "") ref.data.coder_parameter.git_repo.value;
- in
- try [
- (element split_repo "${rb (length split_repo)} - 1")
- (quot "")
- ];
+{...}: {
+ locals."git_repo_folder" = let
+ split_repo = ''split("/", data.coder_parameter.git_repo.value)'';
+ in ''''${try(element(${split_repo}, length(${split_repo}) - 1), "")}'';
data = {
coder_external_auth."gitlab" = {
@@ -22,7 +14,7 @@
resource = {
coder_agent."coder" = {
- arch = ref.var.arch;
+ arch = "\${var.arch}";
os = "linux";
metadata = [
{
@@ -42,7 +34,7 @@
{
display_name = "Home Disk";
key = "2_home_disk";
- script = "coder stat disk --path $HOME";
+ script = "coder stat disk --path $${HOME}";
interval = 60;
timeout = 1;
}
@@ -56,65 +48,59 @@
];
};
coder_script."git_clone" = {
- agent_id = ref.coder_agent.coder.id;
+ agent_id = "\${coder_agent.coder.id}";
display_name = "Git Clone";
icon = "/icon/git.svg";
script = let
- repo = ref.data.coder_parameter.git_repo.value;
- repo_folder = ref.local.git_repo_folder;
- in
- # sh
- ''
- mkdir -p ~/repos
- if [ ! -z "${repo}" ]; then
- echo "Cloning repo \"${repo}\" if it does not exist"
- pushd ~/repos >/dev/null
- if [[ ! -d "${repo_folder}" ]] then
- git clone ${repo} ${repo_folder}
- fi
- popd >/dev/null
- else
- echo "No git repo specified, skipping..."
- fi
- '';
+ repo = ''''${data.coder_parameter.git_repo.value}'';
+ repo_folder = ''''${local.git_repo_folder}'';
+ in ''
+ mkdir -p ~/repos
+ if [ ! -z "${repo}" ]; then
+ echo "Cloning repo \"${repo}\" if it does not exist"
+ pushd ~/repos >/dev/null
+ if [[ ! -d "${repo_folder}" ]] then
+ git clone ${repo} ${repo_folder}
+ fi
+ popd >/dev/null
+ else
+ echo "No git repo specified, skipping..."
+ fi
+ '';
run_on_start = true;
start_blocks_login = true;
};
coder_script."home-manager" = {
- agent_id = ref.coder_agent.coder.id;
+ agent_id = "\${coder_agent.coder.id}";
display_name = "Home Manager";
icon = "/emojis/1f3e0.png";
- script =
- # sh
- ''
- if [ ! -z "$DOTFILES_REPO" ]; then
- echo "Dotfiles present, reloading home-manager profile"
- reload-dotfiles
- # the homeConfiguration can specify a program "coder_startup", run it
- # here if it exists
- if command -v coder_startup &> /dev/null; then
- echo "Running startup tasks..."
- coder_startup
- fi
- else
- echo "No dotfiles repo specified, skipping..."
+ script = ''
+ if [ ! -z "$DOTFILES_REPO" ]; then
+ echo "Dotfiles present, reloading home-manager profile"
+ reload-dotfiles
+ # the homeConfiguration can specify a program "coder_startup", run it
+ # here if it exists
+ if command -v coder_startup &> /dev/null; then
+ echo "Running startup tasks..."
+ coder_startup
fi
- '';
+ else
+ echo "No dotfiles repo specified, skipping..."
+ fi
+ '';
run_on_start = true;
start_blocks_login = true;
};
coder_script."home-manager-shutdown" = {
- agent_id = ref.coder_agent.coder.id;
+ agent_id = "\${coder_agent.coder.id}";
display_name = "Home Manager Shutdown";
icon = "/emojis/1f3e0.png";
- script =
- # sh
- ''
- if command -v coder_shutdown &> /dev/null; then
- echo "Running shutdown tasks..."
- coder_shutdown
- fi
- '';
+ script = ''
+ if command -v coder_shutdown &> /dev/null; then
+ echo "Running shutdown tasks..."
+ coder_shutdown
+ fi
+ '';
run_on_stop = true;
};
};
diff --git a/nix-kubernetes/default.nix b/nix-kubernetes/default.nix
index fea682e..346c446 100644
--- a/nix-kubernetes/default.nix
+++ b/nix-kubernetes/default.nix
@@ -1,8 +1,24 @@
-{
+{...}: {
imports = [
./parameters.nix
./variables.nix
./coder.nix
./kubernetes.nix
];
+
+ terraform.required_providers = {
+ coder = {
+ source = "coder/coder";
+ version = "2.8.0";
+ };
+ kubernetes = {
+ source = "hashicorp/kubernetes";
+ version = "2.29.0";
+ };
+ };
+
+ provider = {
+ coder = {};
+ kubernetes = {};
+ };
}
diff --git a/nix-kubernetes/kubernetes.nix b/nix-kubernetes/kubernetes.nix
index ee91958..b32b0e0 100644
--- a/nix-kubernetes/kubernetes.nix
+++ b/nix-kubernetes/kubernetes.nix
@@ -1,215 +1,197 @@
-{
- ref,
- utils,
- ...
-}: let
- identifier = with utils; "${lower ref.data.coder_workspace_owner.me.name}-${lower ref.data.coder_workspace.me.name}";
-in {
+{...}: {
resource = {
kubernetes_pod."workspace" = {
- count = ref.data.coder_workspace.me.start_count;
- metadata = [
- {
- name = "coder-${identifier}";
- namespace = ref.var.namespace;
- annotations."com.coder.user.email" = ref.data.coder_workspace_owner.me.email;
- labels = {
- "app.kubernetes.io/instance" = "coder-workspace-${identifier}";
- "app.kubernetes.io/name" = "coder-workspace";
- "app.kubernetes.io/part-of" = "coder";
- "com.coder.resource" = "true";
- "com.coder.user.id" = ref.data.coder_workspace_owner.me.id;
- "com.coder.user.name" = ref.data.coder_workspace_owner.me.name;
- "com.coder.workspace.id" = ref.data.coder_workspace.me.id;
- "com.coder.workspace.name" = ref.data.coder_workspace.me.name;
- };
- }
- ];
+ count = "\${data.coder_workspace.me.start_count}";
+ metadata = {
+ name = "coder-\${lower(data.coder_workspace_owner.me.name)}-\${lower(data.coder_workspace.me.name)}";
+ namespace = "\${var.namespace}";
+ annotations."com.coder.user.email" = "\${data.coder_workspace_owner.me.email}";
+ labels = {
+ "app.kubernetes.io/instance" = "coder-workspace-\${lower(data.coder_workspace_owner.me.name)}-\${lower(data.coder_workspace.me.name)}";
+ "app.kubernetes.io/name" = "coder-workspace";
+ "app.kubernetes.io/part-of" = "coder";
+ "com.coder.resource" = "true";
+ "com.coder.user.id" = "\${data.coder_workspace_owner.me.id}";
+ "com.coder.user.name" = "\${data.coder_workspace_owner.me.name}";
+ "com.coder.workspace.id" = "\${data.coder_workspace.me.id}";
+ "com.coder.workspace.name" = "\${data.coder_workspace.me.name}";
+ };
+ };
# give the shutdown tasks enough time to run
timeouts.delete = "31m";
- spec = [
- {
- termination_grace_period_seconds = 1800;
- affinity.pod_anti_affinity.preferred_during_scheduling_ignored_during_execution = {
- weight = 1;
- pod_affinity_term = {
- topology_key = "kubernetes.io/hostname";
- label_selector.match_expressions = {
- key = "app.kubernetes.io/name";
- operator = "In";
- values = ["coder-workspace"];
- };
+ spec = {
+ termination_grace_period_seconds = 1800;
+ affinity.pod_anti_affinity.preferred_during_scheduling_ignored_during_execution = {
+ weight = 1;
+ pod_affinity_term = {
+ topology_key = "kubernetes.io/hostname";
+ label_selector.match_expressions = {
+ key = "app.kubernetes.io/name";
+ operator = "In";
+ values = ["coder-workspace"];
};
};
- init_container = [
- {
- name = "chown";
- image = "alpine:3";
- command = ["chown" "1000:1000" "/mnt/nix" "/mnt/tmp" "/mnt/home"];
- security_context.run_as_user = "0";
- volume_mount = [
- {
- mount_path = "/mnt/home";
- name = "home";
- read_only = false;
- }
- {
- mount_path = "/mnt/nix";
- name = "nix-store";
- read_only = false;
- }
- {
- mount_path = "/mnt/tmp";
- name = "tmp";
- read_only = false;
- }
- ];
- }
- {
- name = "copy-nix-store";
- image = "registry.gitlab.com/technofab/coder-templates/nix-coder-image:${ref.data.coder_parameter.image_tag.value}";
- command = ["cp" "-nR" "/nix/." "/pv_nix"];
- security_context.run_as_user = "1000";
- volume_mount = [
- {
- mount_path = "/pv_nix";
- name = "nix-store";
- read_only = false;
- }
- ];
- }
- ];
- container = [
- {
- name = "workspace";
- image = "registry.gitlab.com/technofab/coder-templates/nix-coder-image:${ref.data.coder_parameter.image_tag.value}";
- command = ["/bin/sh" "-c" "${ref.coder_agent.coder.init_script}"];
- env = [
- {
- name = "CODER_AGENT_TOKEN";
- value = ref.coder_agent.coder.token;
- }
- {
- name = "DOTFILES_REPO";
- value = ref.data.coder_parameter.dotfiles_repo.value;
- }
- {
- name = "TZ";
- value = ref.data.coder_parameter.timezone.value;
- }
- {
- name = "NIX_CONFIG";
- value = ref.data.coder_parameter.nix_config.value;
- }
- ];
- resources = {
- requests = {
- cpu = ref.var.cpu_request;
- memory = ref.var.memory_request;
- };
- limits = {
- cpu = ref.data.coder_parameter.cpu.value;
- memory = ref.data.coder_parameter.memory.value;
- };
+ };
+ init_container = [
+ {
+ name = "chown";
+ image = "alpine:3";
+ command = ["chown" "1000:1000" "/mnt/nix" "/mnt/tmp" "/mnt/home"];
+ security_context.run_as_user = "0";
+ volume_mount = [
+ {
+ mount_path = "/mnt/home";
+ name = "home";
+ read_only = false;
+ }
+ {
+ mount_path = "/mnt/nix";
+ name = "nix-store";
+ read_only = false;
+ }
+ {
+ mount_path = "/mnt/tmp";
+ name = "tmp";
+ read_only = false;
+ }
+ ];
+ }
+ {
+ name = "copy-nix-store";
+ image = "registry.gitlab.com/technofab/coder-templates/nix-coder-image:\${data.coder_parameter.image_tag.value}";
+ command = ["cp" "-nR" "/nix/." "/pv_nix"];
+ security_context.run_as_user = "1000";
+ volume_mount = [
+ {
+ mount_path = "/pv_nix";
+ name = "nix-store";
+ read_only = false;
+ }
+ ];
+ }
+ ];
+ container = [
+ {
+ name = "workspace";
+ image = "registry.gitlab.com/technofab/coder-templates/nix-coder-image:\${data.coder_parameter.image_tag.value}";
+ command = ["/bin/sh" "-c" "\${resource.coder_agent.coder.init_script}"];
+ env = [
+ {
+ name = "CODER_AGENT_TOKEN";
+ value = "\${resource.coder_agent.coder.token}";
+ }
+ {
+ name = "DOTFILES_REPO";
+ value = "\${data.coder_parameter.dotfiles_repo.value}";
+ }
+ {
+ name = "TZ";
+ value = "\${data.coder_parameter.timezone.value}";
+ }
+ {
+ name = "NIX_CONFIG";
+ value = "\${data.coder_parameter.nix_config.value}";
+ }
+ ];
+ resources = {
+ requests = {
+ cpu = "\${var.cpu_request}";
+ memory = "\${var.memory_request}";
};
- security_context = {
- run_as_user = "1000";
- run_as_group = "1000";
+ limits = {
+ cpu = "\${data.coder_parameter.cpu.value}";
+ memory = "\${data.coder_parameter.memory.value}";
};
- volume_mount = [
- {
- mount_path = "/home";
- name = "home";
- read_only = false;
- }
- {
- mount_path = "/nix";
- name = "nix-store";
- read_only = false;
- }
- {
- mount_path = "/tmp";
- name = "tmp";
- read_only = false;
- }
- ];
- }
- ];
- security_context = {
- run_as_user = "1000";
- run_as_group = "1000";
- };
- volume = [
- {
- name = "home";
- persistent_volume_claim.claim_name = ref.kubernetes_persistent_volume_claim.home.metadata ".0.name";
- }
- {
- name = "nix-store";
- persistent_volume_claim.claim_name = ref.kubernetes_persistent_volume_claim.nix-store.metadata ".0.name";
- }
- {
- name = "tmp";
- empty_dir = {
- medium = "Memory";
- # not used for now
- # sizeLimit = "200Mi";
- };
- }
- ];
- }
- ];
+ };
+ security_context = {
+ run_as_user = 1000;
+ run_as_group = 1000;
+ };
+ volume_mount = [
+ {
+ mount_path = "/home";
+ name = "home";
+ read_only = false;
+ }
+ {
+ mount_path = "/nix";
+ name = "nix-store";
+ read_only = false;
+ }
+ {
+ mount_path = "/tmp";
+ name = "tmp";
+ read_only = false;
+ }
+ ];
+ }
+ ];
+ security_context = {
+ run_as_user = 1000;
+ run_as_group = 1000;
+ };
+ volume = [
+ {
+ name = "home";
+ persistent_volume_claim.claim_name = "\${resource.kubernetes_persistent_volume_claim.home.metadata.0.name}";
+ }
+ {
+ name = "nix-store";
+ persistent_volume_claim.claim_name = "\${resource.kubernetes_persistent_volume_claim.nix-store.metadata.0.name}";
+ }
+ {
+ name = "tmp";
+ empty_dir = {
+ medium = "Memory";
+ # not used for now
+ # sizeLimit = "200Mi";
+ };
+ }
+ ];
+ };
};
kubernetes_persistent_volume_claim."home" = {
- metadata = [
- {
- name = "coder-home-${identifier}";
- namespace = ref.var.namespace;
- annotations."com.coder.user.email" = ref.data.coder_workspace_owner.me.email;
- labels = {
- "app.kubernetes.io/instance" = "coder-pvc-home-${identifier}";
- "app.kubernetes.io/name" = "coder-pvc";
- "app.kubernetes.io/part-of" = "coder";
- "com.coder.resource" = "true";
- "com.coder.user.id" = ref.data.coder_workspace_owner.me.id;
- "com.coder.user.name" = ref.data.coder_workspace_owner.me.name;
- "com.coder.workspace.id" = ref.data.coder_workspace.me.id;
- "com.coder.workspace.name" = ref.data.coder_workspace.me.name;
- };
- }
- ];
- spec = [
- {
- access_modes = ["ReadWriteOnce"];
- resources.requests.storage = "${ref.data.coder_parameter.home_disk_size.value}Gi";
- }
- ];
+ metadata = {
+ name = "coder-home-\${lower(data.coder_workspace_owner.me.name)}-\${lower(data.coder_workspace.me.name)}";
+ namespace = "\${var.namespace}";
+ annotations."com.coder.user.email" = "\${data.coder_workspace_owner.me.email}";
+ labels = {
+ "app.kubernetes.io/instance" = "coder-pvc-home-\${lower(data.coder_workspace_owner.me.name)}-\${lower(data.coder_workspace.me.name)}";
+ "app.kubernetes.io/name" = "coder-pvc";
+ "app.kubernetes.io/part-of" = "coder";
+ "com.coder.resource" = "true";
+ "com.coder.user.id" = "\${data.coder_workspace_owner.me.id}";
+ "com.coder.user.name" = "\${data.coder_workspace_owner.me.name}";
+ "com.coder.workspace.id" = "\${data.coder_workspace.me.id}";
+ "com.coder.workspace.name" = "\${data.coder_workspace.me.name}";
+ };
+ };
+ spec = {
+ access_modes = ["ReadWriteOnce"];
+ resources.requests.storage = "\${data.coder_parameter.home_disk_size.value}Gi";
+ };
wait_until_bound = false;
};
kubernetes_persistent_volume_claim."nix-store" = {
- metadata = [
- {
- name = "coder-nix-store-${identifier}";
- namespace = ref.var.namespace;
- annotations."com.coder.user.email" = ref.data.coder_workspace_owner.me.email;
- labels = {
- "app.kubernetes.io/instance" = "coder-pvc-nix-store-${identifier}";
- "app.kubernetes.io/name" = "coder-pvc";
- "app.kubernetes.io/part-of" = "coder";
- "com.coder.resource" = "true";
- "com.coder.user.id" = ref.data.coder_workspace_owner.me.id;
- "com.coder.user.name" = ref.data.coder_workspace_owner.me.name;
- "com.coder.workspace.id" = ref.data.coder_workspace.me.id;
- "com.coder.workspace.name" = ref.data.coder_workspace.me.name;
- };
- }
- ];
- spec = [
- {
- access_modes = ["ReadWriteOnce"];
- resources.requests.storage = "${ref.data.coder_parameter.nix_store_disk_size.value}Gi";
- }
- ];
+ metadata = {
+ name = "coder-nix-store-\${lower(data.coder_workspace_owner.me.name)}-\${lower(data.coder_workspace.me.name)}";
+ namespace = "\${var.namespace}";
+ annotations."com.coder.user.email" = "\${data.coder_workspace_owner.me.email}";
+ labels = {
+ "app.kubernetes.io/instance" = "coder-pvc-nix-store-\${lower(data.coder_workspace_owner.me.name)}-\${lower(data.coder_workspace.me.name)}";
+ "app.kubernetes.io/name" = "coder-pvc";
+ "app.kubernetes.io/part-of" = "coder";
+ "com.coder.resource" = "true";
+ "com.coder.user.id" = "\${data.coder_workspace_owner.me.id}";
+ "com.coder.user.name" = "\${data.coder_workspace_owner.me.name}";
+ "com.coder.workspace.id" = "\${data.coder_workspace.me.id}";
+ "com.coder.workspace.name" = "\${data.coder_workspace.me.name}";
+ };
+ };
+ spec = {
+ access_modes = ["ReadWriteOnce"];
+ resources.requests.storage = "\${data.coder_parameter.nix_store_disk_size.value}Gi";
+ };
wait_until_bound = false;
};
};
diff --git a/nix-kubernetes/parameters.nix b/nix-kubernetes/parameters.nix
index 18c88e6..0fb0a2f 100644
--- a/nix-kubernetes/parameters.nix
+++ b/nix-kubernetes/parameters.nix
@@ -1,6 +1,6 @@
-{
+{...}: {
data.coder_parameter = {
- "dotfiles_repo" = {
+ dotfiles_repo = {
name = "Dotfiles Repository (passed to home-manager)";
description = ''
Nix flake URI to your dotfiles repository, eg.
@@ -13,7 +13,7 @@
type = "string";
mutable = true;
};
- "git_repo" = {
+ git_repo = {
name = "Git Repository";
description = ''
URI for a git repository which should automatically be cloned to ~/repos/
@@ -23,7 +23,7 @@
type = "string";
mutable = true;
};
- "image_tag" = {
+ image_tag = {
name = "Image Tag";
description = ''
Which container image tag should be used.
@@ -33,7 +33,7 @@
type = "string";
mutable = true;
};
- "cpu" = {
+ cpu = {
name = "CPU";
description = ''
CPU Limit for Kubernetes Pod. Kubernetes Notation (eg. 500m)
@@ -43,7 +43,7 @@
type = "string";
mutable = true;
};
- "memory" = {
+ memory = {
name = "Memory";
description = ''
Memory Limit for Kubernetes Pod. Kubernetes Notation (eg. 1Gi)
@@ -53,12 +53,12 @@
type = "string";
mutable = true;
};
- "home_disk_size" = {
+ home_disk_size = {
name = "Home Disk Size";
description = ''
Size for the /home PV in GB
'';
- default = "5";
+ default = 5;
order = 6;
type = "number";
mutable = true;
@@ -70,12 +70,12 @@
}
];
};
- "nix_store_disk_size" = {
+ nix_store_disk_size = {
name = "Nix Store Disk Size";
description = ''
Size for the /nix PV in GB. This might grow pretty big.
'';
- default = "5";
+ default = 5;
order = 7;
type = "number";
mutable = true;
@@ -87,7 +87,7 @@
}
];
};
- "timezone" = {
+ timezone = {
name = "Timezone";
description = ''
Content of the TZ environment variable.
@@ -97,7 +97,7 @@
type = "string";
mutable = true;
};
- "nix_config" = {
+ nix_config = {
name = "Nix Config";
description = ''
Nix config, will be put into $NIX_CONFIG
diff --git a/nix-kubernetes/variables.nix b/nix-kubernetes/variables.nix
index 4662a16..cfe1801 100644
--- a/nix-kubernetes/variables.nix
+++ b/nix-kubernetes/variables.nix
@@ -1,10 +1,10 @@
-{
+{...}: {
variable = {
- "namespace" = {
+ namespace = {
type = "string";
description = "Kubernetes namespace (must exist prior to creating workspaces)";
};
- "arch" = {
+ arch = {
type = "string";
description = "Architecture of the host";
validation = {
@@ -12,12 +12,12 @@
error_message = "Invalid architecture selected";
};
};
- "cpu_request" = {
+ cpu_request = {
type = "string";
description = "CPU request to apply to workspaces. Kubernetes Notation (eg. 500m)";
default = "0";
};
- "memory_request" = {
+ memory_request = {
type = "string";
description = "Memory request to apply to workspaces. Kubernetes Notation (eg. 1Gi)";
default = "0";
diff --git a/nix/packages/flake.lock b/nix/packages/flake.lock
deleted file mode 100644
index e5ea597..0000000
--- a/nix/packages/flake.lock
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "nodes": {
- "root": {
- "inputs": {
- "tofunix-lib": "tofunix-lib"
- }
- },
- "tofunix-lib": {
- "locked": {
- "dir": "lib",
- "lastModified": 1763484138,
- "narHash": "sha256-4WuyFH0OxRD1urqKQR62LioYRStit63s4sFo18CDJOA=",
- "owner": "TECHNOFAB",
- "repo": "tofunix",
- "rev": "cb0605cf53f61286407345d1ee32395e54ba42d1",
- "type": "gitlab"
- },
- "original": {
- "dir": "lib",
- "owner": "TECHNOFAB",
- "repo": "tofunix",
- "type": "gitlab"
- }
- }
- },
- "root": "root",
- "version": 7
-}
diff --git a/nix/packages/flake.nix b/nix/packages/flake.nix
deleted file mode 100644
index 6f4c53a..0000000
--- a/nix/packages/flake.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- inputs = {
- tofunix-lib.url = "gitlab:TECHNOFAB/tofunix?dir=lib";
- };
- outputs = i:
- i
- // {
- tofulib = i.tofunix-lib.lib {inherit (i.parent) pkgs;};
- };
-}
diff --git a/nix/packages/packages.nix b/nix/packages/packages.nix
deleted file mode 100644
index 8beda23..0000000
--- a/nix/packages/packages.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{inputs, ...}: let
- inherit (inputs) self pkgs tofulib;
-in rec {
- nix-coder-image = pkgs.callPackage ./image.nix {};
- nix-kubernetes = nix-kubernetes-cli.tfjson;
- nix-kubernetes-cli = tofulib.mkCliAio {
- plugins = [
- (tofulib.mkOpentofuProvider {
- owner = "coder";
- repo = "coder";
- version = "2.8.0";
- hash = "sha256-wnjgnD1c6U42ceizqfBG6SE4YXm7rZ7kyYkAdtE8t0k=";
- })
- (tofulib.mkOpentofuProvider {
- owner = "hashicorp";
- repo = "kubernetes";
- version = "2.29.0";
- hash = "sha256-r8DomSe+gUAbHuc8ciiuVl/6IeeIjJK6HFVaqAsnze8=";
- })
- ];
- moduleConfig = "${self}/nix-kubernetes";
- };
-}
diff --git a/nix/repo/ci.nix b/nix/repo/ci.nix
deleted file mode 100644
index 231be70..0000000
--- a/nix/repo/ci.nix
+++ /dev/null
@@ -1,95 +0,0 @@
-{inputs, ...}: let
- inherit (inputs) pkgs cilib;
- inherit (pkgs.lib) concatStringsSep;
-in
- cilib.mkCI {
- pipelines."default" = {
- stages = ["build" "upload"];
- jobs = let
- SYSTEMS = ["aarch64-linux" "x86_64-linux"];
- TEMPLATES = ["nix-kubernetes"];
- in {
- "build" = {
- stage = "build";
- parallel.matrix = [
- {TEMPLATE = TEMPLATES;}
- ];
- nix.deps = [pkgs.gnutar];
- script = [
- # sh
- ''
- nix build .#''${TEMPLATE}
- install -D result templates/''${TEMPLATE}.tf.json
- tar -cf templates/''${TEMPLATE}.tar -C templates ''${TEMPLATE}.tf.json
- ''
- ];
- artifacts.paths = ["templates/"];
- };
- "build:image" = {
- stage = "build";
- parallel.matrix = [
- {SYSTEM = SYSTEMS;}
- ];
- script = [
- # sh
- ''
- nix build .#nix-coder-image --system $SYSTEM
- install -D result dist/nix-coder-image_''${SYSTEM}.tar.gz
- ''
- ];
- artifacts.paths = ["dist/"];
- };
- "docs" = {
- stage = "build";
- script = [
- # sh
- ''
- nix build .#docs:default
- mkdir -p public
- cp -r result/. public/
- ''
- ];
- artifacts.paths = ["public"];
- };
- "pages" = {
- nix.enable = false;
- image = "alpine:latest";
- stage = "upload";
- script = ["true"];
- artifacts.paths = ["public"];
- rules = [
- {
- "if" = "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
- }
- ];
- };
- "upload" = {
- stage = "upload";
- nix.deps = [pkgs.buildah];
- needs = ["build:image"];
- before_script = [
- # sh
- ''
- export REGISTRY_AUTH_FILE=''${HOME}/auth.json
- echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
- mkdir -p /etc/containers
- echo '{"default":[{"type":"insecureAcceptAnything"}]}' > /etc/containers/policy.json
- mkdir -p /var/tmp
- ''
- ];
- script = [
- # sh
- ''
- buildah manifest create localhost/nix-coder-image
- ${concatStringsSep "\n" (map (
- sys: "buildah manifest add localhost/nix-coder-image docker-archive:dist/nix-coder-image_${sys}.tar.gz"
- )
- SYSTEMS)}
- buildah manifest push --all localhost/nix-coder-image \
- docker://''${CI_REGISTRY_IMAGE}/nix-coder-image:$CI_COMMIT_SHORT_SHA
- ''
- ];
- };
- };
- };
- }
diff --git a/nix/repo/devShells.nix b/nix/repo/devShells.nix
deleted file mode 100644
index 7628231..0000000
--- a/nix/repo/devShells.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- inputs,
- cell,
- ...
-}: let
- inherit (inputs) pkgs devshell treefmt soonix;
- inherit (cell) ci;
-in {
- default = devshell.mkShell {
- imports = [
- soonix.devshellModule
- ];
- packages = [
- (treefmt.mkWrapper pkgs {
- programs = {
- alejandra.enable = true;
- mdformat.enable = true;
- };
- })
- ];
- soonix.hooks.ci = ci.soonix;
- };
-}
diff --git a/nix/repo/docs.nix b/nix/repo/docs.nix
deleted file mode 100644
index 7b87397..0000000
--- a/nix/repo/docs.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{inputs, ...}: let
- inherit (inputs) cells doclib pkgs;
- inherit (pkgs.lib) concatMapStringsSep;
-in
- (doclib.mkDocs {
- docs."default" = {
- base = "${inputs.self}";
- path = "${inputs.self}/docs";
- material = {
- enable = true;
- colors = {
- primary = "green";
- accent = "light blue";
- };
- umami = {
- enable = true;
- src = "https://analytics.tf/umami";
- siteId = "dc8d1f6c-50f6-4019-9b0d-9b924dedb111";
- domains = ["coder-templates.projects.tf"];
- };
- };
- dynamic-nav = {
- enable = true;
- files."Parameters" = map (template: {
- ${template} =
- builtins.toFile "${template}.md"
- # md
- ''
- # ${template} Parameters
-
- ${
- concatMapStringsSep "\n" (param: ''
- ## ${param.name}
-
- ${param.description}
-
- Type: `${param.type}`
- Mutable: `${
- if param.mutable
- then "true"
- else "false"
- }`
- ${
- if param.default != ""
- then "Default: `${param.default}`
"
- else ""
- }
- '')
- (builtins.attrValues cells.packages.packages."${template}-cli".module.config.data.coder_parameter)
- }
- '';
- }) ["nix-kubernetes"];
- };
- config = {
- site_name = "Coder Templates";
- site_url = "https://coder-templates.projects.tf";
- repo_name = "TECHNOFAB/coder-templates";
- repo_url = "https://gitlab.com/TECHNOFAB/coder-templates";
- extra_css = ["style.css"];
- theme = {
- logo = "images/logo.svg";
- icon.repo = "simple/gitlab";
- favicon = "images/logo.svg";
- };
- nav = [
- {"Introduction" = "index.md";}
- ];
- markdown_extensions = [
- {
- "pymdownx.highlight".pygments_lang_class = true;
- }
- "pymdownx.inlinehilite"
- "pymdownx.snippets"
- "pymdownx.superfences"
- "pymdownx.escapeall"
- "fenced_code"
- ];
- };
- };
- }).packages
diff --git a/nix/repo/flake.lock b/nix/repo/flake.lock
deleted file mode 100644
index d388b1b..0000000
--- a/nix/repo/flake.lock
+++ /dev/null
@@ -1,100 +0,0 @@
-{
- "nodes": {
- "devshell-lib": {
- "locked": {
- "dir": "lib",
- "lastModified": 1758204313,
- "narHash": "sha256-ainbY0Oajb1HMdvy+A8QxF/P5qwcbEzJGEY5pzKdDdc=",
- "owner": "rensa-nix",
- "repo": "devshell",
- "rev": "7d0c4bc78d9f017a739b0c7eb2f4e563118353e6",
- "type": "gitlab"
- },
- "original": {
- "dir": "lib",
- "owner": "rensa-nix",
- "repo": "devshell",
- "type": "gitlab"
- }
- },
- "nix-gitlab-ci-lib": {
- "locked": {
- "dir": "lib",
- "lastModified": 1763066668,
- "narHash": "sha256-mcNiuWf5R0qS7Be4EFAxPStl3SSYPhg4PSPAXgjKJj0=",
- "owner": "TECHNOFAB",
- "repo": "nix-gitlab-ci",
- "rev": "524bdf9cdcfb8008c08d7e54a95992ebf05331d5",
- "type": "gitlab"
- },
- "original": {
- "dir": "lib",
- "owner": "TECHNOFAB",
- "ref": "3.0.1",
- "repo": "nix-gitlab-ci",
- "type": "gitlab"
- }
- },
- "nixmkdocs-lib": {
- "locked": {
- "dir": "lib",
- "lastModified": 1763481845,
- "narHash": "sha256-Bp0+9rDmlPWMcnKqGx+BG4+o5KO8FuDAOvXRnXrm3Fo=",
- "owner": "TECHNOFAB",
- "repo": "nixmkdocs",
- "rev": "73d59093df94a894d25bc4bf71880b6f00faa62f",
- "type": "gitlab"
- },
- "original": {
- "dir": "lib",
- "owner": "TECHNOFAB",
- "repo": "nixmkdocs",
- "type": "gitlab"
- }
- },
- "root": {
- "inputs": {
- "devshell-lib": "devshell-lib",
- "nix-gitlab-ci-lib": "nix-gitlab-ci-lib",
- "nixmkdocs-lib": "nixmkdocs-lib",
- "soonix-lib": "soonix-lib",
- "treefmt-nix": "treefmt-nix"
- }
- },
- "soonix-lib": {
- "locked": {
- "dir": "lib",
- "lastModified": 1758615778,
- "narHash": "sha256-tggru+siXlLcLUjHtMojkJJWTS/8I3gm8nhnlz+qrTo=",
- "owner": "TECHNOFAB",
- "repo": "soonix",
- "rev": "e04b71c07413251dcb52036b4a51c6c7c0dca2ad",
- "type": "gitlab"
- },
- "original": {
- "dir": "lib",
- "owner": "TECHNOFAB",
- "repo": "soonix",
- "type": "gitlab"
- }
- },
- "treefmt-nix": {
- "flake": false,
- "locked": {
- "lastModified": 1762410071,
- "narHash": "sha256-aF5fvoZeoXNPxT0bejFUBXeUjXfHLSL7g+mjR/p5TEg=",
- "owner": "numtide",
- "repo": "treefmt-nix",
- "rev": "97a30861b13c3731a84e09405414398fbf3e109f",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "treefmt-nix",
- "type": "github"
- }
- }
- },
- "root": "root",
- "version": 7
-}
diff --git a/nix/repo/flake.nix b/nix/repo/flake.nix
deleted file mode 100644
index 60607ea..0000000
--- a/nix/repo/flake.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- inputs = {
- devshell-lib.url = "gitlab:rensa-nix/devshell?dir=lib";
- soonix-lib.url = "gitlab:TECHNOFAB/soonix?dir=lib";
- nixmkdocs-lib.url = "gitlab:TECHNOFAB/nixmkdocs?dir=lib";
- nix-gitlab-ci-lib.url = "gitlab:TECHNOFAB/nix-gitlab-ci/3.0.1?dir=lib";
- treefmt-nix = {
- url = "github:numtide/treefmt-nix";
- flake = false;
- };
- };
- outputs = i:
- i
- // {
- devshell = i.devshell-lib.lib {inherit (i.parent) pkgs;};
- soonix = i.soonix-lib.lib {inherit (i.parent) pkgs;};
- doclib = i.nixmkdocs-lib.lib {inherit (i.parent) pkgs;};
- cilib = i.nix-gitlab-ci-lib.lib {inherit (i.parent) pkgs;};
- treefmt = import i.treefmt-nix;
- };
-}