flake.nix 3.7 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/nixpkgs-unstable";
  12. inputs.utils.url = "github:numtide/flake-utils";
  13. inputs.crane.url = "github:ipetkov/crane";
  14. inputs.crane.inputs.nixpkgs.follows = "nixpkgs";
  15. outputs = {
  16. self,
  17. nixpkgs,
  18. utils,
  19. crane,
  20. }:
  21. utils.lib.eachDefaultSystem (system: let
  22. craneLib = crane.lib.${system};
  23. pkgs = import nixpkgs {
  24. inherit system;
  25. };
  26. myNativeBuildInputs = with pkgs; [
  27. pkg-config
  28. gnumake
  29. cmake
  30. clang
  31. libclang
  32. llvm
  33. ];
  34. myBuildInputs = with pkgs; [
  35. expat
  36. fontconfig
  37. freetype
  38. openssl
  39. ];
  40. myBuildRustPackage = attrs:
  41. craneLib.buildPackage ({
  42. src = ../.;
  43. nativeBuildInputs = myNativeBuildInputs;
  44. buildInputs = myBuildInputs;
  45. #RUST_BACKTRACE=1;
  46. #RUST_LOG="trace";
  47. }
  48. // attrs);
  49. in rec {
  50. packages = rec {
  51. darkfi-drk = myBuildRustPackage {
  52. pname = "darkfi-drk";
  53. cargoExtraArgs = "--package=drk";
  54. buildAndTestSubdir = "./bin/drk";
  55. };
  56. darkfi-darkfid = myBuildRustPackage {
  57. pname = "darkfi-darkfid";
  58. cargoExtraArgs = "--package=darkfid";
  59. buildAndTestSubdir = "./bin/darkfid";
  60. };
  61. darkfi-dnetview = myBuildRustPackage {
  62. pname = "darkfi-dnetview";
  63. cargoExtraArgs = "--package=dnetview";
  64. buildAndTestSubdir = "./bin/dnetview";
  65. };
  66. darkfi-ircd = myBuildRustPackage {
  67. pname = "darkfi-ircd";
  68. cargoExtraArgs = "--package=ircd";
  69. buildAndTestSubdir = "./bin/ircd";
  70. };
  71. darkfi-tau = myBuildRustPackage {
  72. pname = "darkfi-tau";
  73. cargoExtraArgs = "--package=tau";
  74. buildAndTestSubdir = "./bin/tau";
  75. };
  76. darkfi-taud = myBuildRustPackage {
  77. pname = "darkfi-taud";
  78. cargoExtraArgs = "--package=taud";
  79. buildAndTestSubdir = "./bin/taud";
  80. };
  81. darkfi-zkas = myBuildRustPackage {
  82. pname = "darkfi-zkas";
  83. cargoExtraArgs = "--package=zkas";
  84. buildAndTestSubdir = "./bin/zkas";
  85. };
  86. darkfi-vanityaddr = myBuildRustPackage {
  87. pname = "darkfi-vanityaddr";
  88. cargoExtraArgs = "--package=vanityaddr";
  89. buildAndTestSubdir = "./bin/vanityadddr";
  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. }