Compare commits

..

21 Commits

Author SHA1 Message Date
0c1452f138 niri: overview is A 2026-03-22 08:56:26 +01:00
e1d45bcf0b monitor fix 2026-03-21 22:52:03 +01:00
cc86feef57 niri: smoother monitor motions 2026-03-21 22:38:42 +01:00
a26bfb1501 niri: remove flake input, keyboard scripts 2026-03-21 20:21:10 +01:00
7dd94c7b96 niri: xwayland-satellite 2026-03-21 19:02:13 +01:00
2e35a88e99 niri: monitor focus commands 2026-03-21 18:43:53 +01:00
2f1e780e5d niri master 2026-03-21 17:33:17 +01:00
a60952237e kanshi 2026-03-21 17:33:08 +01:00
43aad292d8 niri: finally, real keyboards 2026-03-17 23:06:15 +01:00
5e7204bd56 niri: manifest monitor motions 2026-03-17 21:58:16 +01:00
2370d5ace1 niri: add kanshi 2026-03-17 21:42:54 +01:00
790b0b3451 kanshi 2026-03-17 21:37:47 +01:00
cd55626328 vim: add ocamllsp 2026-03-13 16:40:51 +01:00
0f8167282e niphas-web-browser: firefox 2026-03-09 14:23:50 +01:00
234e29f367 vim: trim trailing spaces 2026-03-09 10:13:23 +01:00
13ee868d5d provide desktop utilities 2026-02-20 16:38:28 +01:00
d9d6418d6a vim: install nodejs if copilot is enabled 2026-02-14 10:59:54 +01:00
a39f1f7967 neovim: copilot in cmp 2026-02-13 16:57:16 +01:00
4637065e94 niri: configure xkb like at home 2026-02-13 09:05:53 +01:00
86bf2150a7 niri: niphas-screenshot 2026-02-10 21:51:28 +01:00
dd6f9a89cb vim: fix copilot plugin name 2026-02-10 21:29:32 +01:00
8 changed files with 275 additions and 197 deletions

6
flake.lock generated
View File

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

View File

@@ -34,10 +34,13 @@
overlays.default = final: prev: {
niphas-terminal = prev.alacritty;
niphas-web-browser = prev.qutebrowser;
niphas-web-browser = prev.firefox;
niphas-file-browser = prev.pcmanfm;
niphas-runner = prev.writers.writeDashBin "niphas-runner" "${prev.lib.getExe prev.rofi} -show run";
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-bar = import packages/ashell.nix {
@@ -48,7 +51,13 @@
inherit (inputs) wrappers;
pkgs = prev;
};
niphas-niri = import packages/niri.nix {
niphas-niri =
(import packages/niri.nix {
inherit (inputs) wrappers;
pkgs = final;
}).wrapper;
niphas-kanshi = import packages/kanshi.nix {
inherit (inputs) wrappers;
pkgs = final;
};
@@ -65,6 +74,28 @@
niphas-set-wallpaper = prev.writers.writeDashBin "niphas-set-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 { };
};
@@ -73,7 +104,9 @@
let
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [ inputs.self.overlays.default ];
overlays = [
inputs.self.overlays.default
];
};
in
{
@@ -81,7 +114,13 @@
niphas-bar
niphas-git
niphas-niri
niphas-kanshi
niphas-editor
niphas-wallpaper
niphas-set-wallpaper
niphas-clipboard-watcher
niphas-clipman
niphas-redshift
vimv
;
}

View File

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

17
packages/kanshi.nix Normal file
View File

@@ -0,0 +1,17 @@
{ wrappers, pkgs }:
let
kanshi = wrappers.wrapperModules.kanshi.apply {
inherit pkgs;
configFile.content = ''
profile {
output "eDP-1" enable
}
profile dual {
output eDP-1 mode 1920x1080 position 190,1080 scale 1.25 transform normal
output HDMI-A-2 mode 1920x1080@60Hz position 0,0 scale 1 transform normal
}
'';
};
in
kanshi.wrapper

View File

