Merge remote-tracking branch 'refs/remotes/origin/nixos' into nixos

nixos
Moritz Böhme 2023-09-10 15:23:27 +02:00
commit 37a93b29ee
Signed by: moritz
GPG Key ID: 970C6E89EB0547A9
45 changed files with 864 additions and 543 deletions

View File

@ -1,5 +1,21 @@
{
"nodes": {
"actions-preview-nvim": {
"flake": false,
"locked": {
"lastModified": 1692778077,
"narHash": "sha256-5HzyrYWGTdorG4JXMv0iQNj9EM702+8g7E18Oct1JiY=",
"owner": "aznhe21",
"repo": "actions-preview.nvim",
"rev": "5650c76abfb84d6498330dd045657ba630ecdbba",
"type": "github"
},
"original": {
"owner": "aznhe21",
"repo": "actions-preview.nvim",
"type": "github"
}
},
"agenix": {
"inputs": {
"darwin": "darwin",
@ -25,11 +41,11 @@
"arkenfox-userjs": {
"flake": false,
"locked": {
"lastModified": 1691983650,
"narHash": "sha256-oA1bIpPc27Kk89n3JGpni7RkcIDRVAsTjUfjRHbKS24=",
"lastModified": 1693196107,
"narHash": "sha256-t6qvPFJIF+De2KqMfCI5DEA40BwWeu4AFRWOzKeEVE0=",
"owner": "arkenfox",
"repo": "user.js",
"rev": "915f39959c7e077f00477e6ce34a0f9f9e3e7c6b",
"rev": "ba173d49205ee927ed62e81e606569d98f531d38",
"type": "github"
},
"original": {
@ -55,6 +71,27 @@
"type": "github"
}
},
"codeium-nvim": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1693966170,
"narHash": "sha256-maRkkUCzjSXK04ts+Io0WFBV1MxR7dCw8I6TV03Dpbs=",
"owner": "jcdickinson",
"repo": "codeium.nvim",
"rev": "6a8cbce54c41e0c305b5f77721f61b2ddd4b6c6d",
"type": "github"
},
"original": {
"owner": "jcdickinson",
"repo": "codeium.nvim",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
@ -133,11 +170,11 @@
]
},
"locked": {
"lastModified": 1690933134,
"narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=",
"lastModified": 1693611461,
"narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb",
"rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca",
"type": "github"
},
"original": {
@ -187,6 +224,21 @@
}
},
"flake-utils": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems"
},
@ -204,7 +256,7 @@
"type": "github"
}
},
"flake-utils_2": {
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
},
@ -222,7 +274,7 @@
"type": "github"
}
},
"flake-utils_3": {
"flake-utils_4": {
"inputs": {
"systems": "systems_4"
},
@ -322,11 +374,11 @@
"hmts-nvim": {
"flake": false,
"locked": {
"lastModified": 1692743873,
"narHash": "sha256-lfqJVj1HbFJ5H4mo6rKYrexaosqSh17+PQ9BWpcuxZI=",
"lastModified": 1693226725,
"narHash": "sha256-jUuztOqNBltC3axa7s3CPJz9Cmukfwkf846+Z/gAxCU=",
"owner": "calops",
"repo": "hmts.nvim",
"rev": "34b825bd1c9ec1b6e2952c111753e2eb286c9e07",
"rev": "14fd941d7ec2bb98314a1aacaa2573d97f1629ab",
"type": "github"
},
"original": {
@ -363,11 +415,11 @@
]
},
"locked": {
"lastModified": 1692763155,
"narHash": "sha256-qMrGKZ8c/q/mHO3ZdrcBPwiVVXPLLgXjY98Ejqb5kAA=",
"lastModified": 1693972774,
"narHash": "sha256-Dt9UZs0/DaIex598quYRYFuGabUbvFdNrHuvGc6HjBc=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6a20e40acaebf067da682661aa67da8b36812606",
"rev": "b22d7bab30076bbb73744867d6c5bf7d6380570c",
"type": "github"
},
"original": {
@ -381,11 +433,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1690635289,
"narHash": "sha256-ec77Yf7mqusmGkxrmYXEG4D0DqEcNRA3vFextWVQOVA=",
"lastModified": 1693839821,
"narHash": "sha256-ha9Cxqb81Yni217SoM/zFxE0nNz8IMtreTw4SlXw/D4=",
"owner": "hyprwm",
"repo": "contrib",
"rev": "bef073cff65917ba2d888aa4dc39bd9868e2b0a4",
"rev": "74aa6b02ff4bd48aaee4da461a16c4cbaaa0ca7e",
"type": "github"
},
"original": {
@ -403,11 +455,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1692871050,
"narHash": "sha256-OJ/OkOLFn546rcXmj/3VEGlsPYjdXWAhEmjqdc6re6k=",
"lastModified": 1693944974,
"narHash": "sha256-kWa86ahIQvQIgo3GYFJShlBuKTXfggVbrZjkbdjct7U=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "90c03e5bd2204ba6d1a0167c68f65b7a9231bef4",
"rev": "c3a83daa1e61285a418c39a1d9f29427c2c9a2c3",
"type": "github"
},
"original": {
@ -477,11 +529,11 @@
},
"master": {
"locked": {
"lastModified": 1692893187,
"narHash": "sha256-Hbbp6bWQykkLsvzi7yo2KQme0oXCZkCdz9bBorcSKH4=",
"lastModified": 1693980916,
"narHash": "sha256-J7JJCpNiHbXb3D7pb1JkeOTUEpJJXiGI6BngfbnhiIM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d240553dcc2180fe486155bea8a846d5941e168c",
"rev": "6485865ec300c7baf9e51ad5d64c30355ee511e7",
"type": "github"
},
"original": {
@ -514,7 +566,7 @@
},
"neovim-flake": {
"inputs": {
"flake-utils": "flake-utils_2",
"flake-utils": "flake-utils_3",
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
@ -522,11 +574,11 @@
},
"locked": {
"dir": "contrib",
"lastModified": 1692744130,
"narHash": "sha256-Iod6+KGeWnX1SV4owXpSoC17iImCJjTq2iqEp6IRBZc=",
"lastModified": 1693954768,
"narHash": "sha256-DIyHgdfhmftTN2aHVEmJ1q/W2o0Slild0McAf4sEa8U=",
"owner": "neovim",
"repo": "neovim",
"rev": "6462ee1c10f9f1aa66ffc4d4fe1b7b3d9f0f91af",
"rev": "2ef7b6a433c61837bcef0fca297a665551835423",
"type": "github"
},
"original": {
@ -545,11 +597,11 @@
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1692749096,
"narHash": "sha256-XyFSBw3WMf5cTG9ImL6S/v9Aoawr38h/Fr1XIi7peEs=",
"lastModified": 1693958686,
"narHash": "sha256-UgdB+EXYbi90vm2fam4tYgY9hYGwxSk0sxG96jIyeg4=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "83d68ba72f3308b5c90b12fb40044c870903e6ee",
"rev": "14defe836200c45acf14f3616d7ba20959028cf8",
"type": "github"
},
"original": {
@ -569,11 +621,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1691372739,
"narHash": "sha256-fZ8KfBMcIFO/R7xaWtB85SFeuUjb9SCH8fxYBnY8068=",
"lastModified": 1693724255,
"narHash": "sha256-+Ucv/aBN9wwRE62sUJEBocI+9no7PV4KRDNuFQgygzU=",
"owner": "oxalica",
"repo": "nil",
"rev": "97abe7d3d48721d4e0fcc1876eea83bb4247825b",
"rev": "4bdcfcfe38cfcb386142e043392afbfa542665dd",
"type": "github"
},
"original": {
@ -592,11 +644,11 @@
"nixpkgs-regression": "nixpkgs-regression"
},
"locked": {
"lastModified": 1691953666,
"narHash": "sha256-HxgMSgoM19OnDb4h47nrxI2lRGsDo+4Y4JEHeCoWB+Q=",
"lastModified": 1692913762,
"narHash": "sha256-WIz/rGYBUdRtkZx5BPbE9DXHfUCKlYuKkPzDsP4u77w=",
"owner": "privatevoid-net",
"repo": "nix-super",
"rev": "65e8abac80cc06f9f05147b51908a47549e9342e",
"rev": "0007178284d0247631af40931b7039d42bfc0da5",
"type": "github"
},
"original": {
@ -673,11 +725,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1692638711,
"narHash": "sha256-J0LgSFgJVGCC1+j5R2QndadWI1oumusg6hCtYAzLID4=",
"lastModified": 1693158576,
"narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "91a22f76cd1716f9d0149e8a5c68424bb691de15",
"rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
"type": "github"
},
"original": {
@ -721,11 +773,11 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1692557222,
"narHash": "sha256-TCOtZaioLf/jTEgfa+nyg0Nwq5Uc610Z+OFV75yUgGw=",
"lastModified": 1693844670,
"narHash": "sha256-t69F2nBB8DNQUWHD809oJZJVE+23XBrth4QZuVd6IE0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b07d4957ee1bd7fd3bdfd12db5f361bd70175a6",
"rev": "3c15feef7770eb5500a4b8792623e2d6f598c9c1",
"type": "github"
},
"original": {
@ -737,11 +789,11 @@
},
"nixpkgs_6": {
"locked": {
"lastModified": 1692808169,
"narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=",
"lastModified": 1693844670,
"narHash": "sha256-t69F2nBB8DNQUWHD809oJZJVE+23XBrth4QZuVd6IE0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9201b5ff357e781bf014d0330d18555695df7ba8",
"rev": "3c15feef7770eb5500a4b8792623e2d6f598c9c1",
"type": "github"
},
"original": {
@ -783,26 +835,27 @@
"type": "github"
}
},
"nvim-treesitter-textsubjects": {
"nvim-treesitter": {
"flake": false,
"locked": {
"lastModified": 1691029837,
"narHash": "sha256-O57pMYtDR713ItAeUfdkcl2IfBLQcLEa2sb+AXhaqDs=",
"owner": "RRethy",
"repo": "nvim-treesitter-textsubjects",
"rev": "df75fcec548014f158cda6498ac38c4622c221e1",
"lastModified": 1691831669,
"narHash": "sha256-1Iuvq0hVQ7LyBYOkJ5d07NkwbGcR1K61ZZmAAA7ABGs=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter",
"rev": "63260da18bf273c76b8e2ea0db84eb901cab49ce",
"type": "github"
},
"original": {
"owner": "RRethy",
"repo": "nvim-treesitter-textsubjects",
"owner": "nvim-treesitter",
"ref": "v0.9.1",
"repo": "nvim-treesitter",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_3",
"flake-utils": "flake-utils_4",
"gitignore": "gitignore",
"nixpkgs": "nixpkgs_7",
"nixpkgs-stable": "nixpkgs-stable"
@ -840,10 +893,12 @@
},
"root": {
"inputs": {
"actions-preview-nvim": "actions-preview-nvim",
"agenix": "agenix",
"arkenfox-userjs": "arkenfox-userjs",
"asus-touchpad-numpad-driver": "asus-touchpad-numpad-driver",
"flake-utils": "flake-utils",
"codeium-nvim": "codeium-nvim",
"flake-utils": "flake-utils_2",
"hmts-nvim": "hmts-nvim",
"home-manager": "home-manager_2",
"hypr-contrib": "hypr-contrib",
@ -854,12 +909,13 @@
"nil": "nil",
"nix-super": "nix-super",
"nixpkgs": "nixpkgs_6",
"nvim-treesitter-textsubjects": "nvim-treesitter-textsubjects",
"nvim-treesitter": "nvim-treesitter",
"pre-commit-hooks": "pre-commit-hooks",
"rofi-wayland": "rofi-wayland",
"smartcolumn-nvim": "smartcolumn-nvim",
"stable": "stable",
"telekasten-nvim": "telekasten-nvim",
"telescope-nvim": "telescope-nvim",
"timers": "timers"
}
},
@ -891,11 +947,11 @@
"smartcolumn-nvim": {
"flake": false,
"locked": {
"lastModified": 1692020684,
"narHash": "sha256-lNEsAkKRpMgdO6Og0odpTn/t4qkzO7EuTjC5ABJhvXc=",
"lastModified": 1693669522,
"narHash": "sha256-SfIbbrAFv/md9EgsJvO0RfDnc6oP5RYz8C5Icual1bU=",
"owner": "m4xshen",
"repo": "smartcolumn.nvim",
"rev": "4aa00ad766f3c0f0e2561e0eb42df3ea3743c135",
"rev": "d01b99355c7fab13233f48d0f28dc097e68a03f7",
"type": "github"
},
"original": {
@ -906,11 +962,11 @@
},
"stable": {
"locked": {
"lastModified": 1692794066,
"narHash": "sha256-H0aG8r16dj0x/Wz6wQhQxc9V7AsObOiHPaKxQgH6Y08=",
"lastModified": 1693771906,
"narHash": "sha256-32EnPCaVjOiEERZ+o/2Ir7JH9pkfwJZJ27SKHNvt4yk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "fc944919f743bb22379dddf18dcb72db6cff84aa",
"rev": "da5adce0ffaff10f6d0fee72a02a5ed9d01b52fc",
"type": "github"
},
"original": {
@ -1011,6 +1067,22 @@
"type": "github"
}
},
"telescope-nvim": {
"flake": false,
"locked": {
"lastModified": 1693850759,
"narHash": "sha256-309GezR93SVOD7/B8dDJIEidYziepc1s46CIRkhND1k=",
"owner": "nvim-telescope",
"repo": "telescope.nvim",
"rev": "20a37e43bb43c74c6091f9fea6551af0964ad45a",
"type": "github"
},
"original": {
"owner": "nvim-telescope",
"repo": "telescope.nvim",
"type": "github"
}
},
"timers": {
"inputs": {
"naersk": "naersk",
@ -1053,18 +1125,18 @@
"flake": false,
"locked": {
"host": "gitlab.freedesktop.org",
"lastModified": 1691073628,
"narHash": "sha256-LlxE3o3UzRY7APYVLGNKM30DBMcDifCRIQiMVSbYLIc=",
"lastModified": 1692976565,
"narHash": "sha256-eBKkG7tMxg92NskEn8dHRFY245JwjirWRoOZzW6DnUw=",
"owner": "wlroots",
"repo": "wlroots",
"rev": "c74f89d4f84bfed0284d3908aee5d207698c70c5",
"rev": "717ded9bb0191ea31bf4368be32e7a15fe1b8294",
"type": "gitlab"
},
"original": {
"host": "gitlab.freedesktop.org",
"owner": "wlroots",
"repo": "wlroots",
"rev": "c74f89d4f84bfed0284d3908aee5d207698c70c5",
"rev": "717ded9bb0191ea31bf4368be32e7a15fe1b8294",
"type": "gitlab"
}
},

View File

@ -35,18 +35,27 @@
# Neovim
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
nvim-treesitter-textsubjects.flake = false;
nvim-treesitter-textsubjects.url = "github:RRethy/nvim-treesitter-textsubjects";
smartcolumn-nvim.flake = false;
smartcolumn-nvim.url = "github:m4xshen/smartcolumn.nvim";
telekasten-nvim.flake = false;
telekasten-nvim.url = "github:renerocksai/telekasten.nvim";
telescope-nvim.flake = false;
telescope-nvim.url = "github:nvim-telescope/telescope.nvim";
nvim-treesitter.flake = false;
nvim-treesitter.url = "github:nvim-treesitter/nvim-treesitter/v0.9.1"; # NOTE: to fix weird latest issues
hmts-nvim.flake = false;
hmts-nvim.url = "github:calops/hmts.nvim";
actions-preview-nvim.flake = false;
actions-preview-nvim.url = "github:aznhe21/actions-preview.nvim";
codeium-nvim.url = "github:jcdickinson/codeium.nvim";
codeium-nvim.inputs.nixpkgs.follows = "nixpkgs";
# Hyprland
hypr-contrib.url = "github:hyprwm/contrib";
hyprland.url = "github:hyprwm/Hyprland";

View File

@ -161,7 +161,7 @@ in
# nix
(nom-system-command "nixos-boot" "sudo nixos-rebuild boot --flake ~/.dotfiles")
(nom-system-command "nixos-switch" "sudo nixos-rebuild switch --flake ~/.dotfiles")
comma
(nom-system-command "nixos-test" "sudo nixos-rebuild test --flake ~/.dotfiles")
manix
nix-index
nix-output-monitor

View File

@ -69,5 +69,24 @@ in
};
};
};
nix.buildMachines = [{
hostName = "builder";
systems = [ "aarch64-linux" "x86_64-linux" ];
protocol = "ssh-ng";
maxJobs = 1;
speedFactor = 1;
supportedFeatures = [ "nixos-test" "benchmark" "kvm" ];
mandatoryFeatures = [ ];
}];
nix.distributedBuilds = true;
# optional, useful when the builder has a faster internet connection than yours
nix.extraOptions = ''
builders-use-substitutes = true
'';
age.secrets."ssh-builder" = {
file = ../../secrets/ssh-builder.age;
owner = "0";
path = "/root/.ssh/config";
};
};
}

View File

@ -53,6 +53,7 @@ in
init.defaultBranch = "main";
merge.conflictstyle = "zdiff3";
diff.external = getExe pkgs.difftastic;
push.autoSetupRemote = true;
};
signing = mkIf cfg.signing {
key = "0x970C6E89EB0547A9";

View File

@ -110,28 +110,23 @@ in
workspace_swipe = on
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic mouse V1 {
sensitivity = -0.5
}
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# Firefox Sharing Indicator
${mkRules ["float" "move 49% 40" "noborder" "nofullscreenrequest"] ["title:^(.*Sharing Indicator)$"]}
${mkRules ["float" "move 49% 40" "noborder" "nofullscreenrequest"] ["title:^(.*Sharing Indicator.*)$"]}
# Emacs
windowrulev2 = opaque, class:^emacs$
windowrulev2 = opaque, class:^(emacs)$
# Fullscreen Applications
${mkRules ["opaque" "noblur" "noborder" "noshadow" "forceinput"] ["fullscreen:1"]}
${mkRules ["opaque" "noblur" "noshadow"] ["class:^jetbrains-pycharm$"]}
${mkRules ["tile" "opaque"] ["class:^(neovide)$"]}
${mkRules ["tile" "opaque"] ["class:^neovide$"]}
# fix xwayland apps
windowrulev2 = rounding 0, xwayland:1, floating:1
windowrulev2 = center, class:^(.*jetbrains.*)$, title:^(Confirm Exit|Open Project|win424|win201|splash)$
windowrulev2 = size 640 400, class:^(.*jetbrains.*)$, title:^(splash)$
${mkRules ["opaque" "noshadow" "noblur" "noanim" "move cursor 5 5"] ["class:^(.*jetbrains-.*)$"]}
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
@ -141,9 +136,9 @@ in
# Window binds
bind = $mainMod , F , togglefloating ,
bind = $mainMod , P , pseudo ,
bind = $mainMod , P , pseudo ,
bind = $mainMod , Q , killactive ,
bind = $mainMod , T , togglesplit ,
bind = $mainMod , T , togglesplit ,
bind = $mainMod SHIFT , F , fullscreen ,
# Program binds

View File

@ -24,6 +24,8 @@ in
};
config.nix = {
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
package = pkgs.nix-super;
extraOptions = "experimental-features = nix-command flakes";

View File

@ -1,57 +1,90 @@
{ config
, lib
, pkgs
, ...
}:
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.my.programs.nvim;
boolToString = bool: if bool then "true" else "false";
quote = str: ''"${toString str}"'';
id = x: x;
listToString = sep: f: list: ''{ ${concatStringsSep sep (map f list)} }'';
listToStringOneLine = listToString ", ";
listToStringMultiLine' = listToString ",\n" id;
toLua = value: with builtins;
if value == null then "nil" else
if isBool value then boolToString value else
if isInt value || isFloat value then toString value else
if isString value then string value else
if isAttrs value then attrs value else
if isList value then list value else
abort "should never happen (value = ${value})";
string = str: ''"${toString str}"'';
attrs = set:
let
toKeyword = name: value: "${name} = ${toLua value}";
keywords = concatStringsSep ", " (mapAttrsToList toKeyword set);
in
"{ " + keywords + " }";
listContent = values: concatStringsSep ", " (map toLua values);
list = values: "{ " + listContent values + " }";
luaList = values: "{" + (concatStringsSep ", " values) + "}";
keybinding = { key, cmd, func, mode, desc }:
let
cmdString =
if cmd != null
then quote cmd
else
(
if func != null
then func
else abort "Either cmd or function must be set"
);
descString = optionalString (desc != null) "desc = ${quote desc},";
if cmd != null then toLua cmd else
if func != null then func else
abort "Either cmd or function must be set";
descString = optionalString (desc != null) "desc = ${toLua desc},";
in
''{ ${quote key}, ${cmdString}, mode = ${quote mode}, ${descString} }'';
''{ ${toLua key}, ${cmdString}, mode = ${toLua mode}, ${descString} }'';
lazySpecFromPlugin =
{ plugin, dependencies, init, conf, lazy, event, enabled, cmd, ft, priority, keys }:
listToStringMultiLine'
{ cmd
, conf
, dependencies
, enabled
, event
, ft
, init
, keys
, lazy
, opts
, plugin
, priority
}:
luaList
([
"dir = ${quote plugin}"
"name = ${quote (getName plugin)}"
"dir = ${string plugin}"
"name = ${toLua (getName plugin)}"
]
++ (optional (lazy != null) "lazy = ${boolToString lazy}")
++ (optional (!enabled) "enabled = ${boolToString enabled}")
++ (optional (dependencies != [ ]) "dependencies = ${listToStringMultiLine' (map lazySpecFromPlugin dependencies)}")
++ (optional (init != null) "init = function(plugin)\n${toString init}\nend")
++ (optional (conf != null) "config = function(plugin, opts)\n${toString conf}\nend")
++ (optional (keys != [ ]) "keys = ${listToStringMultiLine' (map keybinding keys)}")
++ (optional (event != [ ]) "event = ${listToStringOneLine quote event}")
++ (optional (cmd != [ ]) "cmd = ${listToStringOneLine quote cmd}")
++ (optional (ft != [ ]) "ft = ${listToStringOneLine quote ft}")
++ (optional (priority != null) "priority = ${toString priority}")
++ (optional (opts != null) "opts = ${toLua opts}")
++ (optional (lazy != null) "lazy = ${toLua lazy}")
++ (optional (!enabled) "enabled = ${toLua enabled}")
++ (optional (dependencies != [ ]) "dependencies = ${luaList (map lazySpecFromPlugin dependencies)}")
++ (optional (init != null) "init = function(plugin)\n${init}\nend")
++ (optional (conf != null) "config = function(plugin, opts)\n${conf}\nend")
++ (optional (keys != [ ]) "keys = ${luaList (map keybinding keys)}")
++ (optional (event != [ ]) "event = ${toLua event}")
++ (optional (cmd != [ ]) "cmd = ${toLua cmd}")
++ (optional (ft != [ ]) "ft = ${toLua ft}")
++ (optional (priority != null) "priority = ${toLua priority}")
);
lazySpecs = listToStringMultiLine' (map lazySpecFromPlugin cfg.plugins);
lazySpecs = luaList (map lazySpecFromPlugin cfg.plugins);
lazy = /* lua */ ''
require("lazy").setup(${lazySpecs})
'';
initLua =
let
text = lib.concatLines [ (builtins.readFile ./options.lua) lazy ];
in
pkgs.runCommand "init.lua" { inherit text; } ''
touch $out
echo -n "$text" > $out
${getExe pkgs.stylua} $out
'';
in
{
imports = [ ./plugins ];
imports = lib.my.listModulesRec ./plugins;
options.my.programs.nvim = {
enable = mkEnableOption "nvim";
@ -71,6 +104,27 @@ in
Lua function to be executed when the plugin is loaded.
'';
};
opts = mkOption {
type =
let
valueType = nullOr
(oneOf [
str
bool
int
float
(listOf valueType)
(attrsOf valueType)
]) // {
description = "Lua value";
};
in
nullOr (attrsOf valueType);
default = null;
description = ''
Lua table to be passed to te plugin config function.
'';
};
dependencies = mkOption {
type = listOf sub;
default = [ ];
@ -161,8 +215,8 @@ in
'';
};
mode = mkOption {
type = str;
default = "n";
type = listOf str;
default = [ "n" ];
description = ''
Mode to bind the key in.
'';
@ -195,17 +249,9 @@ in
else neovide
)
];
xdg.configFile."nvim/init.lua" = {
source =
let
text = lib.concatLines [ (builtins.readFile ./options.lua) lazy ];
in
pkgs.runCommand "init.lua" { inherit text; } ''
touch $out
echo -n "$text" > $out
${getExe pkgs.stylua} $out
'';
};
xdg.configFile."nvim/init.lua".source = initLua;
programs.neovim = {
enable = true;
package = pkgs.neovim-nightly;

View File

@ -1,2 +0,0 @@
-- dont show ghost text
vim.g.codeium_render = false

View File

@ -0,0 +1,305 @@
{ pkgs, ... }:
with builtins;
{
config.my.programs.nvim.plugins = with pkgs.vimPlugins; [
{
plugin = formatter-nvim;
cmd = [ "Format" "Fmt" ];
keys = [
{
key = "=";
cmd = "<cmd>Format<cr>";
desc = "format (formatter)";
}
];
conf = readFile ./lua/formatter-nvim.lua;
}
{
plugin = oil-nvim;
lazy = false;
opts = { };
dependencies = [
{ plugin = which-key-nvim; }
{ plugin = nvim-web-devicons; }
];
}
{
plugin = mini-nvim;
lazy = false;
conf = readFile ./lua/mini-nvim.lua;
}
{
plugin = trouble-nvim;
keys = [
{ key = "<leader>xx"; cmd = "<cmd>TroubleToggle document_diagnostics<cr>"; desc = "Document Diagnostics (Trouble)"; }
{ key = "<leader>xX"; cmd = "<cmd>TroubleToggle workspace_diagnostics<cr>"; desc = "Workspace Diagnostics (Troule)"; }
{ key = "<leader>xl"; cmd = "<cmd>TroubleToggle loclist<cr>"; desc = "Location List (Trouble)"; }
{ key = "<leader>xq"; cmd = "<cmd>TroubleToggle quickfix<cr>"; desc = "Quickfix List (Trouble)"; }
{ key = "<leader>xt"; cmd = "<cmd>TodoTrouble<cr>"; desc = "Todo (Trouble)"; }
{ key = "<leader>xT"; cmd = "<cmd>TodoTrouble keywords=TODO,FIX,FIXME<cr>"; desc = "Todo/Fix/Fixme (Trouble)"; }
{ key = "<leader>ft"; cmd = "<cmd>TodoTelescope<cr>"; desc = "Todo"; }
{
key = "[q";
func = /* lua */ ''
function()
if require("trouble").is_open() then
require("trouble").previous({ skip_groups = true, jump = true })
else
vim.cmd.cprev()
end
end
'';
desc = "Previous trouble/quickfix item";
}
{
key = "]q";
func = /* lua */ ''
function()
if require("trouble").is_open() then
require("trouble").next({ skip_groups = true, jump = true })
else
vim.cmd.cnext()
end
end
'';
desc = "Next trouble/quickfix item";
}
];
opts = { };
dependencies = [
{ plugin = which-key-nvim; }
{ plugin = nvim-web-devicons; }
];
}
{
plugin = nvim-cmp;
conf = readFile ./lua/nvim-cmp.lua;
event = [ "InsertEnter" ];
dependencies = [
{
plugin = nvim-autopairs;
opts = { };
}
{ plugin = cmp-async-path; }
{ plugin = cmp-buffer; }
{ plugin = cmp-cmdline; }
{ plugin = cmp-nvim-lsp; }
{ plugin = cmp_luasnip; }
{
plugin = codeium-nvim;
opts = { };
}
{ plugin = friendly-snippets; }
{ plugin = lspkind-nvim; }
{ plugin = luasnip; }
];
}
{
plugin = direnv-vim;
lazy = false;
}
{
plugin = nvim-lspconfig;
event = [ "BufRead" "BufNewFile" ];
conf = readFile ./lua/nvim-lspconfig.lua;
dependencies = [
{ plugin = lsp_signature-nvim; }
{
plugin = null-ls-nvim;
conf = readFile ./lua/null-ls-nvim.lua;
dependencies = [
{ plugin = which-key-nvim; }
{ plugin = plenary-nvim; }
];
}
{ plugin = which-key-nvim; }
{ plugin = lsp_lines-nvim; }
{
plugin = nvim-ufo;
conf = readFile ./lua/nvim-ufo.lua;
dependencies = [
{ plugin = promise-async; }
];
}
{
plugin = neodev-nvim;
conf = readFile ./lua/neodev-nvim.lua;
}
{
plugin = inc-rename-nvim;
opts = {
input_buffer_type = "dressing";
};
dependencies = [
{ plugin = dressing-nvim; }
];
}
{ plugin = actions-preview-nvim; }
];
}
{
plugin = vim-fugitive;
cmd = [
"G"
"Git"
"Ggrep"
"Glgrep"
"Gclog"
"Gllog"
"Gcd"
"Glcd"
"Gedit"
"Gsplit"
"Gvsplit"
"Gtabedit"
"Gpedit"
"Gdrop"
"Gread"
"Gwrite"
"Gwq"
"Gdiffsplit"
"Gvdiffsplit"
"GMove"
"GRename"
"GDelete"
"GBrowse"
];
}
{
plugin = vim-tmux-navigator;
event = [ "VeryLazy" ];
}
{
plugin = nvim-lastplace;
event = [ "BufReadPost" "BufNewFile" ];
opts = {
lastplace_ignore_buftype = [ "quickfix" "nofile" "help" ];
lastplace_ignore_filetype = [ "gitcommit" "gitrebase" "svn" "hgcommit" ];
lastplace_open_folds = true;
};
}
{
plugin = telescope-nvim;
cmd = [ "Telescope" ];
conf = builtins.readFile ./lua/telescope.lua;
keys = [
{ key = "<leader>ff"; cmd = "<cmd>Telescope find_files<cr>"; desc = "Find files"; }
{ key = "<leader>fb"; cmd = "<cmd>Telescope buffers<cr>"; desc = "Find buffers"; }
{ key = "<leader>fl"; cmd = "<cmd>Telescope current_buffer_fuzzy_find<cr>"; desc = "Search lines"; }
{ key = "<leader>fg"; cmd = "<cmd>Telescope live_grep<cr>"; desc = "Live grep"; }
{ key = "<leader>fh"; cmd = "<cmd>Telescope help_tags<cr>"; desc = "Help tags"; }
];
dependencies = [
{ plugin = plenary-nvim; }
{ plugin = which-key-nvim; }
{ plugin = telescope-fzf-native-nvim; }
];
}
{
plugin = vim-startuptime;
cmd = [ "StartupTime" ];
conf = readFile ./lua/vim-startuptime.lua;
}
{
plugin = typst-vim;
ft = [ "typst" "typ" ];
}
{
plugin = comment-nvim;
event = [ "BufReadPost" "BufNewFile" ];
opts = { };
}
{
plugin = telekasten-nvim;
dependencies = [
{ plugin = telescope-nvim; }
{ plugin = which-key-nvim; }
{
plugin = markdown-preview-nvim;
ft = [ "md" ];
}
];
cmd = [ "Telekasten" ];
keys = [
{ key = "<leader>z"; cmd = "<cmd>Telekasten<cr>"; desc = "zettelkasten"; }
];
conf = builtins.readFile ./lua/zettelkasten-nvim.lua;
}
{
plugin = nvim-surround;
event = [ "BufReadPost" "BufNewFile" ];
opts = { };
}
{
plugin = zen-mode-nvim;
keys = [
{ key = "<leader>tz"; cmd = "<cmd>ZenMode<cr>"; desc = "Zen mode"; }
];
conf = /* lua */ ''
require("zen-mode").setup({
plugins = {
tmux = {
enabled = true,
},
},
})
'';
dependencies = [
{
plugin = twilight-nvim;
conf = /* lua */ ''
require("twilight").setup({
context = 20,
expand = { -- for treesitter, we we always try to expand to the top-most ancestor with these types
"function",
"function_definition",
"if_statement",
"method",
"method_definition",
"table",
},
})
'';
}
];
}
{
plugin = refactoring-nvim;
keys = [
{ key = "<leader>re"; cmd = ": Refactor eextract "; desc = "Extract"; mode = [ "x" ]; }
{ key = "<leader>rf"; cmd = ": Refactor extract_to_file "; desc = "Extract to file"; mode = [ "x" ]; }
{ key = "<leader>rv"; cmd = ": Refactor extract_var "; desc = "Extract variable"; mode = [ "x" ]; }
{ key = "<leader>ri"; cmd = ": Refactor inline_var"; desc = "Inline variable"; mode = [ "n" "x" ]; }
{ key = "<leader>rI"; cmd = ": Refactor inline_func"; desc = "Inline function"; mode = [ "n" "x" ]; }
{ key = "<leader>rb"; cmd = ": Refactor extract_block"; desc = "Extract block"; mode = [ "n" ]; }
{ key = "<leader>rbf"; cmd = ": Refactor extract_block_to_file"; desc = "Extract block to file"; mode = [ "n" ]; }
];
dependencies = [
{ plugin = which-key-nvim; }
{ plugin = plenary-nvim; }
{ plugin = nvim-lspconfig; }
];
init = /* lua */ ''
require("which-key").register({
["<leader>r"] = {
name = "refactoring",
},
})
'';
opts = { };
}
{
plugin = harpoon;
keys = [
{ key = "<leader>ha"; cmd = "<cmd>lua require('harpoon.mark').add_file()<cr>"; desc = "Add file"; }
{ key = "<leader>hh"; cmd = "<cmd>lua require('harpoon.ui').toggle_quick_menu()<cr>"; desc = "Harpoon"; }
{ key = "<leader>h1"; cmd = "<cmd>lua require('harpoon.ui').nav_file(1)<cr>"; desc = "Harpoon file 1"; }
{ key = "<leader>h2"; cmd = "<cmd>lua require('harpoon.ui').nav_file(2)<cr>"; desc = "Harpoon file 2"; }
{ key = "<leader>h3"; cmd = "<cmd>lua require('harpoon.ui').nav_file(3)<cr>"; desc = "Harpoon file 3"; }
{ key = "<leader>h4"; cmd = "<cmd>lua require('harpoon.ui').nav_file(4)<cr>"; desc = "Harpoon file 4"; }
];
opts = { };
}
];
}

View File

@ -1,5 +0,0 @@
require("copilot").setup({
suggestion = { enabled = false },
panel = { enabled = false },
})
vim.cmd("Copilot disable")

View File

@ -1,6 +0,0 @@
vim.g.coq_settings = {
auto_start = "shut-up",
keymap = {
jump_to_mark = "<c-n>",
},
}

View File

@ -1,4 +0,0 @@
require("coq_3p")({
{ src = "orgmode", short_name = "ORG" },
{ src = "codeium", short_name = "COD" },
})

View File

@ -1,295 +0,0 @@
{ lib, pkgs, ... }:
with builtins;
{
config.my.programs.nvim.plugins = with pkgs.vimPlugins; [
{
plugin = which-key-nvim;
lazy = false;
conf = readFile ./which-key-nvim.lua;
}
{
plugin = catppuccin-nvim;
conf = readFile ./catppuccin-nvim.lua;
lazy = false;
priority = 99;
}
{
plugin = formatter-nvim;
keys = [
{ key = "="; cmd = "<cmd>Format<cr>"; desc = "format (formatter)"; }
];
conf = readFile ./formatter-nvim.lua;
}
{
plugin = oil-nvim;
lazy = false;
conf = readFile ./oil-nvim.lua;
dependencies = [
{ plugin = which-key-nvim; }
{ plugin = nvim-web-devicons; }
];
}
{
plugin = mini-nvim;
lazy = false;
conf = readFile ./mini-nvim.lua;
}
{
plugin = trouble-nvim;
keys = [
{ key = "<leader>xx"; cmd = "<cmd>TroubleToggle document_diagnostics<cr>"; desc = "Document Diagnostics (Trouble)"; }
{ key = "<leader>xX"; cmd = "<cmd>TroubleToggle workspace_diagnostics<cr>"; desc = "Workspace Diagnostics (Troule)"; }
{ key = "<leader>xl"; cmd = "<cmd>TroubleToggle loclist<cr>"; desc = "Location List (Trouble)"; }
{ key = "<leader>xq"; cmd = "<cmd>TroubleToggle quickfix<cr>"; desc = "Quickfix List (Trouble)"; }
{ key = "<leader>xt"; cmd = "<cmd>TodoTrouble<cr>"; desc = "Todo (Trouble)"; }
{ key = "<leader>xT"; cmd = "<cmd>TodoTrouble keywords=TODO,FIX,FIXME<cr>"; desc = "Todo/Fix/Fixme (Trouble)"; }
{ key = "<leader>st"; cmd = "<cmd>TodoTelescope<cr>"; desc = "Todo"; }
{
key = "[q";
func = /* lua */ ''function()
if require("trouble").is_open() then
require("trouble").previous({ skip_groups = true, jump = true })
else
vim.cmd.cprev()
end
end'';
desc = "Previous trouble/quickfix item";
}
{
key = "]q";
func = /* lua */ ''function()
if require("trouble").is_open() then
require("trouble").next({ skip_groups = true, jump = true })
else
vim.cmd.cnext()
end
end'';
desc = "Next trouble/quickfix item";
}
];
conf = readFile ./trouble-nvim.lua;
dependencies = [
{ plugin = which-key-nvim; }
{ plugin = nvim-web-devicons; }
];
}
{
plugin = todo-comments-nvim;
event = [ "BufReadPost" "BufNewFile" ];
conf = readFile ./todo-comments-nvim.lua;
dependencies = [{ plugin = plenary-nvim; }];
}
{
plugin = direnv-vim;
lazy = false;
}
{
plugin = nvim-treesitter;
event = [ "BufReadPost" "BufNewFile" ];
conf =
let
parserDir = pkgs.symlinkJoin {
name = "tresitter-grammars-all";
paths = lib.attrValues (lib.filterAttrs (_: builtins.isAttrs) nvim-treesitter-parsers);
};
in
readFile ./nvim-treesitter.lua + ''
vim.opt.runtimepath:append("${parserDir}")
require'nvim-treesitter.configs'.setup {
parser_install_dir = "${parserDir}",
}
'';
dependencies = [
{ plugin = nvim-ts-context-commentstring; }
{
plugin = orgmode;
conf = readFile ./orgmode.lua;
}
];
}
{
plugin = nvim-lspconfig;
event = [ "BufRead" "BufNewFile" ];
conf = readFile ./nvim-lspconfig.lua;
dependencies = [
{
plugin = null-ls-nvim;
conf = readFile ./null-ls-nvim.lua;
dependencies = [
{ plugin = which-key-nvim; }
{ plugin = plenary-nvim; }
];
}
{ plugin = which-key-nvim; }
{ plugin = lsp_lines-nvim; }
{
plugin = nvim-ufo;
conf = readFile ./nvim-ufo.lua;
dependencies = [
{ plugin = promise-async; }
];
}
{
plugin = neodev-nvim;
conf = readFile ./neodev-nvim.lua;
}
{
plugin = inc-rename-nvim;
conf = /* lua */ ''
require("inc_rename").setup {
input_buffer_type = "dressing",
}
'';
dependencies = [
{
plugin = dressing-nvim;
}
];
}
];
}
{
plugin = statuscol-nvim;
event = [ "VeryLazy" ];
conf = readFile ./statuscol-nvim.lua;
}
{
plugin = vim-fugitive;
event = [ "VeryLazy" ];
}
{
plugin = vim-tmux-navigator;
event = [ "VeryLazy" ];
}
{
plugin = gitsigns-nvim;
event = [ "BufReadPost" "BufNewFile" ];
conf = readFile ./gitsigns-nvim.lua;
dependencies = [{ plugin = which-key-nvim; }];
}
{
plugin = nvim-lastplace;
event = [ "BufReadPost" "BufNewFile" ];
conf = readFile ./nvim-lastplace.lua;
}
{
plugin = nvim-treesitter-textsubjects;
event = [ "BufReadPost" "BufNewFile" ];
conf = readFile ./nvim-treesitter-textsubjects.lua;
}
{
plugin = smartcolumn-nvim;
event = [ "BufReadPost" "BufNewFile" ];
conf = readFile ./smartcolumn-nvim.lua;
}
{
plugin = telescope-nvim;
cmd = [ "Telescope" ];
conf = builtins.readFile ./telescope.lua;
keys = [
{ key = "<leader>ff"; cmd = "<cmd>Telescope find_files<cr>"; desc = "Find files"; }
{ key = "<leader>fb"; cmd = "<cmd>Telescope buffers<cr>"; desc = "Find buffers"; }
{ key = "<leader>fr"; cmd = "<cmd>Telescope oldfiles<cr>"; desc = "Find recent files"; }
{ key = "<leader>sl"; cmd = "<cmd>Telescope current_buffer_fuzzy_find<cr>"; desc = "Search lines"; }
{ key = "<leader>sg"; cmd = "<cmd>Telescope live_grep<cr>"; desc = "Live grep"; }
{ key = "<leader>sc"; cmd = "<cmd>Telescope command_history<cr>"; desc = "Command history"; }
{ key = "<leader>sC"; cmd = "<cmd>Telescope commands<cr>"; desc = "Commands"; }
{ key = "<leader>sd"; cmd = "<cmd>Telescope diagnostics<cr>"; desc = "Diagnostics"; }
{ key = "<leader>sh"; cmd = "<cmd>Telescope help_tags<cr>"; desc = "Help tags"; }
{ key = "<leader>sk"; cmd = "<cmd>Telescope keymaps<cr>"; desc = "Keymaps"; }
{ key = "<leader>ss"; cmd = "<cmd>Telescope lsp_document_symbols<cr>"; desc = "Symbols (Document)"; }
{ key = "<leader>sS"; cmd = "<cmd>Telescope lsp_workspace_symbols<cr>"; desc = "Symbols (Workspace)"; }
];
dependencies = [
{ plugin = plenary-nvim; }
{ plugin = which-key-nvim; }
{ plugin = telescope-fzf-native-nvim; }
];
}
{
plugin = vim-startuptime;
cmd = [ "StartupTime" ];
conf = readFile ./vim-startuptime.lua;
}
{
plugin = typst-vim;
ft = [ "typst" "typ" ];
}
{
plugin = comment-nvim;
event = [ "BufReadPost" "BufNewFile" ];
conf = /* lua */ ''
require("Comment").setup()
'';
}
{
plugin = telekasten-nvim;
dependencies = [
{ plugin = telescope-nvim; }
{ plugin = which-key-nvim; }
];
cmd = [ "Telekasten" ];
keys = [
{ key = "<leader>z"; cmd = "<cmd>Telekasten<cr>"; desc = "zettelkasten"; }
];
conf = builtins.readFile ./zettelkasten-nvim.lua;
}
{
plugin = markdown-preview-nvim;
ft = [ "md" ];
}
{
plugin = coq_nvim;
event = [ "BufReadPost" "BufNewFile" ];
init = builtins.readFile ./coq-nvim.lua;
dependencies = [
{
plugin = coq-thirdparty;
conf = builtins.readFile ./coq-thirdparty.lua;
dependencies = [
{
plugin = codeium-vim;
init = builtins.readFile ./codeium-vim.lua;
}
];
}
{
plugin = coq-artifacts;
}
];
}
{
plugin = nvim-surround;
event = [ "BufReadPost" "BufNewFile" ];
conf = /* lua */ ''
require("nvim-surround").setup({})
'';
}
{
plugin = nvim-treesitter-context;
event = [ "BufReadPost" "BufNewFile" ];
conf = /* lua */ ''
require("treesitter-context").setup({})
'';
}
{
plugin = dressing-nvim;
event = [ "VeryLazy" ];
}
{
plugin = hmts-nvim;
ft = [ "nix" ];
}
{
plugin = zen-mode-nvim;
keys = [
{ key = "<leader>tz"; cmd = "<cmd>ZenMode<cr>"; desc = "Zen mode"; }
];
dependencies = [
{ plugin = twilight-nvim; }
];
}
];
}

View File

@ -1,6 +1,5 @@
require("mini.align").setup()
require("mini.move").setup()
require("mini.pairs").setup()
require("mini.starter").setup()
require("mini.statusline").setup({

View File

@ -3,7 +3,6 @@ local null_ls = require("null-ls")
null_ls.setup({
sources = {
-- Code actions
null_ls.builtins.code_actions.gitsigns,
null_ls.builtins.code_actions.shellcheck,
null_ls.builtins.code_actions.statix,
-- Completion

View File

@ -0,0 +1,114 @@
local cmp = require("cmp")
local luasnip = require("luasnip")
require("luasnip.loaders.from_vscode").lazy_load()
cmp.setup({
formatting = {
format = require("lspkind").cmp_format({
mode = "symbol", -- show only symbol annotations
maxwidth = 50, -- prevent the popup from showing more than provided characters
ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead
symbol_map = {
Codeium = "",
},
}),
},
snippet = {
-- REQUIRED - you must specify a snippet engine
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<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()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
}),
sources = {
{ name = "async_path", priority = 1 },
{ name = "buffer", priority = 1 },
{ name = "luasnip", priority = 2 },
{ name = "codeium", priority = 3 },
{ name = "nvim_lsp", priority = 4 },
},
})
-- Set configuration for specific filetype.
cmp.setup.filetype("gitcommit", {
sources = cmp.config.sources({
{ name = "buffer" },
}),
})
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline({ "/", "?" }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = "async_path" },
}, {
{ name = "cmdline" },
}),
enabled = function()
-- Set of commands where cmp will be disabled
local disabled = {
IncRename = true,
}
-- Get first word of cmdline
local cmd = vim.fn.getcmdline():match("%S+")
-- Return true if cmd isn't disabled
-- else call/return cmp.close(), which returns false
return not disabled[cmd] or cmp.close()
end,
})
-- If you want insert `(` after select function or method item
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
local handlers = require("nvim-autopairs.completion.handlers")
cmp.event:on(
"confirm_done",
cmp_autopairs.on_confirm_done({
filetypes = {
-- "*" is a alias to all filetypes
["*"] = {
["("] = {
kind = {
cmp.lsp.CompletionItemKind.Function,
cmp.lsp.CompletionItemKind.Method,
},
handler = handlers["*"],
},
},
-- Disable for functional languages
haskell = false,
nix = false,
},
})
)

View File

@ -5,8 +5,9 @@ vim.diagnostic.config({
virtual_text = false,
})
local capabilities = vim.lsp.protocol.make_client_capabilities()
-- NOTE for nvim-ufo
-- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers..
local capabilities = require("cmp_nvim_lsp").default_capabilities()
-- Tell the server the capability of foldingRange,
-- Neovim hasn't added foldingRange to default capabilities, users must add it manually
capabilities.textDocument.foldingRange = {
@ -34,7 +35,7 @@ local on_attach_def = function(client, bufnr)
l = {
name = "lsp",
d = { vim.diagnostic.open_float, "Open diagnostic window" },
c = { vim.lsp.buf.code_action, "Code action" },
c = { require("actions-preview").code_actions, "Code action", mode = { "v", "n" } },
r = {
function()
return ":IncRename " .. vim.fn.expand("<cword>")
@ -51,7 +52,17 @@ local on_attach_def = function(client, bufnr)
},
},
t = {
l = { lsp_lines.toggle, "LSP lines" },
l = {
function()
lsp_lines.toggle()
if vim.diagnostic.is_disabled() then
vim.diagnostic.enable()
else
vim.diagnostic.disable()
end
end,
"LSP lines",
},
i = {
function()
vim.lsp.inlay_hint(bufnr, nil)
@ -95,11 +106,21 @@ local on_attach_def = function(client, bufnr)
vim.lsp.inlay_hint(bufnr, true)
end, timeout)
end
require("lsp_signature").on_attach({
bind = true, -- This is mandatory, otherwise border config won't get registered.
handler_opts = {
border = "rounded",
},
}, bufnr)
end
local lspconfig_default_options = {
on_attach = on_attach_def,
capabilities = capabilities,
flags = {
debounce_text_changes = 100,
},
}
---function to add default options to lspconfig
@ -107,9 +128,8 @@ local lspconfig_default_options = {
---@param options table
---@return nil
local function lspconfig_setup(lsp, options)
local coq_options = require("coq").lsp_ensure_capabilities({})
local merged_options = vim.tbl_deep_extend("force", coq_options, lspconfig_default_options, options)
lspconfig[lsp].setup(merged_options)
local final_options = vim.tbl_deep_extend("force", lspconfig_default_options, options)
lspconfig[lsp].setup(final_options)
end
local servers = {

View File

@ -0,0 +1,10 @@
require("nvim-treesitter.configs").setup({
sync_install = false,
auto_install = false,
highlight = {
enable = true,
},
context_commentstring = {
enable = true,
},
})

View File

@ -1,14 +1,16 @@
vim.o.timeout = true
vim.o.timeoutlen = 500
-- buffer
-- Delete
require("which-key").register({
b = {
name = "buffer",
b = { "<cmd>Telescope buffers<cr>", "List buffers" },
d = { "<cmd>bd<cr>", "Delete buffer" },
d = {
name = "delete",
b = { "<cmd>bd<cr>", "Delete buffer" },
w = { "<C-w>c", "Delete window" },
},
}, { prefix = "<leader>" })
-- buffer
require("which-key").register({
["["] = {
b = { "<cmd>bprevious<cr>", "Previous buffer" },
@ -25,26 +27,6 @@ require("which-key").register({
["|"] = { "<C-w>v", "Split window horizontally" },
["-"] = { "<C-w>s", "Split window vertically" },
w = { "<C-w>w", "Switch window" },
d = { "<C-w>c", "Delete window" },
},
}, { prefix = "<leader>" })
-- tab
require("which-key").register({
["<tab>"] = {
name = "tab",
["<tab>"] = { "<cmd>tabnew<cr>", "New tab" },
n = { "<cmd>tabnext<cr>", "Next tab" },
p = { "<cmd>tabprevious<cr>", "Previous tab" },
d = { "<cmd>tabclose<cr>", "Close tab" },
},
}, { prefix = "<leader>" })
-- file
require("which-key").register({
f = {
name = "file/find",
n = { "<cmd>enew<cr>", "New file" },
},
}, { prefix = "<leader>" })

View File

@ -1,5 +0,0 @@
require("nvim-lastplace").setup({
lastplace_ignore_buftype = { "quickfix", "nofile", "help" },
lastplace_ignore_filetype = { "gitcommit", "gitrebase", "svn", "hgcommit" },
lastplace_open_folds = true,
})

View File

@ -1,15 +0,0 @@
-- Load custom treesitter grammar for org filetype
require("orgmode").setup_ts_grammar()
require("nvim-treesitter.configs").setup({
sync_install = false,
auto_install = false,
highlight = {
enable = true,
-- Required for spellcheck, some LaTex highlights and
-- code block highlights that do not have ts grammar
additional_vim_regex_highlighting = { "org" },
},
context_commentstring = {
enable = true,
},
})

View File

@ -1,4 +0,0 @@
require("oil").setup()
require("which-key").register({
d = { require("oil").toggle_float, "Directory (oil)" },
}, { prefix = "<leader>t" })

View File

@ -1,4 +0,0 @@
require("orgmode").setup({
org_agenda_files = { "~/Notes/org" },
org_default_notes_file = "~/Notes/org/refile.org",
})

View File

@ -1,4 +0,0 @@
require("smartcolumn").setup({
colorcolumn = "120",
disabled_filetypes = { "help", "text", "markdown", "dashboard" },
})

View File

@ -1 +0,0 @@
require("todo-comments").setup()

View File

@ -0,0 +1,42 @@
{ lib, pkgs, ... }:
with builtins;
{
config.my.programs.nvim.plugins = with pkgs.vimPlugins; [
{
plugin = nvim-treesitter;
event = [ "BufReadPost" "BufNewFile" ];
conf =
let
parserDir = pkgs.symlinkJoin {
name = "tresitter-grammars-all";
paths = lib.attrValues (lib.filterAttrs (_: builtins.isAttrs) nvim-treesitter-parsers);
};
in
readFile ./lua/nvim-treesitter.lua + ''
vim.opt.runtimepath:append("${parserDir}")
require'nvim-treesitter.configs'.setup {
parser_install_dir = "${parserDir}",
}
'';
dependencies = [
{ plugin = nvim-ts-context-commentstring; }
];
}
{
plugin = nvim-treesitter-textsubjects;
event = [ "BufReadPost" "BufNewFile" ];
conf = readFile ./lua/nvim-treesitter-textsubjects.lua;
}
{
plugin = nvim-treesitter-context;
event = [ "BufReadPost" "BufNewFile" ];
opts = { };
}
{
plugin = hmts-nvim;
ft = [ "nix" ];
}
];
}

View File

@ -1 +0,0 @@
require("trouble").setup()

View File

@ -0,0 +1,47 @@
{ pkgs, ... }:
with builtins;
{
config.my.programs.nvim.plugins = with pkgs.vimPlugins; [
{
plugin = which-key-nvim;
lazy = false;
conf = readFile ./lua/which-key-nvim.lua;
}
{
plugin = catppuccin-nvim;
conf = readFile ./lua/catppuccin-nvim.lua;
lazy = false;
priority = 99;
}
{
plugin = todo-comments-nvim;
event = [ "BufReadPost" "BufNewFile" ];
dependencies = [{ plugin = plenary-nvim; }];
opts = { };
}
{
plugin = statuscol-nvim;
event = [ "VeryLazy" ];
conf = readFile ./lua/statuscol-nvim.lua;
}
{
plugin = smartcolumn-nvim;
event = [ "BufReadPost" "BufNewFile" ];
opts = {
colorcolumn = "120";
disabled_filetypes = [ "help" "text" "markdown" "dashboard" ];
};
}
{
plugin = dressing-nvim;
event = [ "VeryLazy" ];
}
{
plugin = gitsigns-nvim;
event = [ "BufReadPost" "BufNewFile" ];
conf = readFile ./lua/gitsigns-nvim.lua;
dependencies = [{ plugin = which-key-nvim; }];
}
];
}

View File

@ -4,11 +4,7 @@ _: prev:
with lib.my;
{
vimPlugins = prev.vimPlugins // {
nvim-treesitter-textsubjects = prev.vimUtils.buildVimPluginFrom2Nix {
pname = "nvim-treesitter-textsubjects";
version = mkVersionInput inputs.nvim-treesitter-textsubjects;
src = inputs.nvim-treesitter-textsubjects;
};
inherit (inputs.codeium-nvim.packages.${prev.system}.vimPlugins) codeium-nvim;
smartcolumn-nvim = prev.vimUtils.buildVimPluginFrom2Nix {
pname = "smartcolumn-nvim";
@ -27,5 +23,21 @@ with lib.my;
version = mkVersionInput inputs.hmts-nvim;
src = inputs.hmts-nvim;
};
actions-preview-nvim = prev.vimUtils.buildVimPluginFrom2Nix {
pname = "actions-preview-nvim";
version = mkVersionInput inputs.actions-preview-nvim;
src = inputs.actions-preview-nvim;
};
telescope-nvim = prev.vimPlugins.telescope-nvim.overrideAttrs (_: {
version = mkVersionInput inputs.telescope-nvim;
src = inputs.telescope-nvim;
});
nvim-treesitter = prev.vimPlugins.nvim-treesitter.overrideAttrs (_: {
version = mkVersionInput inputs.nvim-treesitter;
src = inputs.nvim-treesitter;
});
};
}

Binary file not shown.

View File

@ -12,16 +12,16 @@ let
hosts-work = [ nixos-work scadspc25 ];
hosts = hosts-personal ++ hosts-work;
personal = [ moritz ] ++ hosts-personal;
all = users ++ hosts;
in
{
"github.age".publicKeys = all;
"nordvpn.age".publicKeys = all;
"spotifyd.age".publicKeys = all;
"ssh-home.age".publicKeys = all;
"uni-vpn.age".publicKeys = all;
"wireguard-preshared-key.age".publicKeys = all;
"wireguard-private-key.age".publicKeys = all;
"ssh-home.age".publicKeys = personal;
"ssh-builder.age".publicKeys = personal;
"uni-vpn.age".publicKeys = personal;
"wireguard-preshared-key.age".publicKeys = personal;
"wireguard-private-key.age".publicKeys = personal;
"webis.age".publicKeys = hosts-personal ++ [ scadspc25 moritz ];
"webis-ssh.age".publicKeys = hosts-personal ++ [ scadspc25 moritz ];
}

View File

@ -1,17 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 CjuqfA /YCi+4iCBCJc2+n5DfEi6yFqYiC6WKyKqMQTC3dxYTM
TXnSGexVJPzsxV3GBoxujBPy4sYFK7tTzpgZd+tL7PY
-> ssh-ed25519 QRYDmg 7ol/1aYbVuD1peL4kMHFifxtfj1LJPQ7ByMgmoIiLG0
LJyz1aoBxOnxcy/x9yXCcMDG1CM8XSGTIvklShHsLr8
-> ssh-ed25519 wG6LYg LvuMCPIaXP8gDriTDVIXak2dLUTDgyA+ADnsFDEtpX4
PSsM5NsSVhsV1xtZPs3VZbJopfkDQg7Gxjkrnf+I5VI
-> ssh-ed25519 ZYd7Zg jt4zPtq1gv/SQ8Zqy2kFQZTUHo57d3BcBOusafU5TwE
FCifF8kUwHqlvokMMhJ/A2zCutshBg9K22gZPeYyK5s
-> ssh-ed25519 as9VYQ 2w+TXKZGnMQ5nRqVPfDiXAjGPLjMQcDzuZ42tXD81zE
GHVNnPD1QrRfjlxymtkIvW/fSH8280ye4ojag/RrL6Y
-> ssh-ed25519 dWIbQQ vFV8rbuDIUhVuWlp1zLKbSZkxWwBpjLGAHZ7TZmlpxA
2qq8R8eGQHMAtTAKJxv7ouXwbw9h9LnoipQ+dtq0bOk
-> eLqn-grease
s21qb67X34dXu+DeHZV4IA9mvegTyQSulJuWZXUyGmlxQT4N7pDAjAgrlrsT8zI
--- ogDMsipm47a5cDUlzX1zPmeakFaqXecpvYfPILf5PGA
ªï;èæŠ(+\"ßÐ`qnC:Î6†Vîì„t0½ë\2×oô¨¦Ù<œ*œ?J\ ÎTÏ¢ÐÕVÛ_Ç

10
secrets/ssh-builder.age Normal file
View File

@ -0,0 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 wG6LYg 5umyOPP+KaUaQckEZYnh+nyX2RIMDp/KtJraFuATQBM
qsS9JiY0qxR7IMwpH2x1VWF5A5/wrAkbeOzuMcf1fS0
-> ssh-ed25519 ZYd7Zg L9EJulnOPk7fEcmrWU8mVRbEN80dHCji1n4bnwGJigk
KTnk+Ku96gJ7Tj2egXyqX6UIuytHTuMFM1ygDXoIDxg
-> XQ.ai[-grease a ) r]>2~U
7CDc3c+1EZaEB15RE8JMzmdbr2WmQeP2ivIh4qgYTnKImHxJaJEhgScd0EzyEXVP
NZxuP+0
--- CE/X6hjRUWT1ya1ySIjFBnLdmPkVbL4ugDwYv9XGYoo
Úô½çµß‰¦¥×3Ïÿ8ìež:Im…èúÔF?U¨~Ù83ÍÉÜóÝðµôìNC<4E>zAÅãõúû°õM]0¥²fšð´ku˜¯†<C2AF>FL§lš<åÀSXCÅÛhEh<45> Î¥GKF<15>È<+çÒoŒ_<C592>ÝÐIP´ùça<vJ<>SxzŸÇyà£_\ÿ<>8p‰¥æ0v