66 lines
1.7 KiB
Nix
66 lines
1.7 KiB
Nix
|
{ pkgs
|
||
|
, artiqVersion
|
||
|
, sinaraSystemsSrc
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
jsons =
|
||
|
map (jsonFile: builtins.fromJSON (
|
||
|
builtins.readFile (sinaraSystemsSrc + "/${jsonFile}")
|
||
|
)) (
|
||
|
builtins.attrNames (
|
||
|
pkgs.lib.filterAttrs (name: type:
|
||
|
type != "directory" &&
|
||
|
builtins.match ".+\\.json" name != null
|
||
|
) (builtins.readDir sinaraSystemsSrc)
|
||
|
)
|
||
|
);
|
||
|
kasli = builtins.listToAttrs (
|
||
|
builtins.map ({ variant, base, ... }: {
|
||
|
name = "artiq-board-kasli-${variant}";
|
||
|
value = {
|
||
|
target = "kasli";
|
||
|
inherit variant;
|
||
|
src = sinaraSystemsSrc + "/${variant}.json";
|
||
|
buildCommand = "python -m artiq.gateware.targets.kasli_generic $src";
|
||
|
standalone = base == "standalone";
|
||
|
};
|
||
|
}) (
|
||
|
builtins.filter (json:
|
||
|
pkgs.lib.strings.versionAtLeast artiqVersion (
|
||
|
if json ? min_artiq_version
|
||
|
then json.min_artiq_version
|
||
|
else "0"
|
||
|
)
|
||
|
) jsons
|
||
|
)
|
||
|
);
|
||
|
in
|
||
|
kasli // {
|
||
|
artiq-board-sayma-rtm = {
|
||
|
target = "sayma";
|
||
|
variant = "rtm";
|
||
|
buildCommand = "python -m artiq.gateware.targets.sayma_rtm";
|
||
|
};
|
||
|
artiq-board-sayma-satellite = {
|
||
|
target = "sayma";
|
||
|
variant = "satellite";
|
||
|
buildCommand = "python -m artiq.gateware.targets.sayma_amc";
|
||
|
};
|
||
|
artiq-board-metlino-master = {
|
||
|
target = "metlino";
|
||
|
variant = "master";
|
||
|
buildCommand = "python -m artiq.gateware.targets.metlino";
|
||
|
};
|
||
|
artiq-board-kc705-nist_qc2 = {
|
||
|
target = "kc705";
|
||
|
variant = "nist_qc2";
|
||
|
};
|
||
|
} // (pkgs.lib.optionalAttrs (pkgs.lib.strings.versionAtLeast artiqVersion "6.0") {
|
||
|
artiq-board-sayma-satellite-st = {
|
||
|
target = "sayma";
|
||
|
variant = "satellite";
|
||
|
buildCommand = "python -m artiq.gateware.targets.sayma_amc --jdcg-type syncdds";
|
||
|
};
|
||
|
})
|