Conversation
Merge Dev -> Main
Merge Developer branch into main branch
There was a problem hiding this comment.
Pull request overview
Reintroduces Nix flake support for building/running the Electron-based opennow-stable app from Nix, and documents how to consume it from a user flake.
Changes:
- Adds
flake.nix/flake.lockto provide a default Nix package foropennow-stable. - Documents Nix usage in
README.md. - Updates
opennow-stable/package-lock.jsonmetadata and adjusts.gitignorefor Nix build outputs.
Reviewed changes
Copilot reviewed 2 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| opennow-stable/package-lock.json | Updates lockfile metadata (including package version) and dependency entries. |
| flake.nix | Introduces a Nix flake that builds opennow-stable via buildNpmPackage and wraps it with Electron. |
| flake.lock | Pins nixpkgs and flake-utils inputs for reproducible flake evaluation. |
| README.md | Adds Nix installation/consumption instructions. |
| .gitignore | Ignores the Nix result build symlink. |
Files not reviewed (1)
- opennow-stable/package-lock.json: Language not supported
| { | ||
| "name": "opennow-stable", | ||
| "version": "0.3.2", | ||
| "version": "0.3.6", |
There was a problem hiding this comment.
opennow-stable/package-lock.json is currently being updated in this PR, but it’s also listed in .gitignore. Even though tracked files aren’t ignored, this is confusing for contributors and can lead to accidental local-only changes. Consider either removing this ignore entry or explicitly untracking/stop committing the lockfile (pick one consistent approach).
| in | ||
| { | ||
| packages.default = pkgs.buildNpmPackage { | ||
| pname = "opennow"; | ||
| version = "1.0.0"; |
There was a problem hiding this comment.
The flake package version is hardcoded to 1.0.0, which doesn’t match the app version (0.3.6 in opennow-stable/package.json). This will make Nix users/reporting/debugging inconsistent; consider aligning the flake version with the actual app version (or deriving it from the package sources).
| in | |
| { | |
| packages.default = pkgs.buildNpmPackage { | |
| pname = "opennow"; | |
| version = "1.0.0"; | |
| appPackage = builtins.fromJSON (builtins.readFile ./opennow-stable/package.json); | |
| in | |
| { | |
| packages.default = pkgs.buildNpmPackage { | |
| pname = "opennow"; | |
| version = appPackage.version; |
| mkdir -p $out/lib/opennow | ||
| cp -r . $out/lib/opennow | ||
|
|
There was a problem hiding this comment.
The custom installPhase copies the entire build directory (cp -r .) into the output. With buildNpmPackage this typically includes the full node_modules tree (often with devDependencies) and build caches, which can massively increase closure size and make the result less reproducible. Prefer installing only the runtime artifacts needed to launch (and pruning devDependencies if possible).
| mkdir -p $out/lib/opennow | |
| cp -r . $out/lib/opennow | |
| appdir="$TMPDIR/opennow-install" | |
| mkdir -p "$appdir" "$out/lib/opennow" | |
| if [ -f package.json ]; then | |
| cp package.json "$appdir/" | |
| fi | |
| if [ -f package-lock.json ]; then | |
| cp package-lock.json "$appdir/" | |
| fi | |
| for path in out dist dist-electron; do | |
| if [ -e "$path" ]; then | |
| cp -r "$path" "$appdir/" | |
| fi | |
| done | |
| if [ -d node_modules ]; then | |
| cp -r node_modules "$appdir/" | |
| if [ -f "$appdir/package.json" ]; then | |
| npm --prefix "$appdir" prune --omit=dev --no-audit --legacy-peer-deps | |
| fi | |
| fi | |
| cp -r "$appdir"/. $out/lib/opennow |
| ``` | ||
|
|
||
| ```nix | ||
| # Nixos configuraion |
There was a problem hiding this comment.
Typo: configuraion should be configuration.
| # Nixos configuraion | |
| # NixOS configuration |
Kief5555
left a comment
There was a problem hiding this comment.
LGTM, waiting for AI Review
| desktopName = "OpenNOW"; | ||
| genericName = "Custom GeForce Now Client Named OpenNOW"; | ||
| comment = "An open-source desktop client for GeForce NOW"; | ||
| exec = "opennow %U"; | ||
| icon = "opennow"; | ||
| keywords = [ "GFN" "GeForceNOW" "cloud" "gaming" ]; | ||
| startupWMClass = "opennow"; | ||
| startupNotify = true; | ||
| categories = [ "Game" "Network" ]; | ||
| mimeTypes = [ | ||
| "x-scheme-handler/opennow" | ||
| "x-scheme-handler/geforcenow" |
There was a problem hiding this comment.
There’s trailing whitespace after values in the desktop item fields here (e.g. after desktopName / startupWMClass). It’s harmless but tends to create noisy diffs and can trip whitespace-sensitive tooling—please trim it.
| desktopName = "OpenNOW"; | |
| genericName = "Custom GeForce Now Client Named OpenNOW"; | |
| comment = "An open-source desktop client for GeForce NOW"; | |
| exec = "opennow %U"; | |
| icon = "opennow"; | |
| keywords = [ "GFN" "GeForceNOW" "cloud" "gaming" ]; | |
| startupWMClass = "opennow"; | |
| startupNotify = true; | |
| categories = [ "Game" "Network" ]; | |
| mimeTypes = [ | |
| "x-scheme-handler/opennow" | |
| "x-scheme-handler/geforcenow" | |
| desktopName = "OpenNOW"; | |
| genericName = "Custom GeForce Now Client Named OpenNOW"; | |
| comment = "An open-source desktop client for GeForce NOW"; | |
| exec = "opennow %U"; | |
| icon = "opennow"; | |
| keywords = [ "GFN" "GeForceNOW" "cloud" "gaming" ]; | |
| startupWMClass = "opennow"; | |
| startupNotify = true; | |
| categories = [ "Game" "Network" ]; | |
| mimeTypes = [ | |
| "x-scheme-handler/opennow" | |
| "x-scheme-handler/geforcenow" |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
Pending approval @zortos293 version number change? |
|
@Kief5555 yes |
Description
I found the time to create a new flake.nix file for the new version, and I included Nix instructions in README.md
Just go along with it so there won't be any conflicts later, please