flake.nix 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. "dashu-0.2.0" = "sha256-gD1eb0N6sxEm6vpaQWqdodRGPvAlsPcV2Jxp63VQZZ4=";
  53. };
  54. };
  55. nativeBuildInputs = myNativeBuildInputs;
  56. buildInputs = myBuildInputs;
  57. #RUST_BACKTRACE=1;
  58. #RUST_LOG="trace";
  59. } // attrs);
  60. in rec {
  61. packages = rec {
  62. darkfi-drk = myBuildRustPackage rec {
  63. pname = "darkfi-drk";
  64. buildAndTestSubdir = "./bin/drk";
  65. };
  66. darkfi-darkfid = myBuildRustPackage rec {
  67. pname = "darkfi-darkfid";
  68. buildAndTestSubdir = "./bin/darkfid";
  69. };
  70. darkfi-dnetview = myBuildRustPackage rec {
  71. pname = "darkfi-dnetview";
  72. buildAndTestSubdir = "./bin/dnetview";
  73. };
  74. darkfi-ircd = myBuildRustPackage rec {
  75. pname = "darkfi-ircd";
  76. buildAndTestSubdir = "./bin/ircd";
  77. };
  78. darkfi-tau = myBuildRustPackage rec {
  79. pname = "darkfi-tau";
  80. buildAndTestSubdir = "./bin/tau";
  81. };
  82. darkfi-taud = myBuildRustPackage rec {
  83. pname = "darkfi-taud";
  84. buildAndTestSubdir = "./bin/taud";
  85. };
  86. darkfi-zkas = myBuildRustPackage rec {
  87. pname = "darkfi-zkas";
  88. buildAndTestSubdir = "./bin/zkas";
  89. };
  90. default = darkfi-drk;
  91. };
  92. defaultPackage = packages.default; # compat
  93. apps = rec {
  94. darkfi-drk = utils.lib.mkApp {
  95. drv = packages.darkfi-drk;
  96. exePath = "/bin/drk";
  97. };
  98. darkfi-darkfid = utils.lib.mkApp {
  99. drv = packages.darkfi-darkfid;
  100. exePath = "/bin/darkfid";
  101. };
  102. darkfi-dnetview = utils.lib.mkApp {
  103. drv = packages.darkfi-dnetview;
  104. exePath = "/bin/dnetview";
  105. };
  106. darkfi-ircd = utils.lib.mkApp {
  107. drv = packages.darkfi-ircd;
  108. exePath = "/bin/ircd";
  109. };
  110. darkfi-tau = utils.lib.mkApp {
  111. drv = packages.darkfi-tau;
  112. exePath = "/bin/tau";
  113. };
  114. darkfi-taud = utils.lib.mkApp {
  115. drv = packages.darkfi-taud;
  116. exePath = "/bin/taud";
  117. };
  118. darkfi-zkas = utils.lib.mkApp {
  119. drv = packages.darkfi-zkas;
  120. exePath = "/bin/zkas";
  121. };
  122. default = darkfi-drk;
  123. };
  124. });
  125. }