Dev environments for numerous languages based on Nix flakes [maintainer=@lucperkins]
Find a file
2023-08-22 11:13:18 -07:00
.github Minor change to workflow YAML 2023-08-22 11:13:18 -07:00
clojure Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
csharp Update README with new versions 2023-07-13 17:52:19 -07:00
cue Update README with new versions 2023-07-13 17:52:19 -07:00
dhall Update README with new versions 2023-07-13 17:52:19 -07:00
elixir Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
elm Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
gleam Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
go Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
hashi Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
haskell Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
java Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
kotlin Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
latex Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
nickel Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
nim Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
nix Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
node Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
ocaml Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
opa Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
php Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
protobuf Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
pulumi Support current SDKs 2023-07-13 15:45:30 -07:00
purescript Remove flake-utils from root flake.nix 2023-07-13 17:26:57 -07:00
python Fix merge conflicts with main 2023-07-13 17:18:17 -07:00
ruby Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
rust Update Rust flake.lock 2023-07-14 08:17:23 -07:00
rust-toolchain Update Rust flake.lock 2023-07-14 08:17:23 -07:00
scala Fix merge conflicts with main 2023-07-13 17:18:17 -07:00
shell Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
zig Revamp all templates to remove flake-utils and nixpkgs-unstable 2023-07-13 17:12:42 -07:00
.editorconfig Add editorconfig file 2022-07-12 02:01:42 +02:00
.envrc Add Pulumi template 2023-07-13 15:38:06 -07:00
.gitignore Add dvt script to flake outputs 2022-10-21 11:12:21 +02:00
flake.lock Remove flake-utils from root flake.nix 2023-07-13 17:26:57 -07:00
flake.nix Merge pull request #23 from the-nix-way/pulumi-template 2023-07-14 08:43:38 -07:00
README.md Merge pull request #23 from the-nix-way/pulumi-template 2023-07-14 08:43:38 -07: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 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
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
Pulumi pulumi
Purescript purescript
Ruby ruby
Rust rust
Scala scala
[Shell] shell
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

gleam

go

hashi

haskell

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

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 flake-utils to all the templates.