edinix is a Nix flake that provides preconfigured editor environments for various programming languages using either Helix, Emacs or Visual Studio Code. Each editor environment includes language-specific extensions, tools, and settings, making it easy to spin up a consistent development environment with minimal setup.
- Predefined editor profiles for multiple languages
- Language-specific extensions and tools included automatically
- Reproducible, flake-based environments
- Supports both Emacs and VSCode
- Easy to extend with new profiles or custom configurations
| Language | Emacs Support | VSCode Support |
|---|---|---|
| Nix | Yes | Yes |
| C | Yes | Yes |
| C++ | Yes | Yes |
| Rust | Yes | Yes |
| Go | — | Yes |
| Clojure | Yes | Yes |
| Haskell | Yes | Yes |
| ATS | Yes | — |
| Shell | — | Yes |
This flake exposes a set of devShells that launch Emacs or VSCode with the appropriate tooling and configuration for a given language profile.
For example:
.#code.go– VSCode with Go extensions and tools.#emacs.cpp– Emacs with C++ support.#code.nix– VSCode with Nix support
Each devShell includes:
- The editor with relevant extensions or packages
- Associated tooling such as language servers, linters, and formatters
- Editor settings (e.g. VSCode
settings.json, Emacsinit.el)
To add or customize profiles:
- Add or edit entries in
lib/emacs/profiles.nixorlib/code/profiles.nix. - Define which extensions, tools, and settings should be included.
- Enable the profile by referencing it in
flake.nix.
You can also pass extraExtensions or override settings per invocation if needed.
MIT or similar permissive license.