Compare commits

..

13 Commits

9 changed files with 326 additions and 196 deletions

6
flake.lock generated
View File

@@ -49,11 +49,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1770112394, "lastModified": 1772137435,
"narHash": "sha256-H8d0WplmDeuvOM4bsHNt77T6OWiSJMaTP6UG1XyMNxA=", "narHash": "sha256-dqkfxxpIiIs4wdWhT4lfQi1lfA0CgIftPiYGvw0tUOk=",
"owner": "Lassulus", "owner": "Lassulus",
"repo": "wrappers", "repo": "wrappers",
"rev": "23625835eb91d925c498780f5a37442ead1ae8e5", "rev": "4e12f430ae705d9bbb591ca9c51cbccbee050a23",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -34,10 +34,13 @@
overlays.default = final: prev: { overlays.default = final: prev: {
niphas-terminal = prev.alacritty; niphas-terminal = prev.alacritty;
niphas-web-browser = prev.qutebrowser; niphas-web-browser = prev.firefox;
niphas-file-browser = prev.pcmanfm; niphas-file-browser = prev.pcmanfm;
niphas-runner = prev.writers.writeDashBin "niphas-runner" "${prev.lib.getExe prev.rofi} -show run"; niphas-runner = prev.writers.writeDashBin "niphas-runner" "${prev.lib.getExe prev.rofi} -show run";
niphas-locker = prev.swaylock; niphas-locker = prev.swaylock;
niphas-screenshot = prev.writers.writeDashBin "niphas-screenshot" ''
${prev.lib.getExe prev.grim} -g "$(${prev.lib.getExe prev.slurp})" - | ${prev.lib.getExe prev.satty} -f -
'';
niphas-editor = prev.lib.makeOverridable (prev.callPackage packages/vim) { }; niphas-editor = prev.lib.makeOverridable (prev.callPackage packages/vim) { };
niphas-bar = import packages/ashell.nix { niphas-bar = import packages/ashell.nix {
@@ -48,7 +51,21 @@
inherit (inputs) wrappers; inherit (inputs) wrappers;
pkgs = prev; pkgs = prev;
}; };
niphas-niri = import packages/niri.nix {
niphas-niri-config-with =
overwriteSettings:
(import packages/niri.nix {
inherit (inputs) wrappers;
inherit overwriteSettings;
pkgs = final;
})."config.kdl".path;
niphas-niri =
(import packages/niri.nix {
inherit (inputs) wrappers;
pkgs = final;
}).wrapper;
niphas-kanshi = import packages/kanshi.nix {
inherit (inputs) wrappers; inherit (inputs) wrappers;
pkgs = final; pkgs = final;
}; };
@@ -65,7 +82,34 @@
niphas-set-wallpaper = prev.writers.writeDashBin "niphas-set-wallpaper" '' niphas-set-wallpaper = prev.writers.writeDashBin "niphas-set-wallpaper" ''
exec ${lib.getExe prev.swaybg} --mode fill --image ${toString final.niphas-wallpaper} exec ${lib.getExe prev.swaybg} --mode fill --image ${toString final.niphas-wallpaper}
''; '';
niphas-clipboard-watcher = prev.writers.writeDashBin "niphas-clipboard-watcher" ''
exec ${lib.getExe' prev.wl-clipboard "wl-paste"} -t text --watch ${lib.getExe prev.clipman} store
'';
niphas-clipman = prev.writers.writeDashBin "niphas-clipman" ''
exec ${lib.getExe prev.clipman} pick --tool rofi
'';
niphas-redshift =
let
geolocation = [
52.5244
13.4105
];
latitude = builtins.elemAt geolocation 0;
longitude = builtins.elemAt geolocation 1;
in
prev.writers.writeDashBin "niphas-redshift" ''
exec ${lib.getExe prev.wlsunset} -l ${toString latitude} -L ${toString longitude}
'';
vimv = prev.callPackage packages/vimv.nix { }; vimv = prev.callPackage packages/vimv.nix { };
keyboardScripts = prev.callPackage packages/keyboardScripts.nix {
pkgs = final;
inherit (final) lib;
};
}; };
packages = eachSupportedSystem ( packages = eachSupportedSystem (
@@ -81,10 +125,17 @@
niphas-bar niphas-bar
niphas-git niphas-git
niphas-niri niphas-niri
niphas-kanshi
niphas-editor niphas-editor
niphas-wallpaper
niphas-set-wallpaper
niphas-clipboard-watcher
niphas-clipman
niphas-redshift
vimv vimv
; ;
} }
// pkgs.keyboardScripts
); );
formatter = eachSupportedSystem (system: treefmtEval.${system}.config.build.wrapper); formatter = eachSupportedSystem (system: treefmtEval.${system}.config.build.wrapper);

