163 lines
3.4 KiB
Nix
163 lines
3.4 KiB
Nix
#
|
|
# Visual Studio Code + Dance (kakoune mode) Experiments
|
|
#
|
|
{
|
|
pkgs,
|
|
deprekages,
|
|
lib,
|
|
nil,
|
|
...
|
|
}:
|
|
let
|
|
# Simple helper to de-stringify invalid tokens.
|
|
author = name: pkgs.vscode-extensions.${name};
|
|
|
|
# Forces a package to be marked as having linux-aarch64 support.
|
|
forceArmLinux =
|
|
pkg:
|
|
pkg.overrideAttrs (prev: {
|
|
meta.platforms = prev.meta.platforms ++ [ "aarch64-linux" ];
|
|
});
|
|
in
|
|
{
|
|
programs.vscode = {
|
|
enable = true;
|
|
|
|
package = pkgs.vscode.override {};
|
|
|
|
#
|
|
# Extensions to include with vscode.
|
|
#
|
|
extensions = with (pkgs.vscode-extensions // deprekages.vscode-extensions); [
|
|
# Requires a qualified name due to the leading '1'.
|
|
#(author "1Password").op-vscode
|
|
|
|
# appearance
|
|
oderwat.indent-rainbow
|
|
brandonkirbyson.solarized-palenight
|
|
|
|
# behavior
|
|
usernamehw.errorlens
|
|
asvetliakov.vscode-neovim
|
|
editorconfig.editorconfig
|
|
|
|
# general add-ons
|
|
adpyke.codesnap
|
|
ms-toolsai.jupyter
|
|
ms-vscode.hexeditor
|
|
ms-vscode.cmake-tools
|
|
#ms-vscode.makefile-tools
|
|
streetsidesoftware.code-spell-checker
|
|
|
|
# nix
|
|
jnoortheen.nix-ide
|
|
arrterian.nix-env-selector
|
|
brettm12345.nixfmt-vscode
|
|
|
|
# rust
|
|
fill-labs.dependi
|
|
#rust-lang.rust-analyzer
|
|
njpwerner.autodocstring
|
|
|
|
# python
|
|
#(forceArmLinux ms-python.python)
|
|
|
|
# c/c++
|
|
ms-vscode.cpptools
|
|
|
|
# misc languages
|
|
golang.go
|
|
graphql.vscode-graphql
|
|
graphql.vscode-graphql-syntax
|
|
|
|
# accessibility / talon, for when our neuro condition is wonk
|
|
pokey.talon
|
|
pokey.cursorless
|
|
pokey.parse-tree
|
|
pokey.command-server
|
|
|
|
];
|
|
|
|
#
|
|
# Keybindings.
|
|
#
|
|
keybindings = [
|
|
{
|
|
key = "shift shift";
|
|
command = "workbench.action.quickOpen";
|
|
}
|
|
{
|
|
key = "alt alt";
|
|
command = "workbench.action.quickOpen";
|
|
}
|
|
{
|
|
key = "ctrl ctrl";
|
|
command = "workbench.action.showCommands";
|
|
}
|
|
];
|
|
|
|
#
|
|
# VSCode settings; runtime settings are immutable.
|
|
#
|
|
userSettings = {
|
|
|
|
# Theming.
|
|
"workbench.colorTheme" = lib.mkForce "Solarized-Palenight";
|
|
|
|
# Default to formatting on save.
|
|
"editor.formatOnSave" = true;
|
|
|
|
# Curosrless: don't show decorations until asked.
|
|
"cursorless.showOnStart" = false;
|
|
|
|
# We have our own accessibility tech -- the VSCode option
|
|
# mostly focuses around folks using screen readers.
|
|
"editor.accessibilitySupport" = "off";
|
|
|
|
#
|
|
# Rust
|
|
#
|
|
"rust-analyzer.checkOnSave.command" = "clippy";
|
|
|
|
#
|
|
# Nix
|
|
#
|
|
"nix.enableLanguageServer" = true;
|
|
"nix.serverPath" = "${nil.nil}/bin/nil";
|
|
"nix.formatterPath" = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
|
|
"[nix]"."editor.defaultFormatter" = "brettm12345.nixfmt-vscode";
|
|
|
|
#
|
|
# Neovim.
|
|
#
|
|
|
|
# Make it so the plugin is performant.
|
|
"extensions.experimental.affinity" = {
|
|
"asvetliakov.vscode-neovim" = 1;
|
|
};
|
|
|
|
#
|
|
# Spell Checking
|
|
#
|
|
"cSpell.userWords" = [
|
|
"serdes"
|
|
"ktemkin"
|
|
"kadkins"
|
|
"deprekated"
|
|
"unpoison"
|
|
"poisonable"
|
|
"hieratika"
|
|
];
|
|
|
|
};
|
|
|
|
#
|
|
# For now, let Nix manage everything.
|
|
#
|
|
enableUpdateCheck = false;
|
|
enableExtensionUpdateCheck = false;
|
|
mutableExtensionsDir = false;
|
|
|
|
};
|
|
|
|
}
|