{ description = "Parser for the Nix language"; inputs = { nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.zst"; flake-parts.url = "github:hercules-ci/flake-parts"; zeiss = { url = "git+ssh://forgejo@git.ginkogruen.net/ginkogruen/zeiss"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-parts.follows = "flake-parts"; }; }; outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; perSystem = { pkgs, system, self', ... }: { packages.default = self'.packages.nix_parser; packages.nix_parser = inputs.zeiss.lib.${system}.buildGleamApplication { pname = "nix_parser"; version = "1.0.0"; src = ./.; doCheck = true; compileNoDev = false; # As `nix_parser` is a library it doesn't have a `main()` function in `src/nix_parser.gleam`. evalModule = "nix_parser_dev"; erlang = pkgs.beam29Packages.erlang; elixir = pkgs.beam29Packages.elixir_1_20; zeissNix = import ./zeiss.nix; }; devShells.default = pkgs.mkShell { packages = with pkgs; [ # Gleam tooling gleam beam29Packages.erlang beam29Packages.elixir_1_20 # Nix tooling nixd nixfmt nix-output-monitor # Other inputs.zeiss.packages.${system}.zeiss hyperfine ]; }; }; }; }