Dev environments for numerous languages based on Nix flakes [maintainer=@lucperkins]
Find a file
2024-09-10 10:57:31 +02:00
.github Minor change to workflow YAML 2023-08-22 11:13:18 -07:00
clojure Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
csharp Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
cue Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
dhall Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
elixir Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
elm Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
empty Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
gleam Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
go Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
hashi Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
haskell Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
haxe Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
java Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
jupyter Also add python-lsp-ruff to jupyter 2024-09-10 10:57:31 +02:00
kotlin Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
latex Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
nickel Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
nim Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
nix Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
node Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
ocaml Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
opa Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
php Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
protobuf Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
pulumi Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
purescript Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
python Add python-lsp-ruff to python dev env 2024-09-10 10:56:41 +02:00
ruby Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
rust Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
rust-toolchain Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
rustpython Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
scala Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
shell Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
vlang Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +02:00
zig Add some jupyter stuff for exploration (ydata mostly) and update the flake locks 2024-06-04 10:11:30 +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 Add dvt script to flake outputs 2022-10-21 11:12:21 +02:00
flake.lock Update root flake lock 2024-04-25 12:40:44 +02:00
flake.nix Add back jupyter and rust python commands 2024-04-25 12:36:45 +02:00
README.md Add back jupyter and rust python commands 2024-04-25 12:36:45 +02: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 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}

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 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
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
[Jupyter] jupyter
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
RustPython rustpython
Scala scala
[Shell] shell
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.

clojure

csharp

cue

dhall

elixir

elm

Empty

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

  • Ruby 3.2.2, 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.70.0 if neither is present
  • rust-analyzer 2023-07-10

  • cargo-audit 0.17.0

  • cargo-deny 0.12.1

scala

shell

Vlang

zig

Code organization

All of the templates have only the root flake as a flake input. That root flake provides a common revision of Nixpkgs and to all the templates.