1
1
Fork 0
nixos/options/custom/programs/vscode.nix

121 lines
3.9 KiB
Nix
Raw Normal View History

{
config,
inputs,
lib,
pkgs,
...
}:
with lib; let
cfg = config.custom.programs.vscode;
hm = config.home-manager.users.${config.custom.username};
in {
options.custom.programs.vscode = {
enable = mkOption {default = false;};
};
config = {
# https://github.com/nix-community/nix-vscode-extensions
nixpkgs.overlays = [inputs.nix-vscode-extensions.overlays.default];
environment = {
sessionVariables = {
# https://github.com/nix-community/nixd/blob/main/nixd/docs/features.md
NIXD_FLAGS = "--inlay-hints=false"; # Disable package versions in the editor
};
# Extension dependencies
systemPackages = with pkgs; [
alejandra # nix-ide
blueprint-compiler # blueprint-gtk
caddy # caddyfile-support
nixd # nix-ide
powershell # powershell
shfmt # shell-format
];
};
home-manager.sharedModules = mkIf cfg.enable [
{
# https://wiki.nixos.org/wiki/VSCodium
# https://github.com/VSCodium/vscodium
#!! Configuration is imperative
programs.vscode = {
enable = true;
mutableExtensionsDir = false;
package = pkgs.vscodium;
profiles.default = {
#?? nixos-rebuild repl > pkgs.REPO.*
extensions = with pkgs.open-vsx;
[
aaron-bond.better-comments
antfu.iconify
antfu.unocss
bedsteler20.gnome-magic
bilelmoussaoui.flatpak-vscode
bmalehorn.vscode-fish
bmewburn.vscode-intelephense-client
bradlc.vscode-tailwindcss
csstools.postcss
dbaeumer.vscode-eslint
detachhead.basedpyright
#// eamodio.gitlens
esbenp.prettier-vscode
foxundermoon.shell-format
#// ginfuru.ginfuru-better-solarized-dark-theme
gruntfuggly.todo-tree
jnoortheen.nix-ide
koihik.vscode-lua-format
matthewpi.caddyfile-support
mhutchie.git-graph
mkhl.direnv
ms-python.black-formatter
ms-python.debugpy
ms-python.isort
ms-vscode.powershell
natizyskunk.sftp
pkief.material-icon-theme
pkief.material-product-icons
sketchbuch.vsc-workspace-sidebar
svelte.svelte-vscode
timonwong.shellcheck
vincaslt.highlight-matching-tag
]
++ (with pkgs.vscode-marketplace; [
#!! Some extensions go missing from open-vsx, so use official marketplace as fallback
# https://github.com/nix-community/nix-vscode-extensions?tab=readme-ov-file#note
bodil.blueprint-gtk
cormoran.disable-default-keybinding
ms-python.python
sirmspencer.vscode-autohide
]);
};
};
xdg.configFile = with hm.lib.file; {
# Imperative symlinks intended to be synced
"VSCodium/User/settings.json" = {
force = true;
source = mkOutOfStoreSymlink "${config.custom.sync}/dev/config/vscode/settings.json";
};
"VSCodium/User/keybindings.json" = {
force = true;
source = mkOutOfStoreSymlink "${config.custom.sync}/dev/config/vscode/keybindings.json";
};
"VSCodium/User/snippets/" = {
force = true;
source = mkOutOfStoreSymlink "${config.custom.sync}/dev/config/vscode/snippets/";
};
"VSCodium/User/profiles/" = {
force = true;
source = mkOutOfStoreSymlink "${config.custom.sync}/dev/config/vscode/profiles/";
};
};
}
];
};
}