nixos-config/configs/home-manager/foo-dogsquared/modules/programs/vs-code.nix

49 lines
1.3 KiB
Nix

{ config, lib, pkgs, ... }:
let
userCfg = config.users.foo-dogsquared;
cfg = userCfg.programs.vs-code;
in
{
options.users.foo-dogsquared.programs.vs-code.enable =
lib.mkEnableOption "foo-dogsquared's Visual Studio Code setup";
config = lib.mkIf cfg.enable {
suites.editors.vscode.enable = true;
programs.vscode = {
extensions = with pkgs.vscode-extensions; [
# Additional language support.
bbenoist.nix
graphql.vscode-graphql
ms-vscode.cmake-tools
ms-vscode.cpptools
ms-vscode.powershell
# Extra editor niceties.
eamodio.gitlens
mkhl.direnv
usernamehw.errorlens
vadimcn.vscode-lldb
# The other niceties.
editorconfig.editorconfig
];
userSettings = {
"extensions.ignoreRecommendations" = true;
};
};
# We're using Visual Studio Code as a git difftool and mergetool which is
# surprisingly good compared to the competition (which is not much).
programs.git.extraConfig = {
diff.tool = lib.mkDefault "vscode";
difftool.vscode.cmd = "code --wait --diff $LOCAL $REMOTE";
# It has a three-way merge.
merge.tool = lib.mkDefault "vscode";
mergetool.vscode.cmd = "code --wait --merge $REMOTE $LOCAL $BASE $MERGED";
};
};
}