|
@@ -1,55 +1,123 @@
|
|
|
|
|
+# Nix flake
|
|
|
|
|
+#
|
|
|
|
|
+# To use it, install Nix & Nix flakes (see https://nixos.wiki/wiki/Flakes)
|
|
|
|
|
+# Then use these commands to get a development shell, build and run binaries:
|
|
|
|
|
+# $ cd contrib
|
|
|
|
|
+# $ nix develop
|
|
|
|
|
+# $ nix build '.#darkfi-ircd'
|
|
|
|
|
+# $ nix run '.#darkfi-ircd'
|
|
|
|
|
+
|
|
|
{
|
|
{
|
|
|
- description = "Darkfi Dev Environment";
|
|
|
|
|
|
|
+ description = "DarkFi";
|
|
|
|
|
|
|
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-22.05";
|
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-22.05";
|
|
|
- inputs.flake-utils.url = "github:numtide/flake-utils";
|
|
|
|
|
- inputs.mozilla = { url = "github:mozilla/nixpkgs-mozilla"; flake = false; };
|
|
|
|
|
|
|
+ inputs.utils.url = "github:numtide/flake-utils";
|
|
|
|
|
+ inputs.rust-overlay.url = "github:oxalica/rust-overlay";
|
|
|
|
|
|
|
|
- outputs =
|
|
|
|
|
- { self
|
|
|
|
|
- , nixpkgs
|
|
|
|
|
- , mozilla
|
|
|
|
|
- , flake-utils
|
|
|
|
|
- , ...
|
|
|
|
|
- } @inputs:
|
|
|
|
|
- let rustOverlay = final: prev:
|
|
|
|
|
- let rustChannel = prev.rustChannelOf {
|
|
|
|
|
- channel = "1.60.0";
|
|
|
|
|
- sha256 = "sha256-otgm+7nEl94JG/B+TYhWseZsHV1voGcBsW/lOD2/68g=";
|
|
|
|
|
- };
|
|
|
|
|
- in
|
|
|
|
|
- { inherit rustChannel;
|
|
|
|
|
- rustc = rustChannel.rust;
|
|
|
|
|
- cargo = rustChannel.rust;
|
|
|
|
|
- };
|
|
|
|
|
- in flake-utils.lib.eachDefaultSystem
|
|
|
|
|
- (system:
|
|
|
|
|
- let
|
|
|
|
|
- pkgs = import nixpkgs {
|
|
|
|
|
- inherit system;
|
|
|
|
|
- overlays = [
|
|
|
|
|
- (import "${mozilla}/rust-overlay.nix")
|
|
|
|
|
- rustOverlay
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ outputs = { self, nixpkgs, utils, rust-overlay }:
|
|
|
|
|
+ utils.lib.eachDefaultSystem (system:
|
|
|
|
|
+ let
|
|
|
|
|
+ overlays = [
|
|
|
|
|
+ (import rust-overlay)
|
|
|
|
|
+ ];
|
|
|
|
|
+ pkgs = import nixpkgs rec {
|
|
|
|
|
+ inherit system overlays;
|
|
|
|
|
+ };
|
|
|
|
|
+ rust-bin = pkgs.rust-bin.stable."1.62.0".default.override {
|
|
|
|
|
+ extensions = [ "rust-src" ];
|
|
|
};
|
|
};
|
|
|
- in {
|
|
|
|
|
- devShell = pkgs.mkShell {
|
|
|
|
|
|
|
+ buildRustPackage = (pkgs.makeRustPlatform {
|
|
|
|
|
+ cargo = rust-bin;
|
|
|
|
|
+ rustc = rust-bin;
|
|
|
|
|
+ }).buildRustPackage;
|
|
|
|
|
+ myNativeBuildInputs = with pkgs; [
|
|
|
|
|
+ pkg-config
|
|
|
|
|
+ gnumake
|
|
|
|
|
+ cmake
|
|
|
|
|
+ clang
|
|
|
|
|
+ libclang
|
|
|
|
|
+ llvm
|
|
|
|
|
+ ];
|
|
|
|
|
+ myBuildInputs = with pkgs; [
|
|
|
|
|
+ expat
|
|
|
|
|
+ fontconfig
|
|
|
|
|
+ freetype
|
|
|
|
|
+ openssl
|
|
|
|
|
+ ];
|
|
|
|
|
+ myBuildRustPackage = attrs:
|
|
|
|
|
+ buildRustPackage ({
|
|
|
|
|
+ version = "0.3.0";
|
|
|
|
|
+ src = ../.;
|
|
|
|
|
+ cargoLock.lockFile = ../Cargo.lock;
|
|
|
|
|
+ nativeBuildInputs = myNativeBuildInputs;
|
|
|
|
|
+ buildInputs = myBuildInputs;
|
|
|
#RUST_BACKTRACE=1;
|
|
#RUST_BACKTRACE=1;
|
|
|
#RUST_LOG="trace";
|
|
#RUST_LOG="trace";
|
|
|
- buildInputs = with pkgs; [
|
|
|
|
|
- openssl
|
|
|
|
|
- gnumake
|
|
|
|
|
- openssl
|
|
|
|
|
- clang
|
|
|
|
|
- libclang
|
|
|
|
|
- pkg-config
|
|
|
|
|
- cmake
|
|
|
|
|
- llvm
|
|
|
|
|
- freetype
|
|
|
|
|
- fontconfig
|
|
|
|
|
- (rustChannel.rust.override { extensions = [ "rust-src" ]; })
|
|
|
|
|
- ];
|
|
|
|
|
- LIBCLANG_PATH="${pkgs.libclang.lib}/lib";
|
|
|
|
|
- };
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ } // attrs);
|
|
|
|
|
+ in rec {
|
|
|
|
|
+ packages = rec {
|
|
|
|
|
+ darkfi-drk = myBuildRustPackage rec {
|
|
|
|
|
+ pname = "darkfi-drk";
|
|
|
|
|
+ buildAndTestSubdir = "./bin/drk";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-darkfid = myBuildRustPackage rec {
|
|
|
|
|
+ pname = "darkfi-darkfid";
|
|
|
|
|
+ buildAndTestSubdir = "./bin/darkfid";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-dnetview = myBuildRustPackage rec {
|
|
|
|
|
+ pname = "darkfi-dnetview";
|
|
|
|
|
+ buildAndTestSubdir = "./bin/dnetview";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-ircd = myBuildRustPackage rec {
|
|
|
|
|
+ pname = "darkfi-ircd";
|
|
|
|
|
+ buildAndTestSubdir = "./bin/ircd";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-tau = myBuildRustPackage rec {
|
|
|
|
|
+ pname = "darkfi-tau";
|
|
|
|
|
+ buildAndTestSubdir = "./bin/tau";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-taud = myBuildRustPackage rec {
|
|
|
|
|
+ pname = "darkfi-taud";
|
|
|
|
|
+ buildAndTestSubdir = "./bin/taud";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-zkas = myBuildRustPackage rec {
|
|
|
|
|
+ pname = "darkfi-zkas";
|
|
|
|
|
+ buildAndTestSubdir = "./bin/zkas";
|
|
|
|
|
+ };
|
|
|
|
|
+ default = darkfi-drk;
|
|
|
|
|
+ };
|
|
|
|
|
+ defaultPackage = packages.default; # compat
|
|
|
|
|
+
|
|
|
|
|
+ apps = rec {
|
|
|
|
|
+ darkfi-drk = utils.lib.mkApp {
|
|
|
|
|
+ drv = packages.darkfi-drk;
|
|
|
|
|
+ exePath = "/bin/drk";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-darkfid = utils.lib.mkApp {
|
|
|
|
|
+ drv = packages.darkfi-darkfid;
|
|
|
|
|
+ exePath = "/bin/darkfid";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-dnetview = utils.lib.mkApp {
|
|
|
|
|
+ drv = packages.darkfi-dnetview;
|
|
|
|
|
+ exePath = "/bin/dnetview";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-ircd = utils.lib.mkApp {
|
|
|
|
|
+ drv = packages.darkfi-ircd;
|
|
|
|
|
+ exePath = "/bin/ircd";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-tau = utils.lib.mkApp {
|
|
|
|
|
+ drv = packages.darkfi-tau;
|
|
|
|
|
+ exePath = "/bin/tau";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-taud = utils.lib.mkApp {
|
|
|
|
|
+ drv = packages.darkfi-taud;
|
|
|
|
|
+ exePath = "/bin/taud";
|
|
|
|
|
+ };
|
|
|
|
|
+ darkfi-zkas = utils.lib.mkApp {
|
|
|
|
|
+ drv = packages.darkfi-zkas;
|
|
|
|
|
+ exePath = "/bin/zkas";
|
|
|
|
|
+ };
|
|
|
|
|
+ default = darkfi-drk;
|
|
|
|
|
+ };
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|