From 70ec406c1b62e806d428bba76998eca7cce429c4 Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 21 Dec 2025 10:03:27 +0000 Subject: [PATCH 1/6] zxing: use buildMavenPackage This automatically pulls in all necessary dependencies. Required dependencies have been missing since 117ea0db04ec49365e76874237868fc7e8cb24d2. --- pkgs/by-name/zx/zxing/java-zxing.sh | 2 +- pkgs/by-name/zx/zxing/package.nix | 45 ++++++++++++++--------------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/pkgs/by-name/zx/zxing/java-zxing.sh b/pkgs/by-name/zx/zxing/java-zxing.sh index bee3ac9e27a6..a5660621ea5e 100644 --- a/pkgs/by-name/zx/zxing/java-zxing.sh +++ b/pkgs/by-name/zx/zxing/java-zxing.sh @@ -1,3 +1,3 @@ #! /bin/sh -@jre@/bin/java -cp @out@/lib/java/core-@version@.jar:@out@/lib/java/javase-@version@.jar "$@" +@jre@/bin/java -cp @out@/lib/java/javase-@version@-jar-with-dependencies.jar "$@" diff --git a/pkgs/by-name/zx/zxing/package.nix b/pkgs/by-name/zx/zxing/package.nix index 937bf41036f3..7a54c85801da 100644 --- a/pkgs/by-name/zx/zxing/package.nix +++ b/pkgs/by-name/zx/zxing/package.nix @@ -1,55 +1,52 @@ { lib, - stdenv, - fetchurl, + maven, + fetchFromGitHub, jre, }: -let +maven.buildMavenPackage rec { + pname = "zxing"; version = "3.5.4"; - # Maven builds are hard to get right - core_jar = fetchurl { - url = "https://repo1.maven.org/maven2/com/google/zxing/core/${version}/core-${version}.jar"; - hash = "sha256-cd5diTQbX89d2J2n9E6E2CXQ4ITN8+x3yaviaw8M6xM="; + inherit jre; + + src = fetchFromGitHub { + owner = "zxing"; + repo = "zxing"; + tag = "zxing-${version}"; + hash = "sha256-D+ZKfDa406RIaTRhH9yXxgP8EpGe0iQU9CqkOMC4UdE="; }; - javase_jar = fetchurl { - url = "https://repo1.maven.org/maven2/com/google/zxing/javase/${version}/javase-${version}.jar"; - hash = "sha256-GWaDH0c9cv93IFeEGasRP2QXqXI0oXENK8zGUPWuDBI="; - }; -in -stdenv.mkDerivation (finalAttrs: { - pname = "zxing"; - inherit version jre; + mvnHash = "sha256-wVkWbhi5b/rZ0EF5zlQr2BMVOm5nZ1DhI6SGksZO5Vg="; - dontUnpack = true; + sourceRoot = "${src.name}/javase"; + + mvnParameters = "-Dproject.build.outputTimestamp=1980-01-01T00:00:02Z compile assembly:single"; installPhase = '' runHook preInstall mkdir -p "$out/lib/java" "$out/bin" - cp "${core_jar}" "${javase_jar}" "$out/lib/java" + cp "target/javase-${version}-jar-with-dependencies.jar" "$out/lib/java" substituteAll "${./java-zxing.sh}" "$out/bin/java-zxing" substituteAll "${./zxing-cmdline-runner.sh}" "$out/bin/zxing-cmdline-runner" substituteAll "${./zxing-cmdline-encoder.sh}" "$out/bin/zxing-cmdline-encoder" substituteAll "${./zxing.sh}" "$out/bin/zxing" chmod a+x "$out/bin"/* - pushd "$out/lib/java" - for i in *.jar; do - mv "$i" "''${i#*-}" - done - popd runHook postInstall ''; meta = { description = "1D and 2D code reading library"; - sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; + sourceProvenance = with lib.sourceTypes; [ + binaryBytecode + fromSource + ]; license = lib.licenses.asl20; maintainers = [ lib.maintainers.raskin ]; platforms = lib.platforms.linux; homepage = "https://github.com/zxing/zxing"; }; -}) +} From 44127c9ff5584fc269f569e084ce2ba27c73c381 Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 21 Dec 2025 10:03:27 +0000 Subject: [PATCH 2/6] zxing: improve help output --- pkgs/by-name/zx/zxing/zxing.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/zx/zxing/zxing.sh b/pkgs/by-name/zx/zxing/zxing.sh index a38558d87026..40a416946aa0 100644 --- a/pkgs/by-name/zx/zxing/zxing.sh +++ b/pkgs/by-name/zx/zxing/zxing.sh @@ -9,8 +9,8 @@ case "$choice" in zxing-cmdline-runner "$@"; ;; help | usage | --help | --usage | -h) - zxing read; - zxing write; + zxing read --help; + zxing write --help; ;; *) zxing read "$choice" "$@" From 90a39aefb7198a8a0d622f7d7df14d4b2f500504 Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 21 Dec 2025 10:03:28 +0000 Subject: [PATCH 3/6] zxing: correctly reference scripts with absolute paths This is necessary for zxing to work properly when it is not in PATH, such as when using nix run, and ensures that the correct version is used. --- pkgs/by-name/zx/zxing/zxing-cmdline-encoder.sh | 2 +- pkgs/by-name/zx/zxing/zxing-cmdline-runner.sh | 2 +- pkgs/by-name/zx/zxing/zxing.sh | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/zx/zxing/zxing-cmdline-encoder.sh b/pkgs/by-name/zx/zxing/zxing-cmdline-encoder.sh index a17ba49cecf0..29795971029b 100644 --- a/pkgs/by-name/zx/zxing/zxing-cmdline-encoder.sh +++ b/pkgs/by-name/zx/zxing/zxing-cmdline-encoder.sh @@ -1,3 +1,3 @@ #! /bin/sh -java-zxing com.google.zxing.client.j2se.CommandLineEncoder "$@" +@out@/bin/java-zxing com.google.zxing.client.j2se.CommandLineEncoder "$@" diff --git a/pkgs/by-name/zx/zxing/zxing-cmdline-runner.sh b/pkgs/by-name/zx/zxing/zxing-cmdline-runner.sh index cb2a25dc03f7..f2ec839e69c1 100644 --- a/pkgs/by-name/zx/zxing/zxing-cmdline-runner.sh +++ b/pkgs/by-name/zx/zxing/zxing-cmdline-runner.sh @@ -1,3 +1,3 @@ #! /bin/sh -java-zxing com.google.zxing.client.j2se.CommandLineRunner "$@" +@out@/bin/java-zxing com.google.zxing.client.j2se.CommandLineRunner "$@" diff --git a/pkgs/by-name/zx/zxing/zxing.sh b/pkgs/by-name/zx/zxing/zxing.sh index 40a416946aa0..dbc2083c0658 100644 --- a/pkgs/by-name/zx/zxing/zxing.sh +++ b/pkgs/by-name/zx/zxing/zxing.sh @@ -3,16 +3,16 @@ choice="$1"; shift case "$choice" in encode | create | write | CommandLineEncoder) - zxing-cmdline-encoder "$@"; + @out@/bin/zxing-cmdline-encoder "$@"; ;; decode | read | run | CommandLineRunner) - zxing-cmdline-runner "$@"; + @out@/bin/zxing-cmdline-runner "$@"; ;; help | usage | --help | --usage | -h) - zxing read --help; - zxing write --help; + @out@/bin/zxing read --help; + @out@/bin/zxing write --help; ;; *) - zxing read "$choice" "$@" + @out@/bin/zxing read "$choice" "$@"; ;; esac From 9ee03b77d47ee43516903db4c82637a67311a37a Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 21 Dec 2025 10:03:29 +0000 Subject: [PATCH 4/6] zxing: avoid warning when no arguments are passed --- pkgs/by-name/zx/zxing/zxing.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/zx/zxing/zxing.sh b/pkgs/by-name/zx/zxing/zxing.sh index dbc2083c0658..7c81c50aa451 100644 --- a/pkgs/by-name/zx/zxing/zxing.sh +++ b/pkgs/by-name/zx/zxing/zxing.sh @@ -1,6 +1,6 @@ #! /bin/sh choice="$1"; -shift +[ "$#" = "0" ] || shift; case "$choice" in encode | create | write | CommandLineEncoder) @out@/bin/zxing-cmdline-encoder "$@"; From 5f5ec4e6115ec05aaa89f0cb2ab13ed52b547d21 Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 21 Dec 2025 10:03:29 +0000 Subject: [PATCH 5/6] zxing: add meta attributes --- pkgs/by-name/zx/zxing/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/zx/zxing/package.nix b/pkgs/by-name/zx/zxing/package.nix index 7a54c85801da..23f75a5ca693 100644 --- a/pkgs/by-name/zx/zxing/package.nix +++ b/pkgs/by-name/zx/zxing/package.nix @@ -39,12 +39,14 @@ maven.buildMavenPackage rec { ''; meta = { + changelog = "https://github.com/zxing/zxing/releases/tag/zxing-${version}"; description = "1D and 2D code reading library"; sourceProvenance = with lib.sourceTypes; [ binaryBytecode fromSource ]; license = lib.licenses.asl20; + mainProgram = "zxing"; maintainers = [ lib.maintainers.raskin ]; platforms = lib.platforms.linux; homepage = "https://github.com/zxing/zxing"; From 77ac9c6301ccf45befc77117a14668e0024900a9 Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 21 Dec 2025 10:03:30 +0000 Subject: [PATCH 6/6] zxing: add zxing-gui-runner --- pkgs/by-name/zx/zxing/package.nix | 11 ++++++----- pkgs/by-name/zx/zxing/zxing-gui-runner.sh | 3 +++ pkgs/by-name/zx/zxing/zxing.sh | 3 +++ 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 pkgs/by-name/zx/zxing/zxing-gui-runner.sh diff --git a/pkgs/by-name/zx/zxing/package.nix b/pkgs/by-name/zx/zxing/package.nix index 23f75a5ca693..3e961e814dc3 100644 --- a/pkgs/by-name/zx/zxing/package.nix +++ b/pkgs/by-name/zx/zxing/package.nix @@ -29,11 +29,12 @@ maven.buildMavenPackage rec { mkdir -p "$out/lib/java" "$out/bin" cp "target/javase-${version}-jar-with-dependencies.jar" "$out/lib/java" - substituteAll "${./java-zxing.sh}" "$out/bin/java-zxing" - substituteAll "${./zxing-cmdline-runner.sh}" "$out/bin/zxing-cmdline-runner" - substituteAll "${./zxing-cmdline-encoder.sh}" "$out/bin/zxing-cmdline-encoder" - substituteAll "${./zxing.sh}" "$out/bin/zxing" - chmod a+x "$out/bin"/* + for source in "${./java-zxing.sh}" "${./zxing-cmdline-encoder.sh}" "${./zxing-cmdline-runner.sh}" "${./zxing-gui-runner.sh}" "${./zxing.sh}"; do + target="''${source#*-}" + target="$out/bin/''${target%.sh}" + substituteAll "$source" "$target" + chmod a+x "$target" + done runHook postInstall ''; diff --git a/pkgs/by-name/zx/zxing/zxing-gui-runner.sh b/pkgs/by-name/zx/zxing/zxing-gui-runner.sh new file mode 100644 index 000000000000..69b81b5f8991 --- /dev/null +++ b/pkgs/by-name/zx/zxing/zxing-gui-runner.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +@out@/bin/java-zxing com.google.zxing.client.j2se.GUIRunner "$@" diff --git a/pkgs/by-name/zx/zxing/zxing.sh b/pkgs/by-name/zx/zxing/zxing.sh index 7c81c50aa451..f5891cfdd874 100644 --- a/pkgs/by-name/zx/zxing/zxing.sh +++ b/pkgs/by-name/zx/zxing/zxing.sh @@ -8,6 +8,9 @@ case "$choice" in decode | read | run | CommandLineRunner) @out@/bin/zxing-cmdline-runner "$@"; ;; + gui | GUIRunner) + @out@/bin/zxing-gui-runner "$@"; + ;; help | usage | --help | --usage | -h) @out@/bin/zxing read --help; @out@/bin/zxing write --help;