paper-lowrate-iot/src/ns3/nix/default.nix
2019-05-22 11:24:17 +02:00

58 lines
1.7 KiB
Nix

{
pkgs ? (import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/19.03.tar.gz") {})
}:
with pkgs; rec {
ns3 = stdenv.mkDerivation rec {
##### Configure NIX #####
name="ns3";
sourceRoot="ns-allinone-3.29/ns-3.29/"; # Since we have 2 source tarball (ns-3 & ECOFEN) nix need to know which one to use
##### Fetch ns-3 And ECOFEN #####
src = [
(fetchurl {
url = https://www.nsnam.org/releases/ns-allinone-3.29.tar.bz2;
sha256 = "0m9dpmby116qk1m4x645i1p92syn30yzn9dgxxji5i25g30abpsd";
})
(fetchurl {
url = http://people.irisa.fr/Anne-Cecile.Orgerie/ECOFEN/ecofen-v2.tar.bz2;
sha256 = "1dnmm20ihas6hwwb8qbx8sr3h66nrg8h55x6f2aqpf3xima29dyh";
})
];
##### Configure Dependencies #####
buildInputs= [ python gsl ];
##### Configure Phases #####
postUnpack=''mv ecofen-module-v2 ${sourceRoot}/contrib/ecofen'';
configurePhase=''
export CXXFLAGS="-Wall -g -O0" # Don't treat warning as error when compiling ns-3
python2 waf configure
'';
buildPhase=''python2 waf'';
installPhase=''
mkdir -p $out/include
cp -r ./build/lib $out/
cp -r ./build/ns3 $out/include
'';
};
simulator= stdenv.mkDerivation rec {
##### Configure NIX #####
name="simulator";
src=./simulator;
##### Export ns3 location #####
NS3_PATH=ns3;
##### Configure Phases #####
buildPhase=''make'';
installPhase=''
mkdir -p $out/bin
install -D -t $out/bin simulator
'';
};
}