diff --git a/README.md b/README.md
index c0a0bd2..d1350a8 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,10 @@
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
+- Nix Kubernetes ([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/images/logo.svg b/docs/images/logo.svg
new file mode 100644
index 0000000..d6becf1
--- /dev/null
+++ b/docs/images/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..b9db44c
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,11 @@
+# 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
new file mode 100644
index 0000000..b2ae4ff
--- /dev/null
+++ b/docs/style.css
@@ -0,0 +1,15 @@
+.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.nix b/flake.nix
index c28db2e..fd3e3a8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -22,6 +22,7 @@
};
cellBlocks = with ren.blocks; [
(simple "devShells")
+ (simple "docs")
(simple "ci")
(simple "packages")
];
@@ -29,6 +30,7 @@
{
packages = ren.select self [
["repo" "ci" "packages"]
+ ["repo" "docs"]
["packages" "packages"]
];
};
diff --git a/nix/packages/flake.lock b/nix/packages/flake.lock
index af7ba8d..e5ea597 100644
--- a/nix/packages/flake.lock
+++ b/nix/packages/flake.lock
@@ -8,11 +8,11 @@
"tofunix-lib": {
"locked": {
"dir": "lib",
- "lastModified": 1763036122,
- "narHash": "sha256-AFsuSeZ6MjJk5kxfL09rmhKh+AxUICfQhactWAMzVmo=",
+ "lastModified": 1763484138,
+ "narHash": "sha256-4WuyFH0OxRD1urqKQR62LioYRStit63s4sFo18CDJOA=",
"owner": "TECHNOFAB",
"repo": "tofunix",
- "rev": "69bffa53c525d6128b6a23743149e37c72d3d5ba",
+ "rev": "cb0605cf53f61286407345d1ee32395e54ba42d1",
"type": "gitlab"
},
"original": {
diff --git a/nix/repo/ci.nix b/nix/repo/ci.nix
index 7834b14..231be70 100644
--- a/nix/repo/ci.nix
+++ b/nix/repo/ci.nix
@@ -39,6 +39,30 @@ in
];
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];
diff --git a/nix/repo/docs.nix b/nix/repo/docs.nix
new file mode 100644
index 0000000..7b87397
--- /dev/null
+++ b/nix/repo/docs.nix
@@ -0,0 +1,80 @@
+{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
index 09a1bc6..d388b1b 100644
--- a/nix/repo/flake.lock
+++ b/nix/repo/flake.lock
@@ -35,10 +35,28 @@
"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"
}
diff --git a/nix/repo/flake.nix b/nix/repo/flake.nix
index aa4a142..60607ea 100644
--- a/nix/repo/flake.nix
+++ b/nix/repo/flake.nix
@@ -2,6 +2,7 @@
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";
@@ -13,6 +14,7 @@
// {
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;
};