do editor fuckery
This commit is contained in:
parent
bd60655fcc
commit
458a56ab4d
8 changed files with 283 additions and 226 deletions
|
@ -1,6 +1,7 @@
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./editors
|
||||||
./shell
|
./shell
|
||||||
./desktop
|
./desktop
|
||||||
./desktop-legacy
|
./desktop-legacy
|
||||||
|
|
12
modules/editors/default.nix
Normal file
12
modules/editors/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.niri.enable = true;
|
||||||
|
home-manager.users.jade =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./helix
|
||||||
|
./zed
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
41
modules/editors/helix/binds.nix
Normal file
41
modules/editors/helix/binds.nix
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.helix.settings.keys = {
|
||||||
|
normal = {
|
||||||
|
space."=" = ":fmt";
|
||||||
|
space.ret = "@[<space>]<space>";
|
||||||
|
space.space = "ms<space>";
|
||||||
|
|
||||||
|
# smart tab++
|
||||||
|
tab = "move_parent_node_end";
|
||||||
|
S-tab = "move_parent_node_start";
|
||||||
|
A-S = "@S[\\s]+<ret>";
|
||||||
|
"'" = {
|
||||||
|
D = "@<C-w>sgd";
|
||||||
|
F = "@<C-w>sgy";
|
||||||
|
d = "@<C-w>vgd";
|
||||||
|
f = "@<C-w>vgy";
|
||||||
|
h = ":toggle-option lsp.display-inlay-hints";
|
||||||
|
t = ":pipe flip-bool";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
insert = {
|
||||||
|
up = "no_op";
|
||||||
|
down = "no_op";
|
||||||
|
left = "no_op";
|
||||||
|
right = "no_op";
|
||||||
|
pageup = "no_op";
|
||||||
|
pagedown = "no_op";
|
||||||
|
home = "no_op";
|
||||||
|
end = "no_op";
|
||||||
|
|
||||||
|
# smart tab ++
|
||||||
|
S-tab = "move_parent_node_start";
|
||||||
|
};
|
||||||
|
select = {
|
||||||
|
# smart tab++
|
||||||
|
tab = "extend_parent_node_end";
|
||||||
|
S-tab = "extend_parent_node_start";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
113
modules/editors/helix/default.nix
Normal file
113
modules/editors/helix/default.nix
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./binds.nix
|
||||||
|
./settings.nix
|
||||||
|
];
|
||||||
|
home = {
|
||||||
|
sessionVariables.EDITOR = "hx";
|
||||||
|
packages = [
|
||||||
|
pkgs.wl-clipboard-rs
|
||||||
|
pkgs.nil
|
||||||
|
pkgs.vscode-langservers-extracted
|
||||||
|
pkgs.nodePackages.typescript-language-server
|
||||||
|
pkgs.emmet-language-server
|
||||||
|
pkgs.jdt-language-server
|
||||||
|
pkgs.tinymist
|
||||||
|
pkgs.typstyle
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
languages = {
|
||||||
|
language-server = {
|
||||||
|
"nu-builtin-lsp" = {
|
||||||
|
command = "${pkgs.nushell}/bin/nu";
|
||||||
|
args = [ "--lsp" ];
|
||||||
|
};
|
||||||
|
"rust-analyzer" = {
|
||||||
|
config = {
|
||||||
|
check.command = "check";
|
||||||
|
completion.snippets.custom = {
|
||||||
|
"pub fn" = {
|
||||||
|
prefix = [
|
||||||
|
"pfn"
|
||||||
|
"pubfn"
|
||||||
|
];
|
||||||
|
postfix = [ "pfn" ];
|
||||||
|
body = [
|
||||||
|
"pub fn $\{receiver\}() {"
|
||||||
|
"\\t$1"
|
||||||
|
"}"
|
||||||
|
];
|
||||||
|
scope = "type";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
completion.termSearch.enable = true;
|
||||||
|
diagnostics.enable = true;
|
||||||
|
inlayHints = {
|
||||||
|
bindingModeHints.enable = true;
|
||||||
|
closureCaptureHints.enable = true;
|
||||||
|
closureReturnTypeHints.enable = true;
|
||||||
|
discriminantHints.enable = true;
|
||||||
|
expressionAdjustmentHints = {
|
||||||
|
hideOutsideUnsafe = true;
|
||||||
|
};
|
||||||
|
lifetimeElisionHints.enable = "skip_trivial";
|
||||||
|
};
|
||||||
|
interpret.tests = true;
|
||||||
|
lens = {
|
||||||
|
references = {
|
||||||
|
adt.enable = true;
|
||||||
|
trait.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
typing.autoClosingAngleBrackets.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"emmet-language-server" = {
|
||||||
|
command = "emmet-language-server";
|
||||||
|
args = [ "--stdio" ];
|
||||||
|
};
|
||||||
|
"psalm" = {
|
||||||
|
command = "psalm";
|
||||||
|
args = [ "--language-server" ];
|
||||||
|
};
|
||||||
|
"tinymist" = {
|
||||||
|
config = {
|
||||||
|
exportPdf = "onType";
|
||||||
|
formatterMode = "typstyle";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "nu";
|
||||||
|
language-servers = [ "nu-builtin-lsp" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "php";
|
||||||
|
language-servers = [ "psalm" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "nix";
|
||||||
|
formatter = {
|
||||||
|
command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
|
||||||
|
args = [ "--quiet" ];
|
||||||
|
};
|
||||||
|
auto-format = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "html";
|
||||||
|
roots = [ ".git" ];
|
||||||
|
language-servers = [
|
||||||
|
"vscode-html-language-server"
|
||||||
|
"emmet-language-server"
|
||||||
|
];
|
||||||
|
auto-format = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
74
modules/editors/helix/settings.nix
Normal file
74
modules/editors/helix/settings.nix
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.helix.settings = {
|
||||||
|
theme = "gruvbox_dark_hard";
|
||||||
|
editor = {
|
||||||
|
line-number = "relative";
|
||||||
|
bufferline = "multiple";
|
||||||
|
color-modes = true;
|
||||||
|
cursorline = true;
|
||||||
|
auto-save = {
|
||||||
|
after-delay.enable = true;
|
||||||
|
after-delay.timeout = 10000;
|
||||||
|
};
|
||||||
|
auto-format = true;
|
||||||
|
end-of-line-diagnostics = "hint";
|
||||||
|
# slightly optimized based on my layout
|
||||||
|
jump-label-alphabet = "jfkdhaslgwenuiopbcmyzqrtvx";
|
||||||
|
clipboard-provider = "wayland";
|
||||||
|
inline-diagnostics = {
|
||||||
|
cursor-line = "hint";
|
||||||
|
};
|
||||||
|
lsp = {
|
||||||
|
display-messages = true;
|
||||||
|
display-inlay-hints = true;
|
||||||
|
};
|
||||||
|
popup-border = "popup";
|
||||||
|
shell = [
|
||||||
|
"nu"
|
||||||
|
"-c"
|
||||||
|
];
|
||||||
|
statusline.left = [
|
||||||
|
"mode"
|
||||||
|
"spinner"
|
||||||
|
"spacer"
|
||||||
|
"version-control"
|
||||||
|
"file-name"
|
||||||
|
"diagnostics"
|
||||||
|
"read-only-indicator"
|
||||||
|
"file-modification-indicator"
|
||||||
|
"spacer"
|
||||||
|
];
|
||||||
|
|
||||||
|
statusline.right = [
|
||||||
|
"workspace-diagnostics"
|
||||||
|
"register"
|
||||||
|
"position"
|
||||||
|
"selections"
|
||||||
|
"file-encoding"
|
||||||
|
"file-type"
|
||||||
|
];
|
||||||
|
idle-timeout = 50;
|
||||||
|
completion-timeout = 100;
|
||||||
|
indent-guides = {
|
||||||
|
render = true;
|
||||||
|
character = "│";
|
||||||
|
skip-levels = 3;
|
||||||
|
};
|
||||||
|
soft-wrap = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
whitespace = {
|
||||||
|
render = {
|
||||||
|
space = "none";
|
||||||
|
tab = "all";
|
||||||
|
newline = "none";
|
||||||
|
};
|
||||||
|
characters = {
|
||||||
|
nbsp = "·";
|
||||||
|
tab = "→";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
42
modules/editors/zed/default.nix
Normal file
42
modules/editors/zed/default.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.zed-editor = {
|
||||||
|
enable = true;
|
||||||
|
userSettings = {
|
||||||
|
features = {
|
||||||
|
edit_prediction_provider = null;
|
||||||
|
};
|
||||||
|
show_edit_predictions = false;
|
||||||
|
middle_click_paste = false;
|
||||||
|
search = {
|
||||||
|
regex = true;
|
||||||
|
};
|
||||||
|
inlay_hints = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
|
assistant = {
|
||||||
|
version = "2";
|
||||||
|
enabled = false;
|
||||||
|
};
|
||||||
|
diagnostics = {
|
||||||
|
include_warnings = false;
|
||||||
|
inline = {
|
||||||
|
enabled = true;
|
||||||
|
update_debounce_ms = 150;
|
||||||
|
padding = 4;
|
||||||
|
min_column = 0;
|
||||||
|
max_severity = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
language_models = null;
|
||||||
|
vim_mode = true;
|
||||||
|
vim = {
|
||||||
|
default_mode = "helix_normal";
|
||||||
|
};
|
||||||
|
# ui_font_size = 16;
|
||||||
|
# WHY CAN I NOT OVERRIDE THIS
|
||||||
|
# habt'a lack gesoffen?!
|
||||||
|
# buffer_font_size = 16.;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./helix.nix
|
|
||||||
./nu.nix
|
./nu.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
./tty.nix
|
./tty.nix
|
||||||
|
|
|
@ -1,225 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.jade =
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home = {
|
|
||||||
sessionVariables.EDITOR = "hx";
|
|
||||||
packages = [
|
|
||||||
pkgs.wl-clipboard-rs
|
|
||||||
pkgs.nil
|
|
||||||
pkgs.vscode-langservers-extracted
|
|
||||||
pkgs.nodePackages.typescript-language-server
|
|
||||||
pkgs.emmet-language-server
|
|
||||||
pkgs.jdt-language-server
|
|
||||||
pkgs.tinymist
|
|
||||||
pkgs.typstyle
|
|
||||||
];
|
|
||||||
};
|
|
||||||
programs.helix = {
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = true;
|
|
||||||
settings = {
|
|
||||||
theme = "gruvbox_dark_hard";
|
|
||||||
editor = {
|
|
||||||
line-number = "relative";
|
|
||||||
bufferline = "multiple";
|
|
||||||
color-modes = true;
|
|
||||||
cursorline = true;
|
|
||||||
auto-save = {
|
|
||||||
after-delay.enable = true;
|
|
||||||
after-delay.timeout = 10000;
|
|
||||||
};
|
|
||||||
auto-format = true;
|
|
||||||
end-of-line-diagnostics = "hint";
|
|
||||||
# slightly optimized based on my layout
|
|
||||||
jump-label-alphabet = "jfkdhaslgwenuiopbcmyzqrtvx";
|
|
||||||
clipboard-provider = "wayland";
|
|
||||||
inline-diagnostics = {
|
|
||||||
cursor-line = "hint";
|
|
||||||
};
|
|
||||||
lsp = {
|
|
||||||
display-messages = true;
|
|
||||||
display-inlay-hints = true;
|
|
||||||
};
|
|
||||||
popup-border = "popup";
|
|
||||||
shell = [
|
|
||||||
"nu"
|
|
||||||
"-c"
|
|
||||||
];
|
|
||||||
statusline.left = [
|
|
||||||
"mode"
|
|
||||||
"spinner"
|
|
||||||
"spacer"
|
|
||||||
"version-control"
|
|
||||||
"file-name"
|
|
||||||
"diagnostics"
|
|
||||||
"read-only-indicator"
|
|
||||||
"file-modification-indicator"
|
|
||||||
"spacer"
|
|
||||||
];
|
|
||||||
|
|
||||||
statusline.right = [
|
|
||||||
"workspace-diagnostics"
|
|
||||||
"register"
|
|
||||||
"position"
|
|
||||||
"selections"
|
|
||||||
"file-encoding"
|
|
||||||
"file-type"
|
|
||||||
];
|
|
||||||
idle-timeout = 50;
|
|
||||||
completion-timeout = 100;
|
|
||||||
indent-guides = {
|
|
||||||
render = true;
|
|
||||||
character = "│";
|
|
||||||
skip-levels = 3;
|
|
||||||
};
|
|
||||||
soft-wrap = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
whitespace = {
|
|
||||||
render = {
|
|
||||||
space = "none";
|
|
||||||
tab = "all";
|
|
||||||
newline = "none";
|
|
||||||
};
|
|
||||||
characters = {
|
|
||||||
nbsp = "·";
|
|
||||||
tab = "→";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keys = {
|
|
||||||
normal = {
|
|
||||||
space."=" = ":fmt";
|
|
||||||
space.space = "@[<space>]<space>";
|
|
||||||
|
|
||||||
# smart tab++
|
|
||||||
tab = "move_parent_node_end";
|
|
||||||
S-tab = "move_parent_node_start";
|
|
||||||
A-S = "@S[\\s]+<ret>";
|
|
||||||
"'" = {
|
|
||||||
D = "@<C-w>sgd";
|
|
||||||
F = "@<C-w>sgy";
|
|
||||||
d = "@<C-w>vgd";
|
|
||||||
f = "@<C-w>vgy";
|
|
||||||
h = ":toggle-option lsp.display-inlay-hints";
|
|
||||||
t = ":pipe flip-bool";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
insert = {
|
|
||||||
up = "no_op";
|
|
||||||
down = "no_op";
|
|
||||||
left = "no_op";
|
|
||||||
right = "no_op";
|
|
||||||
pageup = "no_op";
|
|
||||||
pagedown = "no_op";
|
|
||||||
home = "no_op";
|
|
||||||
end = "no_op";
|
|
||||||
|
|
||||||
# smart tab ++
|
|
||||||
S-tab = "move_parent_node_start";
|
|
||||||
};
|
|
||||||
select = {
|
|
||||||
# smart tab++
|
|
||||||
tab = "extend_parent_node_end";
|
|
||||||
S-tab = "extend_parent_node_start";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
languages = {
|
|
||||||
language-server = {
|
|
||||||
"nu-builtin-lsp" = {
|
|
||||||
command = "${config.users.defaultUserShell}/bin/nu";
|
|
||||||
args = [ "--lsp" ];
|
|
||||||
};
|
|
||||||
"rust-analyzer" = {
|
|
||||||
config = {
|
|
||||||
check.command = "check";
|
|
||||||
completion.snippets.custom = {
|
|
||||||
"pub fn" = {
|
|
||||||
prefix = [
|
|
||||||
"pfn"
|
|
||||||
"pubfn"
|
|
||||||
];
|
|
||||||
postfix = [ "pfn" ];
|
|
||||||
body = [
|
|
||||||
"pub fn $\{receiver\}() {"
|
|
||||||
"\\t$1"
|
|
||||||
"}"
|
|
||||||
];
|
|
||||||
scope = "type";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
completion.termSearch.enable = true;
|
|
||||||
diagnostics.enable = true;
|
|
||||||
inlayHints = {
|
|
||||||
bindingModeHints.enable = true;
|
|
||||||
closureCaptureHints.enable = true;
|
|
||||||
closureReturnTypeHints.enable = true;
|
|
||||||
discriminantHints.enable = true;
|
|
||||||
expressionAdjustmentHints = {
|
|
||||||
hideOutsideUnsafe = true;
|
|
||||||
};
|
|
||||||
lifetimeElisionHints.enable = "skip_trivial";
|
|
||||||
};
|
|
||||||
interpret.tests = true;
|
|
||||||
lens = {
|
|
||||||
references = {
|
|
||||||
adt.enable = true;
|
|
||||||
trait.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
typing.autoClosingAngleBrackets.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"emmet-language-server" = {
|
|
||||||
command = "emmet-language-server";
|
|
||||||
args = [ "--stdio" ];
|
|
||||||
};
|
|
||||||
"psalm" = {
|
|
||||||
command = "psalm";
|
|
||||||
args = [ "--language-server" ];
|
|
||||||
};
|
|
||||||
"tinymist" = {
|
|
||||||
config = {
|
|
||||||
exportPdf = "onType";
|
|
||||||
formatterMode = "typstyle";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
language = [
|
|
||||||
{
|
|
||||||
name = "nu";
|
|
||||||
language-servers = [ "nu-builtin-lsp" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "php";
|
|
||||||
language-servers = [ "psalm" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "nix";
|
|
||||||
formatter = {
|
|
||||||
command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
|
|
||||||
args = [ "--quiet" ];
|
|
||||||
};
|
|
||||||
auto-format = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "html";
|
|
||||||
roots = [ ".git" ];
|
|
||||||
language-servers = [
|
|
||||||
"vscode-html-language-server"
|
|
||||||
"emmet-language-server"
|
|
||||||
];
|
|
||||||
auto-format = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue