push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,107 @@
{
stdenv,
lib,
gitUpdater,
testers,
fetchFromGitHub,
meson,
ninja,
pkg-config,
bison,
flex,
libiconv,
libpng,
libjpeg,
libwebp,
zlib,
withGUI ? true,
qtbase ? null,
wrapQtAppsHook ? null,
}:
assert withGUI -> qtbase != null && wrapQtAppsHook != null;
stdenv.mkDerivation (finalAttrs: {
pname = "alice-tools" + lib.optionalString withGUI "-qt${lib.versions.major qtbase.version}";
version = "0.13.0";
src = fetchFromGitHub {
owner = "nunuhara";
repo = "alice-tools";
rev = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-DazWnBeI5XShkIx41GFZLP3BbE0O8T9uflvKIZUXCHo=";
};
postPatch = lib.optionalString (withGUI && lib.versionAtLeast qtbase.version "6.0") ''
# Use Meson's Qt6 module
substituteInPlace src/meson.build \
--replace qt5 qt6
# For some reason Meson uses QMake instead of pkg-config detection method for Qt6 on Darwin, which gives wrong search paths for tools
export PATH=${qtbase.dev}/libexec:$PATH
'';
mesonFlags = lib.optionals (withGUI && lib.versionAtLeast qtbase.version "6.0") [
# Qt6 requires at least C++17, project uses compiler's default, default too old on Darwin & aarch64-linux
"-Dcpp_std=c++17"
];
nativeBuildInputs = [
meson
ninja
pkg-config
bison
flex
]
++ lib.optionals withGUI [
wrapQtAppsHook
];
buildInputs = [
libiconv
libpng
libjpeg
libwebp
zlib
]
++ lib.optionals withGUI [
qtbase
];
dontWrapQtApps = true;
# Default install step only installs a static library of a build dependency
installPhase = ''
runHook preInstall
install -Dm755 src/alice $out/bin/alice
''
+ lib.optionalString withGUI ''
install -Dm755 src/galice $out/bin/galice
wrapQtApp $out/bin/galice
''
+ ''
runHook postInstall
'';
passthru = {
updateScript = gitUpdater { };
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command =
lib.optionalString withGUI "env QT_QPA_PLATFORM=minimal "
+ "${lib.getExe finalAttrs.finalPackage} --version";
};
};
meta = with lib; {
description = "Tools for extracting/editing files from AliceSoft games";
homepage = "https://github.com/nunuhara/alice-tools";
license = licenses.gpl2Plus;
platforms = platforms.all;
maintainers = with maintainers; [ OPNA2608 ];
mainProgram = if withGUI then "galice" else "alice";
};
})

View File

