{ stdenv, lib, fetchurl, copyDesktopItems, makeDesktopItem, makeWrapper, alsa-lib, at-spi2-atk, at-spi2-core, cairo, cups, curl, dbus, expat, gdk-pixbuf, glib, gnutar, gtk3, icu, libdrm, libunwind, libuuid, libxkbcommon, mesa, nspr, nss, openssl, pango, systemd, xorg, zlib, }: # from justinwoo/azuredatastudio-nix # https://github.com/justinwoo/azuredatastudio-nix/blob/537c48aa3981cd1a82d5d6e508ab7e7393b3d7c8/default.nix let desktopItem = makeDesktopItem { name = "azuredatastudio"; desktopName = "Azure Data Studio"; comment = "Data Management Tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux."; genericName = "Text Editor"; exec = "azuredatastudio --no-sandbox --unity-launch %F"; icon = "azuredatastudio"; startupNotify = true; startupWMClass = "azuredatastudio"; categories = ["Utility" "TextEditor" "Development" "IDE"]; mimeTypes = ["text/plain" "inode/directory" "application/x-azuredatastudio-workspace"]; keywords = ["azuredatastudio"]; actions.new-empty-window = { name = "New Empty Window"; exec = "azuredatastudio --no-sandbox --new-window %F"; icon = "azuredatastudio"; }; }; urlHandlerDesktopItem = makeDesktopItem { name = "azuredatastudio-url-handler"; desktopName = "Azure Data Studio - URL Handler"; comment = "Azure Data Studio"; genericName = "Text Editor"; exec = "azuredatastudio --no-sandbox --open-url %U"; icon = "azuredatastudio"; startupNotify = true; startupWMClass = "azuredatastudio"; categories = ["Utility" "TextEditor" "Development" "IDE"]; mimeTypes = ["x-scheme-handler/azuredatastudio"]; keywords = ["azuredatastudio"]; noDisplay = true; }; in stdenv.mkDerivation rec { pname = "azuredatastudio"; version = "1.47.0"; desktopItems = [desktopItem urlHandlerDesktopItem]; src = fetchurl { name = "${pname}-${version}.tar.gz"; url = "https://azuredatastudio-update.azurewebsites.net/${version}/linux-x64/stable"; sha256 = "0e094179ffb883d0da8fdbe9721a32402303bf68f411445f2d="; }; nativeBuildInputs = [ makeWrapper copyDesktopItems ]; buildInputs = [ libuuid at-spi2-core at-spi2-atk ]; installPhase = '' runHook preInstall mkdir -p $out/share/pixmaps cp ${targetPath}/resources/app/resources/linux/code.png $out/share/pixmaps/azuredatastudio.png runHook postInstall ''; # change this to azuredatastudio-insiders for insiders releases edition = "azuredatastudio"; targetPath = "$out/${edition}"; unpackPhase = '' mkdir -p ${targetPath} ${gnutar}/bin/tar xf $src --strip 1 -C ${targetPath} ''; sqltoolsserviceRpath = lib.makeLibraryPath [ stdenv.cc.cc libunwind libuuid icu openssl zlib curl ]; # this will most likely need to be updated when azuredatastudio's version changes sqltoolsservicePath = "${targetPath}/resources/app/extensions/mssql/sqltoolsservice/Linux/4.7.1.6"; rpath = lib.concatStringsSep ":" [ (lib.makeLibraryPath [ alsa-lib at-spi2-atk cairo cups dbus expat gdk-pixbuf glib gtk3 mesa nss nspr libdrm xorg.libX11 xorg.libxcb xorg.libXcomposite xorg.libXdamage xorg.libXext xorg.libXfixes xorg.libXrandr xorg.libxshmfence libxkbcommon xorg.libxkbfile pango stdenv.cc.cc.lib systemd ]) targetPath sqltoolsserviceRpath ]; fixupPhase = '' fix_sqltoolsservice() { mv ${sqltoolsservicePath}/$1 ${sqltoolsservicePath}/$1_old patchelf \ --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \ ${sqltoolsservicePath}/$1_old makeWrapper \ ${sqltoolsservicePath}/$1_old \ ${sqltoolsservicePath}/$1 \ --set LD_LIBRARY_PATH ${sqltoolsserviceRpath} } fix_sqltoolsservice MicrosoftSqlToolsServiceLayer fix_sqltoolsservice MicrosoftSqlToolsCredentials fix_sqltoolsservice SqlToolsResourceProviderService patchelf \ --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \ ${targetPath}/${edition} mkdir -p $out/bin makeWrapper \ ${targetPath}/bin/${edition} \ $out/bin/azuredatastudio \ --set LD_LIBRARY_PATH ${rpath} ''; meta = { maintainers = with lib.maintainers; [xavierzwirtz]; description = "A data management tool that enables working with SQL Server, Azure SQL DB and SQL DW"; homepage = "https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio"; sourceProvenance = with lib.sourceTypes; [binaryNativeCode]; license = lib.licenses.unfreeRedistributable; platforms = ["x86_64-linux"]; }; }