diff --git a/README.md b/README.md index ae7ae3d..d3bfc9e 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,6 @@ ARTIQ extrapkg This contains additional packages and infrastructure for ARTIQ: * MSYS2 and Conda packages + * MSYS2 offline installer * Controllers/NDSPs * Windows tests - -## MSYS2 Installer - -### Build instructions - -```shell -nix build .#hydraJobs.msys2-offline-installer -``` - -Update packages if needed: -```shell -nix develop .#installer -cd installer -./make_msys2_packages.sh -# git commit and push -``` \ No newline at end of file diff --git a/flake.nix b/flake.nix index 0130e8a..3468381 100644 --- a/flake.nix +++ b/flake.nix @@ -122,35 +122,6 @@ done ''; }; - msys2-image = pkgs.stdenvNoCC.mkDerivation rec { - name = "msys2-image"; - artiq-pkgs = import ./installer/msys2_artiq_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 ]; - 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 $src/installer/pacman.conf | sed -e "s|/etc/pacman.d|$out/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" > tmp/pacman.conf - fakeroot pacman -Udd --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") artiq-pkgs)} - ''; - }; - msys2-qt-ifw = pkgs.stdenvNoCC.mkDerivation rec { - name = "msys2-qt-ifw"; - srcs = import ./installer/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))); - }; in rec { inherit pkgs; @@ -557,26 +528,60 @@ name = "msys2-installer"; buildInputs = with pkgs; [ curl pacman fakeroot p7zip wine64 ]; src = ./.; + msys2_qt_ifw = pkgs.stdenvNoCC.mkDerivation rec { + 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_image = pkgs.stdenvNoCC.mkDerivation rec { + name = "msys2_image"; + artiq-deps-pkgs = import ./msys2/artiq_dep_packages.nix { inherit pkgs; }; + 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 ]; + 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 + fakeroot pacman -U --noconfirm --cachedir tmp/cache --config tmp/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") msys2-pkgs)} + fakeroot pacman -U --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 + ''; + }; + phases = [ "buildPhase" "installPhase" ]; buildPhase = '' export HOME=`mktemp -d` cp -r $src/installer/qt-ifw qt-ifw chmod -R 700 qt-ifw - find qt-ifw \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@DATE@|$(date +'%Y-%m-%d')|g" "{}" \; - find qt-ifw \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@VERSION@|$(date +'%Y%m%d')|g" "{}" \; + 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@|$(date +'%Y%m%d')|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-image}/"* - ${pkgs.wineWowPackages.stable}/bin/wine64 ${msys2-qt-ifw}/mingw64/bin/binarycreator.exe \ - -t "${msys2-qt-ifw}/mingw64/bin/installerbase.exe" \ + 7z a -mx9 -md128m "qt-ifw/packages/com.msys2.root/data/msys64.7z" "$msys2_image/"* + ${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 \ - "msys2-x86_64.exe" \ + "artiq-msys2-x86_64.exe" \ -v ''; installPhase = '' mkdir -p $out - cp msys2-x86_64.exe $out/ + cp artiq-msys2-x86_64.exe $out/ mkdir -p $out/nix-support/ for i in $out/*.*; do echo file binary-dist $i >> $out/nix-support/hydra-build-products @@ -590,20 +595,12 @@ devShells.x86_64-linux = { msys2 = pkgs.mkShell { name = "dev-shell-msys2"; - buildInputs = with pkgs; [ - curl - pacman - fakeroot - msys2.wine-msys2 - ]; - }; - installer = pkgs.mkShell { - name = "dev-shell-installer"; buildInputs = with pkgs; [ curl pacman fakeroot p7zip + msys2.wine-msys2 wine64 ]; }; diff --git a/installer/make_msys2_packages.sh b/installer/make_msys2_packages.sh deleted file mode 100755 index 5f7563a..0000000 --- a/installer/make_msys2_packages.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash - -set -e - -cd $(dirname $0) -MSYS2DIR=`pwd`/msys2 -mkdir -p $MSYS2DIR/var/lib/pacman $MSYS2DIR/msys/etc - -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 - -printf "\n[artiq]\nSigLevel = Optional TrustAll\nServer = https://msys2.m-labs.hk/artiq-beta\n" >> $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 \ - --sync --print-format "%l %n" mingw-w64-x86_64-artiq mingw-w64-x86_64-openocd mingw-w64-x86_64-bscan-spi-bitstreams > $MSYS2DIR/packages.txt - -pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache \ - --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_artiq_packages.nix generate_nix_packages_from_pacman -IN=$MSYS2DIR/qt_ifw_packages.txt OUT=msys2_qt_ifw_packages.nix generate_nix_packages_from_pacman diff --git a/installer/pacman.conf b/installer/pacman.conf deleted file mode 100644 index 01fca95..0000000 --- a/installer/pacman.conf +++ /dev/null @@ -1,102 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -HoldPkg = pacman -#XferCommand = /usr/bin/curl -L -C - -f -o %o %u -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -Architecture = auto - -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -#UseSyslog -Color -#NoProgressBar -#CheckSpace -#VerbosePkgLists -ParallelDownloads = 5 - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -#SigLevel = Never -SigLevel = Never -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -# Staging packages: enable at your own risk -# [staging] -# Server = https://repo.msys2.org/staging/ -# SigLevel = Never - -[clangarm64] -Include = /etc/pacman.d/mirrorlist.mingw - -[mingw32] -Include = /etc/pacman.d/mirrorlist.mingw - -[mingw64] -Include = /etc/pacman.d/mirrorlist.mingw - -[ucrt64] -Include = /etc/pacman.d/mirrorlist.mingw - -[clang32] -Include = /etc/pacman.d/mirrorlist.mingw - -[clang64] -Include = /etc/pacman.d/mirrorlist.mingw - -[msys] -Include = /etc/pacman.d/mirrorlist.msys - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs - -[artiq] -SigLevel = Optional TrustAll -Server = https://msys2.m-labs.hk/artiq-beta diff --git a/installer/msys2_artiq_packages.nix b/msys2/artiq_dep_packages.nix similarity index 95% rename from installer/msys2_artiq_packages.nix rename to msys2/artiq_dep_packages.nix index c27346b..6e8b89d 100644 --- a/installer/msys2_artiq_packages.nix +++ b/msys2/artiq_dep_packages.nix @@ -67,9 +67,9 @@ }) (pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-openssl-3.3.0-1-any.pkg.tar.zst"; + 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 = "12kh1d8d8ib4d6jchy1m5nxvj0zaz04zrq4v1p1mdx01217nqciz"; + sha256 = "14p37hlj3vn0jb6grfwycjvlfakjbbj3h2fqw1xcj4al0dby2xsd"; }) (pkgs.fetchurl { @@ -438,36 +438,12 @@ sha256 = "08ny0yg92fg413q8jzwp4qvz41vy77ajg75kib4zhva6025rxa0g"; }) - (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"; - }) - - (pkgs.fetchurl { - url = "https://msys2.m-labs.hk/artiq-beta/mingw-w64-x86_64-python-sipyco-1.6-1-any.pkg.tar.zst"; - name = "mingw-w64-x86_64-python-sipyco"; - sha256 = "1jv3brsrvqaswm2fp4q97kv7kqfsc5rf4c3d6y7cc34b0asvxrhf"; - }) - (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-regex-2023.12.25-1-any.pkg.tar.zst"; - name = "mingw-w64-x86_64-python-regex"; - sha256 = "17hmnaw3fvcbnzjbm6i7drs3i5j2rsdmxq2c841n497ks30xa5r4"; - }) - - (pkgs.fetchurl { - url = "https://msys2.m-labs.hk/artiq-beta/mingw-w64-x86_64-python-pythonparser-1.4-1-any.pkg.tar.zst"; - name = "mingw-w64-x86_64-python-pythonparser"; - sha256 = "10srs4ii059w8xliv52kw8r5dp7q35l8581lvfb39d2dvisb6f5i"; - }) - (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"; @@ -553,15 +529,15 @@ }) (pkgs.fetchurl { - url = "https://msys2.m-labs.hk/artiq-beta/mingw-w64-x86_64-artiq-comtools-1.2-1-any.pkg.tar.zst"; - name = "mingw-w64-x86_64-artiq-comtools"; - sha256 = "0cmdpmh7g078zkhc595k7nkjz8xsr6ry48izrqg53q2x87326gq2"; + 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://msys2.m-labs.hk/artiq-beta/mingw-w64-x86_64-artiq-8.8777+24fe885.beta-1-any.pkg.tar.zst"; - name = "mingw-w64-x86_64-artiq"; - sha256 = "0h9xishm6b8hjfsay5r6sl179kk2q8rgx3pb5lqm01lajpqrjbfq"; + 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"; }) (pkgs.fetchurl { diff --git a/msys2/make_msys2_packages.sh b/msys2/make_msys2_packages.sh index 86ac2de..b1121a6 100755 --- a/msys2/make_msys2_packages.sh +++ b/msys2/make_msys2_packages.sh @@ -4,21 +4,62 @@ set -e cd $(dirname $0) MSYS2DIR=`pwd`/msys2 +rm -rf $MSYS2DIR mkdir -p $MSYS2DIR/var/lib/pacman $MSYS2DIR/msys/etc -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 mingw-w64-x86_64-cc mingw-w64-x86_64-python3.11 mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-setuptools > $MSYS2DIR/packages.txt +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 \ + mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-setuptools > $MSYS2DIR/packages.txt -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 +pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf \ + --cachedir $MSYS2DIR/msys/cache --sync --print-format "%l %n" \ + 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-llvmlite\ + mingw-w64-x86_64-python-levenshtein\ + mingw-w64-x86_64-python-lmdb\ + mingw-w64-x86_64-lld \ + mingw-w64-x86_64-python-aiohttp \ + mingw-w64-x86_64-python-idna \ + mingw-w64-x86_64-python-yarl \ + mingw-w64-x86_64-python-regex \ + mingw-w64-x86_64-python-pybase64 \ + mingw-w64-x86_64-openocd mingw-w64-x86_64-bscan-spi-bitstreams > $MSYS2DIR/artiq_dep_packages.txt + +pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache \ + --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 +IN=$MSYS2DIR/qt_ifw_packages.txt OUT=msys2_qt_ifw_packages.nix generate_nix_packages_from_pacman +IN=$MSYS2DIR/artiq_dep_packages.txt OUT=artiq_dep_packages.nix generate_nix_packages_from_pacman diff --git a/msys2/msys2_packages.nix b/msys2/msys2_packages.nix index d38f9f9..7b3af12 100644 --- a/msys2/msys2_packages.nix +++ b/msys2/msys2_packages.nix @@ -1,182 +1,218 @@ { pkgs } : [ -(pkgs.fetchurl { - url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "1f8sl3jckz8pkk0af6yh7ymrq7kwwy84i3922vgmkn80lq5f4kn1"; -}) + (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.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "01kh11kndh37y2jcd6q4ymdc950934887skdp55bkm6f7j4jryx4"; -}) + (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.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "0vwdb5f1mx16as1bmpcq9n4dl0srq334rvb6mw8p1i0gxa1id9qy"; -}) + (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.r680.g257321cea-1-any.pkg.tar.zst"; - sha256 = "16l6zqhqhnv284aipz25639spgs6198q8xnzl0s6m0ckkxjx257q"; -}) + (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-1-any.pkg.tar.zst"; - sha256 = "12kh1d8d8ib4d6jchy1m5nxvj0zaz04zrq4v1p1mdx01217nqciz"; -}) + (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-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"; + }) ] diff --git a/installer/msys2_qt_ifw_packages.nix b/msys2/msys2_qt_ifw_packages.nix similarity index 100% rename from installer/msys2_qt_ifw_packages.nix rename to msys2/msys2_qt_ifw_packages.nix