Flake providing development environments for common languages
Find a file
2024-08-18 00:01:48 -07:00
flake.lock initial commit 2024-08-17 23:46:08 -07:00
flake.nix feat: add lsps for all languages 2024-08-17 23:59:50 -07:00
README.md docs: add list of supported languages 2024-08-18 00:01:48 -07:00

Nix development environments, for various languages

Those of us on NixOS never install language toolkits system-wide, unlike other distros. Regrettably, many projects are not taking advantage of Nix for reproducible development environments. You should make a big fuss about this in every open source project you are a part of and constantly evangelize about Nix. Until Nix is universally adopted, this repository serves as a collection of flakes which provides compilers, package managers, and basic development tools like LSPs for common languages. Simply clone this to a desired location, then run:

nix develop <location-of-repo>#<language>

# example
nix develop ~/.devenvs#rustNightly

# provides rust-analyzer, rustc, cargo, and some others from nightly toolchain

Automatic environment loading

For convenience, you can use nix-direnv to automatically load these environments.

Simply add the following .envrc to the project directory:

# file: .envrc
use flake <path-to-this-repo>#<language>

Example:

use flake ~/.devenvs#go

If you don't want to commit these files, make sure to run the following:

# tell git to ignore these direnv files for this local repository
git update-index --skip-worktree .envrc .direnv

Provided environments:

  • Go
  • Python (using poetry)
  • Haskell (with Cabal)
  • Haskell (with Stack)
  • Rust (stable, nightly, and beta toolchains)
  • Node/TypeScript (pnpm, yarn, and npm variants)
  • Typst
  • LaTeX (via texlive, with full and minimal variants)
  • Zig