diff --git a/pkgs/by-name/od/odin2/package.nix b/pkgs/by-name/od/odin2/package.nix index 272dddea2f06..9209c499992d 100644 --- a/pkgs/by-name/od/odin2/package.nix +++ b/pkgs/by-name/od/odin2/package.nix @@ -15,28 +15,27 @@ libXrandr, libGL, gcc-unwrapped, + copyDesktopItems, + makeDesktopItem, + nix-update-script, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "odin2"; - version = "2.3.4"; + version = "2.4.1"; src = fetchFromGitHub { owner = "TheWaveWarden"; repo = "odin2"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-N96Nb7G6hqfh8DyMtHbttl/fRZUkS8f2KfPSqeMAhHY="; + hash = "sha256-j/rZvBNBTDo2vwESXbGIXR89PHOI1HK8hvzV7y6dJHI="; }; - postPatch = '' - sed '1i#include ' -i \ - libs/JUCELV2/modules/juce_gui_basics/windows/juce_ComponentPeer.h # gcc12 - ''; - nativeBuildInputs = [ cmake pkg-config + copyDesktopItems ]; buildInputs = [ @@ -63,6 +62,11 @@ stdenv.mkDerivation rec { ] ); + # JUCE wants to write to $HOME/.{lv2,vst3} + preConfigure = '' + export HOME="$TMPDIR" + ''; + cmakeFlags = [ "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar" "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib" @@ -70,14 +74,37 @@ stdenv.mkDerivation rec { ]; installPhase = '' - mkdir -p $out/bin $out/lib/vst3 $out/lib/lv2 $out/lib/clap + mkdir -p $out/bin $out/lib/vst3 $out/lib/lv2 $out/lib/clap $out/share/icons/hicolor/512x512/apps cd Odin2_artefacts/Release cp Standalone/Odin2 $out/bin cp -r VST3/Odin2.vst3 $out/lib/vst3 cp -r LV2/Odin2.lv2 $out/lib/lv2 cp -r CLAP/Odin2.clap $out/lib/clap + # There’s no application icon, so the vendor’s logo will have to do. + cp $src/manual/graphics/logo.png $out/share/icons/hicolor/512x512/apps/odin2.png + copyDesktopItems ''; + desktopItems = [ + (makeDesktopItem { + name = "Odin2"; + desktopName = "Odin 2"; + comment = "Odin 2 Free Synthesizer"; + icon = "odin2"; + startupNotify = true; + categories = [ + "AudioVideo" + "Audio" + "Midi" + "Music" + ]; + dbusActivatable = false; + exec = "Odin2"; + }) + ]; + + passthru.updateScript = nix-update-script { }; + meta = with lib; { description = "Odin 2 Synthesizer Plugin"; homepage = "https://thewavewarden.com/odin2"; @@ -86,4 +113,4 @@ stdenv.mkDerivation rec { maintainers = with maintainers; [ magnetophon ]; mainProgram = "Odin2"; }; -} +})