flake.nix 3.8 KB

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