flake.nix 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. {
  2. description = "Cashu Development Kit";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
  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 = "cdk";
  20. path = ./.;
  21. };
  22. paths = [ "crates/*" ];
  23. };
  24. targetsStd = flakeboxLib.mkStdTargets { };
  25. toolchainsStd = flakeboxLib.mkStdToolchains { };
  26. toolchainNative = flakeboxLib.mkFenixToolchain {
  27. targets = (pkgs.lib.getAttrs [ "default" "wasm32-unknown" ] 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
  42. rec {
  43. workspaceDeps = craneLib.buildWorkspaceDepsOnly { };
  44. workspaceBuild =
  45. craneLib.buildWorkspace { cargoArtifacts = workspaceDeps; };
  46. });
  47. in
  48. {
  49. devShells = flakeboxLib.mkShells {
  50. toolchain = toolchainNative;
  51. packages = [ ];
  52. nativeBuildInputs = with pkgs; [ wasm-pack sqlx-cli protobuf3_20 ];
  53. };
  54. });
  55. }