2
2
3
3
## Requirements
4
4
5
- We recommend using the [ Nix] ( https://nix.dev/ ) package manager as it makes any
6
- pain related to maintaining dependency versions
7
- [ disappear] ( https://nixos.org/guides/how-nix-works ) . Once nix
8
- [ has been installed] ( https://nixos.org/download.html ) the development
9
- environment can be _ manually instantiated_ through the ` nix-shell ` command:
5
+ <div class =" tabs " >
10
6
11
- ``` shell
12
- cd ~ /code/coder
7
+ We recommend that you use [ Nix ] ( https://nix.dev/ ) package manager to
8
+ [ maintain dependency versions ] ( https://nixos.org/guides/how-nix-works ) .
13
9
14
- # https://nix.dev/tutorials/declarative-and-reproducible-developer-environments
15
- nix-shell
10
+ ### Nix
16
11
17
- ...
18
- copying path ' /nix/store/3ms6cs5210n8vfb5a7jkdvzrzdagqzbp-iana-etc-20210225' from ' https://cache.nixos.org' ...
19
- copying path ' /nix/store/dxg5aijpyy36clz05wjsyk90gqcdzbam-iana-etc-20220520' from ' https://cache.nixos.org' ...
20
- copying path ' /nix/store/v2gvj8whv241nj4lzha3flq8pnllcmvv-ignore-5.2.0.tgz' from ' https://cache.nixos.org' ...
21
- ...
22
- ```
12
+ 1 . [ Install Nix] ( https://nix.dev/install-nix#install-nix )
23
13
24
- If [ direnv] ( https://direnv.net/ ) is installed and the
25
- [ hooks are configured] ( https://direnv.net/docs/hook.html ) then the development
26
- environment can be _ automatically instantiated_ by creating the following
27
- ` .envrc ` , thus removing the need to run ` nix-shell ` by hand!
14
+ 1 . After you've installed Nix, instantiate the development with the ` nix-shell `
15
+ command:
28
16
29
- ``` shell
30
- cd ~ /code/coder
31
- echo " use nix" > .envrc
32
- direnv allow
33
- ```
17
+ ``` shell
18
+ cd ~ /code/coder
34
19
35
- Now, whenever you enter the project folder,
36
- [ ` direnv ` ] ( https://direnv.net/docs/hook.html ) will prepare the environment for
37
- you:
20
+ # https://nix.dev/tutorials/declarative-and-reproducible-developer-environments
21
+ nix-shell
38
22
39
- ``` shell
40
- cd ~ /code/coder
23
+ ...
24
+ copying path ' /nix/store/3ms6cs5210n8vfb5a7jkdvzrzdagqzbp-iana-etc-20210225' from ' https:// cache.nixos.org' ...
25
+ copying path ' /nix/store/dxg5aijpyy36clz05wjsyk90gqcdzbam-iana-etc-20220520' from ' https:// cache.nixos.org' ...
26
+ copying path ' /nix/store/v2gvj8whv241nj4lzha3flq8pnllcmvv-ignore-5.2.0.tgz' from ' https://cache. nixos.org' ...
27
+ ...
28
+ ```
41
29
42
- direnv: loading ~ /code/coder/.envrc
43
- direnv: using nix
44
- direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +HOST_PATH +IN_NIX_SHELL +LD +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_BUILD_CORES +NIX_BUILD_TOP +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_CFLAGS_COMPILE +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_INDENT_MAKE +NIX_LDFLAGS +NIX_STORE +NM +NODE_PATH +OBJCOPY +OBJDUMP +RANLIB +READELF +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +TEMP +TEMPDIR +TMP +TMPDIR +XDG_DATA_DIRS +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~ PATH
30
+ 1 . Optional: If you have [ direnv ] ( https://direnv.net/ ) installed with
31
+ [ hooks configured ] ( https://direnv.net/docs/hook.html ) , you can add ` use nix`
32
+ to ` .envrc ` to automatically instantiate the development environment:
45
33
46
- 🎉
47
- ```
34
+ ``` shell
35
+ cd ~ /code/coder
36
+ echo " use nix" > .envrc
37
+ direnv allow
38
+ ```
39
+
40
+ Now, whenever you enter the project folder,
41
+ [ ` direnv ` ] ( https://direnv.net/docs/hook.html ) will prepare the environment
42
+ for you:
43
+
44
+ ``` shell
45
+ cd ~ /code/coder
46
+
47
+ direnv: loading ~ /code/coder/.envrc
48
+ direnv: using nix
49
+ direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +HOST_PATH +IN_NIX_SHELL +LD +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_BUILD_CORES +NIX_BUILD_TOP +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_CFLAGS_COMPILE +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_INDENT_MAKE +NIX_LDFLAGS +NIX_STORE +NM +NODE_PATH +OBJCOPY +OBJDUMP +RANLIB +READELF +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +TEMP +TEMPDIR +TMP +TMPDIR +XDG_DATA_DIRS +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~ PATH
50
+
51
+ 🎉
52
+ ```
48
53
49
- Alternatively if you do not want to use nix then you'll need to install the need
54
+ - If you encounter a ` creating directory ` error on macOS, check the
55
+ [ troubleshooting] ( #troubleshooting ) section below.
56
+
57
+ ### Without Nix
58
+
59
+ Alternatively if you do not want to use Nix then you'll need to install the need
50
60
the following tools by hand:
51
61
52
62
- Go 1.18+
@@ -73,7 +83,9 @@ the following tools by hand:
73
83
- ` pandoc `
74
84
- on macOS, run ` brew install pandocomatic `
75
85
76
- ### Development workflow
86
+ </div >
87
+
88
+ ## Development workflow
77
89
78
90
Use the following ` make ` commands and scripts in development:
79
91
@@ -203,8 +215,7 @@ This helps in naming the dump (e.g. `000069` above).
203
215
204
216
### Documentation
205
217
206
- Our style guide for authoring documentation can be found
207
- [ here] ( ./contributing/documentation.md ) .
218
+ Visit our [ documentation style guide] ( ./contributing/documentation.md ) .
208
219
209
220
### Backend
210
221
334
345
[ ` release/experimental ` ] ( https://github.com/coder/coder/issues?q=sort%3Aupdated-desc+label%3Arelease%2Fexperimental )
335
346
label can be used to move the note to the bottom of the release notes under a
336
347
separate title.
348
+
349
+ ## Troubleshooting
350
+
351
+ ### Nix on macOS: ` error: creating directory `
352
+
353
+ On macOS, a [ direnv bug] ( https://github.com/direnv/direnv/issues/1345 ) can cause
354
+ ` nix-shell ` to fail to build or run ` coder ` . If you encounter
355
+ ` error: creating directory ` when you attempt to run, build, or test, add a
356
+ ` mkdir ` line to your ` .envrc ` :
357
+
358
+ ``` shell
359
+ use nix
360
+ mkdir -p " $TMPDIR "
361
+ ```
0 commit comments