···11+{
22+ description = "A simulator for the GA144 multi-computer";
33+44+ inputs = {
55+ # We want to stay as up to date as possible but need to be careful that the
66+ # glibc versions used by our dependencies from Nix are compatible with the
77+ # system glibc that the user is building for.
88+ nixpkgs.url = "github:nixos/nixpkgs/release-24.11";
99+1010+ zig-overlay = {
1111+ url = "github:mitchellh/zig-overlay";
1212+ inputs.nixpkgs.follows = "nixpkgs";
1313+ };
1414+1515+ zls-pkg.url = "github:zigtools/zls?ref=0.14.0";
1616+ };
1717+1818+ outputs = {
1919+ nixpkgs,
2020+ zig-overlay,
2121+ zls-pkg,
2222+ ...
2323+ }:
2424+ builtins.foldl' nixpkgs.lib.recursiveUpdate {} (
2525+ builtins.map (
2626+ system: let
2727+ pkgs = nixpkgs.legacyPackages.${system};
2828+ zig = zig-overlay.packages.${system}."0.14.0";
2929+ zls = zls-pkg.packages.${system}.default;
3030+ in {
3131+ devShells.${system}.default = pkgs.mkShell {
3232+ nativeBuildInputs = [
3333+ zig
3434+ zls
3535+ ];
3636+ };
3737+3838+ formatter.${system} = pkgs.alejandra;
3939+ }
4040+ # Our supported systems are the same supported systems as the Zig binaries.
4141+ ) (builtins.attrNames zig-overlay.packages)
4242+ );
4343+}