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

52 lines
1.6 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-python.python
ms-azuretools.vscode-docker
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
alefragnani.project-manager
fill-labs.dependi
] ++ lib.optionals userCfg.programs.browsers.firefox.enable
[ firefox-devtools.vscode-firefox-debug ];
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";
};
};
}