Skip to content

Dev environments for numerous languages based on Nix flakes [maintainer=@lucperkins]

Notifications You must be signed in to change notification settings

dnswd/dev-templates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal nix flake templates for easy dev environments

Forked from the-nix-way. GO check their blog!

built with nix

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

nix flake init --template github:dnswd/dev-templates#${ENV}

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

# Initialize in the current project
nix flake init --template github:dnswd/dev-templates#rust

# Create a new project
nix flake new --template github:dnswd/dev-templates#rust ${NEW_PROJECT_DIRECTORY}

Or you can add this line directly into .envrc:

use flake "github:dnswd/dev-templates?dir=${ENV}"

By directly declaring flakes in the .envrc you can compose multiple flakes:

use flake "github:dnswd/dev-templates?dir=python"
use flake "github:dnswd/dev-templates?dir=cpp"

Composing flakes may not always be the best idea, as Nix honors the flake listed last in case of a clash, for example in the case of two buildInputs named cargo that refer to different versions of Cargo.

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
PHP php
Protobuf protobuf
Purescript purescript
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.

  • Ruby 3.1.2p20, plus the standard Ruby tools (bundle, gem, etc.)
  • 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

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.

About

Dev environments for numerous languages based on Nix flakes [maintainer=@lucperkins]

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages