Shared Nix flake infrastructure for systemic-engineering projects. Provides reusable devShells, Rust toolchains, BEAM environments, and NIF support so individual projects don't each re-roll their own.
| File | What it provides |
|---|---|
flake.nix |
Top-level: exports lib.{beam,rust,nif,conversation,crate} + devShells |
rust.nix |
Pinned Rust toolchain (1.94.0 via rust-overlay) + persistent CARGO_HOME |
beam.nix |
Elixir 1.18 / OTP 27 + Gleam, worktree guard, glue connect |
nif.nix |
Rustler NIF build tools (for fragmentation, etc.) |
conversation.nix |
.conv package development environment |
crate.nix |
Cargo.toml materialization DSL |
ci.nix |
Typed OBC pipeline module (observable, budget, cascade) |
actor.nix |
NixOS module for actor services |
In your project's flake.nix:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
flakes.url = "github:systemic-engineering/flakes";
};
outputs = { self, nixpkgs, flake-utils, flakes }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
rust = flakes.lib.rust.${system};
in {
devShells.default = pkgs.mkShell {
buildInputs = rust.rustTools;
shellHook = rust.rustHook;
};
});
}Or grab a ready-made devShell directly:
nix develop github:systemic-engineering/flakes#rust
Available devShells: default, rust, elixir, gleam, beam,
gleam-rust, elixir-nif, conversation.
The Rust toolchain is pinned via rust-overlay at 1.94.0. This is deliberate:
when consuming projects update nixpkgs, the rustc store path does not
change. Cargo fingerprints stay stable, which means CI caches (e.g.
Swatinem/rust-cache) actually hit on subsequent runs instead of invalidating
on every nixpkgs bump.
CARGO_HOME points at ~/.cargo (persistent, shared across projects) rather
than per-project, so the registry index and crate sources are downloaded once
and reused everywhere. CARGO_TARGET_DIR is left to the consumer's
~/.cargo/config.toml.
Updating Rust is now an explicit edit to rust.nix, not a side effect of
nix flake update.
Apache-2.0 — Copyright 2026 Alex Wolf / systemic.engineering.