diff --git a/flake.lock b/flake.lock index f0dbb9d1b89b326a865764b2c31c27cf9f18ecfb..457bdacc7ef29a8a19b24ca5c434f5e3c6d43188 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ ] }, "locked": { - "lastModified": 1755807717, - "narHash": "sha256-x/IcOa+p9VFYlwXmuNhbZ8ce9As24rqy6uABv+tKacU=", + "lastModified": 1767990299, + "narHash": "sha256-Jz+cp9Ln4++1XiKw9KvZEM2dJ9AdOvayk97ybi9g7zc=", "owner": "tadfisher", "repo": "android-nixpkgs", - "rev": "4316f29f7f3b34c41f2639ae190022fbed60b850", + "rev": "449f2cadee7cb7b665aea209a67f8ecf30176653", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "sf-pro": "sf-pro" }, "locked": { - "lastModified": 1752383772, - "narHash": "sha256-I5Y0gUJS85lGEuuKr+tKSRUpJWeKavE+WmiAHRcyBaU=", + "lastModified": 1758228441, + "narHash": "sha256-3mA9oFuhJ1EHyhPd17g/EuJi4jDYPGhyxkEitdh3Kmc=", "owner": "Lyndeno", "repo": "apple-fonts.nix", - "rev": "875c694d7f0ec2020d7511264907a1f0e3262931", + "rev": "aba9944f6606a69ebedf7bfb723316139eec3f72", "type": "github" }, "original": { @@ -51,6 +51,39 @@ "type": "github" } }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1767024902, + "narHash": "sha256-sMdk6QkMDhIOnvULXKUM8WW8iyi551SWw2i6KQHbrrU=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "b8a0c5ba5a9fbd2c660be7dd98bdde0ff3798556", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -58,11 +91,11 @@ ] }, "locked": { - "lastModified": 1755825449, - "narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=", + "lastModified": 1767718503, + "narHash": "sha256-V+VkFs0aSG0ca8p/N3gib7FAf4cq9jyr5Gm+ZBrHQpo=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "8df64f819698c1fee0c2969696f54a843b2231e8", + "rev": "9f48ffaca1f44b3e590976b4da8666a9e86e6eb1", "type": "github" }, "original": { @@ -80,11 +113,11 @@ ] }, "locked": { - "lastModified": 1741473158, - "narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=", + "lastModified": 1764011051, + "narHash": "sha256-M7SZyPZiqZUR/EiiBJnmyUbOi5oE/03tCeFrTiUZchI=", "owner": "numtide", "repo": "devshell", - "rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0", + "rev": "17ed8d9744ebe70424659b0ef74ad6d41fc87071", "type": "github" }, "original": { @@ -94,6 +127,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1751685974, @@ -109,22 +158,6 @@ "url": "https://git.lix.systems/lix-project/flake-compat.git" } }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_3": { "flake": false, "locked": { @@ -141,6 +174,22 @@ "type": "github" } }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -149,11 +198,11 @@ ] }, "locked": { - "lastModified": 1754487366, - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "lastModified": 1760948891, + "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", "type": "github" }, "original": { @@ -181,24 +230,6 @@ } }, "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { "inputs": { "systems": "systems_3" }, @@ -216,28 +247,28 @@ "type": "github" } }, - "flake-utils_4": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { + "flake-utils_3": { "inputs": { "systems": "systems_6" }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_7" + }, "locked": { "lastModified": 1710146030, "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", @@ -252,9 +283,9 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_5": { "inputs": { - "systems": "systems_7" + "systems": "systems_8" }, "locked": { "lastModified": 1705309234, @@ -271,7 +302,13 @@ } }, "gitignore": { - "flake": false, + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, "locked": { "lastModified": 1709087332, "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", @@ -287,6 +324,22 @@ } }, "gitignore_2": { + "flake": false, + "locked": { + "lastModified": 1762808025, + "narHash": "sha256-XmjITeZNMTQXGhhww6ed/Wacy2KzD6svioyCX7pkUu4=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { "inputs": { "nixpkgs": [ "zls", @@ -314,11 +367,11 @@ ] }, "locked": { - "lastModified": 1755810213, - "narHash": "sha256-QdenO8f0PTg+tC6HuSvngKcbRZA5oZKmjUT+MXKOLQg=", + "lastModified": 1768018810, + "narHash": "sha256-WREj1ZQ2wSGtyPAhQJ3SX/7PJ29PNKv04h/7NgqUS+M=", "owner": "nix-community", "repo": "home-manager", - "rev": "6911d3e7f475f7b3558b4f5a6aba90fa86099baa", + "rev": "7c5d9345ad7cc38832cd4007f5cd03daad64d75b", "type": "github" }, "original": { @@ -328,6 +381,325 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1766946335, + "narHash": "sha256-MRD+Jr2bY11MzNDfenENhiK6pvN+nHygxdHoHbZ1HtE=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "4af02a3925b454deb1c36603843da528b67ded6c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_2", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1768000181, + "narHash": "sha256-/E66+tcVBnvJcOFL/CjnjBfKew6A2e+28EZrcRHioBw=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "81e7498ec27156ee97aabba6fe4993412d98d1ab", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1767023960, + "narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1766253372, + "narHash": "sha256-1+p4Kw8HdtMoFSmJtfdwjxM4bPxDK9yg27SlvUMpzWA=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "51a4f93ce8572e7b12b7284eb9e6e8ebf16b4be9", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1767473322, + "narHash": "sha256-RGOeG+wQHeJ6BKcsSB8r0ZU77g9mDvoQzoTKj2dFHwA=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "d5e7d6b49fe780353c1cf9a1cf39fa8970bd9d11", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, "langref": { "flake": false, "locked": { @@ -342,11 +714,11 @@ }, "mnw": { "locked": { - "lastModified": 1748710831, - "narHash": "sha256-eZu2yH3Y2eA9DD3naKWy/sTxYS5rPK2hO7vj8tvUCSU=", + "lastModified": 1758834834, + "narHash": "sha256-Y7IvY4F8vajZyp3WGf+KaiIVwondEkMFkt92Cr9NZmg=", "owner": "Gerg-L", "repo": "mnw", - "rev": "cff958a4e050f8d917a6ff3a5624bc4681c6187d", + "rev": "cfbc7d1cc832e318d0863a5fc91d940a96034001", "type": "github" }, "original": { @@ -357,17 +729,16 @@ }, "moonlight": { "inputs": { - "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1754439168, - "narHash": "sha256-NcwRidwb/ask65LE86os4RkhyoPQo5sLu0sJs/NboK4=", + "lastModified": 1765916709, + "narHash": "sha256-qc4m7v8hGOMb9BVLuiQZAbgzHoKfVwEY7HUl9fsY/hE=", "owner": "moonlight-mod", "repo": "moonlight", - "rev": "66b81b113afd6654a88c9adb7edb7fe92839fe84", + "rev": "d0ad754cf0b9c5a34d7f69595f407c8199f988ce", "type": "github" }, "original": { @@ -376,6 +747,39 @@ "type": "github" } }, + "ndg": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1765435293, + "narHash": "sha256-HRp4g6qBCb8vpJ17s2FacMRXRszM73uBiR56aILMELA=", + "owner": "feel-co", + "repo": "ndg", + "rev": "65bf834b332d5f8b28d95ea14c7974be7c272971", + "type": "github" + }, + "original": { + "owner": "feel-co", + "repo": "ndg", + "type": "github" + } + }, + "nix-filter": { + "locked": { + "lastModified": 1693833173, + "narHash": "sha256-hlMABKrGbEiJD5dwUSfnw1CQ3bG7KKwDV+Nx3bEZd7U=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "ac030bd9ba98e318e1f4c4328d60766ade8ebe8b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -383,11 +787,11 @@ ] }, "locked": { - "lastModified": 1755404379, - "narHash": "sha256-Q6ZxZDBmD/B988Jjbx7/NchxOKIpOKBBrx9Yb0zMzpQ=", + "lastModified": 1765267181, + "narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "ebbc1c05f786ae39bb5e04e57bf2c10c44a649e3", + "rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f", "type": "github" }, "original": { @@ -398,16 +802,16 @@ }, "nix-options-search": { "inputs": { - "flake-utils": "flake-utils_3", - "gitignore": "gitignore", - "nixpkgs": "nixpkgs" + "flake-utils": "flake-utils_2", + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1743876182, - "narHash": "sha256-qfiVewr5huupheLqStX60JSbjBEm9/PDncLQXE0dsXo=", + "lastModified": 1765642879, + "narHash": "sha256-LIKEZW++qgg8FSpJtAayv6yfIF3CO42GpryyeJ4pk7M=", "owner": "madsbv", "repo": "nix-options-search", - "rev": "f52dc6986161570a2ffffdf337c88b503e9a58fb", + "rev": "b91e3ad2b4f3afbf0ceadb140fb9a0d342733b2e", "type": "github" }, "original": { @@ -418,15 +822,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736012469, - "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", - "owner": "nixos", + "lastModified": 1767379071, + "narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "rev": "fb7944c166a3b630f177938e478f0378e64ce108", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -434,20 +838,68 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 1762977756, + "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1767966113, + "narHash": "sha256-mSTsvXa4WveSRJexsmCbm9dY17B1fKp7NLpJxllpQw4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "5f02c91314c8ba4afe83b256b023756412218535", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { + "locked": { + "lastModified": 1764242076, + "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { "locked": { "lastModified": 1708161998, "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", @@ -463,7 +915,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_7": { "locked": { "lastModified": 1717696253, "narHash": "sha256-1+ua0ggXlYYPLTmMl3YeYYsBXDSCqT+Gw3u6l4gvMhA=", @@ -481,20 +933,21 @@ }, "nvf": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", "mnw": "mnw", + "ndg": "ndg", "nixpkgs": [ "nixpkgs" ], "systems": "systems_4" }, "locked": { - "lastModified": 1755843058, - "narHash": "sha256-oAajTGcyTzuND7AAlaRXO+wF7ytAMOnrE4sYUjRonB8=", + "lastModified": 1765537745, + "narHash": "sha256-EaFYxx2aSuM2xx+l+E55YNMCJOoQBl2tJybxyF0pPqw=", "owner": "notashelf", "repo": "nvf", - "rev": "d36996c8ba5c8d68b5def1b660e06d281ef0a3a8", + "rev": "8e031476d0d7f326b63c9c5522f840e2f8b724c0", "type": "github" }, "original": { @@ -516,18 +969,44 @@ "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767281941, + "narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "android-nixpkgs": "android-nixpkgs", "apple-fonts": "apple-fonts", "darwin": "darwin", "home-manager": "home-manager", + "hyprland": "hyprland", "moonlight": "moonlight", "nix-index-database": "nix-index-database", "nix-options-search": "nix-options-search", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nvf": "nvf", "rust-overlay": "rust-overlay", + "split-monitor-workspaces": "split-monitor-workspaces", + "vicinae": "vicinae", "zen-browser": "zen-browser", "zig": "zig", "zls": "zls" @@ -540,11 +1019,11 @@ ] }, "locked": { - "lastModified": 1755830208, - "narHash": "sha256-fMa/Hcg+4O2h+kl3gNPjtGSWPI8NtCl3LYMsejK6qGA=", + "lastModified": 1768012928, + "narHash": "sha256-HFFVQaux1JoOjEvgBT0ASk1Je+jsipyO5c91FoLMed8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "802a7b97f8ff672ba2dec70c9e354f51f844e796", + "rev": "312b4371e72f644ffcff25b23615195e3b390643", "type": "github" }, "original": { @@ -580,7 +1059,7 @@ "sf-compact": { "flake": false, "locked": { - "narHash": "sha256-VMCf2Mhmx/qhLRQxlTAsQWxtonS27kPW+oTYBBRWHMg=", + "narHash": "sha256-WeqT80cdK/XzTLSaJs5DHodzxoeAzwL/xTgdq0YwQbM=", "type": "file", "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" }, @@ -628,7 +1107,7 @@ "sf-pro": { "flake": false, "locked": { - "narHash": "sha256-RX6X2ltVE88Hp1g9tpSywMT3UfdLpRxgw92KRpiAues=", + "narHash": "sha256-vprahHpCUf9O8RualBrEuLEfuLfzI/2d8AQmwlCGPPk=", "type": "file", "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" }, @@ -637,6 +1116,27 @@ "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" } }, + "split-monitor-workspaces": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nix-filter": "nix-filter" + }, + "locked": { + "lastModified": 1767711026, + "narHash": "sha256-yTuyde8TpBR3NhNnOcK4uOGukvMCwrH3otP8E04e9X0=", + "owner": "Duckonaut", + "repo": "split-monitor-workspaces", + "rev": "764548c3aa22c9f4cb436ec7243d21795eb6ebec", + "type": "github" + }, + "original": { + "owner": "Duckonaut", + "repo": "split-monitor-workspaces", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -654,16 +1154,16 @@ }, "systems_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -742,6 +1242,81 @@ "type": "github" } }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "vicinae": { + "inputs": { + "nixpkgs": "nixpkgs_5", + "systems": "systems_5" + }, + "locked": { + "lastModified": 1767958732, + "narHash": "sha256-Jy7Px8fWfZgRRWcv5d8XTddPDaHRJ1o4mG3yTlEkXTo=", + "owner": "vicinaehq", + "repo": "vicinae", + "rev": "c80929ea3f44d540a5063ad1262799aa32a7929c", + "type": "github" + }, + "original": { + "owner": "vicinaehq", + "repo": "vicinae", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, "zen-browser": { "inputs": { "nixpkgs": [ @@ -749,11 +1324,11 @@ ] }, "locked": { - "lastModified": 1754886070, - "narHash": "sha256-MZDmxOkVKL1HY72bliN8Gxh0SYkHUa3W/1fTU2ke36I=", + "lastModified": 1767618227, + "narHash": "sha256-9+XVF47E9NCVs249SSsDtr7YdG/23/lCJmWAjQvOfqI=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "e37d2b326311320c8571111b3ef89b29d26d4b64", + "rev": "1586e49b3908b058e221f11d843eb46392dba17b", "type": "github" }, "original": { @@ -763,29 +1338,29 @@ } }, "zig": { - "inputs": { - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1755605615, - "narHash": "sha256-J0Cxren2QLeI0ZvRZw4XGcMm4q3uPIZHM+eJnaZfXX8=", - "owner": "mitchellh", - "repo": "zig-overlay", - "rev": "714fae26049a263ff2e4641ce7c973f371f4b005", - "type": "github" - }, - "original": { - "owner": "mitchellh", - "repo": "zig-overlay", - "type": "github" - } - }, - "zig-overlay": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1767919086, + "narHash": "sha256-t9Z7r8yJDbRqoAhm7vsohHAhMGF373NCWt/XeHlZAWw=", + "owner": "mitchellh", + "repo": "zig-overlay", + "rev": "d7671671de8bd3afcabffefc77c75ed9777b249b", + "type": "github" + }, + "original": { + "owner": "mitchellh", + "repo": "zig-overlay", + "type": "github" + } + }, + "zig-overlay": { + "inputs": { + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_5", "nixpkgs": [ "zls", "nixpkgs" @@ -807,10 +1382,10 @@ }, "zls": { "inputs": { - "flake-utils": "flake-utils_5", - "gitignore": "gitignore_2", + "flake-utils": "flake-utils_4", + "gitignore": "gitignore_3", "langref": "langref", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_7", "zig-overlay": "zig-overlay" }, "locked": { diff --git a/flake.nix b/flake.nix index cebe693a0da4cbaf4b7f067231349b803ff3d5b3..ffbf73ebbc250227200823d2e60c2cc4139855db 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ { description = "multi device configuration flake"; inputs = { - nixpkgs.url = "nixpkgs/nixos-unstable"; + nixpkgs.url = "nixpkgs/nixpkgs-unstable"; home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; @@ -24,6 +24,14 @@ moonlight.url = "github:moonlight-mod/moonlight"; # Add `/develop` to the flake URL to use nightly. moonlight.inputs.nixpkgs.follows = "nixpkgs"; + hyprland.url = "github:hyprwm/Hyprland"; + split-monitor-workspaces = { + url = "github:Duckonaut/split-monitor-workspaces"; + inputs.hyprland.follows = "hyprland"; + }; + + vicinae.url = "github:vicinaehq/vicinae"; + zen-browser = { url = "github:youwen5/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; @@ -70,6 +78,8 @@ # custom packages (_: pkgs: { autofmt = pkgs.callPackage ./packages/autofmt { }; + exiled_exchange_2 = pkgs.callPackage ./packages/exiled_exchange_2 { }; + awakened_poe_trade = pkgs.callPackage ./packages/awakened_poe_trade { }; }) ]; diff --git a/lib/mkSystem.nix b/lib/mkSystem.nix index 9e3a13c459d7382e0c7d888d249f7ccb23a00fff..e8f6a0ce18544893f6ecffe87e6e86b065885c44 100644 --- a/lib/mkSystem.nix +++ b/lib/mkSystem.nix @@ -76,6 +76,7 @@ let ) inputs.nvf.homeManagerModules.default inputs.android-nixpkgs.hmModule + inputs.vicinae.homeManagerModules.default ]; in systemFunc { diff --git a/modules/home/default.nix b/modules/home/default.nix index 0ac5223e3ee64e211c6ef563ae76a5f01abd048b..fc538513d7e2b2bfb7916c71e2a97e1aa8bcc633 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -35,12 +35,12 @@ in sdk: with sdk; [ - build-tools-35-0-0 + build-tools-36-0-0 cmdline-tools-latest emulator platform-tools - platforms-android-35 - sources-android-35 + platforms-android-36 + sources-android-36 ndk-27-1-12297006 cmake-3-22-1 ] @@ -49,8 +49,8 @@ in system-images-android-35-google-apis-playstore-arm64-v8a ] ++ lib.optionals host.linux [ - system-images-android-35-google-apis-x86-64 - system-images-android-35-google-apis-playstore-x86-64 + system-images-android-36-google-apis-x86-64 + system-images-android-36-google-apis-playstore-x86-64 ]; }; xdg = { @@ -69,8 +69,10 @@ in git = { enable = true; - userName = lib.mkDefault user.name; - userEmail = lib.mkDefault user.email; + settings.user = { + name = lib.mkDefault user.name; + email = lib.mkDefault user.email; + }; ignores = [ (lib.mkIf host.darwin ".DS_Store") # When using Finder (lib.mkIf host.darwin "._*") # When using non-APFS drives @@ -89,7 +91,7 @@ in extraPackages = with pkgs.bat-extras; [ batdiff batman - batgrep + # batgrep batwatch batpipe prettybat @@ -138,17 +140,19 @@ in jujutsu = { settings = { user = { - email = config.programs.git.userEmail; - name = config.programs.git.userName; + inherit (config.programs.git.settings.user) name email; }; - signing = { - behavior = "own"; - backend = "ssh"; + signing = lib.mkIf (config.programs.git.signing.format != null) { + backend = config.programs.git.signing.format; key = "~/.ssh/id_ed25519.pub"; + # signatures are slow, compute them on push instead of on change. + behavior = "drop"; }; git = { - sign-on-push = true; - push-new-bookmarks = true; + sign-on-push = config.programs.git.signing.key != null; + }; + remotes.origin = { + auto-track-bookmarks = "glob:*"; }; ui = { default-command = "log"; diff --git a/modules/neovim/default.nix b/modules/neovim/default.nix index 6a31c91a848672da9814e0b6bd9e5c5ad48a29f8..e87139d7b90a9538b6e437893ef4fc1a4adca585 100644 --- a/modules/neovim/default.nix +++ b/modules/neovim/default.nix @@ -82,7 +82,7 @@ servers.nixd.init_options.autoArchive = true; }; treesitter = { - enable = true; + enable = false; addDefaultGrammars = true; # this is buggy and keybind.nix overwrites its keymaps anyways incrementalSelection.enable = false; @@ -99,7 +99,7 @@ }; languages = { enableFormat = true; - enableTreesitter = true; + enableTreesitter = false; enableExtraDiagnostics = true; # enable debug adapter protocol by default enableDAP = true; @@ -111,13 +111,13 @@ html.enable = true; nix.enable = true; python.enable = true; - rust.crates.enable = true; rust.enable = true; ts.enable = true; zig.enable = true; # sort-lines: off - nix.lsp.servers = "nixd"; + nix.lsp.servers = [ "nixd" ]; + rust.extensions.crates-nvim.enable = true; }; filetree.neo-tree = { enable = true; diff --git a/modules/nixos/ld.nix b/modules/nixos/ld.nix index fc09f687d9e8284eefec1395ab68b70c318597a9..cfbf4e05fed55f65b714cd31efa6fe21a2bcd3fb 100644 --- a/modules/nixos/ld.nix +++ b/modules/nixos/ld.nix @@ -6,6 +6,7 @@ programs.nix-ld.libraries = with pkgs; [ # common requirement for several games stdenv.cc.cc.lib + libxcrypt # from https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/games/steam/fhsenv.nix#L72-L79 xorg.libXcomposite diff --git a/modules/nixos/services.nix b/modules/nixos/services.nix index ef9feae71a6c4a24e847da17779522d023138b74..20314be33a994a99e64cfe4c4e0f5866b8d576ef 100644 --- a/modules/nixos/services.nix +++ b/modules/nixos/services.nix @@ -22,6 +22,23 @@ }; }; + gvfs.enable = true; + + gnome = { + tinysparql.enable = true; + gnome-keyring.enable = true; + }; + + fstrim.enable = true; + + dbus = { + enable = true; + packages = [ + pkgs.gcr + pkgs.gnome-settings-daemon + ]; + }; + # Auto mount devices udisks2 = { enable = true; diff --git a/modules/shared/nix.nix b/modules/shared/nix.nix index 7997bf0f9cf8b0613f98f2a09d69e8929a9fe821..d07ba84632ced91604678563ceaaa68c313fdc20 100644 --- a/modules/shared/nix.nix +++ b/modules/shared/nix.nix @@ -28,11 +28,15 @@ "https://nix-community.cachix.org" # For haskell "https://cache.iog.io" + #vicinae + "https://vicinae.cachix.org" ]; trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" # For haskell "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" + #vicinae + "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc=" ]; }; gc = { diff --git a/packages/autofmt/default.nix b/packages/autofmt/default.nix index fa006e3e7dc0b83bcc7ebb686daafe54b4925e08..45db7d83280d053850fcd1f77fc1a757e338ed38 100644 --- a/packages/autofmt/default.nix +++ b/packages/autofmt/default.nix @@ -6,7 +6,7 @@ pkgs.writeShellApplication { clang-tools deno dprint - nixfmt-rfc-style + nixfmt prettierd # autofmt only runs on a local build of prettier rustfmt zig diff --git a/packages/awakened_poe_trade/default.nix b/packages/awakened_poe_trade/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..d72e45fdf84352955938190fe3a0b9d586eaa259 --- /dev/null +++ b/packages/awakened_poe_trade/default.nix @@ -0,0 +1,35 @@ +{ pkgs, lib, ... }: + +let + pname = "awakened-poe-trade"; + version = "3.26.102"; + name = "${pname}-${version}"; + + src = pkgs.fetchurl { + url = "https://github.com/SnosMe/awakened-poe-trade/releases/download/v${version}/Awakened-PoE-Trade-${version}.AppImage"; + sha256 = "sha256-kWMRZvAZKzGFXX7QJJN7eIs88ZDGWU8sMuyQhLgPQCY= +"; + }; + + appimageContents = pkgs.appimageTools.extract { inherit pname version src; }; +in +pkgs.appimageTools.wrapType2 rec { + inherit pname version src; + + extraInstallCommands = '' + install -m 444 -D ${appimageContents}/awakened-poe-trade.desktop $out/share/applications/${pname}.desktop + + install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png + + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U' + ''; + + meta = with lib; { + description = "Awakened-PoE-Trade"; + homepage = "https://github.com/SnosMe/awakened-poe-trade"; + license = licenses.mit; + maintainers = [ ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/packages/exiled_exchange_2/default.nix b/packages/exiled_exchange_2/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..8413c3bbd97e364a1382defd7d06af914e58e5cd --- /dev/null +++ b/packages/exiled_exchange_2/default.nix @@ -0,0 +1,34 @@ +{ pkgs, lib, ... }: + +let + pname = "exiled-exchange-2"; + version = "0.12.6"; + name = "${pname}-${version}"; + + src = pkgs.fetchurl { + url = "https://github.com/Kvan7/Exiled-Exchange-2/releases/download/v${version}/Exiled-Exchange-2-${version}.AppImage"; + sha256 = "sha256-2CBdsLQ0EHTINd05ABv8NyCYt2ipYfwmkcpw0SLZRwc=="; + }; + + appimageContents = pkgs.appimageTools.extract { inherit pname version src; }; +in +pkgs.appimageTools.wrapType2 rec { + inherit pname version src; + + extraInstallCommands = '' + install -m 444 -D ${appimageContents}/exiled-exchange-2.desktop $out/share/applications/${pname}.desktop + + install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png + + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U' + ''; + + meta = with lib; { + description = "Exiled Exchange 2"; + homepage = "https://kvan7.github.io/Exiled-Exchange-2/"; + license = licenses.mit; + maintainers = [ ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/switch b/switch index bf5697d655d9362730c9db9854db34b7950154fc..04af03eb5978615a646d5094da65c81dc95f7d60 100755 --- a/switch +++ b/switch @@ -1,16 +1,17 @@ #!/bin/sh +set -e +cd "$(dirname "$0")" nh_subcommand="os" fallback_command="nixos-rebuild" -hostname_file="$(dirname "$0")/.hostname" if [ -n "$1" ]; then hostname="$1" -elif [ -f "$hostname_file" ]; then - hostname=$(cat "$hostname_file") +elif [ -f ".hostname" ]; then + hostname=$(cat .hostname) fi if [ -z "$hostname" ]; then hostname="$(hostname)" fi -printf "%s" "$hostname" >"$hostname_file" +printf "%s" "$hostname" >.hostname if [ "$(uname -o)" = "Darwin" ]; then nh_subcommand="darwin" fallback_command="nix run .#darwin-rebuild" diff --git a/users/clover/configuration.nix b/users/clover/configuration.nix index 103b011a987ed79def16b4bae7aef256192e681d..a02a361b99dede3b63eeef4c137f3f6e12e9e63e 100644 --- a/users/clover/configuration.nix +++ b/users/clover/configuration.nix @@ -17,6 +17,14 @@ ]; }; + homebrew = { + enable = true; + casks = [ + "db-browser-for-sqlite" + "alt-tab" + ]; + }; + # system preferences system.defaults = { NSGlobalDomain = { diff --git a/users/clover/home.nix b/users/clover/home.nix index 4f799cb1e39b41021b6abfc173356266bfab50b0..7e413bb4c3b2119ee41154823fb239c50d796f50 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -1,4 +1,9 @@ -{ pkgs, host, ... }: +{ + config, + pkgs, + host, + ... +}: let hostServer = false; in @@ -14,23 +19,19 @@ in ripgrep uv nh - pkgs.autofmt + autofmt + gnupg + nodejs_24 ]; # packages to install for desktop environments (non-server) desktop = [ - git-town - lazygit - jjui ]; # packages to install on all servers server = [ ]; # packages to install on macOS desktops - darwin = [ - raycast - ]; + darwin = [ ]; # packages to install on linux desktops linux = [ - reaper # TODO: why does this break on macOS ]; in all ++ (if host.darwin then darwin else linux) ++ (if hostServer then server else desktop); @@ -50,23 +51,32 @@ in settings = { theme = "light:Farmhouse Light,dark:Challenger Deep"; font-family = "AT Name Mono"; - adjust-cursor-thickness = 1; - background-opacity = 0.9; + adjust-cursor-thickness = 2; + background-opacity = 0.95; background-blur = true; + unfocused-split-opacity = 1; }; }; # zsh is the shell i use zsh = { enable = true; + dotDir = "${config.xdg.configHome}/zsh"; shellAliases = { switch = "~/config/switch"; - gg = "lazygit"; - ga = "git add"; - g = "git status"; - gp = "git pull --rebase && git push"; + + # move a bookmark from the previous commit + jf = "jj git fetch"; + e = "jj edit"; + d = "jj desc"; + bup = "jj b m --from 'heads(::@- & bookmarks())' --to '@'"; + moveself = "jj rebase -r @ -d"; + logall = "jj log -r 'all()'"; + cherry = "jj git fetch && jj split -i -p -m 'SPLIT_CHANGES' && jj edit -r 'description(\"SPLIT_CHANGES\")' && jj desc -m '' --edit"; }; - profileExtra = '' + initContent = '' + export PS1="%{$(tput setaf 207)%}%m%{$(tput setaf 15)%}:%{$(tput setaf 87)%}%~ %{$(tput sgr0)%}$ " + function python() { dirname=$(dirname $1 2>/dev/null) if [ -z "$dirname" ]; then @@ -74,11 +84,44 @@ in fi uv run --project "$dirname" "$@" } + + function bun() { + if [[ "$1" = "build" ]]; then + command bun run "$@" + elif [[ "$1" = "bundle" ]]; then + shift + command bun build "$@" + else + command bun "$@" + fi + } + + function jj() { + if [[ "$*" = "git push"* ]] && [[ "$*" != *"--dry-run"* ]]; then + command jj "$@" --dry-run + printf "Press any key to continue... " + read -r + command jj "$@" + else + command jj "$@" + fi + } ''; }; - # use a git-specific email - git.userEmail = "git@paperclover.net"; + git = { + # use a git-specific email + settings.user.email = "git@paperclover.net"; + settings.gpg.ssh.allowedSignersFile = "${pkgs.writeText "allowed_signers" '' + git@paperclover.net ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAVa1aq1LEj/VXHJYlR5HJpK65lS/9jOL/dAB9ZS1chd + ''}"; + # signing + signing = { + signByDefault = true; + key = "~/.ssh/id_ed25519"; + format = "ssh"; + }; + }; jujutsu = { enable = true; @@ -148,133 +191,39 @@ in }; # ui.graph.style = "square"; revsets = { - log = "ancestors(description(regex:\"^(WIP:|\\\\s*$)\"), 3) | ancestors(immutable_heads(), 2) | ancestors(visible_heads(), 2)"; short-prefixes = "(trunk()..@)::"; }; - templates.log = "hl_wip(self)"; - - template-aliases = { - # log template, highlighting the WIP commits by making everything else faded out - "hl_wip(commit)" = '' - if(commit.root(), format_root_commit(commit), - label("__commit__", - format_short_commit_header(commit) ++ "\n" ++ - format_commit_description(commit) - ) - ) - ''; - - "format_commit_description(commit)" = '' - label("desc", format_commit_firstline(commit.description().first_line())) ++ - "\n" ++ if( - commit.description().starts_with("WIP:") || commit.current_working_copy(), - commit.description().remove_prefix(commit.description().first_line()).remove_prefix("\n").trim_end() ++ "\n ", - if(commit.description().remove_prefix(commit.description().first_line()).trim().len() > 0, - label("muted", lines_collapsed(commit.description().lines().filter(|x| x.trim().len() > 0).len() - 1)), - " " - ) - ) - ''; - "lines_collapsed(count)" = - ''("[" ++ stringify(count ++ " line" ++ if(count == 1, "", "s")) ++ " collapsed]\n")''; - "format_commit_firstline(line)" = '' - if(line.starts_with("WIP:"), - label("cc_wip", " WIP ") ++ " " ++ format_commit_firstline_a_wip(line.remove_prefix("WIP:").trim()), - format_commit_firstline_a_wip(line) - ) - ''; - "format_commit_firstline_a_wip(line)" = '' - if(line.starts_with("feat:") || line.starts_with("feat("), - label("cc_feat", "feat") ++ format_commit_firstline_a_cc_type(line.remove_prefix("feat")), - if(line.starts_with("fix:") || line.starts_with("fix("), - label("cc_fix", "fix") ++ format_commit_firstline_a_cc_type(line.remove_prefix("fix")), - if(line.starts_with("hotfix:") || line.starts_with("hotfix("), - label("cc_hotfix", "hotfix") ++ format_commit_firstline_a_cc_type(line.remove_prefix("hotfix")), - if(line.starts_with("chore:") || line.starts_with("chore("), - label("cc_chore", "chore") ++ format_commit_firstline_a_cc_type(line.remove_prefix("chore")), - if(line.starts_with("test:") || line.starts_with("test("), - label("cc_other", "test") ++ format_commit_firstline_a_cc_type(line.remove_prefix("test")), - if(line.starts_with("refactor:") || line.starts_with("refactor("), - label("cc_other", "refactor") ++ format_commit_firstline_a_cc_type(line.remove_prefix("refactor")), - if(line.starts_with("perf:") || line.starts_with("perf("), - label("cc_other", "perf") ++ format_commit_firstline_a_cc_type(line.remove_prefix("perf")), - if(line.starts_with("lib:") || line.starts_with("lib("), - label("cc_other", "lib") ++ format_commit_firstline_a_cc_type(line.remove_prefix("lib")), - label("cc_header", line) - )))))))) - ''; - "format_commit_firstline_a_cc_type(rest)" = '' - if(rest.starts_with("(") && rest.contains(")"), - format_firstline_cc_scope(rest, index_of_close_paren(rest)), - format_firstline_a_cc(rest)) - ''; - "format_firstline_cc_scope(rest, index)" = '' - label("cc_scope", rest.substr(0, index)) ++ format_firstline_a_cc(rest.substr(index, rest.len())) - ''; - "format_firstline_a_cc(rest)" = '' - if(rest.starts_with(":"), - label("muted", ":") ++ label("cc_header", rest.remove_prefix(":")), - label("cc_header", rest) - ) - ''; - # sorry! - "index_of_close_paren(line)" = '' - stringify(if(line.substr(1, 2) == ")", "A", - if(line.substr(2, 3) == ")", "AA", - if(line.substr(3, 4) == ")", "AAA", - if(line.substr(4, 5) == ")", "AAAA", - if(line.substr(5, 6) == ")", "AAAAA", - if(line.substr(6, 7) == ")", "AAAAAA", - if(line.substr(7, 8) == ")", "AAAAAAA", - if(line.substr(8, 9) == ")", "AAAAAAAA", - if(line.substr(9, 10) == ")","AAAAAAAAA", - if(line.substr(10, 11) == ")", "AAAAAAAAAA", - if(line.substr(11, 12) == ")", "AAAAAAAAAAA", - if(line.substr(12, 13) == ")", "AAAAAAAAAAAA", - if(line.substr(13, 14) == ")", "AAAAAAAAAAAAA", - if(line.substr(14, 15) == ")", "AAAAAAAAAAAAAA", - if(line.substr(15, 16) == ")", "AAAAAAAAAAAAAAA", - if(line.substr(16, 17) == ")", "AAAAAAAAAAAAAAAA", - if(line.substr(17, 18) == ")", "AAAAAAAAAAAAAAAAA", - if(line.substr(18, 19) == ")", "AAAAAAAAAAAAAAAAAA", - if(line.substr(19, 20) == ")", "AAAAAAAAAAAAAAAAAAA", - if(line.substr(20, 21) == ")", "AAAAAAAAAAAAAAAAAAAA", - "AAAAAAAAAAAAAAAAAAAAA" - ))))))))))))))))))))).len() + 1 - ''; - - "format_short_signature(signature)" = "signature.name()"; - "format_timestamp(timestamp)" = "timestamp.ago()"; - "format_short_commit_header(commit)" = '' - separate(" ", - if(commit.current_working_copy(), label("active_marker", " ACTIVE ")), - if(commit.conflict(), label("conflict_marker", " CONFLICT ")), - format_short_change_id_with_hidden_and_divergent_info(commit), - format_short_signature(commit.author()), - label("muted", "|"), - if(commit.description().trim().len() > 0, label("muted", format_timestamp(commit_timestamp(commit)))), - commit.bookmarks(), - commit.tags(), - commit.working_copies(), - label("muted", "(") ++ - format_short_commit_id(commit.commit_id()) ++ - label("muted", ")"), - if(config("ui.show-cryptographic-signatures").as_boolean(), - format_short_cryptographic_signature(commit.signature())), - ) - ''; + aliases = { + "ab" = [ "abandon" ]; + # "ai" = [ + # "util" + # "exec" + # "--" + # "~/jj-ai-sync.sh" + # ]; }; }; }; ssh = { enable = true; + enableDefaultConfig = false; + extraConfig = '' + Include ~/.orbstack/ssh/config* + + SetEnv TERM=xterm-256color + ''; matchBlocks = rec { + "*" = { }; zenith = { user = "clo"; - port = 222; + port = 22; + }; + "git.paperclover.net" = zenith; + "paperclover.net" = { + user = "clo"; + port = 22; }; - "nas.paperclover.net" = zenith; }; }; }; diff --git a/users/clover/paperback/configuration.nix b/users/clover/paperback/configuration.nix index 33d6590bbae174414152184a49ac07e49f4204a8..87a13d7f8638f6a81a6931539129b22e07a0512c 100644 --- a/users/clover/paperback/configuration.nix +++ b/users/clover/paperback/configuration.nix @@ -1,8 +1,2 @@ _: { - homebrew = { - enable = true; - casks = [ - "db-browser-for-sqlite" - ]; - }; } diff --git a/users/clover/paperback/home.nix b/users/clover/paperback/home.nix index 47d88a2034872f1efc7c06355eef2e3b004436b3..6686bc71ada574880cc557bb0207d2d8cef33c11 100644 --- a/users/clover/paperback/home.nix +++ b/users/clover/paperback/home.nix @@ -12,7 +12,6 @@ }; home.packages = with pkgs; [ deno - nodejs_22 rustup typescript pm2 diff --git a/users/clover/work/home.nix b/users/clover/work/home.nix index a5fb595349707f6b857c0e40e4208e08ccdeb756..a6687ddcafbae66923c46d6cd449de1514f6eccc 100644 --- a/users/clover/work/home.nix +++ b/users/clover/work/home.nix @@ -8,17 +8,17 @@ } ''; }; + programs.git.signing.key = "CE485807AE4068AF8508C8DC5CBB21841C7920AD"; home.packages = with pkgs; [ (bun.overrideAttrs (_: rec { - version = "1.1.17"; + version = "1.3.0"; src = fetchurl { url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip"; - hash = "sha256-aULgRZ9evcGUhKJ6slLJOg3IEzUeNfIkJF8RDP3YUlo="; + hash = "sha256-hYSOP5ZIHvyr51pQD9O5S5u5VoaretCjiSl2x74VA2o="; }; })) doppler deno - nodejs_24 rustup typescript ssm-session-manager-plugin diff --git a/users/natalie/desktop/configuration.nix b/users/natalie/desktop/configuration.nix index ade64ee3abc72adf0e5e2918d0dfeb9ff90c28e6..4a872b330b4d5d554afffaff5293e37653e2d7c4 100644 --- a/users/natalie/desktop/configuration.nix +++ b/users/natalie/desktop/configuration.nix @@ -10,7 +10,19 @@ ./hardware-configuration.nix ]; documentation.man.generateCaches = false; + services.displayManager = { + enable = true; + sddm = { + enable = true; + wayland.enable = true; + }; + }; + programs = { + hyprland = { + enable = true; + withUWSM = true; + }; gamemode.enable = true; _1password.enable = true; @@ -35,7 +47,19 @@ steam = { enable = true; - package = with pkgs; steam.override { extraPkgs = pkgs: [ attr ]; }; + remotePlay.openFirewall = true; + + gamescopeSession.enable = true; + extraCompatPackages = [ pkgs.proton-ge-bin ]; + }; + + gamescope = { + enable = true; + capSysNice = true; + args = [ + "--rt" + "--expose-wayland" + ]; }; git = { @@ -56,12 +80,23 @@ }; hardware.bluetooth.enable = true; + hardware.graphics.enable = true; xdg.portal = { enable = true; + xdgOpenUsePortal = true; + config = { + common.default = [ "gtk" ]; + hyprland.default = [ + "gtk" + "hyprland" + ]; + }; + extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; }; virtualisation = { + waydroid.enable = true; containers.enable = true; podman = { enable = true; @@ -83,6 +118,7 @@ hibernate.enable = false; hybrid-sleep.enable = false; }; + settings.Manager.DefaultTimeoutStopSec = "10s"; services.monitord.wantedBy = [ "multi-user.target" ]; }; @@ -121,11 +157,6 @@ # Enable sound with pipewire. security.rtkit.enable = true; - services = { - desktopManager.cosmic.enable = true; - displayManager.cosmic-greeter.enable = true; - desktopManager.cosmic.xwayland.enable = true; - }; # Enable touchpad support (enabled default in most desktopManager). # services.xserver.libinput.enable = true; diff --git a/users/natalie/desktop/home.nix b/users/natalie/desktop/home.nix index 6b220f0b2bc58d2861e9dc5588ff4c6576b147cc..65b4bcabdea99e9732feabd3f5c32a821af45c97 100644 --- a/users/natalie/desktop/home.nix +++ b/users/natalie/desktop/home.nix @@ -15,8 +15,7 @@ packages = with pkgs; [ #building macos apps hard :( ghostty - stremio - julia + #stremio broken qtwebengine qbittorrent #gaming @@ -34,6 +33,9 @@ limo nexusmods-app-unfree protontricks + (pkgs.callPackage ../../../packages/exiled_exchange_2 { }) + awakened_poe_trade + fuse-overlayfs #window manager stuff wofi diff --git a/users/natalie/home.nix b/users/natalie/home.nix index f5999757d79db11a7c1160fa9a88551a997f1f81..1001ee382ad204cee304754fa57b626df11e4f0b 100644 --- a/users/natalie/home.nix +++ b/users/natalie/home.nix @@ -5,6 +5,9 @@ ... }@args: { + imports = [ + ./home + ]; programs = { # sort-lines:start atuin.enable = true; @@ -28,6 +31,10 @@ }; }; # sort-lines:end + ghostty = { + enable = true; + settings.theme = "Catppuccin Mocha"; + }; fish = { shellAliases = diff --git a/users/natalie/home/default.nix b/users/natalie/home/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..445c2f4561b6fe3a0a7c394810c132ce4da4e2e2 --- /dev/null +++ b/users/natalie/home/default.nix @@ -0,0 +1,12 @@ +{ ... }: +{ + imports = [ + ./tmux.nix + ./hyprland + ./vicinae.nix + ./swaync.nix + ./gtk.nix + ./waybar + ./scripts + ]; +} diff --git a/users/natalie/home/gtk.nix b/users/natalie/home/gtk.nix new file mode 100644 index 0000000000000000000000000000000000000000..586985e1e4dcf610ea367eca2f3a6d2fd001164b --- /dev/null +++ b/users/natalie/home/gtk.nix @@ -0,0 +1,35 @@ +{ pkgs, ... }: +{ + + gtk = { + enable = true; + + font = { + name = "Maple Mono"; + size = 12; + }; + theme = { + name = "Catppuccin-GTK-Dark"; + package = pkgs.magnetic-catppuccin-gtk.override { + tweaks = [ + "float" + ]; + }; + }; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + cursorTheme = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + size = 24; + }; + }; + + home.pointerCursor = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + size = 24; + }; +} diff --git a/users/natalie/home/hyprland/binds.nix b/users/natalie/home/hyprland/binds.nix new file mode 100644 index 0000000000000000000000000000000000000000..139396467a12283c9eac0839dfed3080b3712384 --- /dev/null +++ b/users/natalie/home/hyprland/binds.nix @@ -0,0 +1,158 @@ +{ pkgs, ... }: +{ + wayland.windowManager.hyprland.settings = { + binds = { + movefocus_cycles_fullscreen = true; + }; + + bind = [ + # show keybinds list + "$mainMod, F1, exec, show-keybinds" + + # keybindings + "$mainMod, Return, exec, ${pkgs.ghostty}/bin/ghostty --gtk-single-instance=true" + "$mainMod, P, pseudo," + "$mainMod, C, killactive," + "$mainMod, M, exit, " + "$mainMod, E, exec, $fileManager" + "$mainMod, F, togglefloating," + "$mainMod, R, exec, $menu " + "$mainMod, J, togglesplit " + "$mainMod, Space, exec, vicinae vicinae://toggle" + # "ALT, Return, exec, [float; size 1111 700] ghostty" + # "$mainMod SHIFT, Return, exec, [fullscreen] ghostty" + # "$mainMod, B, exec, [workspace 1 silent] zen-beta" + # "$mainMod, Q, killactive," + # "$mainMod, F, fullscreen, 0" + # "$mainMod SHIFT, F, fullscreen, 1" + # "$mainMod, Space, exec, toggle-float" + # "$mainMod SHIFT, D, exec, webcord --enable-features=UseOzonePlatform --ozone-platform=wayland" + # "$mainMod SHIFT, S, exec, hyprctl dispatch exec '[workspace 5 silent] SoundWireServer'" + # "$mainMod, Escape, exec, swaylock" + # "ALT, Escape, exec, hyprlock" + # "$mainMod SHIFT, Escape, exec, power-menu" + # "$mainMod, X, togglesplit," + # "$mainMod, T, exec, toggle-oppacity" + # "$mainMod, E, exec, nemo" + # "ALT, E, exec, hyprctl dispatch exec '[float; size 1111 700] nemo'" + # "$mainMod SHIFT, B, exec, toggle-waybar" + # "$mainMod, C ,exec, hyprpicker -a" + # "$mainMod, W,exec, wallpaper-picker" + # "$mainMod SHIFT, W,exec, hyprctl dispatch exec '[float; size 925 615] waypaper'" + # "$mainMod, N, exec, swaync-client -t -sw" + # "CTRL SHIFT, Escape, exec, hyprctl dispatch exec '[workspace 9] missioncenter'" + # "$mainMod, equal, exec, woomer" + # "$mainMod SHIFT, W, exec, vm-start" + + # screenshot + ",Print, exec, screenshot --copy" + "$mainMod, Print, exec, screenshot --save" + "$mainMod SHIFT, Print, exec, screenshot --swappy" + + # switch focus + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + "$mainMod, h, movefocus, l" + "$mainMod, j, movefocus, d" + "$mainMod, k, movefocus, u" + "$mainMod, l, movefocus, r" + + "$mainMod, left, alterzorder, top" + "$mainMod, right, alterzorder, top" + "$mainMod, up, alterzorder, top" + "$mainMod, down, alterzorder, top" + "$mainMod, h, alterzorder, top" + "$mainMod, j, alterzorder, top" + "$mainMod, k, alterzorder, top" + "$mainMod, l, alterzorder, top" + + "CTRL ALT, up, exec, hyprctl dispatch focuswindow floating" + "CTRL ALT, down, exec, hyprctl dispatch focuswindow tiled" + + # switch workspace + "$mainMod, 1, split-workspace, 1" + "$mainMod, 2, split-workspace, 2" + "$mainMod, 3, split-workspace, 3" + "$mainMod, 4, split-workspace, 4" + "$mainMod, 5, split-workspace, 5" + "$mainMod, 6, split-workspace, 6" + "$mainMod, 7, split-workspace, 7" + "$mainMod, 8, split-workspace, 8" + "$mainMod, 9, split-workspace, 9" + "$mainMod, 0, split-workspace, 10" + + # same as above, but switch to the workspace + "$mainMod SHIFT, 1, split-movetoworkspacesilent, 1" # movetoworkspacesilent + "$mainMod SHIFT, 2, split-movetoworkspacesilent, 2" + "$mainMod SHIFT, 3, split-movetoworkspacesilent, 3" + "$mainMod SHIFT, 4, split-movetoworkspacesilent, 4" + "$mainMod SHIFT, 5, split-movetoworkspacesilent, 5" + "$mainMod SHIFT, 6, split-movetoworkspacesilent, 6" + "$mainMod SHIFT, 7, split-movetoworkspacesilent, 7" + "$mainMod SHIFT, 8, split-movetoworkspacesilent, 8" + "$mainMod SHIFT, 9, split-movetoworkspacesilent, 9" + "$mainMod SHIFT, 0, split-movetoworkspacesilent, 10" + "$mainMod CTRL, c, split-movetoworkspace, empty" + + # window control + "$mainMod SHIFT, left, movewindow, l" + "$mainMod SHIFT, right, movewindow, r" + "$mainMod SHIFT, up, movewindow, u" + "$mainMod SHIFT, down, movewindow, d" + "$mainMod SHIFT, h, movewindow, l" + "$mainMod SHIFT, j, movewindow, d" + "$mainMod SHIFT, k, movewindow, u" + "$mainMod SHIFT, l, movewindow, r" + + "$mainMod CTRL, left, resizeactive, -80 0" + "$mainMod CTRL, right, resizeactive, 80 0" + "$mainMod CTRL, up, resizeactive, 0 -80" + "$mainMod CTRL, down, resizeactive, 0 80" + "$mainMod CTRL, h, resizeactive, -80 0" + "$mainMod CTRL, j, resizeactive, 0 80" + "$mainMod CTRL, k, resizeactive, 0 -80" + "$mainMod CTRL, l, resizeactive, 80 0" + + "$mainMod ALT, left, moveactive, -80 0" + "$mainMod ALT, right, moveactive, 80 0" + "$mainMod ALT, up, moveactive, 0 -80" + "$mainMod ALT, down, moveactive, 0 80" + "$mainMod ALT, h, moveactive, -80 0" + "$mainMod ALT, j, moveactive, 0 80" + "$mainMod ALT, k, moveactive, 0 -80" + "$mainMod ALT, l, moveactive, 80 0" + + # media and volume controls + # ",XF86AudioMute,exec, pamixer -t" + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + ",XF86AudioStop,exec, playerctl stop" + + "$mainMod, mouse_down, split-workspace, e-1" + "$mainMod, mouse_up, split-workspace, e+1" + + # clipboard manager + "$mainMod, V, exec, vicinae vicinae://extensions/vicinae/clipboard/history" + #awakened-poe-trade + # "SHIFT,Space,pass,class:^(awakened-poe-trade)$" + # "CTRL,D,pass,class:^(awakened-poe-trade)$" + # "CTRL ALT,D,pass,class:^(awakened-poe-trade)$" + ]; + + bindel = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, pctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ]; + + # mouse binding + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + }; +} diff --git a/users/natalie/home/hyprland/default.nix b/users/natalie/home/hyprland/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..da0fd590c1994b21a6922fac68598c1aa70d60da --- /dev/null +++ b/users/natalie/home/hyprland/default.nix @@ -0,0 +1,14 @@ +{ ... }: +{ + imports = [ + ./hyprland.nix + ./exec-once.nix + ./monitors.nix + ./settings.nix + ./binds.nix + ./windowrules.nix + ./hyprlock.nix + ./variables.nix + ./plugins.nix + ]; +} diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix new file mode 100644 index 0000000000000000000000000000000000000000..947de457ba8c0b7d42dbd3245fb63264244fed9b --- /dev/null +++ b/users/natalie/home/hyprland/exec-once.nix @@ -0,0 +1,31 @@ +{ + pkgs, + inputs, + currentSystem, + ... +}: +{ + wayland.windowManager.hyprland.settings.exec-once = [ + # "hash dbus-update-activation-environment 2>/dev/null" + "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + + "${pkgs.hyprlock}/bin/hyprlock" + + "${pkgs.networkmanagerapplet}/bin/nm-applet &" + "${pkgs.wl-clip-persist}/bin/wl-clip-persist --clipboard both &" + "${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store &" + # "${pkgs.waybar}/bin/waybar &" + "${pkgs.swaynotificationcenter}/bin/swaync &" + "${inputs.vicinae.packages.${currentSystem}.default}/bin/vicinae server &" + "${pkgs.udiskie}/bin/udiskie --automount --notify --smart-tray &" + "${pkgs.hyprland}/bin/hyprctl setcursor Bibata-Modern-Ice 24 &" + "${pkgs.tmux}/bin/tmux setenv -g HYPRLAND_INSTANCE_SIGNATURE '$HYPRLAND_INSTANCE_SIGNATURE'" + "systemctl --user start hyprpolkitagent" + # "init-wallpaper &" + # + # "ghostty --gtk-single-instance=true --quit-after-last-window-closed=false --initial-window=false" + # "[workspace 1 silent] zen-beta" + # "[workspace 2 silent] ghostty" + ]; +} diff --git a/users/natalie/home/hyprland/hyprland.nix b/users/natalie/home/hyprland/hyprland.nix new file mode 100644 index 0000000000000000000000000000000000000000..0cece8848cead1e0cc27c017d0ea3523983bf6d3 --- /dev/null +++ b/users/natalie/home/hyprland/hyprland.nix @@ -0,0 +1,37 @@ +{ config, pkgs, ... }: +{ + home.packages = with pkgs; [ + swww + grimblast + hyprpicker + grim + slurp + wl-clip-persist + wl-clipboard + cliphist + wf-recorder + glib + wayland + playerctl + waybar + networkmanagerapplet + hyprpolkitagent + swappy + ]; + # systemd.user.targets.hyprland-session.Unit.Wants = [ + # "xdg-desktop-autostart.target" + # ]; + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + + xwayland = { + enable = true; + }; + systemd.enable = false; + }; + # https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/#nixos-uwsm + xdg.configFile."uwsm/env".source = + "${config.home.sessionVariablesPackage}/etc/profile.d/hm-session-vars.sh"; +} diff --git a/users/natalie/home/hyprland/hyprlock.nix b/users/natalie/home/hyprland/hyprlock.nix new file mode 100644 index 0000000000000000000000000000000000000000..60f780414f25acb7c0b7b52aaa5e2221bb2a3967 --- /dev/null +++ b/users/natalie/home/hyprland/hyprlock.nix @@ -0,0 +1,112 @@ +{ ... }: +{ + programs.hyprlock = { + enable = false; + + settings = { + general = { + hide_cursor = true; + ignore_empty_input = true; + fractional_scaling = 0; + }; + + background = [ + { + color = "rgba(29, 32, 33, 255)"; + blur_passes = 2; + vibrancy_darkness = 0.0; + } + ]; + # + # shape = [ + # # User box + # { + # size = "300, 50"; + # + # rounding = 0; + # border_size = 2; + # color = "rgba(102, 92, 84, 0.33)"; + # border_color = "rgba(168, 153, 132, 0.95)"; + # + # position = "0, ${if host == "laptop" then "120" else "270"}"; + # halign = "center"; + # valign = "bottom"; + # } + # ]; + # + # label = [ + # # Time + # { + # text = ''cmd[update:1000] echo "$(date +'%k:%M')"''; + # + # font_size = 115; + # font_family = "Maple Mono Bold"; + # + # shadow_passes = 3; + # color = "rgba(235, 219, 178, 0.9)"; + # + # position = "0, ${if host == "laptop" then "-25" else "-150"}"; + # halign = "center"; + # valign = "top"; + # } + # # Date + # { + # text = ''cmd[update:1000] echo "- $(date +'%A, %B %d') -" ''; + # + # font_size = 18; + # font_family = "Maple Mono"; + # + # shadow_passes = 3; + # color = "rgba(235, 219, 178, 0.9)"; + # + # position = "0, ${if host == "laptop" then "-225" else "-350"}"; + # halign = "center"; + # valign = "top"; + # } + # # Username + # { + # text = " $USER"; + # + # font_size = 15; + # font_family = "Maple Mono Bold"; + # + # color = "rgba(235, 219, 178, 1)"; + # + # position = "0, ${if host == "laptop" then "134" else "284"}"; + # halign = "center"; + # valign = "bottom"; + # } + # ]; + # + # input-field = [ + # { + # size = "300, 50"; + # rounding = 0; + # outline_thickness = 2; + # + # dots_spacing = 0.4; + # + # font_color = "rgba(235, 219, 178, 0.9)"; + # font_family = "Maple Mono Bold"; + # + # outer_color = "rgba(168, 153, 132, 0.95)"; + # inner_color = "rgba(102, 92, 84, 0.33)"; + # check_color = "rgba(152, 151, 26, 0.95)"; + # fail_color = "rgba(204, 36, 29, 0.95)"; + # capslock_color = "rgba(215, 153, 33, 0.95)"; + # bothlock_color = "rgba(215, 153, 33, 0.95)"; + # + # hide_input = false; + # fade_on_empty = false; + # placeholder_text = ''Enter Password''; + # + # position = "0, ${if host == "laptop" then "50" else "200"}"; + # halign = "center"; + # valign = "bottom"; + # } + # ]; + # + # animation = [ "inputFieldColors, 0" ]; + }; + }; +} diff --git a/users/natalie/home/hyprland/monitors.nix b/users/natalie/home/hyprland/monitors.nix new file mode 100644 index 0000000000000000000000000000000000000000..9147d7d2fe89b0c3cc21c2c96096b44ac07e2076 --- /dev/null +++ b/users/natalie/home/hyprland/monitors.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: +{ + wayland.windowManager.hyprland = { + settings.monitor = [ + "desc:Dell Inc. S2719DGF 1LCYBY2,2560x1440@154.85,1920x0,1.0" + "desc:Ancor Communications Inc VN279 HALMQS156672,1920x1080@60.0,0x0,1.0" + ]; + + # extraConfig = '' + # # hyprlang noerror true + # source = ~/.config/hypr/monitors.conf + # source = ~/.config/hypr/workspaces.conf + # # hyprlang noerror false + # ''; + }; + + home.packages = with pkgs; [ nwg-displays ]; +} diff --git a/users/natalie/home/hyprland/plugins.nix b/users/natalie/home/hyprland/plugins.nix new file mode 100644 index 0000000000000000000000000000000000000000..32697739bb1b84b29123d72171c02687fe8b3acd --- /dev/null +++ b/users/natalie/home/hyprland/plugins.nix @@ -0,0 +1,16 @@ +{ pkgs, inputs, ... }: +{ + wayland.windowManager.hyprland = { + plugins = [ + inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces + ]; + settings = { + plugin = { + split-monitor-workspaces = { + count = 5; + keep_focused = 0; + }; + }; + }; + }; +} diff --git a/users/natalie/home/hyprland/settings.nix b/users/natalie/home/hyprland/settings.nix new file mode 100644 index 0000000000000000000000000000000000000000..5a14c824e7f5c64c8078dbf4e48cbfb659b3affe --- /dev/null +++ b/users/natalie/home/hyprland/settings.nix @@ -0,0 +1,123 @@ +{ ... }: +{ + wayland.windowManager.hyprland.settings = { + # see: https://wiki.hypr.land/Configuring/Variables/#input + input = { + kb_layout = "us"; + repeat_delay = 300; + follow_mouse = 1; + }; + # https://wiki.hypr.land/Configuring/Variables/#general + general = { + "$mainMod" = "SUPER"; + layout = "dwindle"; + no_border_on_floating = false; + + }; + # https://wiki.hypr.land/Configuring/Variables/#misc + misc = { + disable_hyprland_logo = true; + always_follow_on_dnd = true; + layers_hog_keyboard_focus = true; + animate_manual_resizes = false; + enable_swallow = true; + swallow_regex = "^(ghostty)$"; + focus_on_activate = true; + new_window_takes_over_fullscreen = 2; + middle_click_paste = false; + }; + + # https://wiki.hypr.land/Configuring/Dwindle-Layout/ + dwindle = { + pseudotile = false; + force_split = 2; + preserve_split = true; + }; + # https://wiki.hypr.land/Configuring/Variables/#decoration + decoration = { + rounding = 0; + rounding_power = 2.0; + active_opacity = 1.0; + inactive_opacity = 1.0; + fullscreen_opacity = 1.0; + dim_modal = true; + dim_inactive = false; + dim_strength = 0.5; + dim_special = 0.2; + dim_around = 0.4; + screen_shader = ""; + border_part_of_window = true; + blur = { + enabled = true; + size = 8; + passes = 1; + brightness = 0.8172; + contrast = 0.8916; + ignore_opacity = true; + noise = 0.0117; + new_optimizations = true; + xray = true; + vibrancy = 0.1696; + vibrancy_darkness = 0.0; + special = false; + popups = false; + popups_ignorealpha = 0.2; + input_methods = false; + input_methods_ignorealpha = 0.2; + }; + + shadow = { + enabled = true; + range = 4; + render_power = 3; + sharp = false; + ignore_window = true; + color = "0xee1a1a1a"; + offset = "0 2"; + scale = 1.0; + }; + + }; + # https://wiki.hypr.land/Configuring/Animations/ + animations = { + enabled = true; + + bezier = [ + "easeOutQuint, 0.23, 1, 0.32, 1" + "easeInOutCubic, 0.65, 0.05, 0.36, 1" + "linear, 0, 0, 1, 1" + "almostLinear, 0.5, 0.5, 0.75, 1" + "quick, 0.15, 0, 0.1, 1" + ]; + + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + "zoomFactor, 1, 7, quick" + ]; + + }; + # https://wiki.hypr.land/Configuring/XWayland/ + xwayland = { + force_zero_scaling = true; + }; + debug = { + disable_logs = false; + }; + }; + +} diff --git a/users/natalie/home/hyprland/variables.nix b/users/natalie/home/hyprland/variables.nix new file mode 100644 index 0000000000000000000000000000000000000000..cbaff3f40e3bdb4e7ee46ccdcaf2eef8ede5962e --- /dev/null +++ b/users/natalie/home/hyprland/variables.nix @@ -0,0 +1,29 @@ +{ ... }: +{ + home.sessionVariables = { + NIXOS_OZONE_WL = 1; + __GL_GSYNC_ALLOWED = 0; + __GL_VRR_ALLOWED = 0; + # SSH_AUTH_SOCK = "/run/user/1000/ssh-agent"; + DISABLE_QT5_COMPAT = 0; + GDK_BACKEND = "wayland"; + # ANKI_WAYLAND = 1; + WLR_DRM_NO_ATOMIC = 1; + # QT_AUTO_SCREEN_SCALE_FACTOR = 1; + # QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; + QT_QPA_PLATFORM = "wayland"; + QT_QPA_PLATFORMTHEME = "qt5ct"; + # QT_STYLE_OVERRIDE = "kvantum"; + MOZ_ENABLE_WAYLAND = 1; + WLR_BACKEND = "vulkan"; + WLR_RENDERER = "vulkan"; + WLR_NO_HARDWARE_CURSORS = 1; + XDG_CURRENT_DESKTOP = "Hyprland"; + XDG_SESSION_TYPE = "wayland"; + XDG_SESSION_DESKTOP = "Hyprland"; + SDL_VIDEODRIVER = "wayland"; + CLUTTER_BACKEND = "wayland"; + # GTK_THEME = "Colloid-Green-Dark-Gruvbox"; + # GRIMBLAST_HIDE_CURSOR = 0; + }; +} diff --git a/users/natalie/home/hyprland/windowrules.nix b/users/natalie/home/hyprland/windowrules.nix new file mode 100644 index 0000000000000000000000000000000000000000..9c9a2d248838f16e84f98e73bcf82c86dd046d94 --- /dev/null +++ b/users/natalie/home/hyprland/windowrules.nix @@ -0,0 +1,115 @@ +{ ... }: +{ + wayland.windowManager.hyprland.settings = { + # https://wiki.hypr.land/Configuring/Window-Rules/#layer-rules + windowrule = [ + "float,class:^(mpv)$" + "pin,class:^(rofi)$" + "pin,class:^(waypaper)$" + "float,title:^(Volume Control)$" + + #awakened-poe-trade + # https://github.com/SnosMe/awakened-poe-trade/issues/1137#issuecomment-2992606569 + "tag +apt, class:^(awakened-poe-trade)$" + "tag +apt, title:(Awakened PoE Trade)" + "float, tag:apt" + "noblur, tag:apt" + "nofocus, tag:apt" + "noshadow, tag:apt" + "noborder, tag:apt" + "pin, tag:apt" + "renderunfocused, tag:apt" + "size 100% 100%, tag:apt" + "center, tag:apt" + + #POE + "tag +poe, title:(Path of Exile)" + "tag +poe class:(steam_app_238960)" + "fullscreen, tag:poe$" + # https://github.com/SnosMe/awakened-poe-trade/issues/1137#issuecomment-3037816727 + # "tag +fakefullscreen, title:(Path of Exile),class:(steam_app_238960)" + # "tile, tag:fakefullscreen" + # "noborder, tag:fakefullscreen" + # "float,title:^(Firefox — Sharing Indicator)$" + # "move 0 0,title:^(Firefox — Sharing Indicator)$" + # "size 700 450,title:^(Volume Control)$" + # "move 40 55%,title:^(Volume Control)$" + #"float, title:^(Picture-in-Picture)$" + # "opacity 1.0 override 1.0 override, title:^(Picture-in-Picture)$" + # "pin, title:^(Picture-in-Picture)$" + # "opacity 1.0 override 1.0 override, title:^(.*imv.*)$" + # "opacity 1.0 override 1.0 override, title:^(.*mpv.*)$" + # "opacity 1.0 override 1.0 override, class:(Aseprite)" + # "opacity 1.0 override 1.0 override, class:(Unity)" + # "opacity 1.0 override 1.0 override, class:(zen)" + # "opacity 1.0 override 1.0 override, class:(evince)" + # "workspace 1, class:^(zen-beta)$" + # "workspace 3, class:^(evince)$" + # "workspace 4, class:^(Gimp-2.10)$" + # "workspace 4, class:^(Aseprite)$" + # "workspace 5, class:^(Audacious)$" + # "workspace 5, class:^(Spotify)$" + # "workspace 8, class:^(com.obsproject.Studio)$" + # "workspace 10, class:^(discord)$" + # "workspace 10, class:^(WebCord)$" + # "idleinhibit focus, class:^(mpv)$" + # "idleinhibit fullscreen, class:^(firefox)$" + # "float,class:^(org.gnome.Calculator)$" + # "float,class:^(waypaper)$" + # "float,class:^(zenity)$" + # "size 850 500,class:^(zenity)$" + # "size 725 330,class:^(SoundWireServer)$" + # "float,class:^(org.gnome.FileRoller)$" + # "float,class:^(org.pulseaudio.pavucontrol)$" + # "float,class:^(SoundWireServer)$" + # "float,class:^(.sameboy-wrapped)$" + # "float,class:^(file_progress)$" + # "float,class:^(confirm)$" + # "float,class:^(dialog)$" + # "float,class:^(download)$" + # "float,class:^(notification)$" + # "float,class:^(error)$" + # "float,class:^(confirmreset)$" + # "float,title:^(Open File)$" + # "float,title:^(File Upload)$" + # "float,title:^(branchdialog)$" + # "float,title:^(Confirm to replace files)$" + # "float,title:^(File Operation Progress)$" + # + # "opacity 0.0 override,class:^(xwaylandvideobridge)$" + # "noanim,class:^(xwaylandvideobridge)$" + # "noinitialfocus,class:^(xwaylandvideobridge)$" + # "maxsize 1 1,class:^(xwaylandvideobridge)$" + # "noblur,class:^(xwaylandvideobridge)$" + # + # # No gaps when only + # "bordersize 0, floating:0, onworkspace:w[t1]" + # "rounding 0, floating:0, onworkspace:w[t1]" + # "bordersize 0, floating:0, onworkspace:w[tg1]" + # "rounding 0, floating:0, onworkspace:w[tg1]" + # "bordersize 0, floating:0, onworkspace:f[1]" + # "rounding 0, floating:0, onworkspace:f[1]" + # Remove context menu transparency in chromium based apps + # "opaque,class:^()$,title:^()$" + # "noshadow,class:^()$,title:^()$" + # "noblur,class:^()$,title:^()$" + ]; + + # https://wiki.hypr.land/Configuring/Window-Rules/#layer-rules + layerrule = [ + "blur, vicinae" + "ignorealpha 0, vicinae" + "noanim, vicinae" + # "dimaround, rofi" + # "dimaround, swaync-control-center" + ]; + + # https://wiki.hypr.land/Configuring/Workspace-Rules/ + # No gaps when only + workspace = [ + "w[t1], gapsout:0, gapsin:0" + "w[tg1], gapsout:0, gapsin:0" + "f[1], gapsout:0, gapsin:0" + ]; + }; +} diff --git a/users/natalie/home/scripts/default.nix b/users/natalie/home/scripts/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..dfedf068302d3c1c013beda7d55235b2186f247a --- /dev/null +++ b/users/natalie/home/scripts/default.nix @@ -0,0 +1,26 @@ +{ pkgs, ... }: +let + scriptDir = ./scripts; + + mkScript = name: { + inherit name; + value = pkgs.writeScriptBin (builtins.replaceStrings [ ".sh" ] [ "" ] name) ( + builtins.readFile (scriptDir + "/${name}") + ); + }; + + scriptsSet = builtins.listToAttrs ( + map mkScript ( + builtins.attrNames ( + pkgs.lib.filterAttrs (n: v: v == "regular" && (pkgs.lib.hasSuffix ".sh" n)) ( + builtins.readDir ./scripts + ) + ) + ) + ); + scripts = builtins.attrValues scriptsSet; + +in +{ + home.packages = scripts; +} diff --git a/users/natalie/home/scripts/scripts/fakefullscreen.sh b/users/natalie/home/scripts/scripts/fakefullscreen.sh new file mode 100644 index 0000000000000000000000000000000000000000..3b206da04e6dc35a114f0c3c36ae0b273fb9ac92 --- /dev/null +++ b/users/natalie/home/scripts/scripts/fakefullscreen.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p bash socat jq killall +# shellcheck disable=all + +RUNDIR=/run/user/$EUID/hypr +WAYBAR_FILE=$RUNDIR/.waybar_is_hidden + +function hide { + if [ ! -f $WAYBAR_FILE ]; then + hyprctl keyword workspace , gapsout:0 >/dev/null 2>&1 + killall -SIGUSR1 .waybar-wrapped && touch $WAYBAR_FILE + fi +} + +function show { + if [ -f $WAYBAR_FILE ]; then + hyprctl keyword workspace , gapsout:$(hyprctl getoption general:gaps_out -j | jq -r .custom | tr \ ,) >/dev/null 2>&1 + killall -SIGUSR1 .waybar-wrapped && rm $WAYBAR_FILE >/dev/null 2>&1 + fi +} + +function fakefullscreen() { + local fullscreenclients=$(hyprctl clients -j | jq -r '.[] | select(.tags | contains(["fakefullscreen"])).workspace.id') + [ -z "$fullscreenclients" -a ! -f $WAYBAR_FILE ] && return + local active=$(hyprctl activeworkspace -j | jq -r .id) + for id in $fullscreenclients; do + if [ $active -eq $id -a $(hyprctl clients -j | jq -r "[.[] | select(.workspace.id == $id) | select(.floating | not)] | length") -eq 1 ]; then + hide + return + fi + done + show +} + +sleep 1 +fakefullscreen + +socat -u "UNIX-CONNECT:$RUNDIR/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" STDOUT | while read -r event; do + case $event in + workspace\>\>* | openwindow\>\>* | closewindow\>\>*) fakefullscreen ;; + esac +done + +show diff --git a/users/natalie/home/scripts/scripts/screenshot.sh b/users/natalie/home/scripts/scripts/screenshot.sh new file mode 100644 index 0000000000000000000000000000000000000000..fe324d8cf2e2dd622714bd323355ba91a0cf5ddc --- /dev/null +++ b/users/natalie/home/scripts/scripts/screenshot.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +dir="$HOME/Pictures/Screenshots" +time=$(date +'%Y_%m_%d_at_%Hh%Mm%Ss') +file="${dir}/Screenshot_${time}.png" + +copy() { + GRIMBLAST_HIDE_CURSOR=0 grimblast --notify --freeze copy area +} + +save() { + GRIMBLAST_HIDE_CURSOR=0 grimblast --notify --freeze save area "$file" +} + +swappy_() { + GRIMBLAST_HIDE_CURSOR=0 grimblast --notify --freeze save area "$file" + swappy -f "$file" +} + +if [[ ! -d "$dir" ]]; then + mkdir -p "$dir" +fi + +if [[ "$1" == "--copy" ]]; then + copy +elif [[ "$1" == "--save" ]]; then + save +elif [[ "$1" == "--swappy" ]]; then + swappy_ +else + echo -e "Available Options: --copy --save --swappy" +fi + +exit 0 diff --git a/users/natalie/home/swaync.nix b/users/natalie/home/swaync.nix new file mode 100644 index 0000000000000000000000000000000000000000..2768a4dc9012f80f4256f54f60dbd86ac03fc094 --- /dev/null +++ b/users/natalie/home/swaync.nix @@ -0,0 +1,595 @@ +{ pkgs, ... }: +{ + services.swaync = { + enable = true; + settings = { + ignore-gtk-theme = true; + positionX = "right"; + positionY = "top"; + layer = "overlay"; + control-center-layer = "top"; + layer-shell = true; + layer-shell-cover-screen = true; + cssPriority = "user"; + control-center-margin-top = 15; + control-center-margin-bottom = 15; + control-center-margin-right = 15; + control-center-margin-left = 0; + notification-2fa-action = true; + notification-inline-replies = false; + notification-body-image-height = 100; + notification-body-image-width = 200; + notification-icon-size = 48; + timeout = 8; + timeout-low = 6; + timeout-critical = 0; + fit-to-screen = true; + relative-timestamps = true; + control-center-width = 400; + control-center-height = 600; + notification-window-width = 350; + keyboard-shortcuts = true; + notification-grouping = true; + image-visibility = "when-available"; + transition-time = 200; + hide-on-clear = false; + hide-on-action = true; + text-empty = "No Notifications"; + script-fail-notify = true; + widgets = [ + "dnd" + "mpris" + "notifications" + "volume" + "backlight" + ]; + widget-config = { + inhibitors = { + text = "Inhibitors"; + button-text = "Clear All"; + clear-all-button = true; + }; + title = { + text = "Notifications"; + clear-all-button = true; + button-text = "Clear All"; + }; + dnd = { + text = "Do Not Disturb"; + }; + label = { + max-lines = 5; + text = "Label Text"; + }; + mpris = { + show-album-art = "always"; + loop-carousel = false; + }; + volume = { + label = "󰕾 "; + expand-button-label = ""; + collapse-button-label = ""; + show-per-app = true; + show-per-app-icon = true; + show-per-app-label = false; + }; + backlight = { + label = "󰃟 "; + }; + }; + }; + style = '' + :root { + --bg-primary: #1d2021; + --bg-secondary: #282828; + --bg-button: #4E4E4E; + --bg-button-hover: #5E5E5E; + --text-primary: #EBDBB2; + --text-disabled: #5C554A; + --border-color: #928374; + --priority-low: #EBDBB2; + --priority-normal: #83A598; + --priority-critical: #FB4934; + --transition-standard: 0.15s ease-in-out; + } + + /* Base styles */ + * { + outline: none; + } + + *:focus { + outline: none; + box-shadow: none; + } + + /* Scrollbar */ + scrollbar, + scrollbar slider { + opacity: 0; + min-width: 0px; + min-height: 0px; + background: transparent; + } + + /* Common button styles */ + .close-button, + .widget-title>button, + .widget-dnd switch, + .widget-menubar>.menu-button-bar>.widget-menubar-container button, + .widget-menubar>revealer button, + .widget-inhibitors>button { + border-radius: 0px; + border: none; + box-shadow: none; + transition: background var(--transition-standard); + } + + /* Close button */ + .close-button { + background: var(--bg-button); + color: var(--text-primary); + text-shadow: none; + padding: 0; + border-radius: 50%; + margin-top: 8px; + margin-right: 8px; + min-width: 20px; + min-height: 20px; + } + + .close-button:hover { + background: var(--bg-button-hover); + } + + /* Notification rows */ + .notification-row { + background: none; + } + + .notification-row:focus, + .notification-group:focus { + background: var(--bg-primary); + } + + .notification-row .notification-background { + margin: 0px 0px 0px 0px; + } + + /* Base notification styles */ + .notification-row .notification-background .notification { + border-radius: 0px; + border: 1px solid var(--border-color); + transition: background var(--transition-standard); + background: var(--bg-primary); + padding: 2px 4px; + } + + /* Priority-based notification styles */ + .notification-row .notification-background .notification.low { + border-left: 3px solid var(--priority-low); + } + + .notification-row .notification-background .notification.normal { + border-left: 3px solid var(--priority-normal); + } + + .notification-row .notification-background .notification.critical { + border-left: 3px solid var(--priority-critical); + } + + /* Notification default action */ + .notification-default-action { + padding: 4px; + margin: 0; + box-shadow: none; + background: transparent; + border: none; + color: var(--text-primary); + transition: background var(--transition-standard); + border-radius: 0px; + } + + .notification-default-action:hover { + -gtk-icon-filter: none; + background: var(--bg-primary); + } + + .notification-default-action:not(:only-child) { + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + } + + /* Notification content */ + .notification-content { + background: transparent; + border-radius: 0px; + padding: 0; + } + + .notification-content .image { + -gtk-icon-filter: none; + -gtk-icon-size: 30px; + border-radius: 50px; + margin: 0px 7px 0px 0px; + } + + .notification-content .app-icon { + -gtk-icon-filter: none; + -gtk-icon-size: calc(25px / 3); + -gtk-icon-shadow: 0 1px 4px black; + margin: 6px; + } + + .notification-content .text-box label { + filter: none; + } + + /* Text elements */ + .notification-content .text-box .summary, + .notification-content .text-box .time, + .notification-content .text-box .body { + font-size: 16px; + background: transparent; + color: var(--text-primary); + text-shadow: none; + } + + .notification-content .text-box .summary, + .notification-content .text-box .time { + font-weight: bold; + } + + .notification-content .text-box .time { + margin-right: 30px; + } + + .notification-content .text-box .body { + font-weight: normal; + } + + /* Progress and images */ + .notification-content progressbar { + margin-top: 4px; + } + + .notification-content .body-image { + margin-top: 4px; + background-color: white; + -gtk-icon-filter: none; + } + + /* Inline reply */ + .notification-content .inline-reply { + margin-top: 4px; + } + + .notification-content .inline-reply .inline-reply-entry { + background: var(--bg-secondary); + color: var(--text-primary); + caret-color: var(--text-primary); + border: 1px solid var(--border-color); + border-radius: 0px; + } + + .notification-content .inline-reply .inline-reply-button { + margin-left: 4px; + background: rgb(48, 48, 48); + border: 1px solid var(--border-color); + border-radius: 0px; + color: var(--text-primary); + } + + .notification-content .inline-reply .inline-reply-button:disabled { + background: initial; + color: rgb(150, 150, 150); + border: 1px solid var(--border-color); + border-color: transparent; + } + + .notification-content .inline-reply .inline-reply-button:hover { + background: var(--bg-primary); + } + + /* Alternative actions */ + .notification-alt-actions { + background: none; + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; + padding: 4px; + } + + .notification-action { + margin: 4px; + padding: 0; + font-size: 16px; + } + + .notification-action>button { + border-radius: 0px; + font-size: 16px; + padding: 1px; + } + + /* Notification groups */ + .notification-group { + transition: opacity 200ms ease-in-out; + } + + .notification-group .notification-group-close-button .close-button { + margin: 12px 20px; + } + + .notification-group .notification-group-buttons, + .notification-group .notification-group-headers { + margin: 0 16px; + color: var(--text-primary); + } + + .notification-group .notification-group-headers { + font-size: 16px; + } + + .notification-group .notification-group-headers .notification-group-icon { + color: var(--text-primary); + -gtk-icon-size: 20px; + font-size: 16px; + font-weight: 700; + margin: 5px 5px 5px 0px; + } + + .notification-group .notification-group-headers .notification-group-header { + font-size: 16px; + font-weight: 700; + color: var(--text-primary); + } + + .notification-group .notification-group-buttons { + margin: 5px; + } + + .notification-group.collapsed.not-expanded { + opacity: 1.0; + } + + .notification-group.collapsed .notification-row .notification { + background-color: var(--bg-primary); + } + + .notification-group.collapsed .notification-row:not(:last-child) .notification-action, + .notification-group.collapsed .notification-row:not(:last-child) .notification-default-action { + opacity: 1.0; + } + + .notification-group.collapsed:hover .notification-row:not(:only-child) .notification { + background-color: var(--bg-primary); + } + + /* Control center */ + .control-center { + background: var(--bg-primary); + color: var(--text-primary); + border-radius: 0px; + border: 2px solid var(--border-color); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5); + } + + .control-center .control-center-list-placeholder { + opacity: 1.0; + } + + .control-center .control-center-list { + background: transparent; + } + + .control-center .control-center-list .notification .notification-default-action, + .control-center .control-center-list .notification .notification-action { + transition: opacity 400ms ease-in-out, background var(--transition-standard); + } + + .control-center .control-center-list .notification .notification-default-action:hover, + .control-center .control-center-list .notification .notification-action:hover { + background-color: var(--bg-primary); + } + + /* Floating notifications */ + .blank-window, + .floating-notifications { + background: transparent; + } + + .floating-notifications .notification { + box-shadow: none; + } + + /* Widgets */ + .widget-title>label { + margin: 8px; + font-weight: 700; + font-size: 16px; + } + + .widget-title>button { + margin: 8px; + font-size: 16px; + background: var(--bg-primary); + border: 2px solid var(--text-disabled); + padding: 3px 10px; + color: var(--text-primary); + font-weight: 700; + } + + /* Common widget styles */ + .widget-dnd, + .widget-label, + .widget-volume, + .widget-slider, + .widget-backlight { + margin-left: 8px; + margin-right: 8px; + margin-top: 0px; + margin-bottom: 0px; + } + + .widget-dnd label, + .widget-label>label { + color: var(--text-primary); + font-size: 18px; + } + + .widget-dnd label { + margin: 8px; + margin-top: 16px; + } + + .widget-dnd switch { + margin: 8px; + margin-top: 16px; + } + + .widget-dnd switch slider { + border-radius: 0px; + } + + .widget-label { + margin: 8px; + } + + /* Mpris widget */ + .widget-mpris { + margin: 5px; + } + + .widget-mpris .widget-mpris-player { + margin: 10px 10px; + border-radius: 0px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); + border: 1px solid var(--border-color); + } + + .widget-mpris .widget-mpris-player .mpris-background { + filter: blur(2px); + } + + .widget-mpris .widget-mpris-player .mpris-overlay { + padding: 16px; + background-color: rgba(0, 0, 0, 0.55); + } + + .widget-mpris .widget-mpris-player .mpris-overlay button:hover { + background: var(--bg-primary); + } + + .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art { + border-radius: 0px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); + -gtk-icon-size: 50px; + } + + .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-title { + font-weight: bold; + font-size: 16px; + } + + .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-subtitle { + font-size: 16px; + } + + .widget-mpris .widget-mpris-player .mpris-overlay>box>button { + margin: 2px; + color: var(--text-primary); + } + + .widget-mpris .widget-mpris-player .mpris-overlay>box>button:hover { + background-color: rgba(0, 0, 0, 0.5); + } + + .widget-mpris>box>button { + color: var(--text-primary); + } + + .widget-mpris>box>button:disabled { + color: var(--text-disabled); + } + + /* Buttons widget */ + .widget-buttons-grid { + padding: 8px; + margin: 8px; + border-radius: 0px; + } + + .widget-buttons-grid flowboxchild>button { + border-radius: 0px; + } + + /* Menubar widget */ + .widget-menubar>.menu-button-bar>.start { + margin-left: 8px; + } + + .widget-menubar>.menu-button-bar>.end { + margin-right: 8px; + } + + .widget-menubar>.menu-button-bar>.widget-menubar-container button { + margin: 0 4px; + } + + .widget-menubar>revealer { + margin-top: 8px; + } + + .widget-menubar>revealer button { + margin: 8px; + margin-top: 0; + } + + /* Volume widget */ + .widget-volume { + padding: 8px; + margin-bottom: 8px; + border-radius: 0px; + } + + .widget-volume row image { + -gtk-icon-size: 24px; + } + + .per-app-volume { + background-color: var(--bg-secondary); + padding: 8px 8px 8px 8px; + margin: 8px 8px 8px 8px; + border-radius: 0px; + } + + /* Slider widget */ + .widget-slider { + padding: 8px; + border-radius: 0px; + } + + .widget-slider label { + font-size: inherit; + } + + /* Backlight widget */ + .widget-backlight { + padding: 8px; + border-radius: 0px; + margin-top: -8px; + margin-bottom: 8px; + } + + /* Inhibitors widget */ + .widget-inhibitors>label { + margin: 8px; + font-size: 16px; + } + + .widget-inhibitors>button { + margin: 8px; + } + ''; + }; +} diff --git a/users/natalie/home/tmux.nix b/users/natalie/home/tmux.nix new file mode 100644 index 0000000000000000000000000000000000000000..edf6f008bb2cc6167ce783164f29edbd57fe11b6 --- /dev/null +++ b/users/natalie/home/tmux.nix @@ -0,0 +1,107 @@ +{ pkgs, config, ... }: +let + tmux-nvim = pkgs.tmuxPlugins.mkTmuxPlugin { + pluginName = "tmux.nvim"; + version = "unstable-2025-05-19"; + src = pkgs.fetchFromGitHub { + owner = "aserowy"; + repo = "tmux.nvim/"; + rev = "2c1c3be0ef287073cef963f2aefa31a15c8b9cd8"; + sha256 = "sha256-/XIjqQr9loWVTXZDaZx2bSQgco46z7yam50dCnM5p1U="; + }; + }; + +in +{ + programs.tmux = { + enable = true; + mouse = true; + + shell = "${pkgs.fish}/bin/fish"; + + shortcut = "a"; + keyMode = "vi"; + + plugins = with pkgs.tmuxPlugins; [ + better-mouse-mode + tmux-nvim + tmux-thumbs + cpu + tmux-floax + yank + # must be before continuum edits right status bar + { + plugin = catppuccin; + extraConfig = '' + set -g @catppuccin_flavour "mocha" + set -g @catppuccin_window_status_style "rounded" + + set -g status-right-length 100 + set -g status-left-length 100 + set -g status-left "" + set -g status-right "#{E:@catppuccin_status_application}" + set -ag status-right "#{E:@catppuccin_status_session}" + set -ag status-right "#{E:@catppuccin_status_uptime}" + + ''; + } + { + plugin = resurrect; + extraConfig = '' + set -g @resurrect-strategy-vim 'session' + set -g @resurrect-strategy-nvim 'session' + set -g @resurrect-capture-pane-contents 'on' + '' + + '' + # Taken from: https://github.com/p3t33/nixos_flake/blob/5a989e5af403b4efe296be6f39ffe6d5d440d6d6/home/modules/tmux.nix + resurrect_dir="$XDG_CACHE_HOME/.tmux/resurrect" + set -g @resurrect-dir $resurrect_dir + + set -g @resurrect-hook-post-save-all 'target=$(readlink -f $resurrect_dir/last); sed "s| --cmd .*-vim-pack-dir||g; s|/etc/profiles/per-user/$USER/bin/||g; s|/home/$USER/.nix-profile/bin/||g" $target | sponge $target' + ''; + + } + { + plugin = continuum; + extraConfig = '' + set -g @continuum-restore 'on' + set -g @continuum-boot 'on' + set -g @continuum-save-interval '10' + set -g @continuum-systemd-start-cmd 'start-server' + ''; + } + + ]; + extraConfig = '' + set -g default-terminal "tmux-256color" + set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.local/share/tmux/plugins' + # Easier reload of config + bind r source-file ~/.config/tmux/tmux.conf + # Quicker escape in neovim + set -sg escape-time 0 + set-option -g set-titles on + set-option -g set-titles-string "#S / #W" + + set -g allow-passthrough on + + # '@pane-is-vim' is a pane-local option that is set by the plugin on load, + # and unset when Neovim exits or suspends; note that this means you'll probably + # not want to lazy-load smart-splits.nvim, as the variable won't be set until + # the plugin is loaded + + # Smart pane switching with awareness of Neovim splits. + bind-key -n C-h if -F "#{@pane-is-vim}" 'send-keys C-h' 'select-pane -L' + bind-key -n C-j if -F "#{@pane-is-vim}" 'send-keys C-j' 'select-pane -D' + bind-key -n C-k if -F "#{@pane-is-vim}" 'send-keys C-k' 'select-pane -U' + bind-key -n C-l if -F "#{@pane-is-vim}" 'send-keys C-l' 'select-pane -R' + + # Smart pane resizing with awareness of Neovim splits. + bind-key -n M-h if -F "#{@pane-is-vim}" 'send-keys M-h' 'resize-pane -L 3' + bind-key -n M-j if -F "#{@pane-is-vim}" 'send-keys M-j' 'resize-pane -D 3' + bind-key -n M-k if -F "#{@pane-is-vim}" 'send-keys M-k' 'resize-pane -U 3' + bind-key -n M-l if -F "#{@pane-is-vim}" 'send-keys M-l' 'resize-pane -R 3' + + ''; + }; + +} diff --git a/users/natalie/home/vicinae.nix b/users/natalie/home/vicinae.nix new file mode 100644 index 0000000000000000000000000000000000000000..5276e4bb4a02d62e5e02631b8317a8201c571e9d --- /dev/null +++ b/users/natalie/home/vicinae.nix @@ -0,0 +1,30 @@ +{ inputs, pkgs, ... }: +{ + services.vicinae = { + enable = true; + autoStart = false; + settings = { + faviconService = "twenty"; # twenty | google | none + font.size = 11; + popToRootOnClose = false; + rootSearch.searchFiles = true; + theme.name = "catpuccin-mocha"; + window = { + csd = true; + opacity = 0.95; + rounding = 10; + }; + + }; + + # extensions = [ + # (inputs.vicinae.mkVicinaeExtension.${pkgs.system} { + # inherit pkgs; + # name = "nixpkgs search"; + # src = pkgs.fetchFromGithub { + # + # }; + # }) + # ]; + }; +} diff --git a/users/natalie/home/waybar/default.nix b/users/natalie/home/waybar/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..702d5206fbab8ae339def456ae5da8f17a4a7ae4 --- /dev/null +++ b/users/natalie/home/waybar/default.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + imports = [ + ./waybar.nix + ./settings.nix + ./style.nix + ]; +} diff --git a/users/natalie/home/waybar/settings.nix b/users/natalie/home/waybar/settings.nix new file mode 100644 index 0000000000000000000000000000000000000000..1a883448d70aaff7517c8e629760bab53e4ae430 --- /dev/null +++ b/users/natalie/home/waybar/settings.nix @@ -0,0 +1,181 @@ +{ + pkgs, + inputs, + currentSystem, + ... +}: +let + custom = { + font = "Maple Mono"; + font_size = "18px"; + font_weight = "bold"; + text_color = "#FBF1C7"; + background_0 = "#1D2021"; + background_1 = "#282828"; + border_color = "#928374"; + red = "#CC241D"; + green = "#98971A"; + yellow = "#FABD2F"; + blue = "#458588"; + magenta = "#B16286"; + cyan = "#689D6A"; + orange = "#D65D0E"; + opacity = "1"; + indicator_height = "2px"; + }; +in +{ + programs.waybar.settings.mainBar = with custom; { + position = "top"; + layer = "bottom"; + height = 28; + margin-top = 0; + margin-bottom = 0; + margin-left = 0; + margin-right = 0; + modules-left = [ + "custom/launcher" + "hyprland/workspaces" + ]; + modules-center = [ "clock" ]; + modules-right = [ + "cpu" + "memory" + "pulseaudio" + "network" + "hyprland/language" + "tray" + "custom/notification" + "custom/power-menu" + ]; + clock = { + calendar = { + format = { + today = "{}"; + }; + }; + format = " {:%H:%M}"; + tooltip = "true"; + tooltip-format = "{:%Y %B}\n{calendar}"; + format-alt = " {:%d/%m}"; + }; + "hyprland/workspaces" = { + active-only = false; + disable-scroll = true; + format = "{icon}"; + on-click = "activate"; + format-icons = { + sort-by-number = true; + }; + persistent-workspaces = { + "1" = [ ]; + "2" = [ ]; + "3" = [ ]; + "4" = [ ]; + "5" = [ ]; + }; + }; + cpu = { + format = " {usage}%"; + format-alt = " {avg_frequency} GHz"; + interval = 2; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --font-size=14 -e btop'"; + }; + memory = { + format = "󰟜 {}%"; + format-alt = "󰟜 {used} GiB"; #  + interval = 2; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --font-size=14 -e btop'"; + }; + disk = { + # path = "/"; + format = "󰋊 {percentage_used}%"; + interval = 60; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --font-size=14 -e btop'"; + }; + network = { + format-wifi = " {signalStrength}%"; + format-ethernet = "󰀂 "; + tooltip-format = "Connected to {essid} {ifname} via {gwaddr}"; + format-linked = "{ifname} (No IP)"; + format-disconnected = "󰖪 "; + }; + tray = { + icon-size = 20; + spacing = 8; + }; + pulseaudio = { + format = "{icon} {volume}%"; + format-muted = " {volume}%"; + format-icons = { + default = [ "" ]; + }; + scroll-step = 2; + on-click = "${pkgs.pamixer}/bin/pamixer -t"; + on-click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; + }; + # battery = { + # format = "{icon} {capacity}%"; + # format-icons = [ + # " " + # " " + # " " + # " " + # " " + # ]; + # format-charging = "{capacity}%"; + # format-full = "{capacity}%"; + # format-warning = "{capacity}%"; + # interval = 5; + # states = { + # warning = 20; + # }; + # format-time = "{H}h{M}m"; + # tooltip = true; + # tooltip-format = "{time}"; + # }; + "hyprland/language" = { + tooltip = true; + tooltip-format = "Keyboard layout"; + format = " {}"; + format-fr = "FR"; + format-en = "US"; + on-click = "${pkgs.hyprland}/bin/hyprctl switchxkblayout at-translated-set-2-keyboard next"; + }; + "custom/launcher" = { + format = ""; + on-click = "random-wallpaper"; + on-click-right = "${inputs.vicinae.packages.${currentSystem}.default}vicinae vicinae://toggle"; + tooltip = "true"; + tooltip-format = "Random Wallpaper"; + }; + "custom/notification" = { + tooltip = true; + tooltip-format = "Notifications"; + format = "{icon}"; + format-icons = { + notification = ""; + none = ""; + dnd-notification = ""; + dnd-none = ""; + inhibited-notification = ""; + inhibited-none = ""; + dnd-inhibited-notification = ""; + dnd-inhibited-none = ""; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "${pkgs.swaynotificationcenter}/bin/swaync-client -swb"; + on-click = "${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"; + on-click-right = "${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw"; + escape = true; + }; + "custom/power-menu" = { + tooltip = true; + tooltip-format = "Power menu"; + format = ""; + on-click = "power-menu"; + }; + }; + +} diff --git a/users/natalie/home/waybar/style.nix b/users/natalie/home/waybar/style.nix new file mode 100644 index 0000000000000000000000000000000000000000..048f66934053d4f9da0482ac511610aa11eefea3 --- /dev/null +++ b/users/natalie/home/waybar/style.nix @@ -0,0 +1,107 @@ +{ ... }: +let + custom = { + font = "Maple Mono"; + font_size = "18px"; + font_weight = "bold"; + text_color = "#FBF1C7"; + background_0 = "#1D2021"; + background_1 = "#282828"; + border_color = "#A89984"; + red = "#CC241D"; + green = "#98971A"; + yellow = "#FABD2F"; + blue = "#458588"; + magenta = "#B16286"; + cyan = "#689D6A"; + orange = "#D65D0E"; + orange_bright = "#FE8019"; + opacity = "1"; + indicator_height = "2px"; + }; +in +{ + programs.waybar.style = with custom; '' + * { + border: none; + border-radius: 0px; + padding: 0; + margin: 0; + font-family: ${font}; + font-weight: ${font_weight}; + opacity: ${opacity}; + font-size: ${font_size}; + } + + window#waybar { + background: ${background_1}; + border-top: 1px solid ${border_color}; + } + + tooltip { + background: ${background_1}; + border: 1px solid ${border_color}; + } + tooltip label { + margin: 5px; + color: ${text_color}; + } + + #workspaces { + padding-left: 15px; + } + #workspaces button { + color: ${yellow}; + padding-left: 5px; + padding-right: 5px; + margin-right: 10px; + } + #workspaces button.empty { + color: ${text_color}; + } + #workspaces button.active { + color: ${orange_bright}; + } + + #clock { + color: ${text_color}; + } + + #tray { + margin-left: 10px; + color: ${text_color}; + } + #tray menu { + background: ${background_1}; + border: 1px solid ${border_color}; + padding: 8px; + } + #tray menuitem { + padding: 1px; + } + + #pulseaudio, #network, #cpu, #memory, #disk, #battery, #language, #custom-notification, #custom-power-menu { + padding-left: 5px; + padding-right: 5px; + margin-right: 10px; + color: ${text_color}; + } + + #pulseaudio, #language, #custom-notification { + margin-left: 15px; + } + + #custom-power-menu { + padding-right: 2px; + margin-right: 5px; + } + + #custom-launcher { + font-size: 20px; + color: ${text_color}; + font-weight: bold; + margin-left: 15px; + padding-right: 10px; + } + ''; +} diff --git a/users/natalie/home/waybar/waybar.nix b/users/natalie/home/waybar/waybar.nix new file mode 100644 index 0000000000000000000000000000000000000000..67a25fee81417c370526e6a5b6aac1656831148f --- /dev/null +++ b/users/natalie/home/waybar/waybar.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + programs.waybar = { + enable = true; + systemd.enable = true; + }; +} diff --git a/users/natalie/packages.nix b/users/natalie/packages.nix index 5a16c867d2b398df4e52266913e6669be2743dc0..0cb6798189443f20949825e937b644c3939def79 100644 --- a/users/natalie/packages.nix +++ b/users/natalie/packages.nix @@ -18,6 +18,10 @@ with pkgs; typescript-language-server deno + #desktop shit + gtk3 + gtk4 + #ides #virtualization @@ -37,7 +41,6 @@ with pkgs; #terminal stuff (btop.override { cudaSupport = true; }) - tmux zellij lazygit fzf