No description
  • C++ 85.9%
  • Nix 5.9%
  • Shell 4.8%
  • Just 1.7%
  • CMake 1.7%
Find a file
NotAShelf 7a74735213
nix: add libblake to buildInputs; split off nativeBuildInputs
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0541e803fd9635867501202c18567f786a6a6964
2026-02-22 00:07:37 +03:00
src initial commit 2026-02-22 00:07:30 +03:00
.envrc meta: add direnv support 2026-02-22 00:07:36 +03:00
CMakeLists.txt initial commit 2026-02-22 00:07:30 +03:00
flake.lock initial commit 2026-02-22 00:07:30 +03:00
flake.nix nix: add libblake to buildInputs; split off nativeBuildInputs 2026-02-22 00:07:37 +03:00
README.md docs: initial project overview 2026-02-22 00:07:35 +03:00

Nixir - Import-Resolving IR Plugin

Nixir, for the lack of a more imaginative name, is a Nix plugin with a fancy hybrid compilation architecture for optimized evaluation. We provide two complementary paths for Nix evaluator. It is either On-the-fly compilation where the plugin parses and compiles Nix code at runtime, or; ahead-of-time compilation where the nix-irc tool pre-compiles .nix files into .nixir files.

The plugin automatically chooses the fastest path based on file availability.

Supported Nix Constructs

  • Literals: integers, strings, booleans, null, paths
  • Attrsets: { name: value; }
  • Recursive attrsets: rec { ... }
  • Let bindings: let x: 1; in x
  • Recursion let: let rec x: y; y: x; in x
  • Conditionals: if cond then a else b
  • Lambdas: (basic support, patterns coming in Phase 5)
  • Applications: function calls
  • Selections: attrset.attribute
  • Assertions: assert condition; expr
  • With expressions: with attrs; expr
  • Operators:
    • Binary: +, -, *, /, ++, ==, !=, <, >, <=, >=, &&, ||, ->
    • Unary: -, !

Usage

Compiling Nix to IR

# Basic compilation
$ nix-irc input.nix output.nixir

# With import search paths
$ nix-irc -I ./lib -I /nix/store/... input.nix output.nixir

# Disable import resolution
$ nix-irc --no-imports input.nix output.nixir

Contributing

This is a research/experimental project. Contributions welcome!

Areas where help is needed:

  • Expanding parser to handle more Nix syntax
  • Performance optimization
  • Test coverage
  • Documentation improvements