mirror of
https://gitlab.com/TECHNOFAB/coder-templates.git
synced 2025-12-11 17:50:06 +01:00
121 lines
3.2 KiB
Nix
121 lines
3.2 KiB
Nix
{
|
|
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;
|
|
};
|
|
};
|
|
}
|