mirror of
https://github.com/elwrcl/copnix.git
synced 2026-10-31 14:28:02 +03:00
codium
This commit is contained in:
1 parent
e71abc6c13
commit
b87dc873e9
13 files changed
+1298
-15
No files matched your search
@@ -34,7 +34,7 @@
|
||||
"Mod+Return".action.spawn = [ "ghostty" ];
|
||||
"Mod+W".action.spawn = [ "helium" ];
|
||||
"Mod+E".action.spawn = [ "dolphin" ];
|
||||
"Mod+Z".action.spawn = [ "code" ];
|
||||
"Mod+Z".action.spawn = [ "codium" ];
|
||||
"Mod+Alt+V".action.spawn = [ "pavucontrol" ];
|
||||
"Mod+Shift+V".action.spawn-sh = "noctalia msg panel-toggle clipboard";
|
||||
"Mod+Shift+L".action.spawn-sh = "noctalia msg lock";
|
||||
|
||||
@@ -0,0 +1,517 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.homeModules.home-theme-vscode =
|
||||
{ config, lib, ... }:
|
||||
# auto-generated
|
||||
let
|
||||
p = config.elars.theme.palette.withHashtag;
|
||||
vivid = 125;
|
||||
toHex =
|
||||
n:
|
||||
let
|
||||
digits = "0123456789abcdef";
|
||||
c =
|
||||
if n < 0 then
|
||||
0
|
||||
else if n > 255 then
|
||||
255
|
||||
else
|
||||
n;
|
||||
in
|
||||
builtins.substring (c / 16) 1 digits + builtins.substring (lib.mod c 16) 1 digits;
|
||||
lift =
|
||||
pct: hex: "#" + lib.concatMapStrings (c: toHex (c * pct / 100)) (config.elars.theme.hexToRgb hex);
|
||||
|
||||
bg = p.base00;
|
||||
bgAlt = p.base01;
|
||||
bgSoft = p.base02;
|
||||
gutter = p.base03;
|
||||
gray = lift vivid p.base04;
|
||||
fg = p.base05;
|
||||
fgSoft = p.base06;
|
||||
fgBright = p.base07;
|
||||
red = lift vivid p.base08;
|
||||
orange = lift vivid p.base09;
|
||||
yellow = lift vivid p.base0A;
|
||||
green = lift vivid p.base0B;
|
||||
cyan = lift vivid p.base0C;
|
||||
blue = lift vivid p.base0D;
|
||||
magenta = lift vivid p.base0E;
|
||||
brown = lift 175 p.base0F;
|
||||
|
||||
none = "#00000000";
|
||||
|
||||
overlay = "${gutter}80";
|
||||
overlayStrong = "${gray}80";
|
||||
overlaySoft = "${bgSoft}80";
|
||||
|
||||
sel = "${blue}66";
|
||||
selSoft = "${blue}33";
|
||||
selDim = "${blue}26";
|
||||
find = "${yellow}4d";
|
||||
findSoft = "${yellow}26";
|
||||
word = "${gray}33";
|
||||
wordStrong = "${gray}4d";
|
||||
|
||||
rule = scopes: fg': {
|
||||
scope = scopes;
|
||||
settings.foreground = fg';
|
||||
};
|
||||
ruleStyled = scopes: fg': style: {
|
||||
scope = scopes;
|
||||
settings = {
|
||||
foreground = fg';
|
||||
fontStyle = style;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscodium.profiles.default.userSettings = {
|
||||
"workbench.colorTheme" = "Default Dark Modern";
|
||||
|
||||
"workbench.colorCustomizations" = {
|
||||
foreground = fg;
|
||||
descriptionForeground = gray;
|
||||
disabledForeground = gutter;
|
||||
errorForeground = red;
|
||||
focusBorder = gutter;
|
||||
contrastBorder = none;
|
||||
contrastActiveBorder = none;
|
||||
"widget.border" = bgSoft;
|
||||
"widget.shadow" = none;
|
||||
"selection.background" = bgSoft;
|
||||
"icon.foreground" = fgSoft;
|
||||
"sash.hoverBorder" = gutter;
|
||||
"textLink.foreground" = cyan;
|
||||
"textLink.activeForeground" = fgSoft;
|
||||
"textPreformat.foreground" = green;
|
||||
"toolbar.hoverBackground" = bgSoft;
|
||||
|
||||
# editor — ui.background / ui.cursor / ui.selection / ui.linenr
|
||||
"editor.background" = bg;
|
||||
"editor.foreground" = fg;
|
||||
"editorLineNumber.foreground" = gutter;
|
||||
"editorLineNumber.activeForeground" = orange;
|
||||
"editorCursor.foreground" = fgBright;
|
||||
"editorCursor.background" = bg;
|
||||
"editor.lineHighlightBackground" = bgAlt;
|
||||
"editor.lineHighlightBorder" = none;
|
||||
"editor.selectionBackground" = sel;
|
||||
"editor.inactiveSelectionBackground" = selDim;
|
||||
"editor.selectionHighlightBackground" = selSoft;
|
||||
"editor.selectionHighlightBorder" = none;
|
||||
"editor.wordHighlightBackground" = word;
|
||||
"editor.wordHighlightStrongBackground" = wordStrong;
|
||||
"editor.findMatchBackground" = find;
|
||||
"editor.findMatchHighlightBackground" = findSoft;
|
||||
"editor.findMatchBorder" = orange;
|
||||
"editor.rangeHighlightBackground" = overlaySoft;
|
||||
"editor.foldBackground" = overlaySoft;
|
||||
"editorBracketMatch.background" = none;
|
||||
"editorBracketMatch.border" = orange;
|
||||
"editorIndentGuide.background1" = bgSoft;
|
||||
"editorIndentGuide.activeBackground1" = gutter;
|
||||
"editorRuler.foreground" = bgAlt;
|
||||
"editorWhitespace.foreground" = bgSoft;
|
||||
"editorInlayHint.foreground" = gray;
|
||||
"editorInlayHint.background" = none;
|
||||
"editorInlayHint.typeForeground" = gray;
|
||||
"editorInlayHint.parameterForeground" = gray;
|
||||
"editorCodeLens.foreground" = gray;
|
||||
"editorLink.activeForeground" = cyan;
|
||||
"editorOverviewRuler.border" = none;
|
||||
"editorGhostText.foreground" = gutter;
|
||||
"editorStickyScroll.background" = bg;
|
||||
|
||||
# gutter / diff
|
||||
"editorGutter.background" = bg;
|
||||
"editorGutter.addedBackground" = green;
|
||||
"editorGutter.deletedBackground" = red;
|
||||
"editorGutter.modifiedBackground" = blue;
|
||||
"editorGutter.foldingControlForeground" = gutter;
|
||||
"diffEditor.insertedTextBackground" = "${green}1a";
|
||||
"diffEditor.removedTextBackground" = "${red}1a";
|
||||
"diffEditor.insertedLineBackground" = "${green}14";
|
||||
"diffEditor.removedLineBackground" = "${red}14";
|
||||
"diffEditor.border" = bgSoft;
|
||||
|
||||
# diagnostics
|
||||
"editorError.foreground" = red;
|
||||
"editorWarning.foreground" = yellow;
|
||||
"editorInfo.foreground" = blue;
|
||||
"editorHint.foreground" = cyan;
|
||||
|
||||
# chrome
|
||||
"titleBar.activeBackground" = bg;
|
||||
"titleBar.activeForeground" = fgSoft;
|
||||
"titleBar.inactiveBackground" = bg;
|
||||
"titleBar.inactiveForeground" = gray;
|
||||
"titleBar.border" = none;
|
||||
"sideBar.background" = bg;
|
||||
"sideBar.foreground" = fgSoft;
|
||||
"sideBar.border" = bgAlt;
|
||||
"sideBarSectionHeader.background" = bg;
|
||||
"sideBarSectionHeader.foreground" = gray;
|
||||
"sideBarSectionHeader.border" = none;
|
||||
"sideBarTitle.foreground" = gray;
|
||||
"activityBar.background" = bg;
|
||||
"activityBar.foreground" = fgSoft;
|
||||
"activityBar.inactiveForeground" = gutter;
|
||||
"activityBar.border" = none;
|
||||
"activityBarBadge.background" = fgSoft;
|
||||
"activityBarBadge.foreground" = bg;
|
||||
"panel.background" = bg;
|
||||
"panel.border" = bgAlt;
|
||||
"panelTitle.activeForeground" = fg;
|
||||
"panelTitle.inactiveForeground" = gray;
|
||||
"panelTitle.activeBorder" = fgSoft;
|
||||
"panelSection.border" = bgAlt;
|
||||
"editorGroupHeader.tabsBackground" = bg;
|
||||
"editorGroupHeader.tabsBorder" = bgAlt;
|
||||
"editorGroupHeader.noTabsBackground" = bg;
|
||||
"editorGroup.border" = bgAlt;
|
||||
"editorPane.background" = bg;
|
||||
|
||||
# tabs — ui.bufferline
|
||||
"tab.activeBackground" = bgSoft;
|
||||
"tab.activeForeground" = fg;
|
||||
"tab.inactiveBackground" = bgAlt;
|
||||
"tab.inactiveForeground" = gray;
|
||||
"tab.unfocusedActiveBackground" = bgAlt;
|
||||
"tab.unfocusedActiveForeground" = gray;
|
||||
"tab.border" = bg;
|
||||
"tab.activeBorder" = none;
|
||||
"tab.activeBorderTop" = fgSoft;
|
||||
"tab.unfocusedActiveBorderTop" = gutter;
|
||||
"tab.hoverBackground" = bgSoft;
|
||||
"tab.activeModifiedBorder" = orange;
|
||||
"tab.inactiveModifiedBorder" = gutter;
|
||||
|
||||
# statusline — ui.statusline
|
||||
"statusBar.background" = bgSoft;
|
||||
"statusBar.foreground" = fg;
|
||||
"statusBar.border" = none;
|
||||
"statusBar.noFolderBackground" = bgAlt;
|
||||
"statusBar.noFolderForeground" = gray;
|
||||
"statusBar.debuggingBackground" = orange;
|
||||
"statusBar.debuggingForeground" = bg;
|
||||
"statusBarItem.hoverBackground" = gutter;
|
||||
"statusBarItem.activeBackground" = gutter;
|
||||
"statusBarItem.prominentBackground" = gutter;
|
||||
"statusBarItem.remoteBackground" = blue;
|
||||
"statusBarItem.remoteForeground" = bg;
|
||||
"statusBarItem.errorBackground" = red;
|
||||
"statusBarItem.errorForeground" = bg;
|
||||
"statusBarItem.warningBackground" = yellow;
|
||||
"statusBarItem.warningForeground" = bg;
|
||||
|
||||
# popups / pickers — ui.popup, ui.menu
|
||||
"editorWidget.background" = bgAlt;
|
||||
"editorWidget.foreground" = fg;
|
||||
"editorWidget.border" = bgSoft;
|
||||
"editorHoverWidget.background" = bgAlt;
|
||||
"editorHoverWidget.border" = bgSoft;
|
||||
"editorSuggestWidget.background" = bgAlt;
|
||||
"editorSuggestWidget.border" = bgSoft;
|
||||
"editorSuggestWidget.foreground" = fg;
|
||||
"editorSuggestWidget.selectedBackground" = gutter;
|
||||
"editorSuggestWidget.selectedForeground" = fgBright;
|
||||
"editorSuggestWidget.highlightForeground" = orange;
|
||||
"editorSuggestWidget.focusHighlightForeground" = orange;
|
||||
"peekView.border" = bgSoft;
|
||||
"peekViewEditor.background" = bgAlt;
|
||||
"peekViewEditor.matchHighlightBackground" = find;
|
||||
"peekViewResult.background" = bgAlt;
|
||||
"peekViewResult.selectionBackground" = gutter;
|
||||
"peekViewTitle.background" = bgAlt;
|
||||
"quickInput.background" = bgAlt;
|
||||
"quickInput.foreground" = fg;
|
||||
"quickInputList.focusBackground" = gutter;
|
||||
"quickInputList.focusForeground" = fgBright;
|
||||
"quickInputTitle.background" = bgAlt;
|
||||
"pickerGroup.border" = bgSoft;
|
||||
"pickerGroup.foreground" = gray;
|
||||
|
||||
"list.activeSelectionBackground" = bgSoft;
|
||||
"list.activeSelectionForeground" = fg;
|
||||
"list.inactiveSelectionBackground" = bgAlt;
|
||||
"list.inactiveSelectionForeground" = fgSoft;
|
||||
"list.hoverBackground" = bgAlt;
|
||||
"list.focusBackground" = bgSoft;
|
||||
"list.focusOutline" = none;
|
||||
"list.highlightForeground" = orange;
|
||||
"list.errorForeground" = red;
|
||||
"list.warningForeground" = yellow;
|
||||
"tree.indentGuidesStroke" = bgAlt;
|
||||
|
||||
"menu.background" = bgAlt;
|
||||
"menu.foreground" = fg;
|
||||
"menu.selectionBackground" = gutter;
|
||||
"menu.selectionForeground" = fgBright;
|
||||
"menu.border" = bgSoft;
|
||||
"menu.separatorBackground" = bgSoft;
|
||||
"menubar.selectionBackground" = bgSoft;
|
||||
|
||||
"input.background" = bgAlt;
|
||||
"input.foreground" = fg;
|
||||
"input.border" = bgSoft;
|
||||
"input.placeholderForeground" = gray;
|
||||
"inputOption.activeBorder" = fgSoft;
|
||||
"inputOption.activeBackground" = bgSoft;
|
||||
"inputValidation.errorBackground" = bgAlt;
|
||||
"inputValidation.errorBorder" = red;
|
||||
"inputValidation.warningBackground" = bgAlt;
|
||||
"inputValidation.warningBorder" = yellow;
|
||||
"inputValidation.infoBackground" = bgAlt;
|
||||
"inputValidation.infoBorder" = blue;
|
||||
"dropdown.background" = bgAlt;
|
||||
"dropdown.foreground" = fg;
|
||||
"dropdown.border" = bgSoft;
|
||||
|
||||
"button.background" = gutter;
|
||||
"button.foreground" = fg;
|
||||
"button.hoverBackground" = gray;
|
||||
"button.secondaryBackground" = bgSoft;
|
||||
"button.secondaryForeground" = fgSoft;
|
||||
"badge.background" = bgSoft;
|
||||
"badge.foreground" = fgSoft;
|
||||
"progressBar.background" = fgSoft;
|
||||
|
||||
"scrollbar.shadow" = none;
|
||||
"scrollbarSlider.background" = "${bgSoft}80";
|
||||
"scrollbarSlider.hoverBackground" = gutter;
|
||||
"scrollbarSlider.activeBackground" = gray;
|
||||
|
||||
"notifications.background" = bgAlt;
|
||||
"notifications.foreground" = fg;
|
||||
"notifications.border" = bgSoft;
|
||||
"notificationCenterHeader.background" = bgAlt;
|
||||
"notificationCenterHeader.foreground" = gray;
|
||||
"notificationsErrorIcon.foreground" = red;
|
||||
"notificationsWarningIcon.foreground" = yellow;
|
||||
"notificationsInfoIcon.foreground" = blue;
|
||||
|
||||
# scm decorations
|
||||
"gitDecoration.addedResourceForeground" = green;
|
||||
"gitDecoration.modifiedResourceForeground" = blue;
|
||||
"gitDecoration.deletedResourceForeground" = red;
|
||||
"gitDecoration.untrackedResourceForeground" = green;
|
||||
"gitDecoration.ignoredResourceForeground" = gutter;
|
||||
"gitDecoration.conflictingResourceForeground" = orange;
|
||||
"gitDecoration.stageModifiedResourceForeground" = cyan;
|
||||
|
||||
# terminal — same 16 as home-theme-ghostty
|
||||
"terminal.background" = bg;
|
||||
"terminal.foreground" = fg;
|
||||
"terminal.selectionBackground" = bgSoft;
|
||||
"terminal.border" = bgAlt;
|
||||
"terminalCursor.foreground" = p.accent;
|
||||
"terminalCursor.background" = bg;
|
||||
"terminal.ansiBlack" = bg;
|
||||
"terminal.ansiRed" = red;
|
||||
"terminal.ansiGreen" = green;
|
||||
"terminal.ansiYellow" = yellow;
|
||||
"terminal.ansiBlue" = blue;
|
||||
"terminal.ansiMagenta" = magenta;
|
||||
"terminal.ansiCyan" = cyan;
|
||||
"terminal.ansiWhite" = fg;
|
||||
"terminal.ansiBrightBlack" = gutter;
|
||||
"terminal.ansiBrightRed" = red;
|
||||
"terminal.ansiBrightGreen" = green;
|
||||
"terminal.ansiBrightYellow" = orange;
|
||||
"terminal.ansiBrightBlue" = blue;
|
||||
"terminal.ansiBrightMagenta" = magenta;
|
||||
"terminal.ansiBrightCyan" = cyan;
|
||||
"terminal.ansiBrightWhite" = fgBright;
|
||||
|
||||
# dap — ui.debug
|
||||
"debugToolBar.background" = bgAlt;
|
||||
"debugIcon.breakpointForeground" = red;
|
||||
"editor.stackFrameHighlightBackground" = "${orange}33";
|
||||
|
||||
"keybindingLabel.background" = bgSoft;
|
||||
"keybindingLabel.foreground" = fgSoft;
|
||||
"keybindingLabel.border" = bgSoft;
|
||||
"keybindingLabel.bottomBorder" = bgSoft;
|
||||
|
||||
"charts.red" = red;
|
||||
"charts.orange" = orange;
|
||||
"charts.yellow" = yellow;
|
||||
"charts.green" = green;
|
||||
"charts.blue" = blue;
|
||||
"charts.purple" = magenta;
|
||||
"charts.foreground" = fg;
|
||||
"charts.lines" = bgSoft;
|
||||
};
|
||||
|
||||
# syntax
|
||||
"editor.tokenColorCustomizations" = {
|
||||
comments = {
|
||||
foreground = gray;
|
||||
fontStyle = "italic";
|
||||
};
|
||||
textMateRules = [
|
||||
(ruleStyled [ "comment" "punctuation.definition.comment" ] gray "italic")
|
||||
(rule [ "variable" "meta.definition.variable.name" "support.variable" ] fg)
|
||||
(rule [ "variable.parameter" "meta.function.parameters" ] fgSoft)
|
||||
(rule [ "variable.language" "variable.other.builtin" "keyword.other.this" ] red)
|
||||
(rule [
|
||||
"variable.other.member"
|
||||
"variable.other.property"
|
||||
"meta.object-literal.key"
|
||||
"support.type.property-name"
|
||||
] cyan)
|
||||
(rule [ "constant" "constant.language" "constant.other" "constant.numeric" ] orange)
|
||||
(rule [ "constant.character.escape" "constant.other.placeholder" ] magenta)
|
||||
(rule [ "string" "string.quoted" "punctuation.definition.string" ] green)
|
||||
(rule [ "string.regexp" "constant.regexp" ] cyan)
|
||||
(rule [
|
||||
"entity.name.type"
|
||||
"support.type"
|
||||
"storage.type"
|
||||
"entity.name.class"
|
||||
"entity.other.inherited-class"
|
||||
"support.type.primitive"
|
||||
"storage.type.primitive"
|
||||
"storage.type.built-in"
|
||||
] yellow)
|
||||
(rule [ "entity.name.function.constructor" "meta.object.constructor" ] blue)
|
||||
(rule [ "entity.name.function" "support.function" "meta.function-call" ] blue)
|
||||
(rule [ "entity.name.function.macro" "support.function.macro" "meta.preprocessor.macro" ] magenta)
|
||||
(rule [ "keyword" "keyword.control" "keyword.operator.new" "storage.modifier" ] magenta)
|
||||
(rule [ "keyword.control.directive" "meta.preprocessor" "punctuation.definition.directive" ] brown)
|
||||
(rule [ "keyword.operator" "storage.type.function.arrow" ] fgSoft)
|
||||
(rule [ "punctuation" "punctuation.separator" "punctuation.terminator" "meta.delimiter" ] gray)
|
||||
(rule [
|
||||
"punctuation.section"
|
||||
"meta.brace"
|
||||
"punctuation.definition.block"
|
||||
"punctuation.definition.parameters"
|
||||
] fgSoft)
|
||||
(rule [ "entity.name.label" "constant.other.label" ] magenta)
|
||||
(rule [ "entity.name.namespace" "entity.name.scope-resolution" "support.module" ] cyan)
|
||||
(rule [ "entity.other.attribute-name" "meta.attribute" "meta.decorator" ] brown)
|
||||
(rule [ "entity.name.tag" "punctuation.definition.tag" ] blue)
|
||||
(rule [ "invalid" "invalid.illegal" ] red)
|
||||
(ruleStyled [ "invalid.deprecated" ] yellow "strikethrough")
|
||||
(ruleStyled [ "markup.heading" "entity.name.section" ] orange "bold")
|
||||
(rule [ "punctuation.definition.heading" ] brown)
|
||||
{
|
||||
scope = [ "markup.bold" ];
|
||||
settings.fontStyle = "bold";
|
||||
}
|
||||
{
|
||||
scope = [ "markup.italic" ];
|
||||
settings.fontStyle = "italic";
|
||||
}
|
||||
{
|
||||
scope = [ "markup.strikethrough" ];
|
||||
settings.fontStyle = "strikethrough";
|
||||
}
|
||||
(ruleStyled [ "markup.underline.link" "string.other.link" ] cyan "underline")
|
||||
(rule [ "markup.inline.raw" "markup.fenced_code" "markup.raw" ] green)
|
||||
(rule [ "markup.list" "punctuation.definition.list.begin" ] magenta)
|
||||
(ruleStyled [ "markup.quote" ] fgSoft "italic")
|
||||
(rule [ "markup.inserted" "meta.diff.header.to-file" ] green)
|
||||
(rule [ "markup.deleted" "meta.diff.header.from-file" ] red)
|
||||
(rule [ "markup.changed" ] blue)
|
||||
];
|
||||
};
|
||||
|
||||
"editor.semanticTokenColorCustomizations" = {
|
||||
enabled = true;
|
||||
rules = {
|
||||
comment = {
|
||||
foreground = gray;
|
||||
fontStyle = "italic";
|
||||
};
|
||||
variable = fg;
|
||||
parameter = fgSoft;
|
||||
property = cyan;
|
||||
function = blue;
|
||||
method = blue;
|
||||
macro = magenta;
|
||||
type = yellow;
|
||||
struct = yellow;
|
||||
class = yellow;
|
||||
enum = yellow;
|
||||
union = yellow;
|
||||
interface = yellow;
|
||||
typeParameter = yellow;
|
||||
builtinType = yellow;
|
||||
enumMember = orange;
|
||||
namespace = cyan;
|
||||
keyword = magenta;
|
||||
selfKeyword = red;
|
||||
string = green;
|
||||
number = orange;
|
||||
boolean = orange;
|
||||
character = green;
|
||||
operator = fgSoft;
|
||||
lifetime = magenta;
|
||||
label = magenta;
|
||||
attribute = brown;
|
||||
attributeBracket = brown;
|
||||
"*.mutable".underline = true;
|
||||
"*.unsafe" = red;
|
||||
"*.deprecated".strikethrough = true;
|
||||
unresolvedReference = {
|
||||
foreground = red;
|
||||
underline = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
"helixKeymap.yankHighlightBackgroundColor" = yellow;
|
||||
"better-comments.multilineComments" = true;
|
||||
"better-comments.highlightPlainText" = false;
|
||||
"better-comments.tags" = [
|
||||
{
|
||||
tag = "!";
|
||||
color = red;
|
||||
strikethrough = false;
|
||||
underline = false;
|
||||
backgroundColor = "transparent";
|
||||
bold = true;
|
||||
italic = true;
|
||||
}
|
||||
{
|
||||
tag = "?";
|
||||
color = cyan;
|
||||
strikethrough = false;
|
||||
underline = false;
|
||||
backgroundColor = "transparent";
|
||||
bold = false;
|
||||
italic = true;
|
||||
}
|
||||
{
|
||||
tag = "todo";
|
||||
color = orange;
|
||||
strikethrough = false;
|
||||
underline = false;
|
||||
backgroundColor = "transparent";
|
||||
bold = true;
|
||||
italic = true;
|
||||
}
|
||||
{
|
||||
tag = "*";
|
||||
color = green;
|
||||
strikethrough = false;
|
||||
underline = false;
|
||||
backgroundColor = "transparent";
|
||||
bold = false;
|
||||
italic = true;
|
||||
}
|
||||
{
|
||||
tag = "//";
|
||||
color = gutter;
|
||||
strikethrough = true;
|
||||
underline = false;
|
||||
backgroundColor = "transparent";
|
||||
bold = false;
|
||||
italic = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -70,7 +70,6 @@
|
||||
ifuse
|
||||
|
||||
# agents
|
||||
# todo make claude lobotomize
|
||||
github-copilot-cli
|
||||
claude-mergetool
|
||||
claude-monitor
|
||||
@@ -173,7 +172,6 @@
|
||||
|
||||
# editors
|
||||
neovim
|
||||
vscode
|
||||
|
||||
# media
|
||||
ffmpegthumbnailer
|
||||
@@ -187,7 +185,6 @@
|
||||
|
||||
inputs.agenix.packages.${system}.default
|
||||
inputs.nix-alien.packages.${system}.nix-alien
|
||||
inputs.copetch.packages.${system}.default
|
||||
pkgs.qt6Packages.qtwebsockets
|
||||
];
|
||||
};
|
||||
|
||||
@@ -34,15 +34,15 @@
|
||||
"audio/ogg" = "mpv.desktop";
|
||||
|
||||
# text
|
||||
"text/plain" = "code.desktop";
|
||||
"text/x-rust" = "code.desktop";
|
||||
"text/x-nix" = "code.desktop";
|
||||
"text/x-csrc" = "code.desktop";
|
||||
"text/x-chdr" = "code.desktop";
|
||||
"text/x-python" = "code.desktop";
|
||||
"text/x-shellscript" = "code.desktop";
|
||||
"application/json" = "code.desktop";
|
||||
"application/x-shellscript" = "code.desktop";
|
||||
"text/plain" = "codium.desktop";
|
||||
"text/x-rust" = "codium.desktop";
|
||||
"text/x-nix" = "codium.desktop";
|
||||
"text/x-csrc" = "codium.desktop";
|
||||
"text/x-chdr" = "codium.desktop";
|
||||
"text/x-python" = "codium.desktop";
|
||||
"text/x-shellscript" = "codium.desktop";
|
||||
"application/json" = "codium.desktop";
|
||||
"application/x-shellscript" = "codium.desktop";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user