{ stdenv, fetchFromGitHub, buildDotnetPackage, dotnetPackages, gtksharp, gettext }: let mono-addins = dotnetPackages.MonoAddins; in buildDotnetPackage rec { name = "pinta-1.6"; baseName = "Pinta"; version = "1.6"; outputFiles = [ "bin/*" ]; buildInputs = [ gtksharp mono-addins gettext ]; xBuildFiles = [ "Pinta.sln" ]; src = fetchFromGitHub { owner = "PintaProject"; repo = "Pinta"; rev = version; sha256 = "0vgswy981c7ys4q7js5k85sky7bz8v32wsfq3br4j41vg92pw97d"; }; # Remove version information from nodes <Reference Include="... Version=... "> postPatch = with stdenv.lib; let csprojFiles = [ "Pinta/Pinta.csproj" "Pinta.Core/Pinta.Core.csproj" "Pinta.Effects/Pinta.Effects.csproj" "Pinta.Gui.Widgets/Pinta.Gui.Widgets.csproj" "Pinta.Resources/Pinta.Resources.csproj" "Pinta.Tools/Pinta.Tools.csproj" ]; versionedNames = [ "Mono\\.Addins" "Mono\\.Posix" "Mono\\.Addins\\.Gui" "Mono\\.Addins\\.Setup" ]; stripVersion = name: file: let match = ''<Reference Include="${name}([ ,][^"]*)?"''; replace = ''<Reference Include="${name}"''; in "sed -i -re 's/${match}/${replace}/g' ${file}\n"; # Map all possible pairs of two lists map2 = f: listA: listB: concatMap (a: map (f a) listB) listA; concatMap2Strings = f: listA: listB: concatStrings (map2 f listA listB); in concatMap2Strings stripVersion versionedNames csprojFiles + '' # For some reason there is no Microsoft.Common.tasks file # in ''${mono}/lib/mono/3.5 . substituteInPlace Pinta.Install.proj \ --replace 'ToolsVersion="3.5"' 'ToolsVersion="4.0"' \ --replace "/usr/local" "$out" ''; makeWrapperArgs = [ ''--prefix MONO_GAC_PREFIX ':' "${gtksharp}"'' ''--prefix LD_LIBRARY_PATH ':' "${gtksharp}/lib"'' ''--prefix LD_LIBRARY_PATH ':' "${gtksharp.gtk.out}/lib"'' ]; postInstall = '' # Do automake's job manually substitute xdg/pinta.desktop.in xdg/pinta.desktop \ --replace _Name Name \ --replace _Comment Comment \ --replace _GenericName GenericName \ --replace _X-GNOME-FullName X-GNOME-FullName xbuild /target:CompileTranslations Pinta.Install.proj xbuild /target:Install Pinta.Install.proj ''; meta = { homepage = http://www.pinta-project.com/; description = "Drawing/editing program modeled after Paint.NET"; license = stdenv.lib.licenses.mit; maintainers = with stdenv.lib.maintainers; [ viric ]; platforms = with stdenv.lib.platforms; linux; }; }