default.nix 16.5 KB
Newer Older
Valentin Reis's avatar
Valentin Reis committed
1
{ # host package set (unused except for fetching nixpkgs)
Valentin Reis's avatar
Valentin Reis committed
2
hostPkgs ? import <nixpkgs> { }
Valentin Reis's avatar
Valentin Reis committed
3

Valentin Reis's avatar
Valentin Reis committed
4
  # versioned nixpkgs
Valentin Reis's avatar
Valentin Reis committed
5 6
, pkgs ? import (hostPkgs.nix-update-source.fetch ./pkgs.json).src { }
, bleeding ? import (hostPkgs.nix-update-source.fetch ./bleeding.json).src { }
Valentin Reis's avatar
Valentin Reis committed
7

Valentin Reis's avatar
Valentin Reis committed
8
, # fetcher alias for the remaining arguments
Valentin Reis's avatar
Valentin Reis committed
9
fetched ? s: (pkgs.nix-update-source.fetch s).src
Valentin Reis's avatar
Valentin Reis committed
10

Valentin Reis's avatar
Valentin Reis committed
11 12 13 14 15
, # source overrides: core nrm components
aml-src ? fetched aml/pin.json, numabench-src ? fetched numabench/pin.json
, excit-src ? fetched excit/pin.json, libnrm-src ? fetched libnrm/pin.json
, nrm-src ? fetched nrm/pin.json, nrm-schema-src ? fetched nrm-schema/pin.json
, containers-src ? fetched containers/pin.json
Valentin Reis's avatar
Valentin Reis committed
16

Valentin Reis's avatar
Valentin Reis committed
17 18 19 20
, # source overrides: applications
amg-src ? fetched amg/pin.json, qmcpack-src ? fetched qmcpack/pin.json
, openmc-src ? fetched openmc/pin.json, stream-src ? fetched stream/pin.json
, lammps-src ? fetched lammps/pin.json, candle-src ? fetched candle/pin.json
21

Valentin Reis's avatar
Valentin Reis committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
  #source overrides: tooling
, repoquality-src ?
  builtins.fetchGit { inherit (fetched repoquality/pin.json) url rev; }
, dhrun-src ? builtins.fetchGit {
  inherit (pkgs.stdenv.lib.importJSON dhrun/pin.json) url rev;
}, powerplots-src ?
  builtins.fetchGit { inherit (fetched powerplots/pin.json) url rev; }
, argonix-src ?
  builtins.fetchGit { inherit (fetched argonix/pin.json) url rev; }
, experiments-src ? fetched experiments/pin.json

, # used for hardware experiments.
sudoPath ? null

, # whether to graft apps on libnrm.
graftLibnrm ? false

, # name for the generic test builder
genericTestName ? "run" }:
Valentin Reis's avatar
.  
Valentin Reis committed
41
let
Valentin Reis's avatar
Valentin Reis committed
42
  panhandle-src = fetched panhandle/pin.json;
