forked from mirrors/nixpkgs
119 lines
3.3 KiB
Nix
119 lines
3.3 KiB
Nix
|
{ coreutils
|
||
|
, fetchurl
|
||
|
, gawk
|
||
|
, gnused
|
||
|
, jdk8
|
||
|
, lib
|
||
|
, makeDesktopItem
|
||
|
, makeWrapper
|
||
|
, stdenv
|
||
|
, writeScript
|
||
|
, writeTextFile
|
||
|
, recommendedUdevRules ? true
|
||
|
}:
|
||
|
|
||
|
stdenv.mkDerivation rec {
|
||
|
pname = "roomeqwizard";
|
||
|
version = "5.20.4";
|
||
|
|
||
|
src = fetchurl {
|
||
|
url = "https://www.roomeqwizard.com/installers/REW_linux_${lib.replaceChars [ "." ] [ "_" ] version}.sh";
|
||
|
sha256 = "0m2b5hwazy4vyjk51cmayys250rircs3c0v7bv5mn28h7hyq29s8";
|
||
|
};
|
||
|
|
||
|
dontUnpack = true;
|
||
|
|
||
|
desktopItem = makeDesktopItem {
|
||
|
name = pname;
|
||
|
exec = pname;
|
||
|
icon = pname;
|
||
|
desktopName = "REW";
|
||
|
genericName = "Software for audio measurements";
|
||
|
categories = "AudioVideo;";
|
||
|
};
|
||
|
|
||
|
responseFile = writeTextFile {
|
||
|
name = "response.varfile";
|
||
|
text = ''
|
||
|
createDesktopLinkAction$Boolean=false
|
||
|
executeLauncherAction$Boolean=false
|
||
|
mem$Integer=1
|
||
|
opengl$Boolean=false
|
||
|
sys.adminRights$Boolean=false
|
||
|
sys.installationDir=INSTALLDIR
|
||
|
sys.languageId=en
|
||
|
sys.programGroupDisabled$Boolean=true
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
udevRules = ''
|
||
|
# MiniDSP UMIK-1 calibrated USB microphone
|
||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="2752", ATTR{idProduct}=="0007", TAG+="uaccess"
|
||
|
'';
|
||
|
|
||
|
nativeBuildInputs = [ makeWrapper ];
|
||
|
|
||
|
buildPhase = ''
|
||
|
runHook preBuild
|
||
|
|
||
|
# set JDK path in installer
|
||
|
sed -E 's|^#\s*(INSTALL4J_JAVA_HOME_OVERRIDE=)|\1${jdk8}|' $src > installer
|
||
|
chmod +x installer
|
||
|
|
||
|
sed -e "s|INSTALLDIR|$out/share/roomeqwizard|" $responseFile > response.varfile
|
||
|
|
||
|
export HOME=$PWD
|
||
|
|
||
|
./installer -q -varfile response.varfile
|
||
|
|
||
|
runHook postBuild
|
||
|
'';
|
||
|
|
||
|
installPhase = ''
|
||
|
runHook preInstall
|
||
|
|
||
|
mkdir -p $out/bin $out/lib/udev/rules.d $out/share/icons/hicolor/256x256/apps
|
||
|
makeWrapper $out/share/roomeqwizard/roomeqwizard $out/bin/roomeqwizard \
|
||
|
--set INSTALL4J_JAVA_HOME_OVERRIDE ${jdk8} \
|
||
|
--prefix PATH : ${lib.makeBinPath [ coreutils gnused gawk ]}
|
||
|
|
||
|
cp -r "$desktopItem/share/applications" $out/share/
|
||
|
cp $out/share/roomeqwizard/.install4j/s_*.png "$out/share/icons/hicolor/256x256/apps/${pname}.png"
|
||
|
|
||
|
${lib.optionalString recommendedUdevRules ''echo "$udevRules" > $out/lib/udev/rules.d/90-roomeqwizard.rules''}
|
||
|
|
||
|
runHook postInstall
|
||
|
'';
|
||
|
|
||
|
passthru.updateScript = writeScript "${pname}-update.sh" ''
|
||
|
#!/usr/bin/env nix-shell
|
||
|
#!nix-shell -i bash -p curl common-updater-scripts nixpkgs-fmt coreutils perl
|
||
|
|
||
|
set -euo pipefail
|
||
|
|
||
|
perlexpr='if (/current version.{1,10}v(\d+)\.(\d+)\.(\d+)/i) { print "$1.$2.$3"; break; }'
|
||
|
|
||
|
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')"
|
||
|
latestVersion="$(curl -sS https://www.roomeqwizard.com/index.html | perl -ne "$perlexpr")"
|
||
|
|
||
|
if [ ! "$oldVersion" = "$latestVersion" ]; then
|
||
|
update-source-version ${pname} "$latestVersion" --version-key=version --print-changes
|
||
|
nixpkgs-fmt "pkgs/applications/audio/roomeqwizard/default.nix"
|
||
|
else
|
||
|
echo "${pname} is already up-to-date"
|
||
|
fi
|
||
|
'';
|
||
|
|
||
|
meta = with lib; {
|
||
|
homepage = "https://www.roomeqwizard.com/";
|
||
|
license = licenses.unfree;
|
||
|
platforms = platforms.all;
|
||
|
maintainers = with maintainers; [ zaninime ];
|
||
|
description = "Room Acoustics Software";
|
||
|
longDescription = ''
|
||
|
REW is free software for room acoustic measurement, loudspeaker
|
||
|
measurement and audio device measurement.
|
||
|
'';
|
||
|
};
|
||
|
}
|