mirror of
https://github.com/elwrcl/copnix.git
synced 2026-10-31 22:28:03 +03:00
codium
This commit is contained in:
1 parent
e71abc6c13
commit
b87dc873e9
13 files changed
+1298
-15
No files matched your search
@@ -0,0 +1,91 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.homeModules.home-vscode-extensions =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
vscode-helix = pkgs.vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "jasew";
|
||||
name = "vscode-helix-emulation";
|
||||
version = "0.7.0";
|
||||
hash = "sha256-gYyIVnXG9Atmik0c1FsRKO2idFnufwl26nOiH3DYPLY=";
|
||||
};
|
||||
meta.description = "Helix keybindings and commands for VS Code";
|
||||
};
|
||||
|
||||
symbols = pkgs.vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "miguelsolorio";
|
||||
name = "symbols";
|
||||
version = "0.0.26";
|
||||
hash = "sha256-UrkFmwwqMUsCuwZN2/t8ueDQBZ1WEzTF9IqirmTAZZU=";
|
||||
};
|
||||
meta.description = "Symbols icon theme for VS Code";
|
||||
};
|
||||
|
||||
open-remote-ssh = pkgs.vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "jeanp413";
|
||||
name = "open-remote-ssh";
|
||||
version = "0.3.1";
|
||||
};
|
||||
|
||||
vsix = pkgs.fetchurl {
|
||||
url = "https://open-vsx.org/api/jeanp413/open-remote-ssh/0.3.1/file/jeanp413.open-remote-ssh-0.3.1.vsix";
|
||||
hash = "sha256-xvFrIlq4aSXyvZ6Mxbox5hSXjM+hIPFQm99umeW+8T8=";
|
||||
name = "jeanp413-open-remote-ssh.vsix";
|
||||
};
|
||||
meta.description = "Remote SSH for VSCodium / Open VSX builds";
|
||||
};
|
||||
|
||||
gutter-preview = pkgs.vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "kisstkondoros";
|
||||
name = "vscode-gutter-preview";
|
||||
version = "0.32.2";
|
||||
hash = "sha256-JIr4UGuwy9Z5oH8D8elGMBGP8s40pYLCEZGmJAO5Ga0=";
|
||||
};
|
||||
meta.description = "Image preview in the gutter";
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscodium.profiles.default.extensions = [
|
||||
vscode-helix
|
||||
symbols
|
||||
open-remote-ssh
|
||||
gutter-preview
|
||||
]
|
||||
++ (with pkgs.vscode-extensions; [
|
||||
|
||||
# nix
|
||||
jnoortheen.nix-ide
|
||||
|
||||
# rust
|
||||
rust-lang.rust-analyzer
|
||||
tamasfe.even-better-toml
|
||||
vadimcn.vscode-lldb
|
||||
|
||||
# c / c++ —
|
||||
llvm-vs-code-extensions.vscode-clangd
|
||||
|
||||
# python
|
||||
ms-python.python
|
||||
charliermarsh.ruff
|
||||
|
||||
# ansible / yaml / shell
|
||||
redhat.vscode-yaml
|
||||
redhat.ansible
|
||||
timonwong.shellcheck
|
||||
|
||||
# workflow
|
||||
mkhl.direnv
|
||||
usernamehw.errorlens
|
||||
editorconfig.editorconfig
|
||||
alefragnani.bookmarks
|
||||
aaron-bond.better-comments
|
||||
|
||||
# agent
|
||||
anthropic.claude-code
|
||||
]);
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.homeModules.home-vscode-helix =
|
||||
{ ... }:
|
||||
# auto-generated
|
||||
let
|
||||
hx = "editorTextFocus && (extension.helixKeymap.normalMode || extension.helixKeymap.visualMode)";
|
||||
|
||||
bind = key: command: {
|
||||
inherit key command;
|
||||
when = hx;
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscodium.profiles.default = {
|
||||
userSettings = {
|
||||
"helixKeymap.toggleRelativeLineNumbers" = true;
|
||||
"extensions.experimental.affinity"."jasew.vscode-helix-emulation" = 1;
|
||||
};
|
||||
|
||||
keybindings = [
|
||||
# space: pickers
|
||||
(bind "space f" "workbench.action.quickOpen")
|
||||
(bind "space shift+f" "workbench.action.openRecent")
|
||||
(bind "space b" "workbench.action.showAllEditors")
|
||||
(bind "space j" "workbench.action.quickOpenPreviousRecentlyUsedEditor")
|
||||
(bind "space s" "workbench.action.gotoSymbol")
|
||||
(bind "space shift+s" "workbench.action.showAllSymbols")
|
||||
(bind "space slash" "workbench.action.findInFiles")
|
||||
(bind "space shift+/" "workbench.action.showCommands")
|
||||
(bind "space e" "workbench.view.explorer")
|
||||
|
||||
# space: lsp
|
||||
(bind "space k" "editor.action.showHover")
|
||||
(bind "space r" "editor.action.rename")
|
||||
(bind "space a" "editor.action.quickFix")
|
||||
(bind "space h" "editor.action.referenceSearch.trigger")
|
||||
(bind "space d" "workbench.actions.view.problems")
|
||||
(bind "space shift+d" "workbench.actions.view.problems")
|
||||
(bind "space g" "workbench.view.debug")
|
||||
|
||||
# space: clipboard
|
||||
(bind "space y" "editor.action.clipboardCopyAction")
|
||||
(bind "space p" "editor.action.clipboardPasteAction")
|
||||
|
||||
# space: window mode — hand back to the extension
|
||||
(bind "space w" "extension.helixKeymap.enterWindowMode")
|
||||
|
||||
# space q / Q — :buffer-close / :quit
|
||||
(bind "space q" "workbench.action.closeActiveEditor")
|
||||
(bind "space shift+q" "workbench.action.closeWindow")
|
||||
|
||||
# space u … — toggles
|
||||
(bind "space u w" "editor.action.toggleWordWrap")
|
||||
(bind "space u i" "editor.action.toggleInlayHints")
|
||||
(bind "space u h" "editor.action.toggleRenderWhitespace")
|
||||
(bind "space u d" "errorLens.toggle")
|
||||
(bind "space u m" "editor.action.toggleMinimap")
|
||||
(bind "space u s" "editor.action.toggleStickyScroll")
|
||||
(bind "space u z" "workbench.action.toggleZenMode")
|
||||
|
||||
# space l … — lsp. VS Code has no generic :lsp-restart; bouncing the
|
||||
# extension host is the one command that restarts every server.
|
||||
(bind "space l f" "editor.action.formatDocument")
|
||||
(bind "space l l" "workbench.action.output.toggleOutput")
|
||||
(bind "space l r" "workbench.action.restartExtensionHost")
|
||||
|
||||
# buffers — C-tab / C-S-tab without the MRU picker
|
||||
{
|
||||
key = "ctrl+tab";
|
||||
command = "workbench.action.nextEditor";
|
||||
when = "!extension.helixKeymap.insertMode";
|
||||
}
|
||||
{
|
||||
key = "ctrl+shift+tab";
|
||||
command = "workbench.action.previousEditor";
|
||||
when = "!extension.helixKeymap.insertMode";
|
||||
}
|
||||
|
||||
# escape returns to the buffer from any panel
|
||||
{
|
||||
key = "escape";
|
||||
command = "workbench.action.focusActiveEditorGroup";
|
||||
when = "sideBarFocus && !inputFocus";
|
||||
}
|
||||
{
|
||||
key = "escape";
|
||||
command = "workbench.action.closePanel";
|
||||
when = "panelFocus && !terminalFocus && !inputFocus";
|
||||
}
|
||||
|
||||
# unbind VS Code defaults that fight modal editing
|
||||
{
|
||||
key = "ctrl+shift+k";
|
||||
command = "-editor.action.deleteLines";
|
||||
}
|
||||
{
|
||||
key = "ctrl+enter";
|
||||
command = "-editor.action.insertLineAfter";
|
||||
}
|
||||
{
|
||||
key = "ctrl+shift+enter";
|
||||
command = "-editor.action.insertLineBefore";
|
||||
}
|
||||
{
|
||||
key = "tab";
|
||||
command = "-acceptSelectedSuggestion";
|
||||
when = "suggestWidgetVisible";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.homeModules.home-vscode-jujutsu =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
hx = "editorTextFocus && (extension.helixKeymap.normalMode || extension.helixKeymap.visualMode)";
|
||||
bind = key: command: {
|
||||
inherit key command;
|
||||
when = hx;
|
||||
};
|
||||
bindTask = key: name: {
|
||||
inherit key;
|
||||
command = "workbench.action.tasks.runTask";
|
||||
args = name;
|
||||
when = hx;
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscodium.profiles.default = {
|
||||
extensions = [ pkgs.vscode-extensions.jjk.jjk ];
|
||||
userSettings = {
|
||||
"jjk.jjPath" = "${pkgs.jujutsu}/bin/jj";
|
||||
"git.enabled" = false; # jj confilict
|
||||
};
|
||||
keybindings = [
|
||||
(bind "space v s" "workbench.view.scm")
|
||||
(bind "space v d" "jj.openDiffEditor")
|
||||
(bind "space v n" "workbench.action.editor.nextChange")
|
||||
(bind "space v p" "workbench.action.editor.previousChange")
|
||||
(bind "space v c" "jj.new") # jj commit ≈ describe + new
|
||||
(bind "space v e" "jj.describe")
|
||||
(bind "space v f" "jj.gitFetch")
|
||||
(bind "space v u" "jj.operationUndo")
|
||||
(bind "space v m" "jj.showBookmarkMenu")
|
||||
(bind "space v r" "jj.refresh")
|
||||
(bindTask "space v v" "lazyjj")
|
||||
(bindTask "space v g" "lazygit")
|
||||
(bindTask "space v l" "jj log")
|
||||
];
|
||||
|
||||
userTasks = {
|
||||
version = "2.0.0";
|
||||
tasks =
|
||||
let
|
||||
task = close: label: command: {
|
||||
inherit label command;
|
||||
type = "shell";
|
||||
presentation = {
|
||||
inherit close;
|
||||
reveal = "always";
|
||||
panel = "dedicated";
|
||||
clear = true;
|
||||
echo = false;
|
||||
showReuseMessage = false;
|
||||
};
|
||||
problemMatcher = [ ];
|
||||
};
|
||||
tui = task true;
|
||||
run = task false;
|
||||
in
|
||||
[
|
||||
(tui "lazyjj" "${pkgs.lazyjj}/bin/lazyjj")
|
||||
(tui "lazygit" "${pkgs.lazygit}/bin/lazygit")
|
||||
(run "jj log" "${pkgs.jujutsu}/bin/jj log")
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
{ ... }:
|
||||
{
|
||||
# auto-generated
|
||||
flake.homeModules.home-vscode-languages =
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.elars.vscode.flakePath = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "${config.home.homeDirectory}/copland";
|
||||
description = ''
|
||||
Absolute path to this flake on disk, used by nixd to evaluate
|
||||
NixOS / home-manager options for completion. Must be a real path,
|
||||
not a store path — nixd re-evaluates it live. Checkout dizini
|
||||
`copland` (GitHub deposunun adı `copnix`, aynı şey değil).
|
||||
'';
|
||||
};
|
||||
|
||||
config.programs.vscodium.profiles.default.userSettings = {
|
||||
# ── nix ─────────────────────────────────────────────────────────────
|
||||
"[nix]" = {
|
||||
"editor.defaultFormatter" = "jnoortheen.nix-ide";
|
||||
"editor.tabSize" = 2;
|
||||
};
|
||||
"nix.enableLanguageServer" = true;
|
||||
"nix.serverPath" = "${pkgs.nixd}/bin/nixd";
|
||||
"nix.formatterPath" = [ "${pkgs.nixfmt}/bin/nixfmt" ];
|
||||
"nix.serverSettings".nixd = {
|
||||
formatting.command = [ "${pkgs.nixfmt}/bin/nixfmt" ];
|
||||
options = {
|
||||
nixos.expr = ''(builtins.getFlake "${config.elars.vscode.flakePath}").nixosConfigurations.copland.options'';
|
||||
home-manager.expr = ''(builtins.getFlake "${config.elars.vscode.flakePath}").nixosConfigurations.copland.options.home-manager.users.value.${config.home.username}'';
|
||||
};
|
||||
};
|
||||
|
||||
# ── rust ────────────────────────────────────────────────────────────
|
||||
"[rust]"."editor.defaultFormatter" = "rust-lang.rust-analyzer";
|
||||
"rust-analyzer.check.command" = "clippy";
|
||||
"rust-analyzer.checkOnSave" = true;
|
||||
"rust-analyzer.cargo.buildScripts.enable" = true;
|
||||
"rust-analyzer.procMacro.enable" = true;
|
||||
"rust-analyzer.inlayHints.parameterHints.enable" = true;
|
||||
"rust-analyzer.inlayHints.typeHints.enable" = true;
|
||||
"rust-analyzer.inlayHints.chainingHints.enable" = true;
|
||||
"rust-analyzer.inlayHints.maxLength" = 30; # = inlay-hints-length-limit
|
||||
"rust-analyzer.completion.callable.snippets" = "add_parentheses";
|
||||
"rust-analyzer.lens.enable" = false;
|
||||
"rust-analyzer.imports.granularity.group" = "module";
|
||||
|
||||
# ── c / c++ — mesa, kernel (clangd reads compile_commands.json) ─────
|
||||
"[c]"."editor.defaultFormatter" = "llvm-vs-code-extensions.vscode-clangd";
|
||||
"[cpp]"."editor.defaultFormatter" = "llvm-vs-code-extensions.vscode-clangd";
|
||||
"clangd.path" = "${pkgs.clang-tools}/bin/clangd";
|
||||
"clangd.arguments" = [
|
||||
"--background-index"
|
||||
"--clang-tidy"
|
||||
"--header-insertion=never"
|
||||
"--completion-style=detailed"
|
||||
"--pch-storage=memory"
|
||||
"-j=4"
|
||||
];
|
||||
"clangd.onConfigChanged" = "restart";
|
||||
|
||||
# ── python / shell / data ───────────────────────────────────────────
|
||||
"[python]"."editor.defaultFormatter" = "charliermarsh.ruff";
|
||||
"python.languageServer" = "None";
|
||||
"python.defaultInterpreterPath" = "${pkgs.python3}/bin/python3";
|
||||
"[yaml]"."editor.defaultFormatter" = "redhat.vscode-yaml";
|
||||
"[markdown]"."editor.defaultFormatter" = "vscode.markdown-language-features";
|
||||
"[json]"."editor.defaultFormatter" = "vscode.json-language-features";
|
||||
"[jsonc]"."editor.defaultFormatter" = "vscode.json-language-features";
|
||||
"[shellscript]"."editor.tabSize" = 2;
|
||||
|
||||
# ── diagnostics — errorLens ≈ helix inline-diagnostics ──────────────
|
||||
"errorLens.enabled" = true;
|
||||
"errorLens.enabledDiagnosticLevels" = [
|
||||
"error"
|
||||
"warning"
|
||||
];
|
||||
"errorLens.messageBackgroundMode" = "none";
|
||||
"errorLens.gutterIconsEnabled" = false;
|
||||
"errorLens.fontStyleItalic" = true;
|
||||
"errorLens.followCursor" = "allLines";
|
||||
"errorLens.messageTemplate" = "$message";
|
||||
"problems.showCurrentInStatus" = true;
|
||||
|
||||
# ── direnv — every repo here is a flake devShell ────────────────────
|
||||
"direnv.restart.automatic" = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.homeModules.home-vscode-panels =
|
||||
{ ... }:
|
||||
{
|
||||
programs.vscodium.profiles.default.keybindings = [
|
||||
# alt+s — explorer
|
||||
{
|
||||
key = "alt+s";
|
||||
command = "workbench.view.explorer";
|
||||
}
|
||||
{
|
||||
key = "alt+s";
|
||||
command = "workbench.action.closeSidebar";
|
||||
when = "sideBarFocus && activeViewlet == 'workbench.view.explorer'";
|
||||
}
|
||||
|
||||
# alt+space — terminal
|
||||
{
|
||||
key = "alt+space";
|
||||
command = "workbench.action.terminal.toggleTerminal";
|
||||
}
|
||||
|
||||
# ctrl+space — source control
|
||||
{
|
||||
key = "ctrl+space";
|
||||
command = "workbench.view.scm";
|
||||
}
|
||||
{
|
||||
key = "ctrl+space";
|
||||
command = "workbench.action.toggleAuxiliaryBar";
|
||||
when = "auxiliaryBarFocus && activeAuxiliary == 'workbench.view.scm'";
|
||||
}
|
||||
{
|
||||
key = "ctrl+space";
|
||||
command = "workbench.action.closeSidebar";
|
||||
when = "sideBarFocus && activeViewlet == 'workbench.view.scm'";
|
||||
}
|
||||
{
|
||||
key = "ctrl+space";
|
||||
command = "-editor.action.triggerSuggest";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.homeModules.home-vscode-projects =
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.elars.vscode.projectRoots = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ config.home.homeDirectory ];
|
||||
};
|
||||
|
||||
config.programs.vscodium.profiles.default = {
|
||||
extensions = [ pkgs.vscode-extensions.alefragnani.project-manager ];
|
||||
|
||||
userSettings = {
|
||||
"projectManager.git.baseFolders" = config.elars.vscode.projectRoots;
|
||||
"projectManager.git.maxDepthRecursion" = 2;
|
||||
"projectManager.git.ignoredFolders" = [
|
||||
".direnv"
|
||||
".git"
|
||||
".jj"
|
||||
"build"
|
||||
"node_modules"
|
||||
"result"
|
||||
"target"
|
||||
];
|
||||
"projectManager.sortList" = "Recent";
|
||||
};
|
||||
|
||||
# space o — project manager
|
||||
keybindings = [
|
||||
{
|
||||
key = "space o";
|
||||
command = "projectManager.listProjects";
|
||||
when = "editorTextFocus && (extension.helixKeymap.normalMode || extension.helixKeymap.visualMode)";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.homeModules.home-vscode-spellcheck =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
xdg.configFile."cspell/.keep".text = "";
|
||||
programs.vscodium.profiles.default = {
|
||||
extensions = [ pkgs.vscode-extensions.streetsidesoftware.code-spell-checker ];
|
||||
|
||||
userSettings = {
|
||||
"cSpell.enabledFileTypes" = {
|
||||
"*" = false;
|
||||
markdown = true;
|
||||
plaintext = true;
|
||||
"git-commit" = true;
|
||||
};
|
||||
"cSpell.ignorePaths" = [
|
||||
".git/{index,*refs,*HEAD}"
|
||||
".vscode"
|
||||
"**/.direnv/**"
|
||||
"**/.jj/**"
|
||||
"**/flake.lock"
|
||||
"**/node_modules/**"
|
||||
"**/result"
|
||||
"**/target/**"
|
||||
"package-lock.json"
|
||||
];
|
||||
"cSpell.customDictionaries"."user-words" = {
|
||||
name = "user-words";
|
||||
path = "${config.home.homeDirectory}/.config/cspell/custom-words.txt";
|
||||
addWords = true;
|
||||
scope = "user";
|
||||
};
|
||||
"cSpell.userWords" = [
|
||||
"agenix"
|
||||
"bcachefs"
|
||||
"bpf"
|
||||
"clangd"
|
||||
"clvk"
|
||||
"copland"
|
||||
"crocus"
|
||||
"dendritic"
|
||||
"difftastic"
|
||||
"direnv"
|
||||
"dxvk"
|
||||
"easyeffects"
|
||||
"elars"
|
||||
"ghostty"
|
||||
"hasvk"
|
||||
"helix"
|
||||
"hyperx"
|
||||
"hyprland"
|
||||
"jujutsu"
|
||||
"kdeconnect"
|
||||
"kemuri"
|
||||
"kvantum"
|
||||
"lazyjj"
|
||||
"legcord"
|
||||
"mergiraf"
|
||||
"mesa"
|
||||
"niri"
|
||||
"nixd"
|
||||
"nixfmt"
|
||||
"nixos"
|
||||
"nixpkgs"
|
||||
"noctalia"
|
||||
"nushell"
|
||||
"pavucontrol"
|
||||
"playerctl"
|
||||
"radicle"
|
||||
"rusticl"
|
||||
"sched"
|
||||
"scrcpy"
|
||||
"soryu"
|
||||
"vscodium"
|
||||
"vsix"
|
||||
"vulkan"
|
||||
"wayland"
|
||||
"zellij"
|
||||
"zram"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,213 @@
|
||||
{ ... }:
|
||||
{
|
||||
# auto-generated
|
||||
flake.homeModules.home-vscode =
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
settingsPath = "${config.xdg.configHome}/VSCodium/User/settings.json";
|
||||
in
|
||||
{
|
||||
home.file.${settingsPath}.enable = false;
|
||||
|
||||
home.activation.vscodiumWritableSettings = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
_target="${settingsPath}"
|
||||
run mkdir -p "$(dirname "$_target")"
|
||||
# Önce sil: hedef store'a symlink'se install onu takip edip
|
||||
# salt-okunur dosyaya yazmaya çalışır.
|
||||
run rm -f "$_target"
|
||||
run install -m 0644 ${config.home.file.${settingsPath}.source} "$_target"
|
||||
'';
|
||||
|
||||
programs.vscodium = {
|
||||
enable = true;
|
||||
mutableExtensionsDir = false;
|
||||
|
||||
profiles.default.userSettings = {
|
||||
# ── editor: helix parity ──────────────────────────────────────────
|
||||
"editor.lineNumbers" = "relative";
|
||||
"editor.cursorSurroundingLines" = 8; # = scrolloff
|
||||
"editor.cursorBlinking" = "solid";
|
||||
"editor.cursorSmoothCaretAnimation" = "explicit";
|
||||
"editor.cursorStyle" = "block"; # per-mode override by the extension
|
||||
"editor.rulers" = [
|
||||
80
|
||||
100
|
||||
];
|
||||
"editor.wordWrap" = "on"; # = soft-wrap.enable
|
||||
"editor.wrappingIndent" = "indent";
|
||||
"editor.renderLineHighlight" = "all"; # = cursorline
|
||||
"editor.guides.indentation" = true; # = indent-guides.render
|
||||
"editor.guides.bracketPairs" = false;
|
||||
"editor.bracketPairColorization.enabled" = false;
|
||||
"editor.matchBrackets" = "always";
|
||||
"editor.renderWhitespace" = "none";
|
||||
"editor.renderControlCharacters" = true;
|
||||
"editor.stickyScroll.enabled" = false;
|
||||
"editor.occurrencesHighlight" = "singleFile";
|
||||
"editor.selectionHighlight" = true;
|
||||
"editor.emptySelectionClipboard" = false;
|
||||
"editor.find.seedSearchStringFromSelection" = "never";
|
||||
"editor.multiCursorModifier" = "alt";
|
||||
"editor.dragAndDrop" = false;
|
||||
"editor.linkedEditing" = true;
|
||||
"editor.foldingHighlight" = false;
|
||||
"editor.overviewRulerBorder" = false;
|
||||
"editor.hideCursorInOverviewRuler" = true;
|
||||
"editor.scrollBeyondLastLine" = false;
|
||||
"editor.smoothScrolling" = true;
|
||||
"editor.formatOnSave" = true;
|
||||
|
||||
# completion: enter inserts a newline, ctrl+x accepts
|
||||
"editor.acceptSuggestionOnEnter" = "off";
|
||||
"editor.acceptSuggestionOnCommitCharacter" = false;
|
||||
"editor.suggestSelection" = "first";
|
||||
"editor.suggest.insertMode" = "replace"; # = completion-replace
|
||||
"editor.suggest.preview" = true; # = preview-completion-insert
|
||||
"editor.suggest.showStatusBar" = true;
|
||||
"editor.snippetSuggestions" = "bottom";
|
||||
"editor.quickSuggestionsDelay" = 50; # = idle-timeout
|
||||
"editor.hover.delay" = 50;
|
||||
"editor.inlayHints.enabled" = "on";
|
||||
"editor.inlayHints.padding" = true;
|
||||
"editor.parameterHints.enabled" = true;
|
||||
"editor.wordBasedSuggestions" = "off";
|
||||
|
||||
# ── typography ────────────────────────────────────────────────────
|
||||
"editor.fontFamily" = "'JetBrainsMono Nerd Font Mono', 'JetBrainsMono Nerd Font', monospace";
|
||||
"editor.fontWeight" = "500";
|
||||
"editor.fontLigatures" = false;
|
||||
"editor.lineHeight" = 1.6;
|
||||
"workbench.fontAliasing" = "antialiased";
|
||||
"chat.editor.fontFamily" = "'JetBrainsMono Nerd Font Mono', monospace";
|
||||
"debug.console.fontFamily" = "'JetBrainsMono Nerd Font Mono', monospace";
|
||||
"markdown.preview.fontFamily" = "'JetBrainsMono Nerd Font', monospace";
|
||||
"scm.inputFontFamily" = "'JetBrainsMono Nerd Font Mono', monospace";
|
||||
|
||||
# ── chrome: editor + bufferline + statusline, nothing else ────────
|
||||
"workbench.iconTheme" = "symbols";
|
||||
"workbench.activityBar.location" = "hidden";
|
||||
"workbench.layoutControl.enabled" = false;
|
||||
"workbench.navigationControl.enabled" = false;
|
||||
"workbench.startupEditor" = "none";
|
||||
"workbench.tips.enabled" = false;
|
||||
"workbench.enableExperiments" = false;
|
||||
"workbench.tree.indent" = 16;
|
||||
"workbench.tree.renderIndentGuides" = "none";
|
||||
"workbench.list.smoothScrolling" = true;
|
||||
"workbench.browser.showInTitleBar" = false;
|
||||
"workbench.view.showQuietly"."workbench.panel.output" = false;
|
||||
"workbench.editor.showTabs" = "multiple"; # = bufferline "multiple"
|
||||
"workbench.editor.tabActionCloseVisibility" = false;
|
||||
"workbench.editor.tabSizing" = "shrink";
|
||||
"workbench.editor.editorActionsLocation" = "hidden";
|
||||
"workbench.editor.decorations.badges" = true;
|
||||
"workbench.editor.decorations.colors" = true;
|
||||
"workbench.editor.limit.enabled" = true;
|
||||
"workbench.editor.limit.value" = 12;
|
||||
"workbench.editor.limit.perEditorGroup" = true;
|
||||
"editor.minimap.enabled" = false;
|
||||
"editor.scrollbar.vertical" = "hidden";
|
||||
"editor.scrollbar.horizontal" = "hidden";
|
||||
"editor.scrollbar.verticalScrollbarSize" = 0;
|
||||
"breadcrumbs.enabled" = false;
|
||||
"window.commandCenter" = false;
|
||||
"window.titleBarStyle" = "custom";
|
||||
"window.menuStyle" = "custom";
|
||||
"window.controlsStyle" = "hidden";
|
||||
"window.customTitleBarVisibility" = "windowed";
|
||||
"window.title" = "\${rootName}\${separator}\${activeEditorMedium}\${separator}\${dirty}";
|
||||
"chat.titleBar.openInAgentsWindow.enabled" = false;
|
||||
"explorer.decorations.badges" = true;
|
||||
"explorer.decorations.colors" = true;
|
||||
"explorer.compactFolders" = false;
|
||||
"explorer.confirmDelete" = false;
|
||||
"explorer.confirmDragAndDrop" = false;
|
||||
"explorer.fileNesting.enabled" = true;
|
||||
"explorer.fileNesting.patterns" = {
|
||||
"flake.nix" = "flake.lock";
|
||||
"Cargo.toml" = "Cargo.lock, rust-toolchain.toml, rustfmt.toml, clippy.toml";
|
||||
};
|
||||
"outline.showVariables" = false;
|
||||
|
||||
# ── files ─────────────────────────────────────────────────────────
|
||||
"files.autoSave" = "onFocusChange"; # = auto-save.focus-lost
|
||||
"files.eol" = "\n";
|
||||
"files.trimTrailingWhitespace" = true;
|
||||
"files.trimFinalNewlines" = true;
|
||||
"files.insertFinalNewline" = true;
|
||||
"files.exclude" = {
|
||||
"**/.direnv" = true;
|
||||
"**/.jj" = true;
|
||||
"**/result" = true;
|
||||
"**/result-*" = true;
|
||||
};
|
||||
"files.watcherExclude" = {
|
||||
"**/.direnv/**" = true;
|
||||
"**/.git/**" = true;
|
||||
"**/.jj/**" = true;
|
||||
"**/build/**" = true;
|
||||
"**/dist/**" = true;
|
||||
"**/node_modules/**" = true;
|
||||
"**/target/**" = true;
|
||||
};
|
||||
"search.exclude" = {
|
||||
"**/.direnv" = true;
|
||||
"**/.jj" = true;
|
||||
"**/dist" = true;
|
||||
"**/node_modules" = true;
|
||||
"**/result" = true;
|
||||
"**/result-*" = true;
|
||||
"**/target" = true;
|
||||
};
|
||||
"search.useIgnoreFiles" = true;
|
||||
"search.smartCase" = true;
|
||||
"search.followSymlinks" = false;
|
||||
|
||||
# ── terminal: nushell, same colours as ghostty ────────────────────
|
||||
"terminal.integrated.defaultProfile.osx" = "nu";
|
||||
"terminal.integrated.defaultProfile.linux" = "nu";
|
||||
"terminal.integrated.profiles.osx".nu.path = "${pkgs.nushell}/bin/nu";
|
||||
"terminal.integrated.profiles.linux".nu.path = "${pkgs.nushell}/bin/nu";
|
||||
"terminal.integrated.fontFamily" = "'JetBrainsMono Nerd Font', monospace";
|
||||
"terminal.integrated.fontSize" = 13;
|
||||
"terminal.integrated.cursorStyle" = "block";
|
||||
"terminal.integrated.cursorBlinking" = false;
|
||||
"terminal.integrated.copyOnSelection" = true;
|
||||
"terminal.integrated.scrollback" = 20000;
|
||||
"terminal.integrated.minimumContrastRatio" = 1;
|
||||
"terminal.integrated.gpuAcceleration" = "on";
|
||||
"terminal.integrated.smoothScrolling" = true;
|
||||
"terminal.integrated.tabs.enabled" = false;
|
||||
"terminal.integrated.shellIntegration.decorationsEnabled" = "never";
|
||||
"terminal.integrated.enableVisualBell" = false;
|
||||
|
||||
# ── scm (jj colocated: the git view reads the git side) ───────────
|
||||
"git.confirmSync" = false;
|
||||
"git.enableSmartCommit" = true;
|
||||
"git.autofetch" = false;
|
||||
"git.openRepositoryInParentFolders" = "never";
|
||||
"git.decorations.enabled" = true;
|
||||
"scm.defaultViewMode" = "list";
|
||||
"scm.diffDecorations" = "gutter";
|
||||
"diffEditor.ignoreTrimWhitespace" = false;
|
||||
"diffEditor.renderSideBySide" = true;
|
||||
|
||||
# ── noise ─────────────────────────────────────────────────────────
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"extensions.autoUpdate" = "off"; # nix owns the extension set
|
||||
"extensions.autoCheckUpdates" = false;
|
||||
"extensions.ignoreRecommendations" = true;
|
||||
"update.mode" = "none";
|
||||
"update.showReleaseNotes" = false;
|
||||
"security.workspace.trust.banner" = "never";
|
||||
"security.workspace.trust.untrustedFiles" = "open";
|
||||
"makefile.configureOnOpen" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user