artiq/windows/default.nix

74 lines
2.2 KiB
Nix

{ sipyco, nac3, artiq-comtools, artiq }:
let
pkgs = import nac3.inputs.nixpkgs { system = "x86_64-linux"; };
makeMsys2 = { name, version, src }: pkgs.stdenvNoCC.mkDerivation {
pname = "${name}-msys2-pkg";
inherit version;
nativeBuildInputs = [
pkgs.pacman pkgs.fakeroot pkgs.libarchive pkgs.zstd pkgs.file
nac3.packages.x86_64-w64-mingw32.wine-msys2-build
];
inherit src;
phases = [ "buildPhase" "installPhase" ];
buildPhase =
''
export DRV_VERSION=${version}
ln -s ${./PKGBUILD.${name}} PKGBUILD
ln -s ${./PKGBUILD.common} PKGBUILD.common
ln -s $src source
tar cfh source.tar source
rm source
makepkg --config ${./makepkg.conf} --nodeps
'';
installPhase =
''
mkdir $out $out/nix-support
cp *.pkg.tar.zst $out
echo file msys2 $out/*.pkg.tar.zst >> $out/nix-support/hydra-build-products
'';
};
in rec {
qasync-pkg = makeMsys2 {
name = "qasync";
src = artiq.packages.x86_64-linux.qasync.src;
inherit (artiq.packages.x86_64-linux.qasync) version;
};
pyqtgraph-pkg = makeMsys2 {
name = "pyqtgraph";
src = pkgs.python3Packages.pyqtgraph.src;
inherit (pkgs.python3Packages.pyqtgraph) version;
};
sipyco-pkg = makeMsys2 {
name = "sipyco";
src = sipyco;
inherit (sipyco.packages.x86_64-linux.sipyco) version;
};
artiq-comtools-pkg = makeMsys2 {
name = "artiq-comtools";
src = artiq-comtools;
inherit (artiq-comtools.packages.x86_64-linux.artiq-comtools) version;
};
artiq-pkg = makeMsys2 {
name = "artiq";
src = artiq;
inherit (artiq.packages.x86_64-linux.artiq) version;
};
msys2-repos = pkgs.stdenvNoCC.mkDerivation {
name = "msys2-repos";
nativeBuildInputs = [ pkgs.pacman ];
phases = [ "buildPhase" ];
buildPhase =
''
mkdir $out
cd $out
ln -s ${qasync-pkg}/*.pkg.tar.zst .
ln -s ${pyqtgraph-pkg}/*.pkg.tar.zst .
ln -s ${sipyco-pkg}/*.pkg.tar.zst .
ln -s ${artiq-comtools-pkg}/*.pkg.tar.zst .
ln -s ${nac3.packages.x86_64-w64-mingw32.nac3artiq-pkg}/*.pkg.tar.zst .
ln -s ${artiq-pkg}/*.pkg.tar.zst .
repo-add artiq.db.tar.gz *.pkg.tar.zst
'';
};
}