To initialize (where ${ENV} is listed in the table below):
nix flake init --template github:the-nix-way/dev-templates#${ENV}Here's an example (for the rust template):
# Initialize in the current project
nix flake init --template github:the-nix-way/dev-templates#rust
# Create a new project
nix flake new --template github:the-nix-way/dev-templates#rust ${NEW_PROJECT_DIRECTORY}Note: All templates are pinned to the 22.11 release of Nixpkgs.
Once your preferred template has been initialized, you can use the provided shell in two ways:
- If you have
nix-direnvinstalled, you can initialize the environment by runningdirenv allow. - If you don't have
nix-direnvinstalled, you can runnix developto open up the Nix-defined shell.
| Language/framework/tool | Template |
|---|---|
| Clojure | clojure |
| C# | csharp |
| Cue | cue |
| Dhall | dhall |
| Elixir | elixir |
| Elm | elm |
| Gleam | gleam |
| Go | go |
| Hashicorp tools | hashi |
| Java | java |
| Kotlin | kotlin |
| LaTeX | latex |
| Nickel | nickel |
| Nim | nim |
| Nix | nix |
| Node.js | node |
| OCaml | ocaml |
| Open Policy Agent | opa |
| PHP | php |
| Protobuf | protobuf |
| Purescript | purescript |
| Ruby | ruby |
| Rust | rust |
| Scala | scala |
| [Shell] | shell |
| Zig | zig |
The sections below list what each template includes. In all cases, you're free to add and remove packages as you see fit; the templates are just boilerplate.
- dotnet sdk 7
- omnisharp-roslyn
- mono
- msbuild
- Dhall 1.40.2
- dhall-bash
- dhall-csv (Linux only)
- dhall-docs
- dhall-json
- dhall-lsp-server
- dhall-nix
- dhall-nixpkgs
- dhall-openapi
- dhall-text (Linux only)
- dhall-toml
- dhall-yaml
- Gleam 0.22.1
- Go 1.19
- Standard Go tools (goimports, godoc, and others)
- golangci-lint
- Packer 1.8.2
- Terraform 1.2.7
- Nomad 1.2.9
- Vault 1.11.2
- nomad-autoscaler 0.3.6-dev
- nomad-pack 0.0.1-techpreview.3
- levant 0.3.1-dev
- damon
- Terragrunt 0.37.0
- tflint 0.39.3
- Nickel 0.2.0
- OCaml 4.13.1
- Dune 3.4.1
- odoc 2.1.1
- ocamlformat 0.24.0
- Open Policy Agent 0.43.0
- Conftest 0.34.0
- Python 3.11.0rc1
- pip 22.1.2
- Virtualenv 20.15.1
- mach-nix
- Ruby 3.1.2p20, plus the standard Ruby tools (
bundle,gem, etc.)
-
Rust, including cargo, Clippy, and the other standard tools. The Rust version is determined as follows, in order:
- From the
rust-toolchain.tomlfile if present - From the
rust-toolchainfile if present - Version 1.63.0 if neither is present
- From the
-
rust-analyzer 2022-08-01
-
cargo-audit 0.17.0
-
cargo-deny 0.12.1
-
cross 0.2.4
- Zig 0.9.1
All of the templates have only the root flake as a flake input. That root flake provides a common revision of Nixpkgs and flake-utils to all the templates.