Skip to content

plasticscm-{theme,client-{core,gui}}: init at 11.0.16.9791#416436

Merged
SuperSandro2000 merged 6 commits intoNixOS:masterfrom
musjj:plasticscm
Nov 23, 2025
Merged

plasticscm-{theme,client-{core,gui}}: init at 11.0.16.9791#416436
SuperSandro2000 merged 6 commits intoNixOS:masterfrom
musjj:plasticscm

Conversation

@musjj
Copy link
Contributor

@musjj musjj commented Jun 13, 2025

A Software Configuration Management system from Unity that tracks changes to source code and any digital asset over time.

The packages are structured like on Debian:

  • plasticscm-complete: the whole Plastic SCM experience!
    • plasticscm-client-complete: would you like all our client tools? Choose this package, then!
      • plasticscm-client-core: only command line client utilities.
      • plasticscm-client-gui: our awesome GUI applications (plasticgui, gluon and mergetool). You've got to try them!
    • plasticscm-server-core: the rock-solid Plastic SCM server, built on .NET Core and managed with systemd.

I didn't include the server packages because I don't use it so I don't know how to test it.

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/)
  • Nixpkgs 25.11 Release Notes (or backporting 24.11 and 25.05 Nixpkgs Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
  • NixOS 25.11 Release Notes (or backporting 24.11 and 25.05 NixOS Release notes)
    • (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, pkgs/README.md, maintainers/README.md and other contributing documentation in corresponding paths.

Add a 👍 reaction to pull requests you find important.

@nixos-discourse
Copy link

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

https://discourse.nixos.org/t/plastic-scm-for-nix-os/40080/3

@musjj musjj changed the title plasticscm-{theme,core{,-unwrapped},gui{,-unwrapped}}: init at 11.0.16.9478 plasticscm-{theme,client-{core{,-unwrapped},gui{,-unwrapped}}}: init at 11.0.16.9478 Jun 13, 2025
@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. labels Jun 13, 2025
@wolfgangwalther
Copy link
Contributor

Re-running CI due to a odd failure fixed in #416448

(holy cow, what a PR title... :D)

@gusjengis
Copy link

New to NixOS and nixpkgs, how long should I expect it to take for this to be merged? Need this for work, been suffering without it.

@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/5583

@gusjengis
Copy link

Got impatient and installed from fork. Works perfectly, thank you!

@nixpkgs-ci nixpkgs-ci bot added the 9.needs: reviewer This PR currently has no reviewers requested and needs attention. label Jul 4, 2025
@musjj musjj changed the title plasticscm-{theme,client-{core{,-unwrapped},gui{,-unwrapped}}}: init at 11.0.16.9478 plasticscm-{theme,client-{core{,-unwrapped},gui{,-unwrapped}}}: init at 11.0.16.9656 Oct 5, 2025
@musjj
Copy link
Contributor Author

musjj commented Oct 5, 2025

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 416436
Commit: b837c392a3f26bf984bfb90b6e81706579a7c9cb


x86_64-linux

✅ 6 packages built:
  • plasticscm-client-complete
  • plasticscm-client-core
  • plasticscm-client-core-unwrapped
  • plasticscm-client-gui
  • plasticscm-client-gui-unwrapped
  • plasticscm-theme

@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/5917

Copy link
Contributor

@dtomvan dtomvan left a comment

Choose a reason for hiding this comment

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

My suggestions may've been a bit vague, so I made a branch with all of my review suggestions realised: https://github.com/dtomvan/nixpkgs/tree/dtomvan/push-kornunpqzvpm

I seem to have broken internationalization there, but it's close enough that you might be able to make something of it with your domain knowledge of this software.

If FHS envs seem like the only way after all, I'd still like to see the restructuring of the packages as I did in my branch, since this is 6 packages where it could've been 3 or so.

libz,
plasticscm-client-core-unwrapped,
}:
buildFHSEnv {
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you really need an FHS env for these packages or does autoPatchelfHook suffice?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, buildFSHEnv is required here. I initially started with autoPatchelfHook but it did not work very well. The way some of the dependencies are loaded just necessitates an FSH environment for full compatibility (either that, or some really invasive/unstable patching). See unityhub.

Comment on lines +12 to +13
assert plasticscm-client-gui-unwrapped.version == plasticscm-client-core-unwrapped.version;
assert plasticscm-client-gui-unwrapped.version == plasticscm-theme.version;
Copy link
Contributor

Choose a reason for hiding this comment

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

I think it's appropriate instead to put all packages into one, plasticscm-client (which probably would merit a toggle for guiSupport or something), where you use let ... in to set the version once as a single source of truth.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not really sure about this, they're inherently different packages that don't really depend on each other. Some people may only need the GUI application, some may only need the CLI application and others may want both.

@nixpkgs-ci nixpkgs-ci bot removed the 9.needs: reviewer This PR currently has no reviewers requested and needs attention. label Oct 6, 2025
Comment on lines +77 to +80
mv $out/bin/$pname $out/bin/.$pname-fhsenv

for app in plasticgui semanticmergetool gtkmergetool gluon; do
makeWrapper $out/bin/.$pname-fhsenv $out/bin/$app \
Copy link
Member

Choose a reason for hiding this comment

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

Please hardcode pname instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Just to clarify $out/bin/$pname was not provided by the original package, but created by buildFHSEnv itself:

executableName ? args.pname or name,

ln -s ${bin} $out/bin/${executableName}

Shouldn't it be safe to rely on $pname here, since we essentially have full control of it?

Copy link
Member

Choose a reason for hiding this comment

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

We should never rely on pname like this. It is an anti pattern we are trying to get rid of.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I've hardcoded the pname, but I still don't quite understand the reasoning here. Is there a wider discussion on why this is bad for this particular case?

Copy link
Member

Choose a reason for hiding this comment

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

Interpolating pname is not great as it only matches by accident. We have an issue for overuse of pname

@SuperSandro2000 SuperSandro2000 changed the title plasticscm-{theme,client-{core{,-unwrapped},gui{,-unwrapped}}}: init at 11.0.16.9656 plasticscm-{theme,client-{core,gui}}: init at 11.0.16.9656 Oct 7, 2025
@SuperSandro2000
Copy link
Member

Please squash all the commits together. We should have one init commit per package in the end.

@musjj musjj changed the title plasticscm-{theme,client-{core,gui}}: init at 11.0.16.9656 plasticscm-{theme,client-{core,gui}}: init at 11.0.16.9791 Nov 21, 2025
@SuperSandro2000 SuperSandro2000 added this pull request to the merge queue Nov 23, 2025
Merged via the queue into NixOS:master with commit 466424b Nov 23, 2025
28 of 30 checks passed
@trofi
Copy link
Contributor

trofi commented Dec 26, 2025

Proposed a minor eval failure improvement on pkgsLLVM:

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

Labels

10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants