2024-09-08 19:22:14 -05:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
inputs,
|
|
|
|
lib,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}:
|
2024-09-12 20:50:53 -05:00
|
|
|
with lib; let
|
2024-09-08 19:22:14 -05:00
|
|
|
cfg = config.custom.programs.vscode;
|
2025-03-08 12:43:16 -06:00
|
|
|
hm = config.home-manager.users.${config.custom.username};
|
2024-09-12 20:50:53 -05:00
|
|
|
in {
|
2025-03-08 12:43:16 -06:00
|
|
|
options.custom.programs.vscode = {
|
|
|
|
enable = mkOption {default = false;};
|
|
|
|
};
|
2024-09-08 19:22:14 -05:00
|
|
|
|
2025-02-04 16:45:32 -06:00
|
|
|
config = {
|
2025-03-08 12:43:16 -06:00
|
|
|
# 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
|
|
|
|
};
|
2024-09-23 12:10:29 -05:00
|
|
|
|
2025-03-08 12:43:16 -06:00
|
|
|
# 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;
|
2024-09-08 19:22:14 -05:00
|
|
|
|
2025-03-08 12:43:16 -06:00
|
|
|
profiles.default = {
|
|
|
|
#?? nixos-rebuild repl > pkgs.REPO.*
|
|
|
|
extensions = with pkgs.open-vsx;
|
2025-02-28 17:02:43 -06:00
|
|
|
[
|
|
|
|
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
|
|
|
|
]
|
2025-03-08 12:43:16 -06:00
|
|
|
++ (with pkgs.vscode-marketplace; [
|
2025-02-28 17:02:43 -06:00
|
|
|
#!! 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
|
|
|
|
]);
|
2025-03-08 12:43:16 -06:00
|
|
|
};
|
2025-02-28 17:02:43 -06:00
|
|
|
};
|
2024-11-17 17:27:14 -06:00
|
|
|
|
2025-03-08 12:43:16 -06:00
|
|
|
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";
|
|
|
|
};
|
2024-11-17 17:27:14 -06:00
|
|
|
|
2025-03-08 12:43:16 -06:00
|
|
|
"VSCodium/User/keybindings.json" = {
|
|
|
|
force = true;
|
|
|
|
source = mkOutOfStoreSymlink "${config.custom.sync}/dev/config/vscode/keybindings.json";
|
|
|
|
};
|
2024-11-17 17:27:14 -06:00
|
|
|
|
2025-03-08 12:43:16 -06:00
|
|
|
"VSCodium/User/snippets/" = {
|
|
|
|
force = true;
|
|
|
|
source = mkOutOfStoreSymlink "${config.custom.sync}/dev/config/vscode/snippets/";
|
|
|
|
};
|
2025-02-04 16:45:32 -06:00
|
|
|
|
2025-03-08 12:43:16 -06:00
|
|
|
"VSCodium/User/profiles/" = {
|
|
|
|
force = true;
|
|
|
|
source = mkOutOfStoreSymlink "${config.custom.sync}/dev/config/vscode/profiles/";
|
|
|
|
};
|
2025-02-04 16:45:32 -06:00
|
|
|
};
|
2025-03-08 12:43:16 -06:00
|
|
|
}
|
|
|
|
];
|
2024-09-08 19:22:14 -05:00
|
|
|
};
|
|
|
|
}
|