nixpkgs/pkgs/applications/misc/azuredatastudio/default.nix
2024-02-11 03:19:15 +01:00

198 lines
4.8 KiB
Nix

{ 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.44.1";
desktopItems = [ desktopItem urlHandlerDesktopItem ];
src = fetchurl {
name = "${pname}-${version}.tar.gz";
url = "https://azuredatastudio-update.azurewebsites.net/${version}/linux-x64/stable";
sha256 = "sha256-6kEV331kt+/7/uWKZmTTkJX4P06CfxC8Ogq052qlUEg=";
};
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" ];
mainProgram = "azuredatastudio";
};
}