Add offline installer #12

Merged
sb10q merged 2 commits from esavkin/artiq-extrapkg:2289-offline-installer into master 2024-05-07 17:42:51 +08:00
15 changed files with 1055 additions and 258 deletions

View File

@ -3,5 +3,6 @@ ARTIQ extrapkg
This contains additional packages and infrastructure for ARTIQ:
* MSYS2 and Conda packages
* MSYS2 offline installer
* Controllers/NDSPs
* Windows tests

132
flake.nix
View File

@ -16,6 +16,13 @@
let
pkgs = import artiqpkgs.inputs.nixpkgs { system = "x86_64-linux"; };
msys2 = import ./msys2 { inherit pkgs; };
sipycoDependenciesFile = ./msys2/sipyco_dependencies.txt;
artiqDependenciesFile = ./msys2/artiq_dependencies.txt;
comtoolsDependenciesFile = ./msys2/comtools_dependencies.txt;
pythonparserDependenciesFile = ./msys2/pythonparser_dependencies.txt;
# reads filename and return list of non-empty lines from it
readStringListFromFile = (filename: builtins.filter (x: builtins.lessThan 0 (builtins.length (pkgs.lib.strings.stringToCharacters x)))
(builtins.filter builtins.isString (builtins.split "\n| |\t" (builtins.readFile filename))));
Outdated
Review

Silly name.

Silly name.
Outdated
Review

readStringListFromFile ? Nothing tied to packages.