Valentin Reis's avatar
Valentin Reis committed
43
  callPackage = pkgs.lib.callPackageWith (pkgs // argopkgs);
44

Valentin Reis's avatar
Valentin Reis committed
45 46
  addBI = drv: bi:
    drv.overrideAttrs (old: { buildInputs = old.buildInputs ++ [ bi ]; });
Valentin Reis's avatar
Valentin Reis committed
47

Valentin Reis's avatar
Valentin Reis committed
48
  argopkgs = rec {
Valentin Reis's avatar
Valentin Reis committed
49
    singularity = bleeding.singularity;
Valentin Reis's avatar
Valentin Reis committed
50

51
    # library of nix expressions
Valentin Reis's avatar
Valentin Reis committed
52
    argolib = import ../lib/utils.nix;
Valentin Reis's avatar
Valentin Reis committed
53

54
    # Argo components (source overridabel via argument)
Valentin Reis's avatar
Valentin Reis committed
55 56 57
    aml = callPackage ./aml {
      src = aml-src;
      hwloc = hwloc2;
Valentin Reis's avatar
Valentin Reis committed
58 59 60
      inherit excit;
      inherit numabench;
    };
Valentin Reis's avatar
Valentin Reis committed
61 62 63 64 65 66 67
    numabench = callPackage ./numabench {
      src = numabench-src;
      hwloc = hwloc2;
    };
    excit = callPackage ./excit { src = excit-src; };
    nrm = (callPackage ./nrm { src = nrm-src; }).overrideAttrs (o: {
      installPhase = o.installPhase + ''
Valentin Reis's avatar
Valentin Reis committed
68
        mkdir -p $out/share
Valentin Reis's avatar
Valentin Reis committed
69
        cp -r nrm/schemas $out/lib/python2.7/site-packages/nrm/
Valentin Reis's avatar
Valentin Reis committed
70
        cp -r examples $out/share
Valentin Reis's avatar
Valentin Reis committed
71 72
      '';
    });
Valentin Reis's avatar
Valentin Reis committed
73

Valentin Reis's avatar
Valentin Reis committed
74
    nrm-dist = pkgs.stdenv.mkDerivation {
Valentin Reis's avatar
Valentin Reis committed
75 76
      name = "nrm-dist";
      src = nrm-src;
Valentin Reis's avatar
Valentin Reis committed
77
      buildInputs = [
Valentin Reis's avatar
Valentin Reis committed
78 79 80
        pkgs.curl
        pkgs.bash
        pkgs.coreutils
Valentin Reis's avatar
Valentin Reis committed
81 82
        (pkgs.python.withPackages
          (ps: [ ps.sphinx_rtd_theme ps.sphinx ps.breathe ps.recommonmark ]))
Valentin Reis's avatar
Valentin Reis committed
83 84 85 86 87 88 89 90
      ];
      buildPhase = ''
        python ./setup.py build_sphinx --build-dir doc
        python ./setup.py sdist
      '';
      installPhase = ''
        mkdir -p $out
        cp dist/* $out/
Valentin Reis's avatar
pinning  
Valentin Reis committed
91
        md5sum $out/* | cut -d' ' -f1> $out/CHECKSUM
Valentin Reis's avatar
Valentin Reis committed
92 93 94
      '';
    };

Valentin Reis's avatar
Valentin Reis committed
95 96 97 98
    containers = callPackage ./containers { src = containers-src; };
    libnrm = callPackage ./libnrm { src = libnrm-src; };
    libnrm-pmpi = callPackage ./libnrm/mpi.nix { src = libnrm-src; };
    libnrm-pinned = callPackage ./libnrm { src = fetched libnrm/pin.json; };
99

Valentin Reis's avatar
Valentin Reis committed
100 101 102
    mkl = callPackage ./mkl {
      compiler_path = "/opt/intel/compilers_and_libraries/linux";
    };
103

Valentin Reis's avatar
Valentin Reis committed
104 105 106
    icc = callPackage ./icc {
      compiler_path = "/opt/intel/compilers_and_libraries/linux";
    };
Valentin Reis's avatar
Valentin Reis committed
107

Valentin Reis's avatar
Valentin Reis committed
108
    numabench-check = numabench.overrideAttrs (old: {
Valentin Reis's avatar
Valentin Reis committed
109
      buildPhase = "make check";
Valentin Reis's avatar
Valentin Reis committed
110
      installPhase = ''
111 112 113
        mkdir -p $out/tests
        cp ./tests/*.log $out/tests
        cp ./tests/*.trs $out/tests
Valentin Reis's avatar
Valentin Reis committed
114
        cp -r ./tests/tmp $out/tests
Valentin Reis's avatar
Valentin Reis committed
115
      '';
Valentin Reis's avatar
Valentin Reis committed
116
    });
Valentin Reis's avatar
Valentin Reis committed
117
    excit-check = excit.overrideAttrs (old: { buildPhase = "make check"; });
Valentin Reis's avatar
Valentin Reis committed
118

Valentin Reis's avatar
Valentin Reis committed
119 120
    # applications with replaceDependency for libnrm.
    repLibnrm = path: src: extra:
Valentin Reis's avatar
Valentin Reis committed
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
      let
        drv = callPackage path ({
          nrmSupport = true;
          src = src;
          libnrm = libnrm-pinned;
        } // extra);
        rebuilt = drv.override { libnrm = libnrm; };
        grafted = pkgs.replaceDependency {
          drv = drv;
          oldDependency = libnrm-pinned;
          newDependency = libnrm;
        };
      in if graftLibnrm then grafted else rebuilt;
    amg = repLibnrm ./amg amg-src { };
    qmcpack = repLibnrm ./qmcpack qmcpack-src { };
    openmc = repLibnrm ./openmc openmc-src { };
    lammps = repLibnrm ./lammps lammps-src { };
    stream = repLibnrm ./stream stream-src { iterationCount = "2000"; };
Valentin Reis's avatar
Valentin Reis committed
139

Valentin Reis's avatar
Valentin Reis committed
140
    callCandlePackage = candlePkgs.lib.callPackageWith (candlePkgs);
Valentin Reis's avatar
Valentin Reis committed
141 142 143 144
    candleOverlay = self: super: rec {
      clblas = callCandlePackage ./clblas {
        inherit (pkgs.darwin.apple_sdk.frameworks)
          Accelerate CoreGraphics CoreVideo OpenCL;
Valentin Reis's avatar
Valentin Reis committed
145 146
      };
    };
Valentin Reis's avatar
Valentin Reis committed
147 148 149 150
    candlePkgs = import pkgs.path { overlays = [ candleOverlay ]; };
    candle = callCandlePackage ./candle {
      src = candle-src;
      nrm = nrm;
Valentin Reis's avatar
Valentin Reis committed
151 152
    };

153
    # data (static, non source overridable via arguments)
Valentin Reis's avatar
Valentin Reis committed
154
    openmc-data = fetched openmc/data.json;
Valentin Reis's avatar
Valentin Reis committed
155

156
    # tools
Valentin Reis's avatar
Valentin Reis committed
157 158
    checkpatch =
      callPackage ./checkpatch/default.nix { src = ./checkpatch/src; };
159 160 161
    zymake = callPackage ./zymake {
      inherit (pkgs.ocamlPackages) findlib ocamlbuild topkg batteries;
    };
Valentin Reis's avatar
Valentin Reis committed
162
    haskellPackages = pkgs.haskellPackages.override {
Valentin Reis's avatar
Valentin Reis committed
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
      overrides = self: super:
        with pkgs.haskell.lib; rec {
          panpipe = doJailbreak super.panpipe;
          #panhandle      = doJailbreak super.panhandle;
          spdx = doJailbreak super.spdx;
          monad-mock = doJailbreak super.monad-mock;
          generic-pretty = doJailbreak super.generic-pretty;
          jsonschema-gen = doJailbreak super.jsonschema-gen;
          aeson-t = doJailbreak super.aeson-t;

          #minor cabal and version fix
          panhandle = (self.callCabal2nix "panhandle"
            (builtins.fetchGit { inherit (panhandle-src) url rev; })) { };
          inline-r = dontCheck super.inline-r;
          argonix = (self.callCabal2nix "argonix" argonix-src) { };
          repoquality = (self.callCabal2nix "repoquality" repoquality-src) { };
          powerplots = (self.callCabal2nix "powerplots" powerplots-src) { };

          generic-aeson = doJailbreak super.generic-aeson;
          zmcat = self.callPackage ./zmcat { };
Valentin Reis's avatar
Valentin Reis committed
183

Valentin Reis's avatar
Valentin Reis committed
184
        };
Valentin Reis's avatar
Valentin Reis committed
185
    };
Valentin Reis's avatar
Valentin Reis committed
186

Valentin Reis's avatar
Valentin Reis committed
187
    bleedingHaskellPackages = bleeding.haskellPackages.override {
Valentin Reis's avatar
Valentin Reis committed
188 189 190 191 192 193 194 195 196
      overrides = self: super:
        with bleeding.haskell.lib; rec {
          panpipe = doJailbreak super.panpipe;
          panhandle = (self.callCabal2nix "panhandle"
            (builtins.fetchGit { inherit (panhandle-src) url rev; })) { };
          multistate = doJailbreak super.multistate;
          #hspec       = doJailbreak super.hspec;
          dhrun = (self.callCabal2nix "dhrun" dhrun-src) { };
        };
Valentin Reis's avatar
Valentin Reis committed
197 198
    };

199
    # re-export from hpkgs and add non-haskell build rule specialization
Valentin Reis's avatar
Valentin Reis committed
200
    inherit (haskellPackages) repoquality;
Valentin Reis's avatar
Valentin Reis committed
201
    #inherit (bleedingHaskellPackages) dhall dhall-lsp-server dhall-json;
Valentin Reis's avatar
Valentin Reis committed
202

Valentin Reis's avatar
Valentin Reis committed
203 204 205 206 207 208
    dhrun = bleedingHaskellPackages.dhrun.overrideAttrs (old: {
      installPhase = old.installPhase + ''
        mkdir -p $out/share/
        cp -r resources $out/share/
      '';
    });
Valentin Reis's avatar
Valentin Reis committed
209

Valentin Reis's avatar
Valentin Reis committed
210 211 212 213 214 215
    argonix = haskellPackages.argonix.overrideAttrs (old: {
      installPhase = old.installPhase + ''
        mkdir -p $out/share/
        $out/bin/argonix --bash-completion-script argonix > $out/share/argonix.sh
      '';
    });
216

Valentin Reis's avatar
Valentin Reis committed
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
    powerplots = let
      pkl = with pkgs.rPackages; [
        docopt
        pracma
        tidyr
        readr
        magrittr
        formatR
        purrr
        wrapr
        knitr
        cowplot
        plotly
        lubridate
        dplyr
        ggplot2
        fpp2
        prospectr
        gridExtra
        zoo
        xtable
        ggthemes
        data_table
Valentin Reis's avatar
Valentin Reis committed
240
      ];
Valentin Reis's avatar
Valentin Reis committed
241 242 243
      myR = (pkgs.rWrapper.override { packages = [ pkl ]; });
    in haskellPackages.powerplots.overrideDerivation (drv: rec {
      buildInputs = (drv.buildInputs or [ ]) ++ [ pkgs.makeWrapper myR ];
Valentin Reis's avatar
Valentin Reis committed
244 245 246 247 248 249 250 251

      installPhase = drv.installPhase + ''
        wrapProgram "$out/bin/powerplots" \
          --set R_LIBS_SITE `Rscript -e "Sys.getenv(\"R_LIBS_SITE\")"`
      '';

    });

252
    # fix for nrm
Valentin Reis's avatar
pypack  
Valentin Reis committed
253
    pyzmq = pkgs.pythonPackages.pyzmq.override { zeromq3 = pkgs.zeromq; };
Valentin Reis's avatar
Valentin Reis committed
254

Valentin Reis's avatar
Valentin Reis committed
255 256
    hwloc2 = pkgs.hwloc.overrideAttrs (old: {
      name = "hwloc-2";
Valentin Reis's avatar
Valentin Reis committed
257
      src = pkgs.fetchurl {
Valentin Reis's avatar
Valentin Reis committed
258 259
        url =
          "https://download.open-mpi.org/release/hwloc/v2.0/hwloc-2.0.3.tar.gz";
Valentin Reis's avatar
Valentin Reis committed
260 261 262 263
        sha256 = "0707ml34ylrr8zwwhddp64q6q57248m9646f27jadcx5m93g5pk4";
      };
    });

264
    # ci/experimental environments
Valentin Reis's avatar
Valentin Reis committed
265 266
    test = pkgs.stdenv.mkDerivation rec {
      name = "testEnv";
267

Valentin Reis's avatar
Valentin Reis committed
268
      buildInputs = [
Valentin Reis's avatar
Valentin Reis committed
269
        # tooling may run mpiexec or hwloc:
Valentin Reis's avatar
Valentin Reis committed
270
        pkgs.mpich2
Valentin Reis's avatar
Valentin Reis committed
271
        hwloc2
Valentin Reis's avatar
Valentin Reis committed
272 273 274 275 276
        # these are needed for some reason:
        pkgs.coreutils
        pkgs.utillinux
        pkgs.git
        # argo tools
Valentin Reis's avatar
Valentin Reis committed
277
        dhrun
Valentin Reis's avatar
Valentin Reis committed
278 279 280
        # argo components
        containers
        nrm
Valentin Reis's avatar
Valentin Reis committed
281
        libnrm
Valentin Reis's avatar
Valentin Reis committed
282
      ];
283

Valentin Reis's avatar
Valentin Reis committed
284
      #required to be able to build the drv.
285
      installPhase = "mkdir $out";
Valentin Reis's avatar
Valentin Reis committed
286
      unpackPhase = "true";
Valentin Reis's avatar
Valentin Reis committed
287

288
      __noChroot = true;
Valentin Reis's avatar
Valentin Reis committed
289
      shellHook = ''
290 291 292 293 294 295
        echo ""
        echo "ENTERING ENVIRONMENT: Sources of impurity for this build are: /tmp/ /etc/argo/ /var/run/ /var/lock/".
        echo "ENTERING ENVIRONMENT: Moreover, sandboxing is disabled, in particular because of:"
        echo "ENTERING ENVIRONMENT: /tmp/nrm-* sockets, /etc/argo, /var/run/, /var/lock/ which all need read access. "
        echo "ENTERING ENVIRONMENT: until these components are patched to allow for alternative paths, no sandbox use is possible."
        echo ""
296
      '';
297
      #argotk uses this environment variable.
Valentin Reis's avatar
Valentin Reis committed
298
      #OPENMC_PWD = "${argotk}/share/openmc";
Valentin Reis's avatar
Valentin Reis committed
299
    };
Valentin Reis's avatar
Valentin Reis committed
300 301 302 303 304 305

    analysis = pkgs.stdenv.mkDerivation rec {
      name = "analysis";
      src = experiments-src;

      #required to be able to build the drv.
Valentin Reis's avatar
Valentin Reis committed
306 307 308
      installPhase = ''
        mkdir -p $out
      '';
Valentin Reis's avatar
Valentin Reis committed
309 310 311
      unpackPhase = "true";

      buildInputs = [
312
        pkgs.pandoc
Valentin Reis's avatar
Valentin Reis committed
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
        (pkgs.rWrapper.override {
          packages = with pkgs.rPackages; [
            pkgs.rlwrap
            pkgs.pandoc
            docopt
            pracma
            tidyr
            readr
            magrittr
            formatR
            purrr
            wrapr
            knitr
            cowplot
            plotly
            lubridate
            dplyr
            ggplot2
            fpp2
            prospectr
            gridExtra
            zoo
            xtable
            ggthemes
            data_table
          ];
        })
Valentin Reis's avatar
Valentin Reis committed
340 341 342
      ];
    };

Valentin Reis's avatar
Valentin Reis committed
343
    hanalysis = analysis.overrideAttrs (old: {
344
      buildInputs = old.buildInputs ++ [
Valentin Reis's avatar
Valentin Reis committed
345
        (haskellPackages.ghcWithPackages (p: [
Valentin Reis's avatar
Valentin Reis committed
346 347
          p.protolude
          p.optparse-applicative
Valentin Reis's avatar
Valentin Reis committed
348
          (p.inline-r.overrideAttrs (old: { doCheck = false; }))
Valentin Reis's avatar
Valentin Reis committed
349
        ]))
350 351 352
      ];
    });

Valentin Reis's avatar
Valentin Reis committed
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397
    f = { mkDerivation, base, protolude, data-default, optparse-applicative
      , typed-process, inline-r, R, stdenv }:
      mkDerivation {
        pname = "hsr";
        version = "1.0.0";
        src = "";
        isLibrary = true;
        isExecutable = false;
        libraryHaskellDepends = [
          base
          protolude
          inline-r
          typed-process
          optparse-applicative
          data-default
        ];
        librarySystemDepends = [
          pkgs.pandoc
          R
          pkgs.rPackages.docopt
          pkgs.rPackages.pracma
          pkgs.rPackages.tidyr
          pkgs.rPackages.readr
          pkgs.rPackages.magrittr
          pkgs.rPackages.formatR
          pkgs.rPackages.purrr
          pkgs.rPackages.wrapr
          pkgs.rPackages.knitr
          pkgs.rPackages.cowplot
          pkgs.rPackages.plotly
          pkgs.rPackages.lubridate
          pkgs.rPackages.dplyr
          pkgs.rPackages.ggplot2
          pkgs.rPackages.fpp2
          pkgs.rPackages.prospectr
          pkgs.rPackages.gridExtra
          pkgs.rPackages.zoo
          pkgs.rPackages.xtable
          pkgs.rPackages.ggthemes
          pkgs.rPackages.data_table
        ];
        license = stdenv.lib.licenses.bsd3;
      };
    hanal = argolib.getHackEnv (pkgs // argopkgs) haskellPackages
      (haskellPackages.callPackage f { });
Valentin Reis's avatar
Valentin Reis committed
398

Valentin Reis's avatar
Valentin Reis committed
399
    report = analysis.overrideAttrs (old: {
Valentin Reis's avatar
Valentin Reis committed
400
      buildPhase = ''
401 402
        echo "analysis/zymakefolder.R ${powerexpe}"
        analysis/zymakefolder.R ${powerexpe}
Valentin Reis's avatar
Valentin Reis committed
403 404 405 406 407 408
      '';
      installPhase = ''
        mkdir -p $out
        cp -r index* $out
      '';
    });
409

Valentin Reis's avatar
Valentin Reis committed
410
    dhrunTestConfigLayer = pkgs.stdenv.mkDerivation rec {
Valentin Reis's avatar
Valentin Reis committed
411
      name = "dhrunSpecs";
Valentin Reis's avatar
Valentin Reis committed
412
      src = ../dhrun;
Valentin Reis's avatar
Valentin Reis committed
413 414 415
      installPhase = ''
        mkdir -p $out
        cp -r $src/* $out
416 417 418 419 420 421
        substituteInPlace $out/test_assets/simple-H2O.xml --replace \
          H2O.HF.wfs.xml $out/test_assets/H2O.HF.wfs.xml
        substituteInPlace $out/test_assets/simple-H2O.xml --replace \
          O.BFD.xml $out/test_assets/O.BFD.xml
        substituteInPlace $out/test_assets/simple-H2O.xml --replace \
          H.BFD.xml $out/test_assets/H.BFD.xml
Valentin Reis's avatar
Valentin Reis committed
422
      '';
Valentin Reis's avatar
Valentin Reis committed
423 424 425
      unpackPhase = "true";
    };

Valentin Reis's avatar
Valentin Reis committed
426 427 428 429 430 431 432 433 434 435 436
    doDhrun = dhallcall:
      test.overrideAttrs (old: {
        buildPhase = ''
          dhrun run <<< 'let all = ${dhrunTestConfigLayer}/all-tests.dh
                        "${dhrunTestConfigLayer}/" "${nrm}/share/examples/" True in all.${dhallcall}'
        '';
        installPhase = ''
          mkdir -p $out
          cp _output/* $out/
        '';
      });
Valentin Reis's avatar
Valentin Reis committed
437

Valentin Reis's avatar
Valentin Reis committed
438 439 440 441
    testGeneric = doDhrun genericTestName;
    testBrokenMessage = (doDhrun "run-singularity").overrideAttrs
      (o: { buildInputs = o.buildInputs ++ [ haskellPackages.zmcat ]; });
    testSingularity = (doDhrun "run-singularity").overrideAttrs (o: {
442
      buildPhase = "PATH=$PATH:/tmp/argonix/ " + o.buildPhase;
Valentin Reis's avatar
Valentin Reis committed
443 444
      __noChroot =
        true; # the test needs OS singularity installation so we disable sanboxing here.
Valentin Reis's avatar
Valentin Reis committed
445
    });
Valentin Reis's avatar
Valentin Reis committed
446

Valentin Reis's avatar
Valentin Reis committed
447 448 449 450 451 452
    testSTREAM = addBI (doDhrun "stream") stream;
    testAMG = addBI (doDhrun "amg") amg;
    testOpenMC = (addBI (doDhrun "openmc") openmc).overrideAttrs
      (old: { OPENMC_CROSS_SECTIONS = "${openmc-data}/cross_sections.xml"; });
    testLAMMPS = addBI (doDhrun "lammps") lammps;
    testQMCPack = addBI (doDhrun "qmcpack") qmcpack;
Valentin Reis's avatar
Valentin Reis committed
453

Valentin Reis's avatar
Valentin Reis committed
454 455 456
    testAll = (doDhrun "hello").overrideAttrs (old: {
      buildInputs = old.buildInputs
        ++ [ lammps qmcpack openmc stream amg openmc-data ];
Valentin Reis's avatar
Valentin Reis committed
457
      OPENMC_CROSS_SECTIONS = "${openmc-data}/cross_sections.xml";
Valentin Reis's avatar
Valentin Reis committed
458
    });
Valentin Reis's avatar
Valentin Reis committed
459

Valentin Reis's avatar
Valentin Reis committed
460
    powerexpe = testAll.overrideAttrs (old: {
Valentin Reis's avatar
Valentin Reis committed
461 462 463 464 465 466 467 468 469 470 471 472 473
      name = "power-experiments";
      buildInputs = old.buildInputs ++ [
        #debug tools
        pkgs.which
        #experiment tools
        zymake
      ];
      buildPhase = "zymake ${experiments-src}/experiments/zymakefile";
      installPhase = ''
        mkdir -p $out
        cp -r o/* $out
      '';
    });
474 475

    bld = bleeding;
Valentin Reis's avatar
Valentin Reis committed
476

Valentin Reis's avatar
Valentin Reis committed
477
    deployment = pkgs.mkShell rec { buildInputs = [ pkgs.nixops pkgs.nix ]; };
Valentin Reis's avatar
Valentin Reis committed
478

Valentin Reis's avatar
Valentin Reis committed
479
    dhallVersion = "1.23.0";
Valentin Reis's avatar
Valentin Reis committed
480 481 482 483 484 485 486 487
    dhall = pkgs.stdenv.mkDerivation rec {
      name = "dhall-${version}";
      version = dhallVersion;
      src = pkgs.fetchurl {
        url =
          "https://github.com/dhall-lang/dhall-haskell/releases/download/${dhallVersion}/dhall-${version}-x86_64-linux.tar.bz2";
        sha256 = "1fy41fy0n2yc7f2dr3bx44977380rh8dx25zjgvrp4yygrf3nlgp";
      };
Valentin Reis's avatar
Valentin Reis committed
488

Valentin Reis's avatar
Valentin Reis committed
489 490 491 492 493 494 495 496 497 498 499 500
      installPhase = ''
        mkdir -p $out/bin
        cp dhall $out/bin/
      '';
    };
    dhall-lsp-server = pkgs.stdenv.mkDerivation rec {
      name = "dhall-lsp-server-${version}";
      version = "0.1.0.1";
      src = pkgs.fetchurl {
        url =
          "https://github.com/dhall-lang/dhall-haskell/releases/download/${dhallVersion}/dhall-lsp-server-${version}-x86_64-linux.tar.bz2";
        sha256 = "1mckdw03kqssspbfkpa413wmfnv68mx99im4n2s10w4gw2if3983";
Valentin Reis's avatar
Valentin Reis committed
501 502
      };

Valentin Reis's avatar
Valentin Reis committed
503 504 505 506 507
      installPhase = ''
        mkdir -p $out/bin
        cp dhall-lsp-server  $out/bin/
      '';
    };
Valentin Reis's avatar
Valentin Reis committed
508

509
    #legacy shell target (used by some aml branches):
510
    aml-dist = ci.aml-doc;
511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541

    ci = let
      ciShell = x:
        (pkgs.mkShell x).overrideAttrs (o: {
          installPhase = "touch $out";
          phases = [ "installPhase" ];
        });
    in {
      aml-format = ciShell {
        name = "aml-format";
        buildInputs = [
          (pkgs.clang-tools.override
            (o: { llvmPackages = pkgs.llvmPackages_7; }))
        ];
      };
      aml-doc = ciShell {
        name = "aml-doc";
        inputsFrom = [ aml ];
        buildInputs = [
          pkgs.doxygen
          pkgs.curl
          pkgs.bash
          pkgs.graphviz
          pkgs.coreutils
          (pkgs.python.withPackages
            (ps: [ ps.sphinx_rtd_theme ps.sphinx ps.breathe ps.recommonmark ]))
        ];
      };

    };

542
  };
Valentin Reis's avatar
Valentin Reis committed
543

Valentin Reis's avatar
Valentin Reis committed
544
  # re-exporting a full nixpkgs-like package set
545
in pkgs // argopkgs