@@ -0,0 +1,117 @@
{
lib,
stdenv,
fetchFromGitHub,
libgamemode32,
makeWrapper,
meson,
ninja,
pkg-config,
dbus,
inih,
systemd,
appstream,
findutils,
gawk,
procps,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gamemode";
version = "1.8.2";
src = fetchFromGitHub {
owner = "FeralInteractive";
repo = "gamemode";
tag = finalAttrs.version;
hash = "sha256-V0rewbSVOGFqJqXyCz4jXpuDM0EfjdkpGPl+WdDwI5I=";
};
outputs = [
"out"
"dev"
"lib"
"man"
];
patches = [
# Add @libraryPath@ template variable to fix loading the PRELOAD library
./preload-nix-workaround.patch
];
postPatch = ''
substituteInPlace data/gamemoderun \
--subst-var-by libraryPath ${
lib.makeLibraryPath (
[
(placeholder "lib")
]
++ lib.optionals (stdenv.hostPlatform.system == "x86_64-linux") [
# Support wrapping 32bit applications on a 64bit linux system
libgamemode32
]
)
}
'';
nativeBuildInputs = [
makeWrapper
meson
ninja
pkg-config
];
buildInputs = [
dbus
inih
systemd
];
mesonFlags = [
"-Dwith-pam-limits-dir=etc/security/limits.d"
"-Dwith-systemd-user-unit-dir=lib/systemd/user"
"-Dwith-systemd-group-dir=lib/sysusers.d"
# The meson builder installs internal executables to $lib/lib by
# default, but they should be installed to "$out". It's also more
# appropriate to install these executables under a libexec
# directory instead of lib.
"--libexecdir=libexec"
];
doCheck = true;
nativeCheckInputs = [
appstream
];
postFixup = ''
# Add $lib/lib to gamemoded & gamemode-simulate-game's rpath since
# they use dlopen to load libgamemode. Can't use makeWrapper since
# it would break the security wrapper in the NixOS module.
for bin in "$out/bin/gamemoded" "$out/bin/gamemode-simulate-game"; do
patchelf --set-rpath "$lib/lib:$(patchelf --print-rpath "$bin")" "$bin"
done
wrapProgram "$out/bin/gamemodelist" \
--prefix PATH : ${
lib.makeBinPath [
findutils
gawk
procps
]
}
'';
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Optimise Linux system performance on demand";
homepage = "https://feralinteractive.github.io/gamemode";
changelog = "https://github.com/FeralInteractive/gamemode/blob/${finalAttrs.version}/CHANGELOG.md";
license = licenses.bsd3;
maintainers = with maintainers; [ kira-bruneau ];
platforms = platforms.linux;
mainProgram = "gamemoderun"; # Requires NixOS module to run
};
})

View File

@@ -0,0 +1,12 @@
diff --git a/data/gamemoderun b/data/gamemoderun
index 573b3e4..6f2799e 100755
--- a/data/gamemoderun
+++ b/data/gamemoderun
@@ -5,5 +5,6 @@ GAMEMODEAUTO_NAME="libgamemodeauto.so.0"
# ld will find the right path to load the library, including for 32-bit apps.
LD_PRELOAD="${GAMEMODEAUTO_NAME}${LD_PRELOAD:+:$LD_PRELOAD}"
+LD_LIBRARY_PATH="@libraryPath@${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
-exec env LD_PRELOAD="${LD_PRELOAD}" $GAMEMODERUNEXEC "$@"
+exec env LD_PRELOAD="${LD_PRELOAD}" LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" $GAMEMODERUNEXEC "$@"

View File

@@ -0,0 +1,16 @@
{
recurseIntoAttrs,
callPackage,
lib,
}:
# All versions are taken from `version.json` created by `update.py`, and realised with `generic.nix`.
# The `update.py` is a web scraper script that writes the latest versions into `version.json`.
# The `versions.json` can be automatically updated and committed with a commit summary.
# To do so, change directory to nixpkgs root, and do:
# $ nix-shell ./maintainers/scripts/update.nix --argstr package optifinePackages.optifine-latest --argstr commit true
recurseIntoAttrs (
lib.mapAttrs (name: value: callPackage ./generic.nix value) (lib.importJSON ./versions.json)
)

View File

@@ -0,0 +1,56 @@
{
version,
sha256,
lib,
runCommand,
fetchurl,
makeWrapper,
jre,
}:
let
mcVersion = builtins.head (lib.splitString "_" version);
in
runCommand "optifine-${mcVersion}"
{
pname = "optifine";
inherit version;
src = fetchurl {
url = "https://optifine.net/download?f=OptiFine_${version}.jar";
inherit sha256;
name = "OptiFine_${version}.jar";
};
nativeBuildInputs = [
jre
makeWrapper
];
passthru.updateScript = {
command = [ ./update.py ];
supportedFeatures = [ "commit" ];
};
meta = with lib; {
homepage = "https://optifine.net/";
description = "Minecraft ${mcVersion} optimization mod";
longDescription = ''
OptiFine is a Minecraft optimization mod.
It allows Minecraft to run faster and look better with full support for HD textures and many configuration options.
This is for version ${mcVersion} of Minecraft.
'';
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.unfree;
maintainers = [ ];
platforms = platforms.unix;
mainProgram = "optifine";
};
}
''
mkdir -p $out/{bin,lib/optifine}
cp $src $out/lib/optifine/optifine.jar
makeWrapper ${jre}/bin/java $out/bin/optifine \
--add-flags "-jar $out/lib/optifine/optifine.jar"
''

