{ lib, pkgs, config, flake-inputs, ... }: with lib; let cfg = config.eboskma.programs.vscode; in { options.eboskma.programs.vscode.enable = mkEnableOption "enable vscode"; config = mkIf cfg.enable { programs.vscode = { enable = true; package = pkgs.vscode; extensions = with pkgs.vscode-extensions; [ arrterian.nix-env-selector bbenoist.nix # brettm12345.nixfmt-vscode # aaronduino.nix-lsp # aliariff.auto-add-brackets bradlc.vscode-tailwindcss # bungcip.better-toml coolbear.systemd-unit-file # dawhite.mustache dbaeumer.vscode-eslint denoland.vscode-deno # dlasagno.rasi # dprint.dprint editorconfig.editorconfig esbenp.prettier-vscode # EugenWiens.bitbake elixir-lsp.vscode-elixir-ls # this is the one by Jake Becker, not the deprecated one # kumar-harsh.graphql-for-vscode matklad.rust-analyzer # monokai.theme-monokai-pro-vscode ms-azuretools.vscode-docker ms-python.python ms-python.vscode-pylance ms-toolsai.jupyter # ms-toolsai.jupyter-keymap # ms-toolsai.jupyter-renderers # ms-vscode-remote.remote-containers ms-vscode-remote.remote-ssh # ms-vscode-remote.remote-ssh-edit # ms-vscode.cmake-tools ms-vscode.cpptools # msaraiva.surface # pgourlain.erlang # phoenixframework.phoenix rubymaniac.vscode-paste-and-indent # surajbarkale.ninja timonwong.shellcheck # twxs.cmake vadimcn.vscode-lldb # vscode-icons-team.vscode-icons vscodevim.vim wholroyd.jinja xaver.clang-format zxh404.vscode-proto3 ]; keybindings = [ { "key" = "ctrl+t"; "command" = "-workbench.action.showAllSymbols"; } { "key" = "ctrl+t"; "command" = "workbench.action.quickOpen"; } { "key" = "ctrl+p"; "command" = "-workbench.action.quickOpen"; } ]; userSettings = builtins.fromJSON (builtins.readFile ./settings.json); }; home.packages = with pkgs; [ rnix-lsp shellcheck flake-inputs.alejandra.defaultPackage.${pkgs.system} ]; }; }