From e28185a2c062e7d77fd2a71678a75ce7a2eeb6fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Na=C3=AFm=20Favier?= <n@monade.li>
Date: Thu, 25 Nov 2021 02:55:38 +0100
Subject: [PATCH] vscode: avoid unnecessary IFD (#2506)

---
 modules/programs/vscode.nix | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/modules/programs/vscode.nix b/modules/programs/vscode.nix
index 19420dc9..5fa2d59e 100644
--- a/modules/programs/vscode.nix
+++ b/modules/programs/vscode.nix
@@ -127,11 +127,13 @@ in {
     # Adapted from https://discourse.nixos.org/t/vscode-extensions-setup/1801/2
     home.file = let
       subDir = "share/vscode/extensions";
-      toPaths = path:
-        # Links every dir in path to the extension path.
-        mapAttrsToList
-        (k: _: { "${extensionPath}/${k}".source = "${path}/${subDir}/${k}"; })
-        (builtins.readDir (path + "/${subDir}"));
+      toPaths = ext:
+        # Links every dir in ext to the extension path.
+        map (k: { "${extensionPath}/${k}".source = "${ext}/${subDir}/${k}"; })
+        (if ext ? vscodeExtUniqueId then
+          [ ext.vscodeExtUniqueId ]
+        else
+          builtins.attrNames (builtins.readDir (ext + "/${subDir}")));
       toSymlink = concatMap toPaths cfg.extensions;
       dropNullFields = filterAttrs (_: v: v != null);
     in foldr (a: b: a // b) {