diff --git a/flake.lock b/flake.lock index a1aae52..5bf5b91 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,5 @@ { "nodes": { - "advanced-git-search-nvim": { - "flake": false, - "locked": { - "lastModified": 1677794481, - "narHash": "sha256-7G0WNcaIH1/4Zs4282UdWfRExdlAz6AHzqBlSu/qioQ=", - "owner": "aaronhallaert", - "repo": "advanced-git-search.nvim", - "rev": "e36797ade1af3d0404e14db83fd09db4e619e8dc", - "type": "github" - }, - "original": { - "owner": "aaronhallaert", - "repo": "advanced-git-search.nvim", - "type": "github" - } - }, "agenix": { "inputs": { "darwin": "darwin", @@ -24,11 +8,11 @@ ] }, "locked": { - "lastModified": 1677969766, - "narHash": "sha256-AIp/ZYZMNLDZR/H7iiAlaGpu4lcXsVt9JQpBlf43HRY=", + "lastModified": 1680281360, + "narHash": "sha256-XdLTgAzjJNDhAG2V+++0bHpSzfvArvr2pW6omiFfEJk=", "owner": "ryantm", "repo": "agenix", - "rev": "03b51fe8e459a946c4b88dcfb6446e45efb2c24e", + "rev": "e64961977f60388dd0b49572bb0fc453b871f896", "type": "github" }, "original": { @@ -40,11 +24,11 @@ "arkenfox-userjs": { "flake": false, "locked": { - "lastModified": 1678691587, - "narHash": "sha256-EGfPa1uGYwQLhM27nyWosJo5Pe4yIhC3JOW0vqajK7w=", + "lastModified": 1680151825, + "narHash": "sha256-EutseXvFnDkYq95GWiGrTFqI4fqybvsPQlVV0Wy5tFU=", "owner": "arkenfox", "repo": "user.js", - "rev": "e2e8c4ea8f9c8034a2ff72fe3c2d4a4a89404c10", + "rev": "c84c419544cbbe4442190cc6325b926b519d8db5", "type": "github" }, "original": { @@ -85,11 +69,11 @@ ] }, "locked": { - "lastModified": 1678041467, - "narHash": "sha256-qqHbiN0ZfEuZ2guMAW5T011TqgrPqGqNWlHtd8AXtQA=", + "lastModified": 1681335578, + "narHash": "sha256-yIZqE6WpkgAllsJ7IAbn8k6IRz/0CS/xp6IR+8yrEP8=", "owner": "zhaofengli", "repo": "attic", - "rev": "1a3b6513b02202198bb497608d0cedc45119799b", + "rev": "171c89fbe0f099e8bf6e466a1a1a12578f703f0e", "type": "github" }, "original": { @@ -98,6 +82,22 @@ "type": "github" } }, + "bufferline-nvim": { + "flake": false, + "locked": { + "lastModified": 1681547098, + "narHash": "sha256-WZAJiDm77rS9S4tN7dz03jjnv1jFvTur6dLg8OkYVM4=", + "owner": "akinsho", + "repo": "bufferline.nvim", + "rev": "243893ba9d5d1049dd451a25cab32ec7f8f67bcf", + "type": "github" + }, + "original": { + "owner": "akinsho", + "repo": "bufferline.nvim", + "type": "github" + } + }, "cmp-async-path": { "flake": false, "locked": { @@ -114,14 +114,30 @@ "type": "github" } }, + "comment-box-nvim": { + "flake": false, + "locked": { + "lastModified": 1678772374, + "narHash": "sha256-hD9eCcrDsispi+Nvwjy/MlNW0UmFfSbh8arQpCjeneM=", + "owner": "LudoPinelli", + "repo": "comment-box.nvim", + "rev": "6672213bd5d2625a666a297b66307967effa50bc", + "type": "github" + }, + "original": { + "owner": "LudoPinelli", + "repo": "comment-box.nvim", + "type": "github" + } + }, "copilot-lua": { "flake": false, "locked": { - "lastModified": 1677479736, - "narHash": "sha256-n/SCrzzzL5WUHJk0sCXbgGusk/dQuy8DI9Pqdh+lVeQ=", + "lastModified": 1681223911, + "narHash": "sha256-ttF9LW6PNKk/BBWET2BUqtq5f7OIZ7ohtQevAaP8srg=", "owner": "zbirenbaum", "repo": "copilot.lua", - "rev": "b41d4c9c7d4f5e0272bcf94061b88e244904c56f", + "rev": "a4a37dda9e48986e5d2a90d6a3cbc88fca241dbb", "type": "github" }, "original": { @@ -182,47 +198,6 @@ "type": "github" } }, - "emacs": { - "inputs": { - "emacs-overlay": "emacs-overlay", - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_2", - "pre-commit-hooks": "pre-commit-hooks" - }, - "locked": { - "lastModified": 1676394233, - "narHash": "sha256-RHO/MgRyFqgmIgogrL5LBmBhAt8hTpUJJ6Dww46GyZI=", - "ref": "main", - "rev": "6fb9f917901160b2b212f420a8a8e4995c823626", - "revCount": 98, - "type": "git", - "url": "ssh://git@gitea.moritzboeh.me/moritz/emacs.git" - }, - "original": { - "ref": "main", - "type": "git", - "url": "ssh://git@gitea.moritzboeh.me/moritz/emacs.git" - } - }, - "emacs-overlay": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1676025076, - "narHash": "sha256-sdYhoZsLLwRXZebP6DYfIgQRjFA+itdNXaPuCWfJYkk=", - "owner": "nix-community", - "repo": "emacs-overlay", - "rev": "581072bb0d49768da9370056f7b6e7b761b5d8be", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "emacs-overlay", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -272,12 +247,15 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", "type": "github" }, "original": { @@ -302,36 +280,6 @@ } }, "flake-utils_3": { - "locked": { - "lastModified": 1678901627, - "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -346,41 +294,9 @@ "type": "github" } }, - "flake-utils_6": { - "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" - } - }, - "forgit-git": { - "flake": false, - "locked": { - "lastModified": 1677621471, - "narHash": "sha256-merUZ0IQ/qmDkquGFjKvc4vJBj4Ff62JpWYOB67lAVY=", - "owner": "wfxr", - "repo": "forgit", - "rev": "801239658718863b9c6e0ba21d027cb0caccd465", - "type": "github" - }, - "original": { - "owner": "wfxr", - "repo": "forgit", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ - "emacs", "pre-commit-hooks", "nixpkgs" ] @@ -399,24 +315,19 @@ "type": "github" } }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "pre-commit-hooks", - "nixpkgs" - ] - }, + "gitignore-nvim": { + "flake": false, "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "lastModified": 1680653909, + "narHash": "sha256-H6IXZTskIAOmp3U57NIT4Of45xXqrX/6VRm1s28S89Y=", + "owner": "wintermute-cell", + "repo": "gitignore.nvim", + "rev": "b61e4a50b78f9a3702a4ed168ab6c9ceba5f6299", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", + "owner": "wintermute-cell", + "repo": "gitignore.nvim", "type": "github" } }, @@ -424,17 +335,14 @@ "inputs": { "nixpkgs": [ "nixpkgs" - ], - "utils": [ - "flake-utils" ] }, "locked": { - "lastModified": 1678886248, - "narHash": "sha256-ff81NJtc+AgQhUlTCkx8t8hda0o72vSxDeHVGrfxH70=", + "lastModified": 1681586243, + "narHash": "sha256-vdP79IZuDZVNSl4RN1LgEuab1Tkbv4gCxiE8VLdRf7U=", "owner": "nix-community", "repo": "home-manager", - "rev": "2bd74d92bc7345f323ebcbfeb631d5cf4067ed8e", + "rev": "40ebb62101c83de81e5fd7c3cfe5cea2ed21b1ad", "type": "github" }, "original": { @@ -443,38 +351,16 @@ "type": "github" } }, - "howdy": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": [ - "nixpkgs" - ], - "pre-commit-hooks": "pre-commit-hooks_2" - }, - "locked": { - "lastModified": 1665343480, - "narHash": "sha256-mMaZFrDDiBcHDe8+lA87P3iMPea+RGfik5/E4Dyzk8U=", - "owner": "~moritzboehme", - "repo": "howdy", - "rev": "24a7cfb8c2fef1873275dbdf7c8ad562c22083de", - "type": "sourcehut" - }, - "original": { - "owner": "~moritzboehme", - "repo": "howdy", - "type": "sourcehut" - } - }, "hypr-contrib": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1677679546, - "narHash": "sha256-L+QE6hIHxhYHWPA1jfgZsbQFYxheD/hzFhtwGFRdWOk=", + "lastModified": 1679036674, + "narHash": "sha256-2s3Hfq56jL8ePyc3+calPT34FNMK2zksqwPhIxAq20o=", "owner": "hyprwm", "repo": "contrib", - "rev": "d4eccc8e7d31d30c7ce39dc2b864c4f23f173855", + "rev": "1af47a008e850c595aeddc83bb3f04fd81935caa", "type": "github" }, "original": { @@ -486,16 +372,16 @@ "hyprland": { "inputs": { "hyprland-protocols": "hyprland-protocols", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_2", "wlroots": "wlroots", "xdph": "xdph" }, "locked": { - "lastModified": 1678899680, - "narHash": "sha256-o+bo+n1HYvYJVnOG/Y/nnxdx4Lu1oFgVyrHemBbT2sE=", + "lastModified": 1681652918, + "narHash": "sha256-ybXmD3OhyMG1Yz31lxT8de7aBi2mQmXmzAZ7q49Uvi4=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "f5669a7d6bdb54d21426f6aa31a66fe813fc4e7d", + "rev": "b05ff89c76b2c9454c76daf2120f4ccb076a018d", "type": "github" }, "original": { @@ -512,11 +398,11 @@ ] }, "locked": { - "lastModified": 1671839510, - "narHash": "sha256-+PY1qqJfmZzzROgcIY4I7AkCwpnC+qBIYk2eFoA9RWc=", + "lastModified": 1681065697, + "narHash": "sha256-QPzwwlGKX95tl6ZEshboZbEwwAXww6lNLdVYd6T9Mrc=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "b8f55e02a328c47ed373133c52483bbfa20a1b75", + "rev": "4d29e48433270a2af06b8bc711ca1fe5109746cd", "type": "github" }, "original": { @@ -527,14 +413,14 @@ }, "hyprpaper": { "inputs": { - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1678893556, - "narHash": "sha256-FHhBetkV/S7M9BMpbCzUWX/P5E7tGE4mZIpj/2m0K2M=", + "lastModified": 1681650457, + "narHash": "sha256-IGXRZrFGFqUeM5iDgP/ojbrd+gKL40PaFFAITxbkfZ0=", "owner": "hyprwm", "repo": "hyprpaper", - "rev": "61961973cfd10853b32c7f904cdb88f9ab6d84dd", + "rev": "3bfaac09f58ce31c33e1a56e7eaa606a87fe4c32", "type": "github" }, "original": { @@ -546,11 +432,11 @@ "lspsaga-nvim": { "flake": false, "locked": { - "lastModified": 1678361457, - "narHash": "sha256-nrsMdfF43k0RavCq2hZ799HpY/40O0bi4kAM18dR+f4=", + "lastModified": 1681470671, + "narHash": "sha256-mekeKttJSsBpTxMShC0l29/Wx3VKUnHMh6YtLYtx9Lk=", "owner": "glepnir", "repo": "lspsaga.nvim", - "rev": "db6cdf51bf5ae45e4aa65760e597cf0d587c66ee", + "rev": "b2feb95e84776f7c9cdfb96e4c89a582c9ade0e4", "type": "github" }, "original": { @@ -561,11 +447,11 @@ }, "master": { "locked": { - "lastModified": 1678898370, - "narHash": "sha256-xTICr1j+uat5hk9FyuPOFGxpWHdJRibwZC+ATi0RbtE=", + "lastModified": 1681658302, + "narHash": "sha256-KDXpkA7JOTnffQWAA5W246FoJNbdSur5HgzYScOzYKQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ac718d02867a84b42522a0ece52d841188208f2c", + "rev": "f30febf83039aaa4a4399d46d068900a2b449de6", "type": "github" }, "original": { @@ -574,18 +460,21 @@ "type": "github" } }, - "neovim": { + "neovim-flake": { "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_6" + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "neovim-nightly-overlay", + "nixpkgs" + ] }, "locked": { "dir": "contrib", - "lastModified": 1678886704, - "narHash": "sha256-eSeJva5Wg9Dlccc9eLR/iPunQPpzHAYh6eGjPCJnnPE=", + "lastModified": 1681631972, + "narHash": "sha256-zF+sWaQPJpoDyhWXvwJGR7VryYr9+qBCWMTNRjA3BhQ=", "owner": "neovim", "repo": "neovim", - "rev": "5a38e951ec1532ba1ee8b35b42181003866d479c", + "rev": "0d9b0fbe579343fa6d6c46e6e1bf6bb8719ea5e0", "type": "github" }, "original": { @@ -595,6 +484,26 @@ "type": "github" } }, + "neovim-nightly-overlay": { + "inputs": { + "flake-compat": "flake-compat_2", + "neovim-flake": "neovim-flake", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1681632748, + "narHash": "sha256-c0CskvdpipnTn5TSjq6KqNkeKRPYCDMmVTdZL08HTJA=", + "owner": "nix-community", + "repo": "neovim-nightly-overlay", + "rev": "0e3e0029aa6353ecb7304d4a683d8d6ee69379ef", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "neovim-nightly-overlay", + "type": "github" + } + }, "nil": { "inputs": { "flake-utils": [ @@ -606,11 +515,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1678728829, - "narHash": "sha256-KbA8uakGfjfvRH+Td/VegiLdHrnqIZHkMTQ5XBjL2dE=", + "lastModified": 1681412802, + "narHash": "sha256-IcEala6vFQ7SFNOPCeXBh9Jbl8nL2QOtLmO7RbDsBbo=", "owner": "oxalica", "repo": "nil", - "rev": "e7045f1779fd202a3316f84b864c304f339cccea", + "rev": "1d5bc81023c21b22cfbea06a8b4b82963c01b941", "type": "github" }, "original": { @@ -620,70 +529,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1673540789, - "narHash": "sha256-xqnxBOK3qctIeUVxecydrEDbEXjsvHCPGPbvsl63M/U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0f213d0fee84280d8c3a97f7469b988d6fe5fcdf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1673800717, - "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1673800717, - "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1675758091, - "narHash": "sha256-7gFSQbSVAFUHtGCNHPF7mPc5CcqDk9M2+inlVPZSneg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "747927516efcb5e31ba03b7ff32f61f6d47e7d87", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1658161305, "narHash": "sha256-X/nhnMCa1Wx4YapsspyAs6QYz6T/85FofrI6NpdPDHg=", @@ -699,13 +544,29 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs-stable": { "locked": { - "lastModified": 1677676435, - "narHash": "sha256-6FxdcmQr5JeZqsQvfinIMr0XcTyTuR7EXX0H3ANShpQ=", + "lastModified": 1678872516, + "narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a08d6979dd7c82c4cef0dcc6ac45ab16051c1169", + "rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1680669251, + "narHash": "sha256-AVNE+0u4HlI3v96KCXE9risH7NKqj0QDLLfSckYXIbA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9c8ff8b426a8b07b9e0a131ac3218740dc85ba1e", "type": "github" }, "original": { @@ -715,7 +576,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_3": { "locked": { "lastModified": 1674641431, "narHash": "sha256-qfo19qVZBP4qn5M5gXc/h1MDgAtPA5VxJm9s8RUAkVk=", @@ -731,29 +592,13 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_4": { "locked": { - "lastModified": 1671983799, - "narHash": "sha256-Z2Ro6hFPZHkBqkVXY5/aBUzxi5xizQGvuHQ9+T5B/ks=", + "lastModified": 1681571934, + "narHash": "sha256-Q3B3HTqhTahhPCT53ahK1FPktOXlEWmudSttd9CWGbE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fad51abd42ca17a60fc1d4cb9382e2d79ae31836", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1678843226, - "narHash": "sha256-TkA5tsC8N38HNgaI/odBbSOJWkUrD1uIB2A7Yms72Is=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "abb2ade261c33516716aa21068d8c10c48d03367", + "rev": "29176972b4be60f7d3eb3101f696c99f2e6ada57", "type": "github" }, "original": { @@ -763,13 +608,29 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_5": { "locked": { - "lastModified": 1671271357, - "narHash": "sha256-xRJdLbWK4v2SewmSStYrcLa0YGJpleufl44A19XSW8k=", + "lastModified": 1681633309, + "narHash": "sha256-HvEzKU/ZWGyIt2G+AIEKmMt/ED3P+Tgjw3/BkArti0o=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cb578ff7040066fd1b3f6f087bca796ddbf598b5", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1681303793, + "narHash": "sha256-JEdQHsYuCfRL2PICHlOiH/2ue3DwoxUX7DJ6zZxZXFk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "40f79f003b6377bd2f4ed4027dde1f8f922995dd", + "rev": "fe2ecaf706a5907b5e54d979fbde4924d84b65fc", "type": "github" }, "original": { @@ -797,71 +658,18 @@ }, "pre-commit-hooks": { "inputs": { - "flake-compat": "flake-compat_2", - "flake-utils": [ - "emacs", - "flake-utils" - ], + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_3", "gitignore": "gitignore", - "nixpkgs": [ - "emacs", - "nixpkgs" - ], + "nixpkgs": "nixpkgs_6", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1675688762, - "narHash": "sha256-oit/SxMk0B380ASuztBGQLe8TttO1GJiXF8aZY9AYEc=", + "lastModified": 1681413034, + "narHash": "sha256-/t7OjNQcNkeWeSq/CFLYVBfm+IEnkjoSm9iKvArnUUI=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "ab608394886fb04b8a5df3cb0bab2598400e3634", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks_2": { - "inputs": { - "flake-utils": [ - "howdy", - "flake-utils" - ], - "nixpkgs": [ - "howdy", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1664708386, - "narHash": "sha256-aCD8UUGNYb5nYzRmtsq/0yP9gFOQQHr/Lsb5vW+mucw=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2e4a708918e14fdbd534cc94aaa9470cd19b2464", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks_3": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_6", - "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_8", - "nixpkgs-stable": "nixpkgs-stable_2" - }, - "locked": { - "lastModified": 1678376203, - "narHash": "sha256-3tyYGyC8h7fBwncLZy5nCUjTJPrHbmNwp47LlNLOHSM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "1a20b9708962096ec2481eeb2ddca29ed747770a", + "rev": "d3de8f69ca88fb6f8b09e5b598be5ac98d28ede5", "type": "github" }, "original": { @@ -872,28 +680,27 @@ }, "root": { "inputs": { - "advanced-git-search-nvim": "advanced-git-search-nvim", "agenix": "agenix", "arkenfox-userjs": "arkenfox-userjs", "asus-touchpad-numpad-driver": "asus-touchpad-numpad-driver", "attic": "attic", + "bufferline-nvim": "bufferline-nvim", "cmp-async-path": "cmp-async-path", + "comment-box-nvim": "comment-box-nvim", "copilot-lua": "copilot-lua", - "emacs": "emacs", - "flake-utils": "flake-utils_3", - "forgit-git": "forgit-git", + "flake-utils": "flake-utils", + "gitignore-nvim": "gitignore-nvim", "home-manager": "home-manager", - "howdy": "howdy", "hypr-contrib": "hypr-contrib", "hyprland": "hyprland", "hyprpaper": "hyprpaper", "lspsaga-nvim": "lspsaga-nvim", "master": "master", - "neovim": "neovim", + "neovim-nightly-overlay": "neovim-nightly-overlay", "nil": "nil", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_5", "nvim-treesitter-textsubjects": "nvim-treesitter-textsubjects", - "pre-commit-hooks": "pre-commit-hooks_3", + "pre-commit-hooks": "pre-commit-hooks", "smartcolumn-nvim": "smartcolumn-nvim", "stable": "stable", "utils": "utils" @@ -938,11 +745,11 @@ ] }, "locked": { - "lastModified": 1678415622, - "narHash": "sha256-tems1jHETCYEen8QrW61yVVX0F4zOGy4ImB43iDc7bY=", + "lastModified": 1680488274, + "narHash": "sha256-0vYMrZDdokVmPQQXtFpnqA2wEgCCUXf5a3dDuDVshn0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "9f687941160108f89dd8bd2c650d32c15a35c7c7", + "rev": "7ec2ff598a172c6e8584457167575b3a1a5d80d8", "type": "github" }, "original": { @@ -954,11 +761,11 @@ "smartcolumn-nvim": { "flake": false, "locked": { - "lastModified": 1677732751, - "narHash": "sha256-uu9h5Pjw05IokTbJxrVlavZXpm3Ny6jrmhcHXzvwngU=", + "lastModified": 1679417638, + "narHash": "sha256-DjPWBOLbzdfOQAx+6xgV1CD5NKuP1N6An2lmHNHd39Q=", "owner": "m4xshen", "repo": "smartcolumn.nvim", - "rev": "6e16c7d1b5e8bf4cb7ddcab5c91745190e80e99d", + "rev": "0c572e3eae48874f25b74394a486f38cadb5c958", "type": "github" }, "original": { @@ -969,11 +776,11 @@ }, "stable": { "locked": { - "lastModified": 1678761643, - "narHash": "sha256-tapXZvg6Kg5Fm7Fm6i+7cRC5Exp2lX7cgMrqsfrGhuc=", + "lastModified": 1681482634, + "narHash": "sha256-cT/nr3L8khEYZSGp8qqwxFH+/q4/547MfyOdSj6MhBk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c4aec3c021620d98861639946123214207e98344", + "rev": "fda0d99c2cbbb5c89d8855d258cb0821bd9113ad", "type": "github" }, "original": { @@ -983,6 +790,21 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "utils": { "inputs": { "flake-utils": [ @@ -1007,11 +829,11 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1677789111, - "narHash": "sha256-dWrk+Q3bLdtFe5rkyaAKWCQJCeE/KFNllcu1DvBC38c=", + "lastModified": 1680810405, + "narHash": "sha256-LmI/4Yp/pOOoI4RxLRx9I90NBsiqdRLVOfbATKlgpkg=", "owner": "wlroots", "repo": "wlroots", - "rev": "5ae17de23f5fd9bb252a698f3771c840280e2c05", + "rev": "7abda952d0000b72d240fe1d41457b9288f0b6e5", "type": "gitlab" }, "original": { @@ -1033,11 +855,11 @@ ] }, "locked": { - "lastModified": 1673116118, - "narHash": "sha256-eR0yDSkR2XYMesfdRWJs25kAdXET2mbNNHu5t+KUcKA=", + "lastModified": 1681127512, + "narHash": "sha256-vklOOhBj5W8fii6yN4L2WY5ZeifBmsq3+mJ2wC1Pk9U=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "d479c846531fd0e1d2357c9588b8310a2b859ef2", + "rev": "04f579377a32781ce57c9cf4ba2a5bcb7f53fa97", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d7ed2cf..8275c77 100644 --- a/flake.nix +++ b/flake.nix @@ -1,80 +1,84 @@ { description = "My awesome system config"; - ############## - ### Inputs ### - ############## - + /* + ╔══════════════════════════════════════════════════════════╗ + ║ Inputs ║ + ╚══════════════════════════════════════════════════════════╝ + */ inputs = { + # Nix master.url = "github:nixos/nixpkgs"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; stable.url = "github:nixos/nixpkgs/nixos-22.11"; - pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; - flake-utils.url = "github:numtide/flake-utils"; - utils.url = "github:gytis-ivaskevicius/flake-utils-plus"; utils.inputs.flake-utils.follows = "flake-utils"; - agenix.url = "github:ryantm/agenix"; agenix.inputs.nixpkgs.follows = "nixpkgs"; + agenix.url = "github:ryantm/agenix"; - home-manager.url = "github:nix-community/home-manager"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.inputs.utils.follows = "flake-utils"; - - # Zsh specific - forgit-git.url = "github:wfxr/forgit"; - forgit-git.flake = false; - - # Laptop Touchpad - asus-touchpad-numpad-driver.url = "github:MoritzBoehme/asus-touchpad-numpad-driver/german-layout"; - asus-touchpad-numpad-driver.flake = false; - - arkenfox-userjs.url = "github:arkenfox/user.js"; - arkenfox-userjs.flake = false; - - howdy.url = "sourcehut:~moritzboehme/howdy"; - howdy.inputs.nixpkgs.follows = "nixpkgs"; - - emacs.url = "git+ssh://git@gitea.moritzboeh.me/moritz/emacs.git?ref=main"; - - neovim.url = "github:neovim/neovim?dir=contrib"; - - nil.url = "github:oxalica/nil"; - nil.inputs.nixpkgs.follows = "nixpkgs"; - nil.inputs.flake-utils.follows = "flake-utils"; - - # Hyprland - hyprland.url = "github:hyprwm/Hyprland"; - hyprpaper.url = "github:hyprwm/hyprpaper"; - hypr-contrib.url = "github:hyprwm/contrib"; - - attic.url = "github:zhaofengli/attic"; - attic.inputs.nixpkgs.follows = "nixpkgs"; - attic.inputs.nixpkgs-stable.follows = "stable"; attic.inputs.flake-utils.follows = "flake-utils"; + attic.inputs.nixpkgs-stable.follows = "stable"; + attic.inputs.nixpkgs.follows = "nixpkgs"; + attic.url = "github:zhaofengli/attic"; - nvim-treesitter-textsubjects.url = "github:RRethy/nvim-treesitter-textsubjects"; - nvim-treesitter-textsubjects.flake = false; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager.url = "github:nix-community/home-manager"; - smartcolumn-nvim.url = "github:m4xshen/smartcolumn.nvim"; - smartcolumn-nvim.flake = false; + nil.inputs.flake-utils.follows = "flake-utils"; + nil.inputs.nixpkgs.follows = "nixpkgs"; + nil.url = "github:oxalica/nil"; - copilot-lua.url = "github:zbirenbaum/copilot.lua"; - copilot-lua.flake = false; + pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; - lspsaga-nvim.url = "github:glepnir/lspsaga.nvim"; - lspsaga-nvim.flake = false; + # Neovim + neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; - advanced-git-search-nvim.url = "github:aaronhallaert/advanced-git-search.nvim"; - advanced-git-search-nvim.flake = false; + bufferline-nvim.flake = false; + bufferline-nvim.url = "github:akinsho/bufferline.nvim"; cmp-async-path.url = "github:FelipeLema/cmp-async-path"; cmp-async-path.flake = false; + + comment-box-nvim.flake = false; + comment-box-nvim.url = "github:LudoPinelli/comment-box.nvim"; + + copilot-lua.flake = false; + copilot-lua.url = "github:zbirenbaum/copilot.lua"; + + gitignore-nvim.flake = false; + gitignore-nvim.url = "github:wintermute-cell/gitignore.nvim"; + + lspsaga-nvim.flake = false; + lspsaga-nvim.url = "github:glepnir/lspsaga.nvim"; + + 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"; + + # Hyprland + hypr-contrib.url = "github:hyprwm/contrib"; + hyprland.url = "github:hyprwm/Hyprland"; + hyprpaper.url = "github:hyprwm/hyprpaper"; + + # Laptop + asus-touchpad-numpad-driver.url = "github:MoritzBoehme/asus-touchpad-numpad-driver/german-layout"; + asus-touchpad-numpad-driver.flake = false; + + # Firefox user.js + arkenfox-userjs.url = "github:arkenfox/user.js"; + arkenfox-userjs.flake = false; }; + /* + ╔══════════════════════════════════════════════════════════╗ + ║ Outputs ║ + ╚══════════════════════════════════════════════════════════╝ + */ outputs = inputs@{ self, nixpkgs, utils, ... }: utils.lib.mkFlake { @@ -85,22 +89,22 @@ channelsConfig.allowUnfree = true; lib = nixpkgs.lib.extend - (self: super: { my = import ./lib { lib = self; }; }); - - ################ - ### Overlays ### - ################ + (self: _: { my = import ./lib { lib = self; }; }); + /* + ╔══════════════════════════════════════════════════════════╗ + ║ Overlays ║ + ╚══════════════════════════════════════════════════════════╝ + */ overlay = import ./overlays { inherit inputs; inherit (self) lib; }; - channels.nixpkgs.overlaysBuilder = channels: [ - inputs.emacs.overlays.default - inputs.howdy.overlays.default + channels.nixpkgs.overlaysBuilder = _: [ inputs.hypr-contrib.overlays.default inputs.hyprland.overlays.default + inputs.neovim-nightly-overlay.overlay inputs.utils.overlay self.overlay ]; @@ -111,14 +115,16 @@ overlays.default = self.overlay; - ############### - ### Modules ### - ############### - + /* + ╔══════════════════════════════════════════════════════════╗ + ║ Modules ║ + ╚══════════════════════════════════════════════════════════╝ + */ nixosModules = utils.lib.exportModules [ ./modules/profiles/base.nix ./modules/profiles/gaming.nix ./modules/profiles/desktop.nix + ./modules/profiles/personal.nix ]; hostDefaults.modules = [ @@ -132,9 +138,7 @@ extraSpecialArgs = { inherit inputs self; }; }; } - inputs.hyprland.nixosModules.default inputs.agenix.nixosModules.age - inputs.howdy.nixosModules.default ]; @@ -142,6 +146,7 @@ ./hosts/nixos-laptop self.nixosModules.desktop self.nixosModules.gaming + self.nixosModules.personal ]; @@ -149,12 +154,14 @@ ./hosts/nixos-desktop self.nixosModules.desktop self.nixosModules.gaming + self.nixosModules.personal ]; - ############### - ### Outputs ### - ############### - + /* + ╔══════════════════════════════════════════════════════════╗ + ║ Other Outputs ║ + ╚══════════════════════════════════════════════════════════╝ + */ outputsBuilder = channels: with channels.nixpkgs; { devShells.default = mkShell { diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index f5a34bf..b88a65e 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -1,21 +1,23 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ lib -, config -, pkgs -, inputs +{ pkgs , ... -}: { +}: + +{ imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ]; - - my.programs.hyprland.nvidiaSupport = true; + my = { + programs.hyprland.nvidiaSupport = true; + services.mullvad.enable = true; + programs.ledger.enable = true; + }; # KERNEL - boot.kernelPackages = pkgs.linuxPackages_6_1; # HACK to get nvidia kernel package to build + boot.kernelPackages = pkgs.linuxPackages_latest; # BOOT boot = { diff --git a/hosts/nixos-desktop/hardware-configuration.nix b/hosts/nixos-desktop/hardware-configuration.nix index fab68a6..6ecf64c 100644 --- a/hosts/nixos-desktop/hardware-configuration.nix +++ b/hosts/nixos-desktop/hardware-configuration.nix @@ -3,7 +3,6 @@ # to /etc/nixos/configuration.nix instead. { config , lib -, pkgs , modulesPath , ... }: { diff --git a/hosts/nixos-laptop/default.nix b/hosts/nixos-laptop/default.nix index 3042652..42c242c 100644 --- a/hosts/nixos-laptop/default.nix +++ b/hosts/nixos-laptop/default.nix @@ -1,8 +1,7 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config -, pkgs +{ pkgs , inputs , ... }: { @@ -11,11 +10,6 @@ ./hardware-configuration.nix ]; - # services.howdy = { - # enable = true; - # certainty = 3.0; - # }; - # BOOT boot = { supportedFilesystems = [ "btrfs" ]; diff --git a/hosts/nixos-laptop/hardware-configuration.nix b/hosts/nixos-laptop/hardware-configuration.nix index 216b8da..76defb8 100644 --- a/hosts/nixos-laptop/hardware-configuration.nix +++ b/hosts/nixos-laptop/hardware-configuration.nix @@ -1,10 +1,7 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config -, lib -, pkgs -, modulesPath +{ modulesPath , ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; diff --git a/lib/default.nix b/lib/default.nix index da1b552..b66d67d 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,6 +1,6 @@ { lib, ... }: -lib.makeExtensible (self: rec { +lib.makeExtensible (_: rec { mkDate = longDate: lib.concatStringsSep "-" [ (builtins.substring 0 4 longDate) (builtins.substring 4 2 longDate) @@ -16,7 +16,7 @@ lib.makeExtensible (self: rec { mapModules = f: dir: let - filter = name: type: + filterModules = name: type: let isPublic = !(lib.hasPrefix "_" name); isSomething = type != null; @@ -30,6 +30,8 @@ lib.makeExtensible (self: rec { in isPublic && isSomething && isModule; + modulesInDir = lib.filterAttrs filterModules (builtins.readDir dir); + mkModule = name: _: let path = "${toString dir}/${name}"; @@ -40,7 +42,7 @@ lib.makeExtensible (self: rec { in lib.nameValuePair normalizedName (f path); in - lib.mapAttrs' mkModule (lib.filterAttrs filter (builtins.readDir dir)); + lib.mapAttrs' mkModule modulesInDir; mapModules' = f: dir: lib.attrValues (mapModules f dir); }) diff --git a/modules/config/default.nix b/modules/config/default.nix index 7312bcb..f2be122 100644 --- a/modules/config/default.nix +++ b/modules/config/default.nix @@ -1,9 +1,3 @@ -{ config -, lib -, pkgs -, ... -}: - { imports = [ ./bin diff --git a/modules/config/nix.nix b/modules/config/nix.nix index a932cbb..12fcc32 100644 --- a/modules/config/nix.nix +++ b/modules/config/nix.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , inputs , ... }: diff --git a/modules/config/shell.nix b/modules/config/shell.nix index b277bca..9a4811b 100644 --- a/modules/config/shell.nix +++ b/modules/config/shell.nix @@ -1,13 +1,8 @@ -{ config -, lib -, pkgs +{ lib , ... }: with lib; -let - cfg = config.my.shell; -in { options.my.shell = { abbreviations = mkOption { @@ -17,7 +12,7 @@ in }; aliases = mkOption { default = { }; - type = with types; attrsOf (nullOr (either str path)); + type = with types; attrsOf str; }; variables = mkOption { default = { }; diff --git a/modules/config/theming/catppuccin.nix b/modules/config/theming/catppuccin.nix index bca09bc..0c8d8a9 100644 --- a/modules/config/theming/catppuccin.nix +++ b/modules/config/theming/catppuccin.nix @@ -1,6 +1,4 @@ { config -, lib -, pkgs , rosewater , flamingo , pink @@ -27,12 +25,9 @@ , base , mantle , crust +, ... }: -with lib; -let - cfg = config.my.theming; -in { home-manager.users.moritz = { programs = { diff --git a/modules/config/theming/default.nix b/modules/config/theming/default.nix index 4feefe9..31d8cb4 100644 --- a/modules/config/theming/default.nix +++ b/modules/config/theming/default.nix @@ -1,7 +1,6 @@ { config , lib , pkgs -, inputs , ... }: diff --git a/modules/config/theming/dracula.nix b/modules/config/theming/dracula.nix index 76fa25a..317926a 100644 --- a/modules/config/theming/dracula.nix +++ b/modules/config/theming/dracula.nix @@ -1,4 +1,7 @@ -{ config, lib, pkgs, ... }: +{ config +, lib +, ... +}: with lib; let diff --git a/modules/config/wallpapers.nix b/modules/config/wallpapers.nix index 526a017..c19d5a8 100644 --- a/modules/config/wallpapers.nix +++ b/modules/config/wallpapers.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/default.nix b/modules/default.nix index 7c695aa..6e3b243 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,9 +1,3 @@ -{ config -, lib -, pkgs -, ... -}: - { imports = [ ./config diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index 71732d3..ef5a639 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -1,140 +1,60 @@ -{ config -, lib +{ lib , pkgs , ... }: with lib; { my = { yubikey = { - enable = true; + enable = mkDefault true; luksSupport = { - enable = true; - devices = [ "enc" ]; + enable = mkDefault true; + devices = mkDefault [ "enc" ]; }; }; - wallpapers.enable = true; + wallpapers.enable = mkDefault true; theming = { - enable = true; - scheme = "catppuccin-macchiato"; - }; - virtualisation = { - podman.enable = true; - libvirtd.enable = true; + enable = mkDefault true; + scheme = mkDefault "catppuccin-macchiato"; }; + virtualisation.podman.enable = mkDefault true; programs = { - adb.enable = true; - hyprland.enable = true; - code.enable = true; - firefox = { - enable = true; - arkenfox = { - enable = true; - overrides = { - ## arkenfox overrides - # automatic search - "keyword.enabled" = true; - "browser.search.suggest.enabled" = true; - "browser.urlbar.suggest.searches" = true; - - # startup page - "browser.startup.homepage" = "https://searxng.moritzboeh.me/"; - "browser.startup.page" = 1; - - # drm - "media.eme.enabled" = true; - - # sanitisation - "privacy.clearOnShutdown.history" = false; - - # disable letterboxing - "privacy.resistFingerprinting.letterboxing" = false; - - ## OTHER - # Dont show warning when accessing about:config - "browser.aboutConfig.showWarning" = false; - - # Hide bookmarks - "browser.toolbars.bookmarks.visibility" = "never"; - - # Smooth scrolling - "general.smoothScroll.lines.durationMaxMS" = 125; - "general.smoothScroll.lines.durationMinMS" = 125; - "general.smoothScroll.mouseWheel.durationMaxMS" = 200; - "general.smoothScroll.mouseWheel.durationMinMS" = 100; - "general.smoothScroll.msdPhysics.enabled" = true; - "general.smoothScroll.other.durationMaxMS" = 125; - "general.smoothScroll.other.durationMinMS" = 125; - "general.smoothScroll.pages.durationMaxMS" = 125; - "general.smoothScroll.pages.durationMinMS" = 125; - "mousewheel.min_line_scroll_amount" = 40; - "mousewheel.system_scroll_override_on_root_content.enabled" = true; - "mousewheel.system_scroll_override_on_root_content.horizontal.factor" = 175; - "mousewheel.system_scroll_override_on_root_content.vertical.factor" = 175; - "toolkit.scrollbox.horizontalScrollDistance" = 6; - "toolkit.scrollbox.verticalScrollDistance" = 2; - }; - }; - }; - git.signing = true; - gpg.enable = true; - hub.enable = true; - ledger.enable = true; - logseq.enable = true; - nvim.enable = true; - python.versions."311".enable = true; - ssh = { - enable = true; - includeSecrets = [ ../../secrets/ssh-home.age ]; - }; - spotify.enable = true; - thunar.enable = true; - zathura.enable = true; + chromium.enable = mkDefault true; + firefox.enable = mkDefault true; + gpg.enable = mkDefault true; + hyprland.enable = mkDefault true; + logseq.enable = mkDefault true; + nvim.enable = mkDefault true; + python.versions."311".enable = mkDefault true; + spotify.enable = mkDefault true; + ssh.enable = mkDefault true; + thunar.enable = mkDefault true; + zathura.enable = mkDefault true; }; services = { - dunst.enable = true; - kdeconnect.enable = true; - mullvad.enable = true; - openconnect.enable = true; + dunst.enable = mkDefault true; + gammastep.enable = true; + kdeconnect.enable = mkDefault true; printing.enable = true; - redshift.enable = true; wireguard.enable = true; }; }; environment.systemPackages = with pkgs; [ - # nix - nixpkgs-review - - # ripping - abcde - handbrake - picard - - # other anki calibre - jellyfin-media-player keepassxc - libreoffice + nixpkgs-review pavucontrol + stable.libreoffice # HACK to fix build error stable.signal-desktop - tlaplusToolbox - vlc - thunderbird - plantuml - - jetbrains.pycharm-professional - synology-drive-client - texlive.combined.scheme-full + thunderbird + vlc ]; - programs = { - chromium.enable = true; - nix-ld.enable = true; - }; + programs.nix-ld.enable = true; home-manager.users.moritz = { services.nextcloud-client = { @@ -149,7 +69,5 @@ with lib; { alsa.enable = true; pulse.enable = true; }; - # Remap capslock to esc and shift + capslock to capslock - xserver.xkbOptions = "terminate:ctrl_alt_bksp,caps:escape_shifted_capslock"; }; } diff --git a/modules/profiles/gaming.nix b/modules/profiles/gaming.nix index f6d6ac2..e773f20 100644 --- a/modules/profiles/gaming.nix +++ b/modules/profiles/gaming.nix @@ -1,6 +1,4 @@ -{ config -, lib -, pkgs +{ pkgs , ... }: { programs.steam.enable = true; diff --git a/modules/profiles/personal.nix b/modules/profiles/personal.nix new file mode 100644 index 0000000..6bf7167 --- /dev/null +++ b/modules/profiles/personal.nix @@ -0,0 +1,60 @@ +{ lib, ... }: + +with lib; +{ + my = { + services.openconnect.enable = true; + programs = { + ssh.includeSecrets = mkDefault [ ../../secrets/ssh-home.age ]; + git.signing = mkDefault true; + hub.enable = mkDefault true; + firefox.arkenfox = { + enable = mkDefault true; + overrides = mkDefault { + ## arkenfox overrides + # automatic search + "keyword.enabled" = true; + "browser.search.suggest.enabled" = true; + "browser.urlbar.suggest.searches" = true; + + # startup page + "browser.startup.homepage" = "https://searxng.moritzboeh.me/"; + "browser.startup.page" = 1; + + # drm + "media.eme.enabled" = true; + + # sanitisation + "privacy.clearOnShutdown.history" = false; + + # disable letterboxing + "privacy.resistFingerprinting.letterboxing" = false; + + ## OTHER + # Dont show warning when accessing about:config + "browser.aboutConfig.showWarning" = false; + + # Hide bookmarks + "browser.toolbars.bookmarks.visibility" = "never"; + + # Smooth scrolling + "general.smoothScroll.lines.durationMaxMS" = 125; + "general.smoothScroll.lines.durationMinMS" = 125; + "general.smoothScroll.mouseWheel.durationMaxMS" = 200; + "general.smoothScroll.mouseWheel.durationMinMS" = 100; + "general.smoothScroll.msdPhysics.enabled" = true; + "general.smoothScroll.other.durationMaxMS" = 125; + "general.smoothScroll.other.durationMinMS" = 125; + "general.smoothScroll.pages.durationMaxMS" = 125; + "general.smoothScroll.pages.durationMinMS" = 125; + "mousewheel.min_line_scroll_amount" = 40; + "mousewheel.system_scroll_override_on_root_content.enabled" = true; + "mousewheel.system_scroll_override_on_root_content.horizontal.factor" = 175; + "mousewheel.system_scroll_override_on_root_content.vertical.factor" = 175; + "toolkit.scrollbox.horizontalScrollDistance" = 6; + "toolkit.scrollbox.verticalScrollDistance" = 2; + }; + }; + }; + }; +} diff --git a/modules/profiles/ripping.nix b/modules/profiles/ripping.nix new file mode 100644 index 0000000..be56abe --- /dev/null +++ b/modules/profiles/ripping.nix @@ -0,0 +1,32 @@ +{ pkgs }: + +{ + environment.systemPackages = with pkgs; [ + # nix + nixpkgs-review + + # ripping + abcde + handbrake + picard + + # other + anki + calibre + jellyfin-media-player + keepassxc + stable.libreoffice # HACK to fix build error + pavucontrol + stable.signal-desktop + tlaplusToolbox + vlc + thunderbird + plantuml + + jetbrains.pycharm-professional + + synology-drive-client + + texlive.combined.scheme-full + ]; +} diff --git a/modules/programs/adb.nix b/modules/programs/adb.nix index c839ce6..e773d4c 100644 --- a/modules/programs/adb.nix +++ b/modules/programs/adb.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/chromium.nix b/modules/programs/chromium.nix new file mode 100644 index 0000000..3533ecb --- /dev/null +++ b/modules/programs/chromium.nix @@ -0,0 +1,26 @@ +{ config +, lib +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.programs.chromium; +in +{ + options.my.programs.chromium = { + enable = mkEnableOption "chromium"; + package = mkOption { + type = types.package; + default = pkgs.stable.chromium; + defaultText = "pkgs.chromium"; + description = "Chromium package to install."; + }; + }; + + config = mkIf cfg.enable { + programs.chromium.enable = true; + environment.systemPackages = [ cfg.package ]; + }; +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 9674641..788e8fd 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,16 +1,10 @@ -{ config -, lib -, pkgs -, ... -}: - { imports = [ ./adb.nix ./bspwm + ./chromium.nix ./code.nix ./direnv.nix - ./emacs.nix ./firefox.nix ./fish.nix ./git.nix @@ -24,14 +18,13 @@ ./ledger ./logseq.nix ./miracast.nix + ./nvim ./python.nix ./rofi ./spotify.nix ./ssh.nix ./sway.nix ./thunar.nix - ./nvim - ./xmonad ./zathura.nix ./zsh.nix ]; diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index 92beef1..119ac6d 100644 --- a/modules/programs/direnv.nix +++ b/modules/programs/direnv.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/emacs.nix b/modules/programs/emacs.nix deleted file mode 100644 index 0d7128d..0000000 --- a/modules/programs/emacs.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ config -, lib -, pkgs -, inputs -, ... -}: - -with lib; -let - cfg = config.my.programs.emacs; - myEmacs = pkgs.emacsPgtkWithPackages; -in -{ - options.my.programs.emacs.enable = mkEnableOption "emacs"; - - config = mkIf cfg.enable { - my.shell.aliases = { - emacs = "emacsclient -nw -a 'emacs -nw'"; - }; - fonts.fonts = with pkgs; [ - emacs-all-the-icons-fonts - (iosevka-bin.override { variant = "aile"; }) - ]; - users.users.moritz.packages = [ myEmacs ]; - home-manager.users.moritz = { - home.sessionPath = [ "/home/moritz/.config/emacs/bin/" ]; - services.emacs = { - enable = true; - package = myEmacs; - }; - }; - }; -} diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix index d0f8e4d..8461c47 100644 --- a/modules/programs/firefox.nix +++ b/modules/programs/firefox.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , inputs , ... }: diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 1b52c96..549a363 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -1,7 +1,6 @@ { config , lib , pkgs -, inputs , ... }: diff --git a/modules/programs/git.nix b/modules/programs/git.nix index fa4fab0..225e50b 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/gpg.nix b/modules/programs/gpg.nix index 5371d62..64ce070 100644 --- a/modules/programs/gpg.nix +++ b/modules/programs/gpg.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/helix.nix b/modules/programs/helix.nix index 821a09c..3b9749a 100644 --- a/modules/programs/helix.nix +++ b/modules/programs/helix.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/hub.nix b/modules/programs/hub.nix index 14b9c60..1b55770 100644 --- a/modules/programs/hub.nix +++ b/modules/programs/hub.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/hyprland/config.nix b/modules/programs/hyprland/config.nix index 49a235d..71d512a 100644 --- a/modules/programs/hyprland/config.nix +++ b/modules/programs/hyprland/config.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: @@ -44,8 +43,8 @@ in general { # See https://wiki.hyprland.org/Configuring/Variables/ for more - gaps_in = 5 - gaps_out = 5 + gaps_in = 3 + gaps_out = 3 border_size = 2 col.active_border = rgba(1affffee) col.inactive_border = rgba(595959aa) @@ -161,7 +160,6 @@ in bind = $mainMod , B , exec , rofi-bluetooth bind = $mainMod , C , exec , rofi -show calc -modi calc -no-show-match -no-sort | wl-copy bind = $mainMod , D , exec , hyprctl keyword general:layout dwindle - bind = $mainMod , E , exec , emacsclient -c -a emacs bind = $mainMod , M , exec , hyprctl keyword general:layout master bind = $mainMod , R , exec , rofi -show combi bind = $mainMod , RETURN , exec , kitty diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index 62f4660..5496b13 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -36,13 +36,6 @@ in services.dunst.enable = true; }; - # enable nix module - programs.hyprland = { - enable = true; - package = null; # because we use the home-manager module - }; - - # enable home-manager module home-manager.users.moritz = { # import home-manager module diff --git a/modules/programs/kakoune.nix b/modules/programs/kakoune.nix index 874ef2d..bbe7a6b 100644 --- a/modules/programs/kakoune.nix +++ b/modules/programs/kakoune.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index 76c4a10..1261a65 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/ledger/default.nix b/modules/programs/ledger/default.nix index 348e0e1..ce54b3e 100644 --- a/modules/programs/ledger/default.nix +++ b/modules/programs/ledger/default.nix @@ -18,7 +18,7 @@ in }; aliases = let - applyCommon = name: command: "${command} --payee note --strict --explicit"; + applyCommon = _: command: "${command} --payee note --strict --explicit"; in mapAttrs applyCommon { bal = "ledger bal"; diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 3cebddf..101343f 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -49,14 +49,17 @@ in extraPackages = with pkgs; [ alejandra black + deadnix isort jq nil nixpkgs-fmt nodePackages.bash-language-server + nodePackages.cspell rustfmt shellcheck shfmt + statix stylua sumneko-lua-language-server taplo @@ -68,7 +71,7 @@ in cmp_luasnip copilot-cmp direnv-vim - impatient-nvim + friendly-snippets lsp_lines-nvim lspkind-nvim lspsaga-nvim-original diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index f13beb4..d7bc4e7 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -1,39 +1,15 @@ -require("impatient") - ----merge tables ----@param ... table[] ----@return table -local function table_merge(...) - local tables_to_merge = { ... } - assert(#tables_to_merge > 1, "There should be at least two tables to merge them") - - for k, t in ipairs(tables_to_merge) do - assert(type(t) == "table", string.format("Expected a table as function parameter %d", k)) - end - - local result = tables_to_merge[1] - - for i = 2, #tables_to_merge do - local from = tables_to_merge[i] - for k, v in pairs(from) do - if type(v) == "table" then - result[k] = result[k] or {} - result[k] = table_merge(result[k], v) - else - result[k] = v - end - end - end - - return result -end +vim.loader.enable() +-- 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, - additional_vim_regex_highlighting = false, + -- Required for spellcheck, some LaTex highlights and + -- code block highlights that do not have ts grammar + additional_vim_regex_highlighting = { "org" }, }, }) @@ -42,6 +18,7 @@ vim.api.nvim_create_autocmd("InsertEnter", { callback = function() local cmp = require("cmp") local luasnip = require("luasnip") + require("luasnip.loaders.from_vscode").lazy_load() require("copilot_cmp").setup() local default_sources = { @@ -97,7 +74,7 @@ vim.api.nvim_create_autocmd("InsertEnter", { }) cmp.setup.filetype("org", { - sources = table_merge(default_sources, { + sources = vim.tbl_deep_extend("force", default_sources, { { name = "buffer", priority = 5 }, { name = "orgmode", priority = 5 }, }), @@ -167,11 +144,8 @@ require("lspsaga").setup({ enable = false, }, lightbulb = { - enable = true, - enable_in_insert = true, - sign = true, - sign_priority = 40, - virtual_text = false, + enable = false, + enable_in_insert = false, }, }) @@ -181,10 +155,7 @@ local on_attach_def = function(_, bufnr) K = { "Lspsaga hover_doc ++quiet", "show info" }, [""] = { l = { - name = "lsp", d = { "Lspsaga show_cursor_diagnostics", "open diagnostic window" }, - n = { "Lspsaga diagnostic_jump_next", "next error" }, - p = { "Lspsaga diagnostic_jump_prev", "prev error" }, c = { "Lspsaga code_action", "code action" }, r = { "Lspsaga rename", "rename" }, i = { "Lspsaga hover_doc ++keep", "show info (sticky)" }, @@ -196,27 +167,23 @@ local on_attach_def = function(_, bufnr) mode = { "n", "v" }, }, }, - w = { - name = "workspace", - a = { vim.lsp.buf.add_workspace_folder, "add workspace folder" }, - r = { vim.lsp.buf.remove_workspace_folder, "remove workspace folder" }, - l = { - function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, - "list workspace folders", - }, - }, t = { - name = "toggle", l = { lsp_lines.toggle, "lsp lines" }, }, }, g = { - name = "goto", - d = { "Lspsaga peek_definition", "definition" }, - t = { "Lspsaga peek_type_definition", "type defininition" }, - h = { "Lspsaga lsp_finder", "lsp finder" }, + d = { "Lspsaga peek_definition", "Goto definition" }, + t = { "Lspsaga peek_type_definition", "Goto type defininition" }, + h = { "Lspsaga lsp_finder", "Lsp finder" }, + r = { "Telescope lsp_references", "Goto reference" }, + D = { vim.lsp.buf.declaration, "Goto declaration" }, + I = { "Telescope lsp_implementations", "Goto implementation" }, + }, + ["["] = { + d = { "Lspsaga diagnostic_jump_prev", "Previous diagnostic" }, + }, + ["]"] = { + d = { "Lspsaga diagnostic_jump_next", "Next diagnostic" }, }, }, { buffer = bufnr, silent = true }) end @@ -234,7 +201,7 @@ local lspconfig_default_options = { ---@param options table ---@return nil local function lspconfig_setup(lsp, options) - local final_options = table_merge(lspconfig_default_options, options) + local final_options = vim.tbl_deep_extend("force", lspconfig_default_options, options) lspconfig[lsp].setup(final_options) end diff --git a/modules/programs/nvim/keybinds.lua b/modules/programs/nvim/keybinds.lua index 52ae2e2..0556448 100644 --- a/modules/programs/nvim/keybinds.lua +++ b/modules/programs/nvim/keybinds.lua @@ -1,14 +1,74 @@ --- buffers +-- buffer require("which-key").register({ b = { - name = "buffers", + name = "buffer", b = { "Telescope buffers", "List buffers" }, d = { "bd", "Delete buffer" }, - n = { "bnext", "Next buffer" }, - p = { "bprevious", "Previous buffer" }, }, }) +-- window +require("which-key").register({ + w = { + name = "window", + ["|"] = { "v", "Split window horizontally" }, + ["-"] = { "s", "Split window vertically" }, + w = { "w", "Switch window" }, + d = { "c", "Delete window" }, + }, +}, { prefix = "" }) +require("which-key").register({ + ["["] = { + b = { "bprevious", "Previous buffer" }, + }, + ["]"] = { + b = { "bnext", "Next buffer" }, + }, +}) + +-- fast window move +require("which-key").register({ + [""] = { "h", "Move window left" }, + [""] = { "j", "Move window down" }, + [""] = { "k", "Move window up" }, + [""] = { "l", "Move window right" }, +}) + +-- 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 = "" }) + +-- better descriptions for navigation +require("which-key").register({ + [""] = { + f = { name = "file/find" }, + g = { name = "git" }, + l = { name = "lsp" }, + o = { name = "org" }, + s = { name = "search" }, + t = { name = "toggle" }, + x = { name = "diagnostics/quickfix" }, + }, + ["["] = { name = "prev" }, + ["]"] = { name = "next" }, + g = { name = "goto" }, +}) + -- Clear search with require("which-key").register({ [""] = { "noh", "Escape and clear hlsearch", mode = { "n", "i" } }, diff --git a/modules/programs/nvim/plugins/advanced-git-search-nvim.lua b/modules/programs/nvim/plugins/advanced-git-search-nvim.lua deleted file mode 100644 index 9959064..0000000 --- a/modules/programs/nvim/plugins/advanced-git-search-nvim.lua +++ /dev/null @@ -1,18 +0,0 @@ -require("telescope").load_extension("advanced_git_search") -local advanced_git_search = require("telescope").extensions.advanced_git_search -vim.api.nvim_create_user_command( - "DiffCommitLine", - "lua require('telescope').extensions.advanced_git_search.diff_commit_line()", - { range = true } -) -require("which-key").register({ - g = { - name = "git", - b = { advanced_git_search.diff_branch_file, "diff branch file" }, - l = { vim.cmd.DiffCommitLine, "diff commit line", mode = "v" }, - f = { advanced_git_search.diff_commit_file, "diff commit file" }, - c = { advanced_git_search.search_log_content, "search log content" }, - C = { advanced_git_search.search_log_content_file, "search log content current file" }, - r = { advanced_git_search.checkout_reflog, "checkout reflog" }, - }, -}, { prefix = "" }) diff --git a/modules/programs/nvim/plugins/comment-box-nvim.lua b/modules/programs/nvim/plugins/comment-box-nvim.lua new file mode 100644 index 0000000..e002043 --- /dev/null +++ b/modules/programs/nvim/plugins/comment-box-nvim.lua @@ -0,0 +1 @@ +require("comment-box").setup() diff --git a/modules/programs/nvim/plugins/gitignore-nvim.lua b/modules/programs/nvim/plugins/gitignore-nvim.lua new file mode 100644 index 0000000..9a994df --- /dev/null +++ b/modules/programs/nvim/plugins/gitignore-nvim.lua @@ -0,0 +1,3 @@ +require("which-key").register({ + i = { "Gitignore", "Create .gitignore" }, +}, { prefix = "g" }) diff --git a/modules/programs/nvim/plugins/gitsigns-nvim.lua b/modules/programs/nvim/plugins/gitsigns-nvim.lua index d16d238..3cdce95 100644 --- a/modules/programs/nvim/plugins/gitsigns-nvim.lua +++ b/modules/programs/nvim/plugins/gitsigns-nvim.lua @@ -1 +1,22 @@ require("gitsigns").setup() +require("which-key").register({ + ["["] = { + h = { "Gitsigns prev_hunk", "Previous hunk" }, + }, + ["]"] = { + h = { "Gitsigns next_hunk", "Next hunk" }, + }, +}) +require("which-key").register({ + h = { + name = "hunk", + s = { "Gitsigns stage_hunk", "Stage hunk", mode = { "n", "v" } }, + r = { "Gitsigns reset_hunk", "Reset hunk", mode = { "n", "v" } }, + S = { "Gitsigns stage_buffer", "Stage buffer" }, + R = { "Gitsigns reset_buffer", "Reset buffer" }, + u = { "Gitsigns undo_stage_hunk", "Undo stage hunk" }, + }, +}, { prefix = "g" }) +require("which-key").register({ + h = { ":Gitsigns select_hunk", "Gitsigns select hunk" }, +}, { prefix = "i", mode = { "o", "x" } }) diff --git a/modules/programs/nvim/plugins/neo-tree-nvim.lua b/modules/programs/nvim/plugins/neo-tree-nvim.lua new file mode 100644 index 0000000..3cc61c3 --- /dev/null +++ b/modules/programs/nvim/plugins/neo-tree-nvim.lua @@ -0,0 +1,195 @@ +-- Unless you are still migrating, remove the deprecated commands from v1.x +vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]]) + +require("neo-tree").setup({ + close_if_last_window = true, -- Close Neo-tree if it is the last window left in the tab + popup_border_style = "rounded", + enable_git_status = true, + enable_diagnostics = true, + open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes + sort_case_insensitive = false, -- used when sorting files and directories in the tree + sort_function = nil, -- use a custom function for sorting files and directories in the tree + -- sort_function = function (a,b) + -- if a.type == b.type then + -- return a.path > b.path + -- else + -- return a.type > b.type + -- end + -- end , -- this sorts files and directories descendantly + default_component_configs = { + container = { + enable_character_fade = true, + }, + indent = { + indent_size = 2, + padding = 1, -- extra padding on left hand side + -- indent guides + with_markers = true, + indent_marker = "│", + last_indent_marker = "└", + highlight = "NeoTreeIndentMarker", + -- expander config, needed for nesting files + with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders + expander_collapsed = "", + expander_expanded = "", + expander_highlight = "NeoTreeExpander", + }, + icon = { + folder_closed = "", + folder_open = "", + folder_empty = "ﰊ", + -- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there + -- then these will never be used. + default = "*", + highlight = "NeoTreeFileIcon", + }, + modified = { + symbol = "[+]", + highlight = "NeoTreeModified", + }, + name = { + trailing_slash = false, + use_git_status_colors = true, + highlight = "NeoTreeFileName", + }, + git_status = { + symbols = { + -- Change type + added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name + modified = "", -- or "", but this is redundant info if you use git_status_colors on the name + deleted = "✖", -- this can only be used in the git_status source + renamed = "", -- this can only be used in the git_status source + -- Status type + untracked = "", + ignored = "", + unstaged = "", + staged = "", + conflict = "", + }, + }, + }, + window = { + position = "left", + width = 40, + mapping_options = { + noremap = true, + nowait = true, + }, + mappings = { + [""] = "open", + [""] = "revert_preview", + ["P"] = { "toggle_preview", config = { use_float = false } }, + ["S"] = "open_split", + ["s"] = "open_vsplit", + ["t"] = "open_tabnew", + ["C"] = "close_node", + ["z"] = "close_all_nodes", + ["a"] = { + "add", + -- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details + -- some commands may take optional config options, see `:h neo-tree-mappings` for details + config = { + show_path = "none", -- "none", "relative", "absolute" + }, + }, + ["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion. + ["d"] = "delete", + ["r"] = "rename", + ["y"] = "copy_to_clipboard", + ["x"] = "cut_to_clipboard", + ["p"] = "paste_from_clipboard", + ["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add": + ["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add". + ["q"] = "close_window", + ["R"] = "refresh", + ["?"] = "show_help", + ["<"] = "prev_source", + [">"] = "next_source", + }, + }, + nesting_rules = {}, + filesystem = { + filtered_items = { + visible = false, -- when true, they will just be displayed differently than normal items + hide_dotfiles = true, + hide_gitignored = true, + hide_hidden = true, -- only works on Windows for hidden files/directories + hide_by_name = { + --"node_modules" + }, + hide_by_pattern = { -- uses glob style patterns + --"*.meta", + --"*/src/*/tsconfig.json", + }, + always_show = { -- remains visible even if other settings would normally hide it + --".gitignored", + }, + never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show + --".DS_Store", + --"thumbs.db" + }, + never_show_by_pattern = { -- uses glob style patterns + --".null-ls_*", + }, + }, + follow_current_file = false, -- This will find and focus the file in the active buffer every + -- time the current file is changed while the tree is open. + group_empty_dirs = false, -- when true, empty folders will be grouped together + hijack_netrw_behavior = "disabled", -- netrw disabled, opening a directory opens neo-tree + -- in whatever position is specified in window.position + -- "open_current", -- netrw disabled, opening a directory opens within the + -- window like netrw would, regardless of window.position + -- "disabled", -- netrw left alone, neo-tree does not handle opening dirs + use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes + -- instead of relying on nvim autocmd events. + window = { + mappings = { + [""] = "navigate_up", + ["."] = "set_root", + ["H"] = "toggle_hidden", + ["/"] = "fuzzy_finder", + ["D"] = "fuzzy_finder_directory", + ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm + ["f"] = "filter_on_submit", + [""] = "clear_filter", + ["[g"] = "prev_git_modified", + ["]g"] = "next_git_modified", + }, + fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode + [""] = "move_cursor_up", + [""] = "move_cursor_down", + }, + }, + }, + buffers = { + follow_current_file = true, -- This will find and focus the file in the active buffer every + -- time the current file is changed while the tree is open. + group_empty_dirs = true, -- when true, empty folders will be grouped together + show_unloaded = true, + window = { + mappings = { + ["bd"] = "buffer_delete", + [""] = "navigate_up", + ["."] = "set_root", + }, + }, + }, + git_status = { + window = { + position = "float", + mappings = { + ["A"] = "git_add_all", + ["gu"] = "git_unstage_file", + ["ga"] = "git_add_file", + ["gr"] = "git_revert_file", + ["gc"] = "git_commit", + ["gp"] = "git_push", + ["gg"] = "git_commit_and_push", + }, + }, + }, +}) + +require("which-key").register({ + t = { "Neotree toggle reveal", "Neotree" }, +}, { prefix = "t", silent = true }) diff --git a/modules/programs/nvim/plugins/null-ls-nvim.lua b/modules/programs/nvim/plugins/null-ls-nvim.lua new file mode 100644 index 0000000..e8d0931 --- /dev/null +++ b/modules/programs/nvim/plugins/null-ls-nvim.lua @@ -0,0 +1,58 @@ +local null_ls = require("null-ls") + +null_ls.setup({ + sources = { + -- Code actions + null_ls.builtins.code_actions.cspell, + null_ls.builtins.code_actions.gitsigns, + null_ls.builtins.code_actions.shellcheck, + null_ls.builtins.code_actions.statix, + -- Completion + null_ls.builtins.completion.spell, + -- Diagnostics + null_ls.builtins.diagnostics.cspell, + null_ls.builtins.diagnostics.deadnix, + null_ls.builtins.diagnostics.shellcheck, + null_ls.builtins.diagnostics.statix, + }, +}) + +-- disable cspell initially +null_ls.disable("cspell") + +-- make sources toggle able +require("which-key").register({ + n = { + name = "null-ls", + c = { + function() + null_ls.toggle("cspell") + end, + "cspell", + }, + g = { + function() + null_ls.toggle("gitsigns") + end, + "gitsigns", + }, + s = { + function() + null_ls.toggle("shellcheck") + end, + "shellcheck", + }, + S = { + function() + null_ls.toggle("statix") + end, + "statix", + }, + d = { + function() + null_ls.toggle("deadnix") + end, + "deadnix", + }, + }, +}, { prefix = "t" }) diff --git a/modules/programs/nvim/plugins/nvim-surround.lua b/modules/programs/nvim/plugins/nvim-surround.lua index f2499fd..8a06dad 100644 --- a/modules/programs/nvim/plugins/nvim-surround.lua +++ b/modules/programs/nvim/plugins/nvim-surround.lua @@ -1 +1 @@ -require("nvim-surround").setup({}) +require("nvim-surround").setup() diff --git a/modules/programs/nvim/plugins/nvim-tree-lua.lua b/modules/programs/nvim/plugins/nvim-tree-lua.lua deleted file mode 100644 index a8634bc..0000000 --- a/modules/programs/nvim/plugins/nvim-tree-lua.lua +++ /dev/null @@ -1,10 +0,0 @@ --- disable netrw at the very start of your init.lua (strongly advised) -vim.g.loaded_netrw = 1 -vim.g.loaded_netrwPlugin = 1 --- set termguicolors to enable highlight groups -vim.opt.termguicolors = true --- empty setup using defaults -require("nvim-tree").setup() -require("which-key").register({ - t = { "NvimTreeFindFileToggle", "nvim tree" }, -}, { prefix = "t", silent = true }) diff --git a/modules/programs/nvim/plugins/orgmode.lua b/modules/programs/nvim/plugins/orgmode.lua index 556d5e6..789eb0a 100644 --- a/modules/programs/nvim/plugins/orgmode.lua +++ b/modules/programs/nvim/plugins/orgmode.lua @@ -1,18 +1,4 @@ -local orgmode = require("orgmode") --- Load custom treesitter grammar for org filetype -orgmode.setup_ts_grammar() --- Treesitter configuration -require("nvim-treesitter.configs").setup({ - -- If TS highlights are not enabled at all, or disabled via `disable` prop, - -- highlighting will fallback to default Vim syntax highlighting - highlight = { - enable = true, - -- Required for spellcheck, some LaTex highlights and - -- code block highlights that do not have ts grammar - additional_vim_regex_highlighting = { "org" }, - }, -}) -orgmode.setup({ +require("orgmode").setup({ org_agenda_files = { "~/Notes/org" }, org_default_notes_file = "~/Notes/org/refile.org", }) diff --git a/modules/programs/nvim/plugins/telescope-nvim.lua b/modules/programs/nvim/plugins/telescope-nvim.lua index d83cec4..95b228c 100644 --- a/modules/programs/nvim/plugins/telescope-nvim.lua +++ b/modules/programs/nvim/plugins/telescope-nvim.lua @@ -1,9 +1,22 @@ require("which-key").register({ f = { - name = "find", - f = { "Telescope find_files", "find file" }, - l = { "Telescope current_buffer_fuzzy_find", "find line" }, - g = { "Telescope live_grep", "live grep" }, - b = { "Telescope buffers", "find buffer" }, + f = { "Telescope find_files", "Find files" }, + b = { "Telescope buffers", "Find buffers" }, + r = { "Telescope oldfiles", "Find recent files" }, + }, + s = { + l = { "Telescope current_buffer_fuzzy_find", "Search lines" }, + g = { "Telescope live_grep", "Live grep" }, + c = { "Telescope command_history", "Command history" }, + C = { "Telescope commands", "Commands" }, + d = { "Telescope diagnostics", "Diagnostics" }, + h = { "Telescope help_tags", "Help tags" }, + k = { "Telescope keymaps", "Keymaps" }, + s = { "Telescope lsp_document_symbols", "Symbols (Document)" }, + S = { "Telescope lsp_workspace_symbols", "Symbols (Workspace)" }, + }, + g = { + c = { "Telescope git_commits", "Commits" }, + s = { "Telescope git_status", "Status" }, }, }, { prefix = "" }) diff --git a/modules/programs/nvim/plugins/telescope-zoxide.lua b/modules/programs/nvim/plugins/telescope-zoxide.lua index bb8f7f1..e725f8d 100644 --- a/modules/programs/nvim/plugins/telescope-zoxide.lua +++ b/modules/programs/nvim/plugins/telescope-zoxide.lua @@ -1,7 +1,4 @@ require("telescope").load_extension("zoxide") require("which-key").register({ - f = { - name = "find", - z = { "Telescope zoxide list", "find location" }, - }, -}, { prefix = "" }) + z = { "Telescope zoxide list", "Find location (Zoxide)" }, +}, { prefix = "f" }) diff --git a/modules/programs/nvim/plugins/todo-comments-nvim.lua b/modules/programs/nvim/plugins/todo-comments-nvim.lua index ae7ceee..57fce71 100644 --- a/modules/programs/nvim/plugins/todo-comments-nvim.lua +++ b/modules/programs/nvim/plugins/todo-comments-nvim.lua @@ -1 +1 @@ -require("todo-comments").setup({}) +require("todo-comments").setup() diff --git a/modules/programs/nvim/plugins/trouble-nvim.lua b/modules/programs/nvim/plugins/trouble-nvim.lua new file mode 100644 index 0000000..9a98571 --- /dev/null +++ b/modules/programs/nvim/plugins/trouble-nvim.lua @@ -0,0 +1,38 @@ +require("trouble").setup() +require("which-key").register({ + x = { "TroubleToggle document_diagnostics", "Document Diagnostics (Trouble)" }, + X = { "TroubleToggle workspace_diagnostics", "Workspace Diagnostics (Troule)" }, + l = { "TroubleToggle loclist", "Location List (Trouble)" }, + q = { "TroubleToggle quickfix", "Quickfix List (Trouble)" }, + t = { "TodoTrouble", "Todo (Trouble)" }, + T = { "TodoTrouble keywords=TODO,FIX,FIXME", "Todo/Fix/Fixme (Trouble)" }, +}, { prefix = "x" }) +require("which-key").register({ + t = { "TodoTelescope", "Todo" }, +}, { prefix = "s" }) +require("which-key").register({ + ["["] = { + q = { + function() + if require("trouble").is_open() then + require("trouble").previous({ skip_groups = true, jump = true }) + else + vim.cmd.cprev() + end + end, + "Previous trouble/quickfix item", + }, + }, + ["]"] = { + q = { + function() + if require("trouble").is_open() then + require("trouble").next({ skip_groups = true, jump = true }) + else + vim.cmd.cnext() + end + end, + "Next trouble/quickfix item", + }, + }, +}) diff --git a/modules/programs/nvim/plugins/twilight-nvim.lua b/modules/programs/nvim/plugins/twilight-nvim.lua new file mode 100644 index 0000000..f45d021 --- /dev/null +++ b/modules/programs/nvim/plugins/twilight-nvim.lua @@ -0,0 +1,3 @@ +require("twilight").setup({ + context = 20, +}) diff --git a/modules/programs/nvim/plugins/vim-startuptime.lua b/modules/programs/nvim/plugins/vim-startuptime.lua new file mode 100644 index 0000000..2091837 --- /dev/null +++ b/modules/programs/nvim/plugins/vim-startuptime.lua @@ -0,0 +1,2 @@ +vim.g.startuptime_tries = 10 +vim.g.startuptime_exe_path = "vim" diff --git a/modules/programs/nvim/plugins/zen-mode-nvim.lua b/modules/programs/nvim/plugins/zen-mode-nvim.lua new file mode 100644 index 0000000..bacce51 --- /dev/null +++ b/modules/programs/nvim/plugins/zen-mode-nvim.lua @@ -0,0 +1,4 @@ +require("zen-mode").setup() +require("which-key").register({ + z = { "ZenMode", "Zen mode" }, +}, { prefix = "t" }) diff --git a/modules/programs/python.nix b/modules/programs/python.nix index adecd55..0310b08 100644 --- a/modules/programs/python.nix +++ b/modules/programs/python.nix @@ -9,7 +9,7 @@ let cfg = config.my.programs.python; pythonVersions = map (version: "3${toString version}") (range 8 11); - enabledVersions = filterAttrs (name: value: value.enable) cfg.versions; + enabledVersions = filterAttrs (_: value: value.enable) cfg.versions; pythonPackages = version: attrNames pkgs."python${version}Packages"; diff --git a/modules/programs/ssh.nix b/modules/programs/ssh.nix index 2c484ae..f8b5ee2 100644 --- a/modules/programs/ssh.nix +++ b/modules/programs/ssh.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/xmonad/default.nix b/modules/programs/xmonad/default.nix deleted file mode 100644 index 80ceb83..0000000 --- a/modules/programs/xmonad/default.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config -, lib -, pkgs -, ... -}: - -with lib; -let - cfg = config.my.programs.xmonad; -in -{ - options.my.programs.xmonad.enable = mkEnableOption "xmonad"; - - config = lib.mkIf cfg.enable { - services = { - xserver = { - enable = true; - layout = "de"; - - displayManager = { - defaultSession = "none+xmonad"; - autoLogin = { - enable = true; - user = "moritz"; - }; - lightdm.enable = true; - }; - windowManager.xmonad.enable = true; - }; - }; - home-manager.users.moritz = - let - xmonadPackages = haskellPackages: [ - haskellPackages.xmonad-contrib - haskellPackages.xmonad-extras - haskellPackages.xmonad - haskellPackages.xmobar - ]; - in - { - xsession.windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - config = ./xmonad.hs; - # extraPackages = xmonadPackages; - }; - programs.xmobar.enable = true; - }; - }; -} diff --git a/modules/programs/xmonad/xmonad.hs b/modules/programs/xmonad/xmonad.hs deleted file mode 100644 index 5c27ff3..0000000 --- a/modules/programs/xmonad/xmonad.hs +++ /dev/null @@ -1,39 +0,0 @@ -import XMonad - ( Choose, - Default (def), - Full, - KeyMask, - Mirror, - Tall, - X, - XConfig (modMask, terminal), - mod4Mask, - spawn, - xmonad, - ) -import XMonad.Hooks.EwmhDesktops (ewmh) -import XMonad.Util.EZConfig (additionalKeysP) - -myModMask :: KeyMask -myModMask = mod4Mask - -myTerminal :: String -myTerminal = "kitty" - -myKeys :: [(String, X ())] -myKeys = - [ ("M-d", spawn "rofi -show combi"), - ("M-e", spawn "emacsclient -c -a emacs"), - ("M-f", spawn "firefox") - ] - -myConfig :: (XConfig (Choose Tall (Choose (Mirror Tall) Full))) -myConfig = - def - { modMask = myModMask, - terminal = myTerminal - } - `additionalKeysP` myKeys - -main :: IO () -main = xmonad $ ewmh $ ewmhFullscreen myConfig diff --git a/modules/programs/zathura.nix b/modules/programs/zathura.nix index 4eb23e3..d561c67 100644 --- a/modules/programs/zathura.nix +++ b/modules/programs/zathura.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix index 8088627..b8cc5ab 100644 --- a/modules/programs/zsh.nix +++ b/modules/programs/zsh.nix @@ -1,7 +1,6 @@ { config , lib , pkgs -, inputs , ... }: @@ -31,12 +30,6 @@ in readlink -f $(which $1) } ''; - plugins = [ - { - name = "forgit"; - src = inputs.forgit-git; - } - ]; }; }; }; diff --git a/modules/security/default.nix b/modules/security/default.nix index c3cf86f..4ae5302 100644 --- a/modules/security/default.nix +++ b/modules/security/default.nix @@ -11,10 +11,10 @@ # tmpfs = /tmp is mounted in ram. Doing so makes temp file management speedy # on ssd systems, and volatile! Because it's wiped on reboot. - boot.tmpOnTmpfs = lib.mkDefault true; + boot.tmp.useTmpfs = lib.mkDefault true; # If not using tmpfs, which is naturally purged on reboot, we must clean it # /tmp ourselves. /tmp should be volatile storage! - boot.cleanTmpDir = lib.mkDefault (!config.boot.tmpOnTmpfs); + boot.tmp.cleanOnBoot = lib.mkDefault (!config.boot.tmpOnTmpfs); # Fix a security hole in place for backwards compatibility. See desc in # nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index d63a582..ac126e9 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -1,8 +1,4 @@ -{ config -, lib -, pkgs -, ... -}: { +{ imports = [ ./dunst.nix ./kdeconnect.nix @@ -10,7 +6,7 @@ ./openconnect.nix ./picom.nix ./printing.nix - ./redshift.nix + ./gammastep.nix ./wireguard.nix ]; } diff --git a/modules/services/gammastep.nix b/modules/services/gammastep.nix new file mode 100644 index 0000000..8c7b25e --- /dev/null +++ b/modules/services/gammastep.nix @@ -0,0 +1,17 @@ +{ config, lib, ... }: + +with lib; +let + cfg = config.my.services.gammastep; +in +{ + options.my.services.gammastep.enable = mkEnableOption "gammastep"; + + config = lib.mkIf cfg.enable { + home-manager.users.moritz.services.gammastep = { + enable = true; + latitude = 52.3; + longitude = 12.4; + }; + }; +} diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix index 3ce2e31..3efd6a8 100644 --- a/modules/services/kdeconnect.nix +++ b/modules/services/kdeconnect.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/services/openconnect.nix b/modules/services/openconnect.nix index 6a9433a..87c37a1 100644 --- a/modules/services/openconnect.nix +++ b/modules/services/openconnect.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/services/redshift.nix b/modules/services/redshift.nix deleted file mode 100644 index 6e75b5e..0000000 --- a/modules/services/redshift.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; -let - cfg = config.my.services.redshift; -in -{ - options.my.services.redshift.enable = mkEnableOption "redshift"; - - config = lib.mkIf cfg.enable { - services.redshift.enable = true; - location = { - latitude = 52.3; - longitude = 12.4; - }; - }; -} diff --git a/modules/services/wireguard.nix b/modules/services/wireguard.nix index 2c81285..5463f1a 100644 --- a/modules/services/wireguard.nix +++ b/modules/services/wireguard.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/modules/virtualisation/default.nix b/modules/virtualisation/default.nix index 74bd309..bcc1863 100644 --- a/modules/virtualisation/default.nix +++ b/modules/virtualisation/default.nix @@ -1,8 +1,3 @@ -{ config -, lib -, pkgs -, ... -}: { imports = [ ./podman.nix diff --git a/modules/virtualisation/podman.nix b/modules/virtualisation/podman.nix index 1698fe3..744004f 100644 --- a/modules/virtualisation/podman.nix +++ b/modules/virtualisation/podman.nix @@ -1,6 +1,5 @@ { config , lib -, pkgs , ... }: diff --git a/overlays/channels.nix b/overlays/channels.nix index 8c19d82..5c2a49a 100644 --- a/overlays/channels.nix +++ b/overlays/channels.nix @@ -1,6 +1,6 @@ -{ lib, inputs }: +{ inputs, ... }: -final: prev: { +_: prev: { master = import inputs.master { inherit (prev) system; config.allowUnfree = true; diff --git a/overlays/lib.nix b/overlays/lib.nix index 69b149a..0d1a251 100644 --- a/overlays/lib.nix +++ b/overlays/lib.nix @@ -1,5 +1,5 @@ -{ lib, inputs }: +{ lib, ... }: -final: prev: { +_: _: { inherit lib; } diff --git a/overlays/packages.nix b/overlays/packages.nix index d1fb9c3..01c938a 100644 --- a/overlays/packages.nix +++ b/overlays/packages.nix @@ -1,10 +1,9 @@ -{ inputs, lib }: +{ inputs, ... }: -final: prev: +_: prev: { agenix = inputs.agenix.packages.${prev.system}.default; attic = inputs.attic.packages.${prev.system}.default; hyprpaper = inputs.hyprpaper.packages.${prev.system}.default; - neovim-nightly = inputs.neovim.packages.${prev.system}.default; nil = inputs.nil.packages.${prev.system}.default; } diff --git a/overlays/vimPlugins.nix b/overlays/vimPlugins.nix index de8e8da..71a81a1 100644 --- a/overlays/vimPlugins.nix +++ b/overlays/vimPlugins.nix @@ -1,6 +1,6 @@ { inputs, lib }: -final: prev: +_: prev: with lib.my; { vimPlugins = prev.vimPlugins // { @@ -16,26 +16,37 @@ with lib.my; src = inputs.smartcolumn-nvim; }; - copilot-lua = prev.vimPlugins.copilot-lua.overrideAttrs (old: { + copilot-lua = prev.vimPlugins.copilot-lua.overrideAttrs (_: { version = mkVersionInput inputs.copilot-lua; src = inputs.copilot-lua; }); - lspsaga-nvim-original = prev.vimPlugins.lspsaga-nvim-original.overrideAttrs (old: { + lspsaga-nvim-original = prev.vimPlugins.lspsaga-nvim-original.overrideAttrs (_: { version = mkVersionInput inputs.lspsaga-nvim; src = inputs.lspsaga-nvim; }); - advanced-git-search-nvim = prev.vimUtils.buildVimPluginFrom2Nix { - pname = "advanced-git-search-nvim"; - version = mkVersionInput inputs.advanced-git-search-nvim; - src = inputs.advanced-git-search-nvim; - }; - cmp-async-path = prev.vimPlugins.cmp-path.overrideAttrs (old: { pname = "cmp-async-path"; version = mkVersionInput inputs.cmp-async-path; src = inputs.cmp-async-path; }); + + comment-box-nvim = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "comment-box-nvim"; + version = mkVersionInput inputs.comment-box-nvim; + src = inputs.comment-box-nvim; + }; + + gitignore-nvim = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "gitignore-nvim"; + version = mkVersionInput inputs.gitignore-nvim; + src = inputs.gitignore-nvim; + }; + + bufferline-nvim = prev.vimPlugins.bufferline-nvim.overrideAttrs (_: { + version = mkVersionInput inputs.bufferline-nvim; + src = inputs.bufferline-nvim; + }); }; } diff --git a/overlays/wayland.nix b/overlays/wayland.nix index f88709a..0ad9931 100644 --- a/overlays/wayland.nix +++ b/overlays/wayland.nix @@ -1,4 +1,4 @@ -{ lib, inputs }: +_: final: prev: { neovide-hyprland = final.symlinkJoin {