python312Packages.mandown: 1.10.0 -> 1.10.1 (#370595)
[NixPkgs.git] / pkgs / by-name / ro / roomeqwizard / package.nix
blobf5aa37186d5be41c0783ddb16e3f22b98ba2cee4
2   coreutils,
3   fetchurl,
4   gawk,
5   gnused,
6   jdk8,
7   lib,
8   makeDesktopItem,
9   makeWrapper,
10   stdenv,
11   writeScript,
12   writeTextFile,
13   recommendedUdevRules ? true,
16 stdenv.mkDerivation rec {
17   pname = "roomeqwizard";
18   version = "5.31.3";
20   src = fetchurl {
21     url = "https://www.roomeqwizard.com/installers/REW_linux_no_jre_${
22       lib.replaceStrings [ "." ] [ "_" ] version
23     }.sh";
24     sha256 = "sha256-qaGkKVoiBJ2UWVKAMqbuqNFi6FGcblMxAbYwhf/71CY=";
25   };
27   dontUnpack = true;
29   desktopItem = makeDesktopItem {
30     name = pname;
31     exec = pname;
32     icon = pname;
33     desktopName = "REW";
34     genericName = "Software for audio measurements";
35     categories = [ "AudioVideo" ];
36   };
38   responseFile = writeTextFile {
39     name = "response.varfile";
40     text = ''
41       createDesktopLinkAction$Boolean=false
42       executeLauncherAction$Boolean=false
43       mem$Integer=1
44       opengl$Boolean=false
45       sys.adminRights$Boolean=false
46       sys.installationDir=INSTALLDIR
47       sys.languageId=en
48       sys.programGroupDisabled$Boolean=true
49     '';
50   };
52   udevRules = ''
53     # MiniDSP UMIK-1 calibrated USB microphone
54     SUBSYSTEM=="usb", ATTR{idVendor}=="2752", ATTR{idProduct}=="0007", TAG+="uaccess"
55   '';
57   nativeBuildInputs = [ makeWrapper ];
59   buildPhase = ''
60     runHook preBuild
62     # set JDK path in installer
63     sed -E 's|^#\s*(INSTALL4J_JAVA_HOME_OVERRIDE=)|\1${jdk8}|' $src > installer
64     chmod +x installer
66     sed -e "s|INSTALLDIR|$out/share/roomeqwizard|" $responseFile > response.varfile
68     export HOME=$PWD
70     ./installer -q -varfile response.varfile
72     runHook postBuild
73   '';
75   installPhase = ''
76     runHook preInstall
78     mkdir -p $out/bin $out/lib/udev/rules.d $out/share/icons/hicolor/256x256/apps
79     makeWrapper $out/share/roomeqwizard/roomeqwizard $out/bin/roomeqwizard \
80       --set INSTALL4J_JAVA_HOME_OVERRIDE ${jdk8} \
81       --prefix PATH : ${
82         lib.makeBinPath [
83           coreutils
84           gnused
85           gawk
86         ]
87       }
89     cp -r "$desktopItem/share/applications" $out/share/
90     cp $out/share/roomeqwizard/.install4j/roomeqwizard.png "$out/share/icons/hicolor/256x256/apps/${pname}.png"
92     ${lib.optionalString recommendedUdevRules ''echo "$udevRules" > $out/lib/udev/rules.d/90-roomeqwizard.rules''}
94     runHook postInstall
95   '';
97   passthru.updateScript = writeScript "${pname}-update.sh" ''
98     #!/usr/bin/env nix-shell
99     #!nix-shell -i bash -p curl common-updater-scripts nixpkgs-fmt coreutils perl
101     set -euo pipefail
103     perlexpr='if (/current version.{1,10}v(\d+)\.(\d+)\.(\d+)/i) { print "$1.$2.$3"; break; }'
105     oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')"
106     latestVersion="$(curl -sS https://www.roomeqwizard.com/index.html | perl -ne "$perlexpr")"
108     if [ ! "$oldVersion" = "$latestVersion" ]; then
109       update-source-version ${pname} "$latestVersion" --version-key=version --print-changes
110       nixpkgs-fmt "pkgs/applications/audio/roomeqwizard/default.nix"
111     else
112       echo "${pname} is already up-to-date"
113     fi
114   '';
116   meta = with lib; {
117     homepage = "https://www.roomeqwizard.com/";
118     license = licenses.unfree;
119     platforms = platforms.all;
120     maintainers = with maintainers; [
121       orivej
122       zaninime
123     ];
124     description = "Room Acoustics Software";
125     longDescription = ''
126       REW is free software for room acoustic measurement, loudspeaker
127       measurement and audio device measurement.
128     '';
129     mainProgram = "roomeqwizard";
130   };