From 13d30d31a976fba3aadd2afb5a7ade4221c9431f Mon Sep 17 00:00:00 2001
From: Dimitar Nestorov <8790386+dimitarnestorov@users.noreply.github.com>
Date: Wed, 22 Jan 2025 08:56:50 +0200
Subject: [PATCH 1/3] sweethome3d: rename `default.nix` to `linux.nix`
---
pkgs/applications/misc/sweethome3d/{default.nix => linux.nix} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename pkgs/applications/misc/sweethome3d/{default.nix => linux.nix} (100%)
diff --git a/pkgs/applications/misc/sweethome3d/default.nix b/pkgs/applications/misc/sweethome3d/linux.nix
similarity index 100%
rename from pkgs/applications/misc/sweethome3d/default.nix
rename to pkgs/applications/misc/sweethome3d/linux.nix
From 2104422985fa1b000e838ad0ffba3597f6af4032 Mon Sep 17 00:00:00 2001
From: Dimitar Nestorov <8790386+dimitarnestorov@users.noreply.github.com>
Date: Wed, 22 Jan 2025 08:56:50 +0200
Subject: [PATCH 2/3] sweethome3d: add darwin support
---
.../misc/sweethome3d/build-xml.patch | 15 +++
.../misc/sweethome3d/config.patch | 13 +++
pkgs/applications/misc/sweethome3d/darwin.nix | 55 +++++++++
.../applications/misc/sweethome3d/default.nix | 61 ++++++++++
pkgs/applications/misc/sweethome3d/linux.nix | 110 +++++++++---------
5 files changed, 200 insertions(+), 54 deletions(-)
create mode 100644 pkgs/applications/misc/sweethome3d/build-xml.patch
create mode 100644 pkgs/applications/misc/sweethome3d/config.patch
create mode 100644 pkgs/applications/misc/sweethome3d/darwin.nix
create mode 100644 pkgs/applications/misc/sweethome3d/default.nix
diff --git a/pkgs/applications/misc/sweethome3d/build-xml.patch b/pkgs/applications/misc/sweethome3d/build-xml.patch
new file mode 100644
index 000000000000..133fe07d49d9
--- /dev/null
+++ b/pkgs/applications/misc/sweethome3d/build-xml.patch
@@ -0,0 +1,15 @@
+--- /build.xml
++++ /build.xml
+@@ -1134,6 +1134,12 @@
+
+
+
++
++
++
++
++
++
+
+
+
diff --git a/pkgs/applications/misc/sweethome3d/config.patch b/pkgs/applications/misc/sweethome3d/config.patch
new file mode 100644
index 000000000000..3ecfe923414d
--- /dev/null
+++ b/pkgs/applications/misc/sweethome3d/config.patch
@@ -0,0 +1,13 @@
+--- "a/install/macosx/Sweet Home 3D/Contents/app/SweetHome3D.cfg"
++++ "b/install/macosx/Sweet Home 3D/Contents/app/SweetHome3D.cfg"
+@@ -6,6 +6,10 @@
+
+ [JavaOptions]
+ java-options=-Xmx2000m
++java-options=--add-opens=java.desktop/java.awt=ALL-UNNAMED
++java-options=--add-opens=java.desktop/sun.awt=ALL-UNNAMED
++java-options=--add-opens=java.desktop/com.apple.eio=ALL-UNNAMED
++java-options=--add-opens=java.desktop/com.apple.eawt=ALL-UNNAMED
+ java-options=-Djava.library.path=$APPDIR
+ java-options=-Djogamp.gluegen.UseTempJarCache=false
+ java-options=-Djava.locale.providers=COMPAT,SPI
diff --git a/pkgs/applications/misc/sweethome3d/darwin.nix b/pkgs/applications/misc/sweethome3d/darwin.nix
new file mode 100644
index 000000000000..9903a858487c
--- /dev/null
+++ b/pkgs/applications/misc/sweethome3d/darwin.nix
@@ -0,0 +1,55 @@
+{
+ lib,
+ stdenv,
+ fetchzip,
+ fetchurl,
+ makeBinaryWrapper,
+ zulu,
+ ant,
+ darwin,
+
+ pname,
+ version,
+ src,
+ meta,
+ patches,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+ inherit
+ pname
+ version
+ src
+ meta
+ patches
+ ;
+
+ nativeBuildInputs = [
+ darwin.autoSignDarwinBinariesHook
+ makeBinaryWrapper
+ ant
+ ];
+ buildInputs = [
+ zulu
+ ];
+
+ buildPhase = ''
+ runHook preBuild
+
+ ant macosxBundle -DjavaHome_macosx_arm64=${zulu.home}/zulu-${lib.versions.major zulu.version}.jdk/Contents/Home
+
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/Applications
+ mv "install/macosx/SweetHome3D-${finalAttrs.version}/Sweet Home 3D.app" $out/Applications
+ makeWrapper "$out/Applications/Sweet Home 3D.app/Contents/MacOS/SweetHome3D" $out/bin/sweethome3d
+
+ runHook postInstall
+ '';
+
+ dontStrip = true;
+})
diff --git a/pkgs/applications/misc/sweethome3d/default.nix b/pkgs/applications/misc/sweethome3d/default.nix
new file mode 100644
index 000000000000..17291bdc2cce
--- /dev/null
+++ b/pkgs/applications/misc/sweethome3d/default.nix
@@ -0,0 +1,61 @@
+{
+ lib,
+ fetchzip,
+ stdenv,
+ callPackage,
+}:
+
+let
+ pname = "sweethome3d";
+ version = "7.5";
+
+ src = fetchzip {
+ url = "mirror://sourceforge/sweethome3d/SweetHome3D-${version}-src.zip";
+ hash = "sha256-+rAhq5sFXC34AMYCcdAYZzrUa3LDy4S5Zid4DlEVvTQ=";
+ };
+
+ patches = [
+ ./build-xml.patch
+ ./config.patch
+ ];
+
+ meta = {
+ homepage = "https://www.sweethome3d.com/index.jsp";
+ description = "Design and visualize your future home";
+ license = lib.licenses.gpl2Plus;
+ maintainers = with lib.maintainers; [
+ edwtjo
+ DimitarNestorov
+ ];
+ platforms = [
+ "i686-linux"
+ "x86_64-darwin"
+ "x86_64-linux"
+ "aarch64-darwin"
+ ];
+ mainProgram = "sweethome3d";
+ };
+in
+{
+ application =
+ if stdenv.hostPlatform.isDarwin then
+ callPackage ./darwin.nix {
+ inherit
+ pname
+ version
+ src
+ meta
+ patches
+ ;
+ }
+ else
+ callPackage ./linux.nix {
+ inherit
+ pname
+ version
+ src
+ meta
+ patches
+ ;
+ };
+}
diff --git a/pkgs/applications/misc/sweethome3d/linux.nix b/pkgs/applications/misc/sweethome3d/linux.nix
index 0016e7ab4fec..4c77d051d42c 100644
--- a/pkgs/applications/misc/sweethome3d/linux.nix
+++ b/pkgs/applications/misc/sweethome3d/linux.nix
@@ -13,6 +13,13 @@
, autoPatchelfHook
, libXxf86vm
, libGL
+, copyDesktopItems
+
+, pname
+, version
+, src
+, meta
+, patches
}:
let
@@ -26,20 +33,44 @@ let
ln -s -T "${iconFile}" "$out/share/icons/hicolor/${size}/apps/${iconName}.${extensionOf iconFile}"
'') icons);
- mkSweetHome3D =
- { pname, module, version, src, license, description, desktopName, icons }:
-
- stdenv.mkDerivation rec {
- inherit pname version src description;
- exec = lib.toLower module;
- sweethome3dItem = makeDesktopItem {
- inherit exec desktopName;
- name = pname;
- icon = pname;
- comment = description;
- genericName = "Computer Aided (Interior) Design";
- categories = [ "Graphics" "2DGraphics" "3DGraphics" ];
+ icons = {
+ "32x32" = fetchurl {
+ url = "http://sweethome3d.cvs.sourceforge.net/viewvc/sweethome3d/SweetHome3D/deploy/SweetHome3DIcon32x32.png";
+ sha256 = "1r2fhfg27mx00nfv0qj66rhf719s2g1vhdis7bdc9mqk9x0mb0ir";
};
+ "48x48" = fetchurl {
+ url = "http://sweethome3d.cvs.sourceforge.net/viewvc/sweethome3d/SweetHome3D/deploy/SweetHome3DIcon48x48.png";
+ sha256 = "1ap6d75dyqqvx21wddvn8vw2apq3v803vmbxdriwd0dw9rq3zn4g";
+ };
+ };
+
+
+ mkSweetHome3D =
+ { pname, version, src, meta }:
+ stdenv.mkDerivation {
+ inherit
+ pname
+ version
+ src
+ meta
+ patches
+ ;
+
+ desktopItems = [
+ (makeDesktopItem {
+ name = "sweethome3d";
+ desktopName = "Sweet Home 3D";
+ icon = "sweethome3d";
+ comment = meta.description;
+ exec = meta.mainProgram;
+ genericName = "Computer Aided (Interior) Design";
+ categories = [
+ "Graphics"
+ "2DGraphics"
+ "3DGraphics"
+ ];
+ })
+ ];
postPatch = ''
addAutoPatchelfSearchPath ${jdk}/lib/openjdk/lib/
@@ -51,7 +82,12 @@ let
find . -name '*.so' | xargs strings | { grep '/nix/store' || :; } >> ./.jar-paths
'';
- nativeBuildInputs = [ makeWrapper autoPatchelfHook stripJavaArchivesHook ];
+ nativeBuildInputs = [
+ makeWrapper
+ autoPatchelfHook
+ stripJavaArchivesHook
+ copyDesktopItems
+ ];
buildInputs = [ ant jdk p7zip gtk3 gsettings-desktop-schemas libXxf86vm ];
# upstream targets Java 7 by default
@@ -72,16 +108,14 @@ let
runHook preInstall
mkdir -p $out/bin
- cp install/${module}-${version}.jar $out/share/java/.
+ cp install/SweetHome3D-${version}.jar $out/share/java/.
- ${installIcons pname icons}
+ ${installIcons "sweethome3d" icons}
- cp "${sweethome3dItem}/share/applications/"* $out/share/applications
-
- makeWrapper ${jdk}/bin/java $out/bin/$exec \
+ makeWrapper ${jdk}/bin/java $out/bin/${meta.mainProgram} \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \
- --add-flags "-Dsun.java2d.opengl=true -jar $out/share/java/${module}-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
+ --add-flags "-Dsun.java2d.opengl=true -jar $out/share/java/SweetHome3D-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
# remember the store paths found inside the .jar libraries. note that
@@ -94,39 +128,7 @@ let
'';
dontStrip = true;
-
- meta = {
- homepage = "http://www.sweethome3d.com/index.jsp";
- inherit description;
- inherit license;
- maintainers = [ lib.maintainers.edwtjo ];
- platforms = lib.platforms.linux;
- mainProgram = exec;
- };
};
-in {
-
- application = mkSweetHome3D rec {
- pname = lib.toLower module + "-application";
- version = "7.5";
- module = "SweetHome3D";
- description = "Design and visualize your future home";
- license = lib.licenses.gpl2Plus;
- src = fetchzip {
- url = "mirror://sourceforge/sweethome3d/${module}-${version}-src.zip";
- hash = "sha256-+rAhq5sFXC34AMYCcdAYZzrUa3LDy4S5Zid4DlEVvTQ=";
- };
- desktopName = "Sweet Home 3D";
- icons = {
- "32x32" = fetchurl {
- url = "http://sweethome3d.cvs.sourceforge.net/viewvc/sweethome3d/SweetHome3D/deploy/SweetHome3DIcon32x32.png";
- sha256 = "1r2fhfg27mx00nfv0qj66rhf719s2g1vhdis7bdc9mqk9x0mb0ir";
- };
- "48x48" = fetchurl {
- url = "http://sweethome3d.cvs.sourceforge.net/viewvc/sweethome3d/SweetHome3D/deploy/SweetHome3DIcon48x48.png";
- sha256 = "1ap6d75dyqqvx21wddvn8vw2apq3v803vmbxdriwd0dw9rq3zn4g";
- };
- };
- };
-
+in mkSweetHome3D {
+ inherit pname version src meta patches;
}
From 8cf2863ab8dfed80f696b9ce6b7081b846b60792 Mon Sep 17 00:00:00 2001
From: Dimitar Nestorov <8790386+dimitarnestorov@users.noreply.github.com>
Date: Wed, 22 Jan 2025 09:03:55 +0200
Subject: [PATCH 3/3] sweethome3d: format `linux.nix`
---
pkgs/applications/misc/sweethome3d/linux.nix | 203 ++++++++++---------
1 file changed, 105 insertions(+), 98 deletions(-)
diff --git a/pkgs/applications/misc/sweethome3d/linux.nix b/pkgs/applications/misc/sweethome3d/linux.nix
index 4c77d051d42c..af5fcdefa8a2 100644
--- a/pkgs/applications/misc/sweethome3d/linux.nix
+++ b/pkgs/applications/misc/sweethome3d/linux.nix
@@ -1,37 +1,42 @@
-{ lib
-, stdenv
-, fetchzip
-, fetchurl
-, makeWrapper
-, makeDesktopItem
-, jdk
-, ant
-, stripJavaArchivesHook
-, gtk3
-, gsettings-desktop-schemas
-, p7zip
-, autoPatchelfHook
-, libXxf86vm
-, libGL
-, copyDesktopItems
+{
+ lib,
+ stdenv,
+ fetchzip,
+ fetchurl,
+ makeWrapper,
+ makeDesktopItem,
+ jdk,
+ ant,
+ stripJavaArchivesHook,
+ gtk3,
+ gsettings-desktop-schemas,
+ p7zip,
+ autoPatchelfHook,
+ libXxf86vm,
+ libGL,
+ copyDesktopItems,
-, pname
-, version
-, src
-, meta
-, patches
+ pname,
+ version,
+ src,
+ meta,
+ patches,
}:
let
# TODO: Should we move this to `lib`? Seems like its would be useful in many cases.
- extensionOf = filePath:
- lib.concatStringsSep "." (lib.tail (lib.splitString "." (builtins.baseNameOf filePath)));
+ extensionOf =
+ filePath: lib.concatStringsSep "." (lib.tail (lib.splitString "." (builtins.baseNameOf filePath)));
- installIcons = iconName: icons: lib.concatStringsSep "\n" (lib.mapAttrsToList (size: iconFile: ''
- mkdir -p "$out/share/icons/hicolor/${size}/apps"
- ln -s -T "${iconFile}" "$out/share/icons/hicolor/${size}/apps/${iconName}.${extensionOf iconFile}"
- '') icons);
+ installIcons =
+ iconName: icons:
+ lib.concatStringsSep "\n" (
+ lib.mapAttrsToList (size: iconFile: ''
+ mkdir -p "$out/share/icons/hicolor/${size}/apps"
+ ln -s -T "${iconFile}" "$out/share/icons/hicolor/${size}/apps/${iconName}.${extensionOf iconFile}"
+ '') icons
+ );
icons = {
"32x32" = fetchurl {
@@ -43,92 +48,94 @@ let
sha256 = "1ap6d75dyqqvx21wddvn8vw2apq3v803vmbxdriwd0dw9rq3zn4g";
};
};
-
- mkSweetHome3D =
- { pname, version, src, meta }:
- stdenv.mkDerivation {
- inherit
- pname
- version
- src
- meta
- patches
- ;
+in
+stdenv.mkDerivation {
+ inherit
+ pname
+ version
+ src
+ meta
+ patches
+ ;
- desktopItems = [
- (makeDesktopItem {
- name = "sweethome3d";
- desktopName = "Sweet Home 3D";
- icon = "sweethome3d";
- comment = meta.description;
- exec = meta.mainProgram;
- genericName = "Computer Aided (Interior) Design";
- categories = [
- "Graphics"
- "2DGraphics"
- "3DGraphics"
- ];
- })
- ];
+ desktopItems = [
+ (makeDesktopItem {
+ name = "sweethome3d";
+ desktopName = "Sweet Home 3D";
+ icon = "sweethome3d";
+ comment = meta.description;
+ exec = meta.mainProgram;
+ genericName = "Computer Aided (Interior) Design";
+ categories = [
+ "Graphics"
+ "2DGraphics"
+ "3DGraphics"
+ ];
+ })
+ ];
- postPatch = ''
- addAutoPatchelfSearchPath ${jdk}/lib/openjdk/lib/
- autoPatchelf lib
+ postPatch = ''
+ addAutoPatchelfSearchPath ${jdk}/lib/openjdk/lib/
+ autoPatchelf lib
- # Nix cannot see the runtime references to the paths we just patched in
- # once they've been compressed into the .jar. Scan for and remember them
- # as plain text so they don't get overlooked.
- find . -name '*.so' | xargs strings | { grep '/nix/store' || :; } >> ./.jar-paths
- '';
+ # Nix cannot see the runtime references to the paths we just patched in
+ # once they've been compressed into the .jar. Scan for and remember them
+ # as plain text so they don't get overlooked.
+ find . -name '*.so' | xargs strings | { grep '/nix/store' || :; } >> ./.jar-paths
+ '';
- nativeBuildInputs = [
- makeWrapper
- autoPatchelfHook
- stripJavaArchivesHook
- copyDesktopItems
- ];
- buildInputs = [ ant jdk p7zip gtk3 gsettings-desktop-schemas libXxf86vm ];
+ nativeBuildInputs = [
+ makeWrapper
+ autoPatchelfHook
+ stripJavaArchivesHook
+ copyDesktopItems
+ ];
+ buildInputs = [
+ ant
+ jdk
+ p7zip
+ gtk3
+ gsettings-desktop-schemas
+ libXxf86vm
+ ];
- # upstream targets Java 7 by default
- env.ANT_ARGS = "-DappletClassSource=8 -DappletClassTarget=8 -DclassSource=8 -DclassTarget=8";
+ # upstream targets Java 7 by default
+ env.ANT_ARGS = "-DappletClassSource=8 -DappletClassTarget=8 -DclassSource=8 -DclassTarget=8";
- buildPhase = ''
- runHook preBuild
+ buildPhase = ''
+ runHook preBuild
- ant furniture textures help
- mkdir -p $out/share/{java,applications}
- mv "build/"*.jar $out/share/java/.
- ant
+ ant furniture textures help
+ mkdir -p $out/share/{java,applications}
+ mv "build/"*.jar $out/share/java/.
+ ant
- runHook postBuild
- '';
+ runHook postBuild
+ '';
- installPhase = ''
- runHook preInstall
+ installPhase = ''
+ runHook preInstall
- mkdir -p $out/bin
- cp install/SweetHome3D-${version}.jar $out/share/java/.
+ mkdir -p $out/bin
+ cp install/SweetHome3D-${version}.jar $out/share/java/.
- ${installIcons "sweethome3d" icons}
+ ${installIcons "sweethome3d" icons}
- makeWrapper ${jdk}/bin/java $out/bin/${meta.mainProgram} \
- --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
- --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \
- --add-flags "-Dsun.java2d.opengl=true -jar $out/share/java/SweetHome3D-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
+ makeWrapper ${jdk}/bin/java $out/bin/${meta.mainProgram} \
+ --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
+ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \
+ --add-flags "-Dsun.java2d.opengl=true -jar $out/share/java/SweetHome3D-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
- # remember the store paths found inside the .jar libraries. note that
- # which file they are in does not matter in particular, just that some
- # file somewhere lists them in plain-text
- mkdir -p $out/nix-support
- cp .jar-paths $out/nix-support/depends
+ # remember the store paths found inside the .jar libraries. note that
+ # which file they are in does not matter in particular, just that some
+ # file somewhere lists them in plain-text
+ mkdir -p $out/nix-support
+ cp .jar-paths $out/nix-support/depends
- runHook postInstall
- '';
+ runHook postInstall
+ '';
- dontStrip = true;
- };
-in mkSweetHome3D {
- inherit pname version src meta patches;
+ dontStrip = true;
}