anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / misc / avalonia-ilspy / default.nix
blobfd1ad1a5237a5f70bfd79a04b8817ef9f5fd016a
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , buildDotnetModule
5 , dotnetCorePackages
6 , libX11
7 , libICE
8 , libSM
9 , libXi
10 , libXcursor
11 , libXext
12 , libXrandr
13 , fontconfig
14 , glew
15 , makeDesktopItem
16 , copyDesktopItems
17 , icoutils
18 , bintools
19 , fixDarwinDylibNames
20 , autoSignDarwinBinariesHook
23 buildDotnetModule rec {
24   pname = "avalonia-ilspy";
25   version = "7.2-rc";
27   src = fetchFromGitHub {
28     owner = "icsharpcode";
29     repo = "AvaloniaILSpy";
30     rev = "v${version}";
31     sha256 = "cCQy5cSpJNiVZqgphURcnraEM0ZyXGhzJLb5AThNfPQ=";
32   };
34   patches = [
35     # Remove dead nuget package source
36     ./remove-broken-sources.patch
37   ];
39   nativeBuildInputs = [
40     copyDesktopItems
41     icoutils
42   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ bintools fixDarwinDylibNames ]
43     ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [ autoSignDarwinBinariesHook ];
45   buildInputs = [
46     # Dependencies of nuget packages w/ native binaries
47     (lib.getLib stdenv.cc.cc)
48     fontconfig
49   ];
51   runtimeDeps = [
52     # Avalonia UI
53     libX11
54     libICE
55     libSM
56     libXi
57     libXcursor
58     libXext
59     libXrandr
60     fontconfig
61     glew
62   ];
64   postInstall = ''
65     icotool --icon -x ILSpy/ILSpy.ico
66     for i in 16 32 48 256; do
67       size=''${i}x''${i}
68       install -Dm444 *_''${size}x32.png $out/share/icons/hicolor/$size/apps/ILSpy.png
69     done
70   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
71     install -Dm444 ILSpy/Info.plist $out/Applications/ILSpy.app/Contents/Info.plist
72     install -Dm444 ILSpy/ILSpy.icns $out/Applications/ILSpy.app/Contents/Resources/ILSpy.icns
73     mkdir -p $out/Applications/ILSpy.app/Contents/MacOS
74     ln -s $out/bin/ILSpy $out/Applications/ILSpy.app/Contents/MacOS/ILSpy
75   '';
77   dotnet-sdk = dotnetCorePackages.sdk_6_0;
78   dotnet-runtime = dotnetCorePackages.runtime_6_0;
80   projectFile = "ILSpy/ILSpy.csproj";
81   nugetDeps = ./deps.nix;
82   executables = [ "ILSpy" ];
84   desktopItems = [
85     (makeDesktopItem {
86       name = "ILSpy";
87       desktopName = "ILSpy";
88       exec = "ILSpy";
89       icon = "ILSpy";
90       comment = ".NET assembly browser and decompiler";
91       categories = [
92         "Development"
93       ];
94       keywords = [
95         ".net"
96         "il"
97         "assembly"
98       ];
99     })
100   ];
102   meta = with lib; {
103     description = ".NET assembly browser and decompiler";
104     homepage = "https://github.com/icsharpcode/AvaloniaILSpy";
105     license = with licenses; [
106       mit
107       # third party dependencies
108       lgpl21Only
109       mspl
110     ];
111     sourceProvenance = with sourceTypes; [ fromSource binaryBytecode binaryNativeCode ];
112     maintainers = with maintainers; [ AngryAnt emilytrau ];
113     mainProgram = "ILSpy";
114   };