{ description = "FDB"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; flakeUtils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flakeUtils }: flakeUtils.lib.eachSystem [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" "aarch64-linux" ] (system: let pkgs = import nixpkgs { inherit system; config = { allowBroken = system == "x86_64-darwin"; }; }; fdb_6_pkgs = pkgs.lib.optionalAttrs (system != "aarch64-darwin") { fdb_6 = pkgs.callPackage ./nix/6.x/all.nix { darwin = if pkgs.stdenv.isDarwin then pkgs.darwin else null; }; }; fdb_7_pkgs = pkgs.lib.optionalAttrs (system != "x86_64-darwin") ( let fdb_7_pkg = if (system == "aarch64-darwin") then ( pkgs.callPackage ./nix/7.x/aarch64-darwin.nix { } ) else ( pkgs.callPackage ./nix/7.x/linux.nix { lz4 = pkgs.lz4.overrideAttrs (oldAttrs: { makeFlags = [ "PREFIX=$(out)" "INCLUDEDIR=$(dev)/include" "BUILD_STATIC=yes" "BUILD_SHARED=yes" "WINDRES:=${pkgs.stdenv.cc.bintools.targetPrefix}windres" ]; }); } ); in { fdb_7 = fdb_7_pkg // { all = pkgs.linkFarm "${fdb_7_pkg.name}-all" [ { name = "out"; path = fdb_7_pkg; } { name = "lib"; path = fdb_7_pkg.lib; } { name = "bindings"; path = fdb_7_pkg.bindings; } ]; }; } ); vscodeSettings = pkgs.writeTextFile { name = "vscode-settings.json"; text = builtins.toJSON { "nix.enableLanguageServer" = true; "nix.formatterPath" = pkgs.nixpkgs-fmt + "/bin/nixpkgs-fmt"; "nix.serverPath" = pkgs.rnix-lsp + "/bin/rnix-lsp"; }; }; in rec { devShell = pkgs.mkShellNoCC { shellHook = '' mkdir -p ./.vscode cat ${vscodeSettings} | jq . > ./.vscode/settings.json ''; buildInputs = builtins.attrValues { inherit (pkgs) jq ; }; }; packages = fdb_6_pkgs // fdb_7_pkgs; defaultPackage = pkgs.buildEnv { name = "fdb"; paths = builtins.attrValues packages; }; } ); }