mirror of
https://gitlab.com/TECHNOFAB/coder-templates.git
synced 2025-12-12 02:00:11 +01:00
bak
This commit is contained in:
commit
249d048d34
11 changed files with 744 additions and 0 deletions
8
.envrc
Normal file
8
.envrc
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
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
|
||||||
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
.idea/
|
||||||
|
.devenv/
|
||||||
|
.direnv/
|
||||||
|
.task/
|
||||||
|
vendor/
|
||||||
|
*.tf*
|
||||||
|
result
|
||||||
2
README.md
Normal file
2
README.md
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Coder Templates
|
||||||
|
|
||||||
28
Taskfile.yaml
Normal file
28
Taskfile.yaml
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
version: 3
|
||||||
|
output: prefixed
|
||||||
|
tasks:
|
||||||
|
deps:
|
||||||
|
sources:
|
||||||
|
- jsonnetfile*.json
|
||||||
|
generates:
|
||||||
|
- vendor/**/*
|
||||||
|
cmds:
|
||||||
|
- jb install
|
||||||
|
build:
|
||||||
|
desc: "Builds the specified template"
|
||||||
|
summary: |
|
||||||
|
Example: task build TEMPLATE=nix-docker
|
||||||
|
deps: [ deps ]
|
||||||
|
sources:
|
||||||
|
- "{{ .TEMPLATE }}/*"
|
||||||
|
generates:
|
||||||
|
- "{{ .TEMPLATE }}/out.tf.json"
|
||||||
|
cmds:
|
||||||
|
- inka export ./{{ .TEMPLATE }} --out ./{{ .TEMPLATE }}/out.tf.json
|
||||||
|
upload-to-coder:
|
||||||
|
desc: "Uploads the specified template to coder"
|
||||||
|
deps: [ build ]
|
||||||
|
dir: "{{ .TEMPLATE }}"
|
||||||
|
interactive: true
|
||||||
|
cmds:
|
||||||
|
- coder templates push "{{ .TEMPLATE }}"
|
||||||
369
flake.lock
generated
Normal file
369
flake.lock
generated
Normal file
|
|
@ -0,0 +1,369 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"devenv": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"nix": "nix",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1685013540,
|
||||||
|
"narHash": "sha256-UM9tPy9fyfXs+knxwk/rCIaNfVC7ggwzbLcY8lkOr+E=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "devenv",
|
||||||
|
"rev": "5ff14a8f2828a2e607a65e2b16650a8cf950515b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"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-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1685662779,
|
||||||
|
"narHash": "sha256-cKDDciXGpMEjP1n6HlzKinN0H+oLmNpgeCTzYnsA2po=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "71fb97f0d875fd4de4994dfb849f2c75e17eb6c3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inka": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1684511970,
|
||||||
|
"narHash": "sha256-GXE0NrL450vim5nUBlDMbLtEgn4BIo0qGKp9ubB7Lfc=",
|
||||||
|
"owner": "TECHNOFAB",
|
||||||
|
"repo": "inka",
|
||||||
|
"rev": "0af6d3c3e6272d25eec6dad259093a08521f624e",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "TECHNOFAB",
|
||||||
|
"repo": "inka",
|
||||||
|
"type": "gitlab"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jb": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1684946375,
|
||||||
|
"narHash": "sha256-25U32EUrtHrllbANw2pisrvOd53ZSIXkp1eZAoPI0+M=",
|
||||||
|
"owner": "TECHNOFAB11",
|
||||||
|
"repo": "jsonnet-bundler",
|
||||||
|
"rev": "8ffad5a3ea322f4bb4c95c51b3cd99051a0f802e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "TECHNOFAB11",
|
||||||
|
"repo": "jsonnet-bundler",
|
||||||
|
"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",
|
||||||
|
"nixpkgs": [
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-regression": "nixpkgs-regression"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1676545802,
|
||||||
|
"narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=",
|
||||||
|
"owner": "domenkozar",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "domenkozar",
|
||||||
|
"ref": "relaxed-flakes",
|
||||||
|
"repo": "nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1678875422,
|
||||||
|
"narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"dir": "lib",
|
||||||
|
"lastModified": 1685564631,
|
||||||
|
"narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"dir": "lib",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-regression": {
|
||||||
|
"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_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1684398685,
|
||||||
|
"narHash": "sha256-TRE62m91iZ5ArVMgA+uj22Yda8JoQuuhc9uwZ+NoX+0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "628d4bb6e9f4f0c30cfd9b23d3c1cdcec9d3cb5c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-22.11",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1684661732,
|
||||||
|
"narHash": "sha256-2/Xo/UmUUoMXc0T5tzoUsYjMLLMjEfzRWDAQB0WwtW0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b0671cbf1e5c443f7fbfd4941ee0f8a151435114",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-22.11",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1688392541,
|
||||||
|
"narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-22.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"devenv",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"devenv",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1682596858,
|
||||||
|
"narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "fb58866e20af98779017134319b5663b8215d912",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"devenv": "devenv",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"inka": "inka",
|
||||||
|
"jb": "jb",
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"systems": "systems_3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "systems",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "systems",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
74
flake.nix
Normal file
74
flake.nix
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
description = "Coder Templates";
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
self,
|
||||||
|
flake-parts,
|
||||||
|
systems,
|
||||||
|
jb,
|
||||||
|
inka,
|
||||||
|
...
|
||||||
|
} @ inputs:
|
||||||
|
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||||
|
imports = [
|
||||||
|
inputs.devenv.flakeModule
|
||||||
|
];
|
||||||
|
systems = import systems;
|
||||||
|
flake = {
|
||||||
|
};
|
||||||
|
perSystem = {
|
||||||
|
config,
|
||||||
|
self',
|
||||||
|
inputs',
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
formatter = pkgs.alejandra;
|
||||||
|
devenv.shells.default = {
|
||||||
|
packages = [
|
||||||
|
pkgs.go-jsonnet
|
||||||
|
pkgs.go-task
|
||||||
|
|
||||||
|
#(pkgs.coder.override rec {
|
||||||
|
# buildGoModule = args: pkgs.buildGoModule ( args // rec {
|
||||||
|
# version = "2.8.2";
|
||||||
|
# src = pkgs.fetchFromGitHub {
|
||||||
|
# owner = "coder";
|
||||||
|
# repo = "coder";
|
||||||
|
# rev = "v${version}";
|
||||||
|
# hash = "sha256-H90pwemW1yMcY65RvERtqJplBPyOSzkD3ip/DGoZ5eQ=";
|
||||||
|
# };
|
||||||
|
# vendorHash = "sha256-oLhQsdIitePPYAuO4m+RKA/zNcFoMZnzsFBTKlt69pk=";
|
||||||
|
# });
|
||||||
|
#})
|
||||||
|
|
||||||
|
inka.defaultPackage.${system}
|
||||||
|
# use my fork of jb to support fetching packages via http
|
||||||
|
jb.defaultPackage.${system}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
packages = {
|
||||||
|
nix-coder-image = pkgs.callPackage ./image.nix {
|
||||||
|
processes = {
|
||||||
|
test = ''
|
||||||
|
${pkgs.hello}/bin/hello
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
|
||||||
|
|
||||||
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
|
systems.url = "github:nix-systems/default";
|
||||||
|
devenv.url = "github:cachix/devenv";
|
||||||
|
|
||||||
|
inka.url = "gitlab:TECHNOFAB/inka";
|
||||||
|
jb.url = "github:TECHNOFAB11/jsonnet-bundler";
|
||||||
|
};
|
||||||
|
}
|
||||||
27
image.nix
Normal file
27
image.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
processes ? {},
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# https://github.com/cachix/devenv/blob/5a30b9e5ac7c6167e61b1f4193d5130bb9f8defa/src/modules/processes.nix#L121
|
||||||
|
procfile = pkgs.writeText "procfile" (lib.concatStringsSep "\n" (lib.mapAttrsToList (name: process: "${name}: exec ${pkgs.writeShellScript name process}") processes));
|
||||||
|
overmind-sys = pkgs.writeShellScriptBin "overmind-sys" ''
|
||||||
|
OVERMIND_SOCKET=/run/overmind-sys.sock \
|
||||||
|
OVERMIND_ANY_CAN_DIE=1 \
|
||||||
|
OVERMIND_PROCFILE=${procfile} \
|
||||||
|
${pkgs.overmind}/bin/overmind "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
pkgs.dockerTools.buildImage {
|
||||||
|
name = "nix-coder";
|
||||||
|
tag = "latest";
|
||||||
|
|
||||||
|
copyToRoot = pkgs.buildEnv {
|
||||||
|
name = "image-root";
|
||||||
|
paths = [pkgs.bashInteractive overmind-sys];
|
||||||
|
pathsToLink = ["/bin"];
|
||||||
|
};
|
||||||
|
|
||||||
|
config.Cmd = ["/bin/bash"];
|
||||||
|
}
|
||||||
33
jsonnetfile.json
Normal file
33
jsonnetfile.json
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"git": {
|
||||||
|
"remote": "ssh://git@gitlab.com/technofab/inka.git",
|
||||||
|
"subdir": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "main"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"http": {
|
||||||
|
"url": "https://gitlab.com/api/v4/projects/44043879/packages/generic/coder-coder/${VERSION}/package.tar.gz",
|
||||||
|
"target": "coder"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "0.17.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"http": {
|
||||||
|
"url": "https://gitlab.com/api/v4/projects/44043879/packages/generic/kreuzwerker-docker/${VERSION}/package.tar.gz",
|
||||||
|
"target": "docker"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "3.0.2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"legacyImports": true
|
||||||
|
}
|
||||||
46
jsonnetfile.lock.json
Normal file
46
jsonnetfile.lock.json
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"http": {
|
||||||
|
"url": "https://gitlab.com/api/v4/projects/44043879/packages/generic/coder-coder/${VERSION}/package.tar.gz",
|
||||||
|
"target": "coder"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "0.17.0",
|
||||||
|
"sum": "Nd1oWkTfpjSaIUOAw5cuOUpxNCt90/TJfzE6RzQGK+0="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"http": {
|
||||||
|
"url": "https://gitlab.com/api/v4/projects/44043879/packages/generic/kreuzwerker-docker/${VERSION}/package.tar.gz",
|
||||||
|
"target": "docker"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "3.0.2",
|
||||||
|
"sum": "WKmK7j5cCM2DPNjeRR8bGaF94J5PXst43BTD2Avc0Jw="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"git": {
|
||||||
|
"remote": "https://github.com/jsonnet-libs/docsonnet.git",
|
||||||
|
"subdir": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "6ac6c69685b8c29c54515448eaca583da2d88150",
|
||||||
|
"sum": "/6J/FSZMka3pQ5hyibN40602ofJbdZiwG+CfQ9tJEK4="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"git": {
|
||||||
|
"remote": "ssh://git@gitlab.com/technofab/inka.git",
|
||||||
|
"subdir": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "0af6d3c3e6272d25eec6dad259093a08521f624e",
|
||||||
|
"sum": "oKeBMjfOqWhSqT7XXBZvVDOEavThjG/P5UY7pVnZkEo="
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"legacyImports": false
|
||||||
|
}
|
||||||
111
nix-docker/main.jsonnet
Normal file
111
nix-docker/main.jsonnet
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
local inka = import 'inka/main.libsonnet';
|
||||||
|
local docker = import 'docker/main.libsonnet';
|
||||||
|
local coder = import 'coder/main.libsonnet';
|
||||||
|
|
||||||
|
{
|
||||||
|
requirements: {
|
||||||
|
docker: docker.provider.require(),
|
||||||
|
coder: coder.provider.require(),
|
||||||
|
},
|
||||||
|
providers: {
|
||||||
|
docker: docker.provider.new(),
|
||||||
|
coder: coder.provider.new(),
|
||||||
|
},
|
||||||
|
parameters: {
|
||||||
|
cpu: coder.data.parameter.new(
|
||||||
|
'cpu', name='CPU [cores]', default=2048, mutable=true, icon='/icon/memory.svg',
|
||||||
|
option=[
|
||||||
|
coder.data.parameter.option.new('1 Core', value=1024),
|
||||||
|
coder.data.parameter.option.new('2 Cores', value=2048),
|
||||||
|
coder.data.parameter.option.new('4 Cores', value=4096),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
memory: coder.data.parameter.new(
|
||||||
|
'memory', name='Memory [GB]', default=1024, mutable=true, icon='/icon/memory.svg',
|
||||||
|
option=[
|
||||||
|
coder.data.parameter.option.new('1GB', value=1024),
|
||||||
|
coder.data.parameter.option.new('2GB', value=2048),
|
||||||
|
coder.data.parameter.option.new('4GB', value=4096),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
git_repo: coder.data.parameter.new(
|
||||||
|
'git_repo', name='Git Repository', default='', type='string', mutable=true,
|
||||||
|
),
|
||||||
|
#home_disk_size: coder.data.parameter.new(
|
||||||
|
# 'home_disk_size', name='Home disk size [GB]', default=10, type='number',
|
||||||
|
# mutable=false, icon='/emojis/1f4be.png',
|
||||||
|
# validation=[
|
||||||
|
# coder.data.parameter.validation.new(min=1, max=100),
|
||||||
|
# ],
|
||||||
|
#),
|
||||||
|
},
|
||||||
|
coder: {
|
||||||
|
auth: coder.data.git_auth.new('git_auth', { id: 'primary-gitlab', }),
|
||||||
|
provisioner: coder.data.provisioner.new('me'),
|
||||||
|
workspace: coder.data.workspace.new('me'),
|
||||||
|
agent: coder.agent.new(
|
||||||
|
'main', arch=self.provisioner.arch, os='linux', login_before_ready=false,
|
||||||
|
startup_script_timeout=180,
|
||||||
|
startup_script=|||
|
||||||
|
# install direnv & code-server
|
||||||
|
nix-env -iA nixpkgs.direnv nixpkgs.code-server
|
||||||
|
code-server --auth none --port 13337 >/tmp/code-server.log 2>&1 &
|
||||||
|
|||,
|
||||||
|
),
|
||||||
|
code_server: coder.app.new(
|
||||||
|
'code-server', agent_id=self.agent.id, slug='code-server',
|
||||||
|
display_name='Code Server', icon='/icon/code.svg', share='owner',
|
||||||
|
url='http://localhost:13337/?folder=/home/%s' % self.workspace.owner,
|
||||||
|
subdomain=false, healthcheck=[
|
||||||
|
coder.app.healthcheck.new(url='http://localhost:13337/healthz', interval=5, threshold=6),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
docker: {
|
||||||
|
volume: docker.volume.new(
|
||||||
|
'home', name='coder-%s-home' % $.coder.workspace.id,
|
||||||
|
# not always supported
|
||||||
|
#driver_opts={ size: '%sG' % $.parameters.home_disk_size.value },
|
||||||
|
labels=[
|
||||||
|
docker.volume.labels.new('coder.owner', $.coder.workspace.owner),
|
||||||
|
docker.volume.labels.new('coder.owner_id', $.coder.workspace.owner_id),
|
||||||
|
docker.volume.labels.new('coder.workspace_id', $.coder.workspace.id),
|
||||||
|
docker.volume.labels.new('coder.workspace_name_at_creation', $.coder.workspace.name),
|
||||||
|
],
|
||||||
|
_extra={
|
||||||
|
lifecycle: [{ ignore_changes: 'all' }],
|
||||||
|
}
|
||||||
|
),
|
||||||
|
container: docker.container.new(
|
||||||
|
'workspace', name='coder-%s-workspace' % $.coder.workspace.id, cpu_shares=$.parameters.cpu.value,
|
||||||
|
memory=$.parameters.memory.value, image='nixos/nix:latest', hostname=$.coder.workspace.name,
|
||||||
|
entrypoint=[
|
||||||
|
'sh',
|
||||||
|
'-c',
|
||||||
|
inka.functions.replace(
|
||||||
|
$.coder.agent.init_script,
|
||||||
|
'"/localhost|127.0.0.1/"',
|
||||||
|
'"host.docker.internal"',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
#runtime='sysbox-runc', storage_opts={ size: '10G' },
|
||||||
|
env=[
|
||||||
|
'CODER_AGENT_TOKEN=%s' % $.coder.agent.token,
|
||||||
|
],
|
||||||
|
host=[
|
||||||
|
docker.container.host.new('host.docker.internal', 'host-gateway')
|
||||||
|
],
|
||||||
|
volumes=[
|
||||||
|
docker.container.volumes.new(
|
||||||
|
container_path='/home/%s' % $.coder.workspace.owner, volume_name=self.volume.name, read_only=false,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
labels=[
|
||||||
|
docker.container.labels.new('coder.owner', $.coder.workspace.owner),
|
||||||
|
docker.container.labels.new('coder.owner_id', $.coder.workspace.owner_id),
|
||||||
|
docker.container.labels.new('coder.workspace_id', $.coder.workspace.id),
|
||||||
|
docker.container.labels.new('coder.workspace_name_at_creation', $.coder.workspace.name),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}
|
||||||
39
nix-kubernetes/main.jsonnet
Normal file
39
nix-kubernetes/main.jsonnet
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
local inka = import 'inka/main.libsonnet';
|
||||||
|
local coder = import 'coder/main.libsonnet';
|
||||||
|
|
||||||
|
{
|
||||||
|
requirements: {
|
||||||
|
coder: coder.provider.require(),
|
||||||
|
},
|
||||||
|
providers: {
|
||||||
|
coder: coder.provider.new(true),
|
||||||
|
},
|
||||||
|
parameters: {
|
||||||
|
cpu: coder.data.parameter.new(
|
||||||
|
'cpu', name='CPU [cores]', default='2', mutable=true, icon='/icon/memory.svg',
|
||||||
|
option=[
|
||||||
|
coder.data.parameter.option.new('1 Core', value='1'),
|
||||||
|
coder.data.parameter.option.new('2 Cores', value='2'),
|
||||||
|
coder.data.parameter.option.new('4 Cores', value='4'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
memory: coder.data.parameter.new(
|
||||||
|
'memory', name='Memory [GB]', default='1', mutable=true, icon='/icon/memory.svg',
|
||||||
|
option=[
|
||||||
|
coder.data.parameter.option.new('1GB', value='1'),
|
||||||
|
coder.data.parameter.option.new('2GB', value='2'),
|
||||||
|
coder.data.parameter.option.new('4GB', value='4'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
git_repo: coder.data.parameter.new(
|
||||||
|
'git_repo', name='Git Repository', default='', type='string', mutable=true,
|
||||||
|
),
|
||||||
|
home_disk_size: coder.data.parameter.new(
|
||||||
|
'home_disk_size', name='Home disk size [GB]', default='10', type='number',
|
||||||
|
mutable=false, icon='/emojis/1f4be.png',
|
||||||
|
validation=[
|
||||||
|
coder.data.parameter.validation.new(min=1, max=100),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue