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; };