flake.nix 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. {
  2. description = "Cashu Development Kit";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
  5. flakebox = {
  6. url = "github:rustshop/flakebox";
  7. inputs.nixpkgs.follows = "nixpkgs";
  8. };
  9. flake-utils.url = "github:numtide/flake-utils";
  10. };
  11. outputs = { self, nixpkgs, flakebox, flake-utils }:
  12. flake-utils.lib.eachDefaultSystem (system:
  13. let
  14. pkgs = import nixpkgs { system = system; };
  15. lib = pkgs.lib;
  16. flakeboxLib = flakebox.lib.${system} { };
  17. rustSrc = flakeboxLib.filterSubPaths {
  18. root = builtins.path {
  19. name = "cashu-sdk";
  20. path = ./.;
  21. };
  22. paths = [ "crates/cashu" "crates/cashu-sdk" ];
  23. };
  24. targetsStd = flakeboxLib.mkStdTargets { };
  25. toolchainsStd = flakeboxLib.mkStdToolchains { };
  26. toolchainNative = flakeboxLib.mkFenixToolchain {
  27. targets = (pkgs.lib.getAttrs [ "default" ] targetsStd);
  28. };
  29. commonArgs = {
  30. buildInputs = [ pkgs.openssl ] ++ lib.optionals pkgs.stdenv.isDarwin
  31. [ pkgs.darwin.apple_sdk.frameworks.SystemConfiguration ];
  32. nativeBuildInputs = [ pkgs.pkg-config ];
  33. };
  34. outputs = (flakeboxLib.craneMultiBuild { toolchains = toolchainsStd; })
  35. (craneLib':
  36. let
  37. craneLib = (craneLib'.overrideArgs {
  38. pname = "flexbox-multibuild";
  39. src = rustSrc;
  40. }).overrideArgs commonArgs;
  41. in rec {
  42. workspaceDeps = craneLib.buildWorkspaceDepsOnly { };
  43. workspaceBuild =
  44. craneLib.buildWorkspace { cargoArtifacts = workspaceDeps; };
  45. });
  46. in {
  47. devShells = flakeboxLib.mkShells {
  48. toolchain = toolchainNative;
  49. packages = [ ];
  50. nativeBuildInputs = with pkgs; [ ];
  51. };
  52. });
  53. }