/ contrib / flake.nix
flake.nix
  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  
 12    inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 13    inputs.utils.url = "github:numtide/flake-utils";
 14    inputs.crane.url = "github:ipetkov/crane";
 15    inputs.crane.inputs.nixpkgs.follows = "nixpkgs";
 16  
 17    outputs = {
 18      self,
 19      nixpkgs,
 20      utils,
 21      crane,
 22    }:
 23      utils.lib.eachDefaultSystem (system: let
 24        craneLib = crane.lib.${system};
 25        pkgs = import nixpkgs {
 26          inherit system;
 27        };
 28        myNativeBuildInputs = with pkgs; [
 29          pkg-config
 30          gnumake
 31          cmake
 32          clang
 33          libclang
 34          llvm
 35        ];
 36        myBuildInputs = with pkgs; [
 37          expat
 38          fontconfig
 39          freetype
 40          openssl
 41        ];
 42        myBuildRustPackage = attrs:
 43          craneLib.buildPackage ({
 44              src = ../.;
 45              nativeBuildInputs = myNativeBuildInputs;
 46              buildInputs = myBuildInputs;
 47              #RUST_BACKTRACE=1;
 48              #RUST_LOG="trace";
 49            }
 50            // attrs);
 51      in rec {
 52        packages = rec {
 53          darkfi-drk = myBuildRustPackage {
 54            pname = "darkfi-drk";
 55            cargoExtraArgs = "--package=drk";
 56            buildAndTestSubdir = "./bin/drk";
 57          };
 58          darkfi-darkfid = myBuildRustPackage {
 59            pname = "darkfi-darkfid";
 60            cargoExtraArgs = "--package=darkfid";
 61            buildAndTestSubdir = "./bin/darkfid";
 62          };
 63          darkfi-dnetview = myBuildRustPackage {
 64            pname = "darkfi-dnetview";
 65            cargoExtraArgs = "--package=dnetview";
 66            buildAndTestSubdir = "./bin/dnetview";
 67          };
 68          darkfi-ircd = myBuildRustPackage {
 69            pname = "darkfi-ircd";
 70            cargoExtraArgs = "--package=ircd";
 71            buildAndTestSubdir = "./bin/ircd";
 72          };
 73          darkfi-tau = myBuildRustPackage {
 74            pname = "darkfi-tau";
 75            cargoExtraArgs = "--package=tau";
 76            buildAndTestSubdir = "./bin/tau";
 77          };
 78          darkfi-taud = myBuildRustPackage {
 79            pname = "darkfi-taud";
 80            cargoExtraArgs = "--package=taud";
 81            buildAndTestSubdir = "./bin/taud";
 82          };
 83          darkfi-zkas = myBuildRustPackage {
 84            pname = "darkfi-zkas";
 85            cargoExtraArgs = "--package=zkas";
 86            buildAndTestSubdir = "./bin/zkas";
 87          };
 88          darkfi-vanityaddr = myBuildRustPackage {
 89            pname = "darkfi-vanityaddr";
 90            cargoExtraArgs = "--package=vanityaddr";
 91            buildAndTestSubdir = "./bin/vanityadddr";
 92          };
 93          default = darkfi-drk;
 94        };
 95        defaultPackage = packages.default; # compat
 96  
 97        apps = rec {
 98          darkfi-drk = utils.lib.mkApp {
 99            drv = packages.darkfi-drk;
100            exePath = "/bin/drk";
101          };
102          darkfi-darkfid = utils.lib.mkApp {
103            drv = packages.darkfi-darkfid;
104            exePath = "/bin/darkfid";
105          };
106          darkfi-dnetview = utils.lib.mkApp {
107            drv = packages.darkfi-dnetview;
108            exePath = "/bin/dnetview";
109          };
110          darkfi-ircd = utils.lib.mkApp {
111            drv = packages.darkfi-ircd;
112            exePath = "/bin/ircd";
113          };
114          darkfi-tau = utils.lib.mkApp {
115            drv = packages.darkfi-tau;
116            exePath = "/bin/tau";
117          };
118          darkfi-taud = utils.lib.mkApp {
119            drv = packages.darkfi-taud;
120            exePath = "/bin/taud";
121          };
122          darkfi-zkas = utils.lib.mkApp {
123            drv = packages.darkfi-zkas;
124            exePath = "/bin/zkas";
125          };
126          default = darkfi-drk;
127        };
128      });
129  }