{ description = "Flake for the servicepoint library."; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; binding = { url = "git+https://git.berlin.ccc.de/servicepoint/servicepoint-binding-uniffi.git"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, binding, }: let lib = nixpkgs.lib; supported-systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; forAllSystems = f: lib.genAttrs supported-systems ( system: f { inherit system; pkgs = nixpkgs.legacyPackages.${system}; bindingPkgs = binding.packages.${system}; selfPkgs = self.packages.${system}; } ); in { packages = forAllSystems ( { pkgs, bindingPkgs, selfPkgs, ... }: { default = selfPkgs.servicepoint-binding-csharp; servicepoint-binding-uniffi = bindingPkgs.servicepoint-binding-uniffi; servicepoint-binding-csharp = pkgs.buildDotnetModule { pname = "servicepoint-binding-csharp"; version = "0.0.0"; src = ./.; projectFile = "csharp.sln"; nugetDeps = ./deps.json; dotnet-sdk = pkgs.dotnetCorePackages.sdk_8_0; dotnet-runtime = pkgs.dotnetCorePackages.runtime_8_0; packNupkg = true; nativeBuildInputs = with pkgs; [ pkg-config gnumake iconv bindingPkgs.servicepoint-binding-uniffi ]; }; } ); devShells = forAllSystems ( { pkgs, bindingPkgs, selfPkgs, ... }: { default = pkgs.mkShell { inputsFrom = [ bindingPkgs.servicepoint-binding-uniffi selfPkgs.servicepoint-binding-csharp ]; packages = with pkgs; [ bindingPkgs.servicepoint-binding-uniffi nuget-to-json ]; }; } ); formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-tree); }; }