Dev environments for numerous languages based on Nix flakes [maintainer=@lucperkins]
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}
Once your preferred template has been initialized, you can use the provided shell in two ways:
nix-direnv
installed, you can initialize the environment by running direnv allow
.nix-direnv
installed, you can run nix develop
to open up the Nix-defined shell.Language/framework/tool | Template |
---|---|
C/C++ | c-cpp |
Clojure | clojure |
C# | csharp |
Cue | cue |
Dhall | dhall |
Elixir | elixir |
Elm | elm |
Empty (change at will) | empty |
Gleam | gleam |
Go | go |
Hashicorp tools | hashi |
Haxe | haxe |
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 |
Pulumi | pulumi |
Purescript | purescript |
Ruby | ruby |
Rust | rust |
Scala | scala |
[Shell] | shell |
Vlang | vlang |
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.
c-cpp
clojure
csharp
cue
dhall
elixir
elm
A dev template that's fully customizable.
gleam
go
hashi
haskell
haxe
java
kotlin
latex
nickel
nim
nix
node
ocaml
opa
php
protobuf
pulumi
purescript
python
ruby
bundle
, gem
, etc.)rust
Rust, including cargo, Clippy, and the other standard tools. The Rust version is determined as follows, in order:
rust-toolchain.toml
file if presentrust-toolchain
file if presentrust-analyzer 2023-07-10
cargo-audit 0.17.0
cargo-deny 0.12.1
scala
shell
Vlang
zig
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.