View File

@@ -0,0 +1,60 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i python3 -p python3.pkgs.requests python3.pkgs.lxml nix
from lxml import html
import json
import os.path
import re
import requests
import subprocess
def nix_prefetch_sha256(name):
return subprocess.run(['nix-prefetch-url', '--type', 'sha256', 'https://optifine.net/download?f=' + name], capture_output=True, text=True).stdout.strip()
# fetch download page
sess = requests.session()
page = sess.get('https://optifine.net/downloads')
tree = html.fromstring(page.content)
# parse and extract main jar file names
href = tree.xpath('//tr[@class="downloadLine downloadLineMain"]/td[@class="colMirror"]/a/@href')
expr = re.compile('(OptiFine_)([0-9.]*)(.*)\.jar')
result = [ expr.search(x) for x in href ]
# format name, version and hash for each file
catalogue = {}
for i, r in enumerate(result):
index = r.group(1).lower() + r.group(2).replace('.', '_')
version = r.group(2) + r.group(3)
catalogue[index] = {
"version": version,
"sha256": nix_prefetch_sha256(r.group(0))
}
# latest version should be the first entry
if len(catalogue) > 0:
catalogue['optifine-latest'] = list(catalogue.values())[0]
# read previous versions
d = os.path.dirname(os.path.abspath(__file__))
with open(os.path.join(d, 'versions.json'), 'r') as f:
prev = json.load(f)
# `maintainers/scripts/update.py` will extract stdout to write commit message
# embed the commit message in json and print it
changes = [ { 'commitMessage': 'optifinePackages: update versions\n\n' } ]
# build a longest common subsequence, natural sorted by keys
for key, value in sorted({**prev, **catalogue}.items(), key=lambda item: [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', item[0])]):
if key not in prev:
changes[0]['commitMessage'] += 'optifinePackages.{}: init at {}\n'.format(key, value['version'])
elif value['version'] != prev[key]['version']:
changes[0]['commitMessage'] += 'optifinePackages.{}: {} -> {}\n'.format(key, prev[key]['version'], value['version'])
# print the changes in stdout
print(json.dumps(changes))
# write catalogue to file
with open(os.path.join(d, 'versions.json'), 'w') as f:
json.dump(catalogue, f, indent=4)
f.write('\n')

View File

@@ -0,0 +1,170 @@
{
"optifine_1_21_4": {
"version": "1.21.4_HD_U_J3",
"sha256": "1lz1gc2f4l5fzy4zgi1i279v7gccqwjswsbviyp8jgybir81r2nv"
},
"optifine_1_21_3": {
"version": "1.21.3_HD_U_J2",
"sha256": "0yv6f6vaxsqxkc4hh4kvfdr7gxi197gzv82w7pwi927xyvgsl5ir"
},
"optifine_1_21_1": {
"version": "1.21.1_HD_U_J1",
"sha256": "10lhnxang1zpvc30brg8ansm5b2snmf8x14g5pmbs280vca2svfv"
},
"optifine_1_20_4": {
"version": "1.20.4_HD_U_I7",
"sha256": "1zgz5cd2v299hayk5qx639nknd3mcz58y59rpik8srx48da8jw14"
},
"optifine_1_20_1": {
"version": "1.20.1_HD_U_I6",
"sha256": "0l66pz4hy42qxv9a2jlq1hd7jiiysnv54g9gk1dfbwpd19kwnrqb"
},
"optifine_1_19_4": {
"version": "1.19.4_HD_U_I4",
"sha256": "0smgr2mxk8p7v7xzklj34kzqs36bl1kbb94lq41i1ks1wg50n09c"
},
"optifine_1_19_3": {
"version": "1.19.3_HD_U_I3",
"sha256": "15xgw12sacq6bqssm1szmmg5gac24rsah2plwky67hi67bj894iv"
},
"optifine_1_19_2": {
"version": "1.19.2_HD_U_I2",
"sha256": "0klhhzmr4l5alkyq8q1ishzach2jip5y6d6d4jk9whcbhia33sxg"
},
"optifine_1_19_1": {
"version": "1.19.1_HD_U_H9",
"sha256": "1p5a3i383ca2l3snsm36dyngfz9a1f9xffaxk439149h0i2d0nlj"
},
"optifine_1_19": {
"version": "1.19_HD_U_H9",
"sha256": "19zjvwg0sr6279plj5qxj7hdlw9w8q3qd78dg6911m356z6g87ah"
},
"optifine_1_18_2": {
"version": "1.18.2_HD_U_H9",
"sha256": "0lf16i7hjyral3704kzyhbhrc01crbpzaicsl4cyj6qx15z0lwxx"
},
"optifine_1_18_1": {
"version": "1.18.1_HD_U_H6",
"sha256": "0nh8ls306rs1qcbyibb6idapws4z5cyaqrgh9ipvm1vcwvxxj9ys"
},
"optifine_1_18": {
"version": "1.18_HD_U_H3",
"sha256": "11zqiwmqj4ja6l87acwzs7cnabsgn2x36510hap8gj139l3vbrvb"
},
"optifine_1_17_1": {
"version": "1.17.1_HD_U_H1",
"sha256": "14zp7jq0g9krq4ma4s5an2ncpyc2ipcxfcfhb0zqc7f8nvipnyqw"
},
"optifine_1_16_5": {
"version": "1.16.5_HD_U_G8",
"sha256": "0ks91d6n4vkgb5ykdrc67br2c69nqjr0xhp7rrkybg24xn8bqxiw"
},
"optifine_1_16_4": {
"version": "1.16.4_HD_U_G7",
"sha256": "063zdfmhzq5jgfdy27c8b0008sribl8rbvfxa7nkk86qwpvz6v8h"
},
"optifine_1_16_3": {
"version": "1.16.3_HD_U_G5",
"sha256": "0pipr77jrva5wrllil40myansyrxxvcckxlvf4k2vhqf2g1mfigl"
},
"optifine_1_16_2": {
"version": "1.16.2_HD_U_G5",
"sha256": "1iav08qqk7wb43ars9nilbgm4ybdi02pd0ahb0xy7clkxvlnjcx2"
},
"optifine_1_16_1": {
"version": "1.16.1_HD_U_G2",
"sha256": "1gwbxv3dx82lxkbp9gaf1nqczkcxdzlfsspxlrv6gcn7w8vvwf5v"
},
"optifine_1_15_2": {
"version": "1.15.2_HD_U_G6",
"sha256": "10qz6y3h80s56wsk3f5wwg52d0d7mkklhhhvgp6y84zlzq6xdbq4"
},
"optifine_1_14_4": {
"version": "1.14.4_HD_U_G5",
"sha256": "1fw9adbixl7942mkr48hl0aar2fwzgsh2js68c06xj5s0fyvkvi3"
},
"optifine_1_14_3": {
"version": "1.14.3_HD_U_F2",
"sha256": "00wys29pmgfsc4j2jy2mpfl493vy52jdxprxl92hcg2xz77ipqjh"
},
"optifine_1_14_2": {
"version": "1.14.2_HD_U_F1",
"sha256": "0645d38z8llnnv546zfkflqp441kxvf8vd0l3zjsls81w3bpc6n8"
},
"optifine_1_13_2": {
"version": "1.13.2_HD_U_G5",
"sha256": "0wdvaxpvbnpfpqgb8v1r8br56pkcn7kvgsi29vcxcg8zvyi10ddj"
},
"optifine_1_13_1": {
"version": "1.13.1_HD_U_E4",
"sha256": "0r5x703pgwi8vakii0nhlij7j24zkq1xvyscqd8lv6w3yq7xd5b3"
},
"optifine_1_13": {
"version": "1.13_HD_U_E4",
"sha256": "0x8ynnm9dglzrajb3ffmvmwkx6ipzs306qadwhcp0ah148wiz1l3"
},
"optifine_1_12_2": {
"version": "1.12.2_HD_U_G5",
"sha256": "07i7p8wsh22xx31g22kk5vxwwy4sgjp0ha8d5mzvkzkifxwhc01v"
},
"optifine_1_12_1": {
"version": "1.12.1_HD_U_G5",
"sha256": "1jn02mknpf622q6i942v63x3kzs9q7n394x188nfh508rn9fpipn"
},
"optifine_1_12": {
"version": "1.12_HD_U_G5",
"sha256": "1slbz0ss670gwlzv4dw362cc5wlpxjv81004n04vcsip8l491pdb"
},
"optifine_1_11_2": {
"version": "1.11.2_HD_U_G5",
"sha256": "1zlap4j3qzb00a9qxk9ww1cgmqaiznblahj19p1r4yrrsc3d9hnn"
},
"optifine_1_11": {
"version": "1.11_HD_U_G5",
"sha256": "1azgnsqbl71087i83dn6wyb7qdz2wa42f04cabnlhmdcmdd4kcsj"
},
"optifine_1_10_2": {
"version": "1.10.2_HD_U_I5",
"sha256": "0m05xqcmh8kaqvlb57yz0mslf22wr89wamlf1q1cma4fn385i57f"
},
"optifine_1_10": {
"version": "1.10_HD_U_I5",
"sha256": "1kd502h6ikxmyj99bj7d41j7z237yipn1hxhb3hsff37s5lar8x0"
},
"optifine_1_9_4": {
"version": "1.9.4_HD_U_I5",
"sha256": "08pb3x0c898pgsciigvy0q9j25arlyqzira4qmcz75qkzlhv3qxp"
},
"optifine_1_9_2": {
"version": "1.9.2_HD_U_E3",
"sha256": "1bgyxhs554wswavidsnmm6mahngndd5bc98jma6wgi7g5qrngcrp"
},
"optifine_1_9_0": {
"version": "1.9.0_HD_U_I5",
"sha256": "1nyiv91hm9765244xa6mh9cf62l329ppm8rdib35lb3ghgasid9n"
},
"optifine_1_8_9": {
"version": "1.8.9_HD_U_M5",
"sha256": "1i5j4jvsd1zkly6pf8zs71gga61z533bq5y8gmfax9pwf057cf97"
},
"optifine_1_8_8": {
"version": "1.8.8_HD_U_I7",
"sha256": "0x4aambs2kww9lanm4kp2jw4h3cwk25fa6xwsm9r7a1jv42jlyay"
},
"optifine_1_8_0": {
"version": "1.8.0_HD_U_I7",
"sha256": "1ig013l61f7yj061ncnvmjsp9j2nd8fy8j03f8ry045d0s7idnfk"
},
"optifine_1_7_10": {
"version": "1.7.10_HD_U_E7",
"sha256": "1d7s8ip697xnlpap89qrr794f307kwv5y44qyj8ha6h0vs1rvkcb"
},
"optifine_1_7_2": {
"version": "1.7.2_HD_U_F7",
"sha256": "18lzyh639mi7r2hzwnmxv0a6v1ay7dk9bzasvwff82dxq0y9zi7m"
},
"optifine-latest": {
"version": "1.21.4_HD_U_J3",
"sha256": "1lz1gc2f4l5fzy4zgi1i279v7gccqwjswsbviyp8jgybir81r2nv"
}
}

View File

@@ -0,0 +1,93 @@
{
lib,
stdenv,
copyDesktopItems,
makeDesktopItem,
fetchFromGitHub,
fetchpatch,
cmake,
python3,
qtbase,
qttools,
qtwayland,
imagemagick,
wrapQtAppsHook,
gitUpdater,
}:
stdenv.mkDerivation rec {
pname = "pokefinder";
version = "4.2.1";
src = fetchFromGitHub {
owner = "Admiral-Fish";
repo = "PokeFinder";
rev = "v${version}";
sha256 = "wjHqox0Vxc73/UTcE7LSo/cG9o4eOqkcjTIW99BxsAc=";
fetchSubmodules = true;
};
patches = [
./set-desktop-file-name.patch
];
postPatch = ''
patchShebangs Source/Core/Resources/
'';
installPhase = ''
runHook preInstall
''
+ lib.optionalString (stdenv.hostPlatform.isDarwin) ''
mkdir -p $out/Applications
cp -R Source/PokeFinder.app $out/Applications
''
+ lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
install -D Source/PokeFinder $out/bin/PokeFinder
mkdir -p $out/share/pixmaps
convert "$src/Source/Form/Images/pokefinder.ico[-1]" $out/share/pixmaps/pokefinder.png
''
+ ''
runHook postInstall
'';
nativeBuildInputs = [
cmake
wrapQtAppsHook
python3
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
copyDesktopItems
imagemagick
];
desktopItems = [
(makeDesktopItem {
name = "pokefinder";
exec = "PokeFinder";
icon = "pokefinder";
comment = "Cross platform Pokémon RNG tool";
desktopName = "PokéFinder";
categories = [ "Utility" ];
})
];
buildInputs = [
qtbase
qttools
]
++ lib.optionals stdenv.hostPlatform.isLinux [ qtwayland ];
passthru.updateScript = gitUpdater {
rev-prefix = "v";
};
meta = with lib; {
homepage = "https://github.com/Admiral-Fish/PokeFinder";
description = "Cross platform Pokémon RNG tool";
mainProgram = "PokeFinder";
license = licenses.gpl3Only;
platforms = platforms.all;
maintainers = with maintainers; [ leo60228 ];
};
}

View File

@@ -0,0 +1,12 @@
diff --git a/Source/main.cpp b/Source/main.cpp
index 3e58a381..2e7e4a86 100644
--- a/Source/main.cpp
+++ b/Source/main.cpp
@@ -69,6 +69,7 @@ int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setApplicationName("PokeFinder");
+ a.setDesktopFileName("pokefinder");
a.setOrganizationName("PokeFinder Team");
Q_INIT_RESOURCE(resources);

View File

@@ -0,0 +1,73 @@
{
lib,
buildPythonApplication,
fetchPypi,
setuptools,
setuptools-scm,
wheel,
pillow,
psutil,
async-tkinter-loop,
timeago,
platformdirs,
sv-ttk,
}:
buildPythonApplication rec {
pname = "steamback";
version = "0.3.6";
format = "pyproject";
src = fetchPypi {
inherit pname version;
hash = "sha256-hvMPSxIfwwQqo80JCpYhcbVY4kXs5jWtjjafVSMrw6o=";
};
build-system = [
setuptools-scm
wheel
];
buildInputs = [
setuptools
pillow
];
dependencies = [
psutil
async-tkinter-loop
timeago
platformdirs
sv-ttk
];
pythonRelaxDeps = [
"async-tkinter-loop"
"platformdirs"
"Pillow"
"psutil"
];
checkPhase = ''
runHook preCheck
$out/bin/steamback --help
runHook postCheck
'';
pythonImportsCheck = [
"steamback"
"steamback.gui"
"steamback.test"
"steamback.util"
];
meta = {
description = "Decky plugin to add versioned save-game snapshots to Steam-cloud enabled games";
mainProgram = "steamback";
homepage = "https://github.com/geeksville/steamback";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ AngryAnt ];
};
}