rimsort: init at 1.0.30 (#418507)
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
fetchzip,
|
||||
makeBinaryWrapper,
|
||||
|
||||
makeDesktopItem,
|
||||
replaceVars,
|
||||
|
||||
todds,
|
||||
|
||||
steam,
|
||||
}:
|
||||
let
|
||||
pname = "rimsort";
|
||||
version = "1.0.30";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "RimSort";
|
||||
repo = "RimSort";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-f1wYoBC0EbkvYNJHkVuoMukJZMY7eNjCIzJra7/hpLs=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
steamworksSrc = fetchzip {
|
||||
url = "https://web.archive.org/web/20250527013243/https://partner.steamgames.com/downloads/steamworks_sdk_162.zip"; # Steam sometimes requires auth to download.
|
||||
hash = "sha256-yDA92nGj3AKTNI4vnoLaa+7mDqupQv0E4YKRRUWqyZw=";
|
||||
};
|
||||
|
||||
steamfiles = python3Packages.buildPythonPackage {
|
||||
pname = "steamfiles";
|
||||
inherit version;
|
||||
format = "setuptools";
|
||||
|
||||
src = "${src}/submodules/steamfiles";
|
||||
dependencies = with python3Packages; [
|
||||
protobuf
|
||||
protobuf3-to-dict
|
||||
];
|
||||
};
|
||||
|
||||
steam-run =
|
||||
(steam.override {
|
||||
privateTmp = false;
|
||||
}).run;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
inherit pname;
|
||||
inherit version;
|
||||
|
||||
unpackPhase = ''
|
||||
runHook preUnpack
|
||||
|
||||
cp -r ${src} source
|
||||
chmod -R 755 source
|
||||
cp ${steamworksSrc}/redistributable_bin/linux64/libsteam_api.so source/
|
||||
|
||||
runHook postUnpack
|
||||
'';
|
||||
|
||||
sourceRoot = "source";
|
||||
|
||||
patches = [
|
||||
(replaceVars ./todds-path.patch { inherit todds; })
|
||||
(replaceVars ./steam-run.patch { inherit steam-run; })
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
todds
|
||||
steamfiles
|
||||
]
|
||||
++ builtins.attrValues {
|
||||
inherit (python3Packages)
|
||||
beautifulsoup4
|
||||
certifi
|
||||
chardet
|
||||
imageio
|
||||
loguru
|
||||
lxml
|
||||
msgspec
|
||||
natsort
|
||||
networkx
|
||||
packaging
|
||||
platformdirs
|
||||
psutil
|
||||
pygit2
|
||||
pygithub
|
||||
pyperclip
|
||||
pyside6
|
||||
requests
|
||||
sqlalchemy
|
||||
steam
|
||||
toposort
|
||||
watchdog
|
||||
xmltodict
|
||||
steamworkspy
|
||||
;
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
nativeCheckInputs = with python3Packages; [
|
||||
pytestCheckHook
|
||||
pytest-cov-stub
|
||||
pytest-qt
|
||||
pytest-xvfb
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
preCheck = ''
|
||||
export QT_DEBUG_PLUGINS=1
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
export HOME=$(mktemp -d) # Some tests require a writable directory
|
||||
'';
|
||||
|
||||
disabledTestPaths = [
|
||||
# requires network
|
||||
"tests/models/metadata/test_metadata_factory.py"
|
||||
];
|
||||
|
||||
pytestFlags = [ "--doctest-modules" ];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "RimSort";
|
||||
desktopName = "RimSort";
|
||||
exec = "rimsort";
|
||||
icon = "io.github.rimsort.rimsort";
|
||||
comment = "RimWorld Mod Manager";
|
||||
categories = [ "Game" ];
|
||||
})
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/rimsort
|
||||
cp -r ./* $out/lib/rimsort/
|
||||
|
||||
mkdir -p $out/bin
|
||||
|
||||
makeBinaryWrapper \
|
||||
${python3Packages.python.interpreter} \
|
||||
$out/bin/rimsort \
|
||||
--add-flags "-m app" \
|
||||
--chdir $out/lib/rimsort \
|
||||
--prefix PYTHONPATH : "$PYTHONPATH" \
|
||||
--set RIMSORT_DISABLE_UPDATER 1
|
||||
|
||||
install -D ./themes/default-icons/AppIcon_a.png $out/share/icons/hicolor/512x512/apps/io.github.rimsort.rimsort
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Open source mod manager for the video game RimWorld";
|
||||
homepage = "https://github.com/RimSort/RimSort";
|
||||
license = with lib.licenses; [
|
||||
gpl3Only
|
||||
# For libsteam_api.so
|
||||
(
|
||||
unfreeRedistributable
|
||||
// {
|
||||
url = "https://partner.steamgames.com/documentation/sdk_access_agreement";
|
||||
}
|
||||
)
|
||||
];
|
||||
maintainers = with lib.maintainers; [ weirdrock ];
|
||||
mainProgram = "rimsort";
|
||||
# steamworksSrc is x86_64-linux only
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
diff --git a/app/utils/generic.py b/app/utils/generic.py
|
||||
--- a/app/utils/generic.py
|
||||
+++ b/app/utils/generic.py
|
||||
@@ -255,7 +255,7 @@
|
||||
popen_args.extend(args)
|
||||
p = subprocess.Popen(popen_args)
|
||||
else:
|
||||
- popen_args = [executable_path]
|
||||
+ popen_args = ["@steam-run@/bin/steam-run", executable_path]
|
||||
popen_args.extend(args)
|
||||
|
||||
if sys.platform == "win32":
|
||||
diff --git a/app/utils/steam/steamcmd/wrapper.py b/app/utils/steam/steamcmd/wrapper.py
|
||||
--- a/app/utils/steam/steamcmd/wrapper.py
|
||||
+++ b/app/utils/steam/steamcmd/wrapper.py
|
||||
@@ -316,8 +316,8 @@
|
||||
script_output.write("\n".join(script))
|
||||
runner.message(f"Compiled & using script: {script_path}")
|
||||
runner.execute(
|
||||
- self.steamcmd,
|
||||
- [f'+runscript "{script_path}"'],
|
||||
+ "@steam-run@/bin/steam-run",
|
||||
+ [self.steamcmd, f'+runscript "{script_path}"'],
|
||||
len(publishedfileids),
|
||||
)
|
||||
else:
|
||||
@@ -0,0 +1,17 @@
|
||||
diff --git a/app/utils/todds/wrapper.py b/app/utils/todds/wrapper.py
|
||||
index a239fe0..3375b70 100644
|
||||
--- a/app/utils/todds/wrapper.py
|
||||
+++ b/app/utils/todds/wrapper.py
|
||||
@@ -66,11 +66,7 @@ class ToddsInterface:
|
||||
:param todds_arguments: list of todds args to be passed to the todds executable
|
||||
"""
|
||||
|
||||
- if self.system == "Windows":
|
||||
- todds_executable = "todds.exe"
|
||||
- else:
|
||||
- todds_executable = "todds"
|
||||
- todds_exe_path = str(AppInfo().application_folder / "todds" / todds_executable)
|
||||
+ todds_exe_path = "@todds@/bin/todds"
|
||||
logger.info("Checking for todds...")
|
||||
if os.path.exists(todds_exe_path):
|
||||
logger.debug(f"Found todds executable at: {todds_exe_path}")
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
gevent,
|
||||
|
||||
pytestCheckHook,
|
||||
|
||||
setuptools,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "gevent-eventemitter";
|
||||
version = "2.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rossengeorgiev";
|
||||
repo = "gevent-eventemitter";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-aW4OsQi3N5yAMdbTd8rxbb2qYMfFJBR4WQFIXvxpiMw=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
gevent
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "EventEmitter using gevent";
|
||||
homepage = "https://github.com/rossengeorgiev/gevent-eventemitter";
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [ weirdrock ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
six,
|
||||
pycryptodomex,
|
||||
requests,
|
||||
urllib3,
|
||||
vdf,
|
||||
gevent,
|
||||
protobuf,
|
||||
gevent-eventemitter,
|
||||
cachetools,
|
||||
setuptools,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "steam";
|
||||
version = "1.4.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ValvePython";
|
||||
repo = "steam";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-OY04GsX3KMPvpsQl8sUurzFyJu+JKpES8B0iD6Z5uyw=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
six
|
||||
pycryptodomex
|
||||
requests
|
||||
urllib3
|
||||
vdf
|
||||
gevent
|
||||
protobuf
|
||||
gevent-eventemitter
|
||||
cachetools
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Python package for interacting with Steam";
|
||||
homepage = "https://github.com/ValvePython/steam";
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [ weirdrock ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
lib,
|
||||
fetchzip,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
setuptools,
|
||||
}:
|
||||
let
|
||||
rev = "26780de81b8c14d48fe8d757c642086f2af2a66b";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "philippj";
|
||||
repo = "SteamworksPy";
|
||||
inherit rev;
|
||||
hash = "sha256-nSGkEP6tny/Kv2+YjldFCYrLe1jnKOTa+w1/KCpSLsU=";
|
||||
|
||||
};
|
||||
steamworksSrc = fetchzip {
|
||||
url = "https://web.archive.org/web/20250527013243/https://partner.steamgames.com/downloads/steamworks_sdk_162.zip";
|
||||
hash = "sha256-yDA92nGj3AKTNI4vnoLaa+7mDqupQv0E4YKRRUWqyZw=";
|
||||
};
|
||||
|
||||
library = stdenv.mkDerivation {
|
||||
pname = "steamworkspy-c";
|
||||
version = rev;
|
||||
|
||||
unpackPhase = ''
|
||||
runHook preUnpack
|
||||
|
||||
cp -r ${src} source
|
||||
chmod -R 755 source
|
||||
cp -r ${steamworksSrc}/public/steam source/library/sdk/
|
||||
cp ${steamworksSrc}/redistributable_bin/linux64/libsteam_api.so source/library/
|
||||
|
||||
runHook postUnpack
|
||||
'';
|
||||
|
||||
sourceRoot = "source/library";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp SteamworksPy.so $out/
|
||||
'';
|
||||
};
|
||||
in
|
||||
|
||||
buildPythonPackage {
|
||||
pname = "steamworkspy";
|
||||
version = rev;
|
||||
pyproject = true;
|
||||
|
||||
inherit src;
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
postInstall = ''
|
||||
cp ${library}/SteamworksPy.so $out/lib
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Python API system for Valve's Steamworks";
|
||||
homepage = "https://github.com/philippj/SteamworksPy";
|
||||
license = with lib.licenses; [
|
||||
mit
|
||||
# For steamworks headers and libsteamapi.so
|
||||
(
|
||||
unfreeRedistributable
|
||||
// {
|
||||
url = "https://partner.steamgames.com/documentation/sdk_access_agreement";
|
||||
}
|
||||
)
|
||||
];
|
||||
# steamworksSrc is x86_64-linux only
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with lib.maintainers; [ weirdrock ];
|
||||
};
|
||||
}
|
||||
@@ -5757,6 +5757,8 @@ self: super: with self; {
|
||||
|
||||
gevent = callPackage ../development/python-modules/gevent { };
|
||||
|
||||
gevent-eventemitter = callPackage ../development/python-modules/gevent-eventemitter { };
|
||||
|
||||
gevent-socketio = callPackage ../development/python-modules/gevent-socketio { };
|
||||
|
||||
gevent-websocket = callPackage ../development/python-modules/gevent-websocket { };
|
||||
@@ -17247,10 +17249,14 @@ self: super: with self; {
|
||||
|
||||
stdlibs = callPackage ../development/python-modules/stdlibs { };
|
||||
|
||||
steam = callPackage ../development/python-modules/steam { };
|
||||
|
||||
steamodd = callPackage ../development/python-modules/steamodd { };
|
||||
|
||||
steamship = callPackage ../development/python-modules/steamship { };
|
||||
|
||||
steamworkspy = callPackage ../development/python-modules/steamworkspy { };
|
||||
|
||||
stem = callPackage ../development/python-modules/stem { };
|
||||
|
||||
stemming = callPackage ../development/python-modules/stemming { };
|
||||
|
||||
Reference in New Issue
Block a user