Flake providing development environments for common languages
Find a file
2024-08-18 00:03:40 -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 clarify readme 2024-08-18 00:03:40 -07:00

Nix development environments, for various languages

Those of us on NixOS never install language toolkits system-wide, unlike other distros. This means that when we work on projects which expect you to bring your own language tools, we don't have things like node, npm, cargo, etc. readily available in the shell.

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