{ inputs, pkgs, ... }: let openvsx = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx; vscode-marketplace = inputs.nix-vscode-extensions.extensions.x86_64-linux.vscode-marketplace; version = "0.0.13"; resharper-code = (pkgs.vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { name = "resharper-code"; version = version; publisher = "jetbrains"; }; vsix = builtins.fetchurl { name = "jetbrains.resharper-code.zip"; url = "https://download.jetbrains.com/product?code=VSCRS&latest&distribution=linuxX64&type=eap&version=${version}"; sha256 = "sha256:1sq5sx8hfy853n6zpi1irjq7s3pyv87h8hl44qk0rb29d98sqxl0"; }; }).overrideAttrs (old: { nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.makeBinaryWrapper ]; postFixup = '' wrapProgram $out/share/vscode/extensions/jetbrains.resharper-code/resharper/linux-x64/JetBrains.VsCode.Backend \ --prefix LD_LIBRARY_PATH : ${pkgs.dotnet-sdk.icu}/lib ''; }); in { home.packages = with pkgs;[ nerd-fonts.space-mono ]; programs = { vscode = { enable = true; package = pkgs.vscodium; mutableExtensionsDir = false; profiles.default = { enableUpdateCheck = false; enableExtensionUpdateCheck = false; extensions = [ resharper-code # Requires DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 ] ++ (with openvsx;[ biomejs.biome mkhl.direnv dracula-theme.theme-dracula dbaeumer.vscode-eslint pkief.material-icon-theme jnoortheen.nix-ide esbenp.prettier-vscode loriscro.super mads-hartmann.bash-ide-vscode ms-vscode.wasm-wasi-core rust-lang.rust-analyzer tamasfe.even-better-toml mikestead.dotenv ms-python.python ms-python.debugpy charliermarsh.ruff ]) ++ (with vscode-marketplace;[ bradlc.vscode-tailwindcss ]); userSettings = with pkgs;{ "workbench.iconTheme" = "material-icon-theme"; "window.titleBarStyle" = "custom"; "workbench.colorTheme" = "Dracula Theme"; "explorer.compactFolders" = false; "chat.commandCenter.enabled" = false; "terminal.integrated.automationProfile.linux" = { "path" = "/bin/sh"; }; "editor.fontFamily" = "'SpaceMono Nerd Font', 'monospace', monospace"; "editor.fontSize" = 16; "editor.formatOnSave" = true; "editor.codeActionsOnSave" = { "source.organizeImports" = "always"; }; "files.autoSave" = "onWindowChange"; "[typescript]" = { "editor.defaultFormatter" = "biomejs.biome"; }; "[javascript]" = { "editor.defaultFormatter" = "biomejs.biome"; }; "[javascriptreact]" = { "editor.defaultFormatter" = "biomejs.biome"; }; "[typescriptreact]" = { "editor.defaultFormatter" = "biomejs.biome"; }; "[json]" = { "editor.defaultFormatter" = "biomejs.biome"; }; "[jsonc]" = { "editor.defaultFormatter" = "biomejs.biome"; }; # "biome.lsp.bin" = "${biome}/bin/biome"; #"biome.requireConfigFile" = true; "typescript.preferences.preferTypeOnlyAutoImports" = true; "nix.enableLanguageServer" = true; # Enable LSP. "nix.serverPath" = "${nixd}/bin/nixd"; # The path to the LSP server executable. "nix.serverSettings" = { nixd = { formatting.command = [ "${nixpkgs-fmt}/bin/nixpkgs-fmt" ]; }; }; "bashIde.shellcheckPath" = "${shellcheck}/bin/shellcheck"; "bashIde.shfmt.path" = "${shfmt}/bin/shfmt"; "rust-analyzer.rustfmt.overrideCommand" = [ "${rustfmt}/bin/rustfmt" ]; "tailwindCSS.classFunctions" = [ "cva" "cx" ]; }; }; }; }; }