diff --git a/flake.lock b/flake.lock index 5360f45..bb69c6b 100644 --- a/flake.lock +++ b/flake.lock @@ -37,11 +37,11 @@ ] }, "locked": { - "lastModified": 1772292445, - "narHash": "sha256-4F1Q7U313TKUDDovCC96m/Za4wZcJ3yqtu4eSrj8lk8=", + "lastModified": 1776876344, + "narHash": "sha256-Ubqb/agkuMJK+k19gjQgHux/eOYRc1sRGoOZOho8+VY=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "1dbbba659c1cef0b0202ce92cadfe13bae550e8f", + "rev": "648a13d0ee1e03a843b3e145b8ece15393058701", "type": "github" }, "original": { @@ -76,11 +76,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1770895252, - "narHash": "sha256-TUGZVDcC5xsrWVnpBNosAG1cTy+aWchCWXPyeLZdnGM=", + "lastModified": 1777136912, + "narHash": "sha256-owyQdC2vi0kYC119fzyVQp0J4G0t1n4xXUwryhlBbqA=", "ref": "refs/heads/main", - "rev": "2c86d41d07471f518e24f5cd1f586e4d2a32d12c", - "revCount": 1331, + "rev": "f66e12a76dbc4c669b2f1375f78bce49f5b19d66", + "revCount": 1363, "type": "git", "url": "https://codeberg.org/LGFae/awww" }, @@ -98,11 +98,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1772820255, - "narHash": "sha256-vdktxEQihZUcKiwbaYCBl8LuTrJZULpjwqtJyBzXBN8=", + "lastModified": 1777746826, + "narHash": "sha256-fAbcHwnhw294NL+a+2E2bidNiaxhM935RrsJLqKcnc4=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "aada771f510dbd9ac48614cc7b4b21a292989d3a", + "rev": "26aa2e8f054184252d08558290471a397164aeff", "type": "github" }, "original": { @@ -114,11 +114,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1772644657, - "narHash": "sha256-7zQSBFv9gFeYhe65NchqLLste7mJ396jA1OnNcf+OQQ=", + "lastModified": 1777639499, + "narHash": "sha256-EyELzah58EHIADP4siMoSzsCOPd71bZkmlVpcUb9Oi8=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "ff5ccc4fa26d5272d929fb9c1838593a6347ca10", + "rev": "1c6414dbda46c13abcb951ef6c5a790cb9e157ea", "type": "github" }, "original": { @@ -130,11 +130,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1772731186, - "narHash": "sha256-y70pS9Cma7+WCsni3VTacHh9g/udulmBS6zrYE2Fz64=", + "lastModified": 1777306094, + "narHash": "sha256-YNvqoVdMe/SqXm91cpCA6mVOigK3Zzoab6HPvMiqGqo=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "eac8168ee15f742547d4d20ba5c7fea283f23019", + "rev": "9bcd294d660c932f55f732d951ee79ea707f64f3", "type": "github" }, "original": { @@ -146,29 +146,29 @@ "cerulean": { "inputs": { "deploy-rs": "deploy-rs", + "home-manager": "home-manager", "microvm": "microvm", "nixpkgs": [ "nixpkgs" ], "nt": "nt", - "sops-nix": "sops-nix", "systems": [ "systems" ] }, "locked": { - "lastModified": 1773744164, - "narHash": "sha256-dGupwWUL9YPvC0/m4maCRD9psomWhFr/JAsGnC9toQM=", - "owner": "cry128", - "repo": "cerulean", - "rev": "e7fdbf416ccb3e7e6bf30042e4aacd065983ddad", - "type": "github" + "lastModified": 1771409623, + "narHash": "sha256-1IhHueuQTVCVrui700IP9DfLXwb3kU2rnEWPSdxQY0k=", + "ref": "refs/heads/main", + "rev": "d5211287bd3cb96078f2053488d67d557848a8f2", + "revCount": 176, + "type": "git", + "url": "https://tearforge.net/cry/cerulean" }, "original": { - "owner": "cry128", - "ref": "v0.2.6-alpha", - "repo": "cerulean", - "type": "github" + "rev": "d5211287bd3cb96078f2053488d67d557848a8f2", + "type": "git", + "url": "https://tearforge.net/cry/cerulean" } }, "crane": { @@ -213,11 +213,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1770019181, - "narHash": "sha256-hwsYgDnby50JNVpTRYlF3UR/Rrpt01OrxVuryF40CFY=", + "lastModified": 1766051518, + "narHash": "sha256-znKOwPXQnt3o7lDb3hdf19oDo0BLP4MfBOYiWkEHoik=", "owner": "serokell", "repo": "deploy-rs", - "rev": "77c906c0ba56aabdbc72041bf9111b565cdd6171", + "rev": "d5eff7f948535b9c723d60cd8239f8f11ddc90fa", "type": "github" }, "original": { @@ -234,11 +234,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1772780947, - "narHash": "sha256-cblRAy3ctJniRFaSLpqYeHor+RJhkptPZNMUc4Sl+v4=", + "lastModified": 1777796307, + "narHash": "sha256-L7xLjorTwVf2aLu5b0ZZY2D0RFXwD/a/a/fFFDikB2w=", "owner": "nix-community", "repo": "fenix", - "rev": "26a5e59df51222c849deb63c9196ac6d7a531535", + "rev": "0f9881f2344c0b1c100bd9e774555759b7da6fd5", "type": "github" }, "original": { @@ -352,11 +352,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1772408722, - "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", + "lastModified": 1777678872, + "narHash": "sha256-EPIFsulyon7Z1vLQq5Fk64GR8L7cQsT+IPhcsukVbgk=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", + "rev": "5250617bffd85403b14dbf43c3870e7f255d2c16", "type": "github" }, "original": { @@ -408,7 +408,10 @@ }, "flake-parts_4": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" + "nixpkgs-lib": [ + "mcsr", + "nixpkgs" + ] }, "locked": { "lastModified": 1772408722, @@ -424,6 +427,24 @@ "type": "github" } }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1777678872, + "narHash": "sha256-EPIFsulyon7Z1vLQq5Fk64GR8L7cQsT+IPhcsukVbgk=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "5250617bffd85403b14dbf43c3870e7f255d2c16", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems_4" @@ -484,15 +505,16 @@ "home-manager": { "inputs": { "nixpkgs": [ + "cerulean", "nixpkgs" ] }, "locked": { - "lastModified": 1772633058, - "narHash": "sha256-SO7JapRy2HPhgmqiLbfnW1kMx5rakPMKZ9z3wtRLQjI=", + "lastModified": 1777771528, + "narHash": "sha256-YycygK6n7KeW1YCobdFJcORWzkmrvNcp6xT+IovA0d4=", "owner": "nix-community", "repo": "home-manager", - "rev": "080657a04188aca25f8a6c70a0fb2ea7e37f1865", + "rev": "0585fbf645640973e3398863bbaf3bd1ddce4a51", "type": "github" }, "original": { @@ -509,11 +531,11 @@ ] }, "locked": { - "lastModified": 1772807318, - "narHash": "sha256-Qjw6ILt8cb2HQQpCmWNLMZZ63wEo1KjTQt+1BcQBr7k=", + "lastModified": 1777780644, + "narHash": "sha256-CYpc+mk28rmcQWGygeM8CA+Z8SZYy8BOyQtiW18spao=", "owner": "nix-community", "repo": "home-manager", - "rev": "daa2c221320809f5514edde74d0ad0193ad54ed8", + "rev": "b9311028044a9e9b2cf27db15ef0a87d464e212d", "type": "github" }, "original": { @@ -523,6 +545,48 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777771528, + "narHash": "sha256-YycygK6n7KeW1YCobdFJcORWzkmrvNcp6xT+IovA0d4=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "0585fbf645640973e3398863bbaf3bd1ddce4a51", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.11", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "zen", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776184304, + "narHash": "sha256-No6QGBmIv5ChiwKCcbkxjdEQ/RO2ZS1gD7SFy6EZ7rc=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "3c7524c68348ef79ce48308e0978611a050089b2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "hyprcursor": { "inputs": { "hyprlang": [ @@ -539,11 +603,11 @@ ] }, "locked": { - "lastModified": 1753964049, - "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "lastModified": 1776511930, + "narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "rev": "39435900785d0c560c6ae8777d29f28617d031ef", "type": "github" }, "original": { @@ -568,11 +632,11 @@ ] }, "locked": { - "lastModified": 1770511807, - "narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=", + "lastModified": 1776426399, + "narHash": "sha256-RUESLKNikIeEq9ymGJ6nmcDXiSFQpUW1IhJ245nL3xM=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "7c75487edd43a71b61adb01cae8326d277aab683", + "rev": "68d064434787cf1ed4a2fe257c03c5f52f33cf84", "type": "github" }, "original": { @@ -600,11 +664,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1772833450, - "narHash": "sha256-XuuvhTD/72mH8MBncTeOyN0JzLCtwav7lkwBQlIofd4=", + "lastModified": 1777759969, + "narHash": "sha256-7KSqSehOHNHQfM0sRAcGQbfz0vDuItox8i61X8/nzYw=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "4152ac76d0813d9d0f67d2f04653a13fa6e17433", + "rev": "6ec0228c38a6203e4789fe7e7e793a558521c109", "type": "github" }, "original": { @@ -646,11 +710,11 @@ ] }, "locked": { - "lastModified": 1767023960, - "narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=", + "lastModified": 1776426575, + "narHash": "sha256-KI6nIfVihn/DPaeB5Et46Xg3dkNHrrEtUd5LBBVomB0=", "owner": "hyprwm", "repo": "hyprland-guiutils", - "rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660", + "rev": "a968d211048e3ed538e47b84cb3649299578f19d", "type": "github" }, "original": { @@ -659,36 +723,6 @@ "type": "github" } }, - "hyprland-plugins": { - "inputs": { - "hyprland": [ - "hyprland-git" - ], - "nixpkgs": [ - "hyprland-plugins", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland-plugins", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1771865848, - "narHash": "sha256-xwNa+1D8WPsDnJtUofDrtyDCZKZotbUymzV/R5s+M0I=", - "owner": "hyprwm", - "repo": "hyprland-plugins", - "rev": "b85a56b9531013c79f2f3846fd6ee2ff014b8960", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-plugins", - "type": "github" - } - }, "hyprland-protocols": { "inputs": { "nixpkgs": [ @@ -701,11 +735,11 @@ ] }, "locked": { - "lastModified": 1765214753, - "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", + "lastModified": 1772460177, + "narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", + "rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917", "type": "github" }, "original": { @@ -730,11 +764,11 @@ ] }, "locked": { - "lastModified": 1771866172, - "narHash": "sha256-fYFoXhQLrm1rD8vSFKQBOEX4OGCuJdLt1amKfHd5GAw=", + "lastModified": 1776426736, + "narHash": "sha256-rl7i4aY+9p8LysJp7o8uRWahCkpFznCgGHXszlTw7b0=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "0b219224910e7642eb0ed49f0db5ec3d008e3e41", + "rev": "7833ff33b2e82d3406337b5dcf0d1cec595d83e9", "type": "github" }, "original": { @@ -782,11 +816,11 @@ ] }, "locked": { - "lastModified": 1764592794, - "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "lastModified": 1772462885, + "narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=", "owner": "hyprwm", "repo": "hyprtoolkit", - "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "rev": "9af245a69fa6b286b88ddfc340afd288e00a6998", "type": "github" }, "original": { @@ -807,11 +841,11 @@ ] }, "locked": { - "lastModified": 1771271487, - "narHash": "sha256-41gEiUS0Pyw3L/ge1l8MXn61cK14VAhgWB/JV8s/oNI=", + "lastModified": 1777492286, + "narHash": "sha256-PwuoEJQcjSKJNP5T55qhfDwIP0tw5zxEhfu8GDfKfeg=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "340a792e3b3d482c4ae5f66d27a9096bdee6d76d", + "rev": "ec5c0c709706bad5b82f667fd8758eae442577ce", "type": "github" }, "original": { @@ -832,11 +866,11 @@ ] }, "locked": { - "lastModified": 1770501770, - "narHash": "sha256-NWRM6+YxTRv+bT9yvlhhJ2iLae1B1pNH3mAL5wi2rlQ=", + "lastModified": 1777148232, + "narHash": "sha256-Uv0WZLhu89SafuSOmYDA7akrPt4wBRmsa1ucasO5aXg=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "0bd8b6cde9ec27d48aad9e5b4deefb3746909d40", + "rev": "fec9cf1abcc1011e46f0a0986f46bf93c6bf8b92", "type": "github" }, "original": { @@ -861,11 +895,11 @@ ] }, "locked": { - "lastModified": 1771606233, - "narHash": "sha256-F3PLUqQ/TwgR70U+UeOqJnihJZ2EuunzojYC4g5xHr0=", + "lastModified": 1776728575, + "narHash": "sha256-z9eGphrArEBpl1O/GCH0wlY6z4K9vA6yWh2gAS6qytU=", "owner": "hyprwm", "repo": "hyprwire", - "rev": "06c7f1f8c4194786c8400653c4efc49dc14c0f3a", + "rev": "f3a80888783702a39691b684d099e16b83ed4702", "type": "github" }, "original": { @@ -884,11 +918,11 @@ ] }, "locked": { - "lastModified": 1768868561, - "narHash": "sha256-nvEOtV1Y5K9E1Lj+bPnQ6k1AneDM9OT3RbV3Urm/1Qs=", + "lastModified": 1776390028, + "narHash": "sha256-N/CV6Ldg1PmGNclROSR0qZ2wPwcxkxuPGF7uc34tQnM=", "owner": "ulyssa", "repo": "iamb", - "rev": "93fc47d019cd6a9d56f163aa6ba819ef1fd309d6", + "rev": "b10c98588bd9b22a83dd1275fbf797023aba4117", "type": "github" }, "original": { @@ -991,19 +1025,38 @@ "scenefx": "scenefx" }, "locked": { - "lastModified": 1772792509, - "narHash": "sha256-c2X+x/D8txqV5UaN6TYYh9PEXyMaWVZl4mAQ0Sl21f8=", - "owner": "DreamMaoMao", - "repo": "mangowc", - "rev": "9a17a0279c39b330d155d50282d1d2641d519dc3", + "lastModified": 1776999768, + "narHash": "sha256-RP7eVqbnQ/uNCXh0HH8SXRIerMlkyHco+wpI9oxon0U=", + "owner": "mangowm", + "repo": "mango", + "rev": "b9c6a2c1964cb59536c5d3e02d2ff981a7eb36d2", "type": "github" }, "original": { - "owner": "DreamMaoMao", - "repo": "mangowc", + "owner": "mangowm", + "repo": "mango", "type": "github" } }, + "mcsr": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": [ + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1777502373, + "narHash": "sha256-vK+Us7fQoCMJ9uAxQIo/rYvXBgAzmZkzX6i7kHpQ3Gw=", + "rev": "1f24f320429cabee34f119178eecb4df34a19662", + "type": "tarball", + "url": "https://git.uku3lig.net/api/v1/repos/uku/mcsr-nixos/archive/1f24f320429cabee34f119178eecb4df34a19662.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://git.uku3lig.net/uku/mcsr-nixos/archive/main.tar.gz" + } + }, "microvm": { "inputs": { "nixpkgs": [ @@ -1013,11 +1066,11 @@ "spectrum": "spectrum" }, "locked": { - "lastModified": 1773018425, - "narHash": "sha256-fpgZBmZpKoEXEowBK/6m8g9FcOLWQ4UxhXHqCw2CpSM=", + "lastModified": 1776340739, + "narHash": "sha256-s4FDictJlPtY6Shd6scG5hgrDMiHth09+svtvTA5NLA=", "owner": "microvm-nix", "repo": "microvm.nix", - "rev": "25ebda3c558e923720c965832dc9a04f559a055c", + "rev": "2f2f62fdfdca2750e3399f66bd03986ab967e5ca", "type": "github" }, "original": { @@ -1034,11 +1087,11 @@ "spectrum": "spectrum_2" }, "locked": { - "lastModified": 1772742184, - "narHash": "sha256-zGnRxJQZ8wZTwvSxF4SAGoefbta15/W032tK22uIF2E=", + "lastModified": 1776340739, + "narHash": "sha256-s4FDictJlPtY6Shd6scG5hgrDMiHth09+svtvTA5NLA=", "owner": "microvm-nix", "repo": "microvm.nix", - "rev": "a257ca90febb686c75826918f9f8876d74f875eb", + "rev": "2f2f62fdfdca2750e3399f66bd03986ab967e5ca", "type": "github" }, "original": { @@ -1203,11 +1256,11 @@ }, "nixcats": { "locked": { - "lastModified": 1770584904, - "narHash": "sha256-9Zaz8lbKF2W9pwXZEnbiGsicHdBoU+dHt3Wv3mCJoZ8=", + "lastModified": 1777273601, + "narHash": "sha256-xBUa8Tl9V7IXI+VmLEuDc81La/EhoSn1C3EVSnJ3cfU=", "owner": "BirdeeHub", "repo": "nixCats-nvim", - "rev": "538fdde784d2909700d97a8ef307783b33a86fb1", + "rev": "f69ea013e328841a7def7037ed59788a76be8816", "type": "github" }, "original": { @@ -1219,17 +1272,18 @@ "nixcord": { "inputs": { "flake-compat": "flake-compat_5", - "flake-parts": "flake-parts_4", + "flake-parts": "flake-parts_5", "nixpkgs": [ "nixpkgs" - ] + ], + "nixpkgs-nixcord": "nixpkgs-nixcord" }, "locked": { - "lastModified": 1772813986, - "narHash": "sha256-x0fD+LL+O99p36c2UnjnHvVq4/7TvGH/8G5lTNIJBCo=", + "lastModified": 1777740049, + "narHash": "sha256-O8rXPZaARIjp4fh20wkeRWeElYbp4Dgp8pKk3Ikkj40=", "owner": "FlameFlag", "repo": "nixcord", - "rev": "e433a2919eb9b3a8c85ab3017c08685816e63a66", + "rev": "853aa014283c1d3e58df7213c36d3a739cab1b6f", "type": "github" }, "original": { @@ -1240,11 +1294,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1772774498, - "narHash": "sha256-85HBHBEzVRQ0ZRe6u3E2snUvAyTr5mSvi5m2vl4HExo=", + "lastModified": 1777718177, + "narHash": "sha256-qq56SczKpUNKcm8xdOsXYLzaX37p1bLS0fFaCMB7s3Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "943ba5b1a58e68eb9a2c284ba6e3b30ebfe45abe", + "rev": "e59d8bfa2cc42b1e1104595ac4292cfedce7f1a4", "type": "github" }, "original": { @@ -1256,11 +1310,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1772328832, - "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", + "lastModified": 1777168982, + "narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", + "rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14", "type": "github" }, "original": { @@ -1286,11 +1340,11 @@ }, "nixpkgs-lib_3": { "locked": { - "lastModified": 1772328832, - "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", + "lastModified": 1777168982, + "narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", + "rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14", "type": "github" }, "original": { @@ -1301,11 +1355,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1772820052, - "narHash": "sha256-qXEI8n+4eXT+BqMzUMuKFdkltE82TjgIceiJCpdjzD4=", + "lastModified": 1777798537, + "narHash": "sha256-hY/pzDFcznuHlaJrbc0GME7WrzUY9o44peQryT7xbFI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d78e468770f4ab5e00c5015f4d77c1a499a76dc8", + "rev": "5f49e619c2519edeafbb56a79550fdb6703d4739", "type": "github" }, "original": { @@ -1315,13 +1369,45 @@ "type": "github" } }, - "nixpkgs-staging": { + "nixpkgs-nixcord": { "locked": { - "lastModified": 1772820753, - "narHash": "sha256-Sv689sGseiqNPXGSggxrESyivroe8cgY4dxqJdBLsEc=", + "lastModified": 1777428379, + "narHash": "sha256-ypxFOeDz+CqADEQNL72haqGjvZQdBR5Vc7pyx2JDttI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e2239e5b2c5676b963d78dccbee06a9bbbdb05d6", + "rev": "755f5aa91337890c432639c60b6064bb7fe67769", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-rust": { + "locked": { + "lastModified": 1776371872, + "narHash": "sha256-hVIxbmDzNoXnzobtujvL189+YPrqr0QWF5fn+13+CtY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "838f1611dc4c0078432071819d6fffe046148813", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "838f1611dc4c0078432071819d6fffe046148813", + "type": "github" + } + }, + "nixpkgs-staging": { + "locked": { + "lastModified": 1777791170, + "narHash": "sha256-TFBAl/DxLx1VQQm5X+S/8vIDpzWPEqugfQH5/pbS8AY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c205d8fd78779c17c9665002b3445400a4173c6d", "type": "github" }, "original": { @@ -1333,11 +1419,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1772624091, - "narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=", + "lastModified": 1777578337, + "narHash": "sha256-Ad49moKWeXtKBJNy2ebiTQUEgdLyvGmTeykAQ9xM+Z4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "80bdc1e5ce51f56b19791b52b2901187931f5353", + "rev": "15f4ee454b1dce334612fa6843b3e05cf546efab", "type": "github" }, "original": { @@ -1365,11 +1451,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1772598333, - "narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=", + "lastModified": 1777428379, + "narHash": "sha256-ypxFOeDz+CqADEQNL72haqGjvZQdBR5Vc7pyx2JDttI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239", + "rev": "755f5aa91337890c432639c60b6064bb7fe67769", "type": "github" }, "original": { @@ -1386,11 +1472,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1773738366, - "narHash": "sha256-oH22HyNHEdCoCQo734sQCHUr6C0jmGQJMZ13dsgEHkk=", + "lastModified": 1770975056, + "narHash": "sha256-ZXTz/P3zUbbM6lNXzt91u8EwfNqhXpYMu8+wvFZqQHE=", "owner": "cry128", "repo": "nt", - "rev": "f32c3a726a3d608d30aaaa1df2301c1eaf5ef8f4", + "rev": "f42dcdd49a7921a7f433512e83d5f93696632412", "type": "github" }, "original": { @@ -1409,11 +1495,11 @@ ] }, "locked": { - "lastModified": 1772024342, - "narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=", + "lastModified": 1776796298, + "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476", + "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad", "type": "github" }, "original": { @@ -1445,18 +1531,19 @@ "cachyos": "cachyos", "cerulean": "cerulean", "fenix": "fenix", - "home-manager": "home-manager", + "home-manager": "home-manager_2", "home-manager-unstable": "home-manager-unstable", "hyprland-git": "hyprland-git", - "hyprland-plugins": "hyprland-plugins", "iamb": "iamb", "mango": "mango", + "mcsr": "mcsr", "microvm": "microvm_2", "millennium": "millennium", "nixcats": "nixcats", "nixcord": "nixcord", "nixpkgs": "nixpkgs_3", "nixpkgs-master": "nixpkgs-master", + "nixpkgs-rust": "nixpkgs-rust", "nixpkgs-staging": "nixpkgs-staging", "nixpkgs-unstable": "nixpkgs-unstable", "sddm-silent": "sddm-silent", @@ -1468,11 +1555,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1772701851, - "narHash": "sha256-2g4Xg+w6wx2ewn1Tv576RzDc6Uof99H8kofHWdJktEs=", + "lastModified": 1777768857, + "narHash": "sha256-zfekJcaVctfAps1KDHwZpwkvAQn7GObRHh3Gl3xocGI=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "2a8f00fb9344cc6701063192fe0aaf66ecf9d337", + "rev": "1102c0b633599564919e36076d4362d7e68dbddc", "type": "github" }, "original": { @@ -1548,11 +1635,11 @@ ] }, "locked": { - "lastModified": 1771956684, - "narHash": "sha256-+EtzmEzGA2xqwIvKrP0euYaOzrmTQWEWAiWV+k2WBEM=", + "lastModified": 1775652648, + "narHash": "sha256-mLE7i9r9qenayJ8adWm22SbqUwLuopvRhyoizuZTtyo=", "owner": "uiriansan", "repo": "SilentSDDM", - "rev": "34f82e1fb8412fff78b82a0dcce763492b36054c", + "rev": "a0fb8a48de772c0340dd6639b331ebf6ec2eb554", "type": "github" }, "original": { @@ -1561,27 +1648,6 @@ "type": "github" } }, - "sops-nix": { - "inputs": { - "nixpkgs": [ - "cerulean", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1773096132, - "narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, "spectrum": { "flake": false, "locked": { @@ -1601,11 +1667,11 @@ "spectrum_2": { "flake": false, "locked": { - "lastModified": 1759482047, - "narHash": "sha256-H1wiXRQHxxPyMMlP39ce3ROKCwI5/tUn36P8x6dFiiQ=", + "lastModified": 1772189877, + "narHash": "sha256-i1p90Rgssb//aNiTDFq46ZG/fk3LmyRLChtp/9lddyA=", "ref": "refs/heads/main", - "rev": "c5d5786d3dc938af0b279c542d1e43bce381b4b9", - "revCount": 996, + "rev": "fe39e122d898f66e89ffa17d4f4209989ccb5358", + "revCount": 1255, "type": "git", "url": "https://spectrum-os.org/git/spectrum" }, @@ -1624,11 +1690,11 @@ ] }, "locked": { - "lastModified": 1772494187, - "narHash": "sha256-6ksgNAFXVK+Cg/6ww7bB2nJUPZlnS75UwZC7G+L03EE=", + "lastModified": 1777789800, + "narHash": "sha256-XHCvLGu/bEEZRzXVKFu1i+2YB102Nr00n8e7xrzsfVs=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "915ab06b046d05613041780c575c62a32fe67cea", + "rev": "d0e921cc48aab6137d203a3eab19601dc2bdc0c3", "type": "github" }, "original": { @@ -1798,11 +1864,11 @@ ] }, "locked": { - "lastModified": 1761431178, - "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", + "lastModified": 1777035886, + "narHash": "sha256-m1TNuBoSXUBSKhD9UVMkU90M0wFTPTfvIOOltO8IM8A=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", + "rev": "ecfcdcc781f48821d83e1e2a0e30d7beca0eeb5e", "type": "github" }, "original": { @@ -1813,19 +1879,17 @@ }, "zen": { "inputs": { - "home-manager": [ - "home-manager" - ], + "home-manager": "home-manager_3", "nixpkgs": [ "nixpkgs-unstable" ] }, "locked": { - "lastModified": 1772772172, - "narHash": "sha256-OCEb6jXTvhnMTMqMLleYChekDO/zh+VtunBAS0WevPM=", + "lastModified": 1777564084, + "narHash": "sha256-O9VRkxg+2j+sh+c73wi4VeIBECoqW2PlnCR9Qe1nQKA=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "5f8f34c0dd56808ecbfa35697353c455e4a416b3", + "rev": "d93443c0f6fdb3b179bed68856f322dba4842612", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d50ddc3..ef91d7c 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,9 @@ nixpkgs-staging.url = "github:NixOS/nixpkgs/staging-next"; nixpkgs-master.url = "github:NixOS/nixpkgs/master"; + # currently a regression: https://github.com/rust-lang/rust-analyzer/pull/22207 + nixpkgs-rust.url = "github:NixOS/nixpkgs/838f1611dc4c0078432071819d6fffe046148813"; + home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; @@ -19,7 +22,7 @@ }; cerulean = { - url = "github:cry128/cerulean/v0.2.6-alpha"; + url = "git+https://tearforge.net/cry/cerulean?rev=d5211287bd3cb96078f2053488d67d557848a8f2"; inputs = { systems.follows = "systems"; nixpkgs.follows = "nixpkgs"; @@ -40,18 +43,23 @@ url = "github:hyprwm/Hyprland"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; - hyprland-plugins = { - url = "github:hyprwm/hyprland-plugins"; - inputs.hyprland.follows = "hyprland-git"; - }; + # hyprland-plugins = { + # url = "github:hyprwm/hyprland-plugins"; + # inputs.hyprland.follows = "hyprland-git"; + # }; mango = { - url = "github:DreamMaoMao/mangowc"; + url = "github:mangowm/mango"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; nixcats.url = "github:BirdeeHub/nixCats-nvim"; + fenix = { + url = "github:nix-community/fenix"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + }; + awww = { url = "git+https://codeberg.org/LGFae/awww"; inputs.nixpkgs.follows = "nixpkgs-unstable"; @@ -59,10 +67,7 @@ zen = { url = "github:0xc000022070/zen-browser-flake"; - inputs = { - nixpkgs.follows = "nixpkgs-unstable"; - home-manager.follows = "home-manager"; - }; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; iamb = { @@ -88,8 +93,8 @@ }; }; - fenix = { - url = "github:nix-community/fenix"; + mcsr = { + url = "https://git.uku3lig.net/uku/mcsr-nixos/archive/main.tar.gz"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; @@ -104,6 +109,5 @@ extra-experimental-features = "pipe-operators"; }; - outputs = {cerulean, ...} @ inputs: - cerulean.snow.flake inputs ./.; + outputs = inputs: import ./snow.nix inputs; } diff --git a/groups/all/default.nix b/groups/all/default.nix index 3f035f8..dda6503 100644 --- a/groups/all/default.nix +++ b/groups/all/default.nix @@ -1,6 +1,6 @@ {...}: { nix.settings = { - experimental-features = ["nix-command" "flakes"]; + experimental-features = ["nix-command" "flakes" "pipe-operators"]; download-buffer-size = 524288000; }; } diff --git a/homes/aurora/default.nix b/homes/aurora/default.nix index 36aea1f..a41860c 100644 --- a/homes/aurora/default.nix +++ b/homes/aurora/default.nix @@ -85,8 +85,8 @@ # fonts nerd-fonts.departure-mono # pretty pixel art font i love!! x3 - nerd-fonts.jetbrains-mono - noto-fonts + noto-fonts-cjk-sans # bitmap font for cjk support :3 + zpix-pixel-font # bitmap font for cjk support :3 # cli / tui tools and commands! eza # replaces: ls (rust) @@ -109,12 +109,15 @@ exiftool # display and edit metadata on a variety of files halloy # irc tui app written in rust pastel # color generator / manipulator :3 i love colors!! <3 - eva # calculator repl + eva # calculator repl silicon # makes pretty images of code :3 + wormhole-rs # send people stuff!! :3 + croc # other way to send people stuff!! :3 # cli fun pokeget-rs # prints a random pokemon to the terminal :3 pipes # pipes program <3 + cmatrix # the matrix :3 # dev gnumake @@ -130,6 +133,7 @@ gleam delta # git diff viewer tlrc # tldr rust client + shellcheck # apps qutebrowser # keyboard-focused browser (chromium) @@ -139,20 +143,19 @@ obsidian # literally best notes app (i use vim mode) qimgv # image viewer! feh # other image viewer! (im indecisive) - vesktop # modded discord client! gimp # open source image manipulation program krita # open source painting application! imhex # hex editor kicad # open source electronics design program easyeda2kicad - # FIX: its fucking broken: https://github.com/NixOS/nixpkgs/pull/494721 - mpkgs.libreoffice-qt # word, excel, pdf etc open source programs + libreoffice-qt # word, excel, pdf etc open source programs hunspell # spell checker obs-studio cytoscape element-desktop # 'official' gui matrix client blender # AMAZING 3D MODELLING PROGRAMMM <3 session-desktop # idk silly chat app + localsend # share files locally :3 # media playerctl # mpris cli interface for media apps :3 @@ -162,8 +165,8 @@ # games r2modman # mod manager for lots of games!! - prismlauncher # minecraft launcher - bottles # wineprefix manager + # prismlauncher # minecraft launcher + # bottles # wineprefix manager # vr sidequest # app store for sideloading onto vr headsets @@ -173,7 +176,6 @@ # gui settings apps nwg-look # gtk 2 / 3 settings thing idc i hate gtk pavucontrol # i wanna get rid of this but its audio control thing - rquickshare # android quick share (this is pretty cool!!) # wayland desktop tools / de / wm stuff / gui stuffs cliphist @@ -289,7 +291,7 @@ git.pagers = [ { colorArg = "always"; - pager = "delta --dark --pager=never --line-numbers --side-by-side"; + pager = "delta --dark --pager=never"; } ]; }; @@ -318,7 +320,6 @@ zen-browser = { enable = true; package = inputs.zen.packages.${system}.twilight; - suppressXdgMigrationWarning = true; }; mpv = { diff --git a/homes/modules/de/waybar/style.css b/homes/modules/de/waybar/style.css index 254e789..0b9ecdd 100644 --- a/homes/modules/de/waybar/style.css +++ b/homes/modules/de/waybar/style.css @@ -3,7 +3,7 @@ * { border: none; border-radius: 0; - font-family: 'DepartureMono Nerd Font'; + font-family: "DepartureMono Nerd Font", "Unifont"; font-size: 10px; font-weight: bold; min-height: 10px; @@ -37,6 +37,7 @@ tooltip label { #network, #workspaces, #taskbar, +#submap, #cpu, #pulseaudio, #privacy, @@ -48,6 +49,7 @@ tooltip label { padding: 4px 16px; border-radius: 32px; border: 1px solid @color01; + min-height: 14px; } /* @@ -74,6 +76,7 @@ right-side modules #cpu, #pulseaudio, #tray, +#submap, #privacy { margin: 4px 0px 4px 4px; } @@ -96,6 +99,34 @@ right-side modules border: none; } +#submap.name { + color: @colorfg; +} + +#pulseaudio.sink { + margin: 4px 0 4px 4px; + border-radius: 32px 0px 0px 32px; + color: @colorbg; + border-color: @color12; + background-color: @color12; +} +#pulseaudio.sink.muted { + color: @color12; + background-color: @colorbg; +} +#pulseaudio.source { + margin: 4px 0 4px 0; + border-radius: 0px 32px 32px 0px; + border-width: 1px 1px 1px 0px; + color: @colorbg; + border-color: @color14; + background-color: @color14; +} +#pulseaudio.source.source-muted { + color: @color14; + background-color: @colorbg; +} + /* connects the workspace and taskbar together :3 */ @@ -114,7 +145,7 @@ right-side modules */ #cpu { - margin: 4px 0 4px 0; + margin: 4px 0 4px 4px; border-radius: 32px 0px 0px 32px; } #memory { diff --git a/homes/modules/de/waybar/waybar.nix b/homes/modules/de/waybar/waybar.nix index 71e1f20..b91076d 100644 --- a/homes/modules/de/waybar/waybar.nix +++ b/homes/modules/de/waybar/waybar.nix @@ -6,24 +6,45 @@ layer = "top"; position = "top"; height = 20; - modules-left = ["hyprland/workspaces" "wlr/taskbar" "custom/media"]; - modules-center = ["clock"]; - modules-right = ["cpu" "memory" "network" "pulseaudio" "privacy" "tray"]; + + modules-left = [ + "hyprland/workspaces" + "wlr/taskbar" + "custom/media" + ]; + + modules-center = [ + "clock" + ]; + + modules-right = [ + "hyprland/submap" + "cpu" + "memory" + "network" + "pulseaudio#sink" + "pulseaudio#source" + "privacy" + "tray" + ]; # left "hyprland/workspaces" = { format = "{id}"; }; + + # not enabled yet, hyprland and mango need two different configs ;-; "ext/workspaces" = { - # not enabled yet, hyprland and mango need two different configs ;-; format = "{id}"; ignore-hidden = true; on-click = "activate"; }; + "wlr/taskbar" = { format = "{icon}"; icon-size = 12; }; + "custom/media" = { exec = "auroramedia"; return-type = "json"; @@ -39,14 +60,24 @@ }; # right + "hyprland/submap" = { + format = "{}"; + # always-on = true; + # default-submap = "normal"; + max-length = 12; + tooltip = false; + }; + "cpu" = { format = " {usage}%"; interval = 1; }; + "memory" = { format = " {used:0.1f} / {total:0.1f} GiB"; interval = 1; }; + "network" = { format = "{bandwidthUpBytes}  {bandwidthDownBytes}  {ifname}"; format-wifi = " {bandwidthUpBytes}  {bandwidthDownBytes} "; @@ -55,7 +86,8 @@ interval = 1; max-length = 32; }; - "pulseaudio" = { + + "pulseaudio#sink" = { format = "{icon} {volume}%"; format-muted = " {volume}%"; format-icons = { @@ -66,7 +98,18 @@ ]; }; "scroll-step" = 5; + tooltip = true; }; + + "pulseaudio#source" = { + format = "{format_source}"; + format-source = " {volume}%"; + format-source-muted = " {volume}%"; + on-scroll-up = "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SOURCE@ 5%+"; + on-scroll-down = "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SOURCE@ 5%-"; + tooltip = true; + }; + "privacy" = { icon-size = 12; icon-spacing = 5; @@ -84,6 +127,7 @@ } ]; }; + "tray" = { icon-size = 12; spacing = 10; diff --git a/homes/modules/programs/neovim/init.lua b/homes/modules/programs/neovim/init.lua index 98013ef..4034fc2 100644 --- a/homes/modules/programs/neovim/init.lua +++ b/homes/modules/programs/neovim/init.lua @@ -2,12 +2,16 @@ vim.g.mapleader = " " vim.opt.termguicolors = true -- use terminal colors vim.opt.relativenumber = true +vim.opt.number = true vim.opt.wrap = false vim.opt.colorcolumn = "80" +vim.opt.scrolloff = 4 require("plugins") require("lsp") +require("colors") +-- move windows :3 vim.keymap.set("n", "", function() vim.cmd("wincmd h") end) @@ -21,73 +25,71 @@ vim.keymap.set("n", "", function() vim.cmd("wincmd l") end) -local uv = vim.loop -local colorscheme_filepath = "/home/aurora/.cache/nvim/neovim-colors" -local colors = {} +-- splits <3 (i love splits sm) +vim.keymap.set("n", "s", function() + vim.cmd("split") +end) +vim.keymap.set("n", "v", function() + vim.cmd("vsplit") +end) --- function to load colors -local function load_colors() - local new_colors = {} - for line in io.lines(colorscheme_filepath) do - table.insert(new_colors, line) +-- u can put delta inside of neovim omg they are spoiling me <3 +local git_diff_win = nil + +vim.api.nvim_create_autocmd("VimResized", { + callback = function() + if git_diff_win and vim.api.nvim_win_is_valid(git_diff_win) then + local width = math.floor(vim.o.columns * 0.9) + local height = math.floor((vim.o.lines - 2) * 0.9) + + vim.api.nvim_win_set_config(git_diff_win, { + relative = "editor", + width = width, + height = height, + col = math.floor((vim.o.columns - width) / 2), + row = math.floor((vim.o.lines - height) / 2) - 2, + }) + end + end, +}) + +vim.keymap.set("n", "gd", function() + if git_diff_win and vim.api.nvim_win_is_valid(git_diff_win) then + vim.api.nvim_win_close(git_diff_win, true) + git_diff_win = nil + return end - -- ensure the table has enough entries to avoid indexing issues - if #new_colors >= 18 then - colors = new_colors - require("base16-colorscheme").setup({ - base00 = colors[17], - base01 = colors[1], - base02 = colors[3], - base03 = colors[3], - base04 = colors[5], - base05 = colors[8], - base06 = colors[5], - base07 = colors[8], - base08 = colors[18], - base09 = colors[4], - base0A = colors[11], - base0B = colors[5], - base0C = colors[6], - base0D = colors[7], - base0E = colors[6], - base0F = colors[16], - }) + local buf = vim.api.nvim_create_buf(false, true) - -- set colors for blink.cmp's completion menu - vim.api.nvim_set_hl(0, "BlinkCmpMenu", { bg = colors[17] }) - vim.api.nvim_set_hl(0, "BlinkCmpMenuBorder", { bg = colors[17], fg = colors[13] }) - vim.api.nvim_set_hl(0, "BlinkCmpMenuSelection", { bg = colors[15], fg = colors[17] }) - vim.api.nvim_set_hl(0, "BlinkCmpScrollBarThumb", { bg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpKind", { bg = colors[17], fg = colors[14] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabel", { bg = colors[17], fg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabelMatch", { bg = colors[17], fg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabelDetail", { bg = colors[17], fg = colors[18] }) - vim.api.nvim_set_hl(0, "BlinkCmpLabelDescription", { bg = colors[17], fg = colors[18] }) - else - print("Error: Not enough colors in file") - end -end + vim.bo[buf].filetype = "terminal" --- initial load -load_colors() + -- deletes the last two lines of the buffer when the process exits :3 + vim.api.nvim_create_autocmd("TermClose", { + buffer = buf, + callback = function() + vim.defer_fn(function() + vim.bo[buf].modifiable = true + vim.api.nvim_buf_set_lines(buf, -3, -1, false, {}) + vim.bo[buf].modifiable = false + end, 10) + end, + }) --- vim.defer_fn(load_colors, 1) + local width = math.floor(vim.o.columns * 0.9) + local height = math.floor((vim.o.lines - 2) * 0.9) --- set up a file watcher -local function watch_colorscheme() - local handle - handle = uv.new_fs_event() - if handle then - uv.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _) - if err then - print("Error watching colorscheme file:", err) - return - end - -- debounce by adding a slight delay before reloading - vim.defer_fn(load_colors, 100) - end) - end -end + git_diff_win = vim.api.nvim_open_win(buf, true, { + relative = "editor", + width = width, + height = height, + col = math.floor((vim.o.columns - width) / 2), + row = math.floor((vim.o.lines - height) / 2) - 2, + style = "minimal", + border = "rounded", + }) -watch_colorscheme() + vim.fn.jobstart("git diff | delta --pager=never", { term = true }) + + vim.keymap.set("n", "q", "close", { buffer = buf }) +end) diff --git a/homes/modules/programs/neovim/lua/colors.lua b/homes/modules/programs/neovim/lua/colors.lua new file mode 100644 index 0000000..3a5bbc6 --- /dev/null +++ b/homes/modules/programs/neovim/lua/colors.lua @@ -0,0 +1,238 @@ +local colorscheme_filepath = "/home/aurora/.cache/nvim/neovim-colors" +local colors = {} + +local function hex_to_int(hex) + hex = hex:gsub("#", "") + return tonumber(hex:sub(1, 2), 16) * 0x10000 + tonumber(hex:sub(3, 4), 16) * 0x100 + tonumber(hex:sub(5, 6), 16) +end + +-- TODO: change to use lab color space +local function blend_colors(c1, c2, t) + local r1 = math.floor(c1 / 0x10000) + local g1 = math.floor((c1 % 0x10000) / 0x100) + local b1 = c1 % 0x100 + + local r2 = math.floor(c2 / 0x10000) + local g2 = math.floor((c2 % 0x10000) / 0x100) + local b2 = c2 % 0x100 + + return math.floor(r1 + (r2 - r1) * t) * 0x10000 + + math.floor(g1 + (g2 - g1) * t) * 0x100 + + math.floor(b1 + (b2 - b1) * t) +end + +-- function to load colors +local function load_colors() + local new_colors = {} + for line in io.lines(colorscheme_filepath) do + table.insert(new_colors, line) + end + + -- ensure the table has enough entries to avoid indexing issues + if #new_colors == 18 then + colors = new_colors + require("base16-colorscheme").setup({ + base00 = colors[18], + base01 = colors[1], + base02 = colors[3], + base03 = colors[3], + base04 = colors[5], + base05 = colors[8], + base06 = colors[5], + base07 = colors[8], + base08 = colors[17], + base09 = colors[4], + base0A = colors[11], + base0B = colors[5], + base0C = colors[6], + base0D = colors[7], + base0E = colors[6], + base0F = colors[16], + }) + + -- colors ------------------------------------------------------------------ + + local color_00 = colors[1] + local color_01 = colors[2] + local color_02 = colors[3] + local color_03 = colors[4] + local color_04 = colors[5] + local color_05 = colors[6] + local color_06 = colors[7] + local color_07 = colors[8] + + local color_08 = colors[9] + local color_09 = colors[10] + local color_10 = colors[11] + local color_11 = colors[12] + local color_12 = colors[13] + local color_13 = colors[14] + local color_14 = colors[15] + local color_15 = colors[16] + + local fg = colors[17] + local bg = colors[18] + + local bg_90 = blend_colors(hex_to_int("#000000"), hex_to_int(bg), 0.90) + + local fg_10 = blend_colors(hex_to_int(bg), hex_to_int(fg), 0.10) + local fg_30 = blend_colors(hex_to_int(bg), hex_to_int(fg), 0.30) + + local secondary_10 = blend_colors(hex_to_int(bg), hex_to_int(color_13), 0.10) + local secondary_30 = blend_colors(hex_to_int(bg), hex_to_int(color_13), 0.30) + + -- editor colors :3 -------------------------------------------------------- + + vim.api.nvim_set_hl(0, "Visual", { bg = secondary_10 }) + vim.api.nvim_set_hl(0, "ColorColumn", { bg = secondary_30 }) + + -- blink.cmp --------------------------------------------------------------- + + vim.api.nvim_set_hl(0, "BlinkCmpMenu", { bg = bg }) + vim.api.nvim_set_hl(0, "BlinkCmpMenuBorder", { fg = color_12, bg = bg }) + vim.api.nvim_set_hl(0, "BlinkCmpMenuSelection", { fg = bg, bg = color_14 }) + vim.api.nvim_set_hl(0, "BlinkCmpScrollBarThumb", { bg = fg }) + vim.api.nvim_set_hl(0, "BlinkCmpKind", { fg = fg, bg = bg }) + vim.api.nvim_set_hl(0, "BlinkCmpLabel", { fg = fg, bg = bg }) + vim.api.nvim_set_hl(0, "BlinkCmpLabelMatch", { fg = fg, bg = bg }) + vim.api.nvim_set_hl(0, "BlinkCmpLabelDetail", { fg = fg, bg = bg }) + vim.api.nvim_set_hl(0, "BlinkCmpLabelDescription", { fg = fg, bg = bg }) + + -- telescope :3 ------------------------------------------------------------ + + vim.api.nvim_set_hl(0, "TelescopeNormal", { bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopePromptNormal", { bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopeResultsNormal", { bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopePreviewNormal", { bg = bg_90 }) + + vim.api.nvim_set_hl(0, "TelescopeBorder", { fg = color_15, bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopePromptBorder", { fg = color_15, bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopeResultsBorder", { fg = color_15, bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopePreviewBorder", { fg = color_15, bg = bg_90 }) + + vim.api.nvim_set_hl(0, "TelescopePromptTitle", { fg = color_15, bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopeResultsTitle", { fg = color_15, bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopePreviewTitle", { fg = color_15, bg = bg_90 }) + + vim.api.nvim_set_hl(0, "TelescopePromptPrefix", { fg = color_14, bg = bg_90 }) + vim.api.nvim_set_hl(0, "TelescopePromptCounter", { fg = color_13, bg = bg_90 }) + + -- gitsigns.nvim ----------------------------------------------------------- + + vim.api.nvim_set_hl(0, "GitSignsAdd", { fg = color_13 }) + vim.api.nvim_set_hl(0, "GitSignsChange", { fg = color_11 }) + vim.api.nvim_set_hl(0, "GitSignsDelete", { fg = color_09 }) + + local blame_palette = { + color_13, + color_11, + color_09, + color_06, + color_05, + color_04, + color_03, + color_12, + } + + local blame_group = vim.api.nvim_create_augroup("GitSignsBlameColors", { clear = true }) + + local function get_heatmap_palette() + local c1 = hex_to_int(color_13) -- old + local c2 = hex_to_int(color_14) -- recent + + local palette = {} + for i = 0, 7 do + palette[i] = blend_colors(c1, c2, i / 7) + end + + return palette + end + + local heatmap_palette = get_heatmap_palette() + + local function set_blame_colors() + local highlights = vim.api.nvim_exec2("highlight", { output = true }).output + + local i = 1 + for hl_name in highlights:gmatch("(GitSignsBlameColor%.[%x]+)") do + local color = blame_palette[(i - 1) % #blame_palette + 1] + vim.api.nvim_set_hl(0, hl_name, { fg = color }) + i = i + 1 + end + + i = 1 + for hl_name in highlights:gmatch("(GitSignsColorTemp%.fg%.[%d]+)") do + local color = heatmap_palette[(i - 1) % #heatmap_palette + 1] + vim.api.nvim_set_hl(0, hl_name, { fg = color }) + i = i + 1 + end + end + + set_blame_colors() + + vim.api.nvim_create_autocmd("FileType", { + group = blame_group, + pattern = "gitsigns-blame", + callback = function() + set_blame_colors() + end, + }) + + -- fyler.nvim -------------------------------------------------------------- + + vim.api.nvim_set_hl(0, "FylerBlue", { fg = color_06 }) + vim.api.nvim_set_hl(0, "FylerGreen", { fg = color_02 }) + vim.api.nvim_set_hl(0, "FylerGrey", { fg = color_08 }) + vim.api.nvim_set_hl(0, "FylerRed", { fg = color_01 }) + vim.api.nvim_set_hl(0, "FylerYellow", { fg = color_03 }) + + vim.api.nvim_set_hl(0, "FylerFSDirectoryIcon", { fg = color_06 }) + vim.api.nvim_set_hl(0, "FylerFSDirectoryName", { fg = fg }) + vim.api.nvim_set_hl(0, "FylerFSFile", { fg = color_15 }) + vim.api.nvim_set_hl(0, "FylerFSLink", { fg = color_08 }) + + vim.api.nvim_set_hl(0, "FylerGitAdded", { fg = color_04 }) + vim.api.nvim_set_hl(0, "FylerGitConflict", { fg = color_03 }) + vim.api.nvim_set_hl(0, "FylerGitDeleted", { fg = color_03 }) + vim.api.nvim_set_hl(0, "FylerGitIgnored", { fg = color_08 }) + vim.api.nvim_set_hl(0, "FylerGitModified", { fg = color_05 }) + vim.api.nvim_set_hl(0, "FylerGitRenamed", { fg = color_05 }) + vim.api.nvim_set_hl(0, "FylerGitStaged", { fg = color_04 }) + vim.api.nvim_set_hl(0, "FylerGitUnstaged", { fg = color_05 }) + vim.api.nvim_set_hl(0, "FylerGitUntracked", { fg = color_06 }) + + vim.api.nvim_set_hl(0, "FylerWinPick", { fg = color_15, bg = fg }) + + -- lualine.nvim + vim.api.nvim_exec_autocmds("User", { pattern = "RefreshLualine" }) + + -- hlchunk.nvim + vim.api.nvim_set_hl(0, "HLIndent1", { fg = secondary_30 }) + vim.api.nvim_set_hl(0, "HLChunk1", { fg = color_11 }) + else + print("Error: Not enough colors in file") + end +end + +-- initial load +load_colors() + +-- vim.defer_fn(load_colors, 1) + +-- set up a file watcher +local function watch_colorscheme() + local handle + handle = vim.loop.new_fs_event() + if handle then + vim.loop.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _) + if err then + print("Error watching colorscheme file:", err) + return + end + -- debounce by adding a slight delay before reloading + vim.defer_fn(load_colors, 100) + end) + end +end + +watch_colorscheme() diff --git a/homes/modules/programs/neovim/lua/lsp/completion.lua b/homes/modules/programs/neovim/lua/lsp/completion.lua index b408f23..6d80a6d 100644 --- a/homes/modules/programs/neovim/lua/lsp/completion.lua +++ b/homes/modules/programs/neovim/lua/lsp/completion.lua @@ -17,7 +17,7 @@ return { keymap = { [""] = { "show", "show_documentation", "hide_documentation" }, [""] = { "hide", "fallback" }, - [""] = { "select_and_accept", "fallback" }, + [""] = { "select_and_accept", "fallback" }, [""] = { "select_prev", "fallback_to_mappings" }, [""] = { "select_next", "fallback_to_mappings" }, @@ -30,7 +30,7 @@ return { [""] = { "snippet_forward", "fallback" }, [""] = { "snippet_backward", "fallback" }, - [""] = { "show_signature", "hide_signature", "fallback" }, + [""] = { "show_signature", "hide_signature", "fallback" }, }, appearance = { @@ -84,7 +84,7 @@ return { }, documentation = { - auto_show = false, + auto_show = true, window = { border = "rounded", }, diff --git a/homes/modules/programs/neovim/lua/lsp/indentation.lua b/homes/modules/programs/neovim/lua/lsp/indentation.lua index 5deae31..8516bad 100644 --- a/homes/modules/programs/neovim/lua/lsp/indentation.lua +++ b/homes/modules/programs/neovim/lua/lsp/indentation.lua @@ -1,5 +1,12 @@ vim.api.nvim_create_autocmd("FileType", { - pattern = { "lua", "nix", "gleam" }, + pattern = { + "lua", + "nix", + "gleam", + "css", + "json", + "haskell", + }, callback = function() vim.opt_local.shiftwidth = 2 vim.opt_local.tabstop = 2 @@ -7,14 +14,38 @@ vim.api.nvim_create_autocmd("FileType", { end, }) +vim.api.nvim_create_autocmd("FileType", { + pattern = { + "sql", + }, + callback = function() + vim.opt_local.shiftwidth = 4 + vim.opt_local.tabstop = 4 + vim.opt_local.expandtab = true + end, +}) + vim.api.nvim_create_autocmd("User", { pattern = "TelescopePreviewerLoaded", callback = function(args) local ft = args.data.filetype - if vim.tbl_contains({ "lua", "nix", "gleam", "rust" }, ft) then + if vim.tbl_contains({ + "lua", + "nix", + "gleam", + "css", + "json", + "haskell", + }, ft) then vim.bo.shiftwidth = 2 vim.bo.tabstop = 2 vim.bo.expandtab = true + elseif vim.tbl_contains({ + "sql", + }, ft) then + vim.bo.shiftwidth = 4 + vim.bo.tabstop = 4 + vim.bo.expandtab = true end end, }) diff --git a/homes/modules/programs/neovim/lua/lsp/lsp.lua b/homes/modules/programs/neovim/lua/lsp/lsp.lua index 230033a..0be588b 100644 --- a/homes/modules/programs/neovim/lua/lsp/lsp.lua +++ b/homes/modules/programs/neovim/lua/lsp/lsp.lua @@ -47,6 +47,11 @@ if nixCats("lang.rust.lsp") then diagnostics = { enable = true, }, + ["rust-analyzer"] = { + procMacro = { + enable = true, + }, + }, }, } end diff --git a/homes/modules/programs/neovim/lua/plugins/dressing.lua b/homes/modules/programs/neovim/lua/plugins/dressing.lua index 42e7280..9c4decd 100644 --- a/homes/modules/programs/neovim/lua/plugins/dressing.lua +++ b/homes/modules/programs/neovim/lua/plugins/dressing.lua @@ -1,5 +1,6 @@ return { { "dressing.nvim", + enabled = nixCats("ui.dressing") or false, }, } diff --git a/homes/modules/programs/neovim/lua/plugins/format.lua b/homes/modules/programs/neovim/lua/plugins/format.lua index c3f85e2..636008b 100644 --- a/homes/modules/programs/neovim/lua/plugins/format.lua +++ b/homes/modules/programs/neovim/lua/plugins/format.lua @@ -58,10 +58,22 @@ return { formatters_by_ft = { lua = nixCats("lang.lua.format") and { "stylua" } or nil, nix = nixCats("lang.nix.format") and { "alejandra" } or nil, - rust = nixCats("lang.rust.format") and { "rustfmt", lsp_format = "fallback" } or nil, + rust = (function() + if not nixCats("lang.rust.format") then + return nil + end + local formatters = {} + if nixCats("lang.rust.formatters.leptos") then + table.insert(formatters, "leptosfmt") + end + table.insert(formatters, "rustfmt") + formatters.lsp_format = "fallback" + return formatters + end)(), haskell = nixCats("lang.haskell.format") and { "ormolu" } or nil, proto = nixCats("lang.protobuf.format") and { "buf" } or nil, toml = nixCats("lang.toml.format") and { "taplo" } or nil, + sql = nixCats("lang.sql.format") and { "sqlfluff" } or nil, }, format_on_save = { timeout_ms = 500, diff --git a/homes/modules/programs/neovim/lua/plugins/fyler.lua b/homes/modules/programs/neovim/lua/plugins/fyler.lua index 2737b78..282e257 100644 --- a/homes/modules/programs/neovim/lua/plugins/fyler.lua +++ b/homes/modules/programs/neovim/lua/plugins/fyler.lua @@ -4,12 +4,12 @@ return { cmd = { "Fyler" }, keys = { { - "tf", + "F", function() return require("fyler").toggle({ kind = "split_right" }) end, mode = { "n" }, - desc = "Open [F]yler", + desc = "Open File [E]xplorer (Fyler)", }, }, load = function(name) diff --git a/homes/modules/programs/neovim/lua/plugins/git.lua b/homes/modules/programs/neovim/lua/plugins/git.lua index c2250cc..46ee0e2 100644 --- a/homes/modules/programs/neovim/lua/plugins/git.lua +++ b/homes/modules/programs/neovim/lua/plugins/git.lua @@ -1,12 +1,12 @@ return { { "vim-fugitive", - enabled = nixCats("git") or false, + enabled = nixCats("git.merge") or false, cmd = { "Git", "Gvdiffsplit" }, }, { "resolve-nvim", - enabled = nixCats("git") or false, + enabled = nixCats("git.merge") or false, event = { "BufReadPre", "BufNewFile" }, after = function(plugin) require("resolve").setup({ @@ -21,4 +21,73 @@ return { }) end, }, + { + "gitsigns.nvim", + enabled = nixCats("git.gitsigns") or false, + after = function(plugin) + require("gitsigns").setup({ + signs = { + add = { text = "┃" }, + change = { text = "┇" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "╎" }, + }, + signs_staged = { + add = { text = "┃" }, + change = { text = "┇" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "╎" }, + }, + on_attach = function(bufnr) + local gitsigns = require("gitsigns") + + -- toggle git blame + vim.keymap.set("n", "gb", function() + local wins = vim.api.nvim_list_wins() + for _, win in ipairs(wins) do + local buf = vim.api.nvim_win_get_buf(win) + local ft = vim.api.nvim_get_option_value("filetype", { buf = buf }) + if ft == "gitsigns-blame" then + vim.api.nvim_win_close(win, true) + return + end + end + vim.cmd("Gitsigns blame") + end) + + vim.keymap.set("n", "bl", gitsigns.toggle_current_line_blame) + + vim.keymap.set("n", "]c", function() + if vim.wo.diff then + vim.cmd.normal({ "]c", bang = true }) + else + gitsigns.nav_hunk("next") + end + end) + + vim.keymap.set("n", "[c", function() + if vim.wo.diff then + vim.cmd.normal({ "[c", bang = true }) + else + gitsigns.nav_hunk("prev") + end + end) + + vim.keymap.set("n", "hs", gitsigns.stage_hunk) + vim.keymap.set("n", "hu", gitsigns.undo_stage_hunk) + + vim.keymap.set("n", "hS", gitsigns.stage_buffer) + vim.keymap.set("n", "hU", gitsigns.reset_buffer_index) + + vim.keymap.set("n", "hi", gitsigns.toggle_current_line_blame) + + vim.keymap.set("n", "hp", gitsigns.preview_hunk_inline) + end, + }) + end, + }, } diff --git a/homes/modules/programs/neovim/lua/plugins/hlchunk.lua b/homes/modules/programs/neovim/lua/plugins/hlchunk.lua new file mode 100644 index 0000000..d4c920d --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/hlchunk.lua @@ -0,0 +1,36 @@ +return { + { + "hlchunk.nvim", + enabled = nixCats("ui.hlchunk") or false, + after = function(plugin) + require("hlchunk").setup({ + chunk = { + enable = true, + use_treesitter = true, + chars = { + horizontal_line = "─", + vertical_line = "│", + left_top = "╭", + left_bottom = "╰", + right_arrow = "─", + }, + style = { + "#B0F0FA", + }, + }, + indent = { + enable = true, + use_treesitter = false, + ahead_lines = 10, + delay = 25, + chars = { + "│", + }, + style = { + "#9080FA", + }, + }, + }) + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/init.lua b/homes/modules/programs/neovim/lua/plugins/init.lua index cceea69..d23ef30 100644 --- a/homes/modules/programs/neovim/lua/plugins/init.lua +++ b/homes/modules/programs/neovim/lua/plugins/init.lua @@ -7,4 +7,6 @@ require("lze").load({ { import = "plugins.format" }, { import = "plugins.comment" }, { import = "plugins.git" }, + { import = "plugins.lualine" }, + { import = "plugins.hlchunk" }, }) diff --git a/homes/modules/programs/neovim/lua/plugins/lualine.lua b/homes/modules/programs/neovim/lua/plugins/lualine.lua new file mode 100644 index 0000000..a0303d5 --- /dev/null +++ b/homes/modules/programs/neovim/lua/plugins/lualine.lua @@ -0,0 +1,22 @@ +local config = { + options = { + theme = "auto", + }, +} + +return { + { + "lualine.nvim", + enabled = nixCats("ui.lualine") or false, + after = function(plugin) + require("lualine").setup(config) + + vim.api.nvim_create_autocmd("User", { + pattern = "RefreshLualine", + callback = function() + require("lualine").setup(config) + end, + }) + end, + }, +} diff --git a/homes/modules/programs/neovim/lua/plugins/telescope.lua b/homes/modules/programs/neovim/lua/plugins/telescope.lua index a61f19c..7a2a2b6 100644 --- a/homes/modules/programs/neovim/lua/plugins/telescope.lua +++ b/homes/modules/programs/neovim/lua/plugins/telescope.lua @@ -1,12 +1,16 @@ return { { "telescope.nvim", + enabled = nixCats("telescope.enable") or false, cmd = { "Telescope" }, keys = { { "f", function() - return require("telescope.builtin").find_files() + return require("telescope.builtin").find_files({ + hidden = true, + file_ignore_patterns = { "^.git/" }, + }) end, mode = { "n" }, desc = "Telescope search [F]iles", @@ -22,7 +26,10 @@ return { { "ts", function() - return require("telescope.builtin").live_grep() + return require("telescope.builtin").live_grep({ + additional_args = { "--hidden" }, + glob_pattern = { "!.git/" }, + }) end, mode = { "n" }, desc = "[T]elescope [S]earch cwd with grep", @@ -30,7 +37,10 @@ return { { "tw", function() - return require("telescope.builtin").grep_string() + return require("telescope.builtin").grep_string({ + additional_args = { "--hidden" }, + glob_pattern = { "!.git/" }, + }) end, mode = { "n" }, desc = "[T]elescope search current [W]ord", @@ -51,10 +61,33 @@ return { mode = { "n" }, desc = "[T]elescope search [B]uffers", }, + { + "th", + function() + return require("telescope.builtin").highlights() + end, + mode = { "n" }, + desc = "[T]elescope [H]ighlights", + }, + { + "gs", + function() + return require("telescope.builtin").git_status() + end, + mode = { "n" }, + desc = "[G]it [S]tatus", + }, }, load = function(name) vim.cmd.packadd(name) - vim.cmd.packadd("telescope-fzf-native.nvim") + + if nixCats("telescope.fzf") then + vim.cmd.packadd("telescope-fzf-native.nvim") + end + + if nixCats("telescope.zf") then + vim.cmd.packadd("telescope-zf-native.nvim") + end end, after = function(plugin) local telescope = require("telescope") @@ -62,6 +95,8 @@ return { telescope.setup({ defaults = { + border = true, + borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, mappings = { i = { [""] = actions.move_selection_previous, -- move to prev result @@ -72,7 +107,13 @@ return { }, }) - pcall(telescope.load_extension, "fzf") + if nixCats("telescope.fzf") then + telescope.load_extension("fzf") + end + + if nixCats("telescope.zf") then + telescope.load_extension("zf-native") + end end, }, } diff --git a/homes/modules/programs/neovim/nixcats.nix b/homes/modules/programs/neovim/nixcats.nix index 564b652..0e25b69 100644 --- a/homes/modules/programs/neovim/nixcats.nix +++ b/homes/modules/programs/neovim/nixcats.nix @@ -1,10 +1,6 @@ # TODO: look into changing to this: # https://github.com/BirdeeHub/nix-wrapper-modules -{ - inputs, - mpkgs, - ... -}: let +{inputs, ...}: let inherit (inputs.nixcats) utils @@ -15,11 +11,10 @@ in { ]; config = { - # this value, nixCats is the defaultPackageName you pass to mkNixosModules - # it will be the namespace for your options. nixCats = { enable = true; nixpkgs_version = inputs.nixpkgs-unstable; + # TODO: ask butterfly about this, am confused :3 # this will add the overlays from ./overlays and also, # add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins # It will not apply to overall system, just nixCats. @@ -28,15 +23,13 @@ in { [ (utils.standardPluginOverlay inputs) ]; - # see the packageDefinitions below. + # This says which of those to install. packageNames = ["auroranvim"]; luaPath = "${./.}"; - # the .replace vs .merge options are for modules based on existing configurations, - # they refer to how multiple categoryDefinitions get merged together by the module. - # for useage of this section, refer to :h nixCats.flake.outputs.categories + # for usage of this section, refer to :h nixCats.flake.outputs.categories categoryDefinitions.replace = { pkgs, settings, @@ -65,9 +58,17 @@ in { docs = [nix-doc]; # TODO: i forgot how to integrate this into neovim }; rust = { - lsp = [cargo mpkgs.rust-analyzer]; + lsp = [ + cargo + # !!!!!!!!! remember to change environment variable !!!!!!!!!!!! + # currently a regression: https://github.com/rust-lang/rust-analyzer/pull/22207 + inputs.nixpkgs-rust.legacyPackages.${system}.rust-analyzer + ]; # nightly rustfmt has nicer features :3 - format = [inputs.fenix.packages.${system}.complete.rustfmt]; + format = [(rustfmt.override {asNightly = true;})]; + formatters = { + leptos = [leptosfmt]; + }; }; zig = { lsp = [zls]; @@ -100,6 +101,12 @@ in { toml = { format = [taplo]; }; + bash = { + lsp = [bash-language-server]; + }; + sql = { + format = [sqlfluff]; + }; }; }; @@ -120,18 +127,23 @@ in { optionalPlugins = with pkgs.vimPlugins; { general = []; - ui = [ - dressing-nvim - ]; + ui = { + dressing = [dressing-nvim]; + lualine = [lualine-nvim]; + hlchunk = [hlchunk-nvim]; + }; qol = [ undotree mini-hipatterns ]; - telescope = [ - telescope-nvim - telescope-fzf-native-nvim - telescope-ui-select-nvim - ]; + telescope = { + enable = [ + telescope-nvim + telescope-ui-select-nvim + ]; + fzf = [telescope-fzf-native-nvim]; + zf = [telescope-zf-native-nvim]; + }; fyler = [ fyler-nvim ]; @@ -159,10 +171,15 @@ in { comment = [ comment-nvim ]; - git = [ - resolve-nvim - vim-fugitive - ]; + git = { + merge = [ + resolve-nvim + vim-fugitive + ]; + gitsigns = [ + gitsigns-nvim + ]; + }; lang = { java = [ nvim-jdtls @@ -173,9 +190,7 @@ in { # shared libraries to be added to LD_LIBRARY_PATH # variable available to nvim runtime sharedLibraries = { - general = with pkgs; [ - # libgit2 - ]; + general = with pkgs; []; }; environmentVariables = { @@ -183,7 +198,7 @@ in { rust.lsp = { # it literally won't see the rust-analyzer provided to it # if you don't use an envrionment variable to tell it - RUST_ANALYZER_CMD = "${mpkgs.rust-analyzer}/bin/rust-analyzer"; + RUST_ANALYZER_CMD = "${inputs.nixpkgs-rust.legacyPackages.${pkgs.system}.rust-analyzer}/bin/rust-analyzer"; }; elixir.lsp = { ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh"; @@ -211,15 +226,11 @@ in { # see :help nixCats.flake.outputs.packageDefinitions packageDefinitions.replace = { - # these are the names of your packages - # you can include as many as you wish. auroranvim = {pkgs, ...}: { # they contain a settings set defined above # see :help nixCats.flake.outputs.settings settings = { wrapRc = true; - # IMPORTANT: - # your alias may not conflict with your other packages. aliases = [ "auravim" "foxyvim" @@ -227,14 +238,26 @@ in { "fvix" ]; }; - # and a set of categories that you want - # (and other information to pass to lua) + categories = { general = true; - ui = true; + ui = { + dressing = true; + lualine = true; + hlchunk = true; + }; + qol = true; - telescope = true; + + telescope = { + enable = true; + + # only enable one at a time + fzf = true; + zf = false; + }; + fyler = true; lsp = true; @@ -244,50 +267,48 @@ in { format = true; comment = true; - git = false; # not really setup yet + git = { + merge = false; # not really setup yet.. 2560 and 20 or 10 +local left_middle = (resolution.w - thin_res.w) / 4 +---@diagnostic enable: undefined-global + +scene:register("e_counter", { + kind = "mirror", + options = { + src = { x = 1, y = 37, w = 49, h = 9 }, + ---@diagnostic disable-next-line: undefined-global + dst = { x = left_middle - (49 * e_scale / 2), y = resolution.h / 10.8, w = 49 * e_scale, h = 9 * e_scale }, + depth = 0, + }, + groups = { "thin" }, +}) + +for _, ck in ipairs(pie_colors) do + scene:register("prct_mirror_" .. ck.input, { + kind = "mirror", + options = { + src = piechart_src(thin_res), + dst = piechart_dst(thin_res), + depth = 1, + color_key = ck, + }, + groups = { "thin" }, + }) +end + +ModeManager:define("thin", { + width = thin_res.w, + height = thin_res.h, + on_enter = function() + smart_enable_group("thin", true) + end, + on_exit = function() + smart_enable_group("thin", false) + end, + toggle_guard = mode_guard, +}) +-- }}} + +-- wide {{{ +---@diagnostic disable: undefined-global +local wide_res = { w = resolution.w, h = resolution.h / 3.6 } +---@diagnostic enable: undefined-global + +ModeManager:define("wide", { + width = wide_res.w, + height = wide_res.h, + on_enter = function() + smart_enable_group("wide", true) + end, + on_exit = function() + smart_enable_group("wide", false) + end, + toggle_guard = mode_guard, +}) +-- }}} + +-- tall {{{ +---@diagnostic disable: undefined-global +local tall_res = { w = 384, h = 16384 } +local measure_w = (resolution.w - tall_res.w) / 2 +local measure_h = (resolution.h * measure_w) / resolution.w +local measure_dst = { x = 0, y = (resolution.h - measure_h) / 2, w = measure_w, h = measure_h } +---@diagnostic enable: undefined-global + +scene:register("eye_measure", { + kind = "mirror", + options = { + src = { x = (tall_res.w - 60) / 2, y = (tall_res.h - 580) / 2, w = 60, h = 580 }, + dst = measure_dst, + depth = 0, + }, + groups = { "tall" }, +}) + +scene:register("eye_overlay", { + kind = "image", + ---@diagnostic disable-next-line: undefined-global + path = files.eye_overlay, + options = { dst = measure_dst, depth = 1 }, + groups = { "tall" }, +}) + +ModeManager:define("tall", { + width = tall_res.w, + height = tall_res.h, + on_enter = function() + smart_enable_group("tall", true) + waywall.set_sensitivity(tall_sens) + end, + on_exit = function() + smart_enable_group("tall", false) + waywall.set_sensitivity(0) + end, + toggle_guard = mode_guard, +}) +-- }}} + +-- normal res mirrors {{{ +for _, ck in ipairs(pie_colors) do + scene:register("prct_mirror_normal_" .. ck.input, { + kind = "mirror", + options = { + ---@diagnostic disable: undefined-global + src = piechart_src(resolution), + dst = piechart_dst(resolution), + ---@diagnostic enable: undefined-global + depth = 1, + color_key = ck, + }, + groups = { "normal" }, + }) +end +-- }}} + +-- startup actions +waywall.listen("load", function() + -- wait for title screen + repeat + local error, state = pcall(waywall.state) + waywall.sleep(1000) + until error == true and state.screen == "title" + + -- actual actions + ensure_ninjabrain() + scene:enable_group("normal", true) +end) + +local config = { + input = { + layout = "us", + repeat_rate = 40, + repeat_delay = 300, + + sensitivity = normal_sens, + confine_pointer = true, + + remaps = { + ["MB4"] = "F5", + ["MB5"] = "F3", + }, + }, + + theme = { + background = "#00000000", + -- https://github.com/Smithay/smithay/issues/1894 + ninb_anchor = "right", + }, + + ---@diagnostic disable: undefined-global + window = { + fullscreen_width = resolution.w, + fullscreen_height = resolution.h, + }, + ---@diagnostic enable: undefined-global + + actions = Keys.actions({ + ["*-F2"] = function() + toggle_global_guard() + end, + ["*-V"] = function() + return ModeManager:toggle("thin") + end, + ["*-B"] = function() + return ModeManager:toggle("tall") + end, + ["*-G"] = function() + return ModeManager:toggle("wide") + end, + ["Ctrl-Shift-L"] = function() + ensure_ninjabrain() + helpers.toggle_floating() + end, + }), +} + +return config diff --git a/hosts/nixarawrui/default.nix b/hosts/nixarawrui/default.nix index a86e456..a42abcc 100644 --- a/hosts/nixarawrui/default.nix +++ b/hosts/nixarawrui/default.nix @@ -9,6 +9,8 @@ ./hardware-configuration.nix ./modules/amdgpu-ignore-ctx-privileges.nix + + ../modules/programs/mcsr ]; # Use the systemd-boot EFI boot loader. @@ -22,17 +24,20 @@ # kernelPackages = upkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4; # TODO: idk make this a toggle or smth idfk - # kernelPackages = upkgs.linuxPackages_zen; - # FIX: it said my disk was full - kernelPackages = upkgs.linuxPackages_latest; + kernelPackages = upkgs.linuxPackages_zen; kernelModules = ["v4l2loopback"]; - # force kernel to use dGPU kernelParams = [ + # force kernel to use dGPU "amdgpu.primary=0000:03:00.0" "video=PCI:0000:03:00.0:e" "initcall_blacklist=simpledrm_platform_driver_init" "fbcon=map:0" - "pci=assign-busses" + + # stops kernel from setting power states on nvme drives because it keeps + # disconnecting my drive and my system locks up + "nvme_core.default_ps_max_latency_us=0" + "pcie_aspm=off" + "pcie_port_pm=off" ]; extraModulePackages = with kernelPackages; [v4l2loopback]; @@ -60,13 +65,11 @@ allowedTCPPorts = [ 21110 # slimevr - 44949 # rquickshare ]; allowedUDPPorts = [ 6969 # slimevr 8266 # slimevr 35903 # slimevr - 44949 # rquickshare ]; }; @@ -307,7 +310,18 @@ alvr = { enable = true; - package = upkgs.alvr; + + # package = upkgs.alvr.overrideAttrs (old: rec { + # postPatch = + # (old.postPatch or "") + # + '' + # substituteInPlace alvr/server_openvr/src/lib.rs \ + # --replace-fail \ + # "let early_hmd_initialization = !dashboard_process_paths.is_empty();" \ + # "let early_hmd_initialization = true;" + # ''; + # }); + openFirewall = true; }; @@ -362,11 +376,11 @@ }) # game stuff :3 - (lutris.override { - extraPkgs = upkgs: [ - libadwaita - ]; - }) + # (lutris.override { + # extraPkgs = upkgs: [ + # libadwaita + # ]; + # }) (steam.override { extraPkgs = upkgs: [ nss diff --git a/nixpkgs.nix b/nixpkgs.nix index 5bedfeb..1470160 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -1,6 +1,6 @@ {inputs, ...} @ args: { nixpkgs.channels = { - base = { + default = { overlays = [(import ./overlays.nix args)]; config.allowUnfree = true; }; diff --git a/snow.nix b/snow.nix index f54f5dc..8a63ff9 100644 --- a/snow.nix +++ b/snow.nix @@ -1,5 +1,6 @@ -{inputs, ...}: { - nodes = { +{cerulean, ...} @ inputs: +cerulean.mkNexus ./. (self: { + nexus = { args = {inherit inputs;}; modules = with inputs; []; @@ -11,7 +12,12 @@ servers = {}; }; - nodes = { + nodes = let + inherit + (self.nexus) + groups + ; + in { nixarawrui = { system = "x86_64-linux"; @@ -27,7 +33,7 @@ arcturus = { system = "x86_64-linux"; - groups = groups: [ + groups = [ groups.servers ]; @@ -114,7 +120,7 @@ lyra = { system = "x86_64-linux"; - groups = groups: [ + groups = [ groups.servers ]; @@ -126,4 +132,4 @@ }; }; }; -} +})