biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / misc / azuredatastudio / default.nix
blob86d50c030e172d3322509ad216f2e6797b6220e9
1 { stdenv
2 , lib
3 , fetchurl
4 , copyDesktopItems
5 , makeDesktopItem
6 , makeWrapper
7 , alsa-lib
8 , at-spi2-atk
9 , at-spi2-core
10 , cairo
11 , cups
12 , curl
13 , dbus
14 , expat
15 , gdk-pixbuf
16 , glib
17 , gnutar
18 , gtk3
19 , icu
20 , libdrm
21 , libunwind
22 , libuuid
23 , libxkbcommon
24 , mesa
25 , nspr
26 , nss
27 , openssl
28 , pango
29 , systemd
30 , xorg
31 , zlib
34 # from justinwoo/azuredatastudio-nix
35 # https://github.com/justinwoo/azuredatastudio-nix/blob/537c48aa3981cd1a82d5d6e508ab7e7393b3d7c8/default.nix
37 let
38   desktopItem = makeDesktopItem {
39     name = "azuredatastudio";
40     desktopName = "Azure Data Studio";
41     comment = "Data Management Tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.";
42     genericName = "Text Editor";
43     exec = "azuredatastudio --no-sandbox --unity-launch %F";
44     icon = "azuredatastudio";
45     startupNotify = true;
46     startupWMClass = "azuredatastudio";
47     categories = [ "Utility" "TextEditor" "Development" "IDE" ];
48     mimeTypes = [ "text/plain" "inode/directory" "application/x-azuredatastudio-workspace" ];
49     keywords = [ "azuredatastudio" ];
50     actions.new-empty-window = {
51       name = "New Empty Window";
52       exec = "azuredatastudio --no-sandbox --new-window %F";
53       icon = "azuredatastudio";
54     };
55   };
57   urlHandlerDesktopItem = makeDesktopItem {
58     name = "azuredatastudio-url-handler";
59     desktopName = "Azure Data Studio - URL Handler";
60     comment = "Azure Data Studio";
61     genericName = "Text Editor";
62     exec = "azuredatastudio --no-sandbox --open-url %U";
63     icon = "azuredatastudio";
64     startupNotify = true;
65     startupWMClass = "azuredatastudio";
66     categories = [ "Utility" "TextEditor" "Development" "IDE" ];
67     mimeTypes = [ "x-scheme-handler/azuredatastudio" ];
68     keywords = [ "azuredatastudio" ];
69     noDisplay = true;
70   };
72 stdenv.mkDerivation rec {
74   pname = "azuredatastudio";
75   version = "1.49.1";
77   desktopItems = [ desktopItem urlHandlerDesktopItem ];
79   src = fetchurl {
80     name = "${pname}-${version}.tar.gz";
82     # Url can be found at: https://github.com/microsoft/azuredatastudio/releases
83     # In the downloads table for Linux .tar.gz
84     # This will give a go.microsoft redirect link, I think it's better to use the direct link to which the redirect points.
85     # You can do so by using curl: curl -I <go.microsoft link>
86     url = "https://download.microsoft.com/download/7/8/3/783c2037-8607-43c4-a593-0936e965d38b/azuredatastudio-linux-1.49.1.tar.gz";
87     sha256 = "sha256-0LCrRUTTe8UEDgtGLvxVQL8pA5dwA6SvZEZSDILr7jo=";
88   };
90   nativeBuildInputs = [
91     makeWrapper
92     copyDesktopItems
93   ];
95   buildInputs = [
96     libuuid
97     at-spi2-core
98     at-spi2-atk
99   ];
101   installPhase = ''
102     runHook preInstall
104     mkdir -p $out/share/pixmaps
105     cp ${targetPath}/resources/app/resources/linux/code.png $out/share/pixmaps/azuredatastudio.png
107     runHook postInstall
108   '';
110   # change this to azuredatastudio-insiders for insiders releases
111   edition = "azuredatastudio";
112   targetPath = "$out/${edition}";
114   unpackPhase = ''
115     mkdir -p ${targetPath}
116     ${gnutar}/bin/tar xf $src --strip 1 -C ${targetPath}
117   '';
119   sqltoolsserviceRpath = lib.makeLibraryPath [
120     stdenv.cc.cc
121     libunwind
122     libuuid
123     icu
124     openssl
125     zlib
126     curl
127   ];
129   # this will most likely need to be updated when azuredatastudio's version changes
130   sqltoolsservicePath = "${targetPath}/resources/app/extensions/mssql/sqltoolsservice/Linux/5.0.20240724.1";
132   rpath = lib.concatStringsSep ":" [
133     (lib.makeLibraryPath [
134       alsa-lib
135       at-spi2-atk
136       cairo
137       cups
138       dbus
139       expat
140       gdk-pixbuf
141       glib
142       gtk3
143       mesa
144       nss
145       nspr
146       libdrm
147       xorg.libX11
148       xorg.libxcb
149       xorg.libXcomposite
150       xorg.libXdamage
151       xorg.libXext
152       xorg.libXfixes
153       xorg.libXrandr
154       xorg.libxshmfence
155       libxkbcommon
156       xorg.libxkbfile
157       pango
158       stdenv.cc.cc.lib
159       systemd
160     ])
161     targetPath
162     sqltoolsserviceRpath
163   ];
165   fixupPhase = ''
166     fix_sqltoolsservice()
167     {
168       mv ${sqltoolsservicePath}/$1 ${sqltoolsservicePath}/$1_old
169       patchelf \
170         --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
171         ${sqltoolsservicePath}/$1_old
173       makeWrapper \
174         ${sqltoolsservicePath}/$1_old \
175         ${sqltoolsservicePath}/$1 \
176         --set LD_LIBRARY_PATH ${sqltoolsserviceRpath}
177     }
179     fix_sqltoolsservice MicrosoftSqlToolsServiceLayer
180     fix_sqltoolsservice MicrosoftSqlToolsCredentials
181     fix_sqltoolsservice SqlToolsResourceProviderService
183     patchelf \
184       --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
185       ${targetPath}/${edition}
187     mkdir -p $out/bin
188     makeWrapper \
189       ${targetPath}/bin/${edition} \
190       $out/bin/azuredatastudio \
191       --set LD_LIBRARY_PATH ${rpath}
192   '';
194   meta = {
195     maintainers = with lib.maintainers; [ xavierzwirtz ];
196     description = "Data management tool that enables working with SQL Server, Azure SQL DB and SQL DW";
197     homepage = "https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio";
198     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
199     license = lib.licenses.unfreeRedistributable;
200     platforms = [ "x86_64-linux" ];
201     mainProgram = "azuredatastudio";
202   };