Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nexusmods-app: init at 0.4.1 #270372

Merged
merged 1 commit into from
Jun 6, 2024
Merged

Conversation

l0b0
Copy link
Contributor

@l0b0 l0b0 commented Nov 27, 2023

Description of changes

From the project:

a mod installer, creator and manager for all your popular games

Closes #270358.

Name recommended by @erri120
#270372 (comment).

Replaces the 7zz binary executable included with the upstream project
for safety and reproducibility.

Requires an enableUnfree = true override to support RAR format mods.

Disables tests marked as requiring networking (actually requiring Nexus
Mods API key according to
Nexus-Mods/NexusMods.App#1222 (comment)),
and one other tests which requires networking.

To do

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 23.11 Release Notes (or backporting 23.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Priorities

Add a 👍 reaction to pull requests you find important.

@siph
Copy link
Member

siph commented Nov 27, 2023

You could use by-name and get rid of the changes in all-packages.nix.

@l0b0 l0b0 force-pushed the nexus-mods-app branch 3 times, most recently from 0b522f9 to 84d5e28 Compare November 30, 2023 22:35
@l0b0 l0b0 changed the title nexus-mods-app: init at 0.2.1 nexus-mods-app: init at 0.2.2 Dec 1, 2023
@l0b0 l0b0 requested a review from siph December 9, 2023 10:57
@l0b0 l0b0 marked this pull request as ready for review December 9, 2023 10:59
Copy link
Member

@siph siph left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This builds but I can't really get any functionality out of it although I may not be using it correctly. Most commands I've tried seem to fail. Trying to login fails:

00:00:00.112 [DEBUG] Running command: nexus-login
00:00:00.205 [ERROR] Error running command|System.ComponentModel.Win32Exception (2): Failed to start a process with file path 'update-desktop-database'. Target file or working directory doesn't exist, or the provided credentials are invalid. ---> System.ComponentModel.Win32Exception (2): An error occurred trying to start process 'update-desktop-database' with working directory '/nix/store/1p6q6kjgnmdnf3bjbp51vy1wb03jyn2d-nexus-mods-app-0.2.2/bin'. No such file or directory
   at System.Diagnostics.Process.ForkAndExecProcess(ProcessStartInfo startInfo, String resolvedFilename, String[] argv, String[] envp, String cwd, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at CliWrap.Utils.ProcessEx.Start() in /_/CliWrap/Utils/ProcessEx.cs:line 58
   at CliWrap.Utils.ProcessEx.Start() in /_/CliWrap/Utils/ProcessEx.cs:line 70
   at CliWrap.Command.ExecuteAsync(CancellationToken forcefulCancellationToken, CancellationToken gracefulCancellationToken) in /_/CliWrap/Command.Execution.cs:line 295
   at CliWrap.Command.ExecuteAsync(CancellationToken cancellationToken) in /_/CliWrap/Command.Execution.cs:line 314
   at NexusMods.Common.ProcessFactory.ExecuteAsync(Command command, CancellationToken cancellationToken) in /build/source/src/NexusMods.Common/ProcessFactory.cs:line 14
   at NexusMods.Common.ProtocolRegistration.ProtocolRegistrationLinux.Register(String protocol, String friendlyName, String workingDirectory, String commandLine) in /build/source/src/NexusMods.Common/ProtocolRegistration/ProtocolRegistrationLinux.cs:line 67
   at NexusMods.Common.ProtocolRegistration.ProtocolRegistrationLinux.RegisterSelf(String protocol) in /build/source/src/NexusMods.Common/ProtocolRegistration/ProtocolRegistrationLinux.cs:line 35
   at NexusMods.Networking.NexusWebApi.NMA.LoginManager.LoginAsync(CancellationToken token) in /build/source/src/Networking/NexusMods.Networking.NexusWebApi.NMA/LoginManager.cs:line 101
   at NexusMods.Networking.NexusWebApi.NMA.LoginVerbs.NexusLogin(LoginManager loginManager, CancellationToken token) in /build/source/src/Networking/NexusMods.Networking.NexusWebApi.NMA/LoginVerbs.cs:line 17
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Invocation.InvocationPipeline.<InvokeAsync>g__FullInvocationChainAsync|2_0(InvocationContext context)
   at System.CommandLine.Parsing.ParseResultExtensions.InvokeAsync(ParseResult parseResult, IConsole console)
   at System.CommandLine.Parsing.ParserExtensions.InvokeAsync(Parser parser, String[] args, IConsole console)
   at NexusMods.SingleProcess.CommandLineConfigurator.RunAsync(String[] args, IRenderer renderer, CancellationToken token)
   at NexusMods.App.StartupHandler.HandleCliCommandAsync(String[] args, IRenderer renderer, CancellationToken token) in /build/source/src/NexusMods.App/StartupHandler.cs:line 25

Registering an api key also fails:

00:00:00.095 [DEBUG] Running command: nexus-api-key -a *****
00:00:00.116 [ERROR] Error running command|System.InvalidOperationException: No service for type 'NexusMods.Networking.NexusWebApi.NMA.ApiKeyMessageFactory' has been registered.
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at NexusMods.SingleProcess.CommandLineConfigurator.<>c__DisplayClass7_1.<RunAsync>b__3(IServiceProvider _)
   at System.CommandLine.Invocation.ServiceProvider.GetService(Type serviceType)
   at System.CommandLine.Binding.BindingContext.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at NexusMods.SingleProcess.CommandLineConfigurator.<>c__DisplayClass5_0.<MakeRootCommand>b__0(InvocationContext ctx)
   at NexusMods.SingleProcess.CommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Invocation.InvocationPipeline.<InvokeAsync>g__FullInvocationChainAsync|2_0(InvocationContext context)
   at System.CommandLine.Parsing.ParseResultExtensions.InvokeAsync(ParseResult parseResult, IConsole console)
   at System.CommandLine.Parsing.ParserExtensions.InvokeAsync(Parser parser, String[] args, IConsole console)
   at NexusMods.SingleProcess.CommandLineConfigurator.RunAsync(String[] args, IRenderer renderer, CancellationToken token)
   at NexusMods.App.StartupHandler.HandleCliCommandAsync(String[] args, IRenderer renderer, CancellationToken token) in /build/source/src/NexusMods.App/StartupHandler.cs:line 25

I was also unable to add any games.

@l0b0
Copy link
Contributor Author

l0b0 commented Dec 9, 2023

This builds but I can't really get any functionality out of it although I may not be using it correctly. Most commands I've tried seem to fail.

Thank you so much for testing this with more commands! I'll try adding more tests to have a baseline which we can use to communicate upstream.

@l0b0 l0b0 force-pushed the nexus-mods-app branch 2 times, most recently from 6bd7e96 to bbe6ee5 Compare December 9, 2023 23:42
@l0b0
Copy link
Contributor Author

l0b0 commented Dec 9, 2023

From the project FAQ:

Do not ask for support for these tools until official announcements and a product launch is made.

So we should probably leave this as a draft PR until launch.

Feel free to add more tests or other improvements. AFAIK, we don't want tests which rely on third party services anywhere in nixpkgs, so we probably can't test login, unless there's a Nexus Mods server we can run as part of the test.

Update: This notice is gone, and @halgari has said "the app currently runs on Windows and Linux", so we can move on to adapt their build scripts to produce runnable commands.

@l0b0 l0b0 marked this pull request as draft December 9, 2023 23:48
@siph
Copy link
Member

siph commented Dec 10, 2023

tests which rely on third party services anywhere in nixpkgs

I didn't even think this was possible. Isn't everything sandboxed?

Also, after looking at this again, the failing commands still return 0 exit status (from the server itself I'm guessing) so I don't think these tests are even working correctly.

It looks like a cool app that could really improve the modding experience on Linux and NixOS especially. Please let me know if/when you pick this back up I would be happy to test it.

@l0b0 l0b0 force-pushed the nexus-mods-app branch 2 times, most recently from 2fc5b17 to 0b2847c Compare February 14, 2024 05:10
@l0b0 l0b0 changed the title nexus-mods-app: init at 0.2.2 nexus-mods-app: init at 0.3 Feb 14, 2024
@l0b0
Copy link
Contributor Author

l0b0 commented Feb 14, 2024

v0.3 in case someone wants to test it.

@siph
Copy link
Member

siph commented Feb 15, 2024

Still no luck for me.

This complains about skia.
nix run github:l0b0/nixpkgs/nexus-mods-app#nexus-mods-app:

00:00:00.127 [DEBUG] Starting UI window
00:00:00.133 [DEBUG] Using sqlite data store at /home/chris/.local/share/NexusMods.App/DataModel/DataModel.sqlite
00:00:00.314 [FATAL] Exception crashed the application!|System.TypeInitializationException: The type initializer for 'SkiaSharp.SKImageInfo' threw an exception.
 ---> System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
libfontconfig.so.1: cannot open shared object file: No such file or directory
/nix/store/jj2z9pz1y9p64apynww6mn7ipcbv5whm-dotnet-runtime-8.0.1/shared/Microsoft.NETCore.App/8.0.1/libSkiaSharp.so: cannot open shared object file: No such file or directory
/nix/store/ajw4lal6ibywj9yjf84lnc7ss0w4shn7-nexus-mods-app-0.3/lib/nexus-mods-app/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/nix/store/jj2z9pz1y9p64apynww6mn7ipcbv5whm-dotnet-runtime-8.0.1/shared/Microsoft.NETCore.App/8.0.1/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/nix/store/ajw4lal6ibywj9yjf84lnc7ss0w4shn7-nexus-mods-app-0.3/lib/nexus-mods-app/libSkiaSharp: cannot open shared object file: No such file or directory
/nix/store/jj2z9pz1y9p64apynww6mn7ipcbv5whm-dotnet-runtime-8.0.1/shared/Microsoft.NETCore.App/8.0.1/libSkiaSharp: cannot open shared object file: No such file or directory
/nix/store/ajw4lal6ibywj9yjf84lnc7ss0w4shn7-nexus-mods-app-0.3/lib/nexus-mods-app/liblibSkiaSharp: cannot open shared object file: No such file or directory
/nix/store/jj2z9pz1y9p64apynww6mn7ipcbv5whm-dotnet-runtime-8.0.1/shared/Microsoft.NETCore.App/8.0.1/liblibSkiaSharp: cannot open shared object file: No such file or directory

   at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
   at SkiaSharp.SKImageInfo..cctor()
   --- End of inner exception stack trace ---
   at Avalonia.Skia.PlatformRenderInterface..ctor(Nullable`1 maxResourceBytes)
   at Avalonia.Skia.SkiaPlatform.Initialize(SkiaOptions options)
   at Avalonia.SkiaApplicationExtensions.<>c.<UseSkia>b__0_0()
   at Avalonia.AppBuilder.SetupUnsafe()
   at Avalonia.AppBuilder.Setup()
   at Avalonia.AppBuilder.SetupWithLifetime(IApplicationLifetime lifetime)
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder builder, String[] args, Action`1 lifetimeBuilder)
   at NexusMods.App.Startup.Main(IServiceProvider provider, String[] args) in /build/source/src/NexusMods.App/Startup.cs:line 26
00:00:00.711 [DEBUG] Startup handler returned 0

I can't tell if this is trying to make a file or run one, but it also fails.
nix run github:l0b0/nixpkgs/nexus-mods-app#nexus-mods-app -- nexus-login

00:00:00.153 [DEBUG] Running command: nexus-login
00:00:00.172 [DEBUG] Using sqlite data store at /home/chris/.local/share/NexusMods.App/DataModel/DataModel.sqlite
00:00:00.248 [ERROR] Error running command|System.ComponentModel.Win32Exception (2): Failed to start a process with file path 'update-desktop-database'. Target file or working directory doesn't exist, or the provided credentials are invalid. ---> System.ComponentModel.Win32Exception (2): An error occurred trying to start process 'update-desktop-database' with working directory '/home/chris'. No such file or directory
   at System.Diagnostics.Process.ForkAndExecProcess(ProcessStartInfo startInfo, String resolvedFilename, String[] argv, String[] envp, String cwd, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at CliWrap.Utils.ProcessEx.Start() in /_/CliWrap/Utils/ProcessEx.cs:line 56
   at CliWrap.Utils.ProcessEx.Start() in /_/CliWrap/Utils/ProcessEx.cs:line 68
   at CliWrap.Command.ExecuteAsync(CancellationToken forcefulCancellationToken, CancellationToken gracefulCancellationToken) in /_/CliWrap/Command.Execution.cs:line 307
   at CliWrap.Command.ExecuteAsync(CancellationToken cancellationToken) in /_/CliWrap/Command.Execution.cs:line 326
   at NexusMods.CrossPlatform.Process.ProcessFactory.ExecuteAsync(Command command, CancellationToken cancellationToken) in /build/source/src/NexusMods.CrossPlatform/Process/ProcessFactory.cs:line 14
   at NexusMods.CrossPlatform.ProtocolRegistration.ProtocolRegistrationLinux.Register(String protocol, String friendlyName, String workingDirectory, String commandLine) in /build/source/src/NexusMods.CrossPlatform/ProtocolRegistration/ProtocolRegistrationLinux.cs:line 68
   at NexusMods.CrossPlatform.ProtocolRegistration.ProtocolRegistrationLinux.RegisterSelf(String protocol) in /build/source/src/NexusMods.CrossPlatform/ProtocolRegistration/ProtocolRegistrationLinux.cs:line 36
   at NexusMods.Networking.NexusWebApi.LoginManager.LoginAsync(CancellationToken token) in /build/source/src/Networking/NexusMods.Networking.NexusWebApi/LoginManager.cs:line 103
   at NexusMods.Networking.NexusWebApi.LoginVerbs.NexusLogin(LoginManager loginManager, CancellationToken token) in /build/source/src/Networking/NexusMods.Networking.NexusWebApi/LoginVerbs.cs:line 18
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Invocation.InvocationPipeline.<InvokeAsync>g__FullInvocationChainAsync|2_0(InvocationContext context)
   at System.CommandLine.Parsing.ParseResultExtensions.InvokeAsync(ParseResult parseResult, IConsole console)
   at System.CommandLine.Parsing.ParserExtensions.InvokeAsync(Parser parser, String[] args, IConsole console)
   at NexusMods.SingleProcess.CommandLineConfigurator.RunAsync(String[] args, IRenderer renderer, CancellationToken token)
   at NexusMods.App.StartupHandler.HandleCliCommandAsync(String[] args, IRenderer renderer, CancellationToken token) in /build/source/src/NexusMods.App/StartupHandler.cs:line 24
00:00:00.577 [DEBUG] Startup handler returned 0

@l0b0 l0b0 marked this pull request as ready for review February 16, 2024 00:50
@l0b0
Copy link
Contributor Author

l0b0 commented Jun 1, 2024

Are we good to go with 0.4.1 for now?

@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/prs-ready-for-review/3032/4025

@eclairevoyant
Copy link
Contributor

I don't know why CI is failing, it seems to work fine locally

@l0b0
Copy link
Contributor Author

l0b0 commented Jun 4, 2024

I don't know why CI is failing, it seems to work fine locally

Damn, I missed that. Why are they showing up as "neutral" rather than failed?

Looks like the problem might be this:

[xUnit.net 00:00:00.12] NexusMods.Games.BethesdaGameStudios.Tests: Exception filtering tests: Incorrect format for TestCaseFilter Error: Invalid Condition 'FullyQualifiedName!=NexusMods.UI.Tests.ImageCacheTests.Test_LoadAndCache_ImageStoredFileFullyQualifiedName!=NexusMods.Games.FOMOD.Tests.FomodXmlInstallerTests.InstallsFilesSimple_UsingRar'. Specify the correct format and try again. Note that the incorrect format can lead to no test getting executed.

How do I tell which exact command OfBorg ran?

Update: Fixed! I had to override precedence in the lib.strings.intersperse call to ensure that there is an "&" character between the mandatory filters and the optional one.

@l0b0
Copy link
Contributor Author

l0b0 commented Jun 4, 2024

This has highlighted another issue:

/nix/store/8y83na7h81fw5kr1msmjc7rvx329djp0-dotnet-sdk-8.0.300/sdk/8.0.300/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets(351,5): error MSB3021: Unable to copy file "/build/source/src/ArchiveManagement/NexusMods.FileExtractor/runtimes/linux-x64/native/7zz" to "/nix/store/4f0xxir8gd0lihxf2gv8lcphjjh6y12i-nexus-mods-app-0.4.1/lib/nexus-mods-app/runtimes/linux-x64/native//7zz". Access to the path '/nix/store/4f0xxir8gd0lihxf2gv8lcphjjh6y12i-nexus-mods-app-0.4.1/lib/nexus-mods-app/runtimes/linux-x64/native/7zz' is denied. [/build/source/tests/NexusMods.DataModel.Tests/NexusMods.DataModel.Tests.csproj]

Fixing that seems to require https://github.com/Nexus-Mods/NexusMods.App/tree/v0.4.9.3 though (which is blocked by #316293) and it can probably wait until we release.

@erri120
Copy link

erri120 commented Jun 4, 2024

Does Nix have naming scheme requirements? If not, is it possible to use nexusmods-app for the package name? I'm currently updating our docs and that will be the suggested package name for package maintainers.

@erri120
Copy link

erri120 commented Jun 4, 2024

Since you're building from source, you should also set INSTALLATION_METHOD_PACKAGE_MANAGER. We have an integrated updater that will notify the user about a new version. If you set this compile constant, we will tell the user to update using their package manager.

@l0b0
Copy link
Contributor Author

l0b0 commented Jun 4, 2024

Does Nix have naming scheme requirements? If not, is it possible to use nexusmods-app for the package name? I'm currently updating our docs and that will be the suggested package name for package maintainers.

Nixpkgs is flexible about names. I've renamed it. Thank you!

Since you're building from source, you should also set INSTALLATION_METHOD_PACKAGE_MANAGER. We have an integrated updater that will notify the user about a new version. If you set this compile constant, we will tell the user to update using their package manager.

I can't find it in the code. Did you mean one of these, or is it a coming feature? If it's the latter I'd rather put it on the to do list for later versions.

@l0b0 l0b0 changed the title nexus-mods-app: init at 0.4.1 nexusmods-app: init at 0.4.1 Jun 4, 2024
@erri120
Copy link

erri120 commented Jun 4, 2024

Since you're building from source, you should also set INSTALLATION_METHOD_PACKAGE_MANAGER. We have an integrated updater that will notify the user about a new version. If you set this compile constant, we will tell the user to update using their package manager.

I can't find it in the code. Did you mean one of these, or is it a coming feature? If it's the latter I'd rather put it on the to do list for later versions.

It's in this PR: Nexus-Mods/NexusMods.App#1530

@MattSturgeon
Copy link
Contributor

Since you're building from source, you should also set INSTALLATION_METHOD_PACKAGE_MANAGER. We have an integrated updater that will notify the user about a new version. If you set this compile constant, we will tell the user to update using their package manager.

I can't find it in the code.

It's in this PR: Nexus-Mods/NexusMods.App#1530

Typically we wouldn't set environment variables that have no effect on the targeted version.

I don't see any harm in setting it now, or adding a TODO comment referencing the PR. But it won't have any effect until the package is bumped to whatever version that PR lands in.

Closes NixOS#270358.

Name recommended by @erri120
<NixOS#270372 (comment)>.

Replaces the `7zz` binary executable included with the upstream project
for safety and reproducibility.

Requires an `enableUnfree = true` override to support RAR format mods.

Disables tests marked as requiring networking (actually requiring Nexus
Mods API key according to
<Nexus-Mods/NexusMods.App#1222 (comment)>),
and one other tests which requires networking.

Co-Authored-By: Matej Cotman <matej@matejc.com>
Co-authored-by: éclairevoyant <848000+eclairevoyant@users.noreply.github.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
@SuperSandro2000 SuperSandro2000 merged commit 7a6f68a into NixOS:master Jun 6, 2024
23 of 24 checks passed
@l0b0 l0b0 deleted the nexus-mods-app branch June 6, 2024 22:35
@nyabinary
Copy link
Contributor

Description of changes

From the project:

a mod installer, creator and manager for all your popular games

Closes #270358.

Name recommended by @erri120 #270372 (comment).

Replaces the 7zz binary executable included with the upstream project for safety and reproducibility.

Requires an enableUnfree = true override to support RAR format mods.

Disables tests marked as requiring networking (actually requiring Nexus Mods API key according to Nexus-Mods/NexusMods.App#1222 (comment)), and one other tests which requires networking.

To do

* [x]  Adapt [upstream build instructions](https://github.com/Nexus-Mods/NexusMods.App/blob/main/.github/workflows/build-linux-pupnet.yaml)

* [x]  Run upstream tests successfully

* [x]  Fix [desktop entries](https://github.com/NixOS/nixpkgs/pull/270372#issuecomment-2056721955)

* [x]  Verify app use:
  
  * [x]  Nexus Mods login
  * [x]  Detects supported games (tested with Skyrim Special Edition)
  * [x]  Installs mods
  * [x]  Runs mods (_some_ mods load; [issue](https://github.com/Nexus-Mods/NexusMods.App/issues/1303))

* [ ]  (Optional) [Specify `NEXUSMODS_APP_USE_SYSTEM_EXTRACTOR=1`](https://github.com/Nexus-Mods/NexusMods.App/issues/1306#issuecomment-2095755699) once the next release is out

Things done

* Built on platform(s)
  
  * [x]  x86_64-linux
  * [ ]  aarch64-linux
  * [ ]  x86_64-darwin
  * [ ]  aarch64-darwin

* For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
  
  * [ ]  `sandbox = relaxed`
  * [ ]  `sandbox = true`

* [ ]  Tested, as applicable:
  
  * [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
  * and/or [package tests](https://nixos.org/manual/nixpkgs/unstable/#sec-package-tests)
  * or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
  * made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages

* [x]  Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)

* [ ]  Tested basic functionality of all binary files (usually in `./result/bin/`)

* [23.11 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2311.section.md) (or backporting [23.05 Release notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2305.section.md))
  
  * [ ]  (Package updates) Added a release notes entry if the change is major or breaking
  * [ ]  (Module updates) Added a release notes entry if the change is significant
  * [ ]  (Module addition) Added a release notes entry if adding a new NixOS module

* [x]  Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).

Priorities

Add a 👍 reaction to pull requests you find important.

0.5.3 is out. So I assume we can do NEXUSMODS_APP_USE_SYSTEM_EXTRACTOR now right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Package request: nexus-mods-app
10 participants