@@ -63,10 +63,19 @@ resource "coder_agent" "dev" {
63
63
startup_script = << EOF
64
64
#!/bin/sh
65
65
set -x
66
+
66
67
# install and start code-server
67
68
curl -fsSL https://code-server.dev/install.sh | sh -s -- --version 4.8.3
68
69
code-server --auth none --port 13337 &
70
+
69
71
sudo service docker start
72
+
73
+ # Install Nix into our bash profile so `nix-shell`, `nix-build, and `nix` are available
74
+ bash /opt/nix/install --no-daemon
75
+ if ! grep -q '. ~/.nix-profile/etc/profile.d/nix.sh' ~/.bashrc; then
76
+ echo '. ~/.nix-profile/etc/profile.d/nix.sh' >> ~/.bashrc
77
+ fi
78
+
70
79
DOTFILES_URI=${ var . dotfiles_uri }
71
80
rm -f ~/.personalize.log
72
81
if [ -n "$DOTFILES_URI" ]; then
@@ -123,6 +132,33 @@ resource "docker_volume" "home_volume" {
123
132
}
124
133
}
125
134
135
+ resource "docker_volume" "nix_volume" {
136
+ name = " coder-${ data . coder_workspace . me . id } -nix"
137
+ # Protect the volume from being deleted due to changes in attributes.
138
+ lifecycle {
139
+ ignore_changes = all
140
+ }
141
+ # Add labels in Docker to keep track of orphan resources.
142
+ labels {
143
+ label = " coder.owner"
144
+ value = data. coder_workspace . me . owner
145
+ }
146
+ labels {
147
+ label = " coder.owner_id"
148
+ value = data. coder_workspace . me . owner_id
149
+ }
150
+ labels {
151
+ label = " coder.workspace_id"
152
+ value = data. coder_workspace . me . id
153
+ }
154
+ # This field becomes outdated if the workspace is renamed but can
155
+ # be useful for debugging or cleaning out dangling volumes.
156
+ labels {
157
+ label = " coder.workspace_name_at_creation"
158
+ value = data. coder_workspace . me . name
159
+ }
160
+ }
161
+
126
162
resource "coder_metadata" "home_info" {
127
163
resource_id = docker_volume. home_volume . id
128
164
item {
@@ -174,6 +210,11 @@ resource "docker_container" "workspace" {
174
210
volume_name = docker_volume. home_volume . name
175
211
read_only = false
176
212
}
213
+ volumes {
214
+ container_path = " /nix"
215
+ volume_name = docker_volume. nix_volume . name
216
+ read_only = false
217
+ }
177
218
# Add labels in Docker to keep track of orphan resources.
178
219
labels {
179
220
label = " coder.owner"
0 commit comments