22
33## Requirements
44
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 " >
106
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 ) .
139
14- # https://nix.dev/tutorials/declarative-and-reproducible-developer-environments
15- nix-shell
10+ ### Nix
1611
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 )
2313
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:
2816
29- ``` shell
30- cd ~ /code/coder
31- echo " use nix" > .envrc
32- direnv allow
33- ```
17+ ``` shell
18+ cd ~ /code/coder
3419
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
3822
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+ ```
4129
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:
4533
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+ ```
4853
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
5060the following tools by hand:
5161
5262- Go 1.18+
@@ -73,7 +83,9 @@ the following tools by hand:
7383- ` pandoc `
7484 - on macOS, run ` brew install pandocomatic `
7585
76- ### Development workflow
86+ </div >
87+
88+ ## Development workflow
7789
7890Use the following ` make ` commands and scripts in development:
7991
@@ -203,8 +215,7 @@ This helps in naming the dump (e.g. `000069` above).
203215
204216### Documentation
205217
206- Our style guide for authoring documentation can be found
207- [ here] ( ./contributing/documentation.md ) .
218+ Visit our [ documentation style guide] ( ./contributing/documentation.md ) .
208219
209220### Backend
210221
334345[ ` release/experimental ` ] ( https://github.com/coder/coder/issues?q=sort%3Aupdated-desc+label%3Arelease%2Fexperimental )
335346label can be used to move the note to the bottom of the release notes under a
336347separate 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