summary refs log tree commit diff
path: root/pkgs/development/libraries/aspell/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/aspell/default.nix')
-rw-r--r--pkgs/development/libraries/aspell/default.nix27
1 files changed, 21 insertions, 6 deletions
diff --git a/pkgs/development/libraries/aspell/default.nix b/pkgs/development/libraries/aspell/default.nix
index 5af340bef07..e69bbe0d2f2 100644
--- a/pkgs/development/libraries/aspell/default.nix
+++ b/pkgs/development/libraries/aspell/default.nix
@@ -23,12 +23,27 @@ stdenv.mkDerivation rec {
     );
   '';
 
-  # Note: Users should define the `ASPELL_CONF' environment variable to
-  # `data-dir $HOME/.nix-profile/lib/aspell/' so that they can access
-  # dictionaries installed in their profile.
-  #
-  # We can't use `$out/etc/aspell.conf' for that purpose since Aspell
-  # doesn't expand environment variables such as `$HOME'.
+  postInstall = ''
+    local prog="$out/bin/aspell"
+    local hidden="$out/bin/.aspell-wrapped"
+    mv "$prog" "$hidden"
+    cat > "$prog" <<END
+    #! $SHELL -e
+    if [ -z "\$ASPELL_CONF" ]; then
+      for p in \$NIX_PROFILES; do
+        if [ -d "\$p/lib/aspell" ]; then
+          ASPELL_CONF="data-dir \$p/lib/aspell"
+        fi
+      done
+      if [ -z "\$ASPELL_CONF" ] && [ -d "\$HOME/.nix-profile/lib/aspell" ]; then
+        ASPELL_CONF="data-dir \$HOME/.nix-profile/lib/aspell"
+      fi
+      export ASPELL_CONF
+    fi
+    exec "$hidden" "\$@"
+    END
+    chmod +x "$prog"
+  '';
 
   meta = {
     description = "Spell checker for many languages";