diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 9014d09fb..4dda63a96 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -1888,6 +1888,20 @@ class BuildTarget(Target):
     def get_rpath_dirs_from_link_args(cls, args: T.List[str]) -> T.Set[str]:
         dirs: T.Set[str] = set()
 
+        nix_ldflags = os.environ.get('NIX_LDFLAGS', '').split()
+        next_is_path = False
+        # Try to add rpaths set by user or ld-wrapper so that they are not removed.
+        # Based on https://github.com/NixOS/nixpkgs/blob/69711a2f5ffe8cda208163be5258266172ff527f/pkgs/build-support/bintools-wrapper/ld-wrapper.sh#L148-L177
+        for flag in nix_ldflags:
+            if flag == '-rpath' or flag == '-L':
+                next_is_path = True
+            elif next_is_path or flag.startswith('-L/'):
+                if flag.startswith('-L/'):
+                    flag = flag[2:]
+                if flag.startswith('@storeDir@'):
+                    dirs.add(flag)
+                next_is_path = False
+
         for arg in args:
             if not arg.startswith('-Wl,'):
                 continue
