{ description = "Prop — Microwave propagation prediction for NTMS"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; systems.url = "github:nix-systems/default"; pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, flake-parts, systems, pre-commit-hooks, }: flake-parts.lib.mkFlake { inherit inputs; } { systems = builtins.filter (s: s != "x86_64-darwin") (import systems); perSystem = { config, self', inputs', pkgs, system, ... }: { _module.args.pkgs = import nixpkgs { inherit system; config = { allowUnfree = true; }; overlays = [ # Pin Erlang 29.0.3 and Elixir 1.20.2 (matches .tool-versions) (final: prev: { erlang = prev.beam.interpreters.erlang_29; elixir = prev.beam.packages.erlang_29.elixir_1_20; beamPackages = prev.beam.packages.erlang_29.extend ( self: super: { elixir = super.elixir_1_20; } ); }) ]; }; # Development shell with PostgreSQL, Rust, Elixir LSP devShells.default = pkgs.callPackage ./nix/shell.nix { pre-commit-hooks = inputs.pre-commit-hooks.lib.${system}; }; # Nix formatter for flake files formatter = pkgs.nixfmt; }; }; }