{ config, pkgs, ... }: let package = pkgs.vscodium; vscodePname = package.pname; configDir = { "vscode" = "Code"; "vscode-insiders" = "Code - Insiders"; "vscodium" = "VSCodium"; } .${vscodePname}; userDir = if pkgs.stdenv.hostPlatform.isDarwin then "Library/Application Support/${configDir}/User" else "${config.xdg.configHome}/${configDir}/User"; configFilePath = "${userDir}/settings.json"; keybindingsFilePath = "${userDir}/keybindings.json"; in { xdg.configFile."${config.home.homeDirectory}/${configFilePath}".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/Projects/nix-dots/user/modules/vscode/settings.json"; xdg.configFile."${config.home.homeDirectory}/${keybindingsFilePath}".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/Projects/nix-dots/user/modules/vscode/keybindings.json"; programs = { vscode = { enable = true; inherit package; extensions = with pkgs.open-vsx; [ # Editor vscodevim.vim pkgs.vscode-marketplace.miguelsolorio.min-theme streetsidesoftware.code-spell-checker mkhl.direnv # Git mhutchie.git-graph waderyan.gitblame # SQL qwtel.sqlite-viewer # Web Development astro-build.astro-vscode redwan-hossain.auto-rename-tag-clone bradlc.vscode-tailwindcss vue.volar pkgs.vscode-marketplace.vue.vscode-typescript-vue-plugin svelte.svelte-vscode dbaeumer.vscode-eslint esbenp.prettier-vscode antfu.iconify csstools.postcss ms-playwright.playwright # Dart / Flutter dart-code.dart-code # Go golang.go # Java redhat.java vscjava.vscode-java-debug vscjava.vscode-java-test vscjava.vscode-maven vscjava.vscode-java-dependency # Nix jnoortheen.nix-ide kamadorueda.alejandra # Rust rust-lang.rust-analyzer ]; }; }; }