From b7ff65accfa86a6f5fea9aa26f695936030d2e07 Mon Sep 17 00:00:00 2001 From: Frank LoTurco Date: Thu, 6 Aug 2026 16:26:10 -0400 Subject: [PATCH] packages: add undertale-mod-tool avalonia cusotm package --- hosts/shared/nixos.nix | 1 + packages/undertale-mod-tool/deps.json | 312 ++++++++++++++++++++++++ packages/undertale-mod-tool/package.nix | 122 +++++++++ 3 files changed, 435 insertions(+) create mode 100644 packages/undertale-mod-tool/deps.json create mode 100644 packages/undertale-mod-tool/package.nix diff --git a/hosts/shared/nixos.nix b/hosts/shared/nixos.nix index 5d50576..adfcfa1 100644 --- a/hosts/shared/nixos.nix +++ b/hosts/shared/nixos.nix @@ -188,6 +188,7 @@ in dotnet-sdk dotnet-runtime dotnet-runtime_8 + dotnet-runtime_10 ]; }; diff --git a/packages/undertale-mod-tool/deps.json b/packages/undertale-mod-tool/deps.json new file mode 100644 index 0000000..cf98a5a --- /dev/null +++ b/packages/undertale-mod-tool/deps.json @@ -0,0 +1,312 @@ +[ + { + "pname": "Avalonia", + "version": "12.1.0", + "hash": "sha256-G824thlSx6grixZdFX0yonwGXQYequFLwFAyhEyuPzk=" + }, + { + "pname": "Avalonia.Angle.Windows.Natives", + "version": "2.1.27548.20260419", + "hash": "sha256-dtZ5AQl+kXPRVe/EwrfSyOMSLywuBBUCjrDIhHijhvk=" + }, + { + "pname": "Avalonia.AvaloniaEdit", + "version": "12.0.0", + "hash": "sha256-DDopKuyhufekxFDxV39vqjQSbldUKRTHiXTZ4woe2eE=" + }, + { + "pname": "Avalonia.BuildServices", + "version": "11.3.2", + "hash": "sha256-6wx06tjSKWQOlX2czdp6Wh0nuwVapx5qf/s8Qj5we40=" + }, + { + "pname": "Avalonia.Controls.ColorPicker", + "version": "12.1.0", + "hash": "sha256-oq1powrap87bypo0K2APlecS1AGxS/9s4MGAlyLLVpo=" + }, + { + "pname": "Avalonia.Controls.DataGrid", + "version": "12.1.0", + "hash": "sha256-ivrjda3meZJMpoCglss5cYXxeldsR8li76tILwNQO/g=" + }, + { + "pname": "Avalonia.Desktop", + "version": "12.1.0", + "hash": "sha256-bKqjBBIqTmFJ6qX4HHzHUM0B8qWOL6bQWX+FSkDEHI0=" + }, + { + "pname": "Avalonia.FreeDesktop", + "version": "12.1.0", + "hash": "sha256-ba4NDAxe4kp8TooGwws1HekMdF9MBezHbsYZb2Agjt4=" + }, + { + "pname": "Avalonia.FreeDesktop.AtSpi", + "version": "12.1.0", + "hash": "sha256-3CVUOuKLXjTvcEYozutyX/gLmjM5TsE69pSKM1CBaqE=" + }, + { + "pname": "Avalonia.HarfBuzz", + "version": "12.1.0", + "hash": "sha256-0uxtp+KmAFQz78Szvxa4hwo/vLNSkdgvcCynpaSeCjQ=" + }, + { + "pname": "Avalonia.Markup.Xaml.Loader", + "version": "12.1.0", + "hash": "sha256-P05Q1d4malCTuBqEHePfjcKFgqnz1SmmxjPzypshVDk=" + }, + { + "pname": "Avalonia.Native", + "version": "12.1.0", + "hash": "sha256-fshmU1Px5n8nRGmKKevLi0zPgyZJSNF3N0bqdiYQFPg=" + }, + { + "pname": "Avalonia.Remote.Protocol", + "version": "12.1.0", + "hash": "sha256-PXrrCyFLIdrcEnNUz2ZzjFjs65hVaxEm5h/ux8tOo0k=" + }, + { + "pname": "Avalonia.Skia", + "version": "12.1.0", + "hash": "sha256-6f/isIqnWUCEeWlfooN32tkbi78DKdBBuTka70br9U4=" + }, + { + "pname": "Avalonia.Themes.Fluent", + "version": "12.1.0", + "hash": "sha256-lvDXmhWLaB20IzRXKdrl6lTEF86nNd9MbZ7FspDK0wc=" + }, + { + "pname": "Avalonia.Win32", + "version": "12.1.0", + "hash": "sha256-eU0pezq/1PLB/iDGDt9NWn183uSr29P3Nr58vYsQztM=" + }, + { + "pname": "Avalonia.X11", + "version": "12.1.0", + "hash": "sha256-n2QWzUw5UsDtMEHI/MSkbPFucdStdz/1gLDqVR5zW/A=" + }, + { + "pname": "AvaloniaEdit.TextMate", + "version": "12.0.0", + "hash": "sha256-LEmuy0CF8zQiChzpv3kLJZMUhRQo4u7/+yu4ls0BkPk=" + }, + { + "pname": "CommunityToolkit.Mvvm", + "version": "8.4.2", + "hash": "sha256-jLS1vo6V+fHsJs80HYT77oJE6IEC68fIgkLpYODjWAU=" + }, + { + "pname": "Fody", + "version": "6.9.3", + "hash": "sha256-JLom3mbO4NCUXDHoU86l720QXlRx52+ROb5wBwcC5nM=" + }, + { + "pname": "HarfBuzzSharp", + "version": "8.3.1.3", + "hash": "sha256-/+ZEhjpOs8B4tMPw3vDyuQqGGZHJEWvy3WaKMaDwmrU=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.Linux", + "version": "8.3.1.3", + "hash": "sha256-feWOna/8ncvmrq7CxnDczv1facV2poZV5R+OyCtocpU=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.macOS", + "version": "8.3.1.3", + "hash": "sha256-6WKsJ/jF9pHnaWcQvaezc5AV6flu3XsOxQs7i4BGYJs=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.WebAssembly", + "version": "8.3.1.3", + "hash": "sha256-arBiI82fXPjAqftqnG7Wc3BRzZ6+vKd7b58vQSWJVk0=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.Win32", + "version": "8.3.1.3", + "hash": "sha256-WNUQmLWVFSwBKT9x7UdhSz9T2FA7wibvwjuPew/3yUM=" + }, + { + "pname": "Magick.NET-Q8-AnyCPU", + "version": "14.15.0", + "hash": "sha256-rzsySipyIu0sqGbRywGUoPly04ZkgWu1WHYJLdz/R8M=" + }, + { + "pname": "Magick.NET.Core", + "version": "14.15.0", + "hash": "sha256-ekZGCFewYrB7zzarJ4N51F+B+4xyPUXULc8EuNMu8y0=" + }, + { + "pname": "MicroCom.Runtime", + "version": "0.11.6", + "hash": "sha256-RTr200R3sZuyxi0XQ25ox2p1kVt5R1CbH/YBs21+eNg=" + }, + { + "pname": "Microsoft.Bcl.AsyncInterfaces", + "version": "10.0.9", + "hash": "sha256-grzyENbFc7Ct0dgmUgSn1Tr3ndM1fdlQGiSBLzYtC9c=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "5.3.0", + "hash": "sha256-eUjU7MDekcbDQxUButcWK7siHx6HmrgdDMLnpGYRVLM=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "5.6.0", + "hash": "sha256-Q+34cKCUHLMUdigLSuCunqcpAzagynq7O6LJ09EPu6g=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp", + "version": "5.6.0", + "hash": "sha256-nrzGZk9oLuCEvhDT+IS+XBVOuHVrwL8RGj0rZFP4SRo=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.Scripting", + "version": "5.6.0", + "hash": "sha256-p9JX0s8zY1+ZfBGHe/geWvMlNwCsOqWubs7nDXT6mmc=" + }, + { + "pname": "Microsoft.CodeAnalysis.Scripting.Common", + "version": "5.6.0", + "hash": "sha256-qbH8tUlbfRcaRD5xIPBfRHannv/9vibd/6VaRqhAaGw=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection", + "version": "10.0.10", + "hash": "sha256-SZDbEORdMQa+Zg9F29lP5By7jaT5b9XLj8LAx7j1EZA=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "10.0.10", + "hash": "sha256-2r+Qvd0u3zODfQ1NAL+qu+W5XGaqJjm31bG6SGJKZn0=" + }, + { + "pname": "NETStandard.Library.Ref", + "version": "2.1.0", + "hash": "sha256-Ruovy9EKgXaFuFr3zgw5fRKUS9yBIJ4nLeHgXv0zx4o=" + }, + { + "pname": "Onigwrap", + "version": "1.0.10", + "hash": "sha256-x1TJeOdANiWDdwgN+GsFznHMgPUnq/6iSN0BlIt0QJM=" + }, + { + "pname": "PropertyChanged.Fody", + "version": "4.1.0", + "hash": "sha256-SAId/w7y5RZqMnpnJ6nmMjaPXQIr2h6QsRKZ4yuoYYU=" + }, + { + "pname": "SDL3-CS", + "version": "3.4.12.3", + "hash": "sha256-9UT8oE8M3VTIA7uOtayZSNAvA+XI6fEW9mFkB9AMAds=" + }, + { + "pname": "SDL3-CS.Linux", + "version": "3.4.12.1", + "hash": "sha256-JimlbIjGhwBl1sMAJWSrezfchuRT8Ckod9YCpHuZIDQ=" + }, + { + "pname": "SDL3-CS.Linux.Mixer", + "version": "3.2.4.7", + "hash": "sha256-rC5wHSBtrULfSJJN1ADeJS0yfU4FQ+KkZPw1pDkMvhs=" + }, + { + "pname": "SDL3-CS.MacOS", + "version": "3.4.12.1", + "hash": "sha256-8DDNP7vV0CyF3zcyJu5zew5V/+yu7gVV3fXLhG0Lmog=" + }, + { + "pname": "SDL3-CS.MacOS.Mixer", + "version": "3.2.4.7", + "hash": "sha256-BfA5lAczIeFzlpnXSkn7U7yAYP14P86h2JnmieskKtI=" + }, + { + "pname": "SDL3-CS.Windows", + "version": "3.4.12.1", + "hash": "sha256-vxV9ugWZMRWx0rsnbzcW+CRNK0pTBFl88sy9PJoZrTM=" + }, + { + "pname": "SDL3-CS.Windows.Mixer", + "version": "3.2.4.7", + "hash": "sha256-AramqrgeWC7EHT7S23gZ23I7+6y4UbP4JTYB+7uOCLE=" + }, + { + "pname": "SharpZipLib", + "version": "1.4.2", + "hash": "sha256-/giVqikworG2XKqfN9uLyjUSXr35zBuZ2FX2r8X/WUY=" + }, + { + "pname": "SkiaSharp", + "version": "4.150.1", + "hash": "sha256-Kda85aDEECz51qD3JqUPOaG3Hthrp38Byn6zJWFa1KA=" + }, + { + "pname": "SkiaSharp.NativeAssets.Linux", + "version": "4.150.1", + "hash": "sha256-zIgOIv6PW+w6gr2NOqA5R6ruX4GB2nammKJf8TvBFRg=" + }, + { + "pname": "SkiaSharp.NativeAssets.macOS", + "version": "4.150.1", + "hash": "sha256-NYTJvHOfHAOjKqqwBiVSjsy1MiM2cm6NxXAnzcS09vg=" + }, + { + "pname": "SkiaSharp.NativeAssets.WebAssembly", + "version": "3.119.4", + "hash": "sha256-xLfsWBsFFpv5Qg79GIMi+5CM6YDfcg//oywNlB5Y3J0=" + }, + { + "pname": "SkiaSharp.NativeAssets.Win32", + "version": "4.150.1", + "hash": "sha256-HhcG5jO8CCTsybT2XLNe7chmsc21JyXp0/9NyQ1Fvvo=" + }, + { + "pname": "System.IO.Pipelines", + "version": "10.0.9", + "hash": "sha256-mOoa73lPXvGGA56igef9alNU/nc+nQEOHPJu44dHepc=" + }, + { + "pname": "System.Reactive", + "version": "5.0.0", + "hash": "sha256-M5Z8pw8rVb8ilbnTdaOptzk5VFd5DlKa7zzCpuytTtE=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "6.1.2", + "hash": "sha256-X2p/U680Zfkr622oc+vg5JYgbDEzE7mLre5DVaayWTc=" + }, + { + "pname": "System.Text.Encodings.Web", + "version": "10.0.9", + "hash": "sha256-YBpgyDvUYB44J84TtkIJkDh4c42grtn9fmxgV073FxQ=" + }, + { + "pname": "System.Text.Json", + "version": "10.0.9", + "hash": "sha256-7LNfBJ5Q/yxOuFa6d0mEIBNJEfO/UN5J13qbIFIo/5A=" + }, + { + "pname": "TextMateSharp", + "version": "2.0.3", + "hash": "sha256-mYZPeBWt2ek3I7oSRiXcOqcpQMjEbD6wR5CtHIHSLko=" + }, + { + "pname": "TextMateSharp.Grammars", + "version": "2.0.3", + "hash": "sha256-DiYxCPBg0jPcdlhduTMlCWOOY9Mc77Qt/aCGEPEgFEQ=" + }, + { + "pname": "Tmds.DBus.Protocol", + "version": "0.94.1", + "hash": "sha256-T3HQasQOcl/7zxt5hT3ZMhhpWoTyPTb6/IX0d6TJWA8=" + }, + { + "pname": "TreeDataGrid", + "version": "12.0.0", + "hash": "sha256-aaHSfvhaVik9XLYLpp0N9PxRe4GG1BTigWNMV3Qlc7g=" + }, + { + "pname": "Xaml.Behaviors", + "version": "12.0.5", + "hash": "sha256-bjX7WNXVabvB2ZYCLVp4rnVO5CKz+8NKtVvpAnDw97o=" + } +] diff --git a/packages/undertale-mod-tool/package.nix b/packages/undertale-mod-tool/package.nix new file mode 100644 index 0000000..cdb0325 --- /dev/null +++ b/packages/undertale-mod-tool/package.nix @@ -0,0 +1,122 @@ +{ + lib, + buildDotnetModule, + fetchFromGitHub, + dotnetCorePackages, + autoPatchelfHook, + stdenv, + sdl3, + fontconfig, + libglvnd, + mesa, + sndio, + libGL, + libx11, + libice, + libsm, + libxcursor, + libxrandr, + libxft, + vulkan-headers, + vulkan-loader, +}: +let + rev = "eec5e7d07b63cb4caf82250914dba8ddd4044bbb"; + + buildDotnetModule' = buildDotnetModule.override { + addNuGetDeps = dotnetCorePackages.addNuGetDeps.override { + fetchNupkg = + let + baseOverrides = builtins.removeAttrs dotnetCorePackages.fetchNupkg.overrides or { } [ ]; + in + dotnetCorePackages.fetchNupkg.override { + overrides = baseOverrides // { + "SkiaSharp.NativeAssets.Linux" = + package: + package.overrideAttrs ( + old: + lib.optionalAttrs stdenv.hostPlatform.isLinux { + autoPatchelfIgnoreMissingDeps = (old.autoPatchelfIgnoreMissingDeps or [ ]) ++ [ + "libc.musl-x86_64.so.1" + ]; + } + ); + }; + }; + }; + }; +in +buildDotnetModule' { + pname = "undertale-mod-tool"; + version = "8.9.10"; + + src = fetchFromGitHub { + owner = "luizzeroxis"; + repo = "UndertaleModTool"; + inherit rev; + hash = "sha256-QLQZC5C3o9U2PC+rZWfKFbul7BaIHxbu9u8AZaKFtmI="; + fetchSubmodules = true; + }; + + projectFile = "UndertaleModToolAvalonia/UndertaleModToolAvalonia.csproj"; + nugetDeps = ./deps.json; + dotnet-sdk = dotnetCorePackages.sdk_10_0; + executables = [ "UndertaleModToolAvalonia" ]; + + autoPatchelfIgnoreMissingDeps = [ + "libsteam_api.so" + "libGLES_CM.so.1" + ]; + + nativeBuildInputs = [ autoPatchelfHook ]; + + buildInputs = [ + stdenv.cc.cc.lib # provides libstdc++.so.6 + fontconfig + sdl3 + libx11 + libglvnd + libGL + mesa + sndio + vulkan-headers + vulkan-loader + ]; + + runtimeDependencies = [ + stdenv.cc.cc.lib + libx11 + sdl3 + ]; + + runtimeDeps = [ + sdl3 + libx11 + libxcursor + libice + libsm + libxrandr + libxft + fontconfig + ]; + + dotnetBuildFlags = [ + "-p:BuildHash=${rev}" + "-p:PublishSingleFile=false" + "/p:RuntimeIdentifier=" + "--no-self-contained" + ]; + + postInstall = '' + # Disable this temporarily + #ln -s $out/bin/UndertaleModToolAvalonia $out/bin/undertalemodtool + ''; + + meta = with lib; { + description = "Avalonia cross-platform GUI port of UndertaleModTool"; + homepage = "https://github.com/luizzeroxis/UndertaleModTool/tree/avalonia"; + license = licenses.gpl3Only; + platforms = platforms.linux; + mainProgram = "undertalemodtool"; + }; +}