tome: aspnetcore runtime, gapps wrapping, glib at runtime
Three separate reasons the packaged build didn't behave like the one Rider launches: - dotnet-runtime must be aspnetcore_10_0, not runtime_10_0. Tome.App's runtimeconfig.json requires Microsoft.AspNetCore.App as well as Microsoft.NETCore.App, because Photino hosts a local Kestrel server, and only the aspnetcore bundle ships it. - wrapGAppsHook3, so gappsWrapperArgs get spliced into buildDotnetModule's own wrap step (it sets dontWrapGApps itself; same pattern as nixpkgs' libation). Without it nothing sets XDG_DATA_DIRS/GSETTINGS_SCHEMA_DIR, so GTK/WebKitGTK found neither the icon theme nor GTK settings — missing icons and a denser default font than in an already-initialized session. - glib in runtimeDeps. It doesn't arrive via gtk3/webkitgtk's RPATH because the consumer is Photino.Native.so, a prebuilt binary out of the nuget package rather than something Nix built and patched. tome-deps.json is the regenerated nuget lock for the aspnetcore switch. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+20
-20
@@ -41,23 +41,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.AspNetCore.App.Ref",
|
"pname": "Microsoft.AspNetCore.App.Ref",
|
||||||
"version": "8.0.27",
|
"version": "8.0.29",
|
||||||
"hash": "sha256-nwBrMFATFwpJS1iq9Bf+vvWQ1dDGergMuY809tUqo60="
|
"hash": "sha256-0wK5Lsa4a1ani/gvSzsqyuY3R4MBuH/9XOyZeWCUWoU="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.AspNetCore.App.Ref",
|
"pname": "Microsoft.AspNetCore.App.Ref",
|
||||||
"version": "9.0.16",
|
"version": "9.0.18",
|
||||||
"hash": "sha256-lBbgyPyZOrPsRMtd0UOHJuB5dbMQFysVIk4RAFx2Rk0="
|
"hash": "sha256-0qkb9Gbxlyyw8rKxDTm9OqdW89DIi1qolGK85HLwc2k="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.AspNetCore.App.Runtime.linux-x64",
|
"pname": "Microsoft.AspNetCore.App.Runtime.linux-x64",
|
||||||
"version": "8.0.27",
|
"version": "8.0.29",
|
||||||
"hash": "sha256-7DX4XBTx8a6sFRnTrJ3zJhJzQVC81OwzOZnYOo+nO20="
|
"hash": "sha256-iiDWZa7MkybKwozVKIV4Eq0PGzirxeyjFLnoxPyAHiQ="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.AspNetCore.App.Runtime.linux-x64",
|
"pname": "Microsoft.AspNetCore.App.Runtime.linux-x64",
|
||||||
"version": "9.0.16",
|
"version": "9.0.18",
|
||||||
"hash": "sha256-JDdPuh01rffoWnKekJU34/QKWFFnyTljmqq6DM5vYs8="
|
"hash": "sha256-ETNi+pMo8nNSgHMLKgi/VFMla/duHI2CQlJlm1FdyKc="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.Bcl.TimeProvider",
|
"pname": "Microsoft.Bcl.TimeProvider",
|
||||||
@@ -216,33 +216,33 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.NETCore.App.Host.linux-x64",
|
"pname": "Microsoft.NETCore.App.Host.linux-x64",
|
||||||
"version": "8.0.27",
|
"version": "8.0.29",
|
||||||
"hash": "sha256-ZI5ByoSqJIcQAnH1dyGcK8uyvPB7yUNznD6BLY2V8Hs="
|
"hash": "sha256-T/eXkzT3V3T1Yasc1cUZ/jLOWJY3zp/GxJTCT24gnAw="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.NETCore.App.Host.linux-x64",
|
"pname": "Microsoft.NETCore.App.Host.linux-x64",
|
||||||
"version": "9.0.16",
|
"version": "9.0.18",
|
||||||
"hash": "sha256-HaIx6pwpKUwdseu3tOhuVtqnpGCubhWbi9BEvijHd+M="
|
"hash": "sha256-h36uAGfY36RKon6QU3lP3tsVlMVZ842lvdGiLcHO7Ko="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.NETCore.App.Ref",
|
"pname": "Microsoft.NETCore.App.Ref",
|
||||||
"version": "8.0.27",
|
"version": "8.0.29",
|
||||||
"hash": "sha256-F/FL0ptluwCfxN4S93/UAKs4fRtyL+D4NoSPc5CGyJo="
|
"hash": "sha256-dxAuEUU1VOElQ4CpL9HLhV4KVFtRDAcZS8W0GT2Di6g="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.NETCore.App.Ref",
|
"pname": "Microsoft.NETCore.App.Ref",
|
||||||
"version": "9.0.16",
|
"version": "9.0.18",
|
||||||
"hash": "sha256-VLwChaPID3roiQw6qU8IuPaUOPAHl3wzCIjVtG4D6ZM="
|
"hash": "sha256-ZFU4lXz/BjJiqU4sykZEYR5j5e745KMf4ZPo0GHnicU="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.NETCore.App.Runtime.linux-x64",
|
"pname": "Microsoft.NETCore.App.Runtime.linux-x64",
|
||||||
"version": "8.0.27",
|
"version": "8.0.29",
|
||||||
"hash": "sha256-GejthwcyJAmNTFvWEZXis6lRM2sJyNrKHYsq79Fn/WI="
|
"hash": "sha256-eA5x9NMfCg6JhRmOKKqfBL8+TwtQW/1ONvJeANPJOFA="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.NETCore.App.Runtime.linux-x64",
|
"pname": "Microsoft.NETCore.App.Runtime.linux-x64",
|
||||||
"version": "9.0.16",
|
"version": "9.0.18",
|
||||||
"hash": "sha256-3nDEdBN1jHIy2PiLffnE4+Snt7MiGP2hEDEi924DXww="
|
"hash": "sha256-DV5iYmqH8j7JIcem8Qu/HLbZuHPVmaTTQuZc8OoDZBk="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pname": "Microsoft.SourceLink.Common",
|
"pname": "Microsoft.SourceLink.Common",
|
||||||
|
|||||||
+18
-2
@@ -3,11 +3,13 @@
|
|||||||
, buildNpmPackage
|
, buildNpmPackage
|
||||||
, importNpmLock
|
, importNpmLock
|
||||||
, dotnetCorePackages
|
, dotnetCorePackages
|
||||||
|
, glib
|
||||||
, gtk3
|
, gtk3
|
||||||
, webkitgtk_4_1
|
, webkitgtk_4_1
|
||||||
, libnotify
|
, libnotify
|
||||||
, makeDesktopItem
|
, makeDesktopItem
|
||||||
, copyDesktopItems
|
, copyDesktopItems
|
||||||
|
, wrapGAppsHook3
|
||||||
, src
|
, src
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -45,15 +47,29 @@ buildDotnetModule (finalAttrs: {
|
|||||||
nugetDeps = ./tome-deps.json;
|
nugetDeps = ./tome-deps.json;
|
||||||
|
|
||||||
dotnet-sdk = dotnetCorePackages.sdk_10_0;
|
dotnet-sdk = dotnetCorePackages.sdk_10_0;
|
||||||
dotnet-runtime = dotnetCorePackages.runtime_10_0;
|
# aspnetcore_10_0, not runtime_10_0: Tome.App's runtimeconfig.json requires
|
||||||
|
# both Microsoft.NETCore.App AND Microsoft.AspNetCore.App (Photino hosts a
|
||||||
|
# local Kestrel server), and only the aspnetcore bundle ships the latter.
|
||||||
|
dotnet-runtime = dotnetCorePackages.aspnetcore_10_0;
|
||||||
|
|
||||||
dotnetFlags = [ "-p:SkipNpmBuild=true" ];
|
dotnetFlags = [ "-p:SkipNpmBuild=true" ];
|
||||||
|
|
||||||
executables = [ "Tome.App" ];
|
executables = [ "Tome.App" ];
|
||||||
|
|
||||||
nativeBuildInputs = [ copyDesktopItems ];
|
# wrapGAppsHook3: buildDotnetModule sets dontWrapGApps = true by default (to
|
||||||
|
# avoid double-wrapping) but its own wrap step still splices gappsWrapperArgs
|
||||||
|
# in when the hook is present (see nixpkgs' libation package, same pattern).
|
||||||
|
# Without it the binary never gets XDG_DATA_DIRS/GSETTINGS_SCHEMA_DIR set, so
|
||||||
|
# GTK/WebKitGTK can't find the icon theme or GTK settings from the desktop
|
||||||
|
# session — symptoms: missing icons and a denser default UI font/size than
|
||||||
|
# when launched from an already-fully-initialized session (e.g. via Rider).
|
||||||
|
nativeBuildInputs = [ copyDesktopItems wrapGAppsHook3 ];
|
||||||
|
|
||||||
runtimeDeps = [
|
runtimeDeps = [
|
||||||
|
# glib: not pulled in via gtk3/webkitgtk's own RPATH here, because the
|
||||||
|
# thing that needs it — Photino.Native.so — is a prebuilt binary shipped
|
||||||
|
# in the Photino.Native nuget package, not something Nix built/patched.
|
||||||
|
glib
|
||||||
gtk3
|
gtk3
|
||||||
webkitgtk_4_1
|
webkitgtk_4_1
|
||||||
libnotify
|
libnotify
|
||||||
|
|||||||
Reference in New Issue
Block a user