diff --git a/flake.lock b/flake.lock index 85c6871..7efa93c 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1700419052, - "narHash": "sha256-U6a5f9ynbzcp8PMIHULbHPkbwp7YfPKOYmTcLqlalD4=", + "lastModified": 1700553346, + "narHash": "sha256-kW7uWsCv/lxuA824Ng6EYD9hlVYRyjuFn0xBbYltAeQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "993fb02d20760067b8ee19c713d94cee07037759", + "rev": "1aabb0a31b25ad83cfaa37c3fe29053417cd9a0f", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1700204040, - "narHash": "sha256-xSVcS5HBYnD3LTer7Y2K8ZQCDCXMa3QUD1MzRjHzuhI=", + "lastModified": 1700390070, + "narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c757e9bd77b16ca2e03c89bf8bc9ecb28e0c06ad", + "rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1700204040, - "narHash": "sha256-xSVcS5HBYnD3LTer7Y2K8ZQCDCXMa3QUD1MzRjHzuhI=", + "lastModified": 1700390070, + "narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c757e9bd77b16ca2e03c89bf8bc9ecb28e0c06ad", + "rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb", "type": "github" }, "original": { diff --git a/home-manager/desktop-shared.nix b/home-manager/desktop-shared.nix index e32c583..e668e4b 100644 --- a/home-manager/desktop-shared.nix +++ b/home-manager/desktop-shared.nix @@ -56,6 +56,7 @@ home.packages = with pkgs; [ # Coding: + azuredatastudio git kate @@ -126,6 +127,7 @@ userEmail = "git@gladtherescake.eu"; userName = "Lillian-Violet"; }; + # Nicely reload system units when changing configs systemd.user.startServices = "sd-switch"; } diff --git a/nixos/shared-desktop/configuration.nix b/nixos/shared-desktop/configuration.nix index f51403b..c89ebdc 100644 --- a/nixos/shared-desktop/configuration.nix +++ b/nixos/shared-desktop/configuration.nix @@ -58,6 +58,8 @@ environment.systemPackages = with pkgs; [ age alejandra + docker + docker-compose git-filter-repo home-manager input-leap @@ -159,12 +161,30 @@ boot.loader.systemd-boot.configurationLimit = 3; boot.loader.efi.canTouchEfiVariables = true; + users.groups.mssql = {}; + users.users = { lillian = { isNormalUser = true; - extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf"]; + extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf" "docker"]; shell = pkgs.zsh; }; + mssql = { + isSystemUser = true; + group = "mssql"; + }; + }; + + virtualisation.oci-containers.containers = { + mssql = { + image = "mcr.microsoft.com/mssql/server:2022-latest"; + ports = ["1433:1433"]; + environment = { + "ACCEPT_EULA" = "Y"; + "MSSQL_SA_PASSWORD" = "EbKihNUHg6S$V$qchADFmw!JCm##toc3"; + }; + volumes = ["/home/lillian/docker/mssql:/data"]; + }; }; # Enable completion of system packages by zsh diff --git a/pkgs/azuredatastudio/default.nix b/pkgs/azuredatastudio/default.nix new file mode 100644 index 0000000..880fa8f --- /dev/null +++ b/pkgs/azuredatastudio/default.nix @@ -0,0 +1,195 @@ +{ + 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"]; + }; + } diff --git a/pkgs/default.nix b/pkgs/default.nix index 3d9e23c..cc4f33d 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,4 +2,5 @@ # You can build them using 'nix build .#example' pkgs: { # example = pkgs.callPackage ./example { }; + azuredatastudio = pkgs.callPackage ./azuredatastudio {}; }