1
0
Fork 0
nix-scripts/sinara-systems.nix

53 lines
1.7 KiB
Nix
Raw Normal View History

{ pkgs ? import <nixpkgs> {}}:
2019-02-15 23:06:00 +08:00
let
2019-02-16 00:24:20 +08:00
sinaraSystemsSrc = <sinaraSystemsSrc>;
2019-02-16 00:24:20 +08:00
generatedNix = pkgs.runCommand "generated-nix" { buildInputs = [ pkgs.nix pkgs.git ]; }
''
mkdir $out
REV=`git --git-dir ${sinaraSystemsSrc}/.git rev-parse HEAD`
HASH=`nix-hash --type sha256 --base32 ${sinaraSystemsSrc}`
cat > $out/default.nix << EOF
{ pkgs ? import <nixpkgs> {}}:
let
2019-02-16 00:24:20 +08:00
target = "kasli";
2019-02-16 00:29:52 +08:00
variants = ["berkeley" "mitll2" "mitll" "nudt" "sysu" "tsinghua2" "tsinghua" "ubirmingham" "unsw" "ustc" "wipm"];
2019-02-16 00:24:20 +08:00
artiq-board = import <m-labs/artiq-board.nix> { inherit pkgs; };
conda-artiq-board = import <m-labs/conda-artiq-board.nix> { inherit pkgs; };
src = pkgs.fetchgit {
url = "git://github.com/m-labs/sinara-systems.git";
rev = "$REV";
sha256 = "$HASH";
leaveDotGit = true;
};
in
2019-02-16 00:24:20 +08:00
pkgs.lib.lists.foldr (variant: start:
let
json = builtins.toPath (src + "/\''${variant}.json");
2019-02-16 00:24:20 +08:00
boardBinaries = artiq-board {
inherit target variant;
buildCommand = "python -m artiq.gateware.targets.kasli_generic \''${json}";
};
in
start // {
"artiq-board-\''${target}-\''${variant}" = boardBinaries;
"conda-artiq-board-\''${target}-\''${variant}" = conda-artiq-board {
boardBinaries = boardBinaries;
inherit target variant;
};
}) {} variants
EOF
'';
jobs = builtins.mapAttrs (key: value: pkgs.lib.hydraJob value) (import generatedNix { inherit pkgs; });
in
2019-02-16 00:24:20 +08:00
jobs // {
channel = pkgs.releaseTools.channel {
name = "sinara-systems";
src = generatedNix;
constituents = builtins.attrValues jobs;
};
}