@@ -1,11 +1,7 @@
{
wrappers,
pkgs,
screenshotPath ? null,
geolocation ? [
52.5244
13.4105
],
overwriteSettings ? { },
}:
let
lib = pkgs.lib;
@@ -15,14 +11,14 @@ let
shadow-color = "#0007";
};
niri = wrappers.wrapperModules.niri.apply {
niriWrapper = wrappers.wrapperModules.niri.apply {
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 = {
@@ -61,20 +57,10 @@ let
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)
]
);
(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
@@ -89,6 +75,8 @@ let
"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;
"Print".spawn = lib.getExe pkgs.niphas-screenshot;
"Mod+Q".spawn = lib.getExe pkgs.niphas-clipman;
# TODO allow-when-locked
"XF86AudioRaiseVolume".spawn-sh = "${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0";
@@ -103,17 +91,17 @@ let
"XF86MonBrightnessDown".spawn-sh = "${lib.getExe pkgs.brightnessctl} --class=backlight set 25%-";
# TODO repeat=false
"Mod+O".toggle-overview = null;
"Mod+A".toggle-overview = null;
"Mod+Shift+Q".close-window = null;
"Mod+H".focus-column-left = null;
"Mod+J".focus-window-or-workspace-down = null;
"Mod+K".focus-window-or-workspace-up = null;
"Mod+L".focus-column-right = null;
"Mod+Shift+H".move-column-left = 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+L".move-column-right = null;
"Mod+H".focus-column-or-monitor-left = null;
"Mod+J".focus-monitor-down = null;
"Mod+K".focus-monitor-up = null;
"Mod+L".focus-column-or-monitor-right = null;
"Mod+Shift+H".move-column-left-or-to-monitor-left = null;
"Mod+Shift+J".move-column-to-monitor-down = null;
"Mod+Shift+K".move-column-to-monitor-up = null;
"Mod+Shift+L".move-column-right-or-to-monitor-right = null;
"Mod+Home".focus-column-first = null;
"Mod+End".focus-column-last = null;
"Mod+Shift+Home".move-column-to-first = null;
@@ -167,19 +155,7 @@ let
"Mod+Shift+E".quit = null;
"Ctrl+Alt+Delete".quit = null;
};
}
]
++ lib.optional (screenshotPath != null) [
{
screenshot-path = screenshotPath;
binds = {
"Print".screenshot = null;
"Ctrl+Print".screenshot-screen = null;
"Alt+Print".screenshot-window = null;
};
}
]
);
} overwriteSettings;
};
in
niri.wrapper
niriWrapper

View File

@@ -1,5 +1,6 @@
{
neovim,
nodejs,
vimPlugins,
fetchFromGitHub,
vimUtils,
@@ -14,7 +15,20 @@ neovim.override {
configure = {
vimAlias = true;
viAlias = true;
customRC = ''
customRC =
lib.optionalString withCopilot (''
luafile ${writeText "copilot.lua" ''
require("copilot").setup({
suggestion = { enabled = false },
panel = { enabled = false },
copilot_node_command = '${lib.getExe nodejs}'
})
require("copilot_cmp").setup()
''}
'')
+ ''
source ${./shared.vim}
source ${./init.vim}
let g:snippet_directory = '${vimPlugins.friendly-snippets}'
@@ -81,7 +95,10 @@ neovim.override {
}
)
]
++ lib.optional withCopilot vimPlugins.copilot-nvim;
++ lib.optionals withCopilot [
vimPlugins.copilot-lua
vimPlugins.copilot-cmp
];
opt = [
csv
dhall-vim

View File

@@ -19,17 +19,23 @@ cmp.setup({
luasnip.lsp_expand(args.body)
end,
},
completion = {
autocomplete = { require("cmp.types").cmp.TriggerEvent.TextChanged },
},
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)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
cmp.complete()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
@@ -41,8 +47,11 @@ cmp.setup({
end, { "i", "s" }),
},
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "copilot", priority = 1000 },
{ name = "nvim_lsp", priority = 800 },
{ name = "luasnip", priority = 700 },
{ name = "path", priority = 500 },
{ name = "buffer", priority = 300 },
}),
})
@@ -96,6 +105,7 @@ local language_servers = {
gopls = {}, -- gopls
denols = {}, -- deno built in
bashls = {}, -- bash-language-server
ocamllsp = {}, -- ocamllsp
lua_ls = {
Lua = {
runtime = {

View File

@@ -45,6 +45,17 @@ let g:netrw_winsize = 25
call matchadd('colorcolumn', '\%101v', 100)
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
" This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
" :help undo-persistence