Skip to content

Languages

What if you could have the tooling for any programming language by flipping a toggle?

devenv.nix
{ pkgs, ... }:

{
  languages.python.enable = true;
  languages.python.version = "3.11.3";

  languages.rust.enable = true;
  # https://devenv.sh/reference/options/#languagesrustchannel
  languages.rust.channel = "stable";
}

devenv will provide executables for both languages:

$ devenv shell
Building shell ...
Entering shell ...

(devenv) $ python --version
Python 3.11.3

Supported languages

languages.ansible.enable = true;
languages.c.enable = true;
languages.clojure.enable = true;
languages.cplusplus.enable = true;
languages.crystal.enable = true;
languages.cue.enable = true;
languages.dart.enable = true;
languages.deno.enable = true;
languages.dotnet.enable = true;
languages.elixir.enable = true;
languages.elm.enable = true;
languages.erlang.enable = true;
languages.fortran.enable = true;
languages.gawk.enable = true;
languages.gleam.enable = true;
languages.go.enable = true;
languages.haskell.enable = true;
languages.idris.enable = true;
languages.java.enable = true;
languages.javascript.enable = true;
languages.jsonnet.enable = true;
languages.julia.enable = true;
languages.kotlin.enable = true;
languages.lean4.enable = true;
languages.lua.enable = true;
languages.nim.enable = true;
languages.nix.enable = true;
languages.ocaml.enable = true;
languages.odin.enable = true;
languages.opentofu.enable = true;
languages.pascal.enable = true;
languages.perl.enable = true;
languages.php.enable = true;
languages.purescript.enable = true;
languages.python.enable = true;
languages.r.enable = true;
languages.racket.enable = true;
languages.raku.enable = true;
languages.robotframework.enable = true;
languages.ruby.enable = true;
languages.rust.enable = true;
languages.scala.enable = true;
languages.shell.enable = true;
languages.solidity.enable = true;
languages.standardml.enable = true;
languages.swift.enable = true;
languages.terraform.enable = true;
languages.texlive.enable = true;
languages.typescript.enable = true;
languages.typst.enable = true;
languages.unison.enable = true;
languages.v.enable = true;
languages.vala.enable = true;
languages.zig.enable = true;

You can find all supported options for languages here.