View File

@@ -28,6 +28,7 @@
pkgs.wdisplays pkgs.wdisplays
pkgs.nsxiv pkgs.nsxiv
pkgs.xdg-desktop-portal pkgs.xdg-desktop-portal
pkgs.clipman
pkgs.xdg-desktop-portal-gnome pkgs.xdg-desktop-portal-gnome
pkgs.rofi # to provide rofi-sensible-terminal pkgs.rofi # to provide rofi-sensible-terminal
@@ -37,8 +38,12 @@
pkgs.niphas-terminal pkgs.niphas-terminal
pkgs.niphas-web-browser pkgs.niphas-web-browser
pkgs.niphas-set-wallpaper pkgs.niphas-set-wallpaper
pkgs.niphas-redshift
pkgs.niphas-screenshot
pkgs.niphas-clipboard-watcher
pkgs.niphas-runner pkgs.niphas-runner
pkgs.niphas-locker pkgs.niphas-locker
pkgs.niphas-kanshi
]; ];
programs.niri = { programs.niri = {

18
packages/kanshi.nix Normal file
View File

@@ -0,0 +1,18 @@
{ wrappers, pkgs }:
let
kanshi = wrappers.wrapperModules.kanshi.apply {
inherit pkgs;
configFile.content = ''
profile {
output "eDP-1" enable
}
# laptop above external monitor
profile {
output "HDMI-A-1" enable position 0,0
output "eDP-1" enable position 0,1440
}
'';
};
in
kanshi.wrapper

View File

@@ -0,0 +1,38 @@
{ pkgs, lib }:
let
keyboards = {
german = {
code = "de";
variant = "T3";
};
russian = {
code = "ru";
variant = "phonetic_winkeys";
};
greek = {
code = "gr";
variant = "polytonic";
};
};
keyboardScripts = lib.mapAttrs' (
name: keyboard:
lib.nameValuePair "kb-${name}" (
pkgs.writers.writeDashBin "kb-${name}" ''
exec ${lib.getExe pkgs.niphas-niri} msg action load-config-file --path ${
pkgs.niphas-niri-config-with {
input = {
keyboard = {
xkb.layout = "de,${keyboard.code}";
xkb.variant = "T3,${keyboard.variant}";
xkb.options = "compose:caps,grp:ctrls_toggle";
numlock = null;
};
};
}
}
''
)
) keyboards;
in
keyboardScripts

View File

@@ -1,11 +1,7 @@
{ {
wrappers, wrappers,
pkgs, pkgs,
screenshotPath ? null, overwriteSettings ? { },
geolocation ? [
52.5244
13.4105
],
}: }:
let let
lib = pkgs.lib; lib = pkgs.lib;
@@ -15,171 +11,155 @@ let
shadow-color = "#0007"; shadow-color = "#0007";
}; };
niri = wrappers.wrapperModules.niri.apply { niriWrapper = wrappers.wrapperModules.niri.apply {
inherit pkgs; inherit pkgs;
settings = builtins.foldl' lib.recursiveUpdate { } ( settings = lib.recursiveUpdate {
[ input = {
keyboard = {
xkb.layout = "de";
xkb.variant = "T3";
xkb.options = "compose:caps";
numlock = null;
};
touchpad = {
tap = null;
drag = true;
};
mouse = null;
trackpoint = null;
warp-mouse-to-focus = null;
focus-follows-mouse = null;
};
layout = {
gaps = 8;
center-focused-column = "never";
preset-column-widths = [
{ proportion = 1. / 3.; }
{ proportion = 1. / 2.; }
{ proportion = 2. / 3.; }
];
default-column-width = {
proportion = 1. / 2.;
};
focus-ring = {
width = 2;
active-color = colors.active-color;
inactive-color = colors.inactive-color;
};
shadow = {
on = null;
draw-behind-window = true;
softness = 30;
spread = 5;
color = colors.shadow-color;
};
};
spawn-at-startup = [
(lib.getExe pkgs.niphas-bar)
(lib.getExe pkgs.niphas-set-wallpaper)
(lib.getExe pkgs.niphas-clipboard-watcher)
(lib.getExe pkgs.niphas-redshift)
(lib.getExe pkgs.niphas-kanshi)
];
hotkey-overlay.skip-at-startup = null;
prefer-no-csd = null;
animations.slowdown = 0.5; # twice as fast
binds =
let
wpctl = lib.getExe' pkgs.wireplumber "wpctl";
in
{ {
input = { "Mod+Shift+Slash".show-hotkey-overlay = null;
keyboard = { "Mod+Y".spawn = lib.getExe pkgs.niphas-web-browser;
xkb.layout = "de"; "Mod+T".spawn = lib.getExe pkgs.niphas-file-browser;
numlock = null; "Mod+Return".spawn = lib.getExe pkgs.niphas-terminal;
}; "Mod+D".spawn = lib.getExe pkgs.niphas-runner;
touchpad = { "Mod+Shift+W".spawn = lib.getExe pkgs.niphas-locker;
tap = null; "Print".spawn = lib.getExe pkgs.niphas-screenshot;
drag = true; "Mod+Q".spawn = lib.getExe pkgs.niphas-clipman;
};
mouse = null;
trackpoint = null;
warp-mouse-to-focus = null;
focus-follows-mouse = null;
};
layout = {
gaps = 8;
center-focused-column = "never";
preset-column-widths = [
{ proportion = 1. / 3.; }
{ proportion = 1. / 2.; }
{ proportion = 2. / 3.; }
];
default-column-width = {
proportion = 1. / 2.;
};
focus-ring = {
width = 2;
active-color = colors.active-color;
inactive-color = colors.inactive-color;
};
shadow = {
on = null;
draw-behind-window = true;
softness = 30;
spread = 5;
color = colors.shadow-color;
};
};
spawn-at-startup = [
(lib.getExe pkgs.niphas-bar)
(lib.getExe pkgs.niphas-set-wallpaper)
]
++ lib.optional (geolocation != null) (
let
latitude = builtins.elemAt geolocation 0;
longitude = builtins.elemAt geolocation 1;
in
[
(lib.getExe pkgs.wlsunset)
"-l"
(toString latitude)
"-L"
(toString longitude)
]
);
hotkey-overlay.skip-at-startup = null;
prefer-no-csd = null;
animations.slowdown = 0.5; # twice as fast
binds =
let
wpctl = lib.getExe' pkgs.wireplumber "wpctl";
in
{
"Mod+Shift+Slash".show-hotkey-overlay = null;
"Mod+Y".spawn = lib.getExe pkgs.niphas-web-browser;
"Mod+T".spawn = lib.getExe pkgs.niphas-file-browser;
"Mod+Return".spawn = lib.getExe pkgs.niphas-terminal;
"Mod+D".spawn = lib.getExe pkgs.niphas-runner;
"Mod+Shift+W".spawn = lib.getExe pkgs.niphas-locker;
# TODO allow-when-locked # TODO allow-when-locked
"XF86AudioRaiseVolume".spawn-sh = "${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; "XF86AudioRaiseVolume".spawn-sh = "${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0";
"XF86AudioLowerVolume".spawn-sh = "${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; "XF86AudioLowerVolume".spawn-sh = "${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 0.1-";
"XF86AudioMute".spawn-sh = "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"; "XF86AudioMute".spawn-sh = "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
"XF86AudioMicMute".spawn-sh = "${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; "XF86AudioMicMute".spawn-sh = "${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
"XF86AudioPlay".spawn-sh = "${lib.getExe pkgs.playerctl} play-pause"; "XF86AudioPlay".spawn-sh = "${lib.getExe pkgs.playerctl} play-pause";
"XF86AudioStop".spawn-sh = "${lib.getExe pkgs.playerctl} stop"; "XF86AudioStop".spawn-sh = "${lib.getExe pkgs.playerctl} stop";
"XF86AudioPrev".spawn-sh = "${lib.getExe pkgs.playerctl} previous"; "XF86AudioPrev".spawn-sh = "${lib.getExe pkgs.playerctl} previous";
"XF86AudioNext".spawn-sh = "${lib.getExe pkgs.playerctl} next"; "XF86AudioNext".spawn-sh = "${lib.getExe pkgs.playerctl} next";
"XF86MonBrightnessUp".spawn-sh = "${lib.getExe pkgs.brightnessctl} --class=backlight set +25%"; "XF86MonBrightnessUp".spawn-sh = "${lib.getExe pkgs.brightnessctl} --class=backlight set +25%";
"XF86MonBrightnessDown".spawn-sh = "${lib.getExe pkgs.brightnessctl} --class=backlight set 25%-"; "XF86MonBrightnessDown".spawn-sh = "${lib.getExe pkgs.brightnessctl} --class=backlight set 25%-";
# TODO repeat=false # TODO repeat=false
"Mod+O".toggle-overview = null; "Mod+O".toggle-overview = null;
"Mod+Shift+Q".close-window = null; "Mod+Shift+Q".close-window = null;
"Mod+H".focus-column-left = null; "Mod+H".focus-column-left = null;
"Mod+J".focus-window-or-workspace-down = null; "Mod+J".focus-window-or-workspace-down = null;
"Mod+K".focus-window-or-workspace-up = null; "Mod+K".focus-window-or-workspace-up = null;
"Mod+L".focus-column-right = null; "Mod+L".focus-column-right = null;
"Mod+Shift+H".move-column-left = null; "Mod+Shift+H".move-column-left = null;
"Mod+Shift+J".move-window-down-or-to-workspace-down = null; "Mod+Shift+J".move-window-down-or-to-workspace-down = null;
"Mod+Shift+K".move-window-up-or-to-workspace-up = null; "Mod+Shift+K".move-window-up-or-to-workspace-up = null;
"Mod+Shift+L".move-column-right = null; "Mod+Shift+L".move-column-right = null;
"Mod+Home".focus-column-first = null; "Mod+Shift+Ctrl+H".move-column-to-monitor-left = null;
"Mod+End".focus-column-last = null; "Mod+Shift+Ctrl+J".move-column-to-monitor-down = null;
"Mod+Shift+Home".move-column-to-first = null; "Mod+Shift+Ctrl+K".move-column-to-monitor-up = null;
"Mod+Shift+End".move-column-to-last = null; "Mod+Shift+Ctrl+L".move-column-to-monitor-right = null;
"Mod+Home".focus-column-first = null;
"Mod+End".focus-column-last = null;
"Mod+Shift+Home".move-column-to-first = null;
"Mod+Shift+End".move-column-to-last = null;
# TODO cooldown-ms=150 # TODO cooldown-ms=150
"Mod+WheelScrollDown".focus-workspace-down = null; "Mod+WheelScrollDown".focus-workspace-down = null;
"Mod+WheelScrollUp".focus-workspace-up = null; "Mod+WheelScrollUp".focus-workspace-up = null;
"Mod+Shift+WheelScrollDown".move-column-to-workspace-down = null; "Mod+Shift+WheelScrollDown".move-column-to-workspace-down = null;
"Mod+Shift+WheelScrollUp".move-column-to-workspace-up = null; "Mod+Shift+WheelScrollUp".move-column-to-workspace-up = null;
"Mod+WheelScrollRight".focus-column-right = null; "Mod+WheelScrollRight".focus-column-right = null;
"Mod+WheelScrollLeft".focus-column-left = null; "Mod+WheelScrollLeft".focus-column-left = null;
"Mod+Shift+WheelScrollRight".move-column-right = null; "Mod+Shift+WheelScrollRight".move-column-right = null;
"Mod+Shift+WheelScrollLeft".move-column-left = null; "Mod+Shift+WheelScrollLeft".move-column-left = null;
"Mod+1".focus-workspace = 1; "Mod+1".focus-workspace = 1;
"Mod+2".focus-workspace = 2; "Mod+2".focus-workspace = 2;
"Mod+3".focus-workspace = 3; "Mod+3".focus-workspace = 3;
"Mod+4".focus-workspace = 4; "Mod+4".focus-workspace = 4;
"Mod+5".focus-workspace = 5; "Mod+5".focus-workspace = 5;
"Mod+6".focus-workspace = 6; "Mod+6".focus-workspace = 6;
"Mod+7".focus-workspace = 7; "Mod+7".focus-workspace = 7;
"Mod+8".focus-workspace = 8; "Mod+8".focus-workspace = 8;
"Mod+9".focus-workspace = 9; "Mod+9".focus-workspace = 9;
"Mod+Shift+1".move-window-to-workspace = 1; "Mod+Shift+1".move-window-to-workspace = 1;
"Mod+Shift+2".move-window-to-workspace = 2; "Mod+Shift+2".move-window-to-workspace = 2;
"Mod+Shift+3".move-window-to-workspace = 3; "Mod+Shift+3".move-window-to-workspace = 3;
"Mod+Shift+4".move-window-to-workspace = 4; "Mod+Shift+4".move-window-to-workspace = 4;
"Mod+Shift+5".move-window-to-workspace = 5; "Mod+Shift+5".move-window-to-workspace = 5;
"Mod+Shift+6".move-window-to-workspace = 6; "Mod+Shift+6".move-window-to-workspace = 6;
"Mod+Shift+7".move-window-to-workspace = 7; "Mod+Shift+7".move-window-to-workspace = 7;
"Mod+Shift+8".move-window-to-workspace = 8; "Mod+Shift+8".move-window-to-workspace = 8;
"Mod+Shift+9".move-window-to-workspace = 9; "Mod+Shift+9".move-window-to-workspace = 9;
"Mod+Tab".focus-workspace-previous = null; "Mod+Tab".focus-workspace-previous = null;
"Mod+Comma".consume-window-into-column = null; "Mod+Comma".consume-window-into-column = null;
"Mod+Period".expel-window-from-column = null; "Mod+Period".expel-window-from-column = null;
"Mod+R".switch-preset-column-width = null; "Mod+R".switch-preset-column-width = null;
"Mod+F".maximize-column = null; "Mod+F".maximize-column = null;
"Mod+Shift+F".fullscreen-window = null; "Mod+Shift+F".fullscreen-window = null;
"Mod+Ctrl+F".expand-column-to-available-width = null; "Mod+Ctrl+F".expand-column-to-available-width = null;
"Mod+Minus".set-column-width = "-10%"; "Mod+Minus".set-column-width = "-10%";
"Mod+Plus".set-column-width = "+10%"; "Mod+Plus".set-column-width = "+10%";
"Mod+V".toggle-window-floating = null; "Mod+V".toggle-window-floating = null;
"Mod+Shift+V".switch-focus-between-floating-and-tiling = null; "Mod+Shift+V".switch-focus-between-floating-and-tiling = null;
# allow-inhibiting=false # allow-inhibiting=false
"Mod+Escape".toggle-keyboard-shortcuts-inhibit = null; "Mod+Escape".toggle-keyboard-shortcuts-inhibit = null;
"Mod+Shift+E".quit = null; "Mod+Shift+E".quit = null;
"Ctrl+Alt+Delete".quit = null; "Ctrl+Alt+Delete".quit = null;
}; };
} } overwriteSettings;
]
++ lib.optional (screenshotPath != null) [
{
screenshot-path = screenshotPath;
binds = {
"Print".screenshot = null;
"Ctrl+Print".screenshot-screen = null;
"Alt+Print".screenshot-window = null;
};
}
]
);
}; };
in in
niri.wrapper niriWrapper

View File

@@ -1,5 +1,6 @@
{ {
neovim, neovim,
nodejs,
vimPlugins, vimPlugins,
fetchFromGitHub, fetchFromGitHub,
vimUtils, vimUtils,
@@ -14,28 +15,41 @@ neovim.override {
configure = { configure = {
vimAlias = true; vimAlias = true;
viAlias = true; viAlias = true;
customRC = '' customRC =
source ${./shared.vim}
source ${./init.vim} lib.optionalString withCopilot (''
let g:snippet_directory = '${vimPlugins.friendly-snippets}' luafile ${writeText "copilot.lua" ''
luafile ${./init.lua} require("copilot").setup({
'' suggestion = { enabled = false },
+ lib.optionalString (stylixColors != null) ( panel = { enabled = false },
with stylixColors.withHashtag; copilot_node_command = '${lib.getExe nodejs}'
''
luafile ${writeText "colors.lua" ''
require('base16-colorscheme').setup({
base00 = '${base00}', base01 = '${base01}', base02 = '${base02}', base03 = '${base03}',
base04 = '${base04}', base05 = '${base05}', base06 = '${base06}', base07 = '${base07}',
base08 = '${base08}', base09 = '${base09}', base0A = '${base0A}', base0B = '${base0B}',
base0C = '${base0C}', base0D = '${base0D}', base0E = '${base0E}', base0F = '${base0F}'
}) })
require("copilot_cmp").setup()
''} ''}
'')
+ ''
source ${./shared.vim}
source ${./init.vim}
let g:snippet_directory = '${vimPlugins.friendly-snippets}'
luafile ${./init.lua}
'' ''
) + lib.optionalString (stylixColors != null) (
+ lib.optionalString (colorscheme != null) '' with stylixColors.withHashtag;
colorscheme ${colorscheme} ''
''; luafile ${writeText "colors.lua" ''
require('base16-colorscheme').setup({
base00 = '${base00}', base01 = '${base01}', base02 = '${base02}', base03 = '${base03}',
base04 = '${base04}', base05 = '${base05}', base06 = '${base06}', base07 = '${base07}',
base08 = '${base08}', base09 = '${base09}', base0A = '${base0A}', base0B = '${base0B}',
base0C = '${base0C}', base0D = '${base0D}', base0E = '${base0E}', base0F = '${base0F}'
})
''}
''
)
+ lib.optionalString (colorscheme != null) ''
colorscheme ${colorscheme}
'';
packages.nvim = with vimPlugins; { packages.nvim = with vimPlugins; {
start = [ start = [
base16-nvim base16-nvim
@@ -81,7 +95,10 @@ neovim.override {
} }
) )
] ]
++ lib.optional withCopilot vimPlugins.copilot-nvim; ++ lib.optionals withCopilot [
vimPlugins.copilot-lua
vimPlugins.copilot-cmp
];
opt = [ opt = [
csv csv
dhall-vim dhall-vim

View File

@@ -19,17 +19,23 @@ cmp.setup({
luasnip.lsp_expand(args.body) luasnip.lsp_expand(args.body)
end, end,
}, },
completion = {
autocomplete = { require("cmp.types").cmp.TriggerEvent.TextChanged },
},
mapping = { mapping = {
-- https://github.com/hrsh7th/nvim-cmp/wiki/Example-mappings#super-tab-like-mapping ["<C-Space>"] = cmp.mapping.complete(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
["<Tab>"] = cmp.mapping(function(fallback) ["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_next_item() cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump() luasnip.expand_or_jump()
else else
fallback() cmp.complete()
end end
end, { "i", "s" }), end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback) ["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_prev_item() cmp.select_prev_item()
@@ -41,8 +47,11 @@ cmp.setup({
end, { "i", "s" }), end, { "i", "s" }),
}, },
sources = cmp.config.sources({ sources = cmp.config.sources({
{ name = "nvim_lsp" }, { name = "copilot", priority = 1000 },
{ name = "luasnip" }, { name = "nvim_lsp", priority = 800 },
{ name = "luasnip", priority = 700 },
{ name = "path", priority = 500 },
{ name = "buffer", priority = 300 },
}), }),
}) })
@@ -92,10 +101,11 @@ local language_servers = {
pyright = {}, -- pyright pyright = {}, -- pyright
-- tsserver = {}, -- typescript-language-server -- tsserver = {}, -- typescript-language-server
cssls = {}, cssls = {},
elmls = {}, -- elm-language-server elmls = {}, -- elm-language-server
gopls = {}, -- gopls gopls = {}, -- gopls
denols = {}, -- deno built in denols = {}, -- deno built in
bashls = {}, -- bash-language-server bashls = {}, -- bash-language-server
ocamllsp = {}, -- ocamllsp
lua_ls = { lua_ls = {
Lua = { Lua = {
runtime = { runtime = {
@@ -112,9 +122,9 @@ local language_servers = {
}, },
}, },
}, },
hls = {}, -- haskell-language-server hls = {}, -- haskell-language-server
html = {}, -- vscode-langservers-extracted html = {}, -- vscode-langservers-extracted
jsonls = {}, -- vscode-langservers-extracted jsonls = {}, -- vscode-langservers-extracted
lemminx = {}, -- lemminx (for xml) lemminx = {}, -- lemminx (for xml)
nil_ls = { nil_ls = {
["nil"] = { ["nil"] = {
@@ -122,10 +132,10 @@ local language_servers = {
command = { "nixfmt" }, command = { "nixfmt" },
}, },
}, },
}, -- github:oxalica/nil }, -- github:oxalica/nil
dhall_lsp_server = {}, -- dhall-lsp-server dhall_lsp_server = {}, -- dhall-lsp-server
-- rnix = {}, -- rnix-lsp -- rnix = {}, -- rnix-lsp
jqls = {}, -- jq-lsp jqls = {}, -- jq-lsp
rust_analyzer = { ["rust-analyzer"] = {} }, rust_analyzer = { ["rust-analyzer"] = {} },
-- eslint = {}, -- eslint = {},
-- volar? vls? -- volar? vls?

View File

@@ -45,6 +45,17 @@ let g:netrw_winsize = 25
call matchadd('colorcolumn', '\%101v', 100) call matchadd('colorcolumn', '\%101v', 100)
highlight colorcolumn ctermbg=red highlight colorcolumn ctermbg=red
fun! TrimWhitespace()
" Skip if the filetype is markdown
if &ft =~ 'markdown'
return
endif
let l:save = winsaveview()
keeppatterns %s/\s\+$//e
call winrestview(l:save)
endfun
autocmd BufWritePre * call TrimWhitespace()
" undofile - This allows you to use undos after exiting and restarting " undofile - This allows you to use undos after exiting and restarting
" This, like swap and backups, uses .vim-undo first, then ~/.vim/undo " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
" :help undo-persistence " :help undo-persistence