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

This commit is contained in:
Sandro
2025-11-23 20:49:58 +00:00
committed by GitHub
6 changed files with 362 additions and 0 deletions
@@ -0,0 +1,26 @@
{
buildEnv,
lib,
plasticscm-client-core,
plasticscm-client-gui,
}:
buildEnv {
pname = "plasticscm-client-complete";
inherit (plasticscm-client-core) version;
name = "plasticscm-client-complete-${plasticscm-client-core.version}";
paths = [
plasticscm-client-core
plasticscm-client-gui
];
meta = {
homepage = "https://www.plasticscm.com";
description = "SCM by Unity for game development";
platforms = [ "x86_64-linux" ];
mainProgram = "plasticgui";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ musjj ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
}
@@ -0,0 +1,64 @@
{
dpkg,
fetchurl,
lib,
makeWrapper,
stdenvNoCC,
writeShellApplication,
common-updater-scripts,
curl,
jc,
jq,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plasticscm-client-core-unwrapped";
version = "11.0.16.9791";
src = fetchurl {
url = "https://www.plasticscm.com/plasticrepo/stable/debian/amd64/plasticscm-client-core_${finalAttrs.version}_amd64.deb";
hash = "sha256-NuMY75JnnWVRKBSh/1XYipqc0m+O0vt7lJMVkQyTaNA=";
};
nativeBuildInputs = [
dpkg
makeWrapper
];
dontFixup = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r opt usr/{share,bin} $out
runHook postInstall
'';
passthru.updateScript = lib.getExe (writeShellApplication {
name = "update-plasticscm-client-core-unwrapped";
runtimeInputs = [
common-updater-scripts
curl
jc
jq
];
text = ''
eval "$(curl -sSL https://www.plasticscm.com/plasticrepo/stable/debian/Packages |
jc --pkg-index-deb |
jq -r '[.[] | select(.package == "plasticscm-client-core")] | sort_by(.version) | last | @sh "version=\(.version) hash=\(.sha256)"')"
# shellcheck disable=SC2154
update-source-version plasticscm-client-core-unwrapped "$version" "sha256-$(xxd -r -p <<<"$hash" | base64)"
'';
});
meta = {
homepage = "https://www.plasticscm.com";
description = "SCM by Unity for game development";
platforms = [ "x86_64-linux" ];
mainProgram = "cm";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ musjj ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
@@ -0,0 +1,47 @@
{
buildFHSEnv,
extraLibs ? _: [ ],
extraPkgs ? _: [ ],
libgcc,
libz,
plasticscm-client-core-unwrapped,
}:
buildFHSEnv {
pname = "plasticscm-client-core";
inherit (plasticscm-client-core-unwrapped) version meta;
runScript = "/usr/bin/cm";
targetPkgs =
pkgs:
[
plasticscm-client-core-unwrapped
]
++ extraPkgs pkgs;
multiPkgs =
pkgs:
with pkgs;
[
# Dependencies from the Debian package
glibc.out
libgcc.lib
libz
krb5.lib
lttng-ust.out
openssl_3.out
icu76
# Transitive dependencies from the Debian package
libidn2.out
libunistring
e2fsprogs.out
keyutils.lib
numactl.out
]
++ extraLibs pkgs;
extraInstallCommands = ''
mv $out/bin/plasticscm-client-core $out/bin/cm
'';
}
@@ -0,0 +1,62 @@
{
dpkg,
fetchurl,
lib,
stdenvNoCC,
writeShellApplication,
common-updater-scripts,
curl,
jc,
jq,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plasticscm-client-gui-unwrapped";
version = "11.0.16.9791";
src = fetchurl {
url = "https://www.plasticscm.com/plasticrepo/stable/debian/amd64/plasticscm-client-gui_${finalAttrs.version}_amd64.deb";
hash = "sha256-sSabW3j9h9uNQSwWKvAH+3D9lRWvMRYcuITDonD7Inw=";
};
nativeBuildInputs = [
dpkg
];
dontFixup = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r opt usr/{share,bin} $out
runHook postInstall
'';
passthru.updateScript = lib.getExe (writeShellApplication {
name = "update-plasticscm-client-gui-unwrapped";
runtimeInputs = [
common-updater-scripts
curl
jc
jq
];
text = ''
eval "$(curl -sSL https://www.plasticscm.com/plasticrepo/stable/debian/Packages |
jc --pkg-index-deb |
jq -r '[.[] | select(.package == "plasticscm-client-gui")] | sort_by(.version) | last | @sh "version=\(.version) hash=\(.sha256)"')"
# shellcheck disable=SC2154
update-source-version plasticscm-client-gui-unwrapped "$version" "sha256-$(xxd -r -p <<<"$hash" | base64)"
'';
});
meta = {
homepage = "https://www.plasticscm.com";
description = "SCM by Unity for game development";
platforms = [ "x86_64-linux" ];
mainProgram = "plasticgui";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ musjj ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
@@ -0,0 +1,102 @@
{
buildFHSEnv,
extraLibs ? _: [ ],
extraPkgs ? _: [ ],
imagemagick,
makeWrapper,
plasticscm-client-core-unwrapped,
plasticscm-client-gui-unwrapped,
plasticscm-theme,
}:
buildFHSEnv {
pname = "plasticscm-client-gui";
inherit (plasticscm-client-gui-unwrapped) version meta;
runScript = "";
targetPkgs =
pkgs:
with pkgs;
[
plasticscm-client-gui-unwrapped
# Dependencies from the Debian package
plasticscm-client-core-unwrapped
fontconfig
]
++ extraPkgs pkgs;
multiPkgs =
pkgs:
with pkgs;
[
# Dependencies from the Debian package
glibc.out
libgcc.lib
krb5.lib
lttng-ust.out
openssl_3.out
icu76
plasticscm-theme
# Transitive dependencies from the Debian package
libidn2.out
libunistring
e2fsprogs.out
keyutils.lib
numactl.out
libz
# Undocumented dependencies discovered from testing
gtk3
xorg.libICE
xorg.libSM
xorg.libX11
xorg.libXcursor
xorg.libXi
]
++ extraLibs pkgs;
nativeBuildInputs = [
makeWrapper
imagemagick
];
extraBuildCommands = ''
for app in linplasticx lingluonx; do
cp --remove-destination $(readlink $out/opt/plasticscm5/client/$app) $out/opt/plasticscm5/client/$app
done
'';
extraInstallCommands = ''
mv $out/bin/plasticscm-client-gui $out/bin/.plasticscm-client-gui-fhsenv
for app in plasticgui semanticmergetool gtkmergetool gluon; do
makeWrapper $out/bin/.plasticscm-client-gui-fhsenv $out/bin/$app \
--add-flags /usr/bin/$app
done
mkdir -p $out/share/applications
for entry in ${plasticscm-client-gui-unwrapped}/share/applications/{unityvcs,plasticx}.desktop; do
substitute $entry $out/share/applications/$(basename $entry) \
--replace-fail /opt/plasticscm5/client/linplasticx plasticgui \
--replace-fail /opt/plasticscm5/theme/avalonia/icons/linunityvcs.ico linunityvcs
done
substitute ${plasticscm-client-gui-unwrapped}/share/applications/gluonx.desktop \
$out/share/applications/gluonx.desktop \
--replace-fail /opt/plasticscm5/client/lingluonx gluon \
--replace-fail /opt/plasticscm5/theme/avalonia/icons/lingluonx.ico lingluonx
for ico in ${plasticscm-client-gui-unwrapped}/opt/plasticscm5/theme/avalonia/icons/*; do
tmpdir=$(mktemp -d)
magick $ico $tmpdir/$(basename $ico .ico).png
for png in $tmpdir/*; do
size=$(magick identify -format %wx%h $png)
install -Dm444 -T $png $out/share/icons/hicolor/$size/apps/$(basename $ico .ico).png
done
done
'';
}
@@ -0,0 +1,61 @@
{
dpkg,
fetchurl,
lib,
stdenvNoCC,
writeShellApplication,
common-updater-scripts,
curl,
jc,
jq,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plasticscm-theme";
version = "11.0.16.9791";
src = fetchurl {
url = "https://www.plasticscm.com/plasticrepo/stable/debian/amd64/plasticscm-theme_${finalAttrs.version}_amd64.deb";
hash = "sha256-sInKMW6KoUNZ/06+E8MTGyVtOd+8wFLPrFibNw/DYQ0=";
};
nativeBuildInputs = [
dpkg
];
dontFixup = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r opt usr/share $out
runHook postInstall
'';
passthru.updateScript = lib.getExe (writeShellApplication {
name = "update-plasticscm-theme";
runtimeInputs = [
common-updater-scripts
curl
jc
jq
];
text = ''
eval "$(curl -sSL https://www.plasticscm.com/plasticrepo/stable/debian/Packages |
jc --pkg-index-deb |
jq -r '[.[] | select(.package == "plasticscm-theme")] | sort_by(.version) | last | @sh "version=\(.version) hash=\(.sha256)"')"
# shellcheck disable=SC2154
update-source-version plasticscm-theme "$version" "sha256-$(xxd -r -p <<<"$hash" | base64)"
'';
});
meta = {
homepage = "https://www.plasticscm.com";
description = "SCM by Unity for game development";
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ musjj ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})