From bb92f8e28d08b5b763dac633d9886f91626afdae Mon Sep 17 00:00:00 2001
From: Dmitriy Pleshevskiy <dmitriy@pleshevski.ru>
Date: Fri, 7 Mar 2025 19:48:09 +0300
Subject: [PATCH] modules/dev-tools: apply latest changes to fix apache
 directory studio

---
 hosts/asus-gl553vd/users/jan.nix            |  2 --
 hosts/home/users/jan.nix                    |  4 ---
 modules/home-manager/programs/dev-tools.nix | 28 +++++++++++++++++++++
 users/jan/default.nix                       |  1 +
 4 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/hosts/asus-gl553vd/users/jan.nix b/hosts/asus-gl553vd/users/jan.nix
index c8421ad..b597d98 100644
--- a/hosts/asus-gl553vd/users/jan.nix
+++ b/hosts/asus-gl553vd/users/jan.nix
@@ -12,8 +12,6 @@ in
       xmonad.projects = import ./xmonad-projects.secret.nix;
     };
 
-    local.programs.dev-tools.k8s.enable = false;
-
     local.programs.libreoffice.enable = true;
 
     local.services.lan-mouse.settings = {
diff --git a/hosts/home/users/jan.nix b/hosts/home/users/jan.nix
index b59b055..78c1f67 100644
--- a/hosts/home/users/jan.nix
+++ b/hosts/home/users/jan.nix
@@ -23,8 +23,6 @@ in
 
     # local.programs.editors.arduino-ide.enable = true;
 
-    local.programs.dev-tools.k8s.enable = true;
-
     local.programs.libreoffice = {
       enable = true;
       spellCheckDicts = with pkgs.hunspellDicts; [
@@ -42,8 +40,6 @@ in
       # godot_4
       # libresprite
 
-      pkgs.apache-directory-studio
-
       ## 3d printer
       # Cannot build unstable Cura!
       # See: https://github.com/NixOS/nixpkgs/issues/325896
diff --git a/modules/home-manager/programs/dev-tools.nix b/modules/home-manager/programs/dev-tools.nix
index 0ee4747..2869b51 100644
--- a/modules/home-manager/programs/dev-tools.nix
+++ b/modules/home-manager/programs/dev-tools.nix
@@ -6,6 +6,29 @@ let
   kubectlCompletionsZsh = pkgs.runCommand "kubectl-completion.zsh" {} ''
     ${lib.getExe pkgs.kubectl} completion zsh > $out
   '';
+
+  # https://github.com/NixOS/nixpkgs/pull/384524/files
+  apacheDirectoryStudio = with pkgs.unstable; (apache-directory-studio.overrideAttrs (attrs: {
+    installPhase = ''
+      dest="$out/libexec/ApacheDirectoryStudio"
+      mkdir -p "$dest"
+      cp -r . "$dest"
+      mkdir -p "$out/bin"
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          "$dest/ApacheDirectoryStudio"
+      # About `/tmp/SWT-GDBusServer`, see
+      # https://github.com/adoptium/adoptium-support/issues/785#issuecomment-1866680133
+      # and
+      # https://github.com/adoptium/adoptium-support/issues/785#issuecomment-2387481967.
+      makeWrapper "$dest/ApacheDirectoryStudio" \
+          "$out/bin/ApacheDirectoryStudio" \
+          --prefix PATH : "${jdk}/bin" \
+          --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ glib webkitgtk_4_0 ] } \
+          --run "mkdir -p /tmp/SWT-GDBusServer"
+      install -D icon.xpm "$out/share/pixmaps/apache-directory-studio.xpm"
+      install -D -t "$out/share/applications" ${attrs.desktopItem}/share/applications/*
+    '';
+  }));
 in
 {
   options.local.programs.dev-tools = with lib; {
@@ -25,6 +48,7 @@ in
     eza.enable = mkEnableOption "eza. ls replacement";
     direnv.enable = mkEnableOption "direnv";
     zoxide.enable = mkEnableOption "zoxide";
+    ldap.enable = mkEnableOption "ldap";
   };
 
   config = lib.mkMerge [
@@ -109,5 +133,9 @@ in
     (lib.mkIf cfg.psql.enable {
       home.packages = [ cfg.psql.package ];
     })
+
+    (lib.mkIf cfg.ldap.enable {
+      home.packages = [ apacheDirectoryStudio ];
+    })
   ];
 }
diff --git a/users/jan/default.nix b/users/jan/default.nix
index 39f1cfb..86edae3 100644
--- a/users/jan/default.nix
+++ b/users/jan/default.nix
@@ -115,6 +115,7 @@
       eza.enable = lib.mkDefault true;
       direnv.enable = lib.mkDefault true;
       zoxide.enable = lib.mkDefault true;
+      ldap.enable = lib.mkDefault true;
     };
 
     local.programs.share-files.croc.enable = lib.mkDefault true;