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 }