flake.nix 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. # Nix flake
  2. #
  3. # To use it, install Nix & Nix flakes (see https://nixos.wiki/wiki/Flakes)
  4. # Then use these commands to get a development shell, build and run binaries:
  5. # $ cd contrib
  6. # $ nix develop
  7. # $ nix build '.#darkfi-ircd'
  8. # $ nix run '.#darkfi-ircd'
  9. {
  10. description = "DarkFi";
  11. inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11";
  12. inputs.utils.url = "github:numtide/flake-utils";
  13. inputs.rust-overlay.url = "github:oxalica/rust-overlay";
  14. outputs = { self, nixpkgs, utils, rust-overlay }:
  15. utils.lib.eachDefaultSystem (system:
  16. let
  17. overlays = [
  18. (import rust-overlay)
  19. ];
  20. pkgs = import nixpkgs rec {
  21. inherit system overlays;
  22. };
  23. rust-bin = pkgs.rust-bin.stable."1.66.0".default.override {
  24. extensions = [ "rust-src" ];
  25. };
  26. buildRustPackage = (pkgs.makeRustPlatform {
  27. cargo = rust-bin;
  28. rustc = rust-bin;
  29. }).buildRustPackage;
  30. myNativeBuildInputs = with pkgs; [
  31. pkg-config
  32. gnumake
  33. cmake
  34. clang
  35. libclang
  36. llvm
  37. ];
  38. myBuildInputs = with pkgs; [
  39. expat
  40. fontconfig
  41. freetype
  42. openssl
  43. ];
  44. myBuildRustPackage = attrs:
  45. buildRustPackage ({
  46. version = "0.3.0";
  47. src = ../.;
  48. cargoLock = {
  49. lockFile = ../Cargo.lock;
  50. outputHashes = {
  51. "term_grid-0.2.0" = "sha256-wl4ZlFjY34xPuMpXdX1a/g9YUomKLIYp2U8r9/goti0=";
  52. "halo2_proofs-0.2.0" = "sha256-WkDg1SgGPH9KyEAgwyl+OXrPk+w9Rd+8ZC+bbGx0Yek=";
  53. #"dashu-0.2.0" = "sha256-gD1eb0N6sxEm6vpaQWqdodRGPvAlsPcV2Jxp63VQZZ4=";
  54. };
  55. };
  56. nativeBuildInputs = myNativeBuildInputs;
  57. buildInputs = myBuildInputs;
  58. #RUST_BACKTRACE=1;
  59. #RUST_LOG="trace";
  60. } // attrs);
  61. in rec {
  62. packages = rec {
  63. darkfi-drk = myBuildRustPackage rec {
  64. pname = "darkfi-drk";
  65. buildAndTestSubdir = "./bin/drk";
  66. };
  67. darkfi-darkfid = myBuildRustPackage rec {
  68. pname = "darkfi-darkfid";
  69. buildAndTestSubdir = "./bin/darkfid";
  70. };
  71. darkfi-dnetview = myBuildRustPackage rec {
  72. pname = "darkfi-dnetview";
  73. buildAndTestSubdir = "./bin/dnetview";
  74. };
  75. darkfi-ircd = myBuildRustPackage rec {
  76. pname = "darkfi-ircd";
  77. buildAndTestSubdir = "./bin/ircd";
  78. };
  79. darkfi-tau = myBuildRustPackage rec {
  80. pname = "darkfi-tau";
  81. buildAndTestSubdir = "./bin/tau";
  82. };
  83. darkfi-taud = myBuildRustPackage rec {
  84. pname = "darkfi-taud";
  85. buildAndTestSubdir = "./bin/taud";
  86. };
  87. darkfi-zkas = myBuildRustPackage rec {
  88. pname = "darkfi-zkas";
  89. buildAndTestSubdir = "./bin/zkas";
  90. };
  91. default = darkfi-drk;
  92. };
  93. defaultPackage = packages.default; # compat
  94. apps = rec {
  95. darkfi-drk = utils.lib.mkApp {
  96. drv = packages.darkfi-drk;
  97. exePath = "/bin/drk";
  98. };
  99. darkfi-darkfid = utils.lib.mkApp {
  100. drv = packages.darkfi-darkfid;
  101. exePath = "/bin/darkfid";
  102. };
  103. darkfi-dnetview = utils.lib.mkApp {
  104. drv = packages.darkfi-dnetview;
  105. exePath = "/bin/dnetview";
  106. };
  107. darkfi-ircd = utils.lib.mkApp {
  108. drv = packages.darkfi-ircd;
  109. exePath = "/bin/ircd";
  110. };
  111. darkfi-tau = utils.lib.mkApp {
  112. drv = packages.darkfi-tau;
  113. exePath = "/bin/tau";
  114. };
  115. darkfi-taud = utils.lib.mkApp {
  116. drv = packages.darkfi-taud;
  117. exePath = "/bin/taud";
  118. };
  119. darkfi-zkas = utils.lib.mkApp {
  120. drv = packages.darkfi-zkas;
  121. exePath = "/bin/zkas";
  122. };
  123. default = darkfi-drk;
  124. };
  125. });
  126. }