aboutsummaryrefslogtreecommitdiff
path: root/home-manager/modules/programs/vscode.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/modules/programs/vscode.nix')
-rw-r--r--home-manager/modules/programs/vscode.nix30
1 files changed, 21 insertions, 9 deletions
diff --git a/home-manager/modules/programs/vscode.nix b/home-manager/modules/programs/vscode.nix
index fdaea0ba4fe..cf7ac722210 100644
--- a/home-manager/modules/programs/vscode.nix
+++ b/home-manager/modules/programs/vscode.nix
@@ -11,7 +11,13 @@ let
configDir = {
"vscode" = "Code";
"vscode-insiders" = "Code - Insiders";
- "vscodium" = "Codium";
+ "vscodium" = "VSCodium";
+ }.${vscodePname};
+
+ extensionDir = {
+ "vscode" = "vscode";
+ "vscode-insiders" = "vscode-insiders";
+ "vscodium" = "vscode-oss";
}.${vscodePname};
configFilePath =
@@ -21,7 +27,7 @@ let
"${config.xdg.configHome}/${configDir}/User/settings.json";
# TODO: On Darwin where are the extensions?
- extensionPath = ".${vscodePname}/extensions";
+ extensionPath = ".${extensionDir}/extensions";
in
{
@@ -71,18 +77,24 @@ in
# Adapted from https://discourse.nixos.org/t/vscode-extensions-setup/1801/2
home.file =
let
- toPaths = p:
- # Links every dir in p to the extension path.
- mapAttrsToList (k: v:
- {
- "${extensionPath}/${k}".source = "${p}/${k}";
- }) (builtins.readDir p);
+ toPaths = path:
+ let
+ p = "${path}/share/vscode/extensions";
+ in
+ # Links every dir in p to the extension path.
+ mapAttrsToList (k: v:
+ {
+ "${extensionPath}/${k}".source = "${p}/${k}";
+ }) (builtins.readDir p);
toSymlink = concatMap toPaths cfg.extensions;
in
foldr
(a: b: a // b)
{
- "${configFilePath}".text = builtins.toJSON cfg.userSettings;
+ "${configFilePath}" =
+ mkIf (cfg.userSettings != {}) {
+ text = builtins.toJSON cfg.userSettings;
+ };
}
toSymlink;
};