bscpkgs/garlic/index.nix
2021-04-06 11:14:30 +02:00

138 lines
3.5 KiB
Nix

{
super
, self
, bsc
, callPackage
}:
{
develop = let
commonPackages = with self; [
coreutils htop procps-ng vim which strace
tmux gdb kakoune universal-ctags bashInteractive
glibcLocales ncurses git screen curl boost
# Add more nixpkgs packages here...
];
bscPackages = with bsc; [
slurm clangOmpss2 icc mcxx perf tampi impi vtk paraver
# Add more bsc packages here...
];
packages = commonPackages ++ bscPackages;
in
bsc.garlic.stages.exec rec {
nextStage = bsc.garlic.stages.isolate {
nextStage = bsc.garlic.unsafeDevelop.override {
extraInputs = packages;
};
nixPrefix = bsc.garlic.targetMachine.config.nixPrefix;
extraMounts = [ "/tmp:$TMPDIR" ];
};
nixPrefix = bsc.garlic.targetMachine.config.nixPrefix;
# This hack uploads all dependencies to MN4
pre = let
nixPrefix = bsc.garlic.targetMachine.config.nixPrefix;
stageProgram = bsc.garlicTools.stageProgram;
in
''
# Hack to upload this to MN4: @upload-to-mn@
# Create a link to the develop script
ln -fs ${nixPrefix}${stageProgram nextStage} .nix-develop
'';
post = "\n";
};
unsafeDevelop = callPackage ./develop/default.nix { };
# Configuration for the machines
machines = callPackage ./machines.nix { };
report = callPackage ./report.nix {
fig = bsc.garlic.fig;
};
sedReport = callPackage ./sedReport.nix {
fig = bsc.garlic.fig;
};
bundleReport = callPackage ./bundleReport.nix {
fig = bsc.garlic.fig;
};
reportTar = callPackage ./reportTar.nix {
fig = bsc.garlic.fig;
};
# Use the configuration for the following target machine
targetMachine = bsc.garlic.machines.mn4;
# Load some helper functions to generate app variants
stdexp = callPackage ./stdexp.nix {
inherit (bsc.garlic) targetMachine stages pp;
};
# Execution stages
stages = {
sbatch = callPackage ./stages/sbatch.nix { };
srun = callPackage ./stages/srun.nix { };
control = callPackage ./stages/control.nix { };
exec = callPackage ./stages/exec.nix { };
script = callPackage ./stages/script.nix { };
extrae = callPackage ./stages/extrae.nix { };
valgrind = callPackage ./stages/valgrind.nix { };
perf = callPackage ./stages/perf.nix { };
isolate = callPackage ./stages/isolate { };
runexp = callPackage ./stages/runexp { };
trebuchet = callPackage ./stages/trebuchet.nix { };
strace = callPackage ./stages/strace.nix { };
unit = callPackage ./stages/unit.nix { };
experiment = callPackage ./stages/experiment.nix { };
};
# Tests (move to bsc ?)
mpptest = callPackage ./mpptest { };
ppong = callPackage ./ppong {
mpi = bsc.mpi;
};
hist = callPackage ./pp/hist { };
tool = callPackage ./sh/default.nix {
sshHost = "mn1";
};
# Post processing
pp = {
store = callPackage ./pp/store.nix { };
rPlot = callPackage ./pp/rplot.nix { };
mergeDatasets = callPackage ./pp/merge.nix { };
};
garlicd = callPackage ./garlicd/default.nix {
garlicTool = bsc.garlic.tool;
};
# Apps for Garlic
apps = callPackage ./apps/index.nix {
inherit self super bsc;
};
# Experiments
exp = callPackage ./exp/index.nix {
inherit self super bsc;
};
# Dataset generators from resultTree
ds = callPackage ./ds/index.nix {
inherit self super bsc;
};
# Figures generated from the datasets
fig = callPackage ./fig/index.nix {
inherit self super bsc;
};
}