flake.nix 3.7 KB

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