diff --git a/flake.lock b/flake.lock index e03935e..dafb7f2 100644 --- a/flake.lock +++ b/flake.lock @@ -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" } }, diff --git a/flake.nix b/flake.nix index 91ccddd..adc2da5 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; @@ -86,7 +95,6 @@ overlays = [ inputs.hypr-contrib.overlays.default - inputs.hyprland.overlays.default inputs.neovim-nightly-overlay.overlay overlay ]; diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index aefaac4..d79ad69 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -34,42 +34,54 @@ let which-nix = pkgs.writeFishApplication { name = "which-nix"; - runtimeInputs = with pkgs; [ which coreutils-full ]; + runtimeInputs = with pkgs; [ which coreutils-full procps ]; text = /* fish */ '' - readlink -f (which $argv) + function recurse -a path; + if not test -f "$path" + return + end + + echo $path + if test -L $path + recurse (readlink $path) + end + end + + for arg in $argv + recurse (which $arg) + end ''; completions = /* fish */ '' complete -c which-nix -fa '(__fish_complete_command)' ''; }; - gi = pkgs.writeFishApplication - { - name = "gi"; - runtimeInputs = with pkgs; [ fzf gum curl ]; - text = /* fish */ '' - set url https://www.gitignore.io/api + gi = pkgs.writeFishApplication { + name = "gi"; + runtimeInputs = with pkgs; [ fzf gum curl ]; + text = /* fish */ '' + set url https://www.gitignore.io/api - if test (count $argv) -eq 0 - set choice ( curl -sL $url/list \ - | string split "," \ - | fzf -m \ - | string join "," ) - else - set choice (string join "," $argv[1..]) - end + if test (count $argv) -eq 0 + set choice ( curl -sL $url/list \ + | string split "," \ + | fzf -m \ + | string join "," ) + else + set choice (string join "," $argv[1..]) + end - if gum confirm "Overwrite current .gitignore?" - curl -sL $url/$choice > .gitignore - else - curl -sL $url/$choice >> .gitignore - end - ''; - completions = /* fish */ '' - set args (curl -sL https://www.gitignore.io/api/list | string split ",") - complete -c gi -fa "$args" - ''; - }; + if gum confirm "Overwrite current .gitignore?" + curl -sL $url/$choice > .gitignore + else + curl -sL $url/$choice >> .gitignore + end + ''; + completions = /* fish */ '' + set args (curl -sL https://www.gitignore.io/api/list | string split ",") + complete -c gi -fa "$args" + ''; + }; in { users.users.moritz = { @@ -149,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 diff --git a/modules/profiles/personal.nix b/modules/profiles/personal.nix index bfea3e2..d56b796 100644 --- a/modules/profiles/personal.nix +++ b/modules/profiles/personal.nix @@ -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"; + }; }; } diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index de683ab..f6e8c92 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -8,9 +8,12 @@ with lib; let cfg = config.my.programs.fish; shellConfig = config.my.shell; - exportVariables = - lib.mapAttrsToList (n: v: ''set -x ${n} "${v}"'') shellConfig.variables; - exportedVariables = lib.concatStringsSep "\n" exportVariables; + exportedVariables = + let + exportVariables = + lib.mapAttrsToList (n: v: ''set -x ${n} "${v}"'') shellConfig.variables; + in + lib.concatStringsSep "\n" exportVariables; in { options.my.programs.fish.enable = mkEnableOption "fish"; diff --git a/modules/programs/git.nix b/modules/programs/git.nix index c3995dc..6216899 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -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"; diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index e208565..7c1cefa 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -9,7 +9,8 @@ with lib; let cfg = config.my.programs.hyprland; - hyprland = pkgs.hyprland.override { enableNvidiaPatches = cfg.nvidiaSupport; }; + hyprland-nvidia = pkgs.hyprland.override { enableNvidiaPatches = true; }; + hyprland = if cfg.nvidiaSupport then hyprland-nvidia else pkgs.hyprland; in { options.my.programs.hyprland = { diff --git a/modules/programs/nix.nix b/modules/programs/nix.nix index 39b47a2..c358dbc 100644 --- a/modules/programs/nix.nix +++ b/modules/programs/nix.nix @@ -24,6 +24,8 @@ in }; config.nix = { + nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; + package = pkgs.nix-super; extraOptions = "experimental-features = nix-command flakes"; diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index f39da7c..4d95a7b 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -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; diff --git a/modules/programs/nvim/plugins/codeium-vim.lua b/modules/programs/nvim/plugins/codeium-vim.lua deleted file mode 100644 index 72cd968..0000000 --- a/modules/programs/nvim/plugins/codeium-vim.lua +++ /dev/null @@ -1,2 +0,0 @@ --- dont show ghost text -vim.g.codeium_render = false diff --git a/modules/programs/nvim/plugins/coding.nix b/modules/programs/nvim/plugins/coding.nix new file mode 100644 index 0000000..79a94bc --- /dev/null +++ b/modules/programs/nvim/plugins/coding.nix @@ -0,0 +1,305 @@ +{ pkgs, ... }: + +with builtins; +{ + config.my.programs.nvim.plugins = with pkgs.vimPlugins; [ + { + plugin = formatter-nvim; + cmd = [ "Format" "Fmt" ]; + keys = [ + { + key = "="; + cmd = "Format"; + 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 = "xx"; cmd = "TroubleToggle document_diagnostics"; desc = "Document Diagnostics (Trouble)"; } + { key = "xX"; cmd = "TroubleToggle workspace_diagnostics"; desc = "Workspace Diagnostics (Troule)"; } + { key = "xl"; cmd = "TroubleToggle loclist"; desc = "Location List (Trouble)"; } + { key = "xq"; cmd = "TroubleToggle quickfix"; desc = "Quickfix List (Trouble)"; } + { key = "xt"; cmd = "TodoTrouble"; desc = "Todo (Trouble)"; } + { key = "xT"; cmd = "TodoTrouble keywords=TODO,FIX,FIXME"; desc = "Todo/Fix/Fixme (Trouble)"; } + { key = "ft"; cmd = "TodoTelescope"; 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 = "ff"; cmd = "Telescope find_files"; desc = "Find files"; } + { key = "fb"; cmd = "Telescope buffers"; desc = "Find buffers"; } + { key = "fl"; cmd = "Telescope current_buffer_fuzzy_find"; desc = "Search lines"; } + { key = "fg"; cmd = "Telescope live_grep"; desc = "Live grep"; } + { key = "fh"; cmd = "Telescope help_tags"; 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 = "z"; cmd = "Telekasten"; desc = "zettelkasten"; } + ]; + conf = builtins.readFile ./lua/zettelkasten-nvim.lua; + } + { + plugin = nvim-surround; + event = [ "BufReadPost" "BufNewFile" ]; + opts = { }; + } + { + plugin = zen-mode-nvim; + keys = [ + { key = "tz"; cmd = "ZenMode"; 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 = "re"; cmd = ": Refactor eextract "; desc = "Extract"; mode = [ "x" ]; } + { key = "rf"; cmd = ": Refactor extract_to_file "; desc = "Extract to file"; mode = [ "x" ]; } + { key = "rv"; cmd = ": Refactor extract_var "; desc = "Extract variable"; mode = [ "x" ]; } + { key = "ri"; cmd = ": Refactor inline_var"; desc = "Inline variable"; mode = [ "n" "x" ]; } + { key = "rI"; cmd = ": Refactor inline_func"; desc = "Inline function"; mode = [ "n" "x" ]; } + { key = "rb"; cmd = ": Refactor extract_block"; desc = "Extract block"; mode = [ "n" ]; } + { key = "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({ + ["r"] = { + name = "refactoring", + }, + }) + ''; + opts = { }; + } + { + plugin = harpoon; + keys = [ + { key = "ha"; cmd = "lua require('harpoon.mark').add_file()"; desc = "Add file"; } + { key = "hh"; cmd = "lua require('harpoon.ui').toggle_quick_menu()"; desc = "Harpoon"; } + { key = "h1"; cmd = "lua require('harpoon.ui').nav_file(1)"; desc = "Harpoon file 1"; } + { key = "h2"; cmd = "lua require('harpoon.ui').nav_file(2)"; desc = "Harpoon file 2"; } + { key = "h3"; cmd = "lua require('harpoon.ui').nav_file(3)"; desc = "Harpoon file 3"; } + { key = "h4"; cmd = "lua require('harpoon.ui').nav_file(4)"; desc = "Harpoon file 4"; } + ]; + opts = { }; + } + ]; +} diff --git a/modules/programs/nvim/plugins/copilot-lua.lua b/modules/programs/nvim/plugins/copilot-lua.lua deleted file mode 100644 index f9799dc..0000000 --- a/modules/programs/nvim/plugins/copilot-lua.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("copilot").setup({ - suggestion = { enabled = false }, - panel = { enabled = false }, -}) -vim.cmd("Copilot disable") diff --git a/modules/programs/nvim/plugins/coq-nvim.lua b/modules/programs/nvim/plugins/coq-nvim.lua deleted file mode 100644 index 63536a8..0000000 --- a/modules/programs/nvim/plugins/coq-nvim.lua +++ /dev/null @@ -1,6 +0,0 @@ -vim.g.coq_settings = { - auto_start = "shut-up", - keymap = { - jump_to_mark = "", - }, -} diff --git a/modules/programs/nvim/plugins/coq-thirdparty.lua b/modules/programs/nvim/plugins/coq-thirdparty.lua deleted file mode 100644 index ec1e05c..0000000 --- a/modules/programs/nvim/plugins/coq-thirdparty.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("coq_3p")({ - { src = "orgmode", short_name = "ORG" }, - { src = "codeium", short_name = "COD" }, -}) diff --git a/modules/programs/nvim/plugins/default.nix b/modules/programs/nvim/plugins/default.nix deleted file mode 100644 index 8fcc9e1..0000000 --- a/modules/programs/nvim/plugins/default.nix +++ /dev/null @@ -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 = "Format"; 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 = "xx"; cmd = "TroubleToggle document_diagnostics"; desc = "Document Diagnostics (Trouble)"; } - { key = "xX"; cmd = "TroubleToggle workspace_diagnostics"; desc = "Workspace Diagnostics (Troule)"; } - { key = "xl"; cmd = "TroubleToggle loclist"; desc = "Location List (Trouble)"; } - { key = "xq"; cmd = "TroubleToggle quickfix"; desc = "Quickfix List (Trouble)"; } - { key = "xt"; cmd = "TodoTrouble"; desc = "Todo (Trouble)"; } - { key = "xT"; cmd = "TodoTrouble keywords=TODO,FIX,FIXME"; desc = "Todo/Fix/Fixme (Trouble)"; } - { key = "st"; cmd = "TodoTelescope"; 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 = "ff"; cmd = "Telescope find_files"; desc = "Find files"; } - { key = "fb"; cmd = "Telescope buffers"; desc = "Find buffers"; } - { key = "fr"; cmd = "Telescope oldfiles"; desc = "Find recent files"; } - { key = "sl"; cmd = "Telescope current_buffer_fuzzy_find"; desc = "Search lines"; } - { key = "sg"; cmd = "Telescope live_grep"; desc = "Live grep"; } - { key = "sc"; cmd = "Telescope command_history"; desc = "Command history"; } - { key = "sC"; cmd = "Telescope commands"; desc = "Commands"; } - { key = "sd"; cmd = "Telescope diagnostics"; desc = "Diagnostics"; } - { key = "sh"; cmd = "Telescope help_tags"; desc = "Help tags"; } - { key = "sk"; cmd = "Telescope keymaps"; desc = "Keymaps"; } - { key = "ss"; cmd = "Telescope lsp_document_symbols"; desc = "Symbols (Document)"; } - { key = "sS"; cmd = "Telescope lsp_workspace_symbols"; 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 = "z"; cmd = "Telekasten"; 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 = "tz"; cmd = "ZenMode"; desc = "Zen mode"; } - ]; - dependencies = [ - { plugin = twilight-nvim; } - ]; - } - ]; -} diff --git a/modules/programs/nvim/plugins/catppuccin-nvim.lua b/modules/programs/nvim/plugins/lua/catppuccin-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/catppuccin-nvim.lua rename to modules/programs/nvim/plugins/lua/catppuccin-nvim.lua diff --git a/modules/programs/nvim/plugins/formatter-nvim.lua b/modules/programs/nvim/plugins/lua/formatter-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/formatter-nvim.lua rename to modules/programs/nvim/plugins/lua/formatter-nvim.lua diff --git a/modules/programs/nvim/plugins/gitsigns-nvim.lua b/modules/programs/nvim/plugins/lua/gitsigns-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/gitsigns-nvim.lua rename to modules/programs/nvim/plugins/lua/gitsigns-nvim.lua diff --git a/modules/programs/nvim/plugins/mini-nvim.lua b/modules/programs/nvim/plugins/lua/mini-nvim.lua similarity index 98% rename from modules/programs/nvim/plugins/mini-nvim.lua rename to modules/programs/nvim/plugins/lua/mini-nvim.lua index e89e7a3..f2c42d3 100644 --- a/modules/programs/nvim/plugins/mini-nvim.lua +++ b/modules/programs/nvim/plugins/lua/mini-nvim.lua @@ -1,6 +1,5 @@ require("mini.align").setup() require("mini.move").setup() -require("mini.pairs").setup() require("mini.starter").setup() require("mini.statusline").setup({ diff --git a/modules/programs/nvim/plugins/neodev-nvim.lua b/modules/programs/nvim/plugins/lua/neodev-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/neodev-nvim.lua rename to modules/programs/nvim/plugins/lua/neodev-nvim.lua diff --git a/modules/programs/nvim/plugins/noice-nvim.lua b/modules/programs/nvim/plugins/lua/noice-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/noice-nvim.lua rename to modules/programs/nvim/plugins/lua/noice-nvim.lua diff --git a/modules/programs/nvim/plugins/null-ls-nvim.lua b/modules/programs/nvim/plugins/lua/null-ls-nvim.lua similarity index 93% rename from modules/programs/nvim/plugins/null-ls-nvim.lua rename to modules/programs/nvim/plugins/lua/null-ls-nvim.lua index c689fad..6701630 100644 --- a/modules/programs/nvim/plugins/null-ls-nvim.lua +++ b/modules/programs/nvim/plugins/lua/null-ls-nvim.lua @@ -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 diff --git a/modules/programs/nvim/plugins/lua/nvim-cmp.lua b/modules/programs/nvim/plugins/lua/nvim-cmp.lua new file mode 100644 index 0000000..1a8a070 --- /dev/null +++ b/modules/programs/nvim/plugins/lua/nvim-cmp.lua @@ -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({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), + [""] = 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" }), + [""] = 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, + }, + }) +) diff --git a/modules/programs/nvim/plugins/nvim-lspconfig.lua b/modules/programs/nvim/plugins/lua/nvim-lspconfig.lua similarity index 81% rename from modules/programs/nvim/plugins/nvim-lspconfig.lua rename to modules/programs/nvim/plugins/lua/nvim-lspconfig.lua index 0c44ceb..7aa6dd7 100644 --- a/modules/programs/nvim/plugins/nvim-lspconfig.lua +++ b/modules/programs/nvim/plugins/lua/nvim-lspconfig.lua @@ -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("") @@ -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 = { diff --git a/modules/programs/nvim/plugins/nvim-treesitter-textsubjects.lua b/modules/programs/nvim/plugins/lua/nvim-treesitter-textsubjects.lua similarity index 100% rename from modules/programs/nvim/plugins/nvim-treesitter-textsubjects.lua rename to modules/programs/nvim/plugins/lua/nvim-treesitter-textsubjects.lua diff --git a/modules/programs/nvim/plugins/lua/nvim-treesitter.lua b/modules/programs/nvim/plugins/lua/nvim-treesitter.lua new file mode 100644 index 0000000..e221fdd --- /dev/null +++ b/modules/programs/nvim/plugins/lua/nvim-treesitter.lua @@ -0,0 +1,10 @@ +require("nvim-treesitter.configs").setup({ + sync_install = false, + auto_install = false, + highlight = { + enable = true, + }, + context_commentstring = { + enable = true, + }, +}) diff --git a/modules/programs/nvim/plugins/nvim-ufo.lua b/modules/programs/nvim/plugins/lua/nvim-ufo.lua similarity index 100% rename from modules/programs/nvim/plugins/nvim-ufo.lua rename to modules/programs/nvim/plugins/lua/nvim-ufo.lua diff --git a/modules/programs/nvim/plugins/statuscol-nvim.lua b/modules/programs/nvim/plugins/lua/statuscol-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/statuscol-nvim.lua rename to modules/programs/nvim/plugins/lua/statuscol-nvim.lua diff --git a/modules/programs/nvim/plugins/telescope.lua b/modules/programs/nvim/plugins/lua/telescope.lua similarity index 100% rename from modules/programs/nvim/plugins/telescope.lua rename to modules/programs/nvim/plugins/lua/telescope.lua diff --git a/modules/programs/nvim/plugins/vim-startuptime.lua b/modules/programs/nvim/plugins/lua/vim-startuptime.lua similarity index 100% rename from modules/programs/nvim/plugins/vim-startuptime.lua rename to modules/programs/nvim/plugins/lua/vim-startuptime.lua diff --git a/modules/programs/nvim/plugins/which-key-nvim.lua b/modules/programs/nvim/plugins/lua/which-key-nvim.lua similarity index 68% rename from modules/programs/nvim/plugins/which-key-nvim.lua rename to modules/programs/nvim/plugins/lua/which-key-nvim.lua index 8adb863..aa3c8a9 100644 --- a/modules/programs/nvim/plugins/which-key-nvim.lua +++ b/modules/programs/nvim/plugins/lua/which-key-nvim.lua @@ -1,14 +1,16 @@ vim.o.timeout = true vim.o.timeoutlen = 500 --- buffer +-- Delete require("which-key").register({ - b = { - name = "buffer", - b = { "Telescope buffers", "List buffers" }, - d = { "bd", "Delete buffer" }, + d = { + name = "delete", + b = { "bd", "Delete buffer" }, + w = { "c", "Delete window" }, }, }, { prefix = "" }) + +-- buffer require("which-key").register({ ["["] = { b = { "bprevious", "Previous buffer" }, @@ -25,26 +27,6 @@ require("which-key").register({ ["|"] = { "v", "Split window horizontally" }, ["-"] = { "s", "Split window vertically" }, w = { "w", "Switch window" }, - d = { "c", "Delete window" }, - }, -}, { prefix = "" }) - --- tab -require("which-key").register({ - [""] = { - name = "tab", - [""] = { "tabnew", "New tab" }, - n = { "tabnext", "Next tab" }, - p = { "tabprevious", "Previous tab" }, - d = { "tabclose", "Close tab" }, - }, -}, { prefix = "" }) - --- file -require("which-key").register({ - f = { - name = "file/find", - n = { "enew", "New file" }, }, }, { prefix = "" }) diff --git a/modules/programs/nvim/plugins/zettelkasten-nvim.lua b/modules/programs/nvim/plugins/lua/zettelkasten-nvim.lua similarity index 100% rename from modules/programs/nvim/plugins/zettelkasten-nvim.lua rename to modules/programs/nvim/plugins/lua/zettelkasten-nvim.lua diff --git a/modules/programs/nvim/plugins/nvim-lastplace.lua b/modules/programs/nvim/plugins/nvim-lastplace.lua deleted file mode 100644 index d97700f..0000000 --- a/modules/programs/nvim/plugins/nvim-lastplace.lua +++ /dev/null @@ -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, -}) diff --git a/modules/programs/nvim/plugins/nvim-treesitter.lua b/modules/programs/nvim/plugins/nvim-treesitter.lua deleted file mode 100644 index 0c13317..0000000 --- a/modules/programs/nvim/plugins/nvim-treesitter.lua +++ /dev/null @@ -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, - }, -}) diff --git a/modules/programs/nvim/plugins/oil-nvim.lua b/modules/programs/nvim/plugins/oil-nvim.lua deleted file mode 100644 index 6c9c81e..0000000 --- a/modules/programs/nvim/plugins/oil-nvim.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("oil").setup() -require("which-key").register({ - d = { require("oil").toggle_float, "Directory (oil)" }, -}, { prefix = "t" }) diff --git a/modules/programs/nvim/plugins/orgmode.lua b/modules/programs/nvim/plugins/orgmode.lua deleted file mode 100644 index 789eb0a..0000000 --- a/modules/programs/nvim/plugins/orgmode.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("orgmode").setup({ - org_agenda_files = { "~/Notes/org" }, - org_default_notes_file = "~/Notes/org/refile.org", -}) diff --git a/modules/programs/nvim/plugins/smartcolumn-nvim.lua b/modules/programs/nvim/plugins/smartcolumn-nvim.lua deleted file mode 100644 index c095401..0000000 --- a/modules/programs/nvim/plugins/smartcolumn-nvim.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("smartcolumn").setup({ - colorcolumn = "120", - disabled_filetypes = { "help", "text", "markdown", "dashboard" }, -}) diff --git a/modules/programs/nvim/plugins/todo-comments-nvim.lua b/modules/programs/nvim/plugins/todo-comments-nvim.lua deleted file mode 100644 index 57fce71..0000000 --- a/modules/programs/nvim/plugins/todo-comments-nvim.lua +++ /dev/null @@ -1 +0,0 @@ -require("todo-comments").setup() diff --git a/modules/programs/nvim/plugins/treesitter.nix b/modules/programs/nvim/plugins/treesitter.nix new file mode 100644 index 0000000..d4c3cf0 --- /dev/null +++ b/modules/programs/nvim/plugins/treesitter.nix @@ -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" ]; + } + ]; +} diff --git a/modules/programs/nvim/plugins/trouble-nvim.lua b/modules/programs/nvim/plugins/trouble-nvim.lua deleted file mode 100644 index 38ef1e9..0000000 --- a/modules/programs/nvim/plugins/trouble-nvim.lua +++ /dev/null @@ -1 +0,0 @@ -require("trouble").setup() diff --git a/modules/programs/nvim/plugins/ui.nix b/modules/programs/nvim/plugins/ui.nix new file mode 100644 index 0000000..0e535c4 --- /dev/null +++ b/modules/programs/nvim/plugins/ui.nix @@ -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; }]; + } + ]; +} diff --git a/modules/services/openconnect.nix b/modules/services/openconnect.nix index 87c37a1..6eddd64 100644 --- a/modules/services/openconnect.nix +++ b/modules/services/openconnect.nix @@ -17,7 +17,7 @@ in gateway = "vpn.uni-leipzig.de"; protocol = "anyconnect"; user = "mb18cele@uni-leipzig.de"; - # NOTE file content as follows: + # NOTE: file content as follows: # # "1-Standard-Uni" or "2-Spezial-Alles" # Explanation: diff --git a/overlays/builders.nix b/overlays/builders.nix index 813b7d3..359a4af 100644 --- a/overlays/builders.nix +++ b/overlays/builders.nix @@ -2,7 +2,33 @@ _: final: _: with final.lib; -{ +rec { + fishFile = + { name + , destination + , content + , checkPhase ? null + }: + final.writeTextFile { + inherit name destination; + executable = true; + allowSubstitutes = true; + preferLocalBuild = false; + text = '' + #!${getExe final.fish} + + ${content} + ''; + + checkPhase = + if checkPhase == null then '' + runHook preCheck + ${getExe final.fish} -n "$target" + runHook postCheck + '' + else checkPhase; + }; + writeFishApplication = { name , text @@ -11,30 +37,21 @@ with final.lib; , checkPhase ? null }: let - fishFile = destination: content: final.writeTextFile { - inherit name destination; - executable = true; - allowSubstitutes = true; - preferLocalBuild = false; - text = '' - #!${getExe final.fish} + runtimeHeader = optionalString (runtimeInputs != [ ]) + ''export PATH="${makeBinPath runtimeInputs}:$PATH"''; - ${optionalString (runtimeInputs != [ ]) ''export PATH="${makeBinPath runtimeInputs}:$PATH"''} - - ${content} - ''; - - checkPhase = - if checkPhase == null then '' - runHook preCheck - ${getExe final.fish} -n "$target" - runHook postCheck - '' - else checkPhase; + script = fishFile { + inherit checkPhase; + name = "${name}_script"; + destination = "/bin/${name}"; + content = concatLines [ runtimeHeader text ]; + }; + completions_file = fishFile { + inherit checkPhase; + name = "${name}_completions"; + destination = "/share/fish/vendor_completions.d/${name}.fish"; + content = concatLines [ runtimeHeader completions ]; }; - - script = fishFile "/bin/${name}" text; - completions_file = fishFile "/share/fish/vendor_completions.d/${name}.fish" completions; in final.symlinkJoin { inherit name; diff --git a/overlays/packages.nix b/overlays/packages.nix index 66b2624..973523e 100644 --- a/overlays/packages.nix +++ b/overlays/packages.nix @@ -11,6 +11,7 @@ final: prev: version = lib.my.mkVersionInput inputs.rofi-wayland; }); timers = inputs.timers.packages.${prev.system}.default; + hyprland = inputs.hyprland.packages.${prev.system}.default; fzf1 = final.writeShellApplication { name = "fzf1"; diff --git a/overlays/vimPlugins.nix b/overlays/vimPlugins.nix index eba8e54..39f81d4 100644 --- a/overlays/vimPlugins.nix +++ b/overlays/vimPlugins.nix @@ -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; + }); }; } diff --git a/secrets/nordvpn.age b/secrets/nordvpn.age deleted file mode 100644 index 4f0074e..0000000 Binary files a/secrets/nordvpn.age and /dev/null differ diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 09e13f4..7c7267c 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -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 ]; } diff --git a/secrets/spotifyd.age b/secrets/spotifyd.age deleted file mode 100644 index f564d39..0000000 --- a/secrets/spotifyd.age +++ /dev/null @@ -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:6V싄t0\2o<*?J\TϢV_ \ No newline at end of file diff --git a/secrets/ssh-builder.age b/secrets/ssh-builder.age new file mode 100644 index 0000000..ba15122 --- /dev/null +++ b/secrets/ssh-builder.age @@ -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 +߉38e:ImF?U~83NCzAM]0fkuFLl