1
1
Fork 0
mirror of https://github.com/the-nix-way/dev-templates synced 2024-05-20 18:36:24 +02:00
Dev environments for numerous languages based on Nix flakes
Go to file
Luc Perkins 6ae65b11c7
Update project flake.lock files
2022-08-20 15:55:36 +03:00
.github Add FUNDING.yml 2022-07-29 18:29:57 +02:00
clojure Update project flake.lock files 2022-08-20 15:55:36 +03:00
cue Update project flake.lock files 2022-08-20 15:55:36 +03:00
dhall Update project flake.lock files 2022-08-20 15:55:36 +03:00
elixir Update project flake.lock files 2022-08-20 15:55:36 +03:00
elm Update project flake.lock files 2022-08-20 15:55:36 +03:00
gleam Update project flake.lock files 2022-08-20 15:55:36 +03:00
go Update project flake.lock files 2022-08-20 15:55:36 +03:00
hashi Update project flake.lock files 2022-08-20 15:55:36 +03:00
haskell Update project flake.lock files 2022-08-20 15:55:36 +03:00
java Update project flake.lock files 2022-08-20 15:55:36 +03:00
kotlin Update project flake.lock files 2022-08-20 15:55:36 +03:00
nickel Update project flake.lock files 2022-08-20 15:55:36 +03:00
nim Update project flake.lock files 2022-08-20 15:55:36 +03:00
nix Update project flake.lock files 2022-08-20 15:55:36 +03:00
node Update project flake.lock files 2022-08-20 15:55:36 +03:00
ocaml Update project flake.lock files 2022-08-20 15:55:36 +03:00
opa Update project flake.lock files 2022-08-20 15:55:36 +03:00
protobuf Update project flake.lock files 2022-08-20 15:55:36 +03:00
python Update project flake.lock files 2022-08-20 15:55:36 +03:00
ruby Update project flake.lock files 2022-08-20 15:55:36 +03:00
rust Update project flake.lock files 2022-08-20 15:55:36 +03:00
scala Update project flake.lock files 2022-08-20 15:55:36 +03:00
zig Update project flake.lock files 2022-08-20 15:55:36 +03:00
.editorconfig Add editorconfig file 2022-07-12 02:01:42 +02:00
.envrc Add helper scripts via Nix 2022-07-29 00:42:22 +02:00
.gitignore Basic repo cleanup 2022-07-28 23:20:46 +02:00
README.md Reformat all projects; switch to overlay format 2022-08-20 15:54:34 +03:00
flake.lock Update root flake 2022-08-13 18:32:50 +03:00
flake.nix Update project flake.lock files 2022-08-20 15:55:36 +03: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
Cue cue
Dhall dhall
Elixir elixir
Elm elm
Gleam gleam
Go go
Hashicorp tools hashi
Java java
Kotlin kotlin
Nickel nickel
Nim nim
Nix nix
Node.js node
OCaml ocaml
Open Policy Agent opa
Protobuf protobuf
Ruby ruby
Rust rust
Scala scala
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

cue

dhall

elixir

elm

gleam

go

hashi

haskell

java

kotlin

nickel

nim

nix

node

ocaml

opa

protobuf

python

ruby

  • Ruby 3.1.2p20, 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.63.0 if neither is present
  • rust-analyzer 2022-08-01

  • cargo-audit 0.17.0

  • cargo-deny 0.12.1

  • cross 0.2.4

scala

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.