nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 131 lines 3.5 kB view raw
1{ 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, 14}: 15 16stdenv.mkDerivation rec { 17 pname = "roomeqwizard"; 18 version = "5.31.3"; 19 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 }; 26 27 dontUnpack = true; 28 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 }; 37 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 }; 51 52 udevRules = '' 53 # MiniDSP UMIK-1 calibrated USB microphone 54 SUBSYSTEM=="usb", ATTR{idVendor}=="2752", ATTR{idProduct}=="0007", TAG+="uaccess" 55 ''; 56 57 nativeBuildInputs = [ makeWrapper ]; 58 59 buildPhase = '' 60 runHook preBuild 61 62 # set JDK path in installer 63 sed -E 's|^#\s*(INSTALL4J_JAVA_HOME_OVERRIDE=)|\1${jdk8}|' $src > installer 64 chmod +x installer 65 66 sed -e "s|INSTALLDIR|$out/share/roomeqwizard|" $responseFile > response.varfile 67 68 export HOME=$PWD 69 70 ./installer -q -varfile response.varfile 71 72 runHook postBuild 73 ''; 74 75 installPhase = '' 76 runHook preInstall 77 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 } 88 89 cp -r "$desktopItem/share/applications" $out/share/ 90 cp $out/share/roomeqwizard/.install4j/roomeqwizard.png "$out/share/icons/hicolor/256x256/apps/${pname}.png" 91 92 ${lib.optionalString recommendedUdevRules ''echo "$udevRules" > $out/lib/udev/rules.d/90-roomeqwizard.rules''} 93 94 runHook postInstall 95 ''; 96 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 100 101 set -euo pipefail 102 103 perlexpr='if (/current version.{1,10}v(\d+)\.(\d+)\.(\d+)/i) { print "$1.$2.$3"; break; }' 104 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")" 107 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 ''; 115 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 }; 131}