nixpkgs/pkgs/by-name/mi/midisheetmusic/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

64 lines
2.0 KiB
Nix

{ lib, stdenv, fetchurl
, mono, dotnetPackages, makeWrapper
, gtk2, cups, timidity }:
let
version = "2.6";
in stdenv.mkDerivation {
pname = "midisheetmusic";
inherit version;
src = fetchurl {
url = "mirror://sourceforge/midisheetmusic/MidiSheetMusic-${version}-linux-src.tar.gz";
sha256 = "05c6zskj50g29f51lx8fvgzsi3f31z01zj6ssjjrgr7jfs7ak70p";
};
nativeCheckInputs = (with dotnetPackages; [ NUnitConsole ]);
nativeBuildInputs = [ mono makeWrapper ];
buildPhase = ''
for i in Classes/MidiPlayer.cs Classes/MidiSheetMusic.cs
do
substituteInPlace $i --replace "/usr/bin/timidity" "${timidity}/bin/timidity"
done
./build.sh
'';
# include missing file with unit tests for building
# switch from mono nunit dll to standalone dll otherwise mono compiler barks
# run via nunit3 console, because mono nunit console wants access $HOME
checkPhase = ''
substituteInPlace UnitTestDLL.csproj \
--replace "</Compile>" '</Compile><Compile Include="Classes\UnitTest.cs"/>' \
--replace nunit.framework.dll "${dotnetPackages.NUnit}/lib/dotnet/NUnit/nunit.framework.dll"
./build_unit_test.sh
nunit3-console bin/Debug/UnitTest.dll
'';
# 2 tests of 47 are still failing
doCheck = false;
installPhase = ''
mkdir -p $out/share/applications $out/share/pixmaps $out/bin
cp deb/midisheetmusic.desktop $out/share/applications
cp NotePair.png $out/share/pixmaps/midisheetmusic.png
cp bin/Debug/MidiSheetMusic.exe $out/bin/.MidiSheetMusic.exe
makeWrapper ${mono}/bin/mono $out/bin/midisheetmusic.mono.exe \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ gtk2 cups ]} \
--prefix PATH : ${lib.makeBinPath [ timidity ]} \
--add-flags $out/bin/.MidiSheetMusic.exe
'';
meta = with lib; {
description = "Convert MIDI Files to Piano Sheet Music for two hands";
mainProgram = "midisheetmusic.mono.exe";
homepage = "http://midisheetmusic.com";
license = licenses.gpl2;
maintainers = [ ];
platforms = platforms.linux;
};
}