flake.nix 3.2 KB

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