coder-templates/nix-kubernetes/coder.nix

122 lines
3.2 KiB
Nix
Raw Normal View History

2025-11-13 21:47:52 +01:00
{
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 "")
];
data = {
coder_external_auth."gitlab" = {
id = "gitlab";
optional = false;
};
coder_workspace."me" = {};
coder_workspace_owner."me" = {};
};
resource = {
coder_agent."coder" = {
arch = ref.var.arch;
os = "linux";
metadata = [
{
display_name = "Container CPU Usage";
key = "0_cpu_usage";
script = "coder stat cpu --host=false";
interval = 10;
timeout = 1;
}
{
display_name = "Container RAM Usage";
key = "1_ram_usage";
script = "coder stat mem --host=false";
interval = 10;
timeout = 1;
}
{
display_name = "Home Disk";
key = "2_home_disk";
script = "coder stat disk --path $HOME";
interval = 60;
timeout = 1;
}
{
display_name = "Nix Store Disk";
key = "3_nix_store_disk";
script = "coder stat disk --path /nix";
interval = 60;
timeout = 1;
}
];
};
coder_script."git_clone" = {
agent_id = ref.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
'';
run_on_start = true;
start_blocks_login = true;
};
coder_script."home-manager" = {
agent_id = ref.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..."
fi
'';
run_on_start = true;
start_blocks_login = true;
};
coder_script."home-manager-shutdown" = {
agent_id = ref.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
'';
run_on_stop = true;
};
};
}