1
1
mirror of https://github.com/the-nix-way/dev-templates synced 2025-09-13 20:51:27 +02:00
Dev environments for numerous languages based on Nix flakes
Go to file
2025-09-12 15:43:06 +02:00
.github Remove obsolete formatting check command 2025-08-05 12:30:34 +01:00
bun Remove all flake.lock files 2025-09-12 15:35:25 +02:00
c-cpp Remove all flake.lock files 2025-09-12 15:35:25 +02:00
clojure Remove all flake.lock files 2025-09-12 15:35:25 +02:00
cue Remove all flake.lock files 2025-09-12 15:35:25 +02:00
dhall Remove all flake.lock files 2025-09-12 15:35:25 +02:00
elixir Remove all flake.lock files 2025-09-12 15:35:25 +02:00
elm Remove all flake.lock files 2025-09-12 15:35:25 +02:00
empty Remove all flake.lock files 2025-09-12 15:35:25 +02:00
gleam Remove all flake.lock files 2025-09-12 15:35:25 +02:00
go Update Go version 2025-09-12 15:40:58 +02:00
hashi Remove all flake.lock files 2025-09-12 15:35:25 +02:00
haskell Remove all flake.lock files 2025-09-12 15:35:25 +02:00
haxe Remove all flake.lock files 2025-09-12 15:35:25 +02:00
java Remove all flake.lock files 2025-09-12 15:35:25 +02:00
jupyter Remove all flake.lock files 2025-09-12 15:35:25 +02:00
kotlin Remove all flake.lock files 2025-09-12 15:35:25 +02:00
latex Remove all flake.lock files 2025-09-12 15:35:25 +02:00
lean4 Remove all flake.lock files 2025-09-12 15:35:25 +02:00
nickel Remove all flake.lock files 2025-09-12 15:35:25 +02:00
nim Remove all flake.lock files 2025-09-12 15:35:25 +02:00
nix Remove all flake.lock files 2025-09-12 15:35:25 +02:00
node Remove all flake.lock files 2025-09-12 15:35:25 +02:00
ocaml Remove all flake.lock files 2025-09-12 15:35:25 +02:00
odin Remove all flake.lock files 2025-09-12 15:35:25 +02:00
opa Remove all flake.lock files 2025-09-12 15:35:25 +02:00
php Remove all flake.lock files 2025-09-12 15:35:25 +02:00
platformio Remove all flake.lock files 2025-09-12 15:35:25 +02:00
protobuf Remove all flake.lock files 2025-09-12 15:35:25 +02:00
pulumi Update Go version 2025-09-12 15:40:58 +02:00
purescript Remove all flake.lock files 2025-09-12 15:35:25 +02:00
python Remove all flake.lock files 2025-09-12 15:35:25 +02:00
r Remove all flake.lock files 2025-09-12 15:35:25 +02:00
ruby Remove all flake.lock files 2025-09-12 15:35:25 +02:00
rust Remove all flake.lock files 2025-09-12 15:35:25 +02:00
scala Remove all flake.lock files 2025-09-12 15:35:25 +02:00
shell Remove all flake.lock files 2025-09-12 15:35:25 +02:00
swi-prolog Remove all flake.lock files 2025-09-12 15:35:25 +02:00
swift Remove all flake.lock files 2025-09-12 15:35:25 +02:00
typst Remove all flake.lock files 2025-09-12 15:35:25 +02:00
vlang Remove all flake.lock files 2025-09-12 15:35:25 +02:00
zig Remove all flake.lock files 2025-09-12 15:35:25 +02:00
.editorconfig Add editorconfig file 2022-07-12 02:01:42 +02:00
.envrc Update clojure and csharp 2023-07-13 15:15:22 -07:00
.gitignore Remove all flake.lock files 2025-09-12 15:35:25 +02:00
flake.lock Update root Nixpkgs 2025-09-12 15:43:06 +02:00
flake.nix Update Go version 2025-09-12 15:40:58 +02:00
README.md Add Typst development environment 2025-08-05 12:22:39 +01:00

Nix flake templates for easy dev environments

built with nix

To initialize (where ${ENV} is listed in the table below):

nix flake init --template "https://flakehub.com/f/the-nix-way/dev-templates/*#${ENV}"

Here's an example (for the rust template):

# Initialize in the current project
nix flake init --template "https://flakehub.com/f/the-nix-way/dev-templates/*#rust"

# Create a new project
nix flake new --template "https://flakehub.com/f/the-nix-way/dev-templates/*#rust" ${NEW_PROJECT_DIRECTORY}

How to use the templates

Once your preferred template has been initialized, you can use the provided shell in two ways:

  1. If you have nix-direnv installed, you can initialize the environment by running direnv allow.
  2. If you don't have nix-direnv installed, you can run nix develop to open up the Nix-defined shell.

Available templates

Language/framework/tool Template
Bun bun
C/C++ c-cpp
Clojure clojure
Cue cue
Dhall dhall
Elixir elixir
Elm elm
Empty (change at will) empty
Gleam gleam
Go go
Hashicorp tools hashi
Haskell haskell
Haxe haxe
Java java
Jupyter jupyter
Kotlin kotlin
LaTeX latex
Nickel nickel
Nim nim
Nix nix
Node.js node
OCaml ocaml
Odin odin
Open Policy Agent opa
PHP php
PlatformIO platformio
Protobuf protobuf
Pulumi pulumi
Purescript purescript
Python python
R r
Ruby ruby
Rust rust
Rust from toolchain file rust-toolchain
Scala scala
Shell shell
SWI-prolog swi-prolog
Swift swift
Typst typst
Vlang vlang
Zig zig

Template contents

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.

bun

c-cpp

clojure

cue

dhall

elixir

elm

Empty

A dev template that's fully customizable.

gleam

go

hashi

haskell

haxe

java

jupyter

kotlin

latex

lean4

nickel

nim

nix

node

ocaml

odin

opa

php

platformio

protobuf

pulumi

purescript

python

r

ruby

  • Ruby, plus the standard Ruby tools (bundle, gem, etc.)

rust

  • Rust, including cargo, Clippy, and the other standard tools. The Rust version is determined as follows, in order:

    • From the rust-toolchain.toml file if present
    • From the rust-toolchain file if present
    • Version 1.78.0 if neither is present
  • rust-analyzer

  • cargo-edit

  • cargo-deny

scala

shell

swi-prolog

swift

typst

vlang

zig