diff --git a/pkgs/by-name/ne/nexusmods-app/package.nix b/pkgs/by-name/ne/nexusmods-app/package.nix index 1319e1f40166..35a6aa834ef2 100644 --- a/pkgs/by-name/ne/nexusmods-app/package.nix +++ b/pkgs/by-name/ne/nexusmods-app/package.nix @@ -2,7 +2,6 @@ _7zz, avalonia, buildDotnetModule, - copyDesktopItems, desktop-file-utils, dotnetCorePackages, fetchgit, @@ -51,7 +50,6 @@ buildDotnetModule (finalAttrs: { nativeCheckInputs = [ _7zz ]; nativeBuildInputs = [ - copyDesktopItems imagemagick # For resizing SVG icon in postInstall ]; @@ -75,11 +73,18 @@ buildDotnetModule (finalAttrs: { ]; postInstall = '' + ${lib.strings.toShellVars { + inherit (finalAttrs.meta) mainProgram; + INSTALL_EXEC = "\${INSTALL_EXEC}"; + INSTALL_TRYEXEC = "\${INSTALL_TRYEXEC}"; + }} + # Desktop entry # As per #308324, use mainProgram from PATH, instead of $out/bin/NexusMods.App install -D -m 444 -t $out/share/applications src/NexusMods.App/com.nexusmods.app.desktop substituteInPlace $out/share/applications/com.nexusmods.app.desktop \ - --replace-fail '${"$"}{INSTALL_EXEC}' "${finalAttrs.meta.mainProgram}" + --replace-fail "$INSTALL_EXEC" "$mainProgram" \ + --replace-fail "$INSTALL_TRYEXEC" "$mainProgram" # AppStream metadata install -D -m 444 -t $out/share/metainfo src/NexusMods.App/com.nexusmods.app.metainfo.xml @@ -143,6 +148,32 @@ buildDotnetModule (finalAttrs: { "NexusMods.Games.FOMOD.Tests.FomodXmlInstallerTests.InstallsFilesSimple_UsingRar" ]; + doInstallCheck = true; + + nativeInstallCheckInputs = [ + desktop-file-utils + ]; + + # Upstream use ${...} templates in the desktop entry, so assert that we haven't missed any + # See https://github.com/NixOS/nixpkgs/issues/421241 + installCheckPhase = '' + runHook preInstallCheck + + echo 'Checking for issues in $out/share/applications/com.nexusmods.app.desktop' + ( + cd $out/share/applications + desktop-file-validate com.nexusmods.app.desktop + if grep '\$' com.nexusmods.app.desktop \ + --with-filename --line-number + then + echo 'error: unexpected "$"' + exit 1 + fi + ) &>/dev/stderr + + runHook postInstallCheck + ''; + passthru.updateScript = nix-update-script { }; meta = {