diff --git a/flake.lock b/flake.lock index e699ef7..939c222 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "actions-preview-nvim": { "flake": false, "locked": { - "lastModified": 1707037812, - "narHash": "sha256-KUkWhXSSEXWi7NZ92F1nk/mhAgSNLrmdwAow9Odwe7k=", + "lastModified": 1710009411, + "narHash": "sha256-PIzXWOqmTeesPZg82iLkvLpJtOoDDljvwJq8wdvRtqQ=", "owner": "aznhe21", "repo": "actions-preview.nvim", - "rev": "9e86d014a72a4121ee27f3d8952e1ea868c3c8c4", + "rev": "5072b1b1065a6b22bdd46b5c21780a91d6a08071", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1707830867, - "narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=", + "lastModified": 1712079060, + "narHash": "sha256-/JdiT9t+zzjChc5qQiF+jhrVhRt8figYH29rZO7pFe4=", "owner": "ryantm", "repo": "agenix", - "rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6", + "rev": "1381a759b205dff7a6818733118d02253340fd5e", "type": "github" }, "original": { @@ -100,11 +100,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1705332421, - "narHash": "sha256-USpGLPme1IuqG78JNqSaRabilwkCyHmVWY0M9vYyqEA=", + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", "owner": "numtide", "repo": "devshell", - "rev": "83cb93d6d063ad290beee669f4badf9914cc16ec", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", "type": "github" }, "original": { @@ -118,11 +118,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1708029101, - "narHash": "sha256-FPlAle/nl4sJRfd8eILe5M20aRJh/z2KY8ji2yBBwaI=", + "lastModified": 1713406758, + "narHash": "sha256-kwZvhmx+hSZvjzemKxsAqzEqWmXZS47VVwQhNrINORQ=", "owner": "nix-community", "repo": "disko", - "rev": "810eccbad22cc50323b27161033399eb87658932", + "rev": "1efd500e9805a9efbce401ed5999006d397b9f11", "type": "github" }, "original": { @@ -184,11 +184,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1706830856, - "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { @@ -205,11 +205,11 @@ ] }, "locked": { - "lastModified": 1706830856, - "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { @@ -227,11 +227,11 @@ ] }, "locked": { - "lastModified": 1701473968, - "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", "type": "github" }, "original": { @@ -262,11 +262,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -280,11 +280,11 @@ "systems": "systems_5" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -298,11 +298,11 @@ "systems": "systems_6" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -314,11 +314,11 @@ "gen-nvim": { "flake": false, "locked": { - "lastModified": 1707889639, - "narHash": "sha256-pM+7hkLHBapdj6yOx2FKG5jYNfcf29rorDacLJu0hFw=", + "lastModified": 1712049871, + "narHash": "sha256-Bt7yJxToUnPv3JqBwWQeywIbVRqzHBqnu3NUaIxFx/M=", "owner": "David-Kunz", "repo": "gen.nvim", - "rev": "98043162168dcc0eb5c3c31b97439ff686dc8559", + "rev": "87fbe811155b90eea58622614809705b966009ad", "type": "github" }, "original": { @@ -335,11 +335,11 @@ ] }, "locked": { - "lastModified": 1703887061, - "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { @@ -351,11 +351,11 @@ "hawtkeys-nvim": { "flake": false, "locked": { - "lastModified": 1706046129, - "narHash": "sha256-mbMmepQ6TXdsqQ1X8mybvcasPRCHGYMQ+6N3IXP75sM=", + "lastModified": 1711836933, + "narHash": "sha256-wxxnQvIMHUbDOAbBAswueULavoIoIDHdJK7T09IHD8E=", "owner": "tris203", "repo": "hawtkeys.nvim", - "rev": "a6ca6e4a4d07386a7ab327646c1dbf5155f09c44", + "rev": "aeba04a4ccded2aa8c8fb5d74a3bea05a8f89dab", "type": "github" }, "original": { @@ -373,11 +373,11 @@ ] }, "locked": { - "lastModified": 1704029560, - "narHash": "sha256-a4Iu7x1OP+uSYpqadOu8VCPY+MPF3+f6KIi+MAxlgyw=", + "lastModified": 1710478346, + "narHash": "sha256-Xjf8BdnQG0tLhPMlqQdwCIjOp7Teox0DP3N/jjyiGM4=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "d5cbf433a6ae9cae05400189a8dbc6412a03ba16", + "rev": "64e7763d72c1e4c1e5e6472640615b6ae2d40fbf", "type": "github" }, "original": { @@ -414,17 +414,16 @@ ] }, "locked": { - "lastModified": 1705392270, - "narHash": "sha256-Y11fcK0ETTpfBxJ58w9amqTKuJSQ+lSs6nIV8DoplKo=", + "lastModified": 1713682182, + "narHash": "sha256-2RSqVmQMFmn6OjQ21SXnWC+HuSeqDLWLftRv/ZhEDZE=", "owner": "nix-community", "repo": "home-manager", - "rev": "bf4b576f84e1ce54ec886836bae7695738aa5a6c", + "rev": "4cec20dbf5c0a716115745ae32531e34816ecbbe", "type": "github" }, "original": { "owner": "nix-community", "repo": "home-manager", - "rev": "bf4b576f84e1ce54ec886836bae7695738aa5a6c", "type": "github" } }, @@ -433,11 +432,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1706198673, - "narHash": "sha256-bHlxFd+3QHy6eXtTzzhwVNcyxBSOxTvBuJGNUzI4C4M=", + "lastModified": 1712505318, + "narHash": "sha256-fzlBLhXUN6y7mzEtcGNRDXxFakBEfaj4Bmj5PuoCNaM=", "owner": "hyprwm", "repo": "contrib", - "rev": "16884001b26e6955ff4b88b4dfe4c8986e20f153", + "rev": "5870244b592c22558b658dbaf94f9e41afb0316f", "type": "github" }, "original": { @@ -446,20 +445,52 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1713612213, + "narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, "hyprland": { "inputs": { + "hyprcursor": "hyprcursor", "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs_4", "systems": "systems_4", "wlroots": "wlroots", "xdph": "xdph" }, "locked": { - "lastModified": 1708018354, - "narHash": "sha256-MlbqBzAjiz4Va2M/AvLN96Wq+jsCbEedhfMs5wW1yFM=", + "lastModified": 1713660608, + "narHash": "sha256-Wy9I4K1vuWtOv/UEpKmpDb6O8YaAY3GcC3pZu70DWMY=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "fbf5ba87ce57752653f3bebf6e2be090c702836e", + "rev": "7c3bd4c19fe47f2d92463b81d9b38651b7a1a268", "type": "github" }, "original": { @@ -497,16 +528,19 @@ "inputs": { "nixpkgs": [ "hyprland", - "xdph", "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" ] }, "locked": { - "lastModified": 1704287638, - "narHash": "sha256-TuRXJGwtK440AXQNl5eiqmQqY4LZ/9+z/R7xC0ie3iA=", + "lastModified": 1713121246, + "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "6624f2bb66d4d27975766e81f77174adbe58ec97", + "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", "type": "github" }, "original": { @@ -515,13 +549,38 @@ "type": "github" } }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1713619586, + "narHash": "sha256-fIhNlYhPhG5AJ8DxX3LaitnccnQ+X2MCL39W2Abp7mM=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "9e13e0915273959bfd98a10662f678c15ac71c77", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "impermanence": { "locked": { - "lastModified": 1706639736, - "narHash": "sha256-CaG4j9+UwBDfinxxvJMo6yOonSmSo0ZgnbD7aj2Put0=", + "lastModified": 1708968331, + "narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=", "owner": "nix-community", "repo": "impermanence", - "rev": "cd13c2917eaa68e4c49fea0ff9cada45440d7045", + "rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30", "type": "github" }, "original": { @@ -546,29 +605,13 @@ "type": "github" } }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, "master": { "locked": { - "lastModified": 1708077385, - "narHash": "sha256-AaltTBb76jj0jQNsoItBf4scf1oVPREZ8KwGUeDDUkI=", + "lastModified": 1713689773, + "narHash": "sha256-4M4c9n6sYbT7Sd/RvB9pej+7BoP7X1lNrFiboNV4O7I=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4bd735b4dcfd26665dfb77ecfd52789603f03737", + "rev": "a8a8401b7b26112a9b75d6c00306e160fe8f8cb3", "type": "github" }, "original": { @@ -626,11 +669,11 @@ }, "locked": { "dir": "contrib", - "lastModified": 1708040042, - "narHash": "sha256-8iloeE/jALIKcOcYKgTlI9i7iDW7n52Epqps27jGklU=", + "lastModified": 1713650988, + "narHash": "sha256-YAbwiZkKxpbM+fdTVcXmp49XtHMDYQNng/wc9L85eZs=", "owner": "neovim", "repo": "neovim", - "rev": "04dfa2eea914086a9f42a5a00a33e9524f9fded4", + "rev": "9e1bbb9813e0ea4e37f6325fe00e8f43617ef912", "type": "github" }, "original": { @@ -649,11 +692,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1708041826, - "narHash": "sha256-zW7F31gW4HCBYcImcXxold4ntZdlEr/NTlMVhEMA5dw=", + "lastModified": 1713657840, + "narHash": "sha256-O99sOWro/5J4qWyIFZ3vEw+abLnzOv4jrfA7FaRoyrI=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "1afaeebc41dab1029b855b17d78f2348e8dd49e3", + "rev": "3ad9c1eae733e9ba5cc73c6833e3d62dbc12df9e", "type": "github" }, "original": { @@ -664,11 +707,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1687178632, - "narHash": "sha256-HS7YR5erss0JCaUijPeyg2XrisEb959FIct3n2TMGbE=", + "lastModified": 1705332318, + "narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=", "owner": "numtide", "repo": "nix-filter", - "rev": "d90c75e8319d0dd9be67d933d8eb9d0894ec9174", + "rev": "3449dc925982ad46246cfc36469baf66e1b64f17", "type": "github" }, "original": { @@ -684,11 +727,11 @@ ] }, "locked": { - "lastModified": 1707620986, - "narHash": "sha256-XE0tCSkSVBeJDWhjFwusNInwAhrnp+TloUNUpvnTiLw=", + "lastModified": 1713668931, + "narHash": "sha256-rVlwWQlgFGGK3aPVcKmtYqWgjYnPah5FOIsYAqrMN2w=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "0cb4345704123492e6d1f1068629069413c80de0", + "rev": "07ece11b22217b8459df589f858e92212b74f1a1", "type": "github" }, "original": { @@ -720,11 +763,11 @@ ] }, "locked": { - "lastModified": 1692605628, - "narHash": "sha256-jBasvDCk9V32JuwtPy1G4KyVAc2eaBSf2X5eRNQgIkY=", + "lastModified": 1708169437, + "narHash": "sha256-qR3UF6xf+ts/lCY2UlacKtNzZq/9jxsgsdXxiQ5gcPU=", "owner": "ners", "repo": "nix-monitored", - "rev": "6be92b0c1eca7ef501b4f92735885e7cb4db414b", + "rev": "382ed0cad468cb0b5426bf0905da573efa96c218", "type": "github" }, "original": { @@ -737,16 +780,15 @@ "inputs": { "flake-compat": "flake-compat_2", "libgit2": "libgit2", - "lowdown-src": "lowdown-src", "nixpkgs": "nixpkgs_6", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1708070219, - "narHash": "sha256-/2fidzoXrrNwr8te2cU3JdtrpockWIjU4DpLgNr4FTo=", + "lastModified": 1713633256, + "narHash": "sha256-MKKP3oye1YlF4zq0cARo3BrYzinBaBSJzcdaTxatuew=", "owner": "privatevoid-net", "repo": "nix-super", - "rev": "924eb1127a21ebf4bd7f438d7c6aca133ce1de84", + "rev": "1a2019bb819dde804d7aed43853e31e1a6ea6ea3", "type": "github" }, "original": { @@ -774,11 +816,11 @@ "nixpkgs-lib": { "locked": { "dir": "lib", - "lastModified": 1706550542, - "narHash": "sha256-UcsnCG6wx++23yeER4Hg18CXWbgNpqNXcHIo5/1Y+hc=", + "lastModified": 1711703276, + "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "97b17f32362e475016f942bbdfda4a4a72a8a652", + "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089", "type": "github" }, "original": { @@ -807,11 +849,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1704874635, - "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { @@ -823,11 +865,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1707268954, - "narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=", + "lastModified": 1713254108, + "narHash": "sha256-0TZIsfDbHG5zibtlw6x0yOp3jkInIGaJ35B7Y4G8Pec=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f8e2ebd66d097614d51a56a755450d4ae1632df1", + "rev": "2fd19c8be2551a61c1ddc3d9f86d748f4db94f00", "type": "github" }, "original": { @@ -839,11 +881,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1658161305, - "narHash": "sha256-X/nhnMCa1Wx4YapsspyAs6QYz6T/85FofrI6NpdPDHg=", + "lastModified": 1712163089, + "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4d49de45a3b5dbcb881656b4e3986e666141ea9", + "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", "type": "github" }, "original": { @@ -855,11 +897,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1707546158, - "narHash": "sha256-nYYJTpzfPMDxI8mzhQsYjIUX+grorqjKEU9Np6Xwy/0=", + "lastModified": 1713537308, + "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d934204a0f8d9198e1e4515dd6fec76a139c87f0", + "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f", "type": "github" }, "original": { @@ -871,11 +913,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1707939175, - "narHash": "sha256-D1xan0lgxbmXDyzVqXTiSYHLmAMrMRdD+alKzEO/p3w=", + "lastModified": 1713596654, + "narHash": "sha256-LJbHQQ5aX1LVth2ST+Kkse/DRzgxlVhTL1rxthvyhZc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f7e8132daca31b1e3859ac0fb49741754375ac3d", + "rev": "fd16bb6d3bcca96039b11aa52038fafeb6e4f4be", "type": "github" }, "original": { @@ -887,27 +929,27 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1700748986, - "narHash": "sha256-/nqLrNU297h3PCw4QyDpZKZEUHmialJdZW2ceYFobds=", + "lastModified": 1709083642, + "narHash": "sha256-7kkJQd4rZ+vFrzWu8sTRtta5D1kBG0LSRYAfhtmMlSo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9ba29e2346bc542e9909d1021e8fd7d4b3f64db0", + "rev": "b550fe4b4776908ac2a861124307045f8e717c8e", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.05-small", + "ref": "release-23.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_7": { "locked": { - "lastModified": 1708001613, - "narHash": "sha256-woOmAXW05XnqlLn7dKzCkRAEOSOdA/Z2ndVvKcjid94=", + "lastModified": 1713627711, + "narHash": "sha256-kWlK1w/rqPBrs5rF4btRgXpzVstmNxA8rgc6kBzc89s=", "owner": "nixos", "repo": "nixpkgs", - "rev": "085589047343aad800c4d305cf7b98e8a3d51ae2", + "rev": "0c97ced70e0b92d46e5e53e239fec5201f8b0811", "type": "github" }, "original": { @@ -919,11 +961,11 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1704842529, - "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { @@ -952,11 +994,11 @@ "none-ls-nvim": { "flake": false, "locked": { - "lastModified": 1707832208, - "narHash": "sha256-nQCxzlQZgso2rjHLVaASkStQhrC4XUpg3d8/yfrZfR0=", + "lastModified": 1713584427, + "narHash": "sha256-tJEyILFUEdGASYkkaoUEsKcyTWU4XLHtkNF2MJstuyY=", "owner": "nvimtools", "repo": "none-ls.nvim", - "rev": "34b1311bd07bd3741e60e06b34d0709d6e5a9f0f", + "rev": "88821b67e6007041f43b802f58e3d9fa9bfce684", "type": "github" }, "original": { @@ -967,11 +1009,11 @@ }, "nur": { "locked": { - "lastModified": 1708076655, - "narHash": "sha256-KNRfg2szpJ19/NgXXB4s9r2+CCM90nq0MVUuvdQI+Ws=", + "lastModified": 1713683463, + "narHash": "sha256-4byae6EewzcPs1C1JGOts1PLVr+PlR7+FOOqJGNSBIQ=", "owner": "nix-community", "repo": "NUR", - "rev": "1155ba6a69b8a69d7edda02321a21ff993d9300e", + "rev": "568cd159bad8d8a2e3c2f3f7b71dd27a3d553b45", "type": "github" }, "original": { @@ -983,11 +1025,11 @@ "nvim-lspconfig": { "flake": false, "locked": { - "lastModified": 1708063340, - "narHash": "sha256-1k3BRjNy853WjuTMUT8EjGZd9v4phuUMTZmJfZLDToM=", + "lastModified": 1713507075, + "narHash": "sha256-/SqLT0PG2RUWyknYpcXlcU/aUyKWZMBs35s1sPRkEmc=", "owner": "neovim", "repo": "nvim-lspconfig", - "rev": "d1bab4cf4b69e49d6058028fd933d8ef5e74e680", + "rev": "ed8b8a15acc441aec669f97d75f2c1f2ac8c8aa5", "type": "github" }, "original": { @@ -1005,11 +1047,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1708018599, - "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "lastModified": 1712897695, + "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", + "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8", "type": "github" }, "original": { @@ -1018,6 +1060,24 @@ "type": "github" } }, + "river": { + "flake": false, + "locked": { + "lastModified": 1713527168, + "narHash": "sha256-oYVyqNfXjmR6axGyki+jZVOOHFVt1YWAX08eqxtVE6c=", + "ref": "refs/heads/master", + "rev": "9bbd34a0e31b6d429df2d39a59d8990a9585e186", + "revCount": 1248, + "submodules": true, + "type": "git", + "url": "https://github.com/riverwm/river" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/riverwm/river" + } + }, "root": { "inputs": { "actions-preview-nvim": "actions-preview-nvim", @@ -1046,6 +1106,7 @@ "nur": "nur", "nvim-lspconfig": "nvim-lspconfig", "pre-commit-hooks": "pre-commit-hooks", + "river": "river", "smartcolumn-nvim": "smartcolumn-nvim", "stable": "stable", "statuscol-nvim": "statuscol-nvim", @@ -1056,11 +1117,11 @@ "smartcolumn-nvim": { "flake": false, "locked": { - "lastModified": 1703592909, - "narHash": "sha256-c5tENO4LJaSRELxuCOp/aI94ifhKjqd8J2chJbxfFdc=", + "lastModified": 1710067624, + "narHash": "sha256-DHIeDNUF9n9s14GVeojIwc5QUPwJMYYl3gRvhvO/rdE=", "owner": "m4xshen", "repo": "smartcolumn.nvim", - "rev": "a52915d6d9abf9972e249ebcffcc651cf9b062dd", + "rev": "cefb17be095ad5526030a21bb2a80553cae09127", "type": "github" }, "original": { @@ -1210,11 +1271,11 @@ "telekasten-nvim": { "flake": false, "locked": { - "lastModified": 1702296926, - "narHash": "sha256-Y6LVli8fMLVVRtwrpZ2uIWDUogwUtFhTB6W2RZH5S8c=", + "lastModified": 1713339207, + "narHash": "sha256-eg1xJUl4a+tIyJyN+UcaK0bP1o+zEo6mARFlJcsAwM8=", "owner": "renerocksai", "repo": "telekasten.nvim", - "rev": "8c2b3889eb31009ae510a43384d1957b37654176", + "rev": "24fd8c1e7eb989dba9efa5d174e42870f08da8fb", "type": "github" }, "original": { @@ -1264,20 +1325,18 @@ "wlroots": { "flake": false, "locked": { - "host": "gitlab.freedesktop.org", - "lastModified": 1706359063, - "narHash": "sha256-5HUTG0p+nCJv3cn73AmFHRZdfRV5AD5N43g8xAePSKM=", - "owner": "wlroots", - "repo": "wlroots", - "rev": "00b869c1a96f300a8f25da95d624524895e0ddf2", - "type": "gitlab" + "lastModified": 1713124002, + "narHash": "sha256-vPeZCY+sdiGsz4fl3AVVujfyZyQBz6+vZdkUE4hQ+HI=", + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "611a4f24cd2384378f6e500253983107c6656c64", + "type": "github" }, "original": { - "host": "gitlab.freedesktop.org", - "owner": "wlroots", - "repo": "wlroots", - "rev": "00b869c1a96f300a8f25da95d624524895e0ddf2", - "type": "gitlab" + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "611a4f24cd2384378f6e500253983107c6656c64", + "type": "github" } }, "xdph": { @@ -1286,7 +1345,10 @@ "hyprland", "hyprland-protocols" ], - "hyprlang": "hyprlang", + "hyprlang": [ + "hyprland", + "hyprlang" + ], "nixpkgs": [ "hyprland", "nixpkgs" @@ -1297,11 +1359,11 @@ ] }, "locked": { - "lastModified": 1706521509, - "narHash": "sha256-AInZ50acOJ3wzUwGzNr1TmxGTMx+8j6oSTzz4E7Vbp8=", + "lastModified": 1713214484, + "narHash": "sha256-h1bSIsDuPk1FGgvTuSHJyiU2Glu7oAyoPMJutKZmLQ8=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "c06fd88b3da492b8f9067be021b9184f7012b5a8", + "rev": "bb44921534a9cee9635304fdb876c1b3ec3a8f61", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index cd06bd0..37e227d 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ flake-parts.url = "github:hercules-ci/flake-parts"; flake-utils.url = "github:numtide/flake-utils"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.url = "github:nix-community/home-manager/bf4b576f84e1ce54ec886836bae7695738aa5a6c"; # FIXME: + home-manager.url = "github:nix-community/home-manager"; impermanence.url = "github:nix-community/impermanence"; master.url = "github:nixos/nixpkgs"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; @@ -48,6 +48,10 @@ hawtkeys-nvim.flake = false; hawtkeys-nvim.url = "github:tris203/hawtkeys.nvim"; + # river + river.url = "git+https://github.com/riverwm/river?submodules=1"; + river.flake = false; + # Hyprland hypr-contrib.url = "github:hyprwm/contrib"; hyprland.url = "github:hyprwm/Hyprland"; diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index e79fd11..1df502b 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -19,21 +19,28 @@ gaming.enable = true; personal.enable = true; impermanence.enable = true; + webis.enable = true; }; - programs.hyprland = { - nvidiaSupport = true; - monitors = [ "HDMI-A-1,3840x2160,auto,1.2" ",preferred,auto,1" ]; - extraConfig = "exec=hyprctl keyword monitor HDMI-A-1,3840x2160@120,auto,1.2"; - keyboardLayouts = [ "us" "de" ]; - }; + # programs.river = { + # enable = true; + # nvidiaSupport = true; + # }; + programs.hyprland.enable = true; + programs.hyprland.nvidiaSupport = true; + programs.exercism.enable = true; services.wallpaper.enable = true; - services.ollama.enable = true; - programs.ledger.enable = true; }; + home-manager.users.moritz.services.kanshi.profiles = { + default = { + outputs = [ + { criteria = "HDMI-A-1"; mode = "3840x2160@60"; scale = 1.2; } + ]; + }; + }; home-manager.users.moritz.home.packages = with pkgs; [ anki - calibre + stable.calibre # NOTE: breaks often in unstable ]; hardware = { diff --git a/hosts/nixos-laptop/default.nix b/hosts/nixos-laptop/default.nix index 313b541..ca86959 100644 --- a/hosts/nixos-laptop/default.nix +++ b/hosts/nixos-laptop/default.nix @@ -20,7 +20,8 @@ webis.enable = true; impermanence.enable = true; }; - programs.hyprland.monitors = [ "HDMI-A-1,3840x2160,auto,1.2" ",preferred,auto,1" ]; + programs.hyprland.enable = true; + # programs.river.enable = true; programs.exercism.enable = true; }; diff --git a/hosts/nixos-laptop/impermanence.nix b/hosts/nixos-laptop/impermanence.nix deleted file mode 100644 index 13bcc83..0000000 --- a/hosts/nixos-laptop/impermanence.nix +++ /dev/null @@ -1,75 +0,0 @@ -{ config, ... }: - -{ - age.secrets = { - root-password.file = ../../secrets/root-password.age; - moritz-password.file = ../../secrets/moritz-password.age; - }; - users.users = { - root.hashedPasswordFile = config.age.secrets.root-password.path; - moritz.hashedPasswordFile = config.age.secrets.moritz-password.path; - }; - users.mutableUsers = false; - environment.persistence."/persist" = { - hideMounts = true; - directories = [ - "/etc/NetworkManager/system-connections" - "/var/db/dhcpcd/" - "/var/lib/NetworkManager/" - "/var/lib/bluetooth" - "/var/lib/nixos" - "/var/lib/systemd/coredump" - "/var/log" - ]; - files = [ - "/etc/machine-id" - "/etc/nix/id_rsa" - "/etc/ssh/ssh_host_ed25519_key" - "/etc/ssh/ssh_host_ed25519_key.pub" - "/etc/ssh/ssh_host_rsa_key" - "/etc/ssh/ssh_host_rsa_key.pub" - ]; - users.moritz = { - directories = [ - ".SynologyDrive/data" - ".SynologyDrive/log" - ".cache/keepassxc" - ".cache/nvim/luac" - ".config/Nextcloud" - ".config/keepassxc" - ".local/share/direnv" - ".local/share/nvim" - ".local/share/zoxide" - ".local/share/JetBrains" - ".config/JetBrains" - ".local/state/nvim" - ".config/kdeconnect" - ".cat_installer" # eduroam - ".mozilla" - "Documents" - "Downloads" - "Music" - "Pictures" - "Videos" - { directory = ".gnupg"; mode = "0700"; } - { directory = ".local/share/keyrings"; mode = "0700"; } - { directory = ".ssh"; mode = "0700"; } - ]; - files = [ - ".local/share/fish/fish_history" - ".local/share/nix/trusted-settings.json" - ".parallel/will-cite" - ]; - }; - users.root = { - home = "/root"; - directories = [ - { directory = ".gnupg"; mode = "0700"; } - { directory = ".ssh"; mode = "0700"; } - ]; - files = [ - ".local/share/nix/trusted-settings.json" - ]; - }; - }; -} diff --git a/modules/config/theming/_catppuccin.nix b/modules/config/theming/_catppuccin.nix index 17c9118..6d69def 100644 --- a/modules/config/theming/_catppuccin.nix +++ b/modules/config/theming/_catppuccin.nix @@ -31,6 +31,12 @@ }: { + my.programs.tofi.settings = { + text-color = "#${text}"; + prompt-color = "#${red}"; + selection-color = "#${yellow}"; + background-color = "#${base}"; + }; home-manager.users.moritz = { programs = { fzf.colors = { @@ -47,6 +53,26 @@ prompt = "#${mauve}"; spinner = "#${rosewater}"; }; + foot.settings.colors = { + foreground = text; # Text + background = base; # Base + regular0 = surface1; # Surface 1 + regular1 = red; # red + regular2 = green; # green + regular3 = yellow; # yellow + regular4 = blue; + regular5 = pink; + regular6 = teal; + regular7 = subtext1; + bright0 = surface2; + bright1 = red; + bright2 = green; + bright3 = yellow; + bright4 = blue; + bright5 = pink; + bright6 = teal; + bright7 = subtext0; + }; kitty.extraConfig = '' # vim:ft=kitty diff --git a/modules/config/theming/default.nix b/modules/config/theming/default.nix index 31d8cb4..9704874 100644 --- a/modules/config/theming/default.nix +++ b/modules/config/theming/default.nix @@ -31,6 +31,20 @@ in }; config = mkIf cfg.enable { + my.programs.tofi.settings = { + font-size = "20"; + font = + let + fontBasePath = pkgs.nerdfonts.override { + fonts = [ "FiraCode" ]; + }; + in + "${fontBasePath}/share/fonts/truetype/NerdFonts/FiraCodeNerdFont-Regular.ttf"; + height = "360"; + width = "720"; + outline-width = "0"; + border-width = "0"; + }; home-manager.users.moritz = { services.polybar = { config = { @@ -39,7 +53,7 @@ in monitor = "\${env:MONITOR}"; bottom = true; width = "100%"; - heigth = 15; + height = 15; border-size = 2; diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index ad8cbe4..7a5dd80 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -44,7 +44,7 @@ let gi = pkgs.writeFishApplication { name = "gi"; - runtimeInputs = with pkgs; [ fzf gum curl ]; + runtimeInputs = with pkgs; [ fzf gum curl coreutils-full ]; text = /* fish */ '' set url https://www.gitignore.io/api @@ -57,10 +57,12 @@ let set choice (string join "," $argv[1..]) end + set contents "$(curl -sL $url/$choice | head -n -2 | tail -n +4)" + if gum confirm "Overwrite current .gitignore?" - curl -sL $url/$choice > .gitignore + echo "$contents" > .gitignore else - curl -sL $url/$choice >> .gitignore + echo "$contents" >> .gitignore end ''; completions = /* fish */ '' @@ -77,7 +79,7 @@ in isNormalUser = true; home = "/home/moritz"; extraGroups = [ "wheel" "networkmanager" "video" ]; - initialPassword = "password"; # CHANGE ME PLEASE + # initialPassword = "password"; # CHANGE ME PLEASE openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGoAqa2m7hIzZ2LS96Z+RCIlRvhBM/j7h27tMBCwMT+a" # Moritz "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDhtwHDGAZshiQWKkCcPWV9tC83b+bKBgjDcjP/N2CKO" # Laptop @@ -247,7 +249,7 @@ in parallel ripgrep vim - viu + (viu.override { withSixel = true; }) wget ]; diff --git a/modules/profiles/impermanence.nix b/modules/profiles/impermanence.nix index 43b58ce..6cf6c6e 100644 --- a/modules/profiles/impermanence.nix +++ b/modules/profiles/impermanence.nix @@ -68,6 +68,7 @@ in ".local/share/fish/fish_history" ".local/share/nix/trusted-settings.json" ".parallel/will-cite" + ".local/state/tofi-history" ]; }; users.root = { diff --git a/modules/programs/foot.nix b/modules/programs/foot.nix new file mode 100644 index 0000000..3174b88 --- /dev/null +++ b/modules/programs/foot.nix @@ -0,0 +1,31 @@ +{ config +, lib +, ... +}: + +with lib; +let + cfg = config.my.programs.foot; +in +{ + options.my.programs.foot.enable = mkEnableOption "foot"; + + config = mkIf cfg.enable { + home-manager.users.moritz = { + # HACK: to make foot server work + systemd.user.services.foot.Service.Environment = lib.mkForce "PATH=/run/current-system/sw/bin/"; + programs.foot = { + enable = true; + settings = { + main = { + term = "xterm-256color"; + font = "FiraCode Nerd Font:size=10"; + }; + colors = { + alpha = 0.98; + }; + }; + }; + }; + }; +} diff --git a/modules/programs/hyprland/_config.nix b/modules/programs/hyprland/_config.nix index 4ea8616..651a896 100644 --- a/modules/programs/hyprland/_config.nix +++ b/modules/programs/hyprland/_config.nix @@ -119,7 +119,7 @@ in # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # Firefox Sharing Indicator - ${mkRules ["float" "move 49% 40" "noborder" "nofullscreenrequest"] ["title:^(.*Sharing Indicator.*)$"]} + ${mkRules ["float" "move 49% 40" "noborder"] ["title:^(.*Sharing Indicator.*)$"]} # Emacs windowrulev2 = opaque, class:^(emacs)$ @@ -154,8 +154,7 @@ in bind = $mainMod , D , exec , hyprctl keyword general:layout dwindle bind = $mainMod , M , exec , hyprctl keyword general:layout master bind = $mainMod , R , exec , rofi -show combi - bind = $mainMod , RETURN , exec , kitty - bind = $mainMod SHIFT , RETURN , exec , kitty -- tmux new "ts || tn home ~" + bind = $mainMod , RETURN , exec , systemctl --user is-active --quiet foot && footclient --no-wait || foot # XF86 keys binde = , XF86AudioLowerVolume , exec , pamixer -d 5 diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index 1593b71..3b917a7 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -48,7 +48,7 @@ in ]; programs = { wallpaper.enable = true; - kitty.enable = true; + foot.enable = true; rofi.enable = true; }; wallpapers.enable = true; diff --git a/modules/programs/nix.nix b/modules/programs/nix.nix index 0e6fde9..9435552 100644 --- a/modules/programs/nix.nix +++ b/modules/programs/nix.nix @@ -38,8 +38,8 @@ in }; }; optimise.enable = mkEnableOption "nix-optimise"; - useSuper = mkEnableOption "use nix super" // { default = true; }; - useNom = mkEnableOption "use nix output monitor by default" // { default = true; }; + useSuper = mkEnableOption "use nix super"; + useNom = mkEnableOption "use nix output monitor" // { default = true; }; }; config = { diff --git a/modules/programs/nvim/plugins/coding.nix b/modules/programs/nvim/plugins/coding.nix index ea43b64..e30d50c 100644 --- a/modules/programs/nvim/plugins/coding.nix +++ b/modules/programs/nvim/plugins/coding.nix @@ -7,65 +7,18 @@ with builtins; plugin = oil-nvim; lazy = false; opts = { }; - dependencies = [ - { plugin = which-key-nvim; } - { plugin = nvim-web-devicons; } - ]; + dependencies = [{ plugin = nvim-web-devicons; }]; + } + { + plugin = lualine-nvim; + opts = { }; + dependencies = [{ plugin = nvim-web-devicons; }]; } { plugin = mini-nvim; lazy = false; conf = readFile ./lua/mini-nvim.lua; } - { - plugin = trouble-nvim; - cmd = [ "TodoTelescope" ]; - keys = [ - { - key = "cD"; - cmd = "TroubleToggle document_diagnostics"; - desc = "Document Diagnostics (Trouble)"; - } - { - key = "cW"; - cmd = "TroubleToggle workspace_diagnostics"; - desc = "Workspace Diagnostics (Trouble)"; - } - { key = "cl"; cmd = "TroubleToggle loclist"; desc = "Location List (Trouble)"; } - { key = "cq"; cmd = "TroubleToggle quickfix"; desc = "Quickfix List (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 = nvim-web-devicons; } - ]; - } { plugin = nvim-cmp; keys = [ @@ -106,6 +59,7 @@ with builtins; conf = readFile ./lua/nvim-lspconfig.lua; dependencies = [ { + # TODO: add all required tools to neovim or silence warnings plugin = pkgs.vimPlugins.null-ls-nvim.overrideAttrs (_: { version = lib.my.mkVersionInput inputs.none-ls-nvim; src = inputs.none-ls-nvim; @@ -118,17 +72,6 @@ with builtins; } { 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 = { @@ -174,6 +117,9 @@ with builtins; "GDelete" "GBrowse" ]; + keys = [ + { key = "gg"; cmd = "Gedit :"; desc = "Open Status"; } + ]; } { plugin = vim-tmux-navigator; @@ -236,39 +182,6 @@ with builtins; 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 = conform-nvim; keys = [ diff --git a/modules/programs/nvim/plugins/lua/conform.lua b/modules/programs/nvim/plugins/lua/conform.lua index a7156e7..2675177 100644 --- a/modules/programs/nvim/plugins/lua/conform.lua +++ b/modules/programs/nvim/plugins/lua/conform.lua @@ -11,10 +11,19 @@ local formatters_by_ft = { sh = { "shfmt" }, toml = { "taplo" }, yaml = { "yamlfix" }, + gleam = { "gleam" }, } conform.setup({ formatters_by_ft = formatters_by_ft, + formatters = { + gleam = { + command = "gleam", + args = { "format", "--stdin" }, + stdin = true, + cwd = require("conform.util").root_file({ "gleam.toml" }), + }, + }, }) vim.api.nvim_create_user_command("Format", function(opts) diff --git a/modules/programs/nvim/plugins/lua/mini-nvim.lua b/modules/programs/nvim/plugins/lua/mini-nvim.lua index 2a33821..9cbe157 100644 --- a/modules/programs/nvim/plugins/lua/mini-nvim.lua +++ b/modules/programs/nvim/plugins/lua/mini-nvim.lua @@ -1,47 +1 @@ require("mini.align").setup() -require("mini.move").setup() - -require("mini.statusline").setup({ - content = { - active = function() - local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 }) - local git = MiniStatusline.section_git({ trunc_width = 75 }) - local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 }) - local filename = MiniStatusline.section_filename({ trunc_width = 140 }) - local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 }) - local location = MiniStatusline.section_location({ trunc_width = 75 }) - local mode_hl_inverse = mode_hl .. "Inverse" - -- Usage of `MiniStatusline.combine_groups()` ensures highlighting and - -- correct padding with spaces between groups (accounts for 'missing' - -- sections, etc.) - return MiniStatusline.combine_groups({ - { hl = mode_hl_inverse, strings = {} }, - "", - { hl = mode_hl, strings = { mode } }, - { hl = "MiniStatuslineDevinfo", strings = { git, diagnostics } }, - "%<", -- Mark general truncate point - { hl = "MiniStatuslineFilename", strings = { filename } }, - "%=", -- End left alignment - { hl = "MiniStatuslineFileinfo", strings = { fileinfo } }, - { hl = mode_hl, strings = { location } }, - { hl = mode_hl_inverse, strings = {} }, - "", - }) - end, - }, -}) -local MiniStatuslineModes = { - "MiniStatuslineModeInsert", - "MiniStatuslineModeNormal", - "MiniStatuslineModeReplace", - "MiniStatuslineModeVisual", - "MiniStatuslineModeCommand", - "MiniStatuslineModeOther", -} -for _, mode_hl in ipairs(MiniStatuslineModes) do - local hl_table = vim.api.nvim_get_hl(0, { name = mode_hl }) - local fg = hl_table.fg - hl_table.fg = hl_table.bg - hl_table.bg = fg - vim.api.nvim_set_hl(0, mode_hl .. "Inverse", hl_table) -end diff --git a/modules/programs/nvim/plugins/lua/nvim-cmp.lua b/modules/programs/nvim/plugins/lua/nvim-cmp.lua index 19d9ffe..04b3daa 100644 --- a/modules/programs/nvim/plugins/lua/nvim-cmp.lua +++ b/modules/programs/nvim/plugins/lua/nvim-cmp.lua @@ -28,7 +28,7 @@ cmp.setup({ [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item({ behavior = cmp.SelectBehavior.Select }) - elseif luasnip.jumpable(1) then + elseif luasnip.locally_jumpable(1) then luasnip.jump(1) else fallback() @@ -37,7 +37,7 @@ cmp.setup({ [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item({ behavior = cmp.SelectBehavior.Select }) - elseif luasnip.jumpable(-1) then + elseif luasnip.locally_jumpable(-1) then luasnip.jump(-1) else fallback() diff --git a/modules/programs/nvim/plugins/snippets/gleam.lua b/modules/programs/nvim/plugins/snippets/gleam.lua new file mode 100644 index 0000000..94835bb --- /dev/null +++ b/modules/programs/nvim/plugins/snippets/gleam.lua @@ -0,0 +1,120 @@ +local ls = require("luasnip") +local s = ls.snippet +local sn = ls.snippet_node +local isn = ls.indent_snippet_node +local t = ls.text_node +local i = ls.insert_node +local f = ls.function_node +local c = ls.choice_node +local d = ls.dynamic_node +local r = ls.restore_node +local events = require("luasnip.util.events") +local ai = require("luasnip.nodes.absolute_indexer") +local extras = require("luasnip.extras") +local l = extras.lambda +local rep = extras.rep +local p = extras.partial +local m = extras.match +local n = extras.nonempty +local dl = extras.dynamic_lambda +local fmt = require("luasnip.extras.fmt").fmt +local fmta = require("luasnip.extras.fmt").fmta +local conds = require("luasnip.extras.expand_conditions") +local postfix = require("luasnip.extras.postfix").postfix +local types = require("luasnip.util.types") +local parse = require("luasnip.util.parser").parse_snippet +local ms = ls.multi_snippet +local k = require("luasnip.nodes.key_indexer").new_key +local matches = require("luasnip.extras.postfix").matches + +local case_template = [[ +case {expression} {{ + {pattern1} -> {result1} + {pattern2} -> {result2}{final} +}} +]] + +local dot_case = postfix({ filetype = "gleam", trig = ".case", match_pattern = matches.line }, { + d(1, function(_, parent) + return sn( + 1, + fmt(case_template, { + expression = t(parent.env.POSTFIX_MATCH), + pattern1 = i(1, "pattern"), + result1 = i(2, "todo"), + pattern2 = i(3, "_"), + result2 = i(4, "todo"), + final = i(0), + }) + ) + end), +}) + +local case = s( + { filetype = "gleam", trig = "case" }, + fmt(case_template, { + expression = i(1), + pattern1 = i(2), + result1 = i(3, "todo"), + pattern2 = i(4, "_"), + result2 = i(5, "todo"), + final = i(0), + }) +) + +local fn_template = [[ +fn {name}({args}) -> {rtype} {{ + {body} +}} +]] + +local fn = s( + { filetype = "gleam", trig = "fn" }, + fmt(fn_template, { + name = i(1), + args = i(2), + rtype = i(3), + body = i(0), + }) +) + +local pfn = s( + { filetype = "gleam", trig = "pfn" }, + fmt("pub " .. fn_template, { + name = i(1), + args = i(2), + rtype = i(3), + body = i(0), + }) +) + +local type_template = [[ +type {name} {{ + {body} +}} +]] + +local type = s( + { filetype = "gleam", trig = "type" }, + fmt(type_template, { + name = i(1), + body = i(0), + }) +) + +local ptype = s( + { filetype = "gleam", trig = "ptype" }, + fmt("pub " .. type_template, { + name = i(1), + body = i(0), + }) +) + +return { + case, + dot_case, + fn, + pfn, + type, + ptype, +} diff --git a/modules/programs/nvim/plugins/treesitter.nix b/modules/programs/nvim/plugins/treesitter.nix index 8401f9f..2ba777c 100644 --- a/modules/programs/nvim/plugins/treesitter.nix +++ b/modules/programs/nvim/plugins/treesitter.nix @@ -65,15 +65,5 @@ with builtins; ]; } ) - { - plugin = nvim-treesitter-textsubjects; - event = [ "BufReadPost" "BufNewFile" ]; - conf = readFile ./lua/nvim-treesitter-textsubjects.lua; - } - { - plugin = nvim-treesitter-context; - event = [ "BufReadPost" "BufNewFile" ]; - opts = { }; - } ]; } diff --git a/modules/programs/nvim/plugins/ui.nix b/modules/programs/nvim/plugins/ui.nix index c44ce9b..96e28c2 100644 --- a/modules/programs/nvim/plugins/ui.nix +++ b/modules/programs/nvim/plugins/ui.nix @@ -16,30 +16,9 @@ with builtins; } { plugin = todo-comments-nvim; - event = [ "BufReadPost" "BufNewFile" ]; dependencies = [{ plugin = plenary-nvim; }]; opts = { }; } - { - plugin = pkgs.vimPlugins.statuscol-nvim.overrideAttrs (_: { - version = lib.my.mkVersionInput inputs.statuscol-nvim; - src = inputs.statuscol-nvim; - }); - event = [ "VeryLazy" ]; - conf = readFile ./lua/statuscol-nvim.lua; - } - { - plugin = pkgs.vimUtils.buildVimPlugin { - pname = "smartcolumn-nvim"; - version = lib.my.mkVersionInput inputs.smartcolumn-nvim; - src = inputs.smartcolumn-nvim; - }; - event = [ "BufReadPost" "BufNewFile" ]; - opts = { - colorcolumn = "120"; - disabled_filetypes = [ "help" "text" "markdown" "dashboard" ]; - }; - } { plugin = dressing-nvim; event = [ "VeryLazy" ]; diff --git a/modules/programs/river/default.nix b/modules/programs/river/default.nix new file mode 100644 index 0000000..c0ae02d --- /dev/null +++ b/modules/programs/river/default.nix @@ -0,0 +1,302 @@ +{ config +, lib +, pkgs +, inputs +, ... +} @ args: + +with lib; +let + cfg = config.my.programs.river; +in +{ + options.my.programs.river = { + enable = mkEnableOption "river"; + keyboardLayouts = mkOption { + type = types.listOf types.str; + description = "list of keyboard layouts"; + default = [ "de" "us" ]; + }; + nvidiaSupport = mkEnableOption "nvidiaSupport"; + }; + + config = mkIf cfg.enable { + programs.river.enable = true; + my = { + programs = { + wallpaper.enable = true; + foot.enable = true; + tofi.enable = true; + }; + wallpapers.enable = true; + services = { + dunst.enable = true; + wallpaper = { + enable = true; + target = "river-session.target"; + }; + spotify-player.target = "river-session.target"; + }; + }; + + home-manager.users.moritz = { + home.packages = with pkgs; [ + rivercarro + ]; + services.kanshi = { + enable = true; + systemdTarget = "river-session.target"; + }; + wayland.windowManager.river = { + enable = true; + package = pkgs.river.overrideAttrs (old: { + src = inputs.river; + version = lib.my.mkVersionInput inputs.river; + # HACK: to change wlroots to 0.17.x + buildInputs = with pkgs; [ + libGL + libevdev + libinput + libxkbcommon + pixman + udev + wayland-protocols + wlroots_0_17 + xorg.libX11 + ]; + }); + settings = { + border-width = 2; + declare-mode = [ + "locked" + "normal" + "passthrough" + ]; + map = { + normal = { + "Super Q" = "close"; + "Super Return" = ''spawn "systemctl --user is-active --quiet foot && footclient --no-wait || foot"''; + "Super+Shift Return" = "spawn foot"; + "Super R" = ''spawn 'exec $(tofi-run --fuzzy-match=true)' ''; + "Super W" = ''spawn "pkill -USR1 waybar"''; + "Super+Shift R" = "spawn ~/.config/river/init"; + + # Focus view + "Super J" = "focus-view next"; + "Super K" = "focus-view previous"; + + # swap the focused view + "Super+Shift J" = "swap next"; + "Super+Shift K" = "swap previous"; + + # focus output + "Super Period" = "focus-output next"; + "Super Comma" = "focus-output previous"; + + # send to output + "Super+Shift Period" = "send-to-output next"; + "Super+Shift Comma" = "send-to-output previous"; + + # bump in layout stack + "Super Z" = "zoom"; + + } // + # tags + ( + let + numbers = range 1 9; + toTag = num: "$((1 << (${toString num} - 1)))"; + + mkMappings = num: + let + numStr = toString num; + tag = toTag num; + in + [ + # Super+Control+[1-9] to toggle focus of tag [0-8] + { name = "Super ${numStr}"; value = "toggle-focused-tags ${tag}"; } + + # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view + { name = "Super+Shift ${numStr}"; value = "toggle-view-tags ${tag}"; } + ]; + mappings = flatten (map mkMappings numbers); + in + listToAttrs mappings + ); + }; + map-pointer = { + normal = { + "Super BTN_LEFT" = "move-view"; + "Super BTN_RIGHT" = "resize-view"; + "Super BTN_MIDDLE" = "toggle-float"; + }; + }; + attach-mode = "bottom"; + default-layout = "rivercarro"; + focus-follows-cursor = "normal"; + hide-cursor = { + timeout = "1500"; + when-typing = "enabled"; + }; + set-cursor-warp = "on-focus-change"; + }; + extraConfig = /* bash */ '' + rivercarro_pid="$(pidof rivercarro)" + if [[ -z $rivercarro_pid ]]; then + rivercarro -inner-gaps 4 -outer-gaps 4 & + fi + ''; + }; + + # add waybar as a status bar + programs.waybar = { + enable = true; + + # start using systemd service + systemd = { + enable = true; + target = "river-session.target"; + }; + + settings = { + mainBar = { + start_hidden = true; + layer = "top"; + position = "top"; + height = 20; + modules-left = [ "river/tags" ]; + modules-center = [ "river/window" ]; + modules-right = [ "network" "memory" "cpu" "battery" "clock" ]; + }; + }; + style = '' + #tags button.focused { + color: #ffffff + } + ''; + }; + + # lock screen after timeout + programs.swaylock = { + enable = true; + settings = { + color = "000000"; + }; + }; + services.swayidle = { + enable = true; + events = [ + { + event = "before-sleep"; + command = "${getExe pkgs.swaylock} -fF"; + } + { + event = "lock"; + command = "${getExe pkgs.swaylock} -fF"; + } + ]; + timeouts = + let + lockTimeout = 10; + in + [ + { + timeout = lockTimeout * 60 - 10; + command = "${pkgs.libnotify}/bin/notify-send 'Locking screen!'"; + } + { + timeout = lockTimeout * 60 + 10; + command = "${pkgs.systemd}/bin/loginctl lock-session"; + } + ]; + systemdTarget = "river-session.target"; + }; + }; + + # adds pam module for swaylock + security.pam.services.swaylock = { }; + + # add user packages for wayland and hyprland in particular + users.users.moritz.packages = with pkgs; [ + brightnessctl # control brightness + grimblast # screenshot tool for hyprland + pamixer # pulse audio cli + playerctl # control media playback + slurp # region select for wayland (for screensharing) + wdisplays # manage monitors + wl-clipboard # clipboard tool for wayland + ]; + + + # additional environment variables + environment.sessionVariables = + { + XDG_CURRENT_DESKTOP = "river"; + XDG_SESSION_TYPE = "wayland"; + XDG_SESSION_DESKTOP = "river"; + QT_AUTO_SCREEN_SCALE_FACTOR = "1"; + QT_QPA_PLATFORM = "wayland;xcb"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + QT_QPA_PLATFORMTHEME = "qt5ct"; + _JAVA_AWT_WM_NONEREPARENTING = "1"; + } // (optionalAttrs cfg.nvidiaSupport + { + GBM_BACKEND = "nvidia-drm"; + GDK_BACKEND = "wayland"; + LIBVA_DRIVER_NAME = "nvidia"; + MOZ_ENABLE_WAYLAND = "1"; + WLR_DRM_DEVICES = "/dev/dri/card0"; + WLR_DRM_NO_ATOMIC = "1"; + WLR_NO_HARDWARE_CURSORS = "1"; + XDG_CURRENT_DESKTOP = "river"; + _GL_GSYNC_ALLOWED = "0"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + __GL_VRR_ALLOWED = "0"; + }); + + services = { + dbus.enable = true; + # use pipewire (needed for screensharing) + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + xserver = { + enable = true; + displayManager = { + lightdm.enable = true; + autoLogin = { + enable = true; + user = "moritz"; + }; + defaultSession = "river"; + }; + }; + }; + security.rtkit.enable = true; + + home-manager.users.moritz.systemd.user.services = + let + units = [ "waybar" ]; + mkAfter = _: { + Unit = { + After = [ "river-session.target" ]; + Wants = [ "river-session.target" ]; + }; + }; + in + genAttrs units mkAfter; + + systemd.user.services = + let + units = [ "pipewire" "xdg-desktop-portal" "wireplumber" ]; + mkAfter = _: { + after = [ "river-session.target" ]; + wants = [ "river-session.target" ]; + }; + in + genAttrs units mkAfter; + }; +} diff --git a/modules/programs/tofi.nix b/modules/programs/tofi.nix new file mode 100644 index 0000000..54913ca --- /dev/null +++ b/modules/programs/tofi.nix @@ -0,0 +1,44 @@ +{ config +, lib +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.programs.tofi; + + configText = + let + settingsStrings = mapAttrsToList (name: value: "${name} = ${value}") cfg.settings; + in + concatLines settingsStrings; +in +{ + options.my.programs.tofi = { + enable = mkEnableOption "tofi"; + settings = mkOption { + type = with types; attrsOf str; + default = { }; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + (lib.mkIf config.networking.networkmanager.enable networkmanager_dmenu) + # (lib.mkIf config.hardware.bluetooth.enable rofi-bluetooth) + # rofi-power-menu + ]; + home-manager.users.moritz = { + home.packages = with pkgs; [ tofi ]; + xdg = { + enable = true; + configFile."tofi/config".text = configText; + configFile."networkmanager-dmenu/config.ini".text = '' + [dmenu] + dmenu_command = tofi + ''; + }; + }; + }; +} diff --git a/modules/programs/wallpaper/default.nix b/modules/programs/wallpaper/default.nix index 2fdec75..cd7a7c4 100644 --- a/modules/programs/wallpaper/default.nix +++ b/modules/programs/wallpaper/default.nix @@ -8,7 +8,14 @@ let script = pkgs.writeShellApplication { name = "wallpaper"; - runtimeInputs = with pkgs; [ findutils coreutils feh swaybg fzf viu ]; + runtimeInputs = with pkgs; [ + findutils + coreutils + feh + swaybg + fzf + (viu.override { withSixel = true; }) + ]; text = builtins.readFile ./wallpaper.sh; }; in