readStringListFromFile ? Nothing tied to packages.
condaDeps = with pkgs; [ zlib xorg.libSM xorg.libICE xorg.libX11 xorg.libXau xorg.libXi xorg.libXrender libselinux libGL ];
# Use the full Anaconda distribution, which already contains conda-build and its many dependencies.
@ -420,19 +427,19 @@
name = "python-pythonparser";
version = artiqpkgs.packages.x86_64-linux.pythonparser.version;
src = artiqpkgs.packages.x86_64-linux.pythonparser.src;
depends = [ "mingw-w64-x86_64-python-regex" ];
depends = readStringListFromFile pythonparserDependenciesFile;
};
msys2-sipyco = msys2.makeMsys2Package {
name = "python-sipyco";
src = artiqpkgs.inputs.sipyco.packages.x86_64-linux.sipyco.src;
inherit (artiqpkgs.inputs.sipyco.packages.x86_64-linux.sipyco) version;
depends = [ "mingw-w64-x86_64-python" "mingw-w64-x86_64-python-numpy" "mingw-w64-x86_64-python-pybase64" ];
depends = readStringListFromFile sipycoDependenciesFile;
};
msys2-artiq-comtools = msys2.makeMsys2Package {
name = "artiq-comtools";
src = artiqpkgs.inputs.artiq-comtools.packages.x86_64-linux.artiq-comtools.src;
inherit (artiqpkgs.inputs.artiq-comtools.packages.x86_64-linux.artiq-comtools) version;
depends = [ "mingw-w64-x86_64-python" "mingw-w64-x86_64-python-sipyco" "mingw-w64-x86_64-python-numpy" "mingw-w64-x86_64-python-aiohttp" ];
depends = (readStringListFromFile comtoolsDependenciesFile) ++ [ "mingw-w64-x86_64-python-sipyco" ];
};
msys2-artiq = msys2.makeMsys2Package {
name = "artiq";
@ -442,30 +449,9 @@
export VERSIONEER_OVERRIDE=${artiqpkgs.packages.x86_64-linux.artiq.version}
export VERSIONEER_REV=${artiqpkgs.sourceInfo.rev}
'';
depends = [
"mingw-w64-x86_64-python"
"mingw-w64-x86_64-python-h5py"
"mingw-w64-x86_64-python-pyqt5"
"mingw-w64-x86_64-qt5-svg"
"mingw-w64-x86_64-python-qasync"
"mingw-w64-x86_64-python-pyqtgraph"
"mingw-w64-x86_64-python-numpy"
"mingw-w64-x86_64-python-scipy"
"mingw-w64-x86_64-python-dateutil"
"mingw-w64-x86_64-python-prettytable"
"mingw-w64-x86_64-python-tqdm"
"mingw-w64-x86_64-python-pygit2"
"mingw-w64-x86_64-python-sipyco"
"mingw-w64-x86_64-python-llvmlite"
"mingw-w64-x86_64-python-pythonparser"
"mingw-w64-x86_64-python-levenshtein"
"mingw-w64-x86_64-python-lmdb"
"mingw-w64-x86_64-lld"
"mingw-w64-x86_64-llvm"
"mingw-w64-x86_64-openocd"
"mingw-w64-x86_64-bscan-spi-bitstreams"
"mingw-w64-x86_64-artiq-comtools"
];
depends = (readStringListFromFile artiqDependenciesFile)
++ [ "mingw-w64-x86_64-python-sipyco" "mingw-w64-x86_64-python-pythonparser" "mingw-w64-x86_64-artiq-comtools" ];
};
msys2-asyncserial = msys2.makeMsys2Package {
name = "python-asyncserial";
@ -526,18 +512,94 @@
msys2-hut2
msys2-flake8-artiq
];
msys2-offline-installer = pkgs.stdenv.mkDerivation {
name = "msys2-offline-installer";
buildInputs = with pkgs; [ p7zip ];
src = ./.;
msys2_qt_ifw = pkgs.stdenvNoCC.mkDerivation rec {
Outdated
Review

Please pay attention.

Please pay attention.
name = "msys2_qt_ifw";
srcs = import ./msys2/msys2_qt_ifw_packages.nix { inherit pkgs; };
buildInputs = [ pkgs.gnutar pkgs.zstd ];
phases = [ "installPhase" ];
installPhase = (pkgs.lib.strings.concatStringsSep "\n" (["mkdir $out"] ++ (map (p: "tar xvf ${p} -C $out") srcs)));
};
msys2_artiq_root = pkgs.stdenvNoCC.mkDerivation rec {
name = "msys2_artiq_root";
artiq-deps-pkgs = import ./msys2/artiq_dependency_packages.nix { inherit pkgs; };
Outdated
Review

For the second time, you need to rename this. It's not an image and I can't even find a single person using "image" in this context on the web.

For the second time, you need to rename this. It's not an image and I can't even find a single person using "image" in this context on the web.
Outdated
Review

Maybe "environment" ?

Maybe "environment" ?
msys2-pkgs = import ./msys2/msys2_packages.nix { inherit pkgs; };
msys2-base = pkgs.fetchurl {
url = "https://github.com/msys2/msys2-installer/releases/download/2024-01-13/msys2-base-x86_64-20240113.tar.xz";
name = "base";
sha256 = "sha256-BEVqRKlW08C1+bbHVJGL86jD2HyFi+egyUyRcasTxYw=";
};
src = ./.;
buildInputs = [ pkgs.gnutar pkgs.zstd pkgs.pacman pkgs.fakeroot ];
Outdated
Review

image?

image?
phases = [ "installPhase" ];
installPhase = ''
mkdir $out
mkdir -p tmp/cache
tar -xvf ${msys2-base} --strip-components=1 -C $out/ msys64
printf "\n[artiq]\nSigLevel = Optional TrustAll\nServer = https://msys2.m-labs.hk/artiq-beta\n" >> $out/etc/pacman.conf
cat $out/etc/pacman.conf | sed -e "s|/etc/pacman.d|$out/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" -e "s|CheckSpace||g" > tmp/pacman.conf
sed -i '/\[mingw32\]/,/^$/d; /\[clang32\]/,/^$/d; /\[clang64\]/,/^$/d; /\[ucrt64\]/,/^$/d; /\[clangarm64\]/,/^$/d;' $out/etc/pacman.conf
fakeroot pacman -U --asdeps --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") msys2-pkgs)}
fakeroot pacman -U --asdeps --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") artiq-deps-pkgs)}
fakeroot pacman -U --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${msys2-artiq}/*.pkg.tar.zst ${msys2-artiq-comtools}/*.pkg.tar.zst ${msys2-pythonparser}/*.pkg.tar.zst ${msys2-sipyco}/*.pkg.tar.zst
rm -rf $out/clang64* $out/clang32* $out/clangarm64* $out/mingw32* $out/ucrt64* \
$out/var/lib/pacman/sync/clang64* $out/var/lib/pacman/sync/clang32* $out/var/lib/pacman/sync/clangarm64* \
$out/var/lib/pacman/sync/mingw32* $out/var/lib/pacman/sync/ucrt64* \
$out/etc/pacman.d/mirrorlist.clang64 $out/etc/pacman.d/mirrorlist.clang32 $out/etc/pacman.d/mirrorlist.clangarm64 \
$out/etc/pacman.d/mirrorlist.mingw32 $out/etc/pacman.d/mirrorlist.ucrt64
'';
};
phases = [ "buildPhase" "installPhase" ];
buildPhase = ''
export HOME=`mktemp -d`
cp -r $src/installer/qt-ifw qt-ifw
# needed for sed and 7z
sb10q marked this conversation as resolved Outdated
Outdated
Review

Why?

Why?

So that 7z can place the archive in this directory

So that 7z can place the archive in this directory
Outdated
Review

Needs detailed explanation in comments.

Needs detailed explanation in comments.
chmod -R 700 qt-ifw
sb10q marked this conversation as resolved Outdated
Outdated
Review

find? There are only two files and the paths are known, no?

find? There are only two files and the paths are known, no?
sed -i "s|@DATE@|$(date +'%Y-%m-%d')|g" qt-ifw/config/config.xml qt-ifw/packages/com.msys2.root/meta/package.xml ;
sed -i "s|@VERSION@|${artiqpkgs.packages.x86_64-linux.artiq.version}|g" qt-ifw/config/config.xml qt-ifw/packages/com.msys2.root/meta/package.xml ;
7z a -mx9 -md128m "qt-ifw/packages/com.msys2.root/data/msys64.7z" "$msys2_artiq_root/"*
${pkgs.wineWowPackages.stable}/bin/wine64 $msys2_qt_ifw/mingw64/bin/binarycreator.exe \
-t "$msys2_qt_ifw/mingw64/bin/installerbase.exe" \
-p "qt-ifw/packages" \
-c "qt-ifw/config/config.xml" \
--offline-only \
sb10q marked this conversation as resolved Outdated
Outdated
Review

Give it a better name to differentiate it from the original MSYS2 installer.

Give it a better name to differentiate it from the original MSYS2 installer.
"artiq-msys2-x86_64.exe" \
-v
'';
installPhase = ''
mkdir -p $out
cp artiq-msys2-x86_64.exe $out/artiq-msys2-x86_64-${artiqpkgs.packages.x86_64-linux.artiq.version}.exe
mkdir -p $out/nix-support/
for i in $out/*.*; do
echo file binary-dist $i >> $out/nix-support/hydra-build-products
done
'';
};
};
hydraJobs = packages.x86_64-linux;
devShells.x86_64-linux.msys2 = pkgs.mkShell {
name = "dev-shell-msys2";
buildInputs = with pkgs; [
curl
pacman
fakeroot
msys2.wine-msys2
];
devShells.x86_64-linux = {
msys2 = pkgs.mkShell {
name = "dev-shell-msys2";
buildInputs = with pkgs; [
curl
pacman
fakeroot
p7zip
msys2.wine-msys2
wineWowPackages.stable
sb10q marked this conversation as resolved Outdated
Outdated
Review

msys2-
Or just merge it with the above one.

msys2- Or just merge it with the above one.
];
};
};
};
Outdated
Review

Is there a difference between wine64 and wineWowPackages.stable that was used everywhere else before your patch?

In any case you need to be consistent.

Is there a difference between wine64 and wineWowPackages.stable that was used everywhere else before your patch? In any case you need to be consistent.
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>MSYS2</Name>
<Version>@VERSION@</Version>
<Title>MSYS2</Title>
<Publisher>The MSYS2 Developers</Publisher>
<ControlScript>control.js</ControlScript>
<StartMenuDir>MSYS2</StartMenuDir>
<RunProgram>@TargetDir@/mingw64.exe</RunProgram>
<RunProgramArguments></RunProgramArguments>
<InstallerApplicationIcon>artiq</InstallerApplicationIcon>
<InstallerWindowIcon>artiq.ico</InstallerWindowIcon>
<InstallActionColumnVisible>false</InstallActionColumnVisible>
<MaintenanceToolName>uninstall</MaintenanceToolName>
<SupportsModify>false</SupportsModify>
<RepositorySettingsPageVisible>false</RepositorySettingsPageVisible>
<SaveDefaultRepositories>false</SaveDefaultRepositories>
</Installer>

View File

@ -0,0 +1,20 @@
function Controller()
{
installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
if (installer.isInstaller()) {
installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false);
}
}
Controller.prototype.IntroductionPageCallback = function()
{
const widget = gui.currentPageWidget();
const radioNames = ["PackageManagerRadioButton", "UpdaterRadioButton"];
for (const name of radioNames) {
const el = gui.findChild(widget, name);
if (el != null) {
el.hide();
}
}
}

View File

@ -0,0 +1,64 @@
function cancelInstaller(message)
{
installer.setDefaultPageVisible(QInstaller.Introduction, false);
installer.setDefaultPageVisible(QInstaller.TargetDirectory, false);
installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false);
installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
installer.setDefaultPageVisible(QInstaller.PerformInstallation, false);
installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
var abortText = "<font color='red'>" + message +"</font>";
installer.setValue("FinishedText", abortText);
installer.setValue("RunProgram", null);
}
function isSupported()
{
if (systemInfo.kernelType === "winnt") {
var major = parseInt(systemInfo.kernelVersion.split(".", 1));
var minor = parseInt(systemInfo.kernelVersion.split(".", 2)[1]);
// Windows >= 8.1
if (major > 6 || (major == 6 && minor >= 3)) {
return true;
}
}
return false;
}
function createShortcuts()
{
var windir = installer.environmentVariable("WINDIR");
if (windir === "") {
QMessageBox["warning"]( "Error" , "Error", "Could not find windows installation directory");
return;
}
component.addOperation("CreateShortcut", "@TargetDir@/mingw64.exe", "@StartMenuDir@/MSYS2 MINGW64.lnk", "iconPath=@TargetDir@/mingw64.exe");
component.addOperation( "Execute",
["@TargetDir@\\usr\\bin\\bash.exe", "--login", "-c", "exit"]);
Outdated
Review

Can the non-mingw64 stuff be removed entirely?
As far as I can tell in the majority of cases it just causes software bloat and user confusion.

Can the non-mingw64 stuff be removed entirely? As far as I can tell in the majority of cases it just causes software bloat and user confusion.
}
function Component() {
if (!isSupported()) {
cancelInstaller("Installation on " + systemInfo.prettyProductName + " is not supported");
return;
}
var systemDrive = installer.environmentVariable("SystemDrive");
// Use C: as a default for messed up systems.
if (systemDrive === "") {
systemDrive = "C:";
}
var targetDir = installer.value("TargetDir", systemDrive+"\\msys64")
installer.setValue("TargetDir", targetDir);
}
Component.prototype.createOperations = function()
{
component.createOperations();
createShortcuts();
}

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<Package>
<DisplayName>MSYS2</DisplayName>
<Description>Cygwin-derived Posix-like env. for Windows with Arch Linux's Pacman</Description>
<Version>@VERSION@</Version>
<ReleaseDate>@DATE@</ReleaseDate>
<Default>true</Default>
<Script>installscript.js</Script>
</Package>

View File

@ -0,0 +1,19 @@
mingw-w64-x86_64-python3.11
mingw-w64-x86_64-python-h5py
mingw-w64-x86_64-python-pyqt5
mingw-w64-x86_64-qt5-svg
mingw-w64-x86_64-python-qasync
mingw-w64-x86_64-python-pyqtgraph
mingw-w64-x86_64-python-numpy
mingw-w64-x86_64-python-scipy
mingw-w64-x86_64-python-dateutil
mingw-w64-x86_64-python-prettytable
mingw-w64-x86_64-python-tqdm
mingw-w64-x86_64-python-pygit2
mingw-w64-x86_64-python-llvmlite
mingw-w64-x86_64-python-levenshtein
mingw-w64-x86_64-python-lmdb
mingw-w64-x86_64-lld
mingw-w64-x86_64-llvm
mingw-w64-x86_64-openocd
mingw-w64-x86_64-bscan-spi-bitstreams

View File

@ -0,0 +1,602 @@
{ pkgs } : [
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libwinpthread-git";
sha256 = "1q5mjrsxxrqa0vm9vn1hqr0ijn7b24lkyzyx5hymlksdbx3r0b29";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gcc-libs";
sha256 = "1wg64p13ldw3f9cl2na4dz8avj06a8xj9fdk9z6h2h2gp1ipgici";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-expat-2.6.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-expat";
sha256 = "13zp12yp286i8pbyqcvgdzln0c6r8hs9jfbwvrbbimhq57jcy91q";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bzip2-1.0.8-3-any.pkg.tar.zst";
name = "mingw-w64-x86_64-bzip2";
sha256 = "1dki26kz4pmr9q3gp3dirrvrwkcv38b9sjrb9slrq4yw31ycjgk5";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libffi-3.4.6-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libffi";
sha256 = "018sv8b54ym24qmyc61sxhjix3rrbmvj04plhy5i0k92qnk2hnv4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpdecimal-4.0.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-mpdecimal";
sha256 = "1dm8hjj0l1q48fv0li0x5xn8yfy6a6ywicqm0i8v0c13qfa5hv7v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libiconv-1.17-4-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libiconv";
sha256 = "0mvamv1maj479lch0spfa25i27yfsb2795v1kpv6z3py8rmv7vff";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gettext-runtime-0.22.5-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gettext-runtime";
sha256 = "0kdjkscdgaxgb073a1ga07g5p53vh3cn6aaa9q96shsb7fbd3aqz";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtre-git-r177.07e66d0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libtre-git";
sha256 = "1fphiijfdz1zn3j11fq16fvqx88vms78d2rawsgrqd5janbq4flb";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libsystre-1.0.1-5-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libsystre";
sha256 = "0q67s9p1dcfzhhr1qsji7g3fpwsi223b5s1c4d74sczn3kvkrd6v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ncurses-6.4.20231217-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-ncurses";
sha256 = "00sx48qazh5nh70fyi9nd8l6498b97fmy9p6vmbsr3pjbwkwpznk";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openssl-3.3.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-openssl";
sha256 = "14p37hlj3vn0jb6grfwycjvlfakjbbj3h2fqw1xcj4al0dby2xsd";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-termcap-1.3.1-7-any.pkg.tar.zst";
name = "mingw-w64-x86_64-termcap";
sha256 = "1s51i2fwy1mrzmxsgr1vv87wlmb3bk88yipqalfldvy3xdgjgjh4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-readline-8.2.010-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-readline";
sha256 = "1qcgv32jrgs9fycqg5qyq40rkxxvjf7j6dnkprhf8zlnzhl3ymaa";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zlib-1.3.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-zlib";
sha256 = "1w05h62i4bcvkr09lzf442dx4ybf80w31m82clhxw59ysypwl16a";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tcl-8.6.13-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-tcl";
sha256 = "1h6sgjmqp2akm4nc64cmj87zr8iaa9m4wg1rgqhhs3x8a904m6by";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-sqlite3-3.45.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-sqlite3";
sha256 = "1rzjzhhji3wmggccv8av5gcqxl3d0wdyrfaj3g8v4gfqql9f525y";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tk-8.6.13-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-tk";
sha256 = "093j1hkjs60nimbnad7jc7190pr2xrwx4nrz22g159dq770cc4xp";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-xz-5.6.1-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-xz";
sha256 = "089v96imr9fyg38v6hmpacd997dxz9c37fkqq4y03gcc4skj7078";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tzdata-2024a-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-tzdata";
sha256 = "1yjcndq1bhfy5mw04c8k5rbmknrcgkq023b0gvwra15spj2c1h9v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.11.9-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python";
sha256 = "1iv0pg26g8p7sqpjqzh0xdx6s9wi8l70kqkansky96nbqx2byp3f";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libgfortran-13.2.0-6-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gcc-libgfortran";
sha256 = "1jmncy2drswx441dhxxs4i471d5lyqdn7faxd6qdni0g6vd56qir";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openblas-0.3.27-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-openblas";
sha256 = "1130ir15sq54mnhyr50yljkm1jj5s40lqkdhsmvk7rwlykl67jq4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-numpy-1.26.4-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-numpy";
sha256 = "1mhsnh3gvqhlq4m1m21xsfdf4zb0yrzvfp88hqcy6s1iiy5w4ync";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libaec-1.1.3-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libaec";
sha256 = "0ca6713y39flq6i4lsw7ja423s5zm7qcgxzzk1899v0n806fax9p";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-c-ares-1.28.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-c-ares";
sha256 = "0skdb9hcgzgrqf8n9x3pxihnbxfgi7gk8v8zjxvxpxr2pb2l57gr";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-brotli-1.1.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-brotli";
sha256 = "1ix63yg59k6wq32xgs64i3i2hqsi9f5qj5qw5apsfr1sgy9zlppm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libunistring-1.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libunistring";
sha256 = "17mhzkkvpaxgk5yy67kh20nqdfc7s959hw3ifmn8bjck5f7cs7k9";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libidn2-2.3.7-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libidn2";
sha256 = "0ki6lnjid60qqs322qsljf7swa372czqbpyax6rc2yww5w53z8h9";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libpsl-0.21.5-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libpsl";
sha256 = "059i6n82rd3idlbvp948rkyyd5zyvzqkbd5hgsmsvb703ncsncjk";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zstd-1.5.6-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-zstd";
sha256 = "09g167k7d7yliz8vlqsknnz4sp947w1v5sidp5rrgbcs2bcxcx8l";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtasn1-4.19.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libtasn1";
sha256 = "09bgm2y25jyjm0pwn2imnr30nxzdd7j71ifmxkpabaqkpsfa5av5";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-p11-kit-0.25.3-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-p11-kit";
sha256 = "1f32pznnvzm8axhvd5406hg0ilvmlilhiqyfjky6zdk545wsyyxl";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ca-certificates-20240203-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-ca-certificates";
sha256 = "092wq5mainz3insakm9lacqa348p3ya6xnf2c3s65x7c6hw0702v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libssh2-1.11.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libssh2";
sha256 = "0h4hfsig3n7grp7hn7vn16af6x122hc220llpmd8aii3d3jwc8d1";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-nghttp2-1.61.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-nghttp2";
sha256 = "1ysm4pzkkrxmkyscz7li1rg3x1hv1q27v3lk6cjz1qwglxrv3zig";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-curl-8.7.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-curl";
sha256 = "006j0lkpk1zdf1s577nvnvx3hk971cbnlhwppgrgg9jrrn4p8v76";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-hdf5-1.14.3-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-hdf5";
sha256 = "0jqngjbvdjl99555di0jip4hy861zqas5b9lgaq0f0z694q8xig4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-h5py-3.10.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-h5py";
sha256 = "0xmy25hg2mfbmmdqmk9r7ykz629qaz45lnz8nz03r7mg42qga8i1";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pyqt5-sip-12.13.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-pyqt5-sip";
sha256 = "0j8l8nc5c9f46748ln46lgaw818fmqmd97493f671x1gwfi3il6j";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-dbus-1.14.10-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-dbus";
sha256 = "1j735j46kj6ivmfm4np9qij4ibh0c9daznx1b0hiyzaq3dj81d5d";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-double-conversion-3.3.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-double-conversion";
sha256 = "1lw76bfwlc23d1rj8dissyi7mb915wimprxrikdz7bicb059vg26";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libpng-1.6.43-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libpng";
sha256 = "078gvc5xy0mzqd1sm9nw6wp1jk7cdxmj8xp7s87l7lzascg1n5mc";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-wineditline-2.206-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-wineditline";
sha256 = "18a8cvyvmb9ilfcb1i1angp46n5c245bn3qw3ckqv86634ph86jl";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pcre2-10.43-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-pcre2";
sha256 = "0dnlvfjjmy65s7ywwx8pjrr1babh0ylx6qlwqvwxyy79q81fhbih";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-packaging-23.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-packaging";
sha256 = "0gsaa1jk6f6jwqf5i8ib9agk8fh85pjn9hwfpi372lvq3n5zjwdi";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-glib2-2.80.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-glib2";
sha256 = "0bl2ffcxc509wl8mmvcdxasm0hjlqwambqwp8mn35d0dcr6bsddb";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-graphite2-1.3.14-3-any.pkg.tar.zst";
name = "mingw-w64-x86_64-graphite2";
sha256 = "1cgmzncx1dblny629fsrhczvsra9zz4xvhlivzl4nyyvxcqbfd3s";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-harfbuzz-8.4.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-harfbuzz";
sha256 = "0hcafmwlvzz5jx18q1ghfcmzdk05dpmm0g70nn027qmf1aj67dpq";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-freetype-2.13.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-freetype";
sha256 = "0vsw6zg6sqwv3z0dv1x8g63m2dkn5nksgplida641r68lbrlsv68";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-fontconfig-2.15.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-fontconfig";
sha256 = "05zddp7g2sm87ihmd4crs2ycwsh1rj1jhw9y0lc9y25z5hl2z8vd";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-icu-74.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-icu";
sha256 = "10j8z4zx75ln5mwgb2x0wg695dspm5qqs3808zimw6igb9cvj8ml";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libjpeg-turbo-3.0.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libjpeg-turbo";
sha256 = "0dxlaajh1h4x96pwk4da502v4587xg7d5b17mvv4nr14bn5slp7c";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-md4c-0.5.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-md4c";
sha256 = "0z6s1h8wp5cai6p79b2cwzn6q9kcacvgvc622gmga13rjxznb71i";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-vulkan-loader-1.3.280.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-vulkan-loader";
sha256 = "04jlvaxx6xmhcrpqb9ng29988py5jr2zfyfwjr802xik9pvvbi5l";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-qt5-base-5.15.13+kde+r138-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-qt5-base";
sha256 = "1gyzp8xz4s5wgbmh11xx8h6wvw19gvwg9a4cxxdq8y8l0yxhq8xm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pyqt5-5.15.10-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-pyqt5";
sha256 = "0qlr553xqs49idk12vhhvqf0v7vypgc9vs3hra344xmxhjq71x5l";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-qt5-svg-5.15.13+kde+r6-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-qt5-svg";
sha256 = "0ckyfi890szlkhk79wnijk3v71ylbc3wfgji0rkvi5lacy1q45ky";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-qasync-0.27.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-qasync";
sha256 = "1g9fdghqpf63pq971n90dqslvlh7kxl7k4gmbgxnmqay05ycywky";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pyqtgraph-0.13.3-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-pyqtgraph";
sha256 = "063pxfcmpviwawlh1gidq6m73r3r1i3bha3hxw05z1mj6a46ym2p";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-scipy-1.12.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-scipy";
sha256 = "0yr1rlq3rz55pcm9r81wi5yyw7kxqmgm3rs1ydwvlcbgar6q3ggc";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-six-1.16.0-4-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-six";
sha256 = "0hv012cnzi27pnr6v0ynygzwvmdmmjl60bdbbs3nv1x2waavv2q3";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-dateutil-2.9.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-dateutil";
sha256 = "151cnff75zb9rg4fcw3db4cjn1hfg6cp6ykd76rai6j7hkk5zjsr";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-wcwidth-0.2.13-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-wcwidth";
sha256 = "046gy1wq95a2381nmaii1i6jlnk0rly8w6wym79gdw4n4ycvm79w";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-prettytable-3.10.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-prettytable";
sha256 = "16nh16rsgcbaa2943c3hh6dkhdlnps4lq0hlajv8fwn38k0nz1vg";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-colorama-0.4.6-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-colorama";
sha256 = "0f62gmhgfwxnhk5sbqfd0qlzhbwis3qxzr625sdyq1xa46yr3ddy";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-tqdm-4.66.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-tqdm";
sha256 = "036mzpi0ncdif1j3npxkcrsp3d3xzwl9jrg6hwnlm6chgnp29gr8";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-http-parser-2.9.4-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-http-parser";
sha256 = "09s8l8v7s6yx3vl114bxc2zbcgdlv95pq5amp80wdfbgd0dzinda";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libgit2-1.7.2-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libgit2";
sha256 = "03ddnkar6m68ijhvaik61ng0672l0pcr0lpdd9f8ply4iwpjzf4j";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-ply-3.11-4-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-ply";
sha256 = "057bmgxnfr5vklhhsksnpaa5kw8cvnp53ib8kykpqfqcsglmjhws";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pycparser-2.21-3-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-pycparser";
sha256 = "1kmwp0j3l8fbpbf1np0ilck9wi7pwm3bzq62jcjjxw4ciwrbxbii";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-cffi-1.16.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-cffi";
sha256 = "1cs3ajs56pkg24l7xsa5s0n70g9i63jkm8hqslxazjl2v007iiwd";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pygit2-1.14.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-pygit2";
sha256 = "08ny0yg92fg413q8jzwp4qvz41vy77ajg75kib4zhva6025rxa0g";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-llvmlite-0.42.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-llvmlite";
sha256 = "0l56iwa0ndxyprz6fw3n4hnd6l47lmvfzshw83x2ygbynls5j3jm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-rapidfuzz-3.6.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-rapidfuzz";
sha256 = "0mp04k3rylfs3f6ccslg61zkg99y5x14iv1lzpdsdyglk9zd6rkg";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-levenshtein-0.25.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-levenshtein";
sha256 = "0i89a7zkj1gvb08zhnrm3h606yd90a4nfmm2j4cbfvfixqjijibm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-lmdb-0.9.31-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-lmdb";
sha256 = "1dzr764y6by4p8mlg3dd0ljmxnbv961clgxssxnz6khhgr4riz3i";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-lmdb-1.4.1-3-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-lmdb";
sha256 = "1v6xs6bl4bnyn2a1w9y2k4jsd8qgyp2mdfp00mb2vf01dsbm1l6f";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libxml2-2.12.6-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libxml2";
sha256 = "0nqhq9whrzq6m1xscnx12g2q8bv6jaak43ly7q4viqd1zfin1abx";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-llvm-libs-18.1.4-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-llvm-libs";
sha256 = "0jl2l400z0rj60hcpr5nms8f1iwdlky4rgzk37ysvfsv2s3xb3g3";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-lld-18.1.4-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-lld";
sha256 = "1fc4pbzkm9wc2i874vfaxbin2p7bryx1yan1n0vvzddr747qxi21";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-llvm-18.1.4-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-llvm";
sha256 = "0446wv29vp1pld6drjaw1lr93lijcvn6l66jj4r5m1gyrf07jhlh";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-hidapi-0.14.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-hidapi";
sha256 = "05k8papxsnnvz26761gjfpc7h3db89j7kdg9jyfyd9g5nmpy18x5";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libusb-1.0.27-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libusb";
sha256 = "1jjdj6njc3yapki1ffj7q5hcy6sd3gqrwyf830bgg72kmc8lxpwl";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libusb-compat-git-r76.b5db9d0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libusb-compat-git";
sha256 = "0x9gczdy09mjrj3cybl0qyk77466lhpcjv23r5z1851yq70ilhz9";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-confuse-3.3-3-any.pkg.tar.zst";
name = "mingw-w64-x86_64-confuse";
sha256 = "0cv020y67984jax23v3iwi9kcn753qafhqsida44y6jhd1znjjpm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libftdi-1.5-7-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libftdi";
sha256 = "0pcrwic5wgdjhs5vvynz8fw2hiqbaz75kikl61gmzqxshm619b2v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libjaylink-git-r175.cfccbc9-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libjaylink-git";
sha256 = "053vp2jak9qrl3di5syr6bw7z1hspx5744027knb6irm3kpa1iki";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-capstone-5.0.1-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-capstone";
sha256 = "1awzx375s3fidrc80l3dhc78cd7wyssvxjlaz9jnbpa3cy5qxl7z";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openocd-0.12.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-openocd";
sha256 = "1na5blv3kajiic8f1igyanbmva6rj8flxam5xmg9d23v8yr99z6a";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bscan-spi-bitstreams-1.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-bscan-spi-bitstreams";
sha256 = "0facp60r9364fkrxx6vfrbivr00yiq99n6n24f5snqb8vqc2mrd1";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-attrs-23.2.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-attrs";
sha256 = "0jvm2jdgcrphwq61n3kj8ialy18m8lbj6xq3jgwbi8qqjlw9s1n7";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-multidict-6.0.5-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-multidict";
sha256 = "0hc7d031m3f8dq3qyvspgs5m2n8x7sljvr6j573ini4cn78w3y0p";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-idna-3.6-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-idna";
sha256 = "0fzkcd2c2c0crqg4690lrizwm9q4338bfn6w46k855gp5l83f4ww";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-yarl-1.9.4-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-yarl";
sha256 = "0y9790lq8kq713v08ypmbxxn48fdfbigkdv78jf1dl570vav72pw";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-frozenlist-1.4.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-frozenlist";
sha256 = "0if893h135p6qzldhl9f5a604whlj9viy3sj5p8mlkr6zyxww7p3";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-aiosignal-1.3.1-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-aiosignal";
sha256 = "0mpp79fx5f0sfjfrqxk0vmc5b13mkl779gwjg5ca38hjqzkycmgy";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-aiohttp-3.9.3-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-aiohttp";
sha256 = "17qym6rwq1w37a6ph0drvz7jqmnm8k0pc3cnbhfj135cq0z79q96";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-regex-2023.12.25-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-regex";
sha256 = "17hmnaw3fvcbnzjbm6i7drs3i5j2rsdmxq2c841n497ks30xa5r4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-pybase64-1.3.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-pybase64";
sha256 = "0wnwfacimz7jxv2cnpn9z4x5fbz0fyin04grab3pslrl5xa4shyr";
})
]

View File

@ -0,0 +1,3 @@
mingw-w64-x86_64-python3.11
mingw-w64-x86_64-python-numpy
mingw-w64-x86_64-python-aiohttp

View File

@ -6,26 +6,37 @@ cd $(dirname $0)
MSYS2DIR=`pwd`/msys2
mkdir -p $MSYS2DIR/var/lib/pacman $MSYS2DIR/msys/etc
Outdated
Review

Remove. It's not in my script because leaving it there is very useful when debugging.

Remove. It's not in my script because leaving it there is very useful when debugging.
Outdated
Review

Remove. It's not in my script because leaving it there is very useful when debugging.

Remove. It's not in my script because leaving it there is very useful when debugging.
curl -L https://mirror.msys2.org/msys/x86_64/pacman-mirrors-20220205-1-any.pkg.tar.zst | tar xvf - -C $MSYS2DIR --zstd
curl -L https://raw.githubusercontent.com/msys2/MSYS2-packages/master/pacman/pacman.conf | sed -e "s|/etc/pacman.d|$MSYS2DIR/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" > $MSYS2DIR/etc/pacman.conf
curl -L https://repo.msys2.org/msys/x86_64/pacman-mirrors-20240210-1-any.pkg.tar.zst | tar xvf - -C $MSYS2DIR --zstd
curl -L https://raw.githubusercontent.com/msys2/MSYS2-packages/master/pacman/pacman.conf | \
sed -e "s|/etc/pacman.d|$MSYS2DIR/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" > $MSYS2DIR/etc/pacman.conf
fakeroot pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf -Syy
pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache -Sp \
pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf \
--cachedir $MSYS2DIR/msys/cache --sync --print-format "%l %n" \
mingw-w64-x86_64-cc mingw-w64-x86_64-python3.11 \
Outdated
Review

I never needed --sync or --print-format. Why did you add them?

I never needed --sync or --print-format. Why did you add them?

--sync is same as -S https://archlinux.org/pacman/pacman.8.html, print format is used to separate package name from its full name, which may contain tilde.

--sync is same as -S https://archlinux.org/pacman/pacman.8.html, print format is used to separate package name from its full name, which may contain tilde.
mingw-w64-x86_64-python-numpy \
mingw-w64-x86_64-llvm \
mingw-w64-x86_64-openocd \
mingw-w64-x86_64-bscan-spi-bitstreams \
mingw-w64-x86_64-python-setuptools \
> $MSYS2DIR/packages.txt
mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-setuptools > $MSYS2DIR/packages.txt
Outdated
Review

mingw-w64-x86_64-python3.11 vs. mingw-w64-x86_64-python in your files should make alarm bells go off.

mingw-w64-x86_64-python3.11 vs. mingw-w64-x86_64-python in your files should make alarm bells go off.
echo "{ pkgs } : [" > msys2_packages.nix
while read package; do
hash=$(nix-prefetch-url $package)
echo "
(pkgs.fetchurl {
url = \"$package\";
sha256 = \"$hash\";
})" >> msys2_packages.nix
done < $MSYS2DIR/packages.txt
echo "]" >> msys2_packages.nix
cat artiq_dependencies.txt comtools_dependencies.txt pythonparser_dependencies.txt sipyco_dependencies.txt | pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf \
--cachedir $MSYS2DIR/msys/cache --sync --print-format "%l %n" - > $MSYS2DIR/artiq_dependency_packages.txt
pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache \
Outdated
Review

Obviously the code duplication with https://git.m-labs.hk/M-Labs/artiq-extrapkg/src/branch/master/flake.nix#L445-L465 has to be addressed.

I have already told you many times that code duplication is bad. Please pay attention.

Put this list into a separate file and have Nix and the shell script read it.

https://nixos.org/manual/nix/stable/language/builtins.html#builtins-readFile

Obviously the code duplication with https://git.m-labs.hk/M-Labs/artiq-extrapkg/src/branch/master/flake.nix#L445-L465 has to be addressed. I have already told you many times that code duplication is bad. Please pay attention. Put this list into a separate file and have Nix and the shell script read it. https://nixos.org/manual/nix/stable/language/builtins.html#builtins-readFile
--sync --print-format "%l %n" mingw-w64-x86_64-qt-installer-framework > $MSYS2DIR/qt_ifw_packages.txt
function generate_nix_packages_from_pacman() {
echo "{ pkgs } : [" > $OUT
while IFS= read -r line; do
read -r url package <<< "$line"
hash=$(nix-prefetch-url $url --name $package)
echo "
(pkgs.fetchurl {
url = \"$url\";
name = \"$package\";
sha256 = \"$hash\";
})" >> $OUT
done < $IN
echo "]" >> $OUT
}
IN=$MSYS2DIR/packages.txt OUT=msys2_packages.nix generate_nix_packages_from_pacman
Outdated
Review

Where are idna and yarl coming from?
Pacman should be able to find such dependencies by itself, no?

Where are idna and yarl coming from? Pacman should be able to find such dependencies by itself, no?
IN=$MSYS2DIR/qt_ifw_packages.txt OUT=msys2_qt_ifw_packages.nix generate_nix_packages_from_pacman
IN=$MSYS2DIR/artiq_dependency_packages.txt OUT=artiq_dependency_packages.nix generate_nix_packages_from_pacman

View File

@ -1,242 +1,218 @@
{ pkgs } : [
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
sha256 = "1q5mjrsxxrqa0vm9vn1hqr0ijn7b24lkyzyx5hymlksdbx3r0b29";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libwinpthread-git";
sha256 = "1q5mjrsxxrqa0vm9vn1hqr0ijn7b24lkyzyx5hymlksdbx3r0b29";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst";
sha256 = "1wg64p13ldw3f9cl2na4dz8avj06a8xj9fdk9z6h2h2gp1ipgici";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gcc-libs";
sha256 = "1wg64p13ldw3f9cl2na4dz8avj06a8xj9fdk9z6h2h2gp1ipgici";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libiconv-1.17-4-any.pkg.tar.zst";
sha256 = "0mvamv1maj479lch0spfa25i27yfsb2795v1kpv6z3py8rmv7vff";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libiconv-1.17-4-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libiconv";
sha256 = "0mvamv1maj479lch0spfa25i27yfsb2795v1kpv6z3py8rmv7vff";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gettext-runtime-0.22.5-2-any.pkg.tar.zst";
sha256 = "0kdjkscdgaxgb073a1ga07g5p53vh3cn6aaa9q96shsb7fbd3aqz";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gettext-runtime-0.22.5-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gettext-runtime";
sha256 = "0kdjkscdgaxgb073a1ga07g5p53vh3cn6aaa9q96shsb7fbd3aqz";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zlib-1.3.1-1-any.pkg.tar.zst";
sha256 = "1w05h62i4bcvkr09lzf442dx4ybf80w31m82clhxw59ysypwl16a";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zlib-1.3.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-zlib";
sha256 = "1w05h62i4bcvkr09lzf442dx4ybf80w31m82clhxw59ysypwl16a";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zstd-1.5.6-2-any.pkg.tar.zst";
sha256 = "09g167k7d7yliz8vlqsknnz4sp947w1v5sidp5rrgbcs2bcxcx8l";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-zstd-1.5.6-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-zstd";
sha256 = "09g167k7d7yliz8vlqsknnz4sp947w1v5sidp5rrgbcs2bcxcx8l";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-binutils-2.42-2-any.pkg.tar.zst";
sha256 = "16gl687nfsm8n0f78c4s16wwx592f3wd0kcfrna49xblyrr5gadm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-binutils-2.42-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-binutils";
sha256 = "16gl687nfsm8n0f78c4s16wwx592f3wd0kcfrna49xblyrr5gadm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-headers-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
sha256 = "1q5d71dy8jhqb3nm1xiv7psmxdninhpbkvlgsrcdzm8nvqcmlcqr";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-headers-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-headers-git";
sha256 = "1q5d71dy8jhqb3nm1xiv7psmxdninhpbkvlgsrcdzm8nvqcmlcqr";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-crt-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
sha256 = "1n1ibknmsc269lbj30105haaa8alg1yrcfc2cmvhyl76pv423zqw";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-crt-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-crt-git";
sha256 = "1n1ibknmsc269lbj30105haaa8alg1yrcfc2cmvhyl76pv423zqw";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gmp-6.3.0-2-any.pkg.tar.zst";
sha256 = "1k0ma22hyn5m2m8kflpmscwm2p1v53pzd93fnind9bf4fhwl6949";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gmp-6.3.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gmp";
sha256 = "1k0ma22hyn5m2m8kflpmscwm2p1v53pzd93fnind9bf4fhwl6949";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-isl-0.26-1-any.pkg.tar.zst";
sha256 = "0hfycibi23xkah9sw60n4ka786l8vmlc67d2waw9mwqqljdmx7pr";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-isl-0.26-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-isl";
sha256 = "0hfycibi23xkah9sw60n4ka786l8vmlc67d2waw9mwqqljdmx7pr";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpfr-4.2.1-2-any.pkg.tar.zst";
sha256 = "1j96kipr7mzawngjhi9m0rh2lhylmggg1mkgkipw9ssrsxxf7g97";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpfr-4.2.1-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-mpfr";
sha256 = "1j96kipr7mzawngjhi9m0rh2lhylmggg1mkgkipw9ssrsxxf7g97";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpc-1.3.1-2-any.pkg.tar.zst";
sha256 = "04md7pzz6rwvlsxzgxn8zc6l5lmqn1w2dg9f5xdf13qbl9zfm615";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpc-1.3.1-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-mpc";
sha256 = "04md7pzz6rwvlsxzgxn8zc6l5lmqn1w2dg9f5xdf13qbl9zfm615";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-windows-default-manifest-6.4-4-any.pkg.tar.zst";
sha256 = "1ylipf8k9j7bgmwndkib2l29mds394i7jcij7a6ciag4kynlhsvi";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-windows-default-manifest-6.4-4-any.pkg.tar.zst";
name = "mingw-w64-x86_64-windows-default-manifest";
sha256 = "1ylipf8k9j7bgmwndkib2l29mds394i7jcij7a6ciag4kynlhsvi";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-winpthreads-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
sha256 = "0jvrzmbac86pl5rc2xi8q931r1rhvf8k8bs83zywkv1v22qcgi1a";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-winpthreads-git-11.0.0.r731.g8fdf7c9b5-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-winpthreads-git";
sha256 = "0jvrzmbac86pl5rc2xi8q931r1rhvf8k8bs83zywkv1v22qcgi1a";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-13.2.0-6-any.pkg.tar.zst";
sha256 = "0j13crl29s8w24kjig0gny68d7ag6n4mgzwyb9ddph23cwqv0l3h";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-13.2.0-6-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gcc";
sha256 = "0j13crl29s8w24kjig0gny68d7ag6n4mgzwyb9ddph23cwqv0l3h";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-expat-2.6.2-1-any.pkg.tar.zst";
sha256 = "13zp12yp286i8pbyqcvgdzln0c6r8hs9jfbwvrbbimhq57jcy91q";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-expat-2.6.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-expat";
sha256 = "13zp12yp286i8pbyqcvgdzln0c6r8hs9jfbwvrbbimhq57jcy91q";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bzip2-1.0.8-3-any.pkg.tar.zst";
sha256 = "1dki26kz4pmr9q3gp3dirrvrwkcv38b9sjrb9slrq4yw31ycjgk5";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bzip2-1.0.8-3-any.pkg.tar.zst";
name = "mingw-w64-x86_64-bzip2";
sha256 = "1dki26kz4pmr9q3gp3dirrvrwkcv38b9sjrb9slrq4yw31ycjgk5";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libffi-3.4.6-1-any.pkg.tar.zst";
sha256 = "018sv8b54ym24qmyc61sxhjix3rrbmvj04plhy5i0k92qnk2hnv4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libffi-3.4.6-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libffi";
sha256 = "018sv8b54ym24qmyc61sxhjix3rrbmvj04plhy5i0k92qnk2hnv4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpdecimal-4.0.0-1-any.pkg.tar.zst";
sha256 = "1dm8hjj0l1q48fv0li0x5xn8yfy6a6ywicqm0i8v0c13qfa5hv7v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-mpdecimal-4.0.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-mpdecimal";
sha256 = "1dm8hjj0l1q48fv0li0x5xn8yfy6a6ywicqm0i8v0c13qfa5hv7v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtre-git-r177.07e66d0-2-any.pkg.tar.zst";
sha256 = "1fphiijfdz1zn3j11fq16fvqx88vms78d2rawsgrqd5janbq4flb";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libtre-git-r177.07e66d0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libtre-git";
sha256 = "1fphiijfdz1zn3j11fq16fvqx88vms78d2rawsgrqd5janbq4flb";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libsystre-1.0.1-5-any.pkg.tar.zst";
sha256 = "0q67s9p1dcfzhhr1qsji7g3fpwsi223b5s1c4d74sczn3kvkrd6v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libsystre-1.0.1-5-any.pkg.tar.zst";
name = "mingw-w64-x86_64-libsystre";
sha256 = "0q67s9p1dcfzhhr1qsji7g3fpwsi223b5s1c4d74sczn3kvkrd6v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ncurses-6.4.20231217-1-any.pkg.tar.zst";
sha256 = "00sx48qazh5nh70fyi9nd8l6498b97fmy9p6vmbsr3pjbwkwpznk";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ncurses-6.4.20231217-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-ncurses";
sha256 = "00sx48qazh5nh70fyi9nd8l6498b97fmy9p6vmbsr3pjbwkwpznk";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openssl-3.3.0-2-any.pkg.tar.zst";
sha256 = "14p37hlj3vn0jb6grfwycjvlfakjbbj3h2fqw1xcj4al0dby2xsd";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openssl-3.3.0-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-openssl";
sha256 = "14p37hlj3vn0jb6grfwycjvlfakjbbj3h2fqw1xcj4al0dby2xsd";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-termcap-1.3.1-7-any.pkg.tar.zst";
sha256 = "1s51i2fwy1mrzmxsgr1vv87wlmb3bk88yipqalfldvy3xdgjgjh4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-termcap-1.3.1-7-any.pkg.tar.zst";
name = "mingw-w64-x86_64-termcap";
sha256 = "1s51i2fwy1mrzmxsgr1vv87wlmb3bk88yipqalfldvy3xdgjgjh4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-readline-8.2.010-1-any.pkg.tar.zst";
sha256 = "1qcgv32jrgs9fycqg5qyq40rkxxvjf7j6dnkprhf8zlnzhl3ymaa";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-readline-8.2.010-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-readline";
sha256 = "1qcgv32jrgs9fycqg5qyq40rkxxvjf7j6dnkprhf8zlnzhl3ymaa";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tcl-8.6.13-1-any.pkg.tar.zst";
sha256 = "1h6sgjmqp2akm4nc64cmj87zr8iaa9m4wg1rgqhhs3x8a904m6by";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tcl-8.6.13-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-tcl";
sha256 = "1h6sgjmqp2akm4nc64cmj87zr8iaa9m4wg1rgqhhs3x8a904m6by";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-sqlite3-3.45.2-1-any.pkg.tar.zst";
sha256 = "1rzjzhhji3wmggccv8av5gcqxl3d0wdyrfaj3g8v4gfqql9f525y";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-sqlite3-3.45.2-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-sqlite3";
sha256 = "1rzjzhhji3wmggccv8av5gcqxl3d0wdyrfaj3g8v4gfqql9f525y";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tk-8.6.13-1-any.pkg.tar.zst";
sha256 = "093j1hkjs60nimbnad7jc7190pr2xrwx4nrz22g159dq770cc4xp";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tk-8.6.13-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-tk";
sha256 = "093j1hkjs60nimbnad7jc7190pr2xrwx4nrz22g159dq770cc4xp";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-xz-5.6.1-2-any.pkg.tar.zst";
sha256 = "089v96imr9fyg38v6hmpacd997dxz9c37fkqq4y03gcc4skj7078";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-xz-5.6.1-2-any.pkg.tar.zst";
name = "mingw-w64-x86_64-xz";
sha256 = "089v96imr9fyg38v6hmpacd997dxz9c37fkqq4y03gcc4skj7078";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tzdata-2024a-1-any.pkg.tar.zst";
sha256 = "1yjcndq1bhfy5mw04c8k5rbmknrcgkq023b0gvwra15spj2c1h9v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-tzdata-2024a-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-tzdata";
sha256 = "1yjcndq1bhfy5mw04c8k5rbmknrcgkq023b0gvwra15spj2c1h9v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.11.9-1-any.pkg.tar.zst";
sha256 = "1iv0pg26g8p7sqpjqzh0xdx6s9wi8l70kqkansky96nbqx2byp3f";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-3.11.9-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python";
sha256 = "1iv0pg26g8p7sqpjqzh0xdx6s9wi8l70kqkansky96nbqx2byp3f";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libgfortran-13.2.0-6-any.pkg.tar.zst";
sha256 = "1jmncy2drswx441dhxxs4i471d5lyqdn7faxd6qdni0g6vd56qir";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libgfortran-13.2.0-6-any.pkg.tar.zst";
name = "mingw-w64-x86_64-gcc-libgfortran";
sha256 = "1jmncy2drswx441dhxxs4i471d5lyqdn7faxd6qdni0g6vd56qir";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openblas-0.3.27-1-any.pkg.tar.zst";
sha256 = "1130ir15sq54mnhyr50yljkm1jj5s40lqkdhsmvk7rwlykl67jq4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openblas-0.3.27-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-openblas";
sha256 = "1130ir15sq54mnhyr50yljkm1jj5s40lqkdhsmvk7rwlykl67jq4";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-numpy-1.26.4-1-any.pkg.tar.zst";
sha256 = "1mhsnh3gvqhlq4m1m21xsfdf4zb0yrzvfp88hqcy6s1iiy5w4ync";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-numpy-1.26.4-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-numpy";
sha256 = "1mhsnh3gvqhlq4m1m21xsfdf4zb0yrzvfp88hqcy6s1iiy5w4ync";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libxml2-2.12.6-1-any.pkg.tar.zst";
sha256 = "0nqhq9whrzq6m1xscnx12g2q8bv6jaak43ly7q4viqd1zfin1abx";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-llvm-libs-18.1.4-1-any.pkg.tar.zst";
sha256 = "0jl2l400z0rj60hcpr5nms8f1iwdlky4rgzk37ysvfsv2s3xb3g3";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-llvm-18.1.4-1-any.pkg.tar.zst";
sha256 = "0446wv29vp1pld6drjaw1lr93lijcvn6l66jj4r5m1gyrf07jhlh";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-hidapi-0.14.0-2-any.pkg.tar.zst";
sha256 = "05k8papxsnnvz26761gjfpc7h3db89j7kdg9jyfyd9g5nmpy18x5";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libusb-1.0.27-1-any.pkg.tar.zst";
sha256 = "1jjdj6njc3yapki1ffj7q5hcy6sd3gqrwyf830bgg72kmc8lxpwl";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libusb-compat-git-r76.b5db9d0-2-any.pkg.tar.zst";
sha256 = "0x9gczdy09mjrj3cybl0qyk77466lhpcjv23r5z1851yq70ilhz9";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-confuse-3.3-3-any.pkg.tar.zst";
sha256 = "0cv020y67984jax23v3iwi9kcn753qafhqsida44y6jhd1znjjpm";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libftdi-1.5-7-any.pkg.tar.zst";
sha256 = "0pcrwic5wgdjhs5vvynz8fw2hiqbaz75kikl61gmzqxshm619b2v";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libjaylink-git-r175.cfccbc9-2-any.pkg.tar.zst";
sha256 = "053vp2jak9qrl3di5syr6bw7z1hspx5744027knb6irm3kpa1iki";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-capstone-5.0.1-2-any.pkg.tar.zst";
sha256 = "1awzx375s3fidrc80l3dhc78cd7wyssvxjlaz9jnbpa3cy5qxl7z";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openocd-0.12.0-2-any.pkg.tar.zst";
sha256 = "1na5blv3kajiic8f1igyanbmva6rj8flxam5xmg9d23v8yr99z6a";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-bscan-spi-bitstreams-1.0-1-any.pkg.tar.zst";
sha256 = "0facp60r9364fkrxx6vfrbivr00yiq99n6n24f5snqb8vqc2mrd1";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-setuptools-69.1.1-1-any.pkg.tar.zst";
sha256 = "0ih9y27m58c2mlj4g9sg90skbm8r2n60f71ayv7ilgqpl7k9s15j";
})
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-python-setuptools-69.1.1-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-python-setuptools";
sha256 = "0ih9y27m58c2mlj4g9sg90skbm8r2n60f71ayv7ilgqpl7k9s15j";
})
]

View File

@ -0,0 +1,8 @@
{ pkgs } : [
(pkgs.fetchurl {
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-qt-installer-framework-4.7.0-1-any.pkg.tar.zst";
name = "mingw-w64-x86_64-qt-installer-framework";
sha256 = "188mb11y4ljyc52z0crp5xx63n19yr1bmcqi3qndvj5w5bmm2zgx";
})
]

View File

@ -0,0 +1 @@
mingw-w64-x86_64-python-regex

View File

@ -0,0 +1,3 @@
mingw-w64-x86_64-python3.11
mingw-w64-x86_64-python-numpy
mingw-w64-x86_64-python-pybase64