feat: add dotfile loading via home-manager

This commit is contained in:
technofab 2024-04-27 19:52:51 +02:00
parent eb737c39b2
commit ba17b0ee0c
4 changed files with 41 additions and 8 deletions

View file

@ -17,8 +17,9 @@ pkgs.dockerTools.buildLayeredImage {
pkgs.openssh
pkgs.git
pkgs.curl
pkgs.home-manager
pkgs.direnv
(pkgs.writeShellScriptBin "reload-dotfiles" ''
${pkgs.home-manager}/bin/home-manager switch --flake ''${DOTFILES_REPO:-$1}
'')
(pkgs.writeTextDir "etc/nix/nix.conf" "experimental-features = nix-command flakes")
(pkgs.writeTextDir "etc/passwd" "coder:x:1000:1000::/home/coder:/bin/bash")
(pkgs.writeTextDir "etc/shadow" "coder:!:::::::")

View file

@ -39,5 +39,20 @@
run_on_start = true;
start_blocks_login = true;
};
coder_script."home-manager" = {
agent_id = "\${coder_agent.coder.id}";
display_name = "Home Manager";
icon = "/emojis/1f3e0.png";
script = ''
if [ ! -z "$DOTFILES_REPO" ] then
echo "Dotfiles present, reloading home-manager profile"
reload-dotfiles
else
echo "No dotfiles repo specified, skipping..."
fi
'';
run_on_start = true;
start_blocks_login = true;
};
};
}

View file

@ -54,6 +54,10 @@
name = "CODER_AGENT_TOKEN";
value = "\${resource.coder_agent.coder.token}";
}
{
name = "DOTFILES_REPO";
value = "\${data.coder_parameter.dotfiles_repo.value}";
}
];
resources = {
requests = {

View file

@ -1,12 +1,25 @@
{...}: {
data.coder_parameter = {
dotfiles_repo = {
name = "Dotfiles Repository (passed to home-manager)";
description = ''
Nix flake URI to your dotfiles repository, eg.
github:example/dotfiles#coder
Your flake.nix has to expose a homeManagerConfiguration.coder in this case.
'';
default = "";
order = 1;
type = "string";
mutable = true;
};
git_repo = {
name = "Git Repository";
description = ''
URI for a git repository which should automatically be cloned to ~/repos/<name>
'';
default = "";
order = 1;
order = 2;
type = "string";
mutable = true;
};
@ -16,7 +29,7 @@
Which container image tag should be used.
'';
default = "latest";
order = 2;
order = 3;
type = "string";
mutable = true;
};
@ -26,7 +39,7 @@
CPU Limit for Kubernetes Pod. Kubernetes Notation (eg. 500m)
'';
default = "500m";
order = 3;
order = 4;
type = "string";
mutable = true;
};
@ -36,7 +49,7 @@
Memory Limit for Kubernetes Pod. Kubernetes Notation (eg. 1Gi)
'';
default = "1Gi";
order = 4;
order = 5;
type = "string";
mutable = true;
};
@ -46,7 +59,7 @@
Size for the /home PV in GB
'';
default = 5;
order = 5;
order = 6;
type = "number";
mutable = true;
validation = [
@ -63,7 +76,7 @@
Size for the /nix PV in GB. This might grow pretty big.
'';
default = 5;
order = 6;
order = 7;
type = "number";
mutable = true;
validation = [