mirror of
https://github.com/anotherhadi/nixy.git
synced 2026-08-21 10:45:49 +02:00
Compare commits
1243 Commits
11391ae56c
..
v4.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
| add26c628b | |||
| 8a58bbbaf0 | |||
| d8d55793eb | |||
| 83bae2864e | |||
| 2ad13f1c9e | |||
| 9bbc356145 | |||
| 26fea007b1 | |||
| 56e55563a1 | |||
| ed679817a7 | |||
| f3ffdbbace | |||
| f1f129c6dd | |||
| 121fe69f7a | |||
| 2722fa31f2 | |||
| c9e072899b | |||
| 499701b522 | |||
| f65f244d39 | |||
| 8d35a32efe | |||
| 245b28ad75 | |||
| d9691bdb61 | |||
| 4d9d4f2abc | |||
| fd2e6137ac | |||
| 69c9c99ff3 | |||
| 3ed7e22446 | |||
| 8910fca468 | |||
| 29aec4ca49 | |||
| cfa774af45 | |||
| a90082c9ab | |||
| 33fee1a1d4 | |||
| 1b5c6892fd | |||
| 277cfaf772 | |||
| d7e8223351 | |||
| f89d0852fd | |||
| 704b14ddb3 | |||
| f3b970909f | |||
| da146a380c | |||
| 1668774dc1 | |||
| 12d7f1613b | |||
| cb295ec299 | |||
| d81dbe3912 | |||
| 49aefae1a9 | |||
| 77cd9829f3 | |||
| a1b0ad29c8 | |||
| 11debdf507 | |||
| b774b07c10 | |||
| bc2c6e667f | |||
| 64133bcc1a | |||
| 7ab918dae2 | |||
| 14b0229ba8 | |||
| d76f1537a9 | |||
| 13b3ff9dde | |||
| f34c34b26f | |||
| 6d3c6e3628 | |||
| 3b41e08df8 | |||
| 0f59b1a46d | |||
| 4134593cb9 | |||
| 564737edb0 | |||
| 5b7c100cac | |||
| 20d700ba61 | |||
| 664d7add82 | |||
| a9ebb64bdf | |||
| a3d41dd26c | |||
| bca5274f0a | |||
| 6bc4c9a024 | |||
| 7cb64cdd29 | |||
| 52f40f1dbb | |||
| 92aef4f62c | |||
| 9252a652e8 | |||
| 4a443e38d1 | |||
| a4a7babd9c | |||
| 501ef4b42b | |||
| c104f30980 | |||
| 731b9908ae | |||
| 267e177b29 | |||
| 48edffbd54 | |||
| e462fa2247 | |||
| 9506544bf2 | |||
| b8d4d07835 | |||
| da0342e33b | |||
| afbafc9752 | |||
| cbd541355f | |||
| 8a84ab9f9a | |||
| 55184184de | |||
| dc9147edb2 | |||
| dc10bf31ba | |||
| 8c7f7d6475 | |||
| 51ae14e927 | |||
| 437f2cc9a4 | |||
| 04846a3115 | |||
| 6928cc67a3 | |||
| 2537136dd3 | |||
| 09a4b0c73b | |||
| 493604b935 | |||
| 8eaab355a3 | |||
| c950e56e3c | |||
| 0ad27db2ac | |||
| 78f0775755 | |||
| b5bd461fb5 | |||
| 267ffb1384 | |||
| b864cc849b | |||
| 8dab0dd063 | |||
| 32a14a461f | |||
| 33e9f955ee | |||
| bb5befa151 | |||
| 885267c0eb | |||
| cec4e34ae7 | |||
| 05a39ecf87 | |||
| 16b0ca1e33 | |||
| b5e21d4b35 | |||
| 3ce5491157 | |||
| 178f09cebb | |||
| d63a8a83fc | |||
| b0beefee03 | |||
| 7493c4cf8b | |||
| 072bf09e16 | |||
| de39437dec | |||
| 1ae7955b91 | |||
| 70ac5576cc | |||
| ffa38127e5 | |||
| c6e1bdbfee | |||
| 5000be6de6 | |||
| bb2993b125 | |||
| 8e37b228a0 | |||
| 62ebaa83c7 | |||
| 6f5f4a65f3 | |||
| d9eb0483b6 | |||
| 29b1c479f2 | |||
| e6e9799c39 | |||
| badd7ed261 | |||
| 47563cf9f5 | |||
| 3422996f46 | |||
| 09dd8dc501 | |||
| cf461ddafc | |||
| 0bfcb20fda | |||
| bb45ec9bdb | |||
| e780728eb6 | |||
| 49cbb8c9f3 | |||
| cd09256f57 | |||
| 6877bc909b | |||
| df3048021c | |||
| 3db1a36a09 | |||
| 8528be9bc9 | |||
| bfa46c2179 | |||
| b0014fd3b9 | |||
| 0f2362a70d | |||
| 9ed830e38c | |||
| 9640c9742b | |||
| 073af0cd2e | |||
| c61fa68af2 | |||
| 70b280ebb5 | |||
| ac6b12592a | |||
| 125ce4647b | |||
| d5524a937f | |||
| 3fefcce082 | |||
| 5deec5df11 | |||
| 37fc4afccb | |||
| 6dbbaf0d4f | |||
| 0652808dd9 | |||
| dcc5d1e278 | |||
| 69877adff8 | |||
| 7960678330 | |||
| f427e13f18 | |||
| 0cc1cdc3db | |||
| c993fc178e | |||
| de550aab5c | |||
| 0181d9bbef | |||
| 91521e1ac2 | |||
| a98a8b7604 | |||
| 77982c0815 | |||
| 9bfc3a3d6a | |||
| 0eb5656157 | |||
| 09b1792e49 | |||
| 79847b4aad | |||
| 41bcd1922c | |||
| 741815b13d | |||
| 18cd56d9a8 | |||
| 65c30ae3cb | |||
| 6d15eeb8bc | |||
| adf96aebb4 | |||
| dcc838a51f | |||
| 2eadc2dae6 | |||
| d38ca993f5 | |||
| 0bab55a561 | |||
| 93078c15e6 | |||
| 274550929f | |||
| 6ef2d72a03 | |||
| af24da07c3 | |||
| dc5c30f9b9 | |||
| 12a8ce472e | |||
| 1ef60281d9 | |||
| 7dd723717a | |||
| 200aeaf833 | |||
| 6b6e68b78e | |||
| e31f9b26a9 | |||
| 1bc0a26a0a | |||
| c3b52cba74 | |||
| f6eb9a9f46 | |||
| 52ed9413f8 | |||
| de76e2ad68 | |||
| d38aff93c7 | |||
| a1b2df8b84 | |||
| 1a2c1e6d9d | |||
| 7b32c15623 | |||
| d04076e30e | |||
| 75d90528a6 | |||
| 76b2eb55f2 | |||
| 588ea13f2f | |||
| 028307852e | |||
| d771ba97c2 | |||
| 7f8569a671 | |||
| 2f4c67a0cf | |||
| 2cf0a3b7e5 | |||
| 46ee1a8d73 | |||
| 5c7d3431bd | |||
| 1720aae3b3 | |||
| 73d09fd235 | |||
| 8c40743662 | |||
| e8535bc99a | |||
| c61817b21e | |||
| ca4c787631 | |||
| 7d2d98cb59 | |||
| 403cf85504 | |||
| 1d334c4d64 | |||
| 2e35441da7 | |||
| d294c68aa6 | |||
| 939655e107 | |||
| cb01305d5f | |||
| 007b39acd8 | |||
| d075f6902e | |||
| 1c153fb5f7 | |||
| 027b2f1a99 | |||
| c3d63aece5 | |||
| 4967c75013 | |||
| ec0b98a2fb | |||
| 940e1ba35b | |||
| e53b21b061 | |||
| 1ac5cb0321 | |||
| 4959a35759 | |||
| e6e74d18a9 | |||
| 2213c3357b | |||
| 40c1319247 | |||
| e059a82de5 | |||
| 160aeda5e0 | |||
| a8a239d64d | |||
| 341d4aa484 | |||
| 89edce89c0 | |||
| 7ee33bcbed | |||
| 38ea4789cc | |||
| 8bb7f1d31b | |||
| 7c5f36b3d2 | |||
| 001a7f89bc | |||
| ebcb53e7bb | |||
| 835641feea | |||
| 880e9c56f1 | |||
| 004ed1b728 | |||
| 69c44fd1ab | |||
| 97d6482b1c | |||
| 069681999f | |||
| ae69dd7280 | |||
| 9917d453bc | |||
| 16edacecdc | |||
| 8625bfe08b | |||
| 8d83297d4e | |||
| 35a2831bcc | |||
| bebe244701 | |||
| 2dda9d80bf | |||
| 19d285973a | |||
| e1e42c9fad | |||
| 9191c95265 | |||
| c23988dbd8 | |||
| 6cf43f5f04 | |||
| 74b64b98b1 | |||
| f1ba5fa41f | |||
| 2caa1ab9f6 | |||
| afc37d664d | |||
| 36d0f439dc | |||
| 36070cc91a | |||
| da66a509a8 | |||
| f894f27326 | |||
| 449e887f32 | |||
| 053f18a513 | |||
| 19073bc724 | |||
| d84e40a207 | |||
| 05a0fef0b2 | |||
| f9feaac752 | |||
| 47c47eb961 | |||
| 194348085a | |||
| eb8e102ff6 | |||
| fad1e7ac5b | |||
| 623b64d230 | |||
| fb27b3101b | |||
| 7288a39da1 | |||
| c0e00c562e | |||
| 4cf9c386bd | |||
| e0d96ef5cb | |||
| b4e2509a1d | |||
| 06ac6221f2 | |||
| 450b88406c | |||
| eb0e338ea5 | |||
| a2fc942aa0 | |||
| daaf3a8432 | |||
| 60c1a729fa | |||
| a457cbe633 | |||
| ae988b5f93 | |||
| 829debe331 | |||
| a3a7e515ce | |||
| 15d7a32642 | |||
| 2e3ff65b70 | |||
| fffd17a39c | |||
| 2e01f54d0e | |||
| d49e7d41f4 | |||
| 3599deb6aa | |||
| 0c84342ac5 | |||
| 3212f23387 | |||
| 93b2a398ba | |||
| f3d888a5b3 | |||
| 6515d0774d | |||
| 0687baf62d | |||
| 74072c04fc | |||
| d0fbd422df | |||
| 00b7e0f34b | |||
| 23173b891e | |||
| 8652824561 | |||
| ae65eb0e57 | |||
| efe9046596 | |||
| 2bf71ce9a0 | |||
| 4df69215be | |||
| deaa8757e7 | |||
| 66fe33f6ea | |||
| 6c4104a9e6 | |||
| 5cb1dd90bc | |||
| ce3841586e | |||
| 21b94c6764 | |||
| 40745601ed | |||
| 04d3544450 | |||
| b92753c020 | |||
| 42dea7172e | |||
| a03866aab6 | |||
| ba6a13dd27 | |||
| ef49fff185 | |||
| 7b86425acf | |||
| d222d38d23 | |||
| 78ebef4cc4 | |||
| 440fd90460 | |||
| 0ba2f306d5 | |||
| 6952508638 | |||
| 701afe0b97 | |||
| 71c269bc7c | |||
| 7af9f66b5c | |||
| c4657c96ef | |||
| e7e50ffdd7 | |||
| ccd495a7df | |||
| 1cdeb2dfb6 | |||
| 1794861962 | |||
| da4557f6e9 | |||
| b6cdb6e520 | |||
| b84fe4c60b | |||
| 220a69f276 | |||
| 83b8a846b4 | |||
| 54fe95f5e2 | |||
| e59e059fc7 | |||
| 907133d300 | |||
| e8c3a26dbb | |||
| a3b0c62904 | |||
| c414653c75 | |||
| dd782f6ac5 | |||
| a83a9a2c42 | |||
| 4b41e5a98a | |||
| 25bd6cdc93 | |||
| ae9e720b0e | |||
| 370af13a74 | |||
| 1680642b50 | |||
| 20a7ffc7f5 | |||
| 28640f6fc4 | |||
| d775962afe | |||
| f66c06a489 | |||
| 5154b31385 | |||
| b0a379642d | |||
| fb97929c36 | |||
| 20242295ce | |||
| ab4d67768c | |||
| 2df04620c3 | |||
| 8a2d188e49 | |||
| 04ca1a3fba | |||
| 8d23a0e6e2 | |||
| f10d4ea424 | |||
| 86ce837ff4 | |||
| 27c5cc520c | |||
| b1a6ea69c2 | |||
| 04822e03c4 | |||
| caea92ecc2 | |||
| fe5ef8a25d | |||
| abcb9dfc82 | |||
| fe982f8a12 | |||
| b0ab5932e4 | |||
| de25b920e3 | |||
| 4f7853994b | |||
| 8ff0c3d558 | |||
| 4164eccfec | |||
| e0d3ec0bd7 | |||
| 718f399f7b | |||
| 10f68e4d86 | |||
| 7f7f418011 | |||
| cd1ca57dda | |||
| 57d1813fae | |||
| b776945818 | |||
| 4127bb79a1 | |||
| 3e535ee5e5 | |||
| f3cf06ed29 | |||
| 8656e31386 | |||
| 02bc033990 | |||
| fb531ab960 | |||
| e50b3878af | |||
| 4e902409c9 | |||
| 5f60916809 | |||
| ec1a6e9379 | |||
| e8a395d91e | |||
| 23890441d0 | |||
| 8db9c15ed0 | |||
| e2e886736d | |||
| e0d5782f70 | |||
| f87695868d | |||
| dd3793626c | |||
| 6aa2343dcb | |||
| 5c1006553f | |||
| 2647164965 | |||
| 5df93a8a8d | |||
| 102155c842 | |||
| 7dd04294cc | |||
| bc55ca65f5 | |||
| 6b29159a1c | |||
| 16c41a45ac | |||
| ec6dae1253 | |||
| 508b181fc3 | |||
| 7cfd6ad6bd | |||
| ec3d43f089 | |||
| 6d774a66ea | |||
| 90711e164b | |||
| b90bbf0e78 | |||
| aad6f7605e | |||
| 544ee3e4ed | |||
| 69a01839f9 | |||
| 6f66b88206 | |||
| 93e9a86212 | |||
| 3283a0f705 | |||
| 229faa0d10 | |||
| 69f1612f06 | |||
| 16a212afae | |||
| 38ff91f5fd | |||
| b750d6f30d | |||
| e394982570 | |||
| 6f5c0f371e | |||
| 8079e378bc | |||
| c05f40070b | |||
| 3c5af99518 | |||
| 180a6dedb1 | |||
| 3318bf045e | |||
| 43428e0c5d | |||
| 26b43a6201 | |||
| 645c1c1338 | |||
| 36046e308d | |||
| bc8aa1eefd | |||
| a5980e584b | |||
| 4bbe1c1119 | |||
| 3799a28915 | |||
| 62c03d7d45 | |||
| 972ea412b1 | |||
| b93d46004d | |||
| 2ea0a422dd | |||
| e2954d2439 | |||
| 3a87fa8cad | |||
| ef639df3b5 | |||
| e7650132f3 | |||
| c8ca262f2d | |||
| 8bc813900b | |||
| fab8e510b6 | |||
| 6a73211266 | |||
| 67391b1714 | |||
| 6d903c59f4 | |||
| cc9c9c9a57 | |||
| 7c53a49383 | |||
| a177e123c5 | |||
| 6a8fbf18c7 | |||
| 9b32bd722a | |||
| 785fc88903 | |||
| 7bb1d4f48b | |||
| e3c89cdce9 | |||
| 3387f719cf | |||
| 4c45e854de | |||
| fce14f5b56 | |||
| 8988a6713c | |||
| 0c3881a056 | |||
| 1295ef51f2 | |||
| 3dbdde790b | |||
| c50b2f6fb7 | |||
| c30894b82b | |||
| cb703b7ac6 | |||
| 2b5e649877 | |||
| 8ef64ed165 | |||
| a52f208ed9 | |||
| 7b3501d595 | |||
| 5d98434404 | |||
| a6b54dab72 | |||
| 9a089a473d | |||
| 3a31822da9 | |||
| b4cc023466 | |||
| 949be45201 | |||
| c1334bbcbf | |||
| 6ff7cfde7b | |||
| 37425c8fb7 | |||
| 6f8ec3d66f | |||
| 593fb748d5 | |||
| cab201daf6 | |||
| e16264a74b | |||
| e706f743dc | |||
| 2fed544807 | |||
| 463fc6b83b | |||
| ce4287b650 | |||
| 815f76c51f | |||
| 23161537de | |||
| 156826e625 | |||
| 3ba6ba93cb | |||
| 38d7a0a326 | |||
| 267b8f3ef0 | |||
| a740adfbe1 | |||
| f9e9d2e21b | |||
| e3896ef257 | |||
| 2979638534 | |||
| 4256b93eb9 | |||
| 0144ae28ae | |||
| 4640a241e5 | |||
| 1377248513 | |||
| 2ae2151c04 | |||
| 00ef3b45b5 | |||
| 7ad11967af | |||
| b2031d4b9f | |||
| 58789a4a3a | |||
| 131b4ff4e9 | |||
| 0153473d3c | |||
| b34c5ca59e | |||
| ba412ce128 | |||
| fe4e69375e | |||
| 42a2cc4343 | |||
| b956ab0087 | |||
| 1af7b9f9d3 | |||
| e18224c8b2 | |||
| 7ea671275c | |||
| dd94c689fb | |||
| c09a2a4b7c | |||
| 8440da49c2 | |||
| 625216c6cc | |||
| 4784054a5b | |||
| 961055328c | |||
| 7761e4b44c | |||
| 351f8b478b | |||
| 10550b1d65 | |||
| d31584d9bc | |||
| d1faa73c61 | |||
| 03c2f66d2c | |||
| fc2c7550e3 | |||
| 99e100334b | |||
| 9dc676092e | |||
| 6fc2b080a8 | |||
| da88abb7b1 | |||
| e795b1893b | |||
| 813fd97d6b | |||
| ae31cad367 | |||
| 2c09922445 | |||
| 2a9cde726e | |||
| 0ee029945b | |||
| 3ea5482490 | |||
| da2be6568f | |||
| d5b65a09fe | |||
| a19b627987 | |||
| a479159044 | |||
| bd3cdbf9eb | |||
| 9b2e372286 | |||
| 2bd844a12c | |||
| 341910b9fd | |||
| b350e0cbad | |||
| f9568d1a65 | |||
| cda5be8ed1 | |||
| 9f0767d932 | |||
| 48c04ce469 | |||
| bb76d72dc8 | |||
| 66a8e8060c | |||
| c13ebbeaea | |||
| aa2fec2609 | |||
| 6f553426e6 | |||
| 3b7ecf820b | |||
| 7945ce542a | |||
| 966bb424f8 | |||
| d515f74707 | |||
| e984148360 | |||
| 742d706539 | |||
| 0407ec6844 | |||
| 5b7b474925 | |||
| 30eebcce84 | |||
| cbac917367 | |||
| 982491561e | |||
| 427239c54d | |||
| 0675a17166 | |||
| 0e468b1aa5 | |||
| 6c1e0940ac | |||
| e4f099dea7 | |||
| 6fcfa9bade | |||
| edbd970b73 | |||
| 745a9baae9 | |||
| 43cbd98b22 | |||
| ff11b6a768 | |||
| 7b8774d81f | |||
| 017160cff1 | |||
| 949c6dacfd | |||
| 7bd210ba3c | |||
| 4e2c6cbce5 | |||
| 35f0fcbb1f | |||
| d4f2128b72 | |||
| d5486d9b86 | |||
| 044adea965 | |||
| b637233137 | |||
| 82b96a1900 | |||
| bcec00e51c | |||
| f591bd6b2b | |||
| 87db8442ed | |||
| d628b6a5a4 | |||
| 95fbe68e96 | |||
| 3acb5429cd | |||
| 50304e6fbe | |||
| 241757518c | |||
| adab419e03 | |||
| 7103042597 | |||
| 74dc346ea3 | |||
| 47305b4f49 | |||
| 05a795fb1f | |||
| 0ec9ee4d51 | |||
| ba8e07ed87 | |||
| edc9615f6f | |||
| fbef284ba2 | |||
| 241fa97263 | |||
| b155c35a9c | |||
| df659a917c | |||
| 85a0c3d118 | |||
| a08c6833e4 | |||
| 9631d4ef4f | |||
| 703bb9ff79 | |||
| 7f6bf8e405 | |||
| 4ec04c372a | |||
| cf12e5c310 | |||
| bfb8cc8880 | |||
| 35ea4e364b | |||
| 5596b17feb | |||
| 234d68d34b | |||
| 1b40ad6547 | |||
| d6ea51c5ad | |||
| 10b4e2b826 | |||
| e5fd687524 | |||
| c872dfe1f5 | |||
| 7a37403334 | |||
| 5c8674f619 | |||
| 2fe6378221 | |||
| 417e18f7dc | |||
| 6bba61db34 | |||
| 6525cc6a0b | |||
| 8df6f3faac | |||
| e6bf30682a | |||
| 68d78063af | |||
| 623675965c | |||
| bf1c8e33a4 | |||
| 28d03937a4 | |||
| a53de1dc18 | |||
| c85f9f5add | |||
| ab5bd64fa8 | |||
| 0f587c2d7a | |||
| 90917d269f | |||
| 4ae0793b12 | |||
| 6e50f7cb72 | |||
| 23d9aad7aa | |||
| 70baccb96b | |||
| 06a41b3d6e | |||
| c98f623bbf | |||
| cb2272746f | |||
| cd943828cc | |||
| 8a7a3354eb | |||
| aa8f600bd1 | |||
| 9159b34d59 | |||
| becdaf407e | |||
| 746f105209 | |||
| 96932de4fa | |||
| 69c12bf054 | |||
| 16aa758975 | |||
| 07b4b490ae | |||
| ecf6ff0627 | |||
| c5db47ab0e | |||
| 26bc2fef9a | |||
| 27dcbaafa4 | |||
| 87695c4e21 | |||
| 3b43b088ba | |||
| 792466d8c6 | |||
| 25be368726 | |||
| 28d0da590c | |||
| 064407796e | |||
| 98f75ebf3c | |||
| f7ab27b629 | |||
| 049c0c5803 | |||
| 24e5badf06 | |||
| 964c511052 | |||
| c971073a28 | |||
| 6f5fa48009 | |||
| 2c8b7ef08a | |||
| c3f611af88 | |||
| 4d3b0e5244 | |||
| 121991682b | |||
| a80e52d0d0 | |||
| 21845bef5f | |||
| ebdbddf5c0 | |||
| cceb96c26b | |||
| 943eaf2116 | |||
| 1d034481e9 | |||
| 079e01f71e | |||
| f9733872fd | |||
| 5a235ce597 | |||
| a21e68fe5d | |||
| f7616d564b | |||
| b1f7498303 | |||
| 1b6a2dd89e | |||
| f985ded50a | |||
| 7ecde5089e | |||
| c4415474c3 | |||
| a8e6060a92 | |||
| 28e7f5c0dc | |||
| 0968954de1 | |||
| e6b7406730 | |||
| a3d38d8183 | |||
| 932f6b6dbb | |||
| c97948ba09 | |||
| a4050c3422 | |||
| c025097810 | |||
| 769880a865 | |||
| f7d00d972f | |||
| 3a65e6b9a4 | |||
| 893417e316 | |||
| 5bf5e9dee3 | |||
| 36d09253cf | |||
| e69ebdd9d5 | |||
| 697a5c3d63 | |||
| 4636723f7c | |||
| 7bdbc3fdde | |||
| 66e52892ba | |||
| 437fe822ed | |||
| 48f7170f4f | |||
| 9943a1dacf | |||
| 6cc1d430a5 | |||
| 8b5ff95ba3 | |||
| 678098460a | |||
| 5eb34e05ab | |||
| e94c09a5e2 | |||
| 0d00056d61 | |||
| 11909b2db3 | |||
| 50ad65ec50 | |||
| 128b9a79c3 | |||
| e17a7f6e5c | |||
| 60c6ba9bd1 | |||
| 4362d3ada7 | |||
| e73350a76b | |||
| 71b6f444c2 | |||
| 8cb73c1a34 | |||
| 70596d95fb | |||
| d937db8573 | |||
| 1c6a9f5caa | |||
| 3470c61c5e | |||
| 005aaef5e1 | |||
| 03490447cb | |||
| 280b114e66 | |||
| ed4eba3d14 | |||
| b70aa6661b | |||
| b0507d10ea | |||
| c94a3b85d8 | |||
| 04015018a4 | |||
| fe1f3fce14 | |||
| b1c379221e | |||
| 5812e60eb5 | |||
| e7f2c03502 | |||
| 9db064e331 | |||
| 7fce5419aa | |||
| 948542bbd8 | |||
| 4ab85f4f1c | |||
| 7d2e868a03 | |||
| 5f794cfabd | |||
| f5f37f420d | |||
| b6a0ac38de | |||
| 56d0aac939 | |||
| 9e6dbb465b | |||
| 4875fce088 | |||
| 6ff18b7d15 | |||
| a6526de2a4 | |||
| bf04dce6d5 | |||
| fdabd7edf9 | |||
| a13ea2b8da | |||
| 0473880942 | |||
| c2afa515ee | |||
| ecee3e4daa | |||
| 39c70d2152 | |||
| c6cc2b3e2b | |||
| 61eac2f021 | |||
| 55cfb67493 | |||
| 082fbb2130 | |||
| 207caa7ba5 | |||
| 9d03a16364 | |||
| 7832f5f750 | |||
| c9775af4ea | |||
| 146afb1de5 | |||
| e9e7d4f06f | |||
| 273fd77b86 | |||
| cf04176b10 | |||
| eb3083346f | |||
| 5078a34ee3 | |||
| b5f27c6ed6 | |||
| cb7c2f3c40 | |||
| 3e6f8b856d | |||
| 38b516453a | |||
| 2e9fd1710f | |||
| 4b8593b097 | |||
| fd5dfea2c4 | |||
| b623474fc0 | |||
| ffcd2c0c19 | |||
| aa1a9c25d7 | |||
| cd837e208e | |||
| eca9b216ba | |||
| f1bff29cd9 | |||
| e452d79f0c | |||
| 0fb184e8d3 | |||
| 5b337e5e94 | |||
| 498c03decc | |||
| 5f6fb011a2 | |||
| 46b913a7d3 | |||
| 0ecb821342 | |||
| f7d23ddee9 | |||
| fb63d4c0e9 | |||
| 9bddf6dab9 | |||
| 2f39827f03 | |||
| 41a6417a2d | |||
| 02331d9deb | |||
| 742aa325aa | |||
| 6d487ab9f0 | |||
| a0f7128a28 | |||
| fdd5d685d6 | |||
| 62213109f7 | |||
| 9c43c89a3f | |||
| 9c1fc992e2 | |||
| cc2b0989d3 | |||
| 3ee5f2097d | |||
| 5657e0b24c | |||
| b51725e7cd | |||
| 86f8c99554 | |||
| c256b870aa | |||
| 94103e9dfb | |||
| af6319c8ec | |||
| 6edda0e6e1 | |||
| 3ba7648eb0 | |||
| 484d82a788 | |||
| be0d934622 | |||
| abab0d1b96 | |||
| 9dd462b0b8 | |||
| 28404f07cd | |||
| eb0e205e99 | |||
| 0c856fe2d2 | |||
| 26452fbf23 | |||
| 6f2ad22139 | |||
| e79b8ac14c | |||
| 9826faa7d0 | |||
| 68e5393f5d | |||
| f3e7766229 | |||
| 76f7b763cf | |||
| 51191f82c7 | |||
| e86c831653 | |||
| 91f8e392ef | |||
| 7ce04c1ae9 | |||
| 1aff187d21 | |||
| 856c0c3212 | |||
| acfaa9d9e8 | |||
| 20307f9096 | |||
| ff1d70ba79 | |||
| 188e34a575 | |||
| 373c2d4546 | |||
| ae1335d4d2 | |||
| 70e9831d3a | |||
| 446e610c59 | |||
| 894e9872c3 | |||
| f00d34f38b | |||
| 93395308a0 | |||
| 3fcd3c316f | |||
| 07a2b77f84 | |||
| 1a28823b3b | |||
| 597afc0b39 | |||
| 540636df16 | |||
| 1c8b68182a | |||
| dee40034cd | |||
| cb347c715b | |||
| 0e683e111f | |||
| ceb8e98fbf | |||
| da50226d9f | |||
| 3ba87d750f | |||
| 2cab0e6903 | |||
| 846e83545f | |||
| 14b568ae7d | |||
| 1fc8bce262 | |||
| 16f8d6d8b3 | |||
| ae337d1631 | |||
| c9959e4715 | |||
| 26fd7e8775 | |||
| 1819e78c0b | |||
| e26a6eb442 | |||
| 4cc072fa14 | |||
| 46436db4a5 | |||
| 1e0f379981 | |||
| 2027dd0cd1 | |||
| 59be989faa | |||
| fadb6fcfd8 | |||
| 988f7a68db | |||
| 60ef1c61f2 | |||
| a70bb23316 | |||
| 186d1c69de | |||
| 90f0adb29e | |||
| 11a12e6ca6 | |||
| ec1c7f1dc6 | |||
| e8f3660561 | |||
| 173c2f89fc | |||
| 577d33bdd1 | |||
| 5d09cd1097 | |||
| ade814e4af | |||
| 4c39b0044d | |||
| 08c43f4771 | |||
| def4d2a994 | |||
| 7256d94c49 | |||
| 52345c06cd | |||
| 26f6c935af | |||
| 7aa0413931 | |||
| 04b54566b1 | |||
| ff0e41c73f | |||
| b070d20ef4 | |||
| 5849179d0b | |||
| 9aa13777c5 | |||
| 79ca8b68a8 | |||
| 99038231a8 | |||
| 5c877f5f76 | |||
| 2beda6180b | |||
| 3921780961 | |||
| 6d856f0bfa | |||
| 7ef5dac5cb | |||
| ada5bebfe0 | |||
| fd472e7abc | |||
| 67c02f59de | |||
| 34a090cb13 | |||
| 6c66562c77 | |||
| 44474f2cbb | |||
| 0c34497671 | |||
| 957d749df5 | |||
| 23e45b3679 | |||
| 58f45a48b4 | |||
| 64884b1367 | |||
| 41808ad011 | |||
| f1f9ee57f0 | |||
| 2fa2d20c8b | |||
| d1047e2abf | |||
| eb75f6e451 | |||
| 95329e82fb | |||
| c139f1c12a | |||
| 4ead1d07ae | |||
| 81d9c22cbc | |||
| 5da1dcccba | |||
| 6a950d4bcc | |||
| 26263eee48 | |||
| ba0a151f1e | |||
| 2c5be469f0 | |||
| 9728b2ed6b | |||
| 2255bd8d7c | |||
| 7617488f52 | |||
| c0b0ed81c8 | |||
| 4ab75fb583 | |||
| 339eb8877c | |||
| 2e92ce971e | |||
| 51e58883fa | |||
| 59fe18dcd6 | |||
| d543f308b3 | |||
| 0881baf082 | |||
| 3f4590bda4 | |||
| c692d33216 | |||
| 33de46de17 | |||
| ff55504616 | |||
| 627435b452 | |||
| 64f057b1b1 | |||
| f6f4acf2b6 | |||
| 44b79b0ff0 | |||
| f5887c9f24 | |||
| 178aeb2aac | |||
| 8e8caed609 | |||
| 92c1b38ca5 | |||
| 9f196b8fb8 | |||
| a8ad3a28fb | |||
| 19f5613c74 | |||
| 35848dfd62 | |||
| a37fda47ea | |||
| 60f5d20cbe | |||
| 6a808cbc89 | |||
| 75f9e08d7b | |||
| 1d7d1e1c89 | |||
| b8356528ba | |||
| 602423d9ae | |||
| 295085c7e9 | |||
| 872735897c | |||
| b064228958 | |||
| 156ca28cbf | |||
| cd08d5ad46 | |||
| 109cd5075b | |||
| bbdf394dda | |||
| c1ace49f38 | |||
| 05c1fe6313 | |||
| a94489d52d | |||
| 2db08a1a06 | |||
| abf9f53eee | |||
| 33e9ca6021 | |||
| 601306033d | |||
| a67177bbb3 | |||
| 13cecc6f19 | |||
| 83ee267214 | |||
| 7322f50f14 | |||
| e91e838528 | |||
| 332caad470 | |||
| de1ef7f45e | |||
| 6375bcaf34 | |||
| 12394f2945 | |||
| 4e7ae503f8 | |||
| 53ae7625af | |||
| ba48ce3942 | |||
| 9a236765ed | |||
| 355c13c8f0 | |||
| 0810128ee4 | |||
| be7548e10a | |||
| b3df107c36 | |||
| 56df3723d2 | |||
| 27abeac6db | |||
| da81e80716 | |||
| d70cf4ebe7 | |||
| ab11bf5b91 | |||
| 88ff53dc29 | |||
| d93dda3f6d | |||
| fed0845912 | |||
| f18c96bcea | |||
| dd81dc8e54 | |||
| 67dae73157 | |||
| 27cffd8917 | |||
| 5338fa3c93 | |||
| 9ab398c6d2 | |||
| 1a1ec40517 | |||
| ab6813996d | |||
| d84912df76 | |||
| cfb4904976 | |||
| 9ac6e92dc5 | |||
| a5e1ee5285 | |||
| d34eafd868 | |||
| 402a1a512a | |||
| f26f8ad0e1 | |||
| 8cc97c5cc7 | |||
| 242298923e | |||
| 85011e69d3 | |||
| b4ad55a8c2 | |||
| 8935e3e520 | |||
| 883d95ca39 | |||
| 91055f207f | |||
| 299222f9fd | |||
| a2485b18b3 | |||
| 75bc825770 | |||
| b6c4c0e00a | |||
| 6797cb1107 | |||
| 1bd451a8bb | |||
| 63f101763d | |||
| 01e890081a | |||
| 147e0715cf | |||
| 2922ef04a4 | |||
| 9f2afd0f8a | |||
| ba31976fcf | |||
| ce2dcf66a4 | |||
| 0d9b79c73e | |||
| a17e3583e6 | |||
| 1885087e56 | |||
| b79d37ad06 | |||
| 8952cbaade | |||
| cbda10510d | |||
| e09cae9c44 | |||
| 187bdb0a32 | |||
| 5ba463757e | |||
| 7763a854af | |||
| 6cd8da4bf1 | |||
| a397f5e82b | |||
| 31ba52c9ac | |||
| bd5998521b | |||
| 5d043297d3 | |||
| 07dd6c09a5 | |||
| 28513feea4 | |||
| 982c4b2f80 | |||
| cd3ac7cfbc | |||
| 58bbb5532a | |||
| 6b115d6d28 | |||
| 7d97cc9148 | |||
| 992929e13a | |||
| 65b80a7d8d | |||
| 396a4dcf84 | |||
| dae5881128 | |||
| c00de1af0e | |||
| 5c760f5bfc | |||
| d3881d0897 | |||
| 64771ae931 | |||
| 516b7eaed4 | |||
| dc11045158 | |||
| c462a44130 | |||
| 9130b97e13 | |||
| c1291fa9e7 | |||
| 282031208e | |||
| 2ee7347334 | |||
| d3d4c5c7e6 | |||
| 47b46bdbf1 | |||
| a5750d59be | |||
| e7324aa80d | |||
| 61728dd166 | |||
| f405b40518 | |||
| 4fbcff7320 | |||
| 9e77650fa6 | |||
| 2e3a459e5c | |||
| 3e0a36a9d9 | |||
| 84463917f5 | |||
| b23b815696 | |||
| d2858a640b | |||
| 8cd055be59 | |||
| 7a3787d62d | |||
| 985dd82c6f | |||
| b828545a42 | |||
| c1a311e021 | |||
| 98fc1e131b | |||
| f19b74c2e9 | |||
| 0aae361973 | |||
| e925d6712c | |||
| 553455474b | |||
| b53c5bb5b1 | |||
| f76419c158 | |||
| fb44fb3fab | |||
| d19182608d | |||
| ebbb2dd780 | |||
| ce24afcea0 | |||
| 4b1c84319b | |||
| 7d46fa680f | |||
| 73961f5caf | |||
| 89c194d604 | |||
| fc50d282ca | |||
| 101cbd0761 | |||
| 48f7c42a21 | |||
| a6d00d0823 | |||
| e02c11e258 | |||
| 3554bf257e | |||
| ec0e54e4b2 | |||
| 8d60d1d914 | |||
| 2555bc641b | |||
| dfc48d1525 | |||
| 80a61f86dc | |||
| 1cde20d8bc | |||
| 378bdade49 | |||
| b87610007a | |||
| c216a5e997 | |||
| ccf0ee95c6 | |||
| 0a2644f5d4 | |||
| 7f31c039e8 | |||
| cfbf65a7f5 | |||
| 1f67c4a752 | |||
| b9dbcac931 | |||
| 0b713dfa4e | |||
| 140bd5c510 | |||
| ae68f811f2 | |||
| 1c25f3421d | |||
| 3f4477d938 | |||
| 7d0afea3bf | |||
| 4eab3730be | |||
| 07d95c5255 | |||
| ddb412cdea | |||
| 5c29aeffc5 | |||
| f9dfd7ae1a | |||
| 34a8b4ffed | |||
| 93480fdf86 | |||
| f5605570e0 | |||
| 9d9e3570df | |||
| 8be54bb19b | |||
| b533415ab7 | |||
| 3b2fd0b3f4 | |||
| ef90d16de8 | |||
| 5222447894 | |||
| 8d9d8d4ca2 | |||
| f32ad388b2 | |||
| e1ff3e4624 | |||
| 1187753bb7 | |||
| dde5b26215 | |||
| 1db52368f7 | |||
| 9e9970f517 | |||
| 00df88dc0e | |||
| de09bd0179 | |||
| 2180d78dfc | |||
| 1cb0490c03 | |||
| 424dd06e18 | |||
| 17b23c8497 | |||
| ba6bb433b6 | |||
| c3120b819e | |||
| edcb1af2d9 | |||
| 0cc43ddbb5 | |||
| 3f4096dfe5 | |||
| 2b27db1bff | |||
| f9aafdc772 | |||
| 0568b5d256 | |||
| 76ed5e3b0a | |||
| 61a70a7c37 | |||
| cebb8d311d | |||
| 42d7bb5c6e | |||
| 0eb1751e41 | |||
| c995295397 | |||
| 448a482497 | |||
| 9bd0c2f190 | |||
| 283d757327 | |||
| 32c9cd7504 | |||
| fac419453e | |||
| b043028ec7 | |||
| 900eb52b17 | |||
| 89d705f414 | |||
| 34e5fbb417 | |||
| 0aa6df37cd | |||
| a185bd740d | |||
| bd81378c22 | |||
| 96c6f25c3c | |||
| 61a67cd51d | |||
| fe6ef8762e | |||
| c6c053585c | |||
| f3dcd108db | |||
| 8e8bb981e1 | |||
| 5000562333 | |||
| e2aad1b524 | |||
| bb383dcddb | |||
| d59434285a | |||
| e55f66e4fb | |||
| 7c3ff59a0f |
@@ -1,5 +1,5 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img alt="nixy logo" src="./.github/assets/logo.png" width="120px" />
|
<img alt="nixy logo" src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@@ -119,16 +119,6 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
|||||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||||
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
||||||
collection of wallpapers
|
collection of wallpapers
|
||||||
- [NEOVIM](docs/NEOVIM.md): How to use the Neovim config in your own flake
|
|
||||||
- [GROUPS](docs/GROUPS.md): Reusable package groups (dev, cybersecurity)
|
|
||||||
|
|
||||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||||
- [LICENSE](LICENSE): MIT License
|
- [LICENSE](LICENSE): MIT License
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
<a href="https://github.com/anotherhadi/nixy">github</a> |
|
|
||||||
<a href="https://gitlab.com/anotherhadi_mirror/nixy">gitlab (mirror)</a> |
|
|
||||||
<a href="https://git.hadi.icu/anotherhadi/nixy">gitea (mirror)</a>
|
|
||||||
</div
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 412 KiB After Width: | Height: | Size: 412 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 837 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 738 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB |
@@ -1,3 +1,2 @@
|
|||||||
.sops.yaml
|
.sops.yaml
|
||||||
.claude/
|
|
||||||
old/
|
old/
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2026 Hadi
|
Copyright (c) 2024 Hadi
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[//]: # (This file is autogenerated)
|
[//]: # (This file is autogenerated)
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<img alt="nixy logo" src="./.github/assets/logo.png" width="120px" />
|
<img alt="nixy logo" src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@@ -129,16 +129,6 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
|||||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||||
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
||||||
collection of wallpapers
|
collection of wallpapers
|
||||||
- [NEOVIM](docs/NEOVIM.md): How to use the Neovim config in your own flake
|
|
||||||
- [GROUPS](docs/GROUPS.md): Reusable package groups (dev, cybersecurity)
|
|
||||||
|
|
||||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||||
- [LICENSE](LICENSE): MIT License
|
- [LICENSE](LICENSE): MIT License
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
<a href="https://github.com/anotherhadi/nixy">github</a> |
|
|
||||||
<a href="https://gitlab.com/anotherhadi_mirror/nixy">gitlab (mirror)</a> |
|
|
||||||
<a href="https://git.hadi.icu/anotherhadi/nixy">gitea (mirror)</a>
|
|
||||||
</div
|
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
# Groups
|
|
||||||
|
|
||||||
Groups are curated sets of packages exposed as flake outputs. Each group has two forms:
|
|
||||||
|
|
||||||
- **`homeManagerModules.<group>`** — full home-manager module (packages + files + systemd units)
|
|
||||||
- **`packages.<group>`** — standalone environment for `nix shell` (packages only)
|
|
||||||
|
|
||||||
## Available groups
|
|
||||||
|
|
||||||
- dev (go, bun, air, ...)
|
|
||||||
- cybersecurity (nmap, john, dirb, ffuf, ...)
|
|
||||||
|
|
||||||
For the Cybersecurity group, the home-manager module also sets up:
|
|
||||||
|
|
||||||
- `~/Cyber/wordlists/` with SecLists, fuzz4bounty, and hashcat rules
|
|
||||||
- `~/Cyber/tmp/` as a temporary workspace
|
|
||||||
|
|
||||||
## Use in another flake
|
|
||||||
|
|
||||||
Add this repo as an input:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
inputs.nixy.url = "github:anotherhadi/nixy";
|
|
||||||
```
|
|
||||||
|
|
||||||
Import the home-manager module in your home configuration:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ inputs, ... }: {
|
|
||||||
imports = [
|
|
||||||
inputs.nixy.homeManagerModules.cybersecurity
|
|
||||||
# inputs.nixy.homeManagerModules.dev
|
|
||||||
];
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Quick shell without installing
|
|
||||||
|
|
||||||
```sh
|
|
||||||
nix shell github:anotherhadi/nixy#cybersecurity
|
|
||||||
nix shell github:anotherhadi/nixy#dev
|
|
||||||
```
|
|
||||||
|
|
||||||
This drops you into a shell with all tools in `PATH`. No home-manager required, no wordlists or systemd units.
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# Neovim
|
|
||||||
|
|
||||||
The Neovim configuration is built with [nvf](https://github.com/notashelf/nvf) and exposed as a standalone flake output.
|
|
||||||
It can be used in three ways: run it directly, import it into another flake's home-manager setup, or use it as part of this config.
|
|
||||||
|
|
||||||
## Run directly
|
|
||||||
|
|
||||||
No installation needed:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
nix run github:anotherhadi/nixy#nvim
|
|
||||||
```
|
|
||||||
|
|
||||||
## Use in another flake
|
|
||||||
|
|
||||||
Add this repo as an input:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
inputs.nixy.url = "github:anotherhadi/nixy";
|
|
||||||
```
|
|
||||||
|
|
||||||
Then import the home-manager module in your home configuration:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ inputs, ... }: {
|
|
||||||
imports = [ inputs.nixy.homeManagerModules.nvim ];
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## What's included
|
|
||||||
|
|
||||||
| File | Description |
|
|
||||||
| --------------- | ---------------------------------------------------------------------- |
|
|
||||||
| `options.nix` | Core settings: theme (catppuccin mocha), clipboard, indentation, folds |
|
|
||||||
| `languages.nix` | LSP, treesitter, formatters, diagnostics, and per-language config |
|
|
||||||
| `keymaps.nix` | All key mappings (leader: `space`) |
|
|
||||||
| `picker.nix` | Snacks picker + oil.nvim |
|
|
||||||
| `snacks.nix` | Snacks extras: image preview, zen mode, git signs, statuscolumn |
|
|
||||||
| `utils.nix` | Bufferline, lualine, copilot, lazygit, toggleterm, autocomplete |
|
|
||||||
| `mini.nix` | Mini.nvim suite: pairs, comment, icons, indentscope, diff, git |
|
|
||||||
+36
-12
@@ -1,29 +1,53 @@
|
|||||||
# SERVER
|
# SERVER
|
||||||
|
|
||||||
|
> Update in comming. Early 2026
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
This document describes the architecture and setup of the self-hosted **NixOS server**, which is securely accessible via **a Cloudflare Tunnel**.
|
This document describes the architecture and setup of the self-hosted **NixOS server**, which is securely accessible via **Tailscale**. The server is designed for private, secure, and easily manageable self-hosting of various services.
|
||||||
The server is designed for private, secure, and easily manageable self-hosting of various services.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## **Why This Setup?**
|
## **Why This Setup?**
|
||||||
|
|
||||||
- **Private & Secure**: Services are only accessible through Cloudflare's access control, preventing exposure to the "public internet".
|
- **Private & Secure**: Services are only accessible through Tailscale, preventing exposure to the public internet.
|
||||||
- **Domain-based Access**: A custom domain maps to the server's tunnel, making service access simple and consistent.
|
- **Domain-based Access**: A custom domain (`example.org`) maps to the server's Tailscale IP, making service access simple and consistent.
|
||||||
- **Modular & Declarative**: Everything is managed through NixOS modules (except for access control), ensuring reproducibility and easy configuration.
|
- **Automatic SSL Certificates**: Using DNS-01 challenges, valid SSL certificates are generated even though the services are not publicly exposed.
|
||||||
|
- **Modular & Declarative**: Everything is managed through NixOS modules, ensuring reproducibility and easy configuration.
|
||||||
|
|
||||||
## **Self-Hosted Services**
|
## **Self-Hosted Services**
|
||||||
|
|
||||||
The server hosts several key applications:
|
The server hosts several key applications:
|
||||||
|
|
||||||
- **NGINX**: Reverse proxy for routing traffic to services via my domain name.
|
### **Core Infrastructure**
|
||||||
|
|
||||||
|
- **NGINX**: Reverse proxy for routing traffic to services via `example.org`.
|
||||||
|
|
||||||
|
### **Networking & Security**
|
||||||
|
|
||||||
- **AdGuard Home**: A self-hosted DNS ad blocker for network-wide ad and tracker filtering.
|
- **AdGuard Home**: A self-hosted DNS ad blocker for network-wide ad and tracker filtering.
|
||||||
|
|
||||||
|
### **Monitoring & Storage**
|
||||||
|
|
||||||
- **Glance**: An awesome dashboard! (See the screenshot above)
|
- **Glance**: An awesome dashboard! (See the screenshot above)
|
||||||
|
|
||||||
|
### **Media & Content Management**
|
||||||
|
|
||||||
- **Arr Stack (Radarr, Sonarr, etc.)**: Automated media management tools for handling movies and TV shows. (legaly ofc)
|
- **Arr Stack (Radarr, Sonarr, etc.)**: Automated media management tools for handling movies and TV shows. (legaly ofc)
|
||||||
- **Mealie**: A self-hosted recipe manager and meal planner with a clean user interface.
|
|
||||||
- **Stirling-PDF**: A powerful, locally hosted web application for editing, merging, and converting PDF files.
|
## **How It Works**
|
||||||
- **CyberChef**: The "Cyber Swiss Army Knife" for data analysis, decoding, and encryption tasks.
|
|
||||||
- **Mazanoke**: A utility service for image processing, specialized in format conversion and downgrading/optimization.
|
1. **Domain Configuration**
|
||||||
- **SSH**: Secure remote access configuration for server management. (via browser too)
|
- `example.org` is pointed to the Tailscale IP of the server. (cloudflare A record, not proxied)
|
||||||
- **Security related stuff**: Cloudflared, Fail2Ban, Firewall
|
- This allows for easy access without exposing services to the internet.
|
||||||
|
|
||||||
|
2. **SSL Certificate Generation**
|
||||||
|
- Certificates are obtained using a **DNS-01 challenge**, verifying domain ownership without requiring public access.
|
||||||
|
|
||||||
|
3. **NGINX Reverse Proxy**
|
||||||
|
- Routes incoming requests from `*.example.org` to the correct internal service.
|
||||||
|
- Ensures SSL termination and secure connections.
|
||||||
|
|
||||||
|
4. **Access Control**
|
||||||
|
- Only devices within the Tailscale network can reach the services.
|
||||||
|
- Firewall rules restrict access further based on necessity.
|
||||||
|
|||||||
+3
-3
@@ -12,6 +12,6 @@ Wallpapers are loaded from the [hadi's awesome-wallpapers](https://github.com/an
|
|||||||
|
|
||||||
### Rose-pine
|
### Rose-pine
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|||||||
Generated
+294
-787
File diff suppressed because it is too large
Load Diff
@@ -7,20 +7,13 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
stylix.url = "github:danth/stylix";
|
stylix.url = "github:danth/stylix";
|
||||||
|
nixcord.url = "github:kaylorben/nixcord";
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
nvf.url = "github:notashelf/nvf";
|
nvf.url = "github:notashelf/nvf";
|
||||||
notashelf-tuigreet.url = "github:NotAShelf/tuigreet";
|
|
||||||
helium-browser.url = "github:oxcl/nix-flake-helium-browser";
|
|
||||||
nur-anotherhadi.url = "github:anotherhadi/nur-packages";
|
|
||||||
|
|
||||||
nix-index-database = {
|
|
||||||
url = "github:nix-community/nix-index-database";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -33,45 +26,45 @@
|
|||||||
url = "github:caelestia-dots/cli";
|
url = "github:caelestia-dots/cli";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
spicetify-nix = {
|
||||||
|
url = "github:Gerg-L/spicetify-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
# Server
|
# Server
|
||||||
|
eleakxir.url = "github:anotherhadi/eleakxir";
|
||||||
nixarr.url = "github:rasmus-kirk/nixarr";
|
nixarr.url = "github:rasmus-kirk/nixarr";
|
||||||
default-creds.url = "github:anotherhadi/default-creds";
|
|
||||||
blog.url = "github:anotherhadi/blog";
|
|
||||||
awesome-wallpapers.url = "github:anotherhadi/awesome-wallpapers";
|
|
||||||
iknowyou.url = "github:anotherhadi/iknowyou";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {nixpkgs, ...}: {
|
||||||
nixpkgs,
|
nixosConfigurations = {
|
||||||
nixpkgs-stable,
|
nixy =
|
||||||
...
|
# CHANGEME: This should match the 'hostname' in your variables.nix file
|
||||||
}: let
|
nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
modules = [
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
{
|
||||||
args = {
|
nixpkgs.overlays = [];
|
||||||
inherit
|
_module.args = {
|
||||||
inputs
|
inherit inputs;
|
||||||
nixpkgs
|
};
|
||||||
system
|
}
|
||||||
pkgs
|
inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGEME: check https://github.com/NixOS/nixos-hardware
|
||||||
;
|
inputs.home-manager.nixosModules.home-manager
|
||||||
pkgs-stable = nixpkgs-stable.legacyPackages.${system};
|
inputs.stylix.nixosModules.stylix
|
||||||
pkgs-nur-hadi = inputs.nur-anotherhadi.packages.${system};
|
./hosts/laptop/configuration.nix # CHANGEME: change the path to match your host folder
|
||||||
};
|
];
|
||||||
merge = nixpkgs.lib.foldl nixpkgs.lib.recursiveUpdate {};
|
|
||||||
in
|
|
||||||
merge [
|
|
||||||
(import ./home/programs/nvf/flake.nix args)
|
|
||||||
(import ./home/programs/group/flake.nix args)
|
|
||||||
(import ./home/programs/nixy/flake.nix args)
|
|
||||||
{
|
|
||||||
formatter.${system} = pkgs.alejandra;
|
|
||||||
nixosConfigurations = {
|
|
||||||
h-laptop = import ./hosts/laptop/flake.nix args;
|
|
||||||
h-work = import ./hosts/work/flake.nix args;
|
|
||||||
jack = import ./hosts/server/flake.nix args;
|
|
||||||
};
|
};
|
||||||
}
|
# Jack is my server
|
||||||
];
|
jack = nixpkgs.lib.nixosSystem {
|
||||||
|
modules = [
|
||||||
|
{_module.args = {inherit inputs;};}
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.nixarr.nixosModules.default
|
||||||
|
inputs.eleakxir.nixosModules.eleakxir
|
||||||
|
./hosts/server/configuration.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Discord is a popular chat application.
|
||||||
|
{inputs, ...}: {
|
||||||
|
imports = [inputs.nixcord.homeModules.nixcord];
|
||||||
|
|
||||||
|
programs.nixcord = {
|
||||||
|
enable = true;
|
||||||
|
config = {frameless = true;};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Import all fetch scripts
|
||||||
|
{imports = [./neofetch ./nerdfetch];}
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
# Legacy
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [neofetch];
|
||||||
|
|
||||||
|
xdg.configFile."neofetch/ascii.txt".text = ''
|
||||||
|
''${c6}
|
||||||
|
⡏⠉⠉⠉⠉⠉⠉⠋⠉⠉⠉⠉⠉⠉⠋⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠙⠉⠉⠉⢹
|
||||||
|
⡇⢸⣿⡟⠛⢿⣷⠀⢸⣿⡟⠛⢿⣷⡄⢸⣿⡇⠀⢸⣿⡇⢸⣿⡇⠀⢸⣿⡇⢸
|
||||||
|
⡇⢸⣿⣧⣤⣾⠿⠀⢸⣿⣇⣀⣸⡿⠃⢸⣿⡇⠀⢸⣿⡇⢸⣿⣇⣀⣸⣿⡇⢸
|
||||||
|
⡇⢸⣿⡏⠉⢹⣿⡆⢸⣿⡟⠛⢻⣷⡄⢸⣿⡇⠀⢸⣿⡇⢸⣿⡏⠉⢹⣿⡇⢸
|
||||||
|
⡇⢸⣿⣧⣤⣼⡿⠃⢸⣿⡇⠀⢸⣿⡇⠸⣿⣧⣤⣼⡿⠁⢸⣿⡇⠀⢸⣿⡇⢸
|
||||||
|
⣇⣀⣀⣀⣀⣀⣀⣄⣀⣀⣀⣀⣀⣀⣀⣠⣀⡈⠉⣁⣀⣄⣀⣀⣀⣠⣀⣀⣀⣸
|
||||||
|
⣇⣿⠘⣿⣿⣿⡿⡿⣟⣟⢟⢟⢝⠵⡝⣿⡿⢂⣼⣿⣷⣌⠩⡫⡻⣝⠹⢿⣿⣷
|
||||||
|
⡆⣿⣆⠱⣝⡵⣝⢅⠙⣿⢕⢕⢕⢕⢝⣥⢒⠅⣿⣿⣿⡿⣳⣌⠪⡪⣡⢑⢝⣇
|
||||||
|
⡆⣿⣿⣦⠹⣳⣳⣕⢅⠈⢗⢕⢕⢕⢕⢕⢈⢆⠟⠋⠉⠁⠉⠉⠁⠈⠼⢐⢕⢽
|
||||||
|
⡗⢰⣶⣶⣦⣝⢝⢕⢕⠅⡆⢕⢕⢕⢕⢕⣴⠏⣠⡶⠛⡉⡉⡛⢶⣦⡀⠐⣕⢕
|
||||||
|
⡝⡄⢻⢟⣿⣿⣷⣕⣕⣅⣿⣔⣕⣵⣵⣿⣿⢠⣿⢠⣮⡈⣌⠨⠅⠹⣷⡀⢱⢕
|
||||||
|
⡝⡵⠟⠈⢀⣀⣀⡀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣼⣿⢈⡋⠴⢿⡟⣡⡇⣿⡇⡀⢕
|
||||||
|
⡝⠁⣠⣾⠟⡉⡉⡉⠻⣦⣻⣿⣿⣿⣿⣿⣿⣿⣿⣧⠸⣿⣦⣥⣿⡇⡿⣰⢗⢄
|
||||||
|
⠁⢰⣿⡏⣴⣌⠈⣌⠡⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣬⣉⣉⣁⣄⢖⢕⢕⢕
|
||||||
|
⡀⢻⣿⡇⢙⠁⠴⢿⡟⣡⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⣵⣿
|
||||||
|
⡻⣄⣻⣿⣌⠘⢿⣷⣥⣿⠇⣿⣿⣿⣿⣿⣿⠛⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||||
|
⣷⢄⠻⣿⣟⠿⠦⠍⠉⣡⣾⣿⣿⣿⣿⣿⣿⢸⣿⣦⠙⣿⣿⣿⣿⣿⣿⣿⣿⠟
|
||||||
|
⡕⡑⣑⣈⣻⢗⢟⢞⢝⣻⣿⣿⣿⣿⣿⣿⣿⠸⣿⠿⠃⣿⣿⣿⣿⣿⣿⡿⠁⣠
|
||||||
|
⡝⡵⡈⢟⢕⢕⢕⢕⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⠿⠋⣀⣈⠙
|
||||||
|
⡝⡵⡕⡀⠑⠳⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⡠⡲⡫⡪⡪⡣
|
||||||
|
'';
|
||||||
|
|
||||||
|
xdg.configFile."neofetch/config.conf".text = ''
|
||||||
|
# From: https://github.com/Chick2D/neofetch-themes/
|
||||||
|
# Made by https://github.com/Dan1jel
|
||||||
|
|
||||||
|
print_info() {
|
||||||
|
prin "\n"
|
||||||
|
info "\n \n OS" distro
|
||||||
|
info "\n \n Host" model
|
||||||
|
info "\n \n Kernel" kernel
|
||||||
|
info "\n \n Uptime" uptime
|
||||||
|
info "\n \n Packages" packages
|
||||||
|
info "\n \n Shell" shell
|
||||||
|
info "\n \n Resolution" resolution
|
||||||
|
info "\n \n DE" de
|
||||||
|
info "\n \n WM" wm
|
||||||
|
info "\n \n WM Theme" wm_theme
|
||||||
|
info "\n \n Theme" theme
|
||||||
|
info "\n \n Icons" icons
|
||||||
|
info "\n \n Terminal" term
|
||||||
|
info "\n \n Terminal Font" term_font
|
||||||
|
info "\n \n CPU" cpu
|
||||||
|
info "\n \n GPU" gpu
|
||||||
|
info "\n \n Memory" memory
|
||||||
|
info "\n \n Disk" disk
|
||||||
|
info "\n \n Battery" battery
|
||||||
|
info "\n \n Font" font
|
||||||
|
info "\n \n Song" song
|
||||||
|
[[ "$player" ]] && prin "\n \n Music Player" "$player"
|
||||||
|
info "\n \n Local IP" local_ip
|
||||||
|
prin "\n"
|
||||||
|
|
||||||
|
# prin "\n \n ''${cl0}──''${cl1}────''${cl2}────''${cl3}────''${cl4}────''${cl5}────''${cl6}────''${cl7}──"
|
||||||
|
prin "\n \n \n \n \n \n ''${cl0}⬤ \n \n ''${cl1}⬤ \n \n ''${cl2}⬤ \n \n ''${cl3}⬤ \n \n ''${cl4}⬤ \n \n ''${cl5}⬤ \n \n ''${cl6}⬤ \n \n ''${cl7}⬤"
|
||||||
|
}
|
||||||
|
|
||||||
|
reset="\033[0m"
|
||||||
|
gray="\033[1;90m"
|
||||||
|
red="\033[1;31m"
|
||||||
|
green="\033[1;32m"
|
||||||
|
yellow="\033[1;33m"
|
||||||
|
blue="\033[1;34m"
|
||||||
|
magenta="\033[1;35m"
|
||||||
|
cyan="\033[1;36m"
|
||||||
|
white="\033[1;37m"
|
||||||
|
|
||||||
|
cl0="''${gray}"
|
||||||
|
cl1="''${red}"
|
||||||
|
cl2="''${green}"
|
||||||
|
cl3="''${yellow}"
|
||||||
|
cl4="''${blue}"
|
||||||
|
cl5="''${magenta}"
|
||||||
|
cl6="''${cyan}"
|
||||||
|
cl7="''${white}"
|
||||||
|
|
||||||
|
title_fqdn="off"
|
||||||
|
kernel_shorthand="on"
|
||||||
|
distro_shorthand="off"
|
||||||
|
os_arch="off"
|
||||||
|
uptime_shorthand="on"
|
||||||
|
memory_percent="off"
|
||||||
|
memory_unit="mib"
|
||||||
|
package_managers="on"
|
||||||
|
shell_path="off"
|
||||||
|
shell_version="on"
|
||||||
|
speed_type="bios_limit"
|
||||||
|
speed_shorthand="off"
|
||||||
|
cpu_brand="on"
|
||||||
|
cpu_speed="on"
|
||||||
|
cpu_cores="logical"
|
||||||
|
cpu_temp="off"
|
||||||
|
gpu_brand="on"
|
||||||
|
gpu_type="all"
|
||||||
|
refresh_rate="off"
|
||||||
|
gtk_shorthand="off"
|
||||||
|
gtk2="on"
|
||||||
|
gtk3="on"
|
||||||
|
de_version="on"
|
||||||
|
disk_show=('/storage/emulated' '/' '/server')
|
||||||
|
disk_subtitle="none"
|
||||||
|
disk_percent="on"
|
||||||
|
music_player="auto"
|
||||||
|
song_format="%artist% - %album% - %title%"
|
||||||
|
song_shorthand="off"
|
||||||
|
mpc_args=()
|
||||||
|
bold="on"
|
||||||
|
underline_enabled="on"
|
||||||
|
underline_char="-"
|
||||||
|
separator=":"
|
||||||
|
block_range=(0 15)
|
||||||
|
color_blocks="on"
|
||||||
|
block_width=3
|
||||||
|
block_height=1
|
||||||
|
col_offset="auto"
|
||||||
|
bar_char_elapsed="-"
|
||||||
|
bar_char_total="="
|
||||||
|
bar_border="on"
|
||||||
|
bar_length=15
|
||||||
|
bar_color_elapsed="distro"
|
||||||
|
bar_color_total="distro"
|
||||||
|
cpu_display="off"
|
||||||
|
memory_display="off"
|
||||||
|
battery_display="off"
|
||||||
|
disk_display="off"
|
||||||
|
image_backend="ascii"
|
||||||
|
image_source="$HOME/.config/neofetch/ascii.txt"
|
||||||
|
ascii_distro="auto"
|
||||||
|
ascii_colors=(distro)
|
||||||
|
ascii_bold="on"
|
||||||
|
image_loop="off"
|
||||||
|
thumbnail_dir="''${XDG_CACHE_HOME:-''${HOME}/.cache}/thumbnails/neofetch"
|
||||||
|
crop_mode="normal"
|
||||||
|
crop_offset="center"
|
||||||
|
image_size="auto"
|
||||||
|
gap=2
|
||||||
|
yoffset=0
|
||||||
|
xoffset=0
|
||||||
|
background_color=
|
||||||
|
stdout="off"
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,367 @@
|
|||||||
|
# Nerdfetch, a simple system info script written in bash
|
||||||
|
# Source: https://github.com/ThatOneCalculator/NerdFetch
|
||||||
|
{pkgs, ...}: let
|
||||||
|
nerdfetch = pkgs.writeShellScriptBin "nerdfetch" ''
|
||||||
|
ostype="$(uname)"
|
||||||
|
|
||||||
|
version=8.1.1
|
||||||
|
font=nerd
|
||||||
|
distrotype=none
|
||||||
|
osi=""
|
||||||
|
ki=""
|
||||||
|
ri=""
|
||||||
|
pi=""
|
||||||
|
ui=""
|
||||||
|
ci=""
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"-p")
|
||||||
|
font=phosphor
|
||||||
|
osi=""
|
||||||
|
ki=""
|
||||||
|
ri=""
|
||||||
|
pi=""
|
||||||
|
ui=""
|
||||||
|
ci=""
|
||||||
|
;;
|
||||||
|
"-c")
|
||||||
|
font=cozette
|
||||||
|
ki="♥"
|
||||||
|
ri=""
|
||||||
|
pi=""
|
||||||
|
ui=""
|
||||||
|
ci=""
|
||||||
|
;;
|
||||||
|
"-e")
|
||||||
|
font=emoji
|
||||||
|
osi="🐧"
|
||||||
|
ki="💓"
|
||||||
|
ri="🐐"
|
||||||
|
pi="📦"
|
||||||
|
ui="☕"
|
||||||
|
ci="🎨"
|
||||||
|
;;
|
||||||
|
"-v")
|
||||||
|
echo "NerdFetch $version"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
"-h")
|
||||||
|
echo "Flags:
|
||||||
|
-c: Cozette font
|
||||||
|
-p: Phosphor font
|
||||||
|
-e: Emoji font
|
||||||
|
-v: Version"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if command -v getprop 1>/dev/null; then
|
||||||
|
distrotype=android
|
||||||
|
fi
|
||||||
|
kernel="$(echo $(uname -r) | cut -d'-' -f1-1)"
|
||||||
|
case $ostype in
|
||||||
|
*"Linux"*)
|
||||||
|
if [ $distrotype = android ]; then
|
||||||
|
host="$(hostname)"
|
||||||
|
USER="$(whoami)"
|
||||||
|
os="Android $(getprop ro.build.version.release)"
|
||||||
|
case $font in
|
||||||
|
phosphor) osi="" ;;
|
||||||
|
emoji) osi="🤖" ;;
|
||||||
|
*) osi="" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
host="$(cat /proc/sys/kernel/hostname)"
|
||||||
|
. /etc/os-release
|
||||||
|
if [ -f /bedrock/etc/bedrock-release ]; then
|
||||||
|
os="$(brl version)"
|
||||||
|
else
|
||||||
|
os="''${PRETTY_NAME}"
|
||||||
|
if [ $font = nerd ]; then
|
||||||
|
case $(echo $ID | sed 's/ .*//') in
|
||||||
|
debian) osi="" ;;
|
||||||
|
arch) osi="" ;;
|
||||||
|
endeavouros) osi="" ;;
|
||||||
|
fedora) osi="" ;;
|
||||||
|
gentoo) osi="" ;;
|
||||||
|
rhel) osi="" ;;
|
||||||
|
slackware) osi="" ;;
|
||||||
|
void) osi="" ;;
|
||||||
|
alpine) osi="" ;;
|
||||||
|
nixos) osi="" ;;
|
||||||
|
artix) osi="" ;;
|
||||||
|
exherbo) osi="" ;;
|
||||||
|
mageia) osi="" ;;
|
||||||
|
manjaro) osi="" ;;
|
||||||
|
opensuse) osi="" ;;
|
||||||
|
solus) osi="" ;;
|
||||||
|
ubuntu) osi="" ;;
|
||||||
|
mint) osi="" ;;
|
||||||
|
trisquel) osi="" ;;
|
||||||
|
puppy) osi="" ;;
|
||||||
|
coreos) osi="" ;;
|
||||||
|
mx) osi="" ;;
|
||||||
|
vanilla) osi="" ;;
|
||||||
|
pop_os) osi="" ;;
|
||||||
|
raspbian) osi="" ;;
|
||||||
|
deepin) osi="" ;;
|
||||||
|
almalinux) osi="" ;;
|
||||||
|
garuda) osi="" ;;
|
||||||
|
centos) osi="" ;;
|
||||||
|
rocky) osi="" ;;
|
||||||
|
esac
|
||||||
|
elif [ $font = cozette ]; then
|
||||||
|
case $(echo $ID | sed 's/ .*//') in
|
||||||
|
debian) osi="" ;;
|
||||||
|
arch) osi="" ;;
|
||||||
|
fedora) osi="" ;;
|
||||||
|
gentoo) osi="" ;;
|
||||||
|
slackware) osi="" ;;
|
||||||
|
void) osi="" ;;
|
||||||
|
alpine) osi="" ;;
|
||||||
|
nixos) osi="" ;;
|
||||||
|
mageia) osi="" ;;
|
||||||
|
manjaro) osi="" ;;
|
||||||
|
opensuse) osi="" ;;
|
||||||
|
ubuntu) osi="" ;;
|
||||||
|
mint) osi="" ;;
|
||||||
|
coreos) osi="" ;;
|
||||||
|
centos) osi="" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
shell=$(basename "$SHELL")
|
||||||
|
;;
|
||||||
|
*"Darwin"*)
|
||||||
|
host="$(hostname -f | sed -e 's/^[^.]*\.//')"
|
||||||
|
mac_product="$(/usr/libexec/PlistBuddy -c "Print:ProductName" /System/Library/CoreServices/SystemVersion.plist)"
|
||||||
|
mac_version="$(/usr/libexec/PlistBuddy -c "Print:ProductVersion" /System/Library/CoreServices/SystemVersion.plist)"
|
||||||
|
os="''${mac_product} ''${mac_version}"
|
||||||
|
case $font in
|
||||||
|
nerd) osi="" ;;
|
||||||
|
phosphor) osi="" ;;
|
||||||
|
cozette) osi="" ;;
|
||||||
|
emoji) osi="🍎" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*"FreeBSD"*)
|
||||||
|
host="$(hostname)"
|
||||||
|
distrotype=bsd
|
||||||
|
os="FreeBSD $(freebsd-version | sed 's/-.*//')"
|
||||||
|
case $font in
|
||||||
|
nerd) osi="" ;;
|
||||||
|
phosphor) osi="" ;;
|
||||||
|
cozette) osi="" ;;
|
||||||
|
emoji) osi="😈" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*"OpenBSD"*)
|
||||||
|
host="$(hostname)"
|
||||||
|
distrotype=bsd
|
||||||
|
os="OpenBSD $(uname -r)"
|
||||||
|
case $font in
|
||||||
|
nerd) osi="" ;;
|
||||||
|
phosphor) osi="" ;;
|
||||||
|
cozette) osi="⌘" ;;
|
||||||
|
emoji) osi="🐡" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*"NetBSD"*)
|
||||||
|
host="$(hostname)"
|
||||||
|
distrotype=netbsd
|
||||||
|
os="NetBSD $(uname -r)"
|
||||||
|
case $font in
|
||||||
|
nerd) osi="" ;;
|
||||||
|
phosphor) osi="" ;;
|
||||||
|
cozette) osi="" ;;
|
||||||
|
emoji) osi="🚩" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
os="Unix-like"
|
||||||
|
host="host"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
## PACKAGE MANAGER AND PACKAGES DETECTION
|
||||||
|
|
||||||
|
MANAGER=$(which nix-env pkg flatpak yum zypper dnf rpm dpkg-query brew port pacman xbps-query emerge cave apk kiss pmm /usr/sbin/slackpkg bulge birb yay paru pacstall cpm pmm eopkg getprop 2>/dev/null)
|
||||||
|
manager=$(basename "$MANAGER")
|
||||||
|
if [ $distrotype = netbsd ]; then
|
||||||
|
manager="pkg_info-netbsd"
|
||||||
|
fi
|
||||||
|
case $manager in
|
||||||
|
cpm) packages="$(cpm C)" ;;
|
||||||
|
flatpak) packages="$(flatpak list --app | wc -l)" ;;
|
||||||
|
brew) packages="$(printf '%s\n' "$(brew --cellar)/"* | wc -l)" ;;
|
||||||
|
port) packages="$(port installed | wc -l)" ;;
|
||||||
|
dpkg-query) packages="$(dpkg-query -f '${"binary:Package"}\n' -W | wc -l)" ;;
|
||||||
|
rpm) packages="$(rpm -qa --last | wc -l)" ;;
|
||||||
|
yum) packages="$(yum list installed | wc -l)" ;;
|
||||||
|
dnf) packages="$(dnf list installed | wc -l)" ;;
|
||||||
|
zypper) packages="$(zypper se | wc -l)" ;;
|
||||||
|
pacman) packages="$(pacman -Q | wc -l)" ;;
|
||||||
|
yay) packages="$(yay -Q | wc -l)" ;;
|
||||||
|
paru) packages="$(paru -Q | wc -l)" ;;
|
||||||
|
pacstall) packages="$(pacstall -L | wc -l)" ;;
|
||||||
|
kiss) packages="$(kiss list | wc -l)" ;;
|
||||||
|
emerge) packages="$(qlist -I | wc -l)" ;;
|
||||||
|
pkg) packages="$(pkg info | wc -l | tr -d ' ')" ;;
|
||||||
|
cave) packages="$(cave show installed-slots | wc -l)" ;;
|
||||||
|
xbps-query) packages="$(xbps-query -l | wc -l)" ;;
|
||||||
|
nix-env) packages="$(nix-store -q --requisites /run/current-system/sw | wc -l)" ;;
|
||||||
|
apk) packages="$(apk list --installed | wc -l)" ;;
|
||||||
|
pmm) packages="$(/bedrock/libexec/pmm pacman pmm -Q 2>/dev/null | wc -l)" ;;
|
||||||
|
eopkg) packages="$(eopkg li | wc -l)" ;;
|
||||||
|
/usr/sbin/slackpkg) packages="$(ls /var/log/packages | wc -l)" ;;
|
||||||
|
bulge) packages="$(bulge list | wc -l)" ;;
|
||||||
|
birb) packages="$(birb --list-installed | wc -l)" ;;
|
||||||
|
pkg_info)
|
||||||
|
packages="$(pkg_info -A | wc -l)"
|
||||||
|
manager="pkg"
|
||||||
|
;;
|
||||||
|
pkg_info-netbsd)
|
||||||
|
packages="$(pkg_info -a | wc -l)"
|
||||||
|
manager="pkg"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ $distrotype = android ]; then
|
||||||
|
packages="$(dpkg-query -f '${"binary:Package"}\n' -W | wc -l)"
|
||||||
|
manager="dpkg"
|
||||||
|
else
|
||||||
|
packages="$(ls /usr/bin | wc -l)"
|
||||||
|
manager="bin"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
packages="''${packages#"''${packages%%[![:space:]]*}"}"
|
||||||
|
manager=$(echo $manager | sed "s/-query//; s/\/usr\/.*\///")
|
||||||
|
|
||||||
|
## UPTIME DETECTION
|
||||||
|
|
||||||
|
if [ $distrotype = android ]; then
|
||||||
|
uptime="$(echo $(uptime -p) | cut -c 4-)"
|
||||||
|
elif [ $distrotype = bsd ] || [ $distrotype = netbsd ]; then
|
||||||
|
uptime="$(uptime | sed -e 's/.* up //; s/, [0-9]* user.*//')"
|
||||||
|
else
|
||||||
|
case $ostype in
|
||||||
|
*"Linux"*)
|
||||||
|
IFS=. read -r s _ </proc/uptime
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
s=$(sysctl -n kern.boottime)
|
||||||
|
s=''${s#*=}
|
||||||
|
s=''${s%,*}
|
||||||
|
s=$(($(date +%s) - s))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
d="$((s / 60 / 60 / 24))"
|
||||||
|
h="$((s / 60 / 60 % 24))"
|
||||||
|
m="$((s / 60 % 60))"
|
||||||
|
# Plurals
|
||||||
|
[ "$d" -gt 1 ] && dp=s
|
||||||
|
[ "$h" -gt 1 ] && hp=s
|
||||||
|
[ "$m" -gt 1 ] && mp=s
|
||||||
|
[ "$s" -gt 1 ] && sp=s
|
||||||
|
# Hide empty fields.
|
||||||
|
[ "$d" = 0 ] && d=
|
||||||
|
[ "$h" = 0 ] && h=
|
||||||
|
[ "$m" = 0 ] && m=
|
||||||
|
[ "$m" != "" ] && s=
|
||||||
|
# Make the output of uptime smaller.
|
||||||
|
[ "$d" ] && uptime="$d day$dp, "
|
||||||
|
[ "$h" ] && uptime="$uptime$h hour$hp, "
|
||||||
|
[ "$m" ] && uptime="$uptime$m min$mp"
|
||||||
|
[ "$s" ] && uptime="$uptime$s sec$sp"
|
||||||
|
uptime=''${uptime%, }
|
||||||
|
fi
|
||||||
|
|
||||||
|
## RAM DETECTION
|
||||||
|
|
||||||
|
case $ostype in
|
||||||
|
*"Linux"*)
|
||||||
|
while IFS=':k ' read -r key val _; do
|
||||||
|
case $key in
|
||||||
|
MemTotal)
|
||||||
|
mem_used=$((mem_used + val))
|
||||||
|
mem_full=$val
|
||||||
|
;;
|
||||||
|
Shmem) mem_used=$((mem_used + val)) ;;
|
||||||
|
MemFree | Buffers | Cached | SReclaimable) mem_used=$((mem_used - val)) ;;
|
||||||
|
esac
|
||||||
|
done </proc/meminfo
|
||||||
|
mem_used=$((mem_used / 1024))
|
||||||
|
mem_full=$((mem_full / 1024))
|
||||||
|
;;
|
||||||
|
*"Darwin"*)
|
||||||
|
mem_full=$(($(sysctl -n hw.memsize) / 1024 / 1024))
|
||||||
|
while IFS=:. read -r key val; do
|
||||||
|
case $key in
|
||||||
|
*' wired'* | *' active'* | *' occupied'*)
|
||||||
|
mem_used=$((mem_used + ${"val:-0"}))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done <-EOF
|
||||||
|
$(vm_stat)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mem_used=$((mem_used * 4 / 1024))
|
||||||
|
;;
|
||||||
|
*"BSD"*)
|
||||||
|
mem_full=$(($(sysctl -n hw.physmem) / 1024 / 1024))
|
||||||
|
if [ $distrotype = netbsd ]; then
|
||||||
|
mem_free=$(($(vmstat | awk 'NR==3 {print $4}') / 1024))
|
||||||
|
else
|
||||||
|
mem_free=$(($(sysctl -n vm.stats.vm.v_free_count) * $(sysctl -n vm.stats.vm.v_page_size) / 1024 / 1024))
|
||||||
|
fi
|
||||||
|
mem_used=$((mem_full - mem_free))
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
mem_full=1
|
||||||
|
mem_used=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
memstat="''${mem_used}/''${mem_full} MiB"
|
||||||
|
if which expr >/dev/null 2>&1; then
|
||||||
|
mempercent="($(expr $(expr ''${mem_used} \* 100 / ''${mem_full}))%)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
## DEFINE COLORS
|
||||||
|
|
||||||
|
bold='[1m'
|
||||||
|
black='[30m'
|
||||||
|
red='[31m'
|
||||||
|
green='[32m'
|
||||||
|
yellow='[33m'
|
||||||
|
blue='[34m'
|
||||||
|
magenta='[35m'
|
||||||
|
cyan='[36m'
|
||||||
|
white='[37m'
|
||||||
|
grey='[90m'
|
||||||
|
reset='[0m'
|
||||||
|
|
||||||
|
## USER VARIABLES -- YOU CAN CHANGE THESE
|
||||||
|
|
||||||
|
lc="$reset$bold$magenta" # labels
|
||||||
|
nc="$reset$bold$magenta" # labels
|
||||||
|
hn="$reset$bold$magenta" # labels
|
||||||
|
ic="$reset$white" # info
|
||||||
|
c0="$reset$grey" # first color
|
||||||
|
c1="$reset$white" # second color
|
||||||
|
c2="$reset$yellow" # third color
|
||||||
|
|
||||||
|
## OUTPUT
|
||||||
|
|
||||||
|
echo """
|
||||||
|
''${c0} ___ ''${nc}''${USER}''${grey}@''${reset}''${hn}''${host}''${reset}
|
||||||
|
''${c0} (''${c1}.. ''${c0}\ ''${lc}''${osi} ''${ic}''${os}''${reset}
|
||||||
|
''${c0} (''${c2}<> ''${c0}| ''${lc}''${ki} ''${ic}''${kernel}''${reset}
|
||||||
|
''${c0} /''${c1}/ \\ ''${c0}\\ ''${lc}''${ri} ''${ic}''${RAM}''${memstat} ''${mempercent}
|
||||||
|
''${c0} ( ''${c1}| | ''${c0}/| ''${lc}''${pi} ''${ic}''${packages} (''${manager})''${reset}
|
||||||
|
''${c2} _''${c0}/\\ ''${c1}__)''${c0}/''${c2}_''${c0}) ''${lc}''${ui} ''${ic}''${uptime}''${reset}
|
||||||
|
''${c2} \/''${c0}-____''${c2}\/''${reset} ''${lc}''${ci} ''${red}███''${green}███''${yellow}███''${blue}███''${magenta}███''${cyan}███''${reset}
|
||||||
|
"""
|
||||||
|
'';
|
||||||
|
in {home.packages = [nerdfetch];}
|
||||||
@@ -1,66 +1,22 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cursorShaders = pkgs.fetchFromGitHub {
|
|
||||||
owner = "sahaj-b";
|
|
||||||
repo = "ghostty-cursor-shaders";
|
|
||||||
rev = "06d4e90fb5410e9c4d0b3131584060adddf89406";
|
|
||||||
hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw=";
|
|
||||||
};
|
|
||||||
c = config.lib.stylix.colors;
|
|
||||||
in {
|
|
||||||
home.sessionVariables = {
|
|
||||||
TERMINAL = "ghostty";
|
|
||||||
TERM = "ghostty";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
installVimSyntax = true;
|
installVimSyntax = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
settings = {
|
settings = {
|
||||||
window-padding-x = 10;
|
window-padding-x = 10;
|
||||||
confirm-close-surface = false;
|
|
||||||
window-padding-y = 10;
|
window-padding-y = 10;
|
||||||
clipboard-read = "allow";
|
|
||||||
clipboard-write = "allow";
|
|
||||||
copy-on-select = "clipboard";
|
|
||||||
app-notifications = false;
|
|
||||||
custom-shader = "${cursorShaders}/cursor_warp.glsl";
|
|
||||||
custom-shader-animation = "always";
|
|
||||||
keybind = [
|
keybind = [
|
||||||
# "ctrl+j=goto_split:left"
|
"ctrl+j=goto_split:left"
|
||||||
# "ctrl+i=goto_split:up"
|
"ctrl+i=goto_split:up"
|
||||||
# "ctrl+k=goto_split:down"
|
"ctrl+k=goto_split:down"
|
||||||
# "ctrl+l=goto_split:right"
|
"ctrl+l=goto_split:right"
|
||||||
# "shift+ctrl+h=new_split:left"
|
"shift+ctrl+j=new_split:left"
|
||||||
# "shift+ctrl+j=new_split:down"
|
"shift+ctrl+i=new_split:up"
|
||||||
# "shift+ctrl+k=new_split:up"
|
"shift+ctrl+k=new_split:down"
|
||||||
# "shift+ctrl+l=new_split:right"
|
"shift+ctrl+l=new_split:right"
|
||||||
"shift+ctrl+tab=new_tab"
|
"shift+ctrl+tab=new_tab"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".config/ilovetui/config.yaml".text = ''
|
|
||||||
colors:
|
|
||||||
base00: "#${c.base00}" # Background
|
|
||||||
base01: "#${c.base01}" # Lighter Background / Status Bars
|
|
||||||
base02: "#${c.base02}" # Selection Background
|
|
||||||
base03: "#${c.base03}" # Comments / Invisibles
|
|
||||||
base04: "#${c.base04}" # Dark Foreground / Status Bars
|
|
||||||
base05: "#${c.base05}" # Default Foreground
|
|
||||||
base06: "#${c.base06}" # Light Foreground
|
|
||||||
base07: "#${c.base07}" # Light Background
|
|
||||||
base08: "#${c.base08}" # Variables / Errors / Diff Deleted
|
|
||||||
base09: "#${c.base09}" # Integers / Constants / Booleans
|
|
||||||
base0a: "#${c.base0A}" # Classes / Warnings / Search Background
|
|
||||||
base0b: "#${c.base0B}" # Strings / Success / Diff Inserted
|
|
||||||
base0c: "#${c.base0C}" # Support / Regex / Escape Characters
|
|
||||||
base0d: "#${c.base0D}" # Functions / Methods / Headings / Accent
|
|
||||||
base0e: "#${c.base0E}" # Keywords / Storage / Diff Changed
|
|
||||||
base0f: "#${c.base0F}" # Embedded / Misc
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,10 @@ in {
|
|||||||
st = "status";
|
st = "status";
|
||||||
br = "branch";
|
br = "branch";
|
||||||
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
|
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
|
||||||
hist = ''log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
|
hist = ''
|
||||||
llog = ''log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
|
log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
|
||||||
|
llog = ''
|
||||||
|
log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
|
||||||
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
|
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,15 +16,12 @@ in {
|
|||||||
update.method = "never";
|
update.method = "never";
|
||||||
git = {
|
git = {
|
||||||
commit.signOff = true;
|
commit.signOff = true;
|
||||||
overrideGpg = true;
|
overrideGpg = true;
|
||||||
parseEmoji = true;
|
parseEmoji = true;
|
||||||
};
|
};
|
||||||
gui = {
|
gui = {
|
||||||
theme = {
|
theme = {
|
||||||
activeBorderColor = [
|
activeBorderColor = [accent "bold"];
|
||||||
accent
|
|
||||||
"bold"
|
|
||||||
];
|
|
||||||
inactiveBorderColor = [muted];
|
inactiveBorderColor = [muted];
|
||||||
};
|
};
|
||||||
showListFooter = false;
|
showListFooter = false;
|
||||||
|
|||||||
@@ -3,13 +3,10 @@
|
|||||||
# CHANGEME: change this to your own SSH key.
|
# CHANGEME: change this to your own SSH key.
|
||||||
home.file.".ssh/allowed_signers".text = "* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIINhWby7lUUXQNKbRu9/UOrGjWDf3fvoAwGHomWv/+lL";
|
home.file.".ssh/allowed_signers".text = "* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIINhWby7lUUXQNKbRu9/UOrGjWDf3fvoAwGHomWv/+lL";
|
||||||
|
|
||||||
programs.git = {
|
programs.git.settings = {
|
||||||
signing.format = "openpgp";
|
commit.gpgsign = true;
|
||||||
settings = {
|
gpg.ssh.allowedSignersFile = "~/.ssh/allowed_signers";
|
||||||
commit.gpgsign = true;
|
gpg.format = "ssh";
|
||||||
gpg.ssh.allowedSignersFile = "~/.ssh/allowed_signers";
|
user.signingkey = "~/.ssh/key.pub";
|
||||||
gpg.format = "ssh";
|
|
||||||
user.signingkey = "~/.ssh/key.pub";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
pkgs-nur-hadi,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs-stable; [
|
|
||||||
vlc # Video player
|
|
||||||
obsidian # Note taking app
|
|
||||||
textpieces # Manipulate texts
|
|
||||||
resources # Ressource monitor
|
|
||||||
gnome-clocks # Clocks app
|
|
||||||
gnome-text-editor # Basic graphic text editor
|
|
||||||
ticktick # Todo app
|
|
||||||
pinta # Image editor
|
|
||||||
switcheroo # Convert images between different formats
|
|
||||||
onlyoffice-desktopeditors # Office suite
|
|
||||||
blanket # Listen to different sounds
|
|
||||||
signal-desktop # Messaging app
|
|
||||||
librewolf # Backup browser
|
|
||||||
|
|
||||||
# I love TUIs
|
|
||||||
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
|
|
||||||
browsh # A modern text-based browser that renders anything that a modern browser can. It runs in a terminal and can be used remotely over SSH
|
|
||||||
dysk # A terminal-based disk usage analyzer
|
|
||||||
wikiman # Offline search engine for manual pages (arch wiki, tldr)
|
|
||||||
tealdeer # Fast tldr client
|
|
||||||
sttr # Minimalist "cyberchef" like. Cross-platform, cli app to perform various operations on string
|
|
||||||
wiremix # Simple TUI mixer for PipeWire
|
|
||||||
slides # A terminal-based presentation tool that allows you to create and deliver presentations directly from the command line
|
|
||||||
pom # Pomodoro timer in your terminal
|
|
||||||
pkgs.wifitui # TUI for managing wifi
|
|
||||||
pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules
|
|
||||||
pkgs-nur-hadi.sheets # Terminal based spreadsheet tool
|
|
||||||
|
|
||||||
# I love CLIs
|
|
||||||
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
|
||||||
gh # GitHub
|
|
||||||
gh-dash # A terminal dashboard for GitHub
|
|
||||||
figlet # Transform text into ASCII art
|
|
||||||
pastel # Command-line tool to generate, analyze, convert and manipulate colors
|
|
||||||
imagemagick # Image manipulation tool
|
|
||||||
chafa # Image to ANSI/Unicode converter and more.
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
pkgs-nur-hadi,
|
|
||||||
}:
|
|
||||||
(with pkgs-stable; [
|
|
||||||
# Web
|
|
||||||
dirb
|
|
||||||
ffuf
|
|
||||||
katana
|
|
||||||
whatweb
|
|
||||||
|
|
||||||
# Hashes
|
|
||||||
hashcat
|
|
||||||
haiti
|
|
||||||
hydra
|
|
||||||
john
|
|
||||||
|
|
||||||
# Databases
|
|
||||||
mariadb
|
|
||||||
redis
|
|
||||||
sqlmap
|
|
||||||
nosqli
|
|
||||||
|
|
||||||
# Network
|
|
||||||
inetutils
|
|
||||||
termshark # wireshark in TUI
|
|
||||||
dnsrecon
|
|
||||||
whois
|
|
||||||
dig
|
|
||||||
nmap
|
|
||||||
samba
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
metasploit
|
|
||||||
nuclei
|
|
||||||
openvpn
|
|
||||||
|
|
||||||
# Secrets
|
|
||||||
trufflehog
|
|
||||||
|
|
||||||
# Forensics
|
|
||||||
binwalk
|
|
||||||
])
|
|
||||||
++ (with pkgs-nur-hadi; [
|
|
||||||
spilltea
|
|
||||||
jwt-tui
|
|
||||||
])
|
|
||||||
@@ -1,45 +1,15 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
inputs,
|
||||||
pkgs-nur-hadi,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = import ./cybersecurity-packages.nix {
|
home.packages = with pkgs; [
|
||||||
inherit pkgs pkgs-stable pkgs-nur-hadi;
|
wireshark
|
||||||
};
|
nmap
|
||||||
|
john
|
||||||
systemd.user.tmpfiles.rules = [
|
hashcat
|
||||||
"d %h/Cyber/tmp 0755 - - -"
|
inputs.eleakxir.packages.${stdenv.hostPlatform.system}.leak-utils
|
||||||
"d %h/Cyber/wordlists 0755 - - -"
|
caido
|
||||||
"d %h/Cyber/wordlists/rules 0755 - - -"
|
nuclei
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file = {
|
|
||||||
"Cyber/wordlists/seclists".source = pkgs.fetchFromGitHub {
|
|
||||||
owner = "danielmiessler";
|
|
||||||
repo = "SecLists";
|
|
||||||
rev = "47aa98053fce8670c6489e4f6fb57dc34881d8bd";
|
|
||||||
hash = "sha256-ojXLB/TXap1Qi0MtV5/WJlJpjNIDYx/sLY2KHm0uFKI=";
|
|
||||||
};
|
|
||||||
|
|
||||||
"Cyber/wordlists/fuzz4bounty".source = pkgs.fetchFromGitHub {
|
|
||||||
owner = "0xPugal";
|
|
||||||
repo = "fuzz4bounty";
|
|
||||||
rev = "a805f6b434033f054312da0ddc2bc3021cc9a3b0";
|
|
||||||
hash = "sha256-wMhx1CcxIyw2E7gJXQxXAFc7m5nYt0FXNkoTZqFMQh4=";
|
|
||||||
};
|
|
||||||
|
|
||||||
# RULES
|
|
||||||
"Cyber/wordlists/rules/oneruletorulethemstill".source = pkgs.fetchFromGitHub {
|
|
||||||
owner = "stealthsploit";
|
|
||||||
repo = "oneruletorulethemstill";
|
|
||||||
rev = "4bfb7322e189305b5f35bb7fcd4e9cc233c3d3c6";
|
|
||||||
hash = "sha256-h7MeymIXS/6wlPRt4lzsIEqOOssP0lDx9nQip65cwZw=";
|
|
||||||
};
|
|
||||||
|
|
||||||
"Cyber/wordlists/rules/best64.rule".source = pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/CarlosLannister/OwadeReborn/refs/heads/master/owade/fileAnalyze/hashcatLib/best64.rule%7E";
|
|
||||||
hash = "sha256-T0XkMHJZQiy63/j25nGTkaiDFjc+blmgEVGTAFgVylU=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
}:
|
|
||||||
(with pkgs; [
|
|
||||||
go
|
|
||||||
claude-code
|
|
||||||
])
|
|
||||||
++ (with pkgs-stable; [
|
|
||||||
nodejs
|
|
||||||
air
|
|
||||||
duckdb
|
|
||||||
python3
|
|
||||||
jq
|
|
||||||
nix-prefetch-github
|
|
||||||
rsync
|
|
||||||
])
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = import ./dev-packages.nix {inherit pkgs pkgs-stable;};
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
pkgs-nur-hadi,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
devPackages = import ./dev-packages.nix {inherit pkgs pkgs-stable;};
|
|
||||||
cyberPackages = import ./cybersecurity-packages.nix {inherit pkgs pkgs-stable pkgs-nur-hadi;};
|
|
||||||
in {
|
|
||||||
packages.${system} = {
|
|
||||||
dev = pkgs.buildEnv {
|
|
||||||
name = "dev-tools";
|
|
||||||
paths = devPackages;
|
|
||||||
};
|
|
||||||
cybersecurity = pkgs.buildEnv {
|
|
||||||
name = "cybersecurity-tools";
|
|
||||||
paths = cyberPackages;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs-stable,
|
|
||||||
pkgs-nur-hadi,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs-stable; [
|
|
||||||
tty-solitaire
|
|
||||||
bastet
|
|
||||||
peaclock
|
|
||||||
cbonsai
|
|
||||||
pipes
|
|
||||||
cmatrix
|
|
||||||
fastfetch
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,459 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
bookmarkList =
|
|
||||||
(import ./general.nix)
|
|
||||||
++ (import ./tools.nix)
|
|
||||||
++ (import ./entertainment.nix)
|
|
||||||
++ (import ./infosec.nix)
|
|
||||||
++ (import ./other.nix)
|
|
||||||
++ (import ./jack.nix);
|
|
||||||
|
|
||||||
c = config.lib.stylix.colors;
|
|
||||||
|
|
||||||
stripProtocol = url: lib.removePrefix "https://" (lib.removePrefix "http://" url);
|
|
||||||
stripDomain = url: builtins.head (lib.splitString "/" (stripProtocol url));
|
|
||||||
|
|
||||||
mkCard = item: let
|
|
||||||
domain = stripDomain item.url;
|
|
||||||
initial = builtins.substring 0 1 item.name;
|
|
||||||
in ''
|
|
||||||
<a href="${item.url}" class="card">
|
|
||||||
<div class="favicon-wrapper">
|
|
||||||
<img class="favicon" src="https://icons.duckduckgo.com/ip3/${domain}.ico" alt="" aria-hidden="true" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'">
|
|
||||||
<span class="favicon-fallback" style="display:none">${initial}</span>
|
|
||||||
</div>
|
|
||||||
<div class="card-info">
|
|
||||||
<span class="card-name">${item.name}</span>
|
|
||||||
<span class="card-url">${stripProtocol item.url}</span>
|
|
||||||
</div>
|
|
||||||
</a>'';
|
|
||||||
|
|
||||||
mkFolderContent = items: let
|
|
||||||
step = acc: item:
|
|
||||||
if item ? url
|
|
||||||
then acc // {pending = acc.pending ++ [item];}
|
|
||||||
else {
|
|
||||||
chunks =
|
|
||||||
acc.chunks
|
|
||||||
++ lib.optional (acc.pending != []) {
|
|
||||||
isCards = true;
|
|
||||||
items = acc.pending;
|
|
||||||
}
|
|
||||||
++ [
|
|
||||||
{
|
|
||||||
isCards = false;
|
|
||||||
folder = item;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
pending = [];
|
|
||||||
};
|
|
||||||
result =
|
|
||||||
lib.foldl' step {
|
|
||||||
chunks = [];
|
|
||||||
pending = [];
|
|
||||||
}
|
|
||||||
items;
|
|
||||||
chunks =
|
|
||||||
result.chunks
|
|
||||||
++ lib.optional (result.pending != []) {
|
|
||||||
isCards = true;
|
|
||||||
items = result.pending;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
lib.concatMapStrings (
|
|
||||||
chunk:
|
|
||||||
if chunk.isCards
|
|
||||||
then ''
|
|
||||||
<div class="cards">
|
|
||||||
${lib.concatMapStrings mkCard chunk.items}
|
|
||||||
</div>''
|
|
||||||
else mkFolder chunk.folder
|
|
||||||
)
|
|
||||||
chunks;
|
|
||||||
|
|
||||||
mkFolder = folder: let
|
|
||||||
iconHtml =
|
|
||||||
if folder ? icon
|
|
||||||
then ''<span class="material-symbols-outlined folder-icon" aria-hidden="true">${folder.icon}</span>''
|
|
||||||
else "";
|
|
||||||
in ''
|
|
||||||
<details class="folder-section" open>
|
|
||||||
<summary class="folder-title">
|
|
||||||
${iconHtml}<span class="folder-name">${folder.name}</span>
|
|
||||||
<svg class="chevron" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
|
|
||||||
</summary>
|
|
||||||
<div class="folder-content">
|
|
||||||
${mkFolderContent folder.bookmarks}
|
|
||||||
</div>
|
|
||||||
</details>'';
|
|
||||||
|
|
||||||
grouped = let
|
|
||||||
step = acc: item:
|
|
||||||
if item ? url
|
|
||||||
then acc // {pending = acc.pending ++ [item];}
|
|
||||||
else {
|
|
||||||
groups =
|
|
||||||
acc.groups
|
|
||||||
++ lib.optional (acc.pending != []) {
|
|
||||||
isRoot = true;
|
|
||||||
items = acc.pending;
|
|
||||||
}
|
|
||||||
++ [
|
|
||||||
{
|
|
||||||
isRoot = false;
|
|
||||||
inherit item;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
pending = [];
|
|
||||||
};
|
|
||||||
result =
|
|
||||||
lib.foldl' step {
|
|
||||||
groups = [];
|
|
||||||
pending = [];
|
|
||||||
}
|
|
||||||
bookmarkList;
|
|
||||||
in
|
|
||||||
result.groups
|
|
||||||
++ lib.optional (result.pending != []) {
|
|
||||||
isRoot = true;
|
|
||||||
items = result.pending;
|
|
||||||
};
|
|
||||||
|
|
||||||
mkSection = group:
|
|
||||||
if group.isRoot
|
|
||||||
then ''
|
|
||||||
<div class="root-section">
|
|
||||||
<div class="cards">
|
|
||||||
${lib.concatMapStrings mkCard group.items}
|
|
||||||
</div>
|
|
||||||
</div>''
|
|
||||||
else mkFolder group.item;
|
|
||||||
in {
|
|
||||||
home.file.".local/share/helium-startpage/index.html".text = ''
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Bookmarks</title>
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20,300,0,0">
|
|
||||||
<style>
|
|
||||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #${c.base00};
|
|
||||||
color: #${c.base05};
|
|
||||||
font-family: 'Source Sans Pro', sans-serif;
|
|
||||||
font-size: 14px;
|
|
||||||
min-height: 100vh;
|
|
||||||
padding: 2.5rem 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
max-width: 1100px;
|
|
||||||
margin: 0 auto 2rem;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-title {
|
|
||||||
font-size: 1.3rem;
|
|
||||||
font-weight: 700;
|
|
||||||
color: #${c.base0D};
|
|
||||||
letter-spacing: -0.01em;
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-bar {
|
|
||||||
flex: 1;
|
|
||||||
background-color: #${c.base01};
|
|
||||||
border: 1px solid #${c.base02};
|
|
||||||
border-radius: 8px;
|
|
||||||
color: #${c.base05};
|
|
||||||
font-family: 'Source Sans Pro', sans-serif;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
padding: 0.5rem 0.9rem;
|
|
||||||
outline: none;
|
|
||||||
transition: border-color 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-bar::placeholder { color: #${c.base03}; }
|
|
||||||
.search-bar:focus { border-color: #${c.base0D}; }
|
|
||||||
|
|
||||||
.collapse-btn {
|
|
||||||
flex-shrink: 0;
|
|
||||||
background: none;
|
|
||||||
border: 1px solid #${c.base02};
|
|
||||||
border-radius: 8px;
|
|
||||||
color: #${c.base03};
|
|
||||||
cursor: pointer;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0.47rem;
|
|
||||||
transition: color 0.15s ease, border-color 0.15s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.collapse-btn:hover {
|
|
||||||
color: #${c.base0D};
|
|
||||||
border-color: #${c.base0D};
|
|
||||||
}
|
|
||||||
|
|
||||||
.collapse-btn svg { width: 16px; height: 16px; }
|
|
||||||
|
|
||||||
.bookmarks-container {
|
|
||||||
max-width: 1100px;
|
|
||||||
margin: 0 auto;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.root-section { margin-bottom: 1rem; }
|
|
||||||
|
|
||||||
details.folder-section { border-radius: 8px; }
|
|
||||||
|
|
||||||
details.folder-section > summary {
|
|
||||||
list-style: none;
|
|
||||||
cursor: pointer;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 0.5rem;
|
|
||||||
padding: 0.45rem 0.5rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
user-select: none;
|
|
||||||
transition: background-color 0.12s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
details.folder-section > summary::-webkit-details-marker { display: none; }
|
|
||||||
|
|
||||||
details.folder-section > summary:hover {
|
|
||||||
background-color: #${c.base01};
|
|
||||||
color: #${c.base0D};
|
|
||||||
}
|
|
||||||
|
|
||||||
details.folder-section > summary:hover .folder-name { color: #${c.base0D}; }
|
|
||||||
details.folder-section > summary:hover .folder-icon { color: #${c.base0D}; }
|
|
||||||
|
|
||||||
.folder-icon {
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1;
|
|
||||||
flex-shrink: 0;
|
|
||||||
color: #${c.base04};
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.folder-name {
|
|
||||||
font-size: 0.72rem;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0.12em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: #${c.base03};
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chevron {
|
|
||||||
width: 13px;
|
|
||||||
height: 13px;
|
|
||||||
color: #${c.base03};
|
|
||||||
transition: transform 0.2s ease;
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
details[open] > summary > .chevron { transform: rotate(180deg); }
|
|
||||||
|
|
||||||
.folder-content {
|
|
||||||
padding: 0.4rem 0 0.5rem 0;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.folder-content > details.folder-section > summary { padding-left: 1.2rem; }
|
|
||||||
.folder-content > details.folder-section > .folder-content { padding-left: 1rem; }
|
|
||||||
|
|
||||||
.cards {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
|
||||||
gap: 0.4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 0.7rem;
|
|
||||||
padding: 0.6rem 0.8rem;
|
|
||||||
background-color: #${c.base01};
|
|
||||||
border: 1px solid #${c.base02};
|
|
||||||
border-radius: 10px;
|
|
||||||
text-decoration: none;
|
|
||||||
transition: background-color 0.12s ease, border-color 0.12s ease;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
background-color: #${c.base02};
|
|
||||||
border-color: #${c.base0D};
|
|
||||||
}
|
|
||||||
|
|
||||||
.favicon-wrapper { position: relative; width: 18px; height: 18px; flex-shrink: 0; }
|
|
||||||
|
|
||||||
.favicon {
|
|
||||||
position: absolute;
|
|
||||||
inset: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: contain;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.favicon-fallback {
|
|
||||||
position: absolute;
|
|
||||||
inset: 0;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-color: #${c.base02};
|
|
||||||
border-radius: 4px;
|
|
||||||
color: #${c.base04};
|
|
||||||
font-size: 10px;
|
|
||||||
font-weight: 700;
|
|
||||||
text-transform: uppercase;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-info {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 0.05rem;
|
|
||||||
overflow: hidden;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-name {
|
|
||||||
color: #${c.base05};
|
|
||||||
font-size: 0.86rem;
|
|
||||||
font-weight: 500;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
transition: color 0.12s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover .card-name { color: #${c.base0D}; }
|
|
||||||
|
|
||||||
.card-url {
|
|
||||||
color: #${c.base03};
|
|
||||||
font-family: 'Maple Mono NF', monospace;
|
|
||||||
font-size: 0.7rem;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-results {
|
|
||||||
color: #${c.base03};
|
|
||||||
font-size: 0.9rem;
|
|
||||||
padding: 0.5rem 0.2rem;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="header">
|
|
||||||
<h1 class="page-title">Bookmarks</h1>
|
|
||||||
<input id="search" class="search-bar" type="text" placeholder="Search…" autocomplete="off" spellcheck="false">
|
|
||||||
<button id="collapse-btn" class="collapse-btn" title="Collapse all folders" aria-label="Collapse all folders">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
||||||
<polyline points="4 14 10 14 10 20"/><polyline points="20 10 14 10 14 4"/><line x1="10" y1="14" x2="3" y2="21"/><line x1="21" y1="3" x2="14" y2="10"/>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="bookmarks-container">
|
|
||||||
<p id="no-results" class="no-results">No results</p>
|
|
||||||
${lib.concatMapStrings mkSection grouped}
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
window.addEventListener('DOMContentLoaded', function () {
|
|
||||||
const input = document.getElementById('search');
|
|
||||||
const noResults = document.getElementById('no-results');
|
|
||||||
const collapseBtn = document.getElementById('collapse-btn');
|
|
||||||
|
|
||||||
input.focus();
|
|
||||||
|
|
||||||
collapseBtn.addEventListener('click', function () {
|
|
||||||
document.querySelectorAll('details.folder-section').forEach(function (d) {
|
|
||||||
d.open = false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
input.addEventListener('input', function () {
|
|
||||||
const query = this.value.toLowerCase().trim();
|
|
||||||
let anyVisible = false;
|
|
||||||
|
|
||||||
if (query) {
|
|
||||||
document.querySelectorAll('details.folder-section').forEach(function (d) {
|
|
||||||
d.open = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
document.querySelectorAll('.folder-section, .root-section').forEach(function (section) {
|
|
||||||
let sectionVisible = false;
|
|
||||||
section.querySelectorAll('.card').forEach(function (card) {
|
|
||||||
const name = card.querySelector('.card-name').textContent.toLowerCase();
|
|
||||||
const url = card.querySelector('.card-url').textContent.toLowerCase();
|
|
||||||
const match = !query || name.includes(query) || url.includes(query);
|
|
||||||
card.style.display = match ? ''' : 'none';
|
|
||||||
if (match) { sectionVisible = true; anyVisible = true; }
|
|
||||||
});
|
|
||||||
section.style.display = sectionVisible ? ''' : 'none';
|
|
||||||
});
|
|
||||||
|
|
||||||
noResults.style.display = anyVisible || !query ? 'none' : 'block';
|
|
||||||
});
|
|
||||||
|
|
||||||
input.addEventListener('keydown', function (e) {
|
|
||||||
if (e.key === 'Enter') {
|
|
||||||
const val = this.value.trim();
|
|
||||||
const isUrl = /^https?:\/\//i.test(val) || /^[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})(\/.*)?$/.test(val);
|
|
||||||
if (isUrl) {
|
|
||||||
location.href = /^https?:\/\//i.test(val) ? val : 'https://' + val;
|
|
||||||
} else {
|
|
||||||
const first = document.querySelector('.card:not([style*="none"])');
|
|
||||||
if (first) {
|
|
||||||
location.href = first.href;
|
|
||||||
} else {
|
|
||||||
const q = encodeURIComponent(val);
|
|
||||||
if (q) location.href = 'https://duckduckgo.com/?q=' + q;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (e.key === 'Escape') {
|
|
||||||
this.value = ''';
|
|
||||||
this.dispatchEvent(new Event('input'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
'';
|
|
||||||
|
|
||||||
systemd.user.services.helium-startpage = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Helium startpage HTTP server";
|
|
||||||
After = ["network.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = "${pkgs.darkhttpd}/bin/darkhttpd %h/.local/share/helium-startpage --port 8888 --addr 127.0.0.1 --no-listing";
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
name = "Entertainment";
|
|
||||||
icon = "movie";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Youtube";
|
|
||||||
url = "https://youtube.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Jellyfin";
|
|
||||||
url = "https://media.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Seerr";
|
|
||||||
url = "https://demandemedia.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Social Media";
|
|
||||||
icon = "group";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Medium";
|
|
||||||
url = "https://medium.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Bluesky";
|
|
||||||
url = "https://bsky.app";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Reddit";
|
|
||||||
url = "https://reddit.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Instagram";
|
|
||||||
url = "https://instagram.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Discord";
|
|
||||||
url = "https://discord.com/channels/@me/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Gitlab";
|
|
||||||
url = "https://gitlab.com/";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
name = "Proton Mail";
|
|
||||||
url = "https://mail.proton.me";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Proton Drive";
|
|
||||||
url = "https://drive.proton.me";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Github";
|
|
||||||
url = "https://github.com";
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
name = "Infosec";
|
|
||||||
icon = "terminal";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Nix 4 Cyber";
|
|
||||||
url = "https://n4c.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Infosec Notes - Anotherhadi";
|
|
||||||
url = "https://hadi.icu/notes";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cyberchef";
|
|
||||||
url = "https://cyberchef.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "TryHackMe";
|
|
||||||
url = "https://tryhackme.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Root-Me";
|
|
||||||
url = "https://root-me.org";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Hack The Box";
|
|
||||||
url = "https://hackthebox.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Iknowyou";
|
|
||||||
url = "https://iknowyou-prod.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Exploit-DB";
|
|
||||||
url = "https://exploit-db.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Reverse Shell Generator";
|
|
||||||
url = "https://revshells.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "GTFOBins";
|
|
||||||
url = "https://gtfobins.org/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Crack Station";
|
|
||||||
url = "https://crackstation.net";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Osint Tracker";
|
|
||||||
url = "https://app.osintracker.com";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
name = "Jack";
|
|
||||||
icon = "dns";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Glance";
|
|
||||||
url = "https://home.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Blog";
|
|
||||||
url = "https://hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Gitea";
|
|
||||||
url = "https://git.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Mealie";
|
|
||||||
url = "https://mealie.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Wallpapers";
|
|
||||||
url = "https://wallpapers.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Default Creds";
|
|
||||||
url = "https://default-creds.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Media";
|
|
||||||
icon = "subscriptions";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Radarr";
|
|
||||||
url = "https://radarr.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Sonarr";
|
|
||||||
url = "https://sonarr.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Bazarr";
|
|
||||||
url = "https://bazarr.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Prowlarr";
|
|
||||||
url = "https://prowlarr.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Transmission";
|
|
||||||
url = "https://transmission.hadi.icu";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Infrastructure";
|
|
||||||
icon = "construction";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "AdGuard";
|
|
||||||
url = "https://adguard.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Umami";
|
|
||||||
url = "https://umami.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cloudflare";
|
|
||||||
url = "https://dash.cloudflare.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cloudflare Zero Trust";
|
|
||||||
url = "https://one.dash.cloudflare.com";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
name = "Other";
|
|
||||||
icon = "category";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Documentation";
|
|
||||||
icon = "menu_book";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Hyprland Wiki";
|
|
||||||
url = "https://wiki.hypr.land";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "NVF Options";
|
|
||||||
url = "https://nvf.notashelf.dev/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Stylix Wiki";
|
|
||||||
url = "https://nix-community.github.io/stylix/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Nixpkgs";
|
|
||||||
url = "https://github.com/NixOS/nixpkgs";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "tldr";
|
|
||||||
url = "https://tldr.inbrowser.app/";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Startpage Config";
|
|
||||||
url = "https://www.startpage.com/do/mypage.pl?prfe=45d331deb05471d659dba933e7400df51d952bb103da6f6125c0e769a6be1d65610456a479f495ceeee7e97311cf227d7c1bb198de0ceeb193d8cddf9c455c19a409cc35c3e3f542ee27bd7cecd3";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Feedly";
|
|
||||||
url = "https://feedly.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "MyNixOS";
|
|
||||||
url = "https://mynixos.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Amazon";
|
|
||||||
url = "https://amazon.fr";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
name = "Tools";
|
|
||||||
icon = "handyman";
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Maps";
|
|
||||||
url = "https://maps.apple.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Excalidraw";
|
|
||||||
url = "https://excalidraw.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cobalt (downloader)";
|
|
||||||
url = "https://cobalt.meowing.de";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Mazanoke (image)";
|
|
||||||
url = "https://mazanoke.hadi.icu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Vert";
|
|
||||||
url = "https://vert.sh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Markdown to PDF";
|
|
||||||
url = "https://md2file.com";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Image to Vector";
|
|
||||||
url = "https://www.vectorcascade.com/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "PrivateBin";
|
|
||||||
url = "https://privatebin.net";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Claude";
|
|
||||||
url = "https://claude.ai";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Gemini";
|
|
||||||
url = "https://gemini.google.com";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
c = config.lib.stylix.colors;
|
|
||||||
rgb = base: map lib.strings.toInt [c."${base}-rgb-r" c."${base}-rgb-g" c."${base}-rgb-b"];
|
|
||||||
|
|
||||||
themeId = "abcadngacjlikcpkhleafekcdjmddegk";
|
|
||||||
themeKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6t46VoE3mdV1QNMgybpmQLi5PtYHejnNrSj4DkBZyiTzMzs7Yyvg64f78w3QubZA5cTXSQ7FVhVHvv30I8ym/jNzsSN6reh1t4PtKsFjFRugAty8bfKJGD404HZLOFN2z3G9UPVLBBgzDH3DWbb/kcOq60Mlo/QDCIjsieZg0G3EYMl4efoThzYPWoyv0UEoiliwrE/AChxbgipQetUZ48bFhTCsmnYzCze7clssfTobzWtJJG0qFx76LauHKymRS5OTFfgsovKqHUSFJ202Q53vFdUPP/j8PjSPr1kZeg1NYc7Ba3MoA49EwtJf5ol9oYu05EEnSQ5+1AoYVmdE8QIDAQAB";
|
|
||||||
|
|
||||||
themeManifest = builtins.toJSON {
|
|
||||||
manifest_version = 2;
|
|
||||||
name = "Stylix Theme";
|
|
||||||
version = "1.0";
|
|
||||||
key = themeKey;
|
|
||||||
theme.colors = {
|
|
||||||
frame = rgb "base00";
|
|
||||||
frame_inactive = rgb "base00";
|
|
||||||
frame_incognito = rgb "base00";
|
|
||||||
frame_incognito_inactive = rgb "base00";
|
|
||||||
toolbar = rgb "base00";
|
|
||||||
toolbar_button_icon = rgb "base05";
|
|
||||||
control_background = rgb "base00";
|
|
||||||
tab_text = rgb "base0D";
|
|
||||||
background_tab = rgb "base00";
|
|
||||||
tab_background_text = rgb "base04";
|
|
||||||
tab_background_text_inactive = rgb "base04";
|
|
||||||
ntp_background = rgb "base00";
|
|
||||||
ntp_text = rgb "base05";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
heliumFlags = [
|
|
||||||
"--ozone-platform=wayland"
|
|
||||||
"--enable-features=UseOzonePlatform,VaapiVideoDecoder,VaapiVideoEncoder,CanvasOopRasterization"
|
|
||||||
"--disable-features=UseChromeOSDirectVideoDecoder,WaylandWpColorManagerV1"
|
|
||||||
"--enable-accelerated-video-decode"
|
|
||||||
"--enable-gpu-rasterization"
|
|
||||||
"--use-gl=egl"
|
|
||||||
"--no-default-browser-check"
|
|
||||||
"--show-avatar-button=never"
|
|
||||||
];
|
|
||||||
|
|
||||||
originalPkg = (inputs.helium-browser.packages.${pkgs.stdenv.hostPlatform.system}.helium).override {
|
|
||||||
flags = heliumFlags;
|
|
||||||
};
|
|
||||||
|
|
||||||
patchScript = pkgs.writeShellScript "helium-patch-prefs" ''
|
|
||||||
PROFILE="$HOME/.config/net.imput.helium/Default"
|
|
||||||
THEME_DIR="$PROFILE/Extensions/${themeId}/1.0_0"
|
|
||||||
PREFS="$PROFILE/Preferences"
|
|
||||||
|
|
||||||
mkdir -p "$THEME_DIR"
|
|
||||||
rm -f "$THEME_DIR/Cached Theme.pak"
|
|
||||||
printf '%s' '${themeManifest}' > "$THEME_DIR/manifest.json"
|
|
||||||
|
|
||||||
if [ -f "$PREFS" ]; then
|
|
||||||
tmp=$(mktemp)
|
|
||||||
${lib.getExe pkgs.jq} \
|
|
||||||
--arg id "${themeId}" \
|
|
||||||
--slurpfile manifest "$THEME_DIR/manifest.json" \
|
|
||||||
'
|
|
||||||
.helium.browser.layout = 3 |
|
|
||||||
.helium.browser.minimal_location_bar = true |
|
|
||||||
.helium.browser.show_dynamic_new_tab_button = false |
|
|
||||||
.helium.browser.rounded_frame = false |
|
|
||||||
.bookmark_bar.show_tab_groups = false |
|
|
||||||
.extensions.settings[$id] = {
|
|
||||||
"active_permissions": {"api": [], "explicit_host": [], "manifest_permissions": [], "scriptable_host": []},
|
|
||||||
"creation_flags": 0,
|
|
||||||
"from_webstore": false,
|
|
||||||
"install_time": "13300000000000000",
|
|
||||||
"location": 1,
|
|
||||||
"manifest": $manifest[0],
|
|
||||||
"path": ($id + "/1.0_0"),
|
|
||||||
"state": 1,
|
|
||||||
"was_installed_by_default": false,
|
|
||||||
"was_installed_by_oem": false
|
|
||||||
} |
|
|
||||||
.extensions.theme = {"id": $id, "use_system": false}
|
|
||||||
' "$PREFS" > "$tmp" && mv "$tmp" "$PREFS"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
baseWrapped = pkgs.symlinkJoin {
|
|
||||||
name = "helium-wrapped";
|
|
||||||
paths = [originalPkg];
|
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
|
||||||
postBuild = ''
|
|
||||||
wrapProgram $out/bin/helium \
|
|
||||||
--run ${lib.escapeShellArg (toString patchScript)}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
wrappedPkg = baseWrapped // {override = _: baseWrapped;};
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
inputs.helium-browser.homeModules.default
|
|
||||||
./bookmarks
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.helium = {
|
|
||||||
enable = true;
|
|
||||||
package = lib.mkForce wrappedPkg;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.BROWSER = "${config.programs.helium.package}/bin/helium";
|
|
||||||
|
|
||||||
xdg.desktopEntries.helium = {
|
|
||||||
name = "Helium";
|
|
||||||
genericName = "Navigateur Web";
|
|
||||||
exec = "${config.programs.helium.package}/bin/helium %U";
|
|
||||||
icon = "${config.programs.helium.package}/share/icons/hicolor/256x256/apps/helium.png";
|
|
||||||
terminal = false;
|
|
||||||
categories = ["Network" "WebBrowser"];
|
|
||||||
mimeType = [
|
|
||||||
"text/html"
|
|
||||||
"text/xml"
|
|
||||||
"application/xhtml+xml"
|
|
||||||
"x-scheme-handler/http"
|
|
||||||
"x-scheme-handler/https"
|
|
||||||
"x-scheme-handler/ftp"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.desktopEntries.helium-private = {
|
|
||||||
name = "Helium (Private window)";
|
|
||||||
genericName = "Navigateur Web";
|
|
||||||
exec = "${config.programs.helium.package}/bin/helium --incognito %U";
|
|
||||||
icon = "${config.programs.helium.package}/share/icons/hicolor/256x256/apps/helium.png";
|
|
||||||
terminal = false;
|
|
||||||
categories = ["Network" "WebBrowser"];
|
|
||||||
mimeType = ["text/html" "text/xml" "application/xhtml+xml"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
{...}: let
|
|
||||||
bookmarkList =
|
|
||||||
(import ./bookmarks/general.nix)
|
|
||||||
++ (import ./bookmarks/tools.nix)
|
|
||||||
++ (import ./bookmarks/entertainment.nix)
|
|
||||||
++ (import ./bookmarks/infosec.nix)
|
|
||||||
++ (import ./bookmarks/other.nix)
|
|
||||||
++ (import ./bookmarks/jack.nix);
|
|
||||||
|
|
||||||
toChromium = items:
|
|
||||||
map (item:
|
|
||||||
if item ? url
|
|
||||||
then {inherit (item) name url;}
|
|
||||||
else {
|
|
||||||
name = item.name;
|
|
||||||
children = toChromium item.bookmarks;
|
|
||||||
})
|
|
||||||
items;
|
|
||||||
in {
|
|
||||||
stylix.targets.chromium.enable = false;
|
|
||||||
|
|
||||||
programs.helium = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
policies = {
|
|
||||||
BrowserSignin = 0;
|
|
||||||
SyncDisabled = true;
|
|
||||||
SigninAllowed = false;
|
|
||||||
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
AutofillAddressEnabled = false;
|
|
||||||
AutofillCreditCardEnabled = false;
|
|
||||||
SafeBrowsingEnabled = false;
|
|
||||||
MetricsReportingEnabled = false;
|
|
||||||
SpellCheckServiceEnabled = false;
|
|
||||||
DefaultCookiesSetting = 1;
|
|
||||||
DefaultGeolocationSetting = 2;
|
|
||||||
DefaultNotificationsSetting = 2;
|
|
||||||
DefaultPopupsSetting = 2;
|
|
||||||
|
|
||||||
DefaultBrowserSettingEnabled = false;
|
|
||||||
DeveloperToolsAvailability = 1;
|
|
||||||
|
|
||||||
DnsOverHttpsMode = "secure";
|
|
||||||
DnsOverHttpsTemplates = "https://dns.quad9.net/dns-query";
|
|
||||||
|
|
||||||
DefaultSearchProviderEnabled = true;
|
|
||||||
DefaultSearchProviderName = "Startpage";
|
|
||||||
DefaultSearchProviderSearchURL = "https://www.startpage.com/do/search?q={searchTerms}";
|
|
||||||
DefaultSearchProviderSuggestURL = "https://www.startpage.com/do/suggest?q={searchTerms}";
|
|
||||||
|
|
||||||
NewTabPageLocation = "http://127.0.0.1:8888";
|
|
||||||
HomepageIsNewTabPage = false;
|
|
||||||
HomepageLocation = "http://127.0.0.1:8888";
|
|
||||||
ShowHomeButton = false;
|
|
||||||
RestoreOnStartup = 4;
|
|
||||||
|
|
||||||
BookmarkBarEnabled = false;
|
|
||||||
ManagedBookmarks = toChromium bookmarkList;
|
|
||||||
|
|
||||||
ExtensionInstallForcelist = [
|
|
||||||
"dbepggeogbaibhgnhhndojpepiihcmeb" # Vimiu
|
|
||||||
"gcknhkkoolaabfmlnjonogaaifnjlfnp" # FoxyProxy
|
|
||||||
"ghmbeldphafepmbegfdlkpapadhbakde" # Proton Pass
|
|
||||||
"mdjildafknihdffpkfmmpnpoiajfjnjd" # Consent-O-Matic
|
|
||||||
"pkehgijcmpdhfbdbbnkijodmdjhbjlgp" # Privacy Badger
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{inputs, ...}: {
|
|
||||||
imports = [inputs.nix-index-database.homeModules.default];
|
|
||||||
programs.nix-index.enable = true;
|
|
||||||
programs.nix-index-database.comma.enable = true;
|
|
||||||
}
|
|
||||||
@@ -5,27 +5,73 @@
|
|||||||
#- - `nixy` - UI wizard to manage the system.
|
#- - `nixy` - UI wizard to manage the system.
|
||||||
#- - `nixy rebuild` - Rebuild the system.
|
#- - `nixy rebuild` - Rebuild the system.
|
||||||
#- - `nixy ...` - ... see the script for more commands.
|
#- - `nixy ...` - ... see the script for more commands.
|
||||||
{
|
{ pkgs, config, ... }:
|
||||||
config,
|
let
|
||||||
lib,
|
configDirectory = config.var.configDirectory;
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.programs.nixy = {
|
|
||||||
enable = lib.mkEnableOption "nixy";
|
|
||||||
configDirectory = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "$HOME/.config/nixos";
|
|
||||||
description = "Path to the NixOS configuration directory";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.programs.nixy.enable {
|
nixy = pkgs.writeShellScriptBin "nixy"
|
||||||
home.packages = [
|
# bash
|
||||||
(import ./package.nix {
|
''
|
||||||
inherit pkgs;
|
function exec() {
|
||||||
inherit (config.programs.nixy) configDirectory;
|
$@
|
||||||
})
|
}
|
||||||
];
|
|
||||||
};
|
function ui(){
|
||||||
}
|
DEFAULT_ICON=""
|
||||||
|
|
||||||
|
# "icon;name;command"[]
|
||||||
|
apps=(
|
||||||
|
";Rebuild;nixy rebuild"
|
||||||
|
";Test;nixy test"
|
||||||
|
";Update;nixy update"
|
||||||
|
";Collect Garbage;nixy gc"
|
||||||
|
";Clean Boot Menu;nixy cb"
|
||||||
|
";List generation;nixy listgen"
|
||||||
|
";Hyprland Keybindings;nvim ${configDirectory}/docs/KEYBINDINGS-HYPRLAND.md"
|
||||||
|
";Wallpapers;zen https://github.com/anotherhadi/nixy-wallpapers"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Apply default icons if empty:
|
||||||
|
for i in "''${!apps[@]}"; do
|
||||||
|
apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/')
|
||||||
|
done
|
||||||
|
|
||||||
|
fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf)
|
||||||
|
[[ -z $fzf_result ]] && exit 0
|
||||||
|
fzf_result=''${fzf_result/ /;}
|
||||||
|
line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result")
|
||||||
|
command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//')
|
||||||
|
|
||||||
|
exec "$command"
|
||||||
|
exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $1 == "" ]] && ui
|
||||||
|
|
||||||
|
if [[ $1 == "rebuild" ]];then
|
||||||
|
cd ${configDirectory} && git add . && sudo nixos-rebuild switch --flake
|
||||||
|
elif [[ $1 == "test" ]];then
|
||||||
|
cd ${configDirectory} && git add . && sudo nixos-rebuild test --flake
|
||||||
|
elif [[ $1 == "update" ]];then
|
||||||
|
cd ${configDirectory} && nix flake update
|
||||||
|
elif [[ $1 == "gc" ]];then
|
||||||
|
echo "Starting Nix garbage collection..."
|
||||||
|
cd ${configDirectory} && \
|
||||||
|
echo "Cleaning up system garbage..." && \
|
||||||
|
sudo nix-collect-garbage -d && \
|
||||||
|
echo "Cleaning up user garbage..." && \
|
||||||
|
nix-collect-garbage -d && \
|
||||||
|
echo "Collecting garbage from Nix store..." && \
|
||||||
|
nix-store --gc && \
|
||||||
|
echo "Optimizing Nix store..." && \
|
||||||
|
nix-store --optimise
|
||||||
|
echo "Nix garbage collection complete."
|
||||||
|
elif [[ $1 == "cb" ]];then
|
||||||
|
sudo /run/current-system/bin/switch-to-configuration boot
|
||||||
|
elif [[ $1 == "listgen" ]];then
|
||||||
|
sudo nix-env -p /nix/var/nix/profiles/system --list-generations
|
||||||
|
else
|
||||||
|
echo "Unknown argument"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in { home.packages = [ nixy ]; }
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
packages.${system}.nixy = import ./package.nix {
|
|
||||||
inherit pkgs;
|
|
||||||
configDirectory = "$HOME/.config/nixos";
|
|
||||||
};
|
|
||||||
|
|
||||||
homeManagerModules.nixy = {
|
|
||||||
imports = [./default.nix];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
configDirectory,
|
|
||||||
}:
|
|
||||||
pkgs.writeShellScriptBin "nixy"
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
EXTRA_ARGS="''${@:2}"
|
|
||||||
|
|
||||||
function exec() {
|
|
||||||
$@
|
|
||||||
}
|
|
||||||
|
|
||||||
function ui(){
|
|
||||||
DEFAULT_ICON=""
|
|
||||||
|
|
||||||
# "icon;name;command"[]
|
|
||||||
apps=(
|
|
||||||
";Rebuild;nixy rebuild"
|
|
||||||
";Test;nixy test"
|
|
||||||
";Update;nixy update"
|
|
||||||
";Collect Garbage;nixy gc"
|
|
||||||
";Clean Boot Menu;nixy cb"
|
|
||||||
";List generation;nixy listgen"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Apply default icons if empty:
|
|
||||||
for i in "''${!apps[@]}"; do
|
|
||||||
apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/')
|
|
||||||
done
|
|
||||||
|
|
||||||
fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf)
|
|
||||||
[[ -z $fzf_result ]] && exit 0
|
|
||||||
fzf_result=''${fzf_result/ /;}
|
|
||||||
line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result")
|
|
||||||
command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//')
|
|
||||||
|
|
||||||
exec "$command"
|
|
||||||
exit $?
|
|
||||||
}
|
|
||||||
|
|
||||||
[[ $1 == "" ]] && ui
|
|
||||||
|
|
||||||
if [[ $1 == "rebuild" ]];then
|
|
||||||
cd ${configDirectory} && git add . && sudo nixos-rebuild switch --flake . $EXTRA_ARGS
|
|
||||||
elif [[ $1 == "test" ]];then
|
|
||||||
cd ${configDirectory} && git add . && sudo nixos-rebuild test --flake . $EXTRA_ARGS
|
|
||||||
elif [[ $1 == "update" ]];then
|
|
||||||
cd ${configDirectory} && nix flake update $EXTRA_ARGS
|
|
||||||
elif [[ $1 == "gc" ]];then
|
|
||||||
echo "Starting Nix garbage collection..."
|
|
||||||
cd ${configDirectory} && \
|
|
||||||
echo "Cleaning up system garbage..." && \
|
|
||||||
sudo nix-collect-garbage -d && \
|
|
||||||
echo "Cleaning up user garbage..." && \
|
|
||||||
nix-collect-garbage -d && \
|
|
||||||
echo "Collecting garbage from Nix store..." && \
|
|
||||||
nix-store --gc && \
|
|
||||||
echo "Optimizing Nix store..." && \
|
|
||||||
nix-store --optimise
|
|
||||||
echo "Nix garbage collection complete."
|
|
||||||
elif [[ $1 == "cb" ]];then
|
|
||||||
sudo /run/current-system/bin/switch-to-configuration boot
|
|
||||||
elif [[ $1 == "listgen" ]];then
|
|
||||||
sudo nix-env -p /nix/var/nix/profiles/system --list-generations
|
|
||||||
else
|
|
||||||
echo "Unknown argument"
|
|
||||||
fi
|
|
||||||
''
|
|
||||||
@@ -1,32 +1,25 @@
|
|||||||
|
# NVF is a Neovim configuration that provides a minimal setup with essential plugins and configurations.
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
c = config.lib.stylix.colors;
|
imports = [
|
||||||
in {
|
inputs.nvf.homeManagerModules.default
|
||||||
imports = [inputs.nvf.homeManagerModules.default];
|
./options.nix
|
||||||
|
./languages.nix
|
||||||
|
./picker.nix
|
||||||
|
./snacks.nix
|
||||||
|
./keymaps.nix
|
||||||
|
./utils.nix
|
||||||
|
./mini.nix
|
||||||
|
];
|
||||||
|
|
||||||
programs.nvf = {
|
programs.nvf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings.vim = {
|
||||||
vim.luaConfigRC.hl-overrides = ''
|
startPlugins = [
|
||||||
local function apply_hl()
|
pkgs.vimPlugins.vim-kitty-navigator
|
||||||
vim.api.nvim_set_hl(0, "MiniStarterHeader", { fg = "#${c.base0D}", bold = true })
|
|
||||||
vim.api.nvim_set_hl(0, "SnacksPickerBorder", { fg = "#${c.base0D}" })
|
|
||||||
vim.api.nvim_set_hl(0, "SnacksPickerTitle", { fg = "#${c.base0D}", bold = true })
|
|
||||||
end
|
|
||||||
apply_hl()
|
|
||||||
vim.api.nvim_create_autocmd("ColorScheme", { pattern = "*", callback = apply_hl })
|
|
||||||
'';
|
|
||||||
imports = [
|
|
||||||
./options.nix
|
|
||||||
./languages.nix
|
|
||||||
./picker.nix
|
|
||||||
./snacks.nix
|
|
||||||
./keymaps.nix
|
|
||||||
./utils.nix
|
|
||||||
./mini.nix
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
nvimConfig = inputs.nvf.lib.neovimConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
modules = [
|
|
||||||
./options.nix
|
|
||||||
./languages.nix
|
|
||||||
./picker.nix
|
|
||||||
./snacks.nix
|
|
||||||
./keymaps.nix
|
|
||||||
./utils.nix
|
|
||||||
./mini.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
packages.${system}.nvim = nvimConfig.neovim;
|
|
||||||
|
|
||||||
apps.${system}.nvim = {
|
|
||||||
type = "app";
|
|
||||||
program = "${nvimConfig.neovim}/bin/nvim";
|
|
||||||
};
|
|
||||||
defaultApp.${system} = {
|
|
||||||
type = "app";
|
|
||||||
program = "${nvimConfig.neovim}/bin/nvim";
|
|
||||||
};
|
|
||||||
|
|
||||||
homeManagerModules.nvim = {
|
|
||||||
imports = [
|
|
||||||
inputs.nvf.homeManagerModules.default
|
|
||||||
./default.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+55
-209
@@ -1,14 +1,21 @@
|
|||||||
{
|
{
|
||||||
vim = {
|
programs.nvf.settings.vim = {
|
||||||
globals.mapleader = " ";
|
globals.mapleader = " ";
|
||||||
|
binds = {
|
||||||
|
whichKey = {
|
||||||
|
enable = true;
|
||||||
|
# TODO: registers
|
||||||
|
register = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
keymaps = [
|
keymaps = [
|
||||||
|
# General Mappings
|
||||||
{
|
{
|
||||||
key = "s";
|
key = "s";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua MiniJump2d.start(MiniJump2d.builtin_opts.single_character)<cr>";
|
action = "<cmd>lua require('flash').jump()<cr>";
|
||||||
desc = "Jump2d";
|
desc = "Flash";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "K";
|
key = "K";
|
||||||
@@ -25,57 +32,60 @@
|
|||||||
desc = "Next Buffer";
|
desc = "Next Buffer";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Format
|
# Kitty navigator
|
||||||
{
|
{
|
||||||
key = "<leader>lf";
|
key = "<C-h>";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua require('conform').format({ async = true, lsp_format = 'fallback' })<cr>";
|
action = "<cmd>KittyNavigateLeft<cr>";
|
||||||
desc = "Format file";
|
}
|
||||||
|
{
|
||||||
|
key = "<C-j>";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>KittyNavigateDown<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<C-k>";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>KittyNavigateUp<cr>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<C-l>";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>KittyNavigateRight<cr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Terminal
|
# Disable Arrow Keys in Normal Mode
|
||||||
{
|
{
|
||||||
key = "<leader>tt";
|
key = "<Up>";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua Snacks.terminal.toggle()<cr>";
|
action = "<Nop>";
|
||||||
desc = "Toggle terminal";
|
desc = "Disable Up Arrow";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>tf";
|
key = "<Down>";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua Snacks.terminal.toggle(nil, { style = 'float' })<cr>";
|
action = "<Nop>";
|
||||||
desc = "Toggle terminal (float)";
|
desc = "Disable Down Arrow";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>tg";
|
key = "<Left>";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua Snacks.lazygit()<cr>";
|
action = "<Nop>";
|
||||||
desc = "Lazygit";
|
desc = "Disable Left Arrow";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>ts";
|
key = "<Right>";
|
||||||
mode = "v";
|
|
||||||
silent = true;
|
|
||||||
action = ":<C-u>SttrTransform<CR>";
|
|
||||||
desc = "String Transform";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<leader>tj";
|
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = ":JwtTui<CR>";
|
action = "<Nop>";
|
||||||
desc = "JWT TUI";
|
desc = "Disable Right Arrow";
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<leader>tj";
|
|
||||||
mode = "v";
|
|
||||||
silent = true;
|
|
||||||
action = ":<C-u>JwtTuiOpen<CR>";
|
|
||||||
desc = "JWT TUI";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# UI
|
# UI
|
||||||
@@ -136,191 +146,27 @@
|
|||||||
desc = "Hide tabline";
|
desc = "Hide tabline";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Todos
|
# Windows
|
||||||
{
|
{
|
||||||
key = "<leader>xt";
|
key = "<leader>ws";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>TodoTrouble<cr>";
|
action = "<cmd>split<cr>";
|
||||||
desc = "Todo (Trouble)";
|
desc = "Split";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Shell
|
|
||||||
{
|
{
|
||||||
key = "<leader>!";
|
key = "<leader>wv";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
lua = true;
|
action = "<cmd>vsplit<cr>";
|
||||||
desc = "Insert command output";
|
desc = "VSplit";
|
||||||
action = ''
|
|
||||||
function()
|
|
||||||
local cmd = vim.fn.input("Command: ")
|
|
||||||
if cmd == "" then return end
|
|
||||||
local lines = vim.fn.systemlist(cmd)
|
|
||||||
while #lines > 0 and lines[#lines] == "" do
|
|
||||||
table.remove(lines)
|
|
||||||
end
|
|
||||||
if #lines == 0 then return end
|
|
||||||
vim.api.nvim_put(lines, "l", true, true)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>!";
|
key = "<leader>wd";
|
||||||
mode = "v";
|
|
||||||
silent = true;
|
|
||||||
lua = true;
|
|
||||||
desc = "Run command with selection";
|
|
||||||
action = ''
|
|
||||||
function()
|
|
||||||
local start_line = vim.fn.line("'<")
|
|
||||||
local end_line = vim.fn.line("'>")
|
|
||||||
local lines = vim.api.nvim_buf_get_lines(0, start_line - 1, end_line, false)
|
|
||||||
local input_text = table.concat(lines, "\n")
|
|
||||||
|
|
||||||
local cmd = vim.fn.input("$ ")
|
|
||||||
if cmd == "" then return end
|
|
||||||
|
|
||||||
local result = vim.fn.system({"bash", "-c", cmd}, input_text)
|
|
||||||
local output = vim.split(result, "\n", { plain = true })
|
|
||||||
if output[#output] == "" then table.remove(output) end
|
|
||||||
if #output == 0 then return end
|
|
||||||
|
|
||||||
vim.api.nvim_buf_set_lines(0, start_line - 1, end_line, false, output)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
# QOL
|
|
||||||
{
|
|
||||||
key = ">";
|
|
||||||
mode = "v";
|
|
||||||
silent = true;
|
|
||||||
action = ">gv";
|
|
||||||
desc = "Indent and keep selection";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<";
|
|
||||||
mode = "v";
|
|
||||||
silent = true;
|
|
||||||
action = "<gv";
|
|
||||||
desc = "Dedent and keep selection";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Move
|
|
||||||
{
|
|
||||||
key = "<C-h>";
|
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<C-w>h";
|
action = "<cmd>close<cr>";
|
||||||
desc = "Move to left window";
|
desc = "Close";
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<C-j>";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<C-w>j";
|
|
||||||
desc = "Move to bottom window";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<C-k>";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<C-w>k";
|
|
||||||
desc = "Move to top window";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<C-l>";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<C-w>l";
|
|
||||||
desc = "Move to right window";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Save
|
|
||||||
{
|
|
||||||
key = "<C-s>";
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"i"
|
|
||||||
"v"
|
|
||||||
];
|
|
||||||
silent = true;
|
|
||||||
action = "<cmd>w<cr>";
|
|
||||||
desc = "Save file";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Deactivate "esc"
|
|
||||||
{
|
|
||||||
key = "<Esc>";
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"i"
|
|
||||||
"v"
|
|
||||||
];
|
|
||||||
silent = true;
|
|
||||||
action = "<Nop>";
|
|
||||||
desc = "Disable Escape";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Disable Arrow Keys in Normal Mode and Middle click
|
|
||||||
{
|
|
||||||
key = "<Up>";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<Nop>";
|
|
||||||
desc = "Disable Up Arrow";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<Down>";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<Nop>";
|
|
||||||
desc = "Disable Down Arrow";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<Left>";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<Nop>";
|
|
||||||
desc = "Disable Left Arrow";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<Right>";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<Nop>";
|
|
||||||
desc = "Disable Right Arrow";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<MiddleMouse>";
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"i"
|
|
||||||
"v"
|
|
||||||
];
|
|
||||||
action = "<nop>";
|
|
||||||
silent = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<2-MiddleMouse>";
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"i"
|
|
||||||
"v"
|
|
||||||
];
|
|
||||||
action = "<nop>";
|
|
||||||
silent = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<3-MiddleMouse>";
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"i"
|
|
||||||
"v"
|
|
||||||
];
|
|
||||||
action = "<nop>";
|
|
||||||
silent = true;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{...}: {
|
{
|
||||||
vim = {
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.nvf.settings.vim = {
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = {
|
config = {
|
||||||
@@ -13,33 +17,43 @@
|
|||||||
};
|
};
|
||||||
underline = true;
|
underline = true;
|
||||||
update_in_insert = true;
|
update_in_insert = true;
|
||||||
virtual_text = true;
|
virtual_text = {
|
||||||
|
format =
|
||||||
|
lib.generators.mkLuaInline
|
||||||
|
/*
|
||||||
|
lua
|
||||||
|
*/
|
||||||
|
''
|
||||||
|
function(diagnostic)
|
||||||
|
return string.format("%s", diagnostic.message)
|
||||||
|
--return string.format("%s (%s)", diagnostic.message, diagnostic.source)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
nvim-lint = {
|
nvim-lint = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
syntaxHighlighting = true;
|
||||||
treesitter = {
|
treesitter = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autotagHtml = true;
|
autotagHtml = true;
|
||||||
context.enable = true;
|
context.enable = true;
|
||||||
highlight.enable = true;
|
highlight.enable = true;
|
||||||
textobjects.enable = true;
|
grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
||||||
|
typescript # in language settings only tsx gets enabled, not typescript
|
||||||
|
];
|
||||||
};
|
};
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
presets = {
|
|
||||||
tailwindcss-language-server = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
trouble.enable = true;
|
trouble.enable = true;
|
||||||
lspSignature.enable = true;
|
lspSignature.enable = true;
|
||||||
lspconfig.enable = true;
|
lspconfig.enable = true;
|
||||||
formatOnSave = false;
|
formatOnSave = true;
|
||||||
mappings.format = null;
|
|
||||||
inlayHints.enable = true;
|
inlayHints.enable = true;
|
||||||
servers.nil.settings.nix.autoArchive = true;
|
null-ls.enable = true;
|
||||||
|
servers.nixd.settings.nil.nix.autoArchive = true;
|
||||||
otter-nvim = {
|
otter-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setupOpts = {
|
setupOpts = {
|
||||||
@@ -63,22 +77,16 @@
|
|||||||
sign = false;
|
sign = false;
|
||||||
virtual_text = true;
|
virtual_text = true;
|
||||||
};
|
};
|
||||||
symbol_in_winbar.enable = false;
|
breadcrumbs.enable = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
languages = {
|
languages = {
|
||||||
|
enableDAP = true;
|
||||||
enableExtraDiagnostics = true;
|
enableExtraDiagnostics = true;
|
||||||
enableFormat = true;
|
enableFormat = true;
|
||||||
enableTreesitter = true;
|
enableTreesitter = true;
|
||||||
|
|
||||||
python = {
|
|
||||||
enable = true;
|
|
||||||
lsp = {
|
|
||||||
enable = true;
|
|
||||||
servers = ["pyright"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
astro.enable = true;
|
astro.enable = true;
|
||||||
go.enable = true;
|
go.enable = true;
|
||||||
markdown = {
|
markdown = {
|
||||||
@@ -87,29 +95,24 @@
|
|||||||
extensions = {
|
extensions = {
|
||||||
markview-nvim = {
|
markview-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setupOpts = {
|
|
||||||
preview = {
|
|
||||||
hybrid_modes = ["n"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraDiagnostics.enable = true;
|
extraDiagnostics.enable = true;
|
||||||
};
|
};
|
||||||
typescript.enable = true;
|
ts = {
|
||||||
|
enable = true;
|
||||||
|
extensions.ts-error-translator.enable = true;
|
||||||
|
};
|
||||||
css.enable = true;
|
css.enable = true;
|
||||||
svelte.enable = true;
|
svelte.enable = true;
|
||||||
html.enable = true;
|
html.enable = true;
|
||||||
bash.enable = true;
|
bash.enable = true;
|
||||||
nix.enable = true;
|
nix.enable = true;
|
||||||
lua.enable = true;
|
tailwind.enable = true;
|
||||||
};
|
};
|
||||||
formatter = {
|
formatter = {
|
||||||
conform-nvim = {
|
conform-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setupOpts.format_on_save = {
|
|
||||||
lsp_format = "fallback";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,100 +1,13 @@
|
|||||||
{lib, ...}: {
|
{
|
||||||
vim.luaConfigRC.mini-clue = ''
|
programs.nvf.settings.vim.mini = {
|
||||||
local miniclue = require('mini.clue')
|
starter.enable = true;
|
||||||
miniclue.setup({
|
|
||||||
triggers = {
|
|
||||||
{ mode = 'n', keys = '<Leader>' },
|
|
||||||
{ mode = 'x', keys = '<Leader>' },
|
|
||||||
{ mode = 'n', keys = 'g' },
|
|
||||||
{ mode = 'x', keys = 'g' },
|
|
||||||
{ mode = 'n', keys = "'" },
|
|
||||||
{ mode = 'n', keys = '`' },
|
|
||||||
{ mode = 'n', keys = '"' },
|
|
||||||
{ mode = 'i', keys = '<C-r>' },
|
|
||||||
{ mode = 'c', keys = '<C-r>' },
|
|
||||||
{ mode = 'n', keys = '<C-w>' },
|
|
||||||
{ mode = 'n', keys = 'z' },
|
|
||||||
},
|
|
||||||
clues = {
|
|
||||||
miniclue.gen_clues.g(),
|
|
||||||
miniclue.gen_clues.marks(),
|
|
||||||
miniclue.gen_clues.registers(),
|
|
||||||
miniclue.gen_clues.windows({ submode_resize = true }),
|
|
||||||
miniclue.gen_clues.z(),
|
|
||||||
{ mode = 'n', keys = '<Leader>f', desc = '+find' },
|
|
||||||
{ mode = 'n', keys = '<Leader>s', desc = '+search' },
|
|
||||||
{ mode = 'n', keys = '<Leader>t', desc = '+terminal' },
|
|
||||||
{ mode = 'n', keys = '<Leader>u', desc = '+ui' },
|
|
||||||
{ mode = 'n', keys = '<Leader>l', desc = '+lsp' },
|
|
||||||
{ mode = 'n', keys = '<Leader>x', desc = '+trouble' },
|
|
||||||
{ mode = 'n', keys = '<Leader>!', desc = 'shell' },
|
|
||||||
{ mode = 'v', keys = '<Leader>!', desc = 'shell' },
|
|
||||||
{ mode = 'n', keys = '<Leader>e', desc = 'yazi' },
|
|
||||||
},
|
|
||||||
window = { delay = 300 },
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
|
|
||||||
vim.mini = {
|
|
||||||
ai.enable = true;
|
|
||||||
starter = {
|
|
||||||
enable = true;
|
|
||||||
setupOpts = {
|
|
||||||
header = ''
|
|
||||||
⣟⣯⣟⣯⡇⠀⣿⢩⣛⡼⣏⠀⠈⠋⠀⣈⡷⣙⢎⡳⣙⢮⣙⢮⣙⢎⡳⣙⢾⣿
|
|
||||||
⢿⡾⣽⡞⣷⣤⣏⡳⡜⡼⠗⠁⢀⠀⠙⢧⠳⣍⢞⡱⣭⠲⣍⠶⣩⢞⡱⡭⣾⣿
|
|
||||||
⠈⠻⠧⢿⣧⣿⠶⣵⢻⢞⡷⢲⡟⡶⢴⡭⢿⣜⣮⡱⢎⡳⣍⢞⡱⢮⡱⣳⣿⣽
|
|
||||||
⠀⣰⣶⡏⢷⣈⣿⣸⣇⣾⣸⣿⣾⣹⣆⡹⡎⡶⢇⡿⣹⢷⣾⣈⠷⣇⢷⣿⣿⣹
|
|
||||||
⣾⣻⣭⣿⣾⣿⣿⣟⣿⣿⡿⣽⡿⣿⢿⣿⣿⣿⣾⣶⣵⣾⠲⣭⢳⣞⣾⡿⣷⣿
|
|
||||||
⣿⣿⣿⣯⣷⣿⣿⠿⢝⠚⠋⠉⠉⠉⠙⠚⠛⡾⢿⣿⣻⣿⣿⣶⣏⠶⣩⠿⣿⡈
|
|
||||||
⣿⣟⣿⣻⣿⡏⠀⠀⠀⠳⡀⠀⠀⠀⠀⠰⠊⠀⠀⠈⠙⠳⣿⣿⣿⣿⣧⣻⣿⣿
|
|
||||||
⠘⢻⣿⣿⣽⡇⠈⠧⣄⠀⠀⠀⠀⠀⠀⢀⣄⡤⠴⠚⠀⠀⠀⠙⢿⣷⡿⣿⣿⣿
|
|
||||||
⠀⠠⢈⢛⣿⠀⠚⠉⠉⠱⣼⡷⠀⠀⠀⠀⠉⠉⠑⠶⠀⠀⠀⠀⠀⠻⣿⣿⣾⢿
|
|
||||||
⠀⠡⠈⠉⠹⡀⠀⠀⡄⠀⣸⡀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣯⣿⢿
|
|
||||||
⠀⠁⢶⣶⠀⢷⠀⠀⠉⠉⠀⠈⠉⠶⠆⠈⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣾⣿
|
|
||||||
⠀⠡⢸⢹⠏⡍⠓⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣺⡟⠋⠉⢹⢭⢣
|
|
||||||
⠀⠀⢸⣹⡏⠭⠭⠭⠙⣲⣦⣤⣤⣀⣀⣀⣀⣤⣤⣶⣞⠉⠙⠛⠷⢀⣀⠘⣎⠧
|
|
||||||
⢁⣈⣀⣀⢀⣀⣀⣀⣼⠟⠹⢿⣯⣟⣿⣻⡿⠿⠛⢿⣿⣦⡀⠀⠀⠀⠀⠉⠉⠘
|
|
||||||
'';
|
|
||||||
footer = "";
|
|
||||||
items = [
|
|
||||||
{
|
|
||||||
name = "files";
|
|
||||||
action = lib.mkLuaInline "function() Snacks.picker.files() end";
|
|
||||||
section = "";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "directories";
|
|
||||||
action = lib.mkLuaInline "function() Snacks.explorer() end";
|
|
||||||
section = "";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "tmp";
|
|
||||||
action = lib.mkLuaInline ''
|
|
||||||
function()
|
|
||||||
local uuid = vim.fn.system("uuidgen"):match("(%S+)")
|
|
||||||
vim.cmd("edit /tmp/" .. uuid .. ".md")
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
section = "";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "recent";
|
|
||||||
action = lib.mkLuaInline "function() Snacks.picker.recent() end";
|
|
||||||
section = "";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
comment.enable = true;
|
comment.enable = true;
|
||||||
|
# cursorword.enable = true;
|
||||||
icons.enable = true;
|
icons.enable = true;
|
||||||
indentscope.enable = true;
|
indentscope.enable = true;
|
||||||
|
notify.enable = true;
|
||||||
pairs.enable = true;
|
pairs.enable = true;
|
||||||
diff.enable = true;
|
diff.enable = true;
|
||||||
git.enable = true;
|
git.enable = true;
|
||||||
jump2d.enable = true;
|
|
||||||
statusline.enable = true;
|
|
||||||
clue.enable = true;
|
|
||||||
surround.enable = true;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
{lib, ...}: {
|
{lib, ...}: {
|
||||||
vim = {
|
programs.nvf.settings.vim = {
|
||||||
viAlias = false;
|
viAlias = false;
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
withNodeJs = true;
|
withNodeJs = true;
|
||||||
|
# syntaxHighlighting = true;
|
||||||
options = {
|
options = {
|
||||||
autoindent = true;
|
autoindent = true;
|
||||||
smartindent = true;
|
smartindent = true;
|
||||||
@@ -17,24 +18,18 @@
|
|||||||
softtabstop = 2;
|
softtabstop = 2;
|
||||||
wrap = false;
|
wrap = false;
|
||||||
};
|
};
|
||||||
globals.navic_silence = true;
|
globals = {
|
||||||
|
navic_silence = true; # navic tries to attach multiple LSPs and fails
|
||||||
|
suda_smart_edit = 1; # use super user write automatically
|
||||||
|
neovide_scale_factor = 0.7;
|
||||||
|
neovide_cursor_animation_length = 0.1;
|
||||||
|
neovide_cursor_short_animation_length = 0;
|
||||||
|
};
|
||||||
clipboard = {
|
clipboard = {
|
||||||
enable = true;
|
enable = true;
|
||||||
registers = "unnamedplus";
|
registers = "unnamedplus";
|
||||||
|
providers.wl-copy.enable = true;
|
||||||
};
|
};
|
||||||
luaConfigRC.osc52-clipboard = ''
|
|
||||||
vim.g.clipboard = {
|
|
||||||
name = 'OSC 52',
|
|
||||||
copy = {
|
|
||||||
['+'] = require('vim.ui.clipboard.osc52').copy '+',
|
|
||||||
['*'] = require('vim.ui.clipboard.osc52').copy '*',
|
|
||||||
},
|
|
||||||
paste = {
|
|
||||||
['+'] = require('vim.ui.clipboard.osc52').paste '+',
|
|
||||||
['*'] = require('vim.ui.clipboard.osc52').paste '*',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
theme = {
|
theme = {
|
||||||
enable = true;
|
enable = true;
|
||||||
name = lib.mkForce "catppuccin";
|
name = lib.mkForce "catppuccin";
|
||||||
|
|||||||
+110
-15
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
vim = {
|
programs.nvf.settings.vim = {
|
||||||
utility = {
|
utility = {
|
||||||
|
oil-nvim.enable = true;
|
||||||
snacks-nvim = {
|
snacks-nvim = {
|
||||||
setupOpts = {
|
setupOpts = {
|
||||||
picker.enabled = true;
|
picker.enabled = true;
|
||||||
@@ -18,18 +19,39 @@
|
|||||||
desc = "Smart Find Files";
|
desc = "Smart Find Files";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>E";
|
key = "<leader>,";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.buffers()<cr>";
|
||||||
|
desc = "Buffers";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>/";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.grep()<cr>";
|
||||||
|
desc = "Grep";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>:";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.command_history()<cr>";
|
||||||
|
desc = "Command History";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>e";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua Snacks.explorer()<cr>";
|
action = "<cmd>lua Snacks.explorer()<cr>";
|
||||||
desc = "File Explorer";
|
desc = "File Explorer";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>/";
|
key = "-";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua Snacks.picker.lines()<cr>";
|
action = "<cmd>Oil<cr>";
|
||||||
desc = "Buffer Lines";
|
desc = "Oil";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Find
|
# Find
|
||||||
@@ -40,6 +62,14 @@
|
|||||||
action = "<cmd>lua Snacks.picker.buffers()<cr>";
|
action = "<cmd>lua Snacks.picker.buffers()<cr>";
|
||||||
desc = "Buffers";
|
desc = "Buffers";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>fc";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = ''
|
||||||
|
<cmd>lua Snacks.picker.files({ cwd = vim.fn.stdpath("config") })<cr>'';
|
||||||
|
desc = "Find Config File";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>ff";
|
key = "<leader>ff";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
@@ -47,6 +77,13 @@
|
|||||||
action = "<cmd>lua Snacks.picker.files()<cr>";
|
action = "<cmd>lua Snacks.picker.files()<cr>";
|
||||||
desc = "Find Files";
|
desc = "Find Files";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>fg";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.git_files()<cr>";
|
||||||
|
desc = "Find Git Files";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>fp";
|
key = "<leader>fp";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
@@ -61,13 +98,6 @@
|
|||||||
action = "<cmd>lua Snacks.picker.recent()<cr>";
|
action = "<cmd>lua Snacks.picker.recent()<cr>";
|
||||||
desc = "Recent";
|
desc = "Recent";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
key = "<leader>f:";
|
|
||||||
mode = "n";
|
|
||||||
silent = true;
|
|
||||||
action = "<cmd>lua Snacks.picker.command_history()<cr>";
|
|
||||||
desc = "Command History";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
key = "<leader>fn";
|
key = "<leader>fn";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
@@ -75,14 +105,65 @@
|
|||||||
action = "<cmd>lua Snacks.picker.notifications()<cr>";
|
action = "<cmd>lua Snacks.picker.notifications()<cr>";
|
||||||
desc = "Notification History";
|
desc = "Notification History";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>fe";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.icons()<cr>";
|
||||||
|
desc = "Emoji";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Git
|
||||||
|
{
|
||||||
|
key = "<leader>gb";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.git_branches()<cr>";
|
||||||
|
desc = "Git Branches";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>gL";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.git_log()<cr>";
|
||||||
|
desc = "Git Log Line";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>gs";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.git_status()<cr>";
|
||||||
|
desc = "Git Status";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>gS";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.git_stash()<cr>";
|
||||||
|
desc = "Git Stash";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>gd";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.git_diff()<cr>";
|
||||||
|
desc = "Git Diff (Hunks)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>gf";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.git_log_file()<cr>";
|
||||||
|
desc = "Git Log File";
|
||||||
|
}
|
||||||
|
|
||||||
# Grep
|
# Grep
|
||||||
{
|
{
|
||||||
key = "<leader>sg";
|
key = "<leader>sb";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>lua Snacks.picker.grep()<cr>";
|
action = "<cmd>lua Snacks.picker.lines()<cr>";
|
||||||
desc = "Grep";
|
desc = "Buffer Lines";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>st";
|
key = "<leader>st";
|
||||||
@@ -91,6 +172,20 @@
|
|||||||
action = "<cmd>lua Snacks.picker.todo_comments()<cr>";
|
action = "<cmd>lua Snacks.picker.todo_comments()<cr>";
|
||||||
desc = "Todos";
|
desc = "Todos";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>sB";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.grep_buffers()<cr>";
|
||||||
|
desc = "Grep Open Buffers";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<leader>sg";
|
||||||
|
mode = "n";
|
||||||
|
silent = true;
|
||||||
|
action = "<cmd>lua Snacks.picker.grep()<cr>";
|
||||||
|
desc = "Grep";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>sw";
|
key = "<leader>sw";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
{
|
{
|
||||||
vim.utility.snacks-nvim = {
|
programs.nvf.settings.vim.utility.snacks-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setupOpts = {
|
setupOpts = {
|
||||||
|
image = {
|
||||||
|
enabled = true;
|
||||||
|
doc = {
|
||||||
|
inline = false;
|
||||||
|
float = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
quickfile.enabled = true;
|
quickfile.enabled = true;
|
||||||
statuscolumn.enabled = true;
|
statuscolumn.enabled = true;
|
||||||
zen.enabled = true;
|
zen.enabled = true;
|
||||||
bufdelete.enabled = true;
|
bufdelete.enabled = true;
|
||||||
gitsigns.enabled = true;
|
gitsigns.enabled = true;
|
||||||
animate.enabled = true;
|
|
||||||
lazygit = {
|
|
||||||
enabled = true;
|
|
||||||
configure = false;
|
|
||||||
};
|
|
||||||
terminal.enabled = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-39
@@ -1,25 +1,24 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
vim = {
|
programs.nvf.settings.vim = {
|
||||||
luaConfigRC.remove-todo-keymaps = ''
|
|
||||||
vim.keymap.del("n", "<leader>tdq")
|
|
||||||
vim.keymap.del("n", "<leader>tdt")
|
|
||||||
'';
|
|
||||||
undoFile.enable = true;
|
undoFile.enable = true;
|
||||||
utility.yazi-nvim = {
|
utility = {
|
||||||
enable = true;
|
motion.flash-nvim.enable = true;
|
||||||
mappings.openYazi = "<leader>e";
|
outline.aerial-nvim.enable = true;
|
||||||
};
|
};
|
||||||
|
tabline.nvimBufferline.enable = true;
|
||||||
notes.todo-comments.enable = true;
|
notes.todo-comments.enable = true;
|
||||||
assistant.copilot = {
|
assistant.copilot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
cmp.enable = true;
|
cmp.enable = true;
|
||||||
};
|
};
|
||||||
|
statusline.lualine.enable = true;
|
||||||
|
|
||||||
autocomplete = {
|
autocomplete = {
|
||||||
nvim-cmp = {
|
nvim-cmp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
sources = {
|
sources = {
|
||||||
buffer = "[Buffer]";
|
buffer = "[Buffer]";
|
||||||
|
nvim-cmp = null;
|
||||||
path = "[Path]";
|
path = "[Path]";
|
||||||
};
|
};
|
||||||
sourcePlugins = [
|
sourcePlugins = [
|
||||||
@@ -33,39 +32,21 @@
|
|||||||
noice.enable = true;
|
noice.enable = true;
|
||||||
colorizer.enable = true;
|
colorizer.enable = true;
|
||||||
};
|
};
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
gitsigns.enable = true;
|
||||||
|
};
|
||||||
|
terminal.toggleterm = {
|
||||||
|
enable = true;
|
||||||
|
lazygit = {
|
||||||
|
enable = true;
|
||||||
|
mappings.open = "<leader>gl";
|
||||||
|
};
|
||||||
|
};
|
||||||
visuals = {
|
visuals = {
|
||||||
rainbow-delimiters.enable = true;
|
rainbow-delimiters.enable = true;
|
||||||
};
|
nvim-scrollbar = {
|
||||||
|
enable = false;
|
||||||
extraPlugins = {
|
|
||||||
sttr-nvim = {
|
|
||||||
package = pkgs.vimUtils.buildVimPlugin {
|
|
||||||
name = "sttr-nvim";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "anotherhadi";
|
|
||||||
repo = "sttr.nvim";
|
|
||||||
rev = "b41f2f51372222e23efbe5df9d72391cd933d4d1";
|
|
||||||
hash = "sha256-JPv0NNNUUNPNJM5LHYjcmTvilbOKB3OxI2Q6wxVbTks=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
setup = ''
|
|
||||||
require("sttr").setup()
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
jwt-tui-nvim = {
|
|
||||||
package = pkgs.vimUtils.buildVimPlugin {
|
|
||||||
name = "jwt-tui-nvim";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "anotherhadi";
|
|
||||||
repo = "jwt-tui.nvim";
|
|
||||||
rev = "c5100cb2cdfaf333014076a1a5c4c6a778bf3983";
|
|
||||||
hash = "sha256-qnQYZuQwyWkezhuyOorM67KBtatUboubofuT9A6McJI=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
setup = ''
|
|
||||||
require("jwt-tui").setup()
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
|
||||||
"protonvpn-app --start-minimized &"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,6 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
proton-vpn
|
protonvpn-gui
|
||||||
proton-pass
|
proton-pass
|
||||||
proton-authenticator
|
proton-authenticator
|
||||||
];
|
];
|
||||||
@@ -19,21 +15,5 @@
|
|||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
terminal = false;
|
terminal = false;
|
||||||
};
|
};
|
||||||
"Proton Calendar" = {
|
|
||||||
name = "Proton Calendar";
|
|
||||||
exec = ''${config.programs.helium.package}/bin/helium "https://calendar.proton.me"'';
|
|
||||||
icon = "proton-calendar";
|
|
||||||
type = "Application";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
"Proton Mail" = {
|
|
||||||
name = "Proton Mail";
|
|
||||||
exec = ''${config.programs.helium.package}/bin/helium "https://mail.proton.me/"'';
|
|
||||||
icon = "proton-mail";
|
|
||||||
type = "Application";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
# Import all shell configurations
|
# Import all shell configurations
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [./fzf.nix ./zsh.nix ./starship.nix ./zoxide.nix ./eza.nix];
|
||||||
./fzf.nix
|
|
||||||
./zsh.nix
|
|
||||||
./starship.nix
|
|
||||||
./zoxide.nix
|
|
||||||
./eza.nix
|
|
||||||
./direnv.nix
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -20,9 +20,7 @@ in {
|
|||||||
"$git_status"
|
"$git_status"
|
||||||
"$character"
|
"$character"
|
||||||
];
|
];
|
||||||
directory = {
|
directory = {style = accent;};
|
||||||
style = accent;
|
|
||||||
};
|
|
||||||
|
|
||||||
character = {
|
character = {
|
||||||
success_symbol = "[❯](${accent})";
|
success_symbol = "[❯](${accent})";
|
||||||
|
|||||||
+64
-57
@@ -4,33 +4,21 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
home.packages = with pkgs; [
|
fetch = config.theme.fetch; # neofetch, nerdfetch, pfetch
|
||||||
bat
|
in {
|
||||||
ripgrep
|
home.packages = with pkgs; [bat ripgrep tldr sesh];
|
||||||
];
|
|
||||||
|
|
||||||
# Add go binaries to the PATH
|
# Add go binaries to the PATH
|
||||||
home.sessionPath = ["$HOME/go/bin"];
|
home.sessionPath = ["$HOME/go/bin"];
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
COLORTERM = "truecolor";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
syntaxHighlighting = {
|
syntaxHighlighting = {
|
||||||
enable = true;
|
enable = true;
|
||||||
highlighters = [
|
highlighters = ["main" "brackets" "pattern" "regexp" "root" "line"];
|
||||||
"main"
|
|
||||||
"brackets"
|
|
||||||
"pattern"
|
|
||||||
"regexp"
|
|
||||||
"root"
|
|
||||||
"line"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
historySubstringSearch.enable = true;
|
historySubstringSearch.enable = true;
|
||||||
|
|
||||||
@@ -41,27 +29,35 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
profileExtra = lib.optionalString (config.home.sessionPath != []) ''
|
profileExtra = lib.optionalString (config.home.sessionPath != []) ''
|
||||||
export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}"
|
export PATH="$PATH''${PATH:+:}${
|
||||||
|
lib.concatStringsSep ":" config.home.sessionPath
|
||||||
|
}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
# Change default
|
|
||||||
vim = "nvim";
|
vim = "nvim";
|
||||||
vi = "nvim";
|
vi = "nvim";
|
||||||
|
v = "nvim";
|
||||||
|
c = "clear";
|
||||||
|
clera = "clear";
|
||||||
|
celar = "clear";
|
||||||
|
e = "exit";
|
||||||
cd = "z";
|
cd = "z";
|
||||||
ls = "eza --icons=always --no-quotes";
|
ls = "eza --icons=always --no-quotes";
|
||||||
tree = "eza --icons=always --tree --no-quotes";
|
tree = "eza --icons=always --tree --no-quotes";
|
||||||
|
sl = "ls";
|
||||||
|
open = "${pkgs.xdg-utils}/bin/xdg-open";
|
||||||
|
icat = "${pkgs.kitty}/bin/kitty +kitten icat";
|
||||||
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
|
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
|
||||||
mkdir = "mkdir -p";
|
mkdir = "mkdir -p";
|
||||||
|
|
||||||
# Shortcuts
|
obsidian-no-gpu = "env ELECTRON_OZONE_PLATFORM_HINT=auto obsidian --ozone-platform=x11";
|
||||||
spt = "spotatui";
|
wireguard-import = "nmcli connection import type wireguard file";
|
||||||
v = "nvim";
|
|
||||||
c = "clear";
|
|
||||||
e = "exit";
|
|
||||||
open = "${pkgs.xdg-utils}/bin/xdg-open";
|
|
||||||
|
|
||||||
notes = "nvim ~/notes/index.md --cmd 'cd ~/notes' -c ':lua Snacks.picker.smart()'";
|
notes = "nvim ~/notes/index.md --cmd 'cd ~/notes' -c ':lua Snacks.picker.smart()'";
|
||||||
|
note = "notes";
|
||||||
|
tmp = "nvim /tmp/$(date | sed 's/ //g;s/\\.//g').md";
|
||||||
|
|
||||||
nix-shell = "nix-shell --command zsh";
|
nix-shell = "nix-shell --command zsh";
|
||||||
|
|
||||||
# git
|
# git
|
||||||
@@ -78,41 +74,59 @@
|
|||||||
gbr = "git branch";
|
gbr = "git branch";
|
||||||
grs = "git reset HEAD~1";
|
grs = "git reset HEAD~1";
|
||||||
grh = "git reset --hard HEAD~1";
|
grh = "git reset --hard HEAD~1";
|
||||||
|
|
||||||
gaa = "git add .";
|
gaa = "git add .";
|
||||||
gcm = "git commit -m";
|
gcm = "git commit -m";
|
||||||
|
|
||||||
# Typo
|
|
||||||
clera = "clear";
|
|
||||||
celar = "clear";
|
|
||||||
claer = "clear";
|
|
||||||
sl = "ls";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
initContent =
|
initContent =
|
||||||
# bash
|
# bash
|
||||||
''
|
''
|
||||||
bindkey -e
|
bindkey -e
|
||||||
|
${
|
||||||
|
if fetch == "neofetch"
|
||||||
|
then pkgs.neofetch + "/bin/neofetch"
|
||||||
|
else if fetch == "nerdfetch"
|
||||||
|
then "nerdfetch"
|
||||||
|
else if fetch == "pfetch"
|
||||||
|
then "echo; ${pkgs.pfetch}/bin/pfetch"
|
||||||
|
else ""
|
||||||
|
}
|
||||||
|
|
||||||
# Open command in VIM
|
function sesh-sessions() {
|
||||||
autoload -Uz edit-command-line
|
session=$(sesh list -t -c | fzf --height 70% --reverse)
|
||||||
zle -N edit-command-line
|
[[ -z "$session" ]] && return
|
||||||
bindkey '^X' edit-command-line
|
sesh connect $session
|
||||||
|
}
|
||||||
|
|
||||||
# Suffix Aliases
|
function chatgptfolder(){
|
||||||
alias -s {nix,md,txt,json,yml,yaml,go}=nvim
|
echo "################################"
|
||||||
alias -s {png,jpg,jpeg,gif,pdf}=xdg-open
|
echo "### TREE ###"
|
||||||
|
echo "################################"
|
||||||
|
${pkgs.eza}/bin/eza --tree -aF --icons never
|
||||||
|
echo -e "\n\n"
|
||||||
|
echo "##############################"
|
||||||
|
echo "### CONTENT ###"
|
||||||
|
echo "##############################"
|
||||||
|
find . -type f -not -path '*/.git/*' -print0 | while IFS= read -r -d "" file; do
|
||||||
|
echo -e "\n--- DEBUT: $file ---\n"
|
||||||
|
cat "$file"
|
||||||
|
echo -e "\n--- FIN: $file ---\n"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# 3. Global Aliases (Remplacés n'importe où dans la commande, pas seulement au début)
|
|
||||||
alias -g G="| grep"
|
function n4c() {
|
||||||
alias -g L="| less"
|
category=''${1:-all}
|
||||||
alias -g V="| nvim"
|
shift
|
||||||
alias -g H="| head"
|
args=''${*}
|
||||||
alias -g T="| tail"
|
nix develop "github:nix4cyber/n4c#''${category}" ''${args} -c zsh
|
||||||
alias -g JQ="| jq"
|
}
|
||||||
alias -g C="| wl-copy"
|
|
||||||
alias -g NE="2>/dev/null"
|
zle -N sesh-sessions
|
||||||
alias -g ND=">/dev/null"
|
bindkey -M emacs '\es' sesh-sessions
|
||||||
alias -g NUL=">/dev/null 2>1"
|
bindkey -M vicmd '\es' sesh-sessions
|
||||||
|
bindkey -M viins '\es' sesh-sessions
|
||||||
|
|
||||||
# search history based on what's typed in the prompt
|
# search history based on what's typed in the prompt
|
||||||
autoload -U history-search-end
|
autoload -U history-search-end
|
||||||
@@ -153,7 +167,7 @@
|
|||||||
# Colors
|
# Colors
|
||||||
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
||||||
|
|
||||||
# Case insensitive tab completion
|
# case insensitive tab completion
|
||||||
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||||
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
|
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
|
||||||
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
|
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
|
||||||
@@ -169,13 +183,6 @@
|
|||||||
zstyle ':completion:complete:*:options' sort false
|
zstyle ':completion:complete:*:options' sort false
|
||||||
zstyle ':completion:files' sort false
|
zstyle ':completion:files' sort false
|
||||||
|
|
||||||
autoload zmv
|
|
||||||
|
|
||||||
hash -d dl=~/Downloads
|
|
||||||
hash -d ni=~/.config/nixos
|
|
||||||
hash -d de=~/dev
|
|
||||||
hash -d cy=~/Cyber
|
|
||||||
|
|
||||||
${lib.optionalString config.services.gpg-agent.enable ''
|
${lib.optionalString config.services.gpg-agent.enable ''
|
||||||
gnupg_path=$(ls $XDG_RUNTIME_DIR/gnupg)
|
gnupg_path=$(ls $XDG_RUNTIME_DIR/gnupg)
|
||||||
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/$gnupg_path/S.gpg-agent.ssh"
|
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/$gnupg_path/S.gpg-agent.ssh"
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Spicetify is a spotify client customizer
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
accent = "${config.lib.stylix.colors.base0D}";
|
||||||
|
background = "${config.lib.stylix.colors.base00}";
|
||||||
|
in {
|
||||||
|
imports = [inputs.spicetify-nix.homeManagerModules.default];
|
||||||
|
|
||||||
|
stylix.targets.spicetify.enable = false;
|
||||||
|
|
||||||
|
programs.spicetify = {
|
||||||
|
enable = true;
|
||||||
|
theme = lib.mkForce spicePkgs.themes.dribbblish;
|
||||||
|
|
||||||
|
colorScheme = "custom";
|
||||||
|
|
||||||
|
customColorScheme = {
|
||||||
|
button = accent;
|
||||||
|
button-active = accent;
|
||||||
|
tab-active = accent;
|
||||||
|
player = background;
|
||||||
|
main = background;
|
||||||
|
sidebar = background;
|
||||||
|
};
|
||||||
|
|
||||||
|
enabledExtensions = with spicePkgs.extensions; [
|
||||||
|
playlistIcons
|
||||||
|
lastfm
|
||||||
|
historyShortcut
|
||||||
|
hidePodcasts
|
||||||
|
adblock
|
||||||
|
fullAppDisplay
|
||||||
|
keyboardShortcut
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
# Spotatui is a terminal user interface for Spotify, written in Rust. It allows you to control your Spotify playback and manage your playlists directly from the terminal.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
c = config.lib.stylix.colors;
|
|
||||||
rgb = base: "${c."${base}-rgb-r"}, ${c."${base}-rgb-g"}, ${c."${base}-rgb-b"}";
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
spotatui
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file.".config/spotatui/config.yml".text = ''
|
|
||||||
keybindings:
|
|
||||||
back: q
|
|
||||||
next_page: ctrl-d
|
|
||||||
previous_page: ctrl-u
|
|
||||||
jump_to_start: ctrl-a
|
|
||||||
jump_to_end: ctrl-e
|
|
||||||
jump_to_album: a
|
|
||||||
jump_to_artist_album: A
|
|
||||||
jump_to_context: o
|
|
||||||
manage_devices: d
|
|
||||||
decrease_volume: '-'
|
|
||||||
increase_volume: +
|
|
||||||
toggle_playback: space
|
|
||||||
seek_backwards: <
|
|
||||||
seek_forwards: '>'
|
|
||||||
next_track: n
|
|
||||||
previous_track: p
|
|
||||||
force_previous_track: P
|
|
||||||
help: '?'
|
|
||||||
shuffle: ctrl-s
|
|
||||||
repeat: ctrl-r
|
|
||||||
search: /
|
|
||||||
submit: enter
|
|
||||||
copy_song_url: c
|
|
||||||
copy_album_url: C
|
|
||||||
audio_analysis: v
|
|
||||||
lyrics_view: B
|
|
||||||
cover_art_view: G
|
|
||||||
add_item_to_queue: z
|
|
||||||
show_queue: Q
|
|
||||||
open_settings: alt-,
|
|
||||||
save_settings: alt-s
|
|
||||||
listening_party: ctrl-p
|
|
||||||
like_track: F
|
|
||||||
behavior:
|
|
||||||
seek_milliseconds: 5000
|
|
||||||
volume_increment: 10
|
|
||||||
volume_percent: 100
|
|
||||||
tick_rate_milliseconds: 16
|
|
||||||
enable_text_emphasis: true
|
|
||||||
show_loading_indicator: true
|
|
||||||
enforce_wide_search_bar: true
|
|
||||||
enable_global_song_count: false
|
|
||||||
disable_mouse_inputs: false
|
|
||||||
enable_discord_rpc: false
|
|
||||||
discord_rpc_client_id: null
|
|
||||||
enable_announcements: false
|
|
||||||
announcement_feed_url: null
|
|
||||||
seen_announcement_ids:
|
|
||||||
- 2026-05-19-sonos-help-wanted
|
|
||||||
- 2026-02-27-major-refactor-complete
|
|
||||||
shuffle_enabled: false
|
|
||||||
liked_icon: ♥
|
|
||||||
shuffle_icon: 🔀
|
|
||||||
repeat_track_icon: 🔂
|
|
||||||
repeat_context_icon: 🔁
|
|
||||||
playing_icon: ▶
|
|
||||||
paused_icon: ⏸
|
|
||||||
set_window_title: true
|
|
||||||
visualizer_style: Equalizer
|
|
||||||
dismissed_announcements: []
|
|
||||||
relay_server_url: wss://spotatui-party.spotatui.workers.dev/ws
|
|
||||||
stop_after_current_track: false
|
|
||||||
sidebar_width_percent: 20
|
|
||||||
playbar_height_rows: 6
|
|
||||||
library_height_percent: 30
|
|
||||||
startup_behavior: continue
|
|
||||||
disable_auto_update: true
|
|
||||||
auto_update_delay: '0'
|
|
||||||
keepawake_enabled: true
|
|
||||||
theme:
|
|
||||||
preset: Custom
|
|
||||||
active: ${rgb "base0D"}
|
|
||||||
banner: ${rgb "base0C"}
|
|
||||||
error_border: ${rgb "base08"}
|
|
||||||
error_text: ${rgb "base08"}
|
|
||||||
hint: ${rgb "base0A"}
|
|
||||||
hovered: ${rgb "base0E"}
|
|
||||||
inactive: ${rgb "base03"}
|
|
||||||
playbar_background: Reset
|
|
||||||
playbar_progress: ${rgb "base0D"}
|
|
||||||
playbar_progress_text: ${rgb "base05"}
|
|
||||||
playbar_text: Reset
|
|
||||||
selected: ${rgb "base0D"}
|
|
||||||
text: Reset
|
|
||||||
background: Reset
|
|
||||||
header: Reset
|
|
||||||
highlighted_lyrics: ${rgb "base0B"}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,57 +1,45 @@
|
|||||||
# Thunar is a file explorer
|
# Thunar is a file explorer
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
user = config.var.username;
|
user = config.var.username;
|
||||||
in {
|
in {
|
||||||
# ctrl + m to toggle the menubar
|
# ctrl + m to toggle the menubar
|
||||||
home.packages =
|
home.packages = with pkgs; [
|
||||||
(with pkgs-stable; [
|
xfce.thunar
|
||||||
xfce.thunar
|
xfce.xfconf
|
||||||
xfce.xfconf
|
xfce.tumbler
|
||||||
xfce.tumbler
|
xfce.thunar-archive-plugin
|
||||||
xfce.thunar-archive-plugin
|
xfce.thunar-volman
|
||||||
xfce.thunar-volman
|
xfce.thunar-media-tags-plugin
|
||||||
xfce.thunar-media-tags-plugin
|
p7zip
|
||||||
p7zip
|
xarchiver
|
||||||
xarchiver
|
];
|
||||||
])
|
|
||||||
++ (with pkgs; [
|
|
||||||
# Icon themes: keep on global pkgs to avoid conflicts with other modules
|
|
||||||
papirus-icon-theme
|
|
||||||
material-icons
|
|
||||||
material-design-icons
|
|
||||||
material-symbols
|
|
||||||
]);
|
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
name = "Papirus-Dark";
|
name = "WhiteSur";
|
||||||
package = pkgs.papirus-icon-theme;
|
package = pkgs.whitesur-icon-theme.override {
|
||||||
|
boldPanelIcons = true;
|
||||||
|
alternativeIcons = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# bookmarks for the side pane
|
|
||||||
gtk3.bookmarks = [
|
|
||||||
"file:///home/${user}/Downloads Downloads"
|
|
||||||
"file:///home/${user}/Pictures Pictures"
|
|
||||||
"file:///home/${user}/.config/nixos NixOS"
|
|
||||||
"file:///home/${user}/dev Development"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
qt.enable = true;
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
XDG_ICON_DIR = "${pkgs.papirus-icon-theme}/share/icons/Papirus";
|
XDG_ICON_DIR = "${pkgs.whitesur-icon-theme}/share/icons/WhiteSur";
|
||||||
QS_ICON_THEME = "Papirus";
|
|
||||||
QT_STYLE_OVERRIDE = lib.mkForce "Fusion";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# bookmarks for the side pane
|
||||||
|
gtk.gtk3.bookmarks = [
|
||||||
|
"file:///home/${user}/Downloads Downloads"
|
||||||
|
"file:///home/${user}/Pictures Pictures"
|
||||||
|
"file:///home/${user}/.config/nixos NixOS"
|
||||||
|
"file:///home/${user}/dev Development"
|
||||||
|
];
|
||||||
|
|
||||||
home.file.".config/xarchiver/xarchiverrc".text = ''
|
home.file.".config/xarchiver/xarchiverrc".text = ''
|
||||||
[xarchiver]
|
[xarchiver]
|
||||||
preferred_format=0
|
preferred_format=0
|
||||||
@@ -68,7 +56,7 @@ in {
|
|||||||
show_toolbar=true
|
show_toolbar=true
|
||||||
preferred_custom_cmd=
|
preferred_custom_cmd=
|
||||||
preferred_temp_dir=/tmp
|
preferred_temp_dir=/tmp
|
||||||
preferred_extract_dir=./
|
preferred_extract_dir=/home/${user}/Downloads
|
||||||
allow_sub_dir=0
|
allow_sub_dir=0
|
||||||
ensure_directory=true
|
ensure_directory=true
|
||||||
overwrite=false
|
overwrite=false
|
||||||
@@ -84,56 +72,53 @@ in {
|
|||||||
remove_files=false
|
remove_files=false
|
||||||
'';
|
'';
|
||||||
|
|
||||||
home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml" = {
|
home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml".text = ''
|
||||||
text = ''
|
<?xml version="1.1" encoding="UTF-8"?>
|
||||||
<?xml version="1.1" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<channel name="thunar" version="1.0">
|
<channel name="thunar" version="1.0">
|
||||||
<property name="last-view" type="string" value="ThunarIconView"/>
|
<property name="last-view" type="string" value="ThunarIconView"/>
|
||||||
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
|
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
|
||||||
<property name="last-window-maximized" type="bool" value="true"/>
|
<property name="last-window-maximized" type="bool" value="true"/>
|
||||||
<property name="last-separator-position" type="int" value="230"/>
|
<property name="last-separator-position" type="int" value="230"/>
|
||||||
<property name="last-statusbar-visible" type="bool" value="false"/>
|
<property name="last-statusbar-visible" type="bool" value="false"/>
|
||||||
<property name="last-menubar-visible" type="bool" value="false"/>
|
<property name="last-menubar-visible" type="bool" value="false"/>
|
||||||
<property name="misc-single-click" type="bool" value="false"/>
|
<property name="misc-single-click" type="bool" value="false"/>
|
||||||
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
|
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
|
||||||
<property name="tree-icon-emblems" type="bool" value="true"/>
|
<property name="tree-icon-emblems" type="bool" value="true"/>
|
||||||
<property name="misc-file-size-binary" type="bool" value="false"/>
|
<property name="misc-file-size-binary" type="bool" value="false"/>
|
||||||
<property name="misc-thumbnail-draw-frames" type="bool" value="true"/>
|
<property name="misc-thumbnail-draw-frames" type="bool" value="true"/>
|
||||||
<property name="misc-text-beside-icons" type="bool" value="false"/>
|
<property name="misc-text-beside-icons" type="bool" value="false"/>
|
||||||
<property name="misc-change-window-icon" type="bool" value="false"/>
|
<property name="misc-change-window-icon" type="bool" value="false"/>
|
||||||
<property name="hidden-bookmarks" type="array">
|
<property name="hidden-bookmarks" type="array">
|
||||||
<value type="string" value="computer:///"/>
|
<value type="string" value="computer:///"/>
|
||||||
<value type="string" value="recent:///"/>
|
<value type="string" value="recent:///"/>
|
||||||
<value type="string" value="network:///"/>
|
<value type="string" value="network:///"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="hidden-devices" type="array">
|
<property name="hidden-devices" type="array">
|
||||||
<value type="string" value="52FEA905FEA8E309"/>
|
<value type="string" value="52FEA905FEA8E309"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="last-toolbar-item-order" type="string" value="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17"/>
|
<property name="last-toolbar-item-order" type="string" value="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17"/>
|
||||||
<property name="last-toolbar-visible-buttons" type="string" value="0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0"/>
|
<property name="last-toolbar-visible-buttons" type="string" value="0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0"/>
|
||||||
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
|
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
|
||||||
<property name="last-show-hidden" type="bool" value="false"/>
|
<property name="last-show-hidden" type="bool" value="false"/>
|
||||||
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
|
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
|
||||||
<property name="last-details-view-column-widths" type="string" value="50,50,118,111,50,50,50,50,993,50,50,84,50,151"/>
|
<property name="last-details-view-column-widths" type="string" value="50,50,118,111,50,50,50,50,993,50,50,84,50,151"/>
|
||||||
<property name="last-toolbar-items" type="string" value="menu:1,undo:1,back:1,forward:1,open-parent:0,open-home:0,redo:0,zoom-in:0,zoom-out:0,zoom-reset:0,location-bar:1,view-switcher:1,search:1,view-as-icons:0,view-as-detailed-list:0,view-as-compact-list:0,toggle-split-view:0,reload:0,new-tab:0,new-window:0,uca-action-1700000000000001:0"/>
|
<property name="last-toolbar-items" type="string" value="menu:1,undo:1,back:1,forward:1,open-parent:0,open-home:0,redo:0,zoom-in:0,zoom-out:0,zoom-reset:0,location-bar:1,view-switcher:1,search:1,view-as-icons:0,view-as-detailed-list:0,view-as-compact-list:0,toggle-split-view:0,reload:0,new-tab:0,new-window:0,uca-action-1700000000000001:0"/>
|
||||||
<property name="last-side-pane" type="string" value="THUNAR_SIDEPANE_TYPE_SHORTCUTS"/>
|
<property name="last-side-pane" type="string" value="THUNAR_SIDEPANE_TYPE_SHORTCUTS"/>
|
||||||
<property name="last-image-preview-visible" type="bool" value="false"/>
|
<property name="last-image-preview-visible" type="bool" value="false"/>
|
||||||
<property name="misc-use-csd" type="bool" value="true"/>
|
<property name="misc-use-csd" type="bool" value="true"/>
|
||||||
<property name="default-view" type="string" value="ThunarIconView"/>
|
<property name="default-view" type="string" value="ThunarIconView"/>
|
||||||
<property name="misc-thumbnail-max-file-size" type="uint64" value="1073741824"/>
|
<property name="misc-thumbnail-max-file-size" type="uint64" value="1073741824"/>
|
||||||
<property name="misc-symbolic-icons-in-toolbar" type="bool" value="true"/>
|
<property name="misc-symbolic-icons-in-toolbar" type="bool" value="true"/>
|
||||||
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_SIMPLE"/>
|
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_SIMPLE"/>
|
||||||
<property name="shortcuts-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
|
<property name="shortcuts-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
|
||||||
<property name="tree-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
|
<property name="tree-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
|
||||||
<property name="misc-symbolic-icons-in-sidepane" type="bool" value="true"/>
|
<property name="misc-symbolic-icons-in-sidepane" type="bool" value="true"/>
|
||||||
<property name="misc-open-new-window-as-tab" type="bool" value="false"/>
|
<property name="misc-open-new-window-as-tab" type="bool" value="false"/>
|
||||||
<property name="misc-full-path-in-tab-title" type="bool" value="true"/>
|
<property name="misc-full-path-in-tab-title" type="bool" value="true"/>
|
||||||
<property name="misc-show-delete-action" type="bool" value="false"/>
|
<property name="misc-show-delete-action" type="bool" value="false"/>
|
||||||
</channel>
|
</channel>
|
||||||
'';
|
'';
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."Thunar/uca.xml".text = ''
|
xdg.configFile."Thunar/uca.xml".text = ''
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
@@ -142,8 +127,8 @@ in {
|
|||||||
<icon>utilities-terminal</icon>
|
<icon>utilities-terminal</icon>
|
||||||
<name>Open Terminal Here</name>
|
<name>Open Terminal Here</name>
|
||||||
<unique-id>1700000000000001</unique-id>
|
<unique-id>1700000000000001</unique-id>
|
||||||
<command>ghostty -d %f</command>
|
<command>kitty -d %f</command>
|
||||||
<description>Opens terminal in the selected folder</description>
|
<description>Opens Kitty terminal in the selected folder</description>
|
||||||
<patterns>*</patterns>
|
<patterns>*</patterns>
|
||||||
<startup-notify/>
|
<startup-notify/>
|
||||||
<directories/>
|
<directories/>
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.vivaldi = {
|
||||||
|
enable = true;
|
||||||
|
commandLineArgs = [
|
||||||
|
"--no-default-browser-check"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
DEFAULT_BROWSER = "${pkgs.vivaldi}/bin/vivaldi";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
programs.yazi = {
|
|
||||||
enable = true;
|
|
||||||
shellWrapperName = "y";
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
git = {
|
|
||||||
package = pkgs.yaziPlugins.git;
|
|
||||||
setup = true;
|
|
||||||
};
|
|
||||||
ouch = pkgs.yaziPlugins.ouch;
|
|
||||||
piper = pkgs.yaziPlugins.piper;
|
|
||||||
convert = pkgs.yaziPlugins.convert;
|
|
||||||
"jump-to-char" = pkgs.yaziPlugins."jump-to-char";
|
|
||||||
"wl-clipboard" = pkgs.yaziPlugins."wl-clipboard";
|
|
||||||
"batch-rename-gui" = pkgs.yaziPlugins.mkYaziPlugin {
|
|
||||||
pname = "batch-rename-gui.yazi";
|
|
||||||
version = "0-unstable-2025-07-08";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "pakhromov";
|
|
||||||
repo = "batch-rename-gui.yazi";
|
|
||||||
rev = "5c2d5aa349948b6ab405a171541faab44751f6a5";
|
|
||||||
hash = "sha256-3RviPY3WOyYi5GWXWRYMWp6VLxCe5cuJX7Kb7AyWxLE=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
settings.mgr.ratio = [0 4 3];
|
|
||||||
|
|
||||||
settings.plugin = {
|
|
||||||
prepend_fetchers = [
|
|
||||||
{
|
|
||||||
url = "*";
|
|
||||||
run = "git";
|
|
||||||
group = "git";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "*/";
|
|
||||||
run = "git";
|
|
||||||
group = "git";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
prepend_previewers = [
|
|
||||||
{
|
|
||||||
url = "*.md";
|
|
||||||
run = ''piper -- CLICOLOR_FORCE=1 glow -w=$w -s=dark "$1"'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
prepend_openers = [
|
|
||||||
{
|
|
||||||
url = "*.{zip,tar,gz,bz2,xz,7z,rar}";
|
|
||||||
run = "ouch";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
keymap.mgr.prepend_keymap = [
|
|
||||||
{
|
|
||||||
on = ["C"];
|
|
||||||
run = "plugin ouch";
|
|
||||||
desc = "Compress";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["X"];
|
|
||||||
run = "plugin ouch --args=extract";
|
|
||||||
desc = "Extract";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["c" "p"];
|
|
||||||
run = "plugin convert -- --extension='png'";
|
|
||||||
desc = "Convert to PNG";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["c" "j"];
|
|
||||||
run = "plugin convert -- --extension='jpg'";
|
|
||||||
desc = "Convert to JPG";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["c" "w"];
|
|
||||||
run = "plugin convert -- --extension='webp'";
|
|
||||||
desc = "Convert to WebP";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["M"];
|
|
||||||
run = ''shell 'exiftool "$@" | less' --block'';
|
|
||||||
desc = "Show metadata";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["T"];
|
|
||||||
run = "plugin toggle-parent";
|
|
||||||
desc = "Toggle parent pane";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["F"];
|
|
||||||
run = "plugin jump-to-char";
|
|
||||||
desc = "Jump to char";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["Y"];
|
|
||||||
run = "plugin wl-clipboard";
|
|
||||||
desc = "Copy to clipboard (Wayland)";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["B"];
|
|
||||||
run = "plugin batch-rename-gui";
|
|
||||||
desc = "Batch rename";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [glow ouch hexyl exiftool fzf wl-clipboard];
|
|
||||||
|
|
||||||
xdg.configFile."yazi/plugins/toggle-parent.yazi/main.lua".text = ''
|
|
||||||
--- @sync entry
|
|
||||||
local RESTORE_WIDTH = 1
|
|
||||||
return {
|
|
||||||
entry = function(st, job)
|
|
||||||
local r = rt.mgr.ratio
|
|
||||||
if r.parent == 0 then
|
|
||||||
rt.mgr.ratio = { st.width or RESTORE_WIDTH, r.current, r.preview }
|
|
||||||
else
|
|
||||||
st.width = r.parent
|
|
||||||
rt.mgr.ratio = { 0, r.current, r.preview }
|
|
||||||
end
|
|
||||||
ya.emit("app:resize", {})
|
|
||||||
end
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# TODO: Misc section with VLC, Zathura etc
|
||||||
|
# Zathura is a PDF viewer
|
||||||
|
{
|
||||||
|
programs.zathura = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
guioptions = "v";
|
||||||
|
adjust-open = "width";
|
||||||
|
statusbar-basename = true;
|
||||||
|
render-loading = false;
|
||||||
|
scroll-step = 120;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (config.theme) bar-rounding bar-thickness;
|
rounding = config.theme.rounding + config.theme.gaps-out;
|
||||||
inherit (config.stylix) fonts;
|
inherit (config.stylix) fonts;
|
||||||
in {
|
in {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
@@ -15,9 +15,9 @@ in {
|
|||||||
background.enabled = false;
|
background.enabled = false;
|
||||||
appearance = {
|
appearance = {
|
||||||
transparency = {
|
transparency = {
|
||||||
enabled = true;
|
enable = true;
|
||||||
base = config.theme.active-opacity;
|
base = 0.85;
|
||||||
layers = config.theme.inactive-opacity;
|
layers = 0.4;
|
||||||
};
|
};
|
||||||
font.family = {
|
font.family = {
|
||||||
material = "Material Symbols Rounded";
|
material = "Material Symbols Rounded";
|
||||||
@@ -29,8 +29,8 @@ in {
|
|||||||
enabled = true;
|
enabled = true;
|
||||||
maxToasts = 4;
|
maxToasts = 4;
|
||||||
toasts = {
|
toasts = {
|
||||||
audioInputChanged = false;
|
audioInputChanged = true;
|
||||||
audioOutputChanged = false;
|
audioOutputChanged = true;
|
||||||
capsLockChanged = false;
|
capsLockChanged = false;
|
||||||
chargingChanged = true;
|
chargingChanged = true;
|
||||||
configLoaded = false;
|
configLoaded = false;
|
||||||
@@ -41,10 +41,9 @@ in {
|
|||||||
kbLayoutChanged = false;
|
kbLayoutChanged = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
dashboard.showOnHover = false;
|
|
||||||
border = {
|
border = {
|
||||||
rounding = bar-rounding;
|
inherit rounding;
|
||||||
thickness = bar-thickness;
|
thickness = 8;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
label = " ";
|
label = " ";
|
||||||
occupiedBg = true;
|
occupiedBg = true;
|
||||||
occupiedLabel = " ";
|
occupiedLabel = " ";
|
||||||
|
rounded = true;
|
||||||
showWindows = false;
|
showWindows = false;
|
||||||
shown = 5;
|
shown = 5;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
bindin = [
|
||||||
|
# Launcher
|
||||||
|
"$mod, mouse:272, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:273, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:274, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:275, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:276, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:277, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse_up, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse_down, global, caelestia:launcherInterrupt"
|
||||||
|
];
|
||||||
|
bind = [
|
||||||
|
# Launcher
|
||||||
|
"$mod, SPACE, global, caelestia:launcher"
|
||||||
|
"$mod, X, global, caelestia:session" # Powermenu
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
"$mod, L, global, caelestia:lock"
|
||||||
|
"$mod, N, exec, caelestia shell drawers toggle sidebar"
|
||||||
|
|
||||||
|
# Utilities
|
||||||
|
"$mod+Shift, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode
|
||||||
|
"$mod+Shift, S, global, caelestia:screenshotFreeze" # Capture region (freeze)
|
||||||
|
"$mod+Shift+Alt, S, global, caelestia:screenshot" # Capture region
|
||||||
|
"$mod+Alt, R, exec, caelestia record -s" # Record screen with sound
|
||||||
|
"Ctrl+Alt, R, exec, caelestia record" # Record screen
|
||||||
|
"$mod+Shift+Alt, R, exec, caelestia record -r" # Record region
|
||||||
|
|
||||||
|
"$mod+Shift, E, exec, pkill fuzzel || caelestia emoji -p"
|
||||||
|
];
|
||||||
|
bindl = [
|
||||||
|
# Brightness
|
||||||
|
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
|
||||||
|
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
|
||||||
|
"$mod, F2, exec, nightshift-toggle"
|
||||||
|
"$mod, F3, exec, nightshift-toggle"
|
||||||
|
|
||||||
|
# Media
|
||||||
|
", XF86AudioPlay, global, caelestia:mediaToggle"
|
||||||
|
", XF86AudioPause, global, caelestia:mediaToggle"
|
||||||
|
", XF86AudioNext, global, caelestia:mediaNext"
|
||||||
|
", XF86AudioPrev, global, caelestia:mediaPrev"
|
||||||
|
", XF86AudioStop, global, caelestia:mediaStop"
|
||||||
|
|
||||||
|
# Sound
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
|
||||||
|
# Utilities
|
||||||
|
", Print, exec, caelestia screenshot" # Full screen capture > clipboard
|
||||||
|
];
|
||||||
|
bindle = [
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,16 +3,15 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.caelestia-shell.homeManagerModules.default
|
inputs.caelestia-shell.homeManagerModules.default
|
||||||
|
./bindings.nix
|
||||||
./bar.nix
|
./bar.nix
|
||||||
./launcher.nix
|
./launcher.nix
|
||||||
./appearance.nix
|
./appearance.nix
|
||||||
./scheme.nix
|
./scheme.nix
|
||||||
./swappy.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.caelestia = {
|
programs.caelestia = {
|
||||||
@@ -53,26 +52,9 @@
|
|||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
"uwsm app -- caelestia resizer -d"
|
"uwsm app -- caelestia resizer -d"
|
||||||
"uwsm app -- caelestia shell -d"
|
"uwsm app -- caelestia shell -d"
|
||||||
"caelestia scheme set -n onedark"
|
|
||||||
"caelestia scheme set -n custom"
|
"caelestia scheme set -n custom"
|
||||||
];
|
];
|
||||||
|
|
||||||
# shell.json is managed by home-manager (read-only symlink) but caelestia
|
|
||||||
# needs to write to it at runtime: replace the symlink with a mutable copy.
|
|
||||||
# The stale .hm-backup must be removed before linkGeneration so HM can
|
|
||||||
# back up the runtime-modified shell.json without hitting a conflict.
|
|
||||||
home.activation.caelestiaCleanBackup = lib.hm.dag.entryBefore ["linkGeneration"] ''
|
|
||||||
$DRY_RUN_CMD rm -f "$HOME/.config/caelestia/shell.json.hm-backup"
|
|
||||||
'';
|
|
||||||
|
|
||||||
home.activation.caelestiaWritableShellConfig = lib.hm.dag.entryAfter ["linkGeneration"] ''
|
|
||||||
if [ -L "$HOME/.config/caelestia/shell.json" ]; then
|
|
||||||
$DRY_RUN_CMD cp --remove-destination \
|
|
||||||
"$(readlink -f "$HOME/.config/caelestia/shell.json")" \
|
|
||||||
"$HOME/.config/caelestia/shell.json"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
services.cliphist = {
|
services.cliphist = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowImages = true;
|
allowImages = true;
|
||||||
|
|||||||
@@ -1,22 +1,10 @@
|
|||||||
{
|
{
|
||||||
programs.caelestia.settings = {
|
programs.caelestia.settings = {
|
||||||
session.commands = {
|
session.commands = {
|
||||||
shutdown = [
|
logout = ["loginctl" "terminate-user" ""];
|
||||||
"systemctl"
|
shutdown = ["systemctl" "poweroff"];
|
||||||
"poweroff"
|
hibernate = ["systemctl" "hibernate"];
|
||||||
];
|
reboot = ["systemctl" "reboot"];
|
||||||
logout = [
|
|
||||||
"loginctl"
|
|
||||||
"lock-session"
|
|
||||||
];
|
|
||||||
hibernate = [
|
|
||||||
"systemctl"
|
|
||||||
"hibernate"
|
|
||||||
];
|
|
||||||
reboot = [
|
|
||||||
"systemctl"
|
|
||||||
"reboot"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
launcher = {
|
launcher = {
|
||||||
actionPrefix = "/";
|
actionPrefix = "/";
|
||||||
@@ -25,10 +13,7 @@
|
|||||||
name = "Calculator";
|
name = "Calculator";
|
||||||
icon = "calculate";
|
icon = "calculate";
|
||||||
description = "Do simple math equations (powered by Qalc)";
|
description = "Do simple math equations (powered by Qalc)";
|
||||||
command = [
|
command = ["autocomplete" "calc"];
|
||||||
"autocomplete"
|
|
||||||
"calc"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
@@ -36,10 +21,7 @@
|
|||||||
name = "Shutdown";
|
name = "Shutdown";
|
||||||
icon = "power_settings_new";
|
icon = "power_settings_new";
|
||||||
description = "Shutdown the system";
|
description = "Shutdown the system";
|
||||||
command = [
|
command = ["systemctl" "poweroff"];
|
||||||
"systemctl"
|
|
||||||
"poweroff"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = true;
|
dangerous = true;
|
||||||
}
|
}
|
||||||
@@ -47,10 +29,7 @@
|
|||||||
name = "Reboot";
|
name = "Reboot";
|
||||||
icon = "cached";
|
icon = "cached";
|
||||||
description = "Reboot the system";
|
description = "Reboot the system";
|
||||||
command = [
|
command = ["systemctl" "reboot"];
|
||||||
"systemctl"
|
|
||||||
"reboot"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = true;
|
dangerous = true;
|
||||||
}
|
}
|
||||||
@@ -58,11 +37,7 @@
|
|||||||
name = "Logout";
|
name = "Logout";
|
||||||
icon = "exit_to_app";
|
icon = "exit_to_app";
|
||||||
description = "Log out of the current session";
|
description = "Log out of the current session";
|
||||||
command = [
|
command = ["loginctl" "terminate-user" ""];
|
||||||
"loginctl"
|
|
||||||
"terminate-user"
|
|
||||||
""
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = true;
|
dangerous = true;
|
||||||
}
|
}
|
||||||
@@ -70,10 +45,7 @@
|
|||||||
name = "Lock";
|
name = "Lock";
|
||||||
icon = "lock";
|
icon = "lock";
|
||||||
description = "Lock the current session";
|
description = "Lock the current session";
|
||||||
command = [
|
command = ["loginctl" "lock-session"];
|
||||||
"loginctl"
|
|
||||||
"lock-session"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
@@ -81,10 +53,7 @@
|
|||||||
name = "Sleep";
|
name = "Sleep";
|
||||||
icon = "bedtime";
|
icon = "bedtime";
|
||||||
description = "Suspend then hibernate";
|
description = "Suspend then hibernate";
|
||||||
command = [
|
command = ["systemctl" "suspend-then-hibernate"];
|
||||||
"systemctl"
|
|
||||||
"suspend-then-hibernate"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
@@ -92,12 +61,7 @@
|
|||||||
name = "Restart caelestia";
|
name = "Restart caelestia";
|
||||||
icon = "cached";
|
icon = "cached";
|
||||||
description = "Restart caelestia";
|
description = "Restart caelestia";
|
||||||
command = [
|
command = ["hyprctl" "dispatch" "exec" "caelestia-shell kill | sleep 1 | caelestia-shell"];
|
||||||
"hyprctl"
|
|
||||||
"dispatch"
|
|
||||||
"exec"
|
|
||||||
"caelestia-shell kill | sleep 1 | caelestia-shell"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
@@ -105,11 +69,7 @@
|
|||||||
name = "Emoji Picker";
|
name = "Emoji Picker";
|
||||||
icon = "mood";
|
icon = "mood";
|
||||||
description = "Toggle the emoji picker";
|
description = "Toggle the emoji picker";
|
||||||
command = [
|
command = ["caelestia" "emoji" "-p"];
|
||||||
"caelestia"
|
|
||||||
"emoji"
|
|
||||||
"-p"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
@@ -117,10 +77,7 @@
|
|||||||
name = "Clipboard History";
|
name = "Clipboard History";
|
||||||
icon = "content_paste";
|
icon = "content_paste";
|
||||||
description = "Toggle the clipboard history";
|
description = "Toggle the clipboard history";
|
||||||
command = [
|
command = ["caelestia" "clipboard"];
|
||||||
"caelestia"
|
|
||||||
"clipboard"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
@@ -128,10 +85,7 @@
|
|||||||
name = "Delete from Clipboard History";
|
name = "Delete from Clipboard History";
|
||||||
icon = "content_paste_off";
|
icon = "content_paste_off";
|
||||||
description = "Delete a line from the clipboard history";
|
description = "Delete a line from the clipboard history";
|
||||||
command = [
|
command = ["caelestia" "clipboard"];
|
||||||
"caelestia"
|
|
||||||
"clipboard"
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
@@ -147,25 +101,7 @@
|
|||||||
name = "Hyprpicker";
|
name = "Hyprpicker";
|
||||||
icon = "colorize";
|
icon = "colorize";
|
||||||
description = "Pick an hex color";
|
description = "Pick an hex color";
|
||||||
command = [
|
command = ["hyprpicker" "-a"];
|
||||||
"hyprpicker"
|
|
||||||
"-a"
|
|
||||||
];
|
|
||||||
enabled = true;
|
|
||||||
dangerous = false;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Run in background";
|
|
||||||
icon = "play_circle";
|
|
||||||
description = "Type and run any shell command in the background";
|
|
||||||
command = [
|
|
||||||
"ghostty"
|
|
||||||
"--title=run-bg"
|
|
||||||
"-e"
|
|
||||||
"bash"
|
|
||||||
"-c"
|
|
||||||
"printf 'Run: '; read -r cmd; [ -n \"$cmd\" ] && hyprctl dispatch exec \"$cmd\""
|
|
||||||
];
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
dangerous = false;
|
dangerous = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,18 +120,13 @@
|
|||||||
onSuccessContainer ${colors.base05}
|
onSuccessContainer ${colors.base05}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
colorsHash = builtins.hashString "sha256" (builtins.toJSON colors);
|
customCli = inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs (oldAttrs: {
|
||||||
|
postUnpack = ''
|
||||||
customCli =
|
mkdir -p $sourceRoot/src/caelestia/data/schemes/custom/main
|
||||||
inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs
|
cp ${customSchemeFile} $sourceRoot/src/caelestia/data/schemes/custom/main/dark.txt
|
||||||
(oldAttrs: {
|
echo "Custom scheme added to source"
|
||||||
name = "${oldAttrs.name or "caelestia-cli"}-themed-${colorsHash}";
|
'';
|
||||||
postUnpack = ''
|
});
|
||||||
mkdir -p $sourceRoot/src/caelestia/data/schemes/custom/main
|
|
||||||
cp ${customSchemeFile} $sourceRoot/src/caelestia/data/schemes/custom/main/dark.txt
|
|
||||||
echo "Custom scheme added to source"
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
in {
|
in {
|
||||||
programs.caelestia.cli.package = customCli;
|
programs.caelestia.cli.package = customCli;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
xdg.configFile."swappy/config".text = ''
|
|
||||||
[Default]
|
|
||||||
save_dir=~/Pictures/Screenshots
|
|
||||||
save_filename_format=screenshot-%Y%m%d-%H%M%S.png
|
|
||||||
show_panel=false
|
|
||||||
line_size=5
|
|
||||||
text_size=20
|
|
||||||
text_font=sans-serif
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,207 +1,43 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
colors = config.lib.stylix.colors;
|
|
||||||
|
|
||||||
mkMenu = menu: let
|
|
||||||
configFile = pkgs.writeText "config.yaml" (
|
|
||||||
lib.generators.toYAML {} {
|
|
||||||
anchor = "bottom-right";
|
|
||||||
border = "#${colors.base0D}80";
|
|
||||||
background = "#${colors.base01}EE";
|
|
||||||
color = "#${colors.base05}";
|
|
||||||
margin_right = 15;
|
|
||||||
margin_bottom = 15;
|
|
||||||
rows_per_column = 5;
|
|
||||||
|
|
||||||
inherit menu;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
in
|
|
||||||
pkgs.writeShellScriptBin "menu" ''
|
|
||||||
exec ${lib.getExe pkgs.wlr-which-key} ${configFile}
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
"$shiftMod" = "SUPER_SHIFT";
|
"$shiftMod" = "SUPER_SHIFT";
|
||||||
|
|
||||||
bind =
|
bind =
|
||||||
[
|
[
|
||||||
# Applications
|
|
||||||
(
|
|
||||||
"$shiftMod, A, exec, "
|
|
||||||
+ lib.getExe (mkMenu [
|
|
||||||
{
|
|
||||||
key = "a";
|
|
||||||
desc = "Proton Authenticator";
|
|
||||||
cmd = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "p";
|
|
||||||
desc = "Proton Pass";
|
|
||||||
cmd = "${pkgs.proton-pass}/bin/proton-pass";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "v";
|
|
||||||
desc = "Proton VPN";
|
|
||||||
cmd = "${pkgs.proton-vpn}/bin/protonvpn-app";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "c";
|
|
||||||
desc = "Proton Calendar";
|
|
||||||
cmd = "${config.programs.helium.package}/bin/helium 'https://calendar.proton.me/'";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "m";
|
|
||||||
desc = "Proton Mail";
|
|
||||||
cmd = "${config.programs.helium.package}/bin/helium 'https://mail.proton.me/'";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "o";
|
|
||||||
desc = "Obsidian";
|
|
||||||
cmd = "${pkgs.obsidian}/bin/obsidian";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "s";
|
|
||||||
desc = "Signal";
|
|
||||||
cmd = "${pkgs.signal-desktop}/bin/signal-desktop";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "t";
|
|
||||||
desc = "TickTick";
|
|
||||||
cmd = "${pkgs.ticktick}/bin/ticktick";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "b";
|
|
||||||
desc = "Helium";
|
|
||||||
cmd = "${config.programs.helium.package}/bin/helium";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "i";
|
|
||||||
desc = "Helium (Incognito)";
|
|
||||||
cmd = "${config.programs.helium.package}/bin/helium --incognito";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
)
|
|
||||||
|
|
||||||
"$mod,B, exec, uwsm app -- ${config.programs.helium.package}/bin/helium" # Browser
|
|
||||||
|
|
||||||
# Power
|
|
||||||
"$mod, X, global, caelestia:session" # Powermenu
|
|
||||||
(
|
|
||||||
"$shiftMod, X, exec, "
|
|
||||||
+ lib.getExe (mkMenu [
|
|
||||||
{
|
|
||||||
key = "l";
|
|
||||||
desc = "Lock";
|
|
||||||
cmd = "hyprctl dispatch global caelestia:lock";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "s";
|
|
||||||
desc = "Suspend";
|
|
||||||
cmd = "systemctl suspend";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "r";
|
|
||||||
desc = "Reboot";
|
|
||||||
cmd = "systemctl reboot";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "p";
|
|
||||||
desc = "Power Off";
|
|
||||||
cmd = "systemctl poweroff";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "n";
|
|
||||||
desc = "Nightshift";
|
|
||||||
cmd = "nightshift-toggle";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "c";
|
|
||||||
desc = "Restart caelestia";
|
|
||||||
cmd = "hyprctl dispatch exec 'caelestia-shell kill | sleep 1 | caelestia-shell'";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
)
|
|
||||||
|
|
||||||
# Quick launch
|
|
||||||
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
|
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
|
||||||
"$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar
|
"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
|
||||||
"$shiftMod, E, exec, pkill fuzzel || caelestia emoji -p" # Emoji picker
|
"$mod,B, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi" # Browser (Vivaldi)
|
||||||
"$mod, SPACE, global, caelestia:launcher" # Launcher
|
"$mod,K, exec, uwsm app -- ${pkgs.proton-pass}/bin/proton-pass" # Proton Pass
|
||||||
"$mod, N, exec, caelestia shell drawers toggle sidebar" # Sidebar (Notifications, quick actions)
|
"$mod,V, exec, uwsm app -- ${pkgs.protonvpn-gui}/bin/protonvpn-app" # Proton VPN
|
||||||
"$mod, D, exec, caelestia shell drawers toggle dashboard" # Dashboard
|
"$mod,A, exec, uwsm app -- env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator" # Proton Auth
|
||||||
|
"$mod,M, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=jnpecgipniidlgicjocehkhajgdnjekh" # Proton Mail (PWA)
|
||||||
|
"$mod,C, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=ojibjkjikcpjonjjngfkegflhmffeemk" # Proton Calendar (PWA)
|
||||||
|
"$mod,I, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=lcfjlhjhpmdjimnbkdfjnkojodddgfmd" # Proton Lumo (PWA)
|
||||||
|
|
||||||
# Windows
|
|
||||||
"$mod,Q, killactive," # Close window
|
"$mod,Q, killactive," # Close window
|
||||||
|
"$mod,T, togglefloating," # Toggle Floating
|
||||||
"$mod,F, fullscreen" # Toggle Fullscreen
|
"$mod,F, fullscreen" # Toggle Fullscreen
|
||||||
"$shiftMod,F, togglefloating," # Toggle Floating
|
"$mod,left, movefocus, l" # Move focus left
|
||||||
|
"$mod,right, movefocus, r" # Move focus Right
|
||||||
# Focus Windows
|
"$mod,up, movefocus, u" # Move focus Up
|
||||||
"$mod,H, movefocus, l" # Move focus left
|
"$mod,down, movefocus, d" # Move focus Down
|
||||||
"$mod,J, movefocus, d" # Move focus Down
|
"$shiftMod,up, focusmonitor, -1" # Focus previous monitor
|
||||||
"$mod,K, movefocus, u" # Move focus Up
|
"$shiftMod,down, focusmonitor, 1" # Focus next monitor
|
||||||
"$mod,L, movefocus, r" # Move focus Right
|
"$shiftMod,left, layoutmsg, addmaster" # Add to master
|
||||||
"$shiftMod,H, focusmonitor, -1" # Focus previous monitor
|
"$shiftMod,right, layoutmsg, removemaster" # Remove from master
|
||||||
"$shiftMod,J, layoutmsg, removemaster" # Remove from master
|
|
||||||
"$shiftMod,K, layoutmsg, addmaster" # Add to master
|
|
||||||
"$shiftMod,L, focusmonitor, 1" # Focus next monitor
|
|
||||||
|
|
||||||
# Utilities
|
|
||||||
"$shiftMod, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode
|
|
||||||
"$shiftMod, S, global, caelestia:screenshotFreeze" # Capture region (freeze)
|
|
||||||
", Print, global, caelestia:screenshotFreeze" # Capture region (freeze)
|
|
||||||
"$shiftMod+Alt, S, global, caelestia:screenshot" # Capture region
|
|
||||||
]
|
]
|
||||||
++ (builtins.concatLists (
|
++ (builtins.concatLists (builtins.genList (i: let
|
||||||
builtins.genList (
|
ws = i + 1;
|
||||||
i: let
|
in [
|
||||||
ws = i + 1;
|
"$mod,code:1${toString i}, workspace, ${toString ws}"
|
||||||
in [
|
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
|
||||||
"$mod,code:1${toString i}, workspace, ${toString ws}"
|
])
|
||||||
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
|
9));
|
||||||
]
|
|
||||||
)
|
|
||||||
9
|
|
||||||
));
|
|
||||||
|
|
||||||
bindm = [
|
bindm = [
|
||||||
"$mod,mouse:272, movewindow" # Move Window (mouse)
|
"$mod,mouse:272, movewindow" # Move Window (mouse)
|
||||||
"$mod,R, resizewindow" # Resize Window (mouse)
|
"$mod,R, resizewindow" # Resize Window (mouse)
|
||||||
];
|
];
|
||||||
|
|
||||||
bindl = [
|
|
||||||
# Brightness
|
|
||||||
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
|
|
||||||
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
|
|
||||||
|
|
||||||
# Media
|
|
||||||
", XF86AudioPlay, global, caelestia:mediaToggle"
|
|
||||||
", XF86AudioPause, global, caelestia:mediaToggle"
|
|
||||||
", XF86AudioNext, global, caelestia:mediaNext"
|
|
||||||
", XF86AudioPrev, global, caelestia:mediaPrev"
|
|
||||||
", XF86AudioStop, global, caelestia:mediaStop"
|
|
||||||
|
|
||||||
# Sound
|
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindin = [
|
|
||||||
# Launcher
|
|
||||||
"$mod, mouse:272, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:273, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:274, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:275, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:276, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:277, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse_up, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse_down, global, caelestia:launcherInterrupt"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
rounding = config.theme.rounding;
|
rounding = config.theme.rounding;
|
||||||
blur = config.theme.blur;
|
blur = config.theme.blur;
|
||||||
keyboardLayout = config.var.keyboardLayout;
|
keyboardLayout = config.var.keyboardLayout;
|
||||||
background = "rgba(" + config.lib.stylix.colors.base00 + "EE)";
|
background = "rgba(" + config.lib.stylix.colors.base00 + "77)";
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./animations.nix
|
./animations.nix
|
||||||
@@ -27,8 +27,6 @@ in {
|
|||||||
qt6.qtwayland
|
qt6.qtwayland
|
||||||
libsForQt5.qt5ct
|
libsForQt5.qt5ct
|
||||||
qt6Packages.qt6ct
|
qt6Packages.qt6ct
|
||||||
xcb-util-cursor
|
|
||||||
libxcb
|
|
||||||
hyprland-qtutils
|
hyprland-qtutils
|
||||||
adw-gtk3
|
adw-gtk3
|
||||||
hyprshot
|
hyprshot
|
||||||
@@ -39,14 +37,17 @@ in {
|
|||||||
wlr-randr
|
wlr-randr
|
||||||
brightnessctl
|
brightnessctl
|
||||||
gnome-themes-extra
|
gnome-themes-extra
|
||||||
|
libva
|
||||||
dconf
|
dconf
|
||||||
wayland-utils
|
wayland-utils
|
||||||
wayland-protocols
|
wayland-protocols
|
||||||
|
glib
|
||||||
|
direnv
|
||||||
|
meson
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configType = "hyprlang";
|
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
systemd = {
|
systemd = {
|
||||||
enable = false;
|
enable = false;
|
||||||
@@ -63,23 +64,35 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
monitor = [
|
monitor = [
|
||||||
|
"eDP-2,highres,0x0,1" # My internal laptop screen
|
||||||
|
"desc:AOC U34G2G1 0x00000E06,3440x1440@99.98,auto,1" # My external monitor
|
||||||
|
"desc:United Microelectr Corporation UMC SHARP,3840x2160,auto,2" # TV
|
||||||
",prefered,auto,1" # default
|
",prefered,auto,1" # default
|
||||||
];
|
];
|
||||||
|
|
||||||
env = [
|
env = [
|
||||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||||
"XDG_SESSION_TYPE,wayland"
|
"MOZ_ENABLE_WAYLAND,1"
|
||||||
"XDG_SESSION_DESKTOP,Hyprland"
|
|
||||||
"ANKI_WAYLAND,1"
|
"ANKI_WAYLAND,1"
|
||||||
"DISABLE_QT5_COMPAT,0"
|
"DISABLE_QT5_COMPAT,0"
|
||||||
|
"NIXOS_OZONE_WL,1"
|
||||||
|
"XDG_SESSION_TYPE,wayland"
|
||||||
|
"XDG_SESSION_DESKTOP,Hyprland"
|
||||||
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
||||||
"QT_QPA_PLATFORM,wayland;xcb"
|
"QT_QPA_PLATFORM=wayland,xcb"
|
||||||
"QT_QPA_PLATFORMTHEME,gtk3"
|
|
||||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||||
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
||||||
|
"__GL_GSYNC_ALLOWED,0"
|
||||||
|
"__GL_VRR_ALLOWED,0"
|
||||||
|
"DISABLE_QT5_COMPAT,0"
|
||||||
"DIRENV_LOG_FORMAT,"
|
"DIRENV_LOG_FORMAT,"
|
||||||
|
"WLR_DRM_NO_ATOMIC,1"
|
||||||
|
"WLR_BACKEND,vulkan"
|
||||||
|
"WLR_RENDERER,vulkan"
|
||||||
|
"WLR_NO_HARDWARE_CURSORS,1"
|
||||||
"SDL_VIDEODRIVER,wayland"
|
"SDL_VIDEODRIVER,wayland"
|
||||||
"CLUTTER_BACKEND,wayland"
|
"CLUTTER_BACKEND,wayland"
|
||||||
|
"AQ_DRM_DEVICES,/dev/dri/card2:/dev/dri/card1" # CHANGEME: Related to the GPU
|
||||||
];
|
];
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
@@ -115,7 +128,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
master = {
|
master = {
|
||||||
new_status = "slave";
|
new_status = true;
|
||||||
allow_small_split = true;
|
allow_small_split = true;
|
||||||
mfact = 0.5;
|
mfact = 0.5;
|
||||||
};
|
};
|
||||||
@@ -123,24 +136,17 @@ in {
|
|||||||
gesture = "3, horizontal, workspace";
|
gesture = "3, horizontal, workspace";
|
||||||
|
|
||||||
windowrule = [
|
windowrule = [
|
||||||
"match:class .*, suppress_event maximize"
|
|
||||||
"match:class helium, suppress_event fullscreen"
|
|
||||||
"match:class helium, sync_fullscreen false"
|
|
||||||
|
|
||||||
"match:class proton-authenticator, float on"
|
"match:class proton-authenticator, float on"
|
||||||
|
"match:class proton-authenticator, suppress_event maximize"
|
||||||
"match:class proton-authenticator, center on"
|
"match:class proton-authenticator, center on"
|
||||||
"match:class proton-authenticator, size 500 400"
|
"match:class proton-authenticator, size 500 400"
|
||||||
|
|
||||||
"match:class protonvpn-app, float on"
|
"match:class protonvpn-app, float on"
|
||||||
"match:class protonvpn-app, center on"
|
"match:class protonvpn-app, center on"
|
||||||
"match:class protonvpn-app, size 500 400"
|
"match:class protonvpn-app, size 500 400"
|
||||||
|
|
||||||
"match:title run-bg, float on"
|
|
||||||
"match:title run-bg, center on"
|
|
||||||
"match:title run-bg, size 700 80"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
misc = {
|
misc = {
|
||||||
|
vfr = true;
|
||||||
disable_hyprland_logo = true;
|
disable_hyprland_logo = true;
|
||||||
disable_splash_rendering = true;
|
disable_splash_rendering = true;
|
||||||
disable_autoreload = true;
|
disable_autoreload = true;
|
||||||
@@ -162,10 +168,6 @@ in {
|
|||||||
clickfinger_behavior = true;
|
clickfinger_behavior = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ecosystem = {
|
|
||||||
no_update_news = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,4 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
command = "bash ${keyboard-backlight}/bin/keyboard-backlight &";
|
command = "bash ${keyboard-backlight}/bin/keyboard-backlight &";
|
||||||
in {
|
in {wayland.windowManager.hyprland.settings.exec-once = [command];}
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [command];
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -6,9 +6,11 @@
|
|||||||
settings = {
|
settings = {
|
||||||
ipc = "on";
|
ipc = "on";
|
||||||
splash = false;
|
splash = false;
|
||||||
|
splash_offset = 2.0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.user.services.hyprpaper.Unit.After = lib.mkForce "graphical-session.target";
|
systemd.user.services.hyprpaper.Unit.After =
|
||||||
|
lib.mkForce "graphical-session.target";
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
"systemctl --user enable --now hyprpaper.service"
|
"systemctl --user enable --now hyprpaper.service"
|
||||||
|
|||||||
@@ -1,65 +1,23 @@
|
|||||||
# Mime type associations for the system.
|
# Mime type associations for the system.
|
||||||
{
|
{lib, ...}:
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
with lib; let
|
||||||
defaultApps = {
|
defaultApps = {
|
||||||
# check desktop files here: `ls $(echo $XDG_DATA_DIRS| sed "s/:/ /g")`
|
# check desktop files here: `ls $(echo $XDG_DATA_DIRS| sed "s/:/ /g")`
|
||||||
text = [
|
browser = ["vivaldi-stable.desktop"];
|
||||||
# "org.gnome.TextEditor.desktop"
|
text = ["org.gnome.TextEditor.desktop"];
|
||||||
"nvim-ghostty.desktop"
|
|
||||||
];
|
|
||||||
code = ["nvim-ghostty.desktop"];
|
|
||||||
image = ["imv-dir.desktop"];
|
image = ["imv-dir.desktop"];
|
||||||
audio = ["mpv.desktop"];
|
audio = ["mpv.desktop"];
|
||||||
video = ["mpv.desktop"];
|
video = ["mpv.desktop"];
|
||||||
directory = ["thunar.desktop"];
|
directory = ["thunar.desktop"];
|
||||||
office = ["libreoffice.desktop"];
|
office = ["libreoffice.desktop"];
|
||||||
pdf = ["zathura.desktop"];
|
pdf = ["zathura.desktop"];
|
||||||
terminal = ["ghostty.desktop"];
|
terminal = ["kitty.desktop"];
|
||||||
|
discord = ["discord.desktop"];
|
||||||
archive = ["xarchiver.desktop"];
|
archive = ["xarchiver.desktop"];
|
||||||
browser = ["helium.desktop"];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mimeMap = {
|
mimeMap = {
|
||||||
text = ["text/plain"];
|
text = ["text/plain"];
|
||||||
code = [
|
|
||||||
"text/x-csrc"
|
|
||||||
"text/x-chdr"
|
|
||||||
"text/x-c++src"
|
|
||||||
"text/x-c++hdr"
|
|
||||||
"text/x-rust"
|
|
||||||
"text/x-go"
|
|
||||||
"text/x-java"
|
|
||||||
"text/x-csharp"
|
|
||||||
|
|
||||||
"text/x-python"
|
|
||||||
"application/x-shellscript"
|
|
||||||
"text/javascript"
|
|
||||||
"application/javascript"
|
|
||||||
"text/css"
|
|
||||||
"text/x-php"
|
|
||||||
"text/x-ruby"
|
|
||||||
|
|
||||||
"application/json"
|
|
||||||
"application/xml"
|
|
||||||
"text/xml"
|
|
||||||
"text/x-yaml"
|
|
||||||
"application/x-yaml"
|
|
||||||
"application/toml"
|
|
||||||
"text/x-nix"
|
|
||||||
"text/markdown"
|
|
||||||
|
|
||||||
"text/x-dockerfile"
|
|
||||||
"application/x-yaml"
|
|
||||||
"text/x-terraform"
|
|
||||||
|
|
||||||
"application/x-perl"
|
|
||||||
"text/x-lua"
|
|
||||||
"text/x-haskell"
|
|
||||||
];
|
|
||||||
image = [
|
image = [
|
||||||
"image/bmp"
|
"image/bmp"
|
||||||
"image/gif"
|
"image/gif"
|
||||||
@@ -91,6 +49,13 @@ with lib; let
|
|||||||
"video/x-msvideo"
|
"video/x-msvideo"
|
||||||
];
|
];
|
||||||
directory = ["inode/directory"];
|
directory = ["inode/directory"];
|
||||||
|
browser = [
|
||||||
|
"text/html"
|
||||||
|
"x-scheme-handler/about"
|
||||||
|
"x-scheme-handler/http"
|
||||||
|
"x-scheme-handler/https"
|
||||||
|
"x-scheme-handler/unknown"
|
||||||
|
];
|
||||||
office = [
|
office = [
|
||||||
"application/vnd.oasis.opendocument.text"
|
"application/vnd.oasis.opendocument.text"
|
||||||
"application/vnd.oasis.opendocument.spreadsheet"
|
"application/vnd.oasis.opendocument.spreadsheet"
|
||||||
@@ -111,34 +76,14 @@ with lib; let
|
|||||||
"application/7z"
|
"application/7z"
|
||||||
"application/*tar"
|
"application/*tar"
|
||||||
];
|
];
|
||||||
browser = [
|
discord = ["x-scheme-handler/discord"];
|
||||||
"text/html"
|
|
||||||
"application/xhtml+xml"
|
|
||||||
"x-scheme-handler/http"
|
|
||||||
"x-scheme-handler/https"
|
|
||||||
"x-scheme-handler/ftp"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nvim-ghostty = pkgs.makeDesktopItem {
|
|
||||||
name = "nvim-ghostty";
|
|
||||||
desktopName = "Neovim (Ghostty)";
|
|
||||||
exec = ''ghostty --title="Neovim Editor" -e nvim %F'';
|
|
||||||
terminal = false;
|
|
||||||
categories = [
|
|
||||||
"Development"
|
|
||||||
"TextEditor"
|
|
||||||
];
|
|
||||||
mimeTypes = mimeMap.code ++ mimeMap.text;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
associations = with lists;
|
associations = with lists;
|
||||||
listToAttrs (
|
listToAttrs (flatten (mapAttrsToList
|
||||||
flatten (mapAttrsToList (key: map (type: attrsets.nameValuePair type defaultApps."${key}")) mimeMap)
|
(key: map (type: attrsets.nameValuePair type defaultApps."${key}"))
|
||||||
);
|
mimeMap));
|
||||||
in {
|
in {
|
||||||
home.packages = [nvim-ghostty];
|
|
||||||
|
|
||||||
xdg = {
|
xdg = {
|
||||||
configFile."mimeapps.list".force = true;
|
configFile."mimeapps.list".force = true;
|
||||||
mimeApps = {
|
mimeApps = {
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
../../nixos/home-manager.nix
|
../../nixos/home-manager.nix
|
||||||
../../nixos/nix.nix
|
../../nixos/nix.nix
|
||||||
../../nixos/systemd-boot.nix
|
../../nixos/systemd-boot.nix
|
||||||
../../nixos/tuigreet.nix
|
../../nixos/sddm.nix
|
||||||
../../nixos/users.nix
|
../../nixos/users.nix
|
||||||
../../nixos/utils.nix
|
../../nixos/utils.nix
|
||||||
|
../../nixos/tailscale.nix
|
||||||
../../nixos/hyprland.nix
|
../../nixos/hyprland.nix
|
||||||
../../nixos/usbguard.nix
|
../../nixos/docker.nix
|
||||||
../../home/programs/helium/system.nix # I hate browser's configuration..
|
|
||||||
|
|
||||||
../../nixos/omen.nix # CHANGEME: For my laptop only, remove this (OMEN 16)
|
../../nixos/omen.nix # CHANGEME: For my laptop only, remove this (OMEN 16)
|
||||||
|
|
||||||
@@ -22,35 +22,6 @@
|
|||||||
./variables.nix
|
./variables.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# USBGuard:
|
|
||||||
# Allow all USB devices until a proper policy is configured.
|
|
||||||
# Run `sudo usbguard generate-policy` with your devices plugged in,
|
|
||||||
# then set rules = "<output>" and switch implicitPolicyTarget to "block".
|
|
||||||
# services.usbguard.implicitPolicyTarget = lib.mkForce "allow";
|
|
||||||
|
|
||||||
services.usbguard.rules = ''
|
|
||||||
allow id 1d6b:0002 serial "0000:05:00.3" name "xHCI Host Controller" hash "4a4NgfdUaJO43rkCzmWRSeHHR/uUh5+SNsXnhosm9qs=" parent-hash "ldMchY4Tt4GPUYo30eNGvai+Fs/EdnVY3vMyxJUq4Nk=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:05:00.3" name "xHCI Host Controller" hash "d+DNGWARDtv9nEK2ZvnNOCtFernuMu5/e/oZ7kCppqQ=" parent-hash "ldMchY4Tt4GPUYo30eNGvai+Fs/EdnVY3vMyxJUq4Nk=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0002 serial "0000:05:00.4" name "xHCI Host Controller" hash "icotY3rI59mWiKsGxc59BGZZeBjfbuH0b4NUByj3cbQ=" parent-hash "tHvBfznK5rpQn+oa0PEEjHa29EAEvGyCcZixsfwA6W0=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:05:00.4" name "xHCI Host Controller" hash "UbEoCZW8HT2ldc3qDeiK+IiQlGeaBC7F63681OwmKhI=" parent-hash "tHvBfznK5rpQn+oa0PEEjHa29EAEvGyCcZixsfwA6W0=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0002 serial "0000:07:00.3" name "xHCI Host Controller" hash "pz29Oo0RhQ+5+7LgOZR4v3OlcsVv3m9kCgGsGUnoUjI=" parent-hash "DRyV2/31MYHdzkIEfbPQeb/1w4/PjOW6GqWrXkftf2I=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:07:00.3" name "xHCI Host Controller" hash "O6iOpcl9StImWT62SrbeXacqbG6N/mTIipTRc0ipCGM=" parent-hash "DRyV2/31MYHdzkIEfbPQeb/1w4/PjOW6GqWrXkftf2I=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0002 serial "0000:07:00.4" name "xHCI Host Controller" hash "Hp8B0Enf+ACRT2tyy0EqXj7eNsFDAnTRZadzuh/Iqd4=" parent-hash "l2vhvC+VGVKlkBUUK/usFu8jHJ/5bWOnJG6WzRexpt4=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:07:00.4" name "xHCI Host Controller" hash "rJ3LKdvkCK3SUrCU3lV8qVbmPjA+r9Fe5106x2HlgK4=" parent-hash "l2vhvC+VGVKlkBUUK/usFu8jHJ/5bWOnJG6WzRexpt4=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 0bda:c85c serial "00e04c000001" name "Bluetooth Radio" hash "Q/wlToV8WQgEYHBW/UIhnSwCCusCGqAR2D5gspSCImQ=" parent-hash "4a4NgfdUaJO43rkCzmWRSeHHR/uUh5+SNsXnhosm9qs=" with-interface { e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 } with-connect-type "hardwired"
|
|
||||||
allow id 30c9:009f serial "01.00.00" name "HP True Vision FHD Camera" hash "eYW5fqReJd29tfHXkEktKC63dGfDpmlRMo5uMGUWwME=" parent-hash "icotY3rI59mWiKsGxc59BGZZeBjfbuH0b4NUByj3cbQ=" with-interface { 0e:01:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 fe:01:01 } with-connect-type "hardwired"
|
|
||||||
allow id 03f0:036b serial "" name "HP USB-C Dock G5" hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" parent-hash "Hp8B0Enf+ACRT2tyy0EqXj7eNsFDAnTRZadzuh/Iqd4=" via-port "7-1" with-interface { 09:00:01 09:00:02 } with-connect-type "hotplug"
|
|
||||||
allow id 03f0:066b serial "" name "HP USB-C Dock G5" hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" parent-hash "rJ3LKdvkCK3SUrCU3lV8qVbmPjA+r9Fe5106x2HlgK4=" via-port "8-1" with-interface 09:00:00 with-connect-type "hotplug"
|
|
||||||
allow id 03f0:056b serial "201604140001" name "USB Audio" hash "OxQ8HQenW3/4HSGEBOSYFS15rXDTOaNDnjMbICweHgw=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" with-interface { 01:01:00 01:02:00 01:02:00 01:02:00 01:02:00 03:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 03f0:086b serial "" name "USB2734" hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" via-port "7-1.3" with-interface { 09:00:01 09:00:02 } with-connect-type "unknown"
|
|
||||||
allow id 03f0:046b serial "11AD1D0A89EA2D08310E0B00" name "HP USB-C Dock G5" hash "DEGeuj1u4lwqrzp0UksFX7mSEY9JnGLxg7yxGbglAKE=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" with-interface { 11:00:00 ff:03:00 03:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 03f0:076b serial "" name "USB5734" hash "BshoqybYo0IKgoDORYPRtbhhlmQrYAxPQb2EAm1JsWA=" parent-hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" via-port "8-1.3" with-interface 09:00:00 with-connect-type "unknown"
|
|
||||||
allow id 0bda:8153 serial "000001000000" name "USB 10/100/1000 LAN" hash "utEnXKJ57kRUbPcGUaNWhEyoOEbLOYAFxvlsyC0PZkk=" parent-hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" with-interface { ff:ff:00 02:06:00 0a:00:00 0a:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 046d:0ab7 serial "2046BAB04T68" name "Blue Microphones" hash "cC6AQ2e1Q/BeFeostpbf1mH2WpoUmt6bhau4NlA3niU=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" with-interface { 01:01:00 01:02:00 01:02:00 01:02:00 01:02:00 01:02:00 01:02:00 03:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 1532:02a1 serial "" name "Razer Ornata V3" hash "wfuIjBhhGuge8gflyA526SKqKoy8rHJZQZ+2o6usMiE=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" via-port "7-1.3.3" with-interface { 03:01:01 03:00:01 03:00:02 } with-connect-type "unknown"
|
|
||||||
allow id 13fd:5900 serial "50026B76861EE752 " name "External" hash "l/QvVV5hzZj1z6OUwB/kWl+WnH/7awrdMBoiNVx660M=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" with-interface { 08:06:50 08:06:62 } with-connect-type "unknown"
|
|
||||||
'';
|
|
||||||
|
|
||||||
home-manager.users."${config.var.username}" = import ./home.nix;
|
home-manager.users."${config.var.username}" = import ./home.nix;
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
nixpkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
nixpkgs.lib.nixosSystem {
|
|
||||||
modules = [
|
|
||||||
{
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
];
|
|
||||||
_module.args = {inherit inputs;};
|
|
||||||
}
|
|
||||||
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
inputs.nix-index-database.nixosModules.default
|
|
||||||
inputs.helium-browser.nixosModules.default
|
|
||||||
./configuration.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -11,13 +11,7 @@
|
|||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "uas" "usbhid" "sd_mod"];
|
||||||
"nvme"
|
|
||||||
"xhci_pci"
|
|
||||||
"uas"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = ["kvm-amd"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
@@ -30,10 +24,7 @@
|
|||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/5251-9B85";
|
device = "/dev/disk/by-uuid/5251-9B85";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = ["fmask=0077" "dmask=0077"];
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [];
|
||||||
|
|||||||
+54
-29
@@ -1,26 +1,26 @@
|
|||||||
{config, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Programs
|
# Programs
|
||||||
../../home/programs/helium
|
../../home/programs/vivaldi
|
||||||
../../home/programs/proton
|
../../home/programs/proton
|
||||||
../../home/programs/proton/auto-start-vpn.nix
|
|
||||||
../../home/programs/ghostty
|
../../home/programs/ghostty
|
||||||
../../home/programs/nvf
|
../../home/programs/nvf
|
||||||
../../home/programs/shell
|
../../home/programs/shell
|
||||||
|
../../home/programs/fetch
|
||||||
../../home/programs/git
|
../../home/programs/git
|
||||||
../../home/programs/git/lazygit.nix
|
../../home/programs/git/lazygit.nix
|
||||||
../../home/programs/git/signing.nix # CHANGEME: Change the key or remove this file
|
../../home/programs/git/signing.nix # Change the key or remove this file
|
||||||
|
../../home/programs/spicetify
|
||||||
../../home/programs/thunar
|
../../home/programs/thunar
|
||||||
|
../../home/programs/discord
|
||||||
../../home/programs/nixy
|
../../home/programs/nixy
|
||||||
|
../../home/programs/zathura
|
||||||
../../home/programs/nightshift
|
../../home/programs/nightshift
|
||||||
../../home/programs/nix-utils
|
|
||||||
../../home/programs/spotatui
|
|
||||||
../../home/programs/yazi
|
|
||||||
|
|
||||||
../../home/programs/group/basic-apps.nix
|
|
||||||
../../home/programs/group/cybersecurity.nix
|
../../home/programs/group/cybersecurity.nix
|
||||||
../../home/programs/group/dev.nix
|
|
||||||
../../home/programs/group/misc.nix
|
|
||||||
|
|
||||||
# System (Desktop environment like stuff)
|
# System (Desktop environment like stuff)
|
||||||
../../home/system/hyprland
|
../../home/system/hyprland
|
||||||
@@ -34,30 +34,55 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
# Apps
|
||||||
|
vlc # Video player
|
||||||
|
blanket # White-noise app
|
||||||
|
obsidian # Note taking app
|
||||||
|
textpieces # Manipulate texts
|
||||||
|
resources # Ressource monitor
|
||||||
|
gnome-clocks # Clocks app
|
||||||
|
gnome-text-editor # Basic graphic text editor
|
||||||
|
mpv # Video player
|
||||||
|
ticktick # Todo app
|
||||||
|
session-desktop # Session app, private messages
|
||||||
|
signal-desktop # Signal app, private messages
|
||||||
|
stirling-pdf # TODO: Server version
|
||||||
|
calibre
|
||||||
|
|
||||||
|
# Dev
|
||||||
|
go
|
||||||
|
bun
|
||||||
|
docker
|
||||||
|
nodejs
|
||||||
|
python3
|
||||||
|
jq
|
||||||
|
just
|
||||||
|
pnpm
|
||||||
|
air
|
||||||
|
duckdb
|
||||||
|
|
||||||
|
# Just cool
|
||||||
|
peaclock
|
||||||
|
cbonsai
|
||||||
|
pipes
|
||||||
|
cmatrix
|
||||||
|
fastfetch
|
||||||
|
|
||||||
|
# Backup
|
||||||
|
vscode
|
||||||
|
brave
|
||||||
|
];
|
||||||
|
|
||||||
inherit (config.var) username;
|
inherit (config.var) username;
|
||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
file.".face" = {
|
|
||||||
source = ./profile_picture.png;
|
|
||||||
};
|
|
||||||
|
|
||||||
sessionVariables = {
|
# Import a profile picture, used by the caelestia dashboard
|
||||||
AQ_DRM_DEVICES = "/dev/dri/card2:/dev/dri/card1"; # CHANGEME: Related to the GPU
|
file.".face" = {source = ./profile_picture.png;};
|
||||||
};
|
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
stateVersion = "24.05";
|
stateVersion = "24.05";
|
||||||
};
|
};
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.monitor = [
|
programs.home-manager.enable = true;
|
||||||
"eDP-2,highres,0x0,1" # My internal laptop screen
|
|
||||||
"desc:AOC U34G2G1 0x00000E06,3440x1440@99.98,auto,1" # My external monitor
|
|
||||||
];
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
home-manager.enable = true;
|
|
||||||
nixy = {
|
|
||||||
enable = true;
|
|
||||||
configDirectory = config.var.configDirectory;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +1,27 @@
|
|||||||
# Those are my secrets, encrypted with sops
|
# Those are my secrets, encrypted with sops
|
||||||
# You shouldn't import this file, unless you edit it
|
# You shouldn't import this file, unless you edit it
|
||||||
{
|
{
|
||||||
inputs,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
inputs,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
home = config.home.homeDirectory;
|
|
||||||
in {
|
|
||||||
imports = [inputs.sops-nix.homeManagerModules.sops];
|
imports = [inputs.sops-nix.homeManagerModules.sops];
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
age.keyFile = "/home/hadi/.config/sops/age/keys.txt";
|
||||||
defaultSopsFile = ./secrets.yaml;
|
defaultSopsFile = ./secrets.yaml;
|
||||||
secrets = {
|
secrets = {
|
||||||
ssh-config = {
|
sshconfig = {path = "/home/hadi/.ssh/config";};
|
||||||
path = "${home}/.ssh/config";
|
github-key = {path = "/home/hadi/.ssh/github";};
|
||||||
};
|
jack-key = {path = "/home/hadi/.ssh/jack";};
|
||||||
github-key = {
|
signing-key = {path = "/home/hadi/.ssh/key";};
|
||||||
path = "${home}/.ssh/github";
|
signing-pub-key = {path = "/home/hadi/.ssh/key.pub";};
|
||||||
};
|
|
||||||
jack-key = {
|
|
||||||
path = "${home}/.ssh/jack";
|
|
||||||
};
|
|
||||||
signing-key = {
|
|
||||||
path = "${home}/.ssh/key";
|
|
||||||
};
|
|
||||||
signing-pub-key = {
|
|
||||||
path = "${home}/.ssh/key.pub";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".config/nixos/.sops.yaml".text = ''
|
home.file.".config/nixos/.sops.yaml".text = ''
|
||||||
keys:
|
keys:
|
||||||
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
||||||
- &work age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: hosts/laptop/secrets/secrets.yaml$
|
- path_regex: hosts/laptop/secrets/secrets.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
@@ -45,17 +31,10 @@ in {
|
|||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *primary
|
- *primary
|
||||||
- path_regex: hosts/work/secrets/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *work
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
systemd.user.services.mbsync.Unit.After = ["sops-nix.service"];
|
systemd.user.services.mbsync.Unit.After = ["sops-nix.service"];
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [sops age];
|
||||||
sops
|
|
||||||
age
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start sops-nix"];
|
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start sops-nix"];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
ssh-config: ENC[AES256_GCM,data:/TWslzoF2wtZ9T41H1y0wLNEx+Xzff8pQGr6AfEcACExRCv4rd5hD9pNAlmlcTtISJJBPEWY45WsLfSKuD4r3715IENM2biQUvlq47THfkGviQuQ6KAXiJxBQ/7qRNqGGt7WFRlWFRGYCiyjw9h4pOhovGgw8TU6tIgIsXjo0psclHoJoE4B3cSOby7DbN8jVI9NjpBGiQMXmUB3JVz7muC9F5EAs+XZUIl7TjQMxob3PiF5LqTJITODSxboAAk901rjS5gjQKpQKfj28TpUs5yCIo9RzSBO3z5orJy+ylupocRuqtC8ujAMqNb828G+0nRx18tpiGqXxRWUBZRNbM+vQHWzb5JWQpEBsu1twsOownVVrkyPkbLpYX4YSSnRdnL8VHmlZfLk1ZFURbsdDSRf57F+Bxo5Yn8XAkFaM5HYgUo4VBabGzVVAHOBWJWi3lRrlAqYdMBbSvDl1t6eQ0xp990RGh7wZvwnaTDqtkOJnLoAknTFi4yjMzSyk5UV,iv:1UJQU4eBZE1BMVnJY2CQTDH8jXSMlrv3gGU3cKTOvdU=,tag:OzLQRkTAKG2KQXv+Vh7Msw==,type:str]
|
pia: ENC[AES256_GCM,data:0bnhHeVqKSLHVimd78a94ShHlO3+LUoZ4oiKD3cnBYkaZsw=,iv:S+/IChlFlqdI+PyFF+Ti4AJUkch2MS0qKiqHL1Q3RMk=,tag:+v2kV70ou84eIc01dKnAhA==,type:str]
|
||||||
|
sshconfig: ENC[AES256_GCM,data:1EY0vnJ6NHb/GODYkiOKVR6i0UoojFPileQW1/ZokxDswGnz6P0eicS72wkMjwsw9tY5l0OM0NNbTIyYkqgE+q0HJw8IkRHvmvBq4AX/6o+2++YJuDTMpCcDkMAp4BNtrzqpBkKaqXJgMbxTpEPRNTnSpg96sinluCtuASEZaI8Ej+QKq/pEeELIGnkYkUr9d8/M8ZavzZ59oQmUsOxOCtYBsCi5BHMpATfVg+WqyXv3uptMB2PoTwsJiJ9IiQTJHWgkpe+WpIIsi4Dc49YpX3O2pHytimfuuy8D5DESKTOtcqg8qIL/xcR8iJl8ISJAA9IZg8eJ1FYdEpfTruwfiPYo6Ce5zH4W/BVm3iQ8B3Tuzi+gvRBwffcRpYkdAS4c7tk7cgF3U7sr1L7yLL6OmuBXaNSnALyHO2W5b3tefGY0YmwGUfh6M5FMI8/5SfxcMfSOAZKxhcckRL1CpFMzmKkAdY/PRCghmEWobU1KswBPiYWQ6vfubbdN1Yx1mng4z6zmkXmiqrc5IQfOBpbY71VnUoXh384Et9PM3cti4K6SmZFYX1uZStP7KXLhw4ZnVZ0J0fIks4RZ11A3NWtE1yak9z7QXj7k/PtdfrsNtIphVZ7LsZEvOvdgIlUToYNcyvagYsRRlreQPqhLSc7ninjIbRaL4a/s6kIdrr3qovPNSlE3R3HRGTBOjTEF9Bmp+oGb5L9HvBBu6NmNwHQ76gySAXbMnRa34JuXtzpEIZ5yo4AI5i2eDPeM2Dx6jUSl7OJm3wT6cVMF/2rLj0zHzp8B1bYOsf7VaMzHCYEhXMu7REMmmfDKwtb9zsuf/r1zlPXJcukDCrtJ3Z/mFl03,iv:0hS7g9gVVntWVSRSPCgZ3rjGcMf2RzQPjMpgSz0GlxE=,tag:mnDakNZiG28H4jmnZH00eg==,type:str]
|
||||||
github-key: ENC[AES256_GCM,data:xUgFMlBo8e+3eXqNscxbby1dWug3SgUagDiNUe/IGVbU6cczkaJ3uOaB0OuRBQ8AYhOLkzXj0pIKjUrElHwmYrhURtS1aF4SFEGJsjhhobNA//j3E2/5/nLVjfco+lRzyHdwmsNhEUCqEhsXrrodJMb39H4b5oip3z0rjc729YveiWUKQxXVZVPurp3nq9yNnix9R4CA6XYFRW6T6MNqgPD5qhbcDlhxLb/SN+uI5h+5eZIS24VDWlKaTaCLL5KLhZmfuA37SquOQ+edi9Yg8MnfrZkMrp/3qmAjP2rSQLMOc4QdQCLQBQSf0/snpydgLwY+FoJmMSztwtkqUdIZWOfDUJbJxegEOrAR68jLTNbp+GYiDn3thtOZDiK5p/M1amjCT+A9qeFMed5WS+aZHNTRbR9UcfiP6+48MGZFt1mr7q+/CoL04/DTp0w6tUf6/SZD31NvTJDqngkhpc0ZH9Dh5+2JcnBWpq25AM36kZTn1hIQCLNTr/oGWZXSLA2tksAhQCaUcFj4IIh6Bl96,iv:GEJsAs5NriwENYTV/VShgJF6iMmrtTwNiXOvfXyEP8E=,tag:nfZgsFqaet075GjQAoVZxQ==,type:str]
|
github-key: ENC[AES256_GCM,data:xUgFMlBo8e+3eXqNscxbby1dWug3SgUagDiNUe/IGVbU6cczkaJ3uOaB0OuRBQ8AYhOLkzXj0pIKjUrElHwmYrhURtS1aF4SFEGJsjhhobNA//j3E2/5/nLVjfco+lRzyHdwmsNhEUCqEhsXrrodJMb39H4b5oip3z0rjc729YveiWUKQxXVZVPurp3nq9yNnix9R4CA6XYFRW6T6MNqgPD5qhbcDlhxLb/SN+uI5h+5eZIS24VDWlKaTaCLL5KLhZmfuA37SquOQ+edi9Yg8MnfrZkMrp/3qmAjP2rSQLMOc4QdQCLQBQSf0/snpydgLwY+FoJmMSztwtkqUdIZWOfDUJbJxegEOrAR68jLTNbp+GYiDn3thtOZDiK5p/M1amjCT+A9qeFMed5WS+aZHNTRbR9UcfiP6+48MGZFt1mr7q+/CoL04/DTp0w6tUf6/SZD31NvTJDqngkhpc0ZH9Dh5+2JcnBWpq25AM36kZTn1hIQCLNTr/oGWZXSLA2tksAhQCaUcFj4IIh6Bl96,iv:GEJsAs5NriwENYTV/VShgJF6iMmrtTwNiXOvfXyEP8E=,tag:nfZgsFqaet075GjQAoVZxQ==,type:str]
|
||||||
|
gitlab-key: ENC[AES256_GCM,data:6271Tg7LIJsXAw7Co32vva+iUWv+eRAfVfXaGkoirHxiPTAgZfq8yDpGJwti2D/aFnLvbURcUgp3B5zy1aURu9puXi6QMu3orJOE2Zx0dX3lyeHyIhOZ1hAWsQxwBDkJYODuMZbIKHNrF26Mkk6smFF9SrGoADZGxY7XSou/iopw6yrLvQAXP6lN55PQvoP5/ek/QzKNwjJAbAjp7FjjtPqPUbUdj7bfIfr9avs6gpRYnRzb2H3auyhb5qvyuRWnKu4+FeZUofC7HnfRU1eSI8UzG49Rg4f2b1Xqr0JtsjvEmuRx7lbptINXEAjW7zaSZ2B9NgotWPIzkNZRNZkuTEaOulBf5iH3wJ9GM1FcbUu2gpCt6y+CMIk5QkVvETYtKuALLbcPx9/sc90doiH1411LeKQCs5l88BBILG9KPkKmXiGGUVNxzFtjbRYQIUEmmyl95kPPEdCkkzGzHXNfE3F9HRu4MCGKPK2yZPZtCXd3Jp1b21wKSIRNYqLqxru+J8eLSljd3czO0SuTG/Vx,iv:E+y3aVLaiStlPLTQBqyfJuEXtAQyOvDUYS+XfuOHuA0=,tag:6d1IAsGcmcpgL1pE9dDcbw==,type:str]
|
||||||
jack-key: ENC[AES256_GCM,data:VfCl3wH0MMBc8QDyjLDFeSvzSEsf7uGpfJvRjFrmjW+bPRUXBpZhJV8a9VQIAz7z7zZXvzARMfCeI0ydyC57CW81GH5/H5pneJ4b+xreINjVfdLbL1nC1thelo/O64jda/L+xVKhgE+QQi8/zt4JmXGghkP+74nYcTTaMpmcbgWw354J1ybXqyCEY+88nsJ1d2s+M7M2bplx4fGb7sLUs6sqdsad3sENzhH/0HQCFXreHTtgsLbIs8ccmdRgFNKM8/wD0OoW76rOQsJoA9JY4yOTQNVoX5M8+Olj6+wVlt6QBrWrYRuEztGnHrHvzxiHXtmEkMwVNfoPpEflQyRYRa0rVp/66REOkMckGx6/LbxKFgrxnifRlsK3kWd28v2bRGVQOghUluYUtVkaJ+eh6o6ik0NQKx8/H6BznBSDE6MjDwbLv434LHBfDtAqhWN1eMbOlunFivsl5Hb/6rl9kydHlcCS6FY8cUHoKQ90gDaUuDrvUifwmdO5hU0GH5tgvGi1ReK9ndcpQsrHptG6,iv:oC1xU5Tu3The105VYRmxIw4kEwDoqe8T/EH6mmqpqwQ=,tag:Pu8c536u6W7ALrqjRsvXDw==,type:str]
|
jack-key: ENC[AES256_GCM,data:VfCl3wH0MMBc8QDyjLDFeSvzSEsf7uGpfJvRjFrmjW+bPRUXBpZhJV8a9VQIAz7z7zZXvzARMfCeI0ydyC57CW81GH5/H5pneJ4b+xreINjVfdLbL1nC1thelo/O64jda/L+xVKhgE+QQi8/zt4JmXGghkP+74nYcTTaMpmcbgWw354J1ybXqyCEY+88nsJ1d2s+M7M2bplx4fGb7sLUs6sqdsad3sENzhH/0HQCFXreHTtgsLbIs8ccmdRgFNKM8/wD0OoW76rOQsJoA9JY4yOTQNVoX5M8+Olj6+wVlt6QBrWrYRuEztGnHrHvzxiHXtmEkMwVNfoPpEflQyRYRa0rVp/66REOkMckGx6/LbxKFgrxnifRlsK3kWd28v2bRGVQOghUluYUtVkaJ+eh6o6ik0NQKx8/H6BznBSDE6MjDwbLv434LHBfDtAqhWN1eMbOlunFivsl5Hb/6rl9kydHlcCS6FY8cUHoKQ90gDaUuDrvUifwmdO5hU0GH5tgvGi1ReK9ndcpQsrHptG6,iv:oC1xU5Tu3The105VYRmxIw4kEwDoqe8T/EH6mmqpqwQ=,tag:Pu8c536u6W7ALrqjRsvXDw==,type:str]
|
||||||
signing-key: ENC[AES256_GCM,data:NvLqmt7NzrWkbQQqFfosmSMvEv8C8+MDDpxSoDo3zZ3MR6WXr9B+6CnUc6rtevM230wgE17VC9XlmcQxX+PjJsWq6gZteK5THTIcrR5zPJVNlVCEyeLKoFj/6m7qBgyyoN3OjCNjgMkhsm009jwBgNk0qJMAYebOGo8eoP/al+4ytm7dhna+iX5WZabAg0J4z4JMDQonqQl3SaDnCEdHvk9m7ZEP2vUFscPkbLj4ewgFq+bUCHOOQb2uqRJoEgcR/NetRFcQfzcU6lp7JxobaICaO3zdmomUm7oabIUTrc3Kom3Wjw8ryqfqC1/SC0SHr5XGk2ygk0WnlQ4kNshqriL2dwbWAzy1Z/cTX9+aB/KNtC0U6zWG1bpnL3dgSgvhRiocIis/eNg1HWsLWVicmdebL/lXHztxFMdTuX/gWgQBotggTmx+OFGZfP9ZGlF3635mDxM/fEOCtTyA195dMicCUsjEpBegNtXsp+oOtxyRI0jSW47MBcXFP09f5ywELTPyz4eOUHO8sQ6UfJ6X,iv:KNQUlMPaiR4x1Fw+HZe/EOmh/gfsrqlefpq23uflz/8=,tag:illu42HKunQXnijjsUIvnQ==,type:str]
|
signing-key: ENC[AES256_GCM,data:NvLqmt7NzrWkbQQqFfosmSMvEv8C8+MDDpxSoDo3zZ3MR6WXr9B+6CnUc6rtevM230wgE17VC9XlmcQxX+PjJsWq6gZteK5THTIcrR5zPJVNlVCEyeLKoFj/6m7qBgyyoN3OjCNjgMkhsm009jwBgNk0qJMAYebOGo8eoP/al+4ytm7dhna+iX5WZabAg0J4z4JMDQonqQl3SaDnCEdHvk9m7ZEP2vUFscPkbLj4ewgFq+bUCHOOQb2uqRJoEgcR/NetRFcQfzcU6lp7JxobaICaO3zdmomUm7oabIUTrc3Kom3Wjw8ryqfqC1/SC0SHr5XGk2ygk0WnlQ4kNshqriL2dwbWAzy1Z/cTX9+aB/KNtC0U6zWG1bpnL3dgSgvhRiocIis/eNg1HWsLWVicmdebL/lXHztxFMdTuX/gWgQBotggTmx+OFGZfP9ZGlF3635mDxM/fEOCtTyA195dMicCUsjEpBegNtXsp+oOtxyRI0jSW47MBcXFP09f5ywELTPyz4eOUHO8sQ6UfJ6X,iv:KNQUlMPaiR4x1Fw+HZe/EOmh/gfsrqlefpq23uflz/8=,tag:illu42HKunQXnijjsUIvnQ==,type:str]
|
||||||
signing-pub-key: ENC[AES256_GCM,data:XuokZmCsnaNQ0rvVa3k81T4vtxw//r63xp1yHDLaNAMwA2r2bh6addl9WoAmm76g1rweqZrAAIw1PXDb90ubPaBP1iEHSkGZpwUpy/tOTePRdHMW2WtVvidpHQ==,iv:auB/bA89cJK6DnQi1BK2uldXRPyJfo+r7nl5qOLefUk=,tag:/I3kB6El1yesBMGOjJ+oHA==,type:str]
|
signing-pub-key: ENC[AES256_GCM,data:XuokZmCsnaNQ0rvVa3k81T4vtxw//r63xp1yHDLaNAMwA2r2bh6addl9WoAmm76g1rweqZrAAIw1PXDb90ubPaBP1iEHSkGZpwUpy/tOTePRdHMW2WtVvidpHQ==,iv:auB/bA89cJK6DnQi1BK2uldXRPyJfo+r7nl5qOLefUk=,tag:/I3kB6El1yesBMGOjJ+oHA==,type:str]
|
||||||
@@ -14,7 +16,7 @@ sops:
|
|||||||
cmVxVC8rVDlWMUdZaGw3bmdOaWZGS1EKYahBlc8XpB5UdKZQkvxbLcKQ/xkFJjWo
|
cmVxVC8rVDlWMUdZaGw3bmdOaWZGS1EKYahBlc8XpB5UdKZQkvxbLcKQ/xkFJjWo
|
||||||
FSfQWnjhe/a7BJtJEcKZkjOQU0mYqlSu+uT2RA9diCQeRUJPRF+nAw==
|
FSfQWnjhe/a7BJtJEcKZkjOQU0mYqlSu+uT2RA9diCQeRUJPRF+nAw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-04-25T11:23:30Z"
|
lastmodified: "2025-09-27T13:28:57Z"
|
||||||
mac: ENC[AES256_GCM,data:ZnLSwtyhaiMIcXxzlwhtk0dWVnOkn0avfeRezPPNBUXd0oyJY+krBsLXJdSNPHV/X/L58476okYjUzfIQzEAkrL9Fb7v/Jt0aw4SDrxbF+qbcfdvsWPUjFDJIPovuf3ee3o7iXGU2ItGTaJa2eFACoyd37KVc7jZd6gvYYAyULA=,iv:7IKqe0c5CTgJrS7OgCQWhtxaCVKo+UWEibttFUVCWGM=,tag:OfCrKPzrPBZThCR1j7IB7A==,type:str]
|
mac: ENC[AES256_GCM,data:XMPDLGHwTYIxgEz9Stj7j+lWgAOpzkEsnoRdWVVs4798m1sQRIyUuvEiCgbHoAktajrAAzXq3GZ4HJ1dfE1fDWGh+B7WwRoJKxtP6qI8Ub4h7lSiDsxJhr8ieqm5bzmHZkn8VJkrqBrSSXesirLprRLR5yZOVLAgco0lg9boM1Y=,iv:pYA5oz8cldKw1Ai7k2LCQBipE2keZa49L3SHcL+eDp0=,tag:4kVsC95SSPCCSZDf6qDeqA==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.12.2
|
version: 3.10.2
|
||||||
|
|||||||
@@ -5,16 +5,20 @@
|
|||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Choose your theme here:
|
# Choose your theme here:
|
||||||
../../themes/nixy.nix
|
../../themes/rose-pine.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config.var = {
|
config.var = {
|
||||||
hostname = "h-laptop";
|
hostname = "nixy";
|
||||||
username = "hadi";
|
username = "hadi";
|
||||||
configDirectory = "/home/" + config.var.username + "/.config/nixos"; # The path of the nixos configuration directory
|
configDirectory =
|
||||||
|
"/home/"
|
||||||
|
+ config.var.username
|
||||||
|
+ "/.config/nixos"; # The path of the nixos configuration directory
|
||||||
|
|
||||||
keyboardLayout = "fr";
|
keyboardLayout = "fr";
|
||||||
|
|
||||||
|
location = "Paris";
|
||||||
timeZone = "Europe/Paris";
|
timeZone = "Europe/Paris";
|
||||||
defaultLocale = "en_US.UTF-8";
|
defaultLocale = "en_US.UTF-8";
|
||||||
extraLocale = "fr_FR.UTF-8";
|
extraLocale = "fr_FR.UTF-8";
|
||||||
|
|||||||
@@ -6,27 +6,19 @@
|
|||||||
../../nixos/systemd-boot.nix
|
../../nixos/systemd-boot.nix
|
||||||
../../nixos/users.nix
|
../../nixos/users.nix
|
||||||
../../nixos/utils.nix
|
../../nixos/utils.nix
|
||||||
../../nixos/amd-graphics.nix
|
../../nixos/docker.nix
|
||||||
|
../../nixos/tailscale.nix
|
||||||
|
|
||||||
# NixOS server modules
|
# NixOS server modules
|
||||||
../../server-modules/ssh.nix
|
../../server-modules/ssh.nix
|
||||||
|
# ../../server-modules/bitwarden.nix
|
||||||
../../server-modules/firewall.nix
|
../../server-modules/firewall.nix
|
||||||
../../server-modules/cloudflared.nix
|
../../server-modules/nginx.nix
|
||||||
../../server-modules/glance
|
../../server-modules/glance.nix
|
||||||
../../server-modules/adguardhome.nix
|
../../server-modules/adguardhome.nix
|
||||||
../../server-modules/arr.nix
|
../../server-modules/arr.nix
|
||||||
../../server-modules/blog.nix
|
|
||||||
../../server-modules/awesome-wallpapers.nix
|
|
||||||
../../server-modules/iknowyou.nix
|
|
||||||
../../server-modules/stirling-pdf.nix
|
|
||||||
../../server-modules/cyberchef.nix
|
|
||||||
../../server-modules/mazanoke.nix
|
|
||||||
../../server-modules/kernel-hardening.nix
|
|
||||||
../../server-modules/fail2ban.nix
|
|
||||||
../../server-modules/default-creds.nix
|
|
||||||
../../server-modules/umami.nix
|
|
||||||
../../server-modules/gitea.nix
|
|
||||||
../../server-modules/mealie.nix
|
../../server-modules/mealie.nix
|
||||||
|
../../server-modules/eleakxir.nix
|
||||||
|
|
||||||
# You should let those lines as is
|
# You should let those lines as is
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
nixpkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
nixpkgs.lib.nixosSystem {
|
|
||||||
modules = [
|
|
||||||
{_module.args = {inherit inputs;};}
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.nixarr.nixosModules.default
|
|
||||||
inputs.nix-index-database.nixosModules.default
|
|
||||||
inputs.default-creds.nixosModules.default
|
|
||||||
./configuration.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -9,14 +9,7 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
|
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usbhid"
|
|
||||||
"usb_storage"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = ["dm-snapshot"];
|
boot.initrd.kernelModules = ["dm-snapshot"];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = ["kvm-amd"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
@@ -27,18 +20,12 @@
|
|||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/DD15-1125";
|
device = "/dev/disk/by-uuid/DD15-1125";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = ["fmask=0077" "dmask=0077"];
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
fileSystems."/mnt/data" = {
|
fileSystems."/mnt/data" = {
|
||||||
device = "/dev/disk/by-uuid/0b055155-0134-448c-b1ca-e81030ff064e";
|
device = "/dev/disk/by-uuid/0b055155-0134-448c-b1ca-e81030ff064e";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [
|
options = ["subvol=/" "compress=zstd"]; # adapte selon si t'as des subvolumes
|
||||||
"subvol=/"
|
|
||||||
"compress=zstd"
|
|
||||||
]; # adapte selon si t'as des subvolumes
|
|
||||||
};
|
};
|
||||||
swapDevices = [];
|
swapDevices = [];
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
@@ -48,5 +35,6 @@
|
|||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode =
|
||||||
|
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
|||||||
+30
-11
@@ -1,4 +1,8 @@
|
|||||||
{config, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Mostly user-specific configuration
|
# Mostly user-specific configuration
|
||||||
./variables.nix
|
./variables.nix
|
||||||
@@ -6,27 +10,42 @@
|
|||||||
# Programs
|
# Programs
|
||||||
../../home/programs/nvf
|
../../home/programs/nvf
|
||||||
../../home/programs/shell
|
../../home/programs/shell
|
||||||
|
../../home/programs/fetch
|
||||||
../../home/programs/git
|
../../home/programs/git
|
||||||
../../home/programs/git/lazygit.nix
|
../../home/programs/lazygit
|
||||||
../../home/programs/nixy
|
|
||||||
../../home/programs/nix-utils
|
|
||||||
../../home/programs/yazi
|
|
||||||
|
|
||||||
../../home/programs/group/dev.nix
|
# Scripts
|
||||||
|
../../home/scripts # All scripts
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
inherit (config.var) username;
|
inherit (config.var) username;
|
||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
# Dev
|
||||||
|
go
|
||||||
|
nodejs
|
||||||
|
python3
|
||||||
|
jq
|
||||||
|
just
|
||||||
|
pnpm
|
||||||
|
wireguard-tools
|
||||||
|
duckdb
|
||||||
|
|
||||||
|
# Utils
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
optipng
|
||||||
|
pfetch
|
||||||
|
btop
|
||||||
|
fastfetch
|
||||||
|
tailscale
|
||||||
|
];
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
stateVersion = "24.05";
|
stateVersion = "24.05";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
programs.nixy = {
|
|
||||||
enable = true;
|
|
||||||
configDirectory = config.var.configDirectory;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,8 +26,5 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [sops age];
|
||||||
sops
|
|
||||||
age
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
umami-secret: ENC[AES256_GCM,data:tImpd4sD92Omf/YFB8YE4gxAu+g801wQNR+k5rhY6AbzIIYOzpVmQL4XGjfp9Teky3olii4s3XTcmTyuMoxMWg==,iv:QFAEzYnAnxOOtrHWiM2IkvSs0Aqk3s1T5X7j5WC+tO8=,tag:FIbgHLfRVMJ2qZ6dOJ8zLw==,type:str]
|
|
||||||
sshconfig: ENC[AES256_GCM,data:R54HVxqAyj9yGO/AYL8p6cnXgYxkQKW9XveHlBMTnDXBJ7r/4HgnefdymprnXmdlbNWcWrRqmaLEuzJs/0BfixXfMvmGTUrmJ0ASVuDrz9k6rOLADAKFikQh0dib7NU4JmPgmUzMncXc2WuCd3BCG3kwBQ==,iv:Ro9FA+MzTAp+ERQMT88z8ioCox/dTj2vWcqCDOSLag4=,tag:5XiXIyz5/pjGFOB5ZjdOVg==,type:str]
|
sshconfig: ENC[AES256_GCM,data:R54HVxqAyj9yGO/AYL8p6cnXgYxkQKW9XveHlBMTnDXBJ7r/4HgnefdymprnXmdlbNWcWrRqmaLEuzJs/0BfixXfMvmGTUrmJ0ASVuDrz9k6rOLADAKFikQh0dib7NU4JmPgmUzMncXc2WuCd3BCG3kwBQ==,iv:Ro9FA+MzTAp+ERQMT88z8ioCox/dTj2vWcqCDOSLag4=,tag:5XiXIyz5/pjGFOB5ZjdOVg==,type:str]
|
||||||
github-key: ENC[AES256_GCM,data:NRYhcBIwGJEV13+YECLR+2IErsn/7clbnkx0Mltr7dQajSb5WHZ3QDH0KQPylEHhplE5IVS0h4I0z+Pb1B0UteCxFmJ5wZq+2BKZkvE7G3dojqBpgHcVqJV2GLEJkRjlHfRgsbq/OBe8xcsPh20P1KUyP0WIwVbpt+9dFWGxEGYkp2uSyuBIJ98kElt0zuVgl7WcYoDO7v5WmGzZfla+yZwURvMk8zcM3gopo+4KL6YnYUs+UA3VlBBn6VK4Nvbqy6X0R0+ZA5HHAXg+OFgGmfWnENZmsyQJHXEchGGgEldzThkQ4r8yMkgN/ax+AGouLyzbITapGE4sE11FFgL6Hmp4pSXxl3UAGF+cvV5pIujbb28CXmSPRMyYpoNxI93PSYz/txAzE6Cr2dgwxR4zpMelv4i6IaGnY8NgpY8jp2Y6C0uuJxJCN0RtnjQw1rM2uRnm7vMGyU7XXz9DEVfGnYpTWnykXsEjHE5DVGy80ejYQlc6dtmf3vdTWpt+YYdCPw8/cd0PIx2D6geh1c28,iv:wl+RG24mXYMklD8CBGXVD36DMhlWT/7zh8ZMvr7vgOk=,tag:OJhqF8PoXotr7IsyFW6q1g==,type:str]
|
github-key: ENC[AES256_GCM,data:NRYhcBIwGJEV13+YECLR+2IErsn/7clbnkx0Mltr7dQajSb5WHZ3QDH0KQPylEHhplE5IVS0h4I0z+Pb1B0UteCxFmJ5wZq+2BKZkvE7G3dojqBpgHcVqJV2GLEJkRjlHfRgsbq/OBe8xcsPh20P1KUyP0WIwVbpt+9dFWGxEGYkp2uSyuBIJ98kElt0zuVgl7WcYoDO7v5WmGzZfla+yZwURvMk8zcM3gopo+4KL6YnYUs+UA3VlBBn6VK4Nvbqy6X0R0+ZA5HHAXg+OFgGmfWnENZmsyQJHXEchGGgEldzThkQ4r8yMkgN/ax+AGouLyzbITapGE4sE11FFgL6Hmp4pSXxl3UAGF+cvV5pIujbb28CXmSPRMyYpoNxI93PSYz/txAzE6Cr2dgwxR4zpMelv4i6IaGnY8NgpY8jp2Y6C0uuJxJCN0RtnjQw1rM2uRnm7vMGyU7XXz9DEVfGnYpTWnykXsEjHE5DVGy80ejYQlc6dtmf3vdTWpt+YYdCPw8/cd0PIx2D6geh1c28,iv:wl+RG24mXYMklD8CBGXVD36DMhlWT/7zh8ZMvr7vgOk=,tag:OJhqF8PoXotr7IsyFW6q1g==,type:str]
|
||||||
adguard-pwd: ENC[AES256_GCM,data:CAmZFpKN6FFRlCk=,iv:cz45T/z2ZYHNC46FNVp2YHmdhXD4ERhM31+Jo+9PkSk=,tag:GTUvzkYSP4flXs/HUNGYhw==,type:str]
|
cloudflare-dns-token: ENC[AES256_GCM,data:JIXUtVDpYS9B74W0ooj50kd4v2+PX+FdF218gvgaS04rYATu4N6w9KEFPfdQqLjUmVihzV6s/IR1fg==,iv:AlbQ86kvFQbetvmFwt/hEyUcqKTI+XzL/NvSMXW9wm4=,tag:1JQeK4KrTDa6Kz+JhWxkxQ==,type:str]
|
||||||
recyclarr: ENC[AES256_GCM,data:eJNbGHb4SZvbF7FAHMrpRynmpVyPiTpyZqNx40Fo+lanqdm7d7oRhkLD2PfqxpTcIyV6BxJk12wGUC0uWVuAihmToL/Ih2FJWIQFUOdbaov/xNWHE9mtoRX/A3gIwD8e3DoFMK/dAk2/TyvvAfxi2eYTDJvxecEttHQGxafq1jveHFDcC9e1aFk3M8O8YlX5yF3zl90mugsUVP+iaSURnY/nglZuEDzfJ6Edge7r5OSL6WYh3OUIu1yzuuKXRZ47B/gpXO/cP89JMmxdPj3FUJkk7Htf0s9ALzpVE9fRohDGcpPIkR6COCLTL+mqvVmyopA1zPoX8/X8eiuocpaT3vqJit7Bc6InzflY/5rlg1x0SyoXWQfEsperfNBeiZGngp382I7rrZ8QSwF4AIsmngNeyDRAnfasAU5OVwK+yPIVhRueEFLNrJPG3j2hpArlzpvY2EPBVJDrYwFslis8CASoUdvu6C7VxtJXFcOZR8QemwJarJFU7v1bVhQoIkarn3V7FfAXg/8RfYrn9HAIq5AiFFbQRNHWXzIceIgNKQFb5yfagtMtMq6XKhjsV07jeYt9X/YU80XRfkPm05yiLdLQHcDNmlB3R+SFPD7qjTE7LuSH1Kdc3DvxwrKfHJLsJ+nSIL1po8gDMW8BPc0g4n4dpQ6CFK5BaDFK4eovNpgAXoRC9orkGw/16YmMozp6J78VJLzu3jcYMFbySFznDUuWcFf/7dVV+7pLAj2ffWXzScLISRBhZ9RNUMaZAKAk7WTmxBhw0yzNiih8OFUkbpp1FFLuU0bnBY0iEz+8/OSwv8H7t0HYe29HO61p1huH34B/ZkPA5VLKivFh2mOPNzbvMqtIAkq1ro82Psvc6t88gVIc+VAOZ9zDLohp0FXrNVXwnrs7fxevQa0pUClDivO1ib5G4Znor7q+13jZglmh3G7nHiniO607dRoxszzVEQdTn8ku3XAfIPStsSfQwH46nXhr2kDkspcA7BqwJph0dsKKlfzf22C0OJkDY0L1DgKFvJRmmKAhOdB6XxXYwS+BcDT+8ugejTKpulyPSsbdb0m9p9lVAVu0GMxFEbUsuE+QHiAAP5Vle7swpl4h3i8uHSfKFra3qEswwRnPAHhPSdLSaSU6O6T5gN/b0hhO6dAiNR0UOkOG59fPasL0MRpeb3SkM4Nd6g5b/hY8dXaXR7pQHvh+4GmfJFWYaWm/cZ8k9JAYAw9Sn/spWnjRmpv9bnSxADGbkdV8NDHquDDDFVIIoDnWhQJpqrL61KZITx2Ete1SYdNiy++p3mOYisJgHDsRR1RNQNxhRW4EY8c5nCzgc8x+rU432pCOfMbAuGEfQXMwMGFGeoUg6EL5xEyUEJ/aqymxI+Vjk8h7KfDnOyyL/+1BKEd/GccrjeQfeZGRLI0Tu5gVgL6twc+u4av6inNMMhPFzZuVrfeo6bip5C8R0dK6Pbdz2L/fsgn3E4NNi14NM/DgLLhJRLvKQdCQx+BT+3soNRw5htTzuNS48MD2YDwZYvNfu6mo0r4j4I7Tj8zuCjddbGVa2/5XnhcfdUBx1VOd90H1RKkk8kgSoR0bgo7mLls=,iv:HT3a2YnFy0cF9qUO671kwqxuzFfNnfqynCUVGHf+3dM=,tag:nrA++7fsnc4Cx0OPSDKaRw==,type:str]
|
nextcloud-pwd: ENC[AES256_GCM,data:2oqsNceKuwGscBN2VxAK,iv:FoSfHItgeB91fG38zqtuQzayvNjNPFQyZjZlpUq/eic=,tag:MoEpAmTj+zqVu6OLasD4kQ==,type:str]
|
||||||
|
adguard-pwd: ENC[AES256_GCM,data:QavwLWENAURnRrFwiLntkiM=,iv:bxdQfBxNL5rwUr7CEKbwXtv5mUUXZHhvyqQL2KoPwEY=,tag:T+cSyzbGeo7E5smSsuFlHw==,type:str]
|
||||||
|
hoarder: ENC[AES256_GCM,data:8A3eGqIlHJ2XpC2OdMNBXPm+5BdfMlOfTSgiibPtM+SFyiPtGhjWQNmVCD9REf0P2C4pikZ3R7vtwyKpjrraaoSAY7ztAk9eqqikorIzD8hn8wbHz/y+Eko=,iv:ngoVgF348IxokWGQVpbpTGhdIwjOOA6T8qLb1wX6GEU=,tag:+v9HLUksQJ1e2vRR/5fzEg==,type:str]
|
||||||
|
recyclarr: ENC[AES256_GCM,data:3rZgs4Z/XaQPxbueepPQlUthHMSKn1e92FyIOpzn1MsGmEL8LBSUJvWp903n1BXDI+SK4ph9DaxOFavPkfCnaNMascX13TkGf03zGTEbd3xDZCL5GoXl3yobt0EMRYyRlYu5C1gidj9CjTujIaEXsF1AT2x0xtYweuC1xhpMhq2gj8eBy06sGnyKV/9Kdxo3H80skHVH6ZokndDyv6LfpkCDKQFsSBsEKBfVBDws7IgGFXCv6toWJPNgidReWzMmwKiClkviWAJiqAvI2IABRe4rEZ3Gkr3XFuoxOX2yfvQ1O7PH6O0dXvtfyBOTpGTaZihOqM1WhIutSr9SWX7QivIwtsVMGEmAmKx8JyDrnjhbCCbzjG+4Y6YoHawHYFFwKyOCxtJcsLBFvvkiuUt2ZVUVYCwhEIp3Xk2xb4cxYOIYRStxhiTuhEb8a9PkvkjmQQ4eAMB8bNPlo+vGqAQGPc6FOhm67dh3JbdQpsr9/U+P/AGsJM60SAhx+OzBcDSIS1U6/qJ6udXPOw58wXhJMD+F+gqV7blVBkXITQJ7AaLl/aWmDlkoqkjFVTIjE980e6ap6BuNbRGsN9x3EiVwqfDnqnQ2udGiLOcu/WguLzNjCvXWILoSYWwpEMwEW3SWASbGgk0wUpwZfNKY1HagdcVFO17OW9DrlTuGuJs4eJgVXm6e3glS3CS0dCL8FRs0EH4Rh8mUzhf9VP0/GlkN0kxJEM8PnjqGl0JMnaeQsSr9FDJdqv/2z4hjQBeq8//ER1BPIRSbXNQqZv5HcumSZs+JEttYUgInWL+LZhQrtpkba3sKQGkQF6X1kGpPZmiVSRgM+7PAt3ezpUKS8nMTS880l03cSaxMm+vebPhYtGC1O+4XLhv7E8MPULMkCOQoNLNcQCqKU82fa3vEtS28X6+izRMi56vbzG6Kjls85/NMGVz6rDySnQHMP5vSapcszSHwqGeAXJKfXYPzXQo1SIy0RlvRbllPt7zfOkTDMr52oH/pbtuxLSrSDe4ZjHkmdDzO+t0yAyG9xsvzldYUbDkfAWbnFXay3TICi5JOGe/Otp62sv3/7fjSmKm+9Um5AFj5F5Zo58LKCrH8qy2omIh80uFW0/yNgbuXmA4GqnDmYWaWlccc7yhPsmdAWHIypNS7GxRyW66+d4P7mhccvKGT7mx/gKuHgdUIRjy8bKtjLN2vuKfIiJR6bqWZGtbNEqY4XPfhdYdGdnox8vdrT/8DiR+6Jq+3qvJswTXhg+wYzOVTNjl8qK215VA2/FF25+T8xmSfV+cnPrLIrOrD8t1D34U4eEMrVzx+6dQ2dN1qDwj5o5GSYuYSQ5o5hy2BKt8PPVDI564MzjPfLaAf8cLK+0PKsbi2E4jGRI5BejmpMWHoLAUJvX4kdajd8Ggh5wZFS07pje3T1adzeS/UUnpy/IeLnEz8FfoH9ro7Qz0XGmtItVSjumppBg6jwbf1se9sP13pHfIh/SvVJhOOH6KiFs0lECSetuhIupsqHuJg6ZLa+V8GO9otYiJGZnOKGiZNrBYSek9l4Ncn/2Q+dqOYaCkZ8Xx6gY+qKHgiwavbsYYiJUPK3DLNhTzH,iv:00efefMekG2TsnDH3yNNdMBIITDyxo/qKN85qVGA6f8=,tag:hmwsyJRiT1MbFPKm4Kt5lw==,type:str]
|
||||||
wireguard-pia: ENC[AES256_GCM,data:2IvJARGhesMuH9RdWzsyrwA7eqrhLyacQqZ1RNEkGOPUkQGX4uimKBSzkxXRy/haZ4V2k73JdLSaB9rAuI0n65GmWHmarwZekOyhRZSNb+zvFgw5BPZmywG1wR2HiTGR/qILovAaz47q/VnohUnjbbMCUvarC4PytWGxMUH96GIgZar8HjHFtK8grCSxlvpHKiDeKx8VSXnY/Pxj1EplBtIqwmtAeZdf/VjtwOL0nY54doPwHdIAvJ0B8Cu0a1zJIGEbV1NlKIHEJ1YA7rmv1ODkBnbXbIHMxAR3jeqR/UDqhDmXe41KujhiJI7nNeO7FKo2v92jK3fSbxYKatLrzXktHpE9JsMYVBXzTK7yAXPgoDdgLXzWH0OrJGBSisPrvqmxUko7MPreuwVYfFlKpll6JLifk8sML4A+94UPR8b89guXn7kBkLg1Y1oIAyguCdKpNOD31nXBMFF0nTcmCwyshDySaGTfJDgox65/77AiN1wH,iv:cdu6lBjLnEEfSFmWMC4Vn2sLKsvpCaatzXlgRNkEMeA=,tag:y1rAeNPB+DNGTpnP94iQrA==,type:str]
|
wireguard-pia: ENC[AES256_GCM,data:2IvJARGhesMuH9RdWzsyrwA7eqrhLyacQqZ1RNEkGOPUkQGX4uimKBSzkxXRy/haZ4V2k73JdLSaB9rAuI0n65GmWHmarwZekOyhRZSNb+zvFgw5BPZmywG1wR2HiTGR/qILovAaz47q/VnohUnjbbMCUvarC4PytWGxMUH96GIgZar8HjHFtK8grCSxlvpHKiDeKx8VSXnY/Pxj1EplBtIqwmtAeZdf/VjtwOL0nY54doPwHdIAvJ0B8Cu0a1zJIGEbV1NlKIHEJ1YA7rmv1ODkBnbXbIHMxAR3jeqR/UDqhDmXe41KujhiJI7nNeO7FKo2v92jK3fSbxYKatLrzXktHpE9JsMYVBXzTK7yAXPgoDdgLXzWH0OrJGBSisPrvqmxUko7MPreuwVYfFlKpll6JLifk8sML4A+94UPR8b89guXn7kBkLg1Y1oIAyguCdKpNOD31nXBMFF0nTcmCwyshDySaGTfJDgox65/77AiN1wH,iv:cdu6lBjLnEEfSFmWMC4Vn2sLKsvpCaatzXlgRNkEMeA=,tag:y1rAeNPB+DNGTpnP94iQrA==,type:str]
|
||||||
signing-key: ENC[AES256_GCM,data:FrJzuTgH/ooZkcnYL55uQcc4u+QzNnFvNVs2wDSE4nnwku+EuCJBlb8pd/6W0KPwIXzcki/8CY0YfRcRrzjExMgMa4hwxrlxS9bk3LNPzJsrRK5RJgPg3iA8L791f1zcDxNf8RuWatIqm1TCK+Vhdk/p+221zy1Gcq1dW8X+o4XzbPBzHdLagcIdB0wpjYTtIoGP2X8GoL/NJpuzIiQBK1HdGNKvUI2+ztqCQZOsxm+Fki57NteX3/Llw8AwABjdZvviOBZ62OvJ/SsOQ9NYAvKfAkog5zCn8DLvaqAPGSxRBQEYWM8GyL2imgs54YfEsOpGa4DzMiv4Sc5m398E/asaPq357eksUqh3EYpzoKZ5bIbd5+Vs3KBWKHltUCzXLHaLrIX0CuJFQFi7DCxEbYqlb04x5t3jc/c+/7uwqBHv1Y5gwAjd8JswDWmE7Q3xSk96Za57SCxWPYTo2ErsA2XdL+yxXdhmqkhDZKtUzrcHExhnYe7YLpSlBEclJ/G2BeTOFIWoAmN+1y4rh21R,iv:VaZrv5/41ZyIax702Yae4QmFKpcEaWwPmTo2Mxao3bU=,tag:HC0eqDNit7jQKeeDAKWXKg==,type:str]
|
signing-key: ENC[AES256_GCM,data:FrJzuTgH/ooZkcnYL55uQcc4u+QzNnFvNVs2wDSE4nnwku+EuCJBlb8pd/6W0KPwIXzcki/8CY0YfRcRrzjExMgMa4hwxrlxS9bk3LNPzJsrRK5RJgPg3iA8L791f1zcDxNf8RuWatIqm1TCK+Vhdk/p+221zy1Gcq1dW8X+o4XzbPBzHdLagcIdB0wpjYTtIoGP2X8GoL/NJpuzIiQBK1HdGNKvUI2+ztqCQZOsxm+Fki57NteX3/Llw8AwABjdZvviOBZ62OvJ/SsOQ9NYAvKfAkog5zCn8DLvaqAPGSxRBQEYWM8GyL2imgs54YfEsOpGa4DzMiv4Sc5m398E/asaPq357eksUqh3EYpzoKZ5bIbd5+Vs3KBWKHltUCzXLHaLrIX0CuJFQFi7DCxEbYqlb04x5t3jc/c+/7uwqBHv1Y5gwAjd8JswDWmE7Q3xSk96Za57SCxWPYTo2ErsA2XdL+yxXdhmqkhDZKtUzrcHExhnYe7YLpSlBEclJ/G2BeTOFIWoAmN+1y4rh21R,iv:VaZrv5/41ZyIax702Yae4QmFKpcEaWwPmTo2Mxao3bU=,tag:HC0eqDNit7jQKeeDAKWXKg==,type:str]
|
||||||
signing-pub-key: ENC[AES256_GCM,data:CB7uU2Q4oTEKihpTIXGLaV0fJ1cv/p4oJJ5kjaU6BZiKhsiMA1JILUw2oVIDTDb+80WPzolDzZwWM8v31d5QIrZpHcPrdRLyV0X2USfG9U4aQ/ls79QAyOOJXA==,iv:/Eb5/+p86tw3tqNiDVHGu7HS1KBtFiYIgasRYJsAiEo=,tag:dGdJlcrnuU73s+IMQ3w3hA==,type:str]
|
signing-pub-key: ENC[AES256_GCM,data:CB7uU2Q4oTEKihpTIXGLaV0fJ1cv/p4oJJ5kjaU6BZiKhsiMA1JILUw2oVIDTDb+80WPzolDzZwWM8v31d5QIrZpHcPrdRLyV0X2USfG9U4aQ/ls79QAyOOJXA==,iv:/Eb5/+p86tw3tqNiDVHGu7HS1KBtFiYIgasRYJsAiEo=,tag:dGdJlcrnuU73s+IMQ3w3hA==,type:str]
|
||||||
cloudflared-token: ENC[AES256_GCM,data:7DwWFL6JbJXuc6fSyrZkMt/+DAcqDYBQOzJ1QhBL4yfCpQ57mjDV2beRZ8H7SuyoKY3caifHfAVVPDGG1YnffZ9anLRyDW383aHKmgaeztOXj44eVQcHi3evnSiH6h0HasiyO8pNzhnKpYew8CwHSvYZMraX3ITz8UKOTtsanO9/8ZD6Y9gyxfLoySqbeBy2x/0Ql5hrDfrX854C+vYuXM9VJbtQqMBa7+IBydUvddk=,iv:jZTk5ptuwc+1aP2rimqGnyCHR4/J+W4Kyn3LKXXkv/I=,tag:xr/LhoNH5aWdIJr0Py6nAg==,type:str]
|
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
- recipient: age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
||||||
@@ -18,7 +19,7 @@ sops:
|
|||||||
TEc5d01RaVFGNXc3dlljM0FTTHpENjQKOqwI+pl8UxVIVl43glnOYvW660/PsDGY
|
TEc5d01RaVFGNXc3dlljM0FTTHpENjQKOqwI+pl8UxVIVl43glnOYvW660/PsDGY
|
||||||
yefODJGVtHrOm3yeXC2xlTi3sFW+c5wUl2yPqddbvcBt5Ud/yd4iXQ==
|
yefODJGVtHrOm3yeXC2xlTi3sFW+c5wUl2yPqddbvcBt5Ud/yd4iXQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-04-12T18:24:10Z"
|
lastmodified: "2025-09-14T19:20:44Z"
|
||||||
mac: ENC[AES256_GCM,data:D7gWC1fxZkpG8dCr7aWhcyLT92NK1OefS4SIAq5ZImMYRJzzvhXtyJM9tzUYVWPU0ojhgOJyawlWEFk1P/DWjOrafBsBHdxUl5FtZrRb4Z/rquODhR8OT8UYFVKyAmjSfomUEDzYetJdXdAxhX3eNlT+eKI51IjqD9y1dYqcjMw=,iv:ZPIkMf/fUETeUYQdqu4TpS/ZE752079jIW9BlehhWlw=,tag:Z3i/Zc0zkEF5rsNnkmUB9A==,type:str]
|
mac: ENC[AES256_GCM,data:nJ5lnPSVPyfMKhlNwzhxYGWY32i60P3N+jpBZKo8oEh8sqjsb4zHAECG/vMXrGTPwYzZ46m5PQQURCyeOvjuMaXK8184zMwFkehXtMJWI7/aKYbSpQqOchl8BN7QdlxH58kqtCwUkdldiW6t6cr4/VAUUPPLqpK19GDrwUYIVrY=,iv:JZBz5X8PdCFXonSPBd1hYiFG+t0aMQDmgCmAbclnpis=,tag:7Pm7V96xMRQZa/JAiDGYmQ==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.12.2
|
version: 3.10.2
|
||||||
|
|||||||
@@ -11,10 +11,14 @@
|
|||||||
config.var = {
|
config.var = {
|
||||||
hostname = "jack";
|
hostname = "jack";
|
||||||
username = "hadi";
|
username = "hadi";
|
||||||
configDirectory = "/home/" + config.var.username + "/.config/nixos"; # The path of the nixos configuration directory
|
configDirectory =
|
||||||
|
"/home/"
|
||||||
|
+ config.var.username
|
||||||
|
+ "/.config/nixos"; # The path of the nixos configuration directory
|
||||||
|
|
||||||
keyboardLayout = "fr";
|
keyboardLayout = "fr";
|
||||||
|
|
||||||
|
location = "Paris";
|
||||||
timeZone = "Europe/Paris";
|
timeZone = "Europe/Paris";
|
||||||
defaultLocale = "en_US.UTF-8";
|
defaultLocale = "en_US.UTF-8";
|
||||||
extraLocale = "fr_FR.UTF-8";
|
extraLocale = "fr_FR.UTF-8";
|
||||||
@@ -26,10 +30,6 @@
|
|||||||
|
|
||||||
autoUpgrade = false;
|
autoUpgrade = false;
|
||||||
autoGarbageCollector = true;
|
autoGarbageCollector = true;
|
||||||
|
|
||||||
domain = "hadi.icu";
|
|
||||||
tunnelId = "a1dfa315-7fc3-4a65-8c02-8387932c35c3";
|
|
||||||
networkInterface = "enp3s0";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Let this here
|
# Let this here
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
{config, ...}: {
|
|
||||||
imports = [
|
|
||||||
# Mostly system related configuration
|
|
||||||
../../nixos/audio.nix
|
|
||||||
../../nixos/bluetooth.nix
|
|
||||||
../../nixos/fonts.nix
|
|
||||||
../../nixos/home-manager.nix
|
|
||||||
../../nixos/nix.nix
|
|
||||||
../../nixos/systemd-boot.nix
|
|
||||||
../../nixos/tuigreet.nix
|
|
||||||
../../nixos/usbguard.nix
|
|
||||||
../../nixos/users.nix
|
|
||||||
../../nixos/utils.nix
|
|
||||||
../../nixos/hyprland.nix
|
|
||||||
../../home/programs/helium/system.nix # I hate browser's configuration..
|
|
||||||
|
|
||||||
# You should let those lines as is
|
|
||||||
./hardware-configuration.nix
|
|
||||||
./variables.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users."${config.var.username}" = import ./home.nix;
|
|
||||||
|
|
||||||
# USBGuard:
|
|
||||||
# Allow all USB devices until a proper policy is configured.
|
|
||||||
# Run `sudo usbguard generate-policy` with your devices plugged in,
|
|
||||||
# then set rules = "<output>" and switch implicitPolicyTarget to "block".
|
|
||||||
# services.usbguard.implicitPolicyTarget = lib.mkForce "allow";
|
|
||||||
services.usbguard.rules = ''
|
|
||||||
allow id 1d6b:0002 serial "0000:00:14.0" name "xHCI Host Controller" hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:00:14.0" name "xHCI Host Controller" hash "prM+Jby/bFHCn2lNjQdAMbgc6tse3xVx+hZwjOPHSdQ=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 17ef:608d serial "" name "Lenovo USB Optical Mouse" hash "klpDZuv1jhWGNqZLOl+KXF+75Ir3PfBm6D6ncjoLRBU=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-7" with-interface 03:01:02 with-connect-type "hotplug"
|
|
||||||
allow id 17ef:6190 serial "" name "Lenovo Calliope USB Keyboard G2" hash "CfZ9R/aoXGm7BN/ojVEzKQwVoxCUtRWMuACrE7BL/5Y=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-10" with-interface { 03:01:01 03:00:00 } with-connect-type "hotplug"
|
|
||||||
allow id 0781:5581 name " SanDisk 3.2Gen1"
|
|
||||||
'';
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [9001];
|
|
||||||
|
|
||||||
# Don't touch this
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
nixpkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
nixpkgs.lib.nixosSystem {
|
|
||||||
modules = [
|
|
||||||
{
|
|
||||||
nixpkgs.overlays = [];
|
|
||||||
_module.args = {inherit inputs;};
|
|
||||||
}
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
inputs.nix-index-database.nixosModules.default
|
|
||||||
inputs.helium-browser.nixosModules.default
|
|
||||||
./configuration.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/5dbf85d3-d236-4af8-b489-d6066bfe1eb7";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/043E-1755";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [
|
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
{config, ...}: {
|
|
||||||
imports = [
|
|
||||||
# Programs
|
|
||||||
../../home/programs/proton
|
|
||||||
../../home/programs/helium
|
|
||||||
../../home/programs/ghostty
|
|
||||||
../../home/programs/nvf
|
|
||||||
../../home/programs/shell
|
|
||||||
../../home/programs/git
|
|
||||||
../../home/programs/git/lazygit.nix
|
|
||||||
../../home/programs/thunar
|
|
||||||
../../home/programs/nixy
|
|
||||||
../../home/programs/nightshift
|
|
||||||
../../home/programs/nix-utils
|
|
||||||
../../home/programs/spotatui
|
|
||||||
../../home/programs/yazi
|
|
||||||
|
|
||||||
../../home/programs/group/basic-apps.nix
|
|
||||||
../../home/programs/group/cybersecurity.nix
|
|
||||||
../../home/programs/group/dev.nix
|
|
||||||
../../home/programs/group/misc.nix
|
|
||||||
|
|
||||||
# System (Desktop environment like stuff)
|
|
||||||
../../home/system/hyprland
|
|
||||||
../../home/system/caelestia-shell
|
|
||||||
../../home/system/hyprpaper
|
|
||||||
../../home/system/mime
|
|
||||||
../../home/system/udiskie
|
|
||||||
|
|
||||||
./variables.nix # Mostly user-specific configuration
|
|
||||||
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
|
||||||
];
|
|
||||||
|
|
||||||
home = {
|
|
||||||
inherit (config.var) username;
|
|
||||||
homeDirectory = "/home/" + config.var.username;
|
|
||||||
|
|
||||||
# Don't touch this
|
|
||||||
stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.monitor = [
|
|
||||||
"desc:Philips Consumer Electronics Company PHL 221B8L ZV02144013987,highres,0x0,1"
|
|
||||||
];
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
home-manager.enable = true;
|
|
||||||
nixy = {
|
|
||||||
enable = true;
|
|
||||||
configDirectory = config.var.configDirectory;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# Those are my secrets, encrypted with sops
|
|
||||||
# You shouldn't import this file, unless you edit it
|
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
home = config.home.homeDirectory;
|
|
||||||
in {
|
|
||||||
imports = [inputs.sops-nix.homeManagerModules.sops];
|
|
||||||
|
|
||||||
sops = {
|
|
||||||
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
|
||||||
defaultSopsFile = ./secrets.yaml;
|
|
||||||
secrets = {
|
|
||||||
ssh-config = {
|
|
||||||
path = "${home}/.ssh/config";
|
|
||||||
};
|
|
||||||
netrc = {
|
|
||||||
path = "${home}/.netrc";
|
|
||||||
};
|
|
||||||
github-key = {
|
|
||||||
path = "${home}/.ssh/github";
|
|
||||||
};
|
|
||||||
gitlab-key = {
|
|
||||||
path = "${home}/.ssh/gitlab";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".config/nixos/.sops.yaml".text = ''
|
|
||||||
keys:
|
|
||||||
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
|
||||||
- &work age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
|
||||||
creation_rules:
|
|
||||||
- path_regex: hosts/laptop/secrets/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- path_regex: hosts/server/secrets/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- path_regex: hosts/work/secrets/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *work
|
|
||||||
'';
|
|
||||||
|
|
||||||
systemd.user.services.mbsync.Unit.After = ["sops-nix.service"];
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
sops
|
|
||||||
age
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start sops-nix"];
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
ssh-config: ENC[AES256_GCM,data:npBcAOSwHpApUASlZmRo4stwMrOjdrdmhfYwumjbTpcq8aQ2ybV8le7cjNdVqIyxgwxUFV4/tGfmsq4nlrWIO/85spwfC5DyPGaZ848NI3UZJj8k2GKuw5qk/xGsTveNhq+vNZQcHeL4aeXF2TRmFLDHYGTku9anFL7FWkQ75MmGW78XfPUEyZJ52ylXq3gkYeVSrl6cXuwJw/QBlu+XTgFk4MM+E5BTXBFFNJOYkIt4GwWX7wdI+QqPEof8J0ENYdxUAMKMueL4pLNclWP0fu7QC7gwwRJWjauCNElJiDhpVFa6WukJV/Ut+I30FH9cJtj0rSodeu0hq2fWaiQ0wVbQudxi0JcnxJQs+B9nb6kpF+TN0MiD,iv:c7DMZSmlgMMnNlR0/kNRKPYjCzvNQJ46mZzojHppSg8=,tag:ausjsFk0H9nOiiMebHXSUg==,type:str]
|
|
||||||
netrc: ENC[AES256_GCM,data:EOpuZhDVXe7Q4P/98C3gtEvkdawI26d4oX/wRNytyp/mAdkHytXiLpFdsuO/3DADOG8h1CCo1UTs9ex+bqoD/LdChdp7INfNDSQ+aDxTiG0rLBgjvy8TIj8=,iv:tc/RbN1Upbjv+3rU5zUR3P//a1Hj1xODInLMShg4i1Y=,tag:7E9G2g4g+eMeJrwI20R/1g==,type:str]
|
|
||||||
github-key: ENC[AES256_GCM,data:LRgJxUcKvLiqVJ3acz88oGp5qmvbo7QiyTbcft3YwZr+84CLbty9GCMrryJ8DFnP8GCGh+cCQxyvk/n/hA71qz7WZ6vIWbTN2byP0LHwDtQpugYOQi9z1Q04hQU3DYnsqKS8hu6bnUV/SzrDpAOXugyMGZL5dITitidgEsVG5PxB+bzTZGhg7EOcZISz955AEtD+bGedvxaryEcMYPTZwRHYPl2+wvKKIbeZMiup6i0BCCYktUUIb3qSBawbknZ9nfbQFODkZbNuEEhyU2MITz2ajQEx8AjE4eUutjBBQpJsesIhiAyq5H1AmJDzesC4iccFUpTVHFWf20clPX9QTH5njqbJ+aw1hIzU2ljK3vou1eZfoZ5HCdV3+tuQTJGYcfFY29/PaN4sENPhgbYm0p9Ui4UlMbte3FfmhSqdMzIc8jIB8dPMtoUM/NTjxof/dVu/TPMBTqnJplzNgvH1r2UcPToiAVfWj96tXsr2ESZfE9q9oQh9EGMcyGpXxq06Gni4tOnXDaF3oHyWAiJ6jP/wrYag5/67m4DwpFEymg+/ROKcy2ou3MYA+748ocKYFRoOVfY+SwcM4bxl6smstsRZW8SoDo6O9ikZII51LIN7X/6sQ0L+dgsBTT75zm8DOAFx2tnVgSPN8HYsd2tyHA3L6pYxAAGmY6lSGJfgmYP8hForSuZgCSxWhlwPHLLrU14A2wOFw+X5b4Zgy2ZdsTv3pHDn35a8lNwANKiWhXSc/irie0enmNjKyKTQDcVxq65mho2D+q7XANjDYtqQ8VX93HD2mLNljuA5GjJxtlTrw6V80AI9OiKjMlbEIG5BHIwOcDj5z53kZ2hPHIlSMCXVBXgBwZgPzw2GXDnIgsLFtGirVj/H+N8IWUioUgyimLjygPJwk8lcIrRCA279O7PnFAQKW3gchs4BN76vF41dR5AVJrDeWmSRonMHZEmGaHONEy+8pxFYf+u7hI6dC6YwrhNYHFgKymtKoYCGS1VTi3MXVPxzL4KxnS+StgfDqzf/FypqGD+c9Qkz3THw01J5SyQO4r7Y7cJFhpRvF09uDvT55BtUVuxexOUxANsmbzJCSKG0GLEWa6e+8owLHRbUh5fQQHN4WVMOCb2XLJkHM6YkZv+Sl3sjwUOtZS1+hRAz4I5BsxxNYK3OySwlzb5yBF2axC6z0DTpXNhyMUSEm2yI4gGroW+x0q8AK4dYelhcBC2QYYp8a2QkQu7vphg05QusuebZpjhRsFVphkjNmpEmAxAGRK/AaRr6YZtfVe/IsZgXso9xr75TBl/wee3jl5kLfBxs0q4lUCmfAcdfkT9EUWp6IOX6E+l7rgObuPLU5q64QtPzu5WDG2zM8cQWMbGt34EnKqSqwUPP3cmEVNuPSWh4bubLFKh+wcREMaMQ5j9GA9AXHDQnFsp3M9L3+0CBJIdBGnZetkjpg3l8INkqXzI35rNmJ6DkfmAE1a/SLLu9qkYK8HWi+1hsqKpNqv6bAp9iKSCb/tFc88wgNVh2n9UVZXBuWXCmtwc2BUfaN9/rw6L/+iqrTu9vrq0LTDSy8A1RuKr3aY+EyCN9gd+BVjEjpszFD8Jnrgj4qz5jihEgo8/AdGAS5/8QiMhdr18LQ5JaNC2EAsSswHx4MpOtFyyt84qJV0Ip4zegDJ0wMukjBJuRsZ6yR6ThgB0357pdmJsSXvj4XgevTwewWMmyX18kleac/i7oifv1xvp1gQrgigdp7s3tY91zH2o1LG/DqTbife7lgt9P6kR/LsHevJaVOytLv8DTO1ggTZjHDMT+A9DiUVot/gmhPcf5JwMnhV6PII5XtR4dy+lIs876JQFDm2YUgWNTPO+EJS/G63TgHxyJxBhumPCODzbYY58x+RFzykPvBuf+d6MpP2A2Pc2KPgW/SWc4XqTUVj6FIgwS58NJm06uLdh3vrEEUqO+fL6KOzmLYAa5TabqOv9oFGXYpOJ8sJtfGXIj6i+/aG4LrNZGeTzBzvz+W2jOcAH27qciC4YopLcP4NR6aXA3jYLVOLCnh54IfPVgMFFg0ZoqeaHEZN9jJIMsXNGbGsfT+f9FxN8JxAOM/iqqAVeCguXxNiKGJuCl+uQU2QdqyJVSgyq1xtXibRqGfJCDc+oGnXy5/jxjb0uDzhdYH94kfR4cj01MTDqt3kfFNjJtjl0KBR0oXj/E//PJwRgKJ3i0o5jYjRyLSqUfUJvEyiPrOmzAZrXQT8aYeOyB5MO4t0pdcMGBwcrWPkmxRiu3dERJHJttpFD03Iv5qFRZdNAsrfzu0dW59nO9x//Czxs3mcJfRyj2moAjMiyYC6vg5hPZso3lyDyJgvEySZ70GhJAfkb6peossSco7cdEw6lVisXDk9BuPArDn/kua94eUiajB1v3dwwvWNc535HQIQIbTd5478JESiFmB7mt5EXFXWVZWDhPRxkK8Px3KErl+4WBZec+glBSnrY1VqXDdBRG63etA/Ev2P4ih0MTEiv7/Bcbw9uzVsIIwhyopY3JtkJP/YqZpS9HSDzSTnkCcetO9YC6K1aqRjdxzDwfOqadu98gzXxZZOsGMFaBgptFqBwfrP5Z8+CWWebMIL2HzZCEhMZhHRFcfi5dI7t6R2AS6cqRFXQlaB75lYhOvFLmeuMtspjTUL2SQa1J17bZn9JYVNvBfL4twfZdp4zjo5DgFF5LiHC6uQa4LW3aWN8ujQ2CGRP67iRsIgedfrNZG6vdkwDMpzhyFFZXXrs507RTimTJGngX1kBWNb+j+b/RmjLsdONPPgCgE1o9fxJCfHM53zDHSlVcO8rsLideXY6HIUKgZC0khgpif5YBG+iHeqfT3ZBLwhLjK0GH6oP3TKw0xmHWq4Nb6C6OqdEIGQ7Rxt+rWOOPKhUMyzdhwz1YpeZA0zobRdR7isvmWGTMwxS56r+NuI6dOQL6xs+MlVFOPtyYNJAF2qWDHt0XOa/7Kv4XDRF7zDA19ZhqG8xDU9NtDwUDFrPBV5kO0TDSHuh7WShkzyXJYfc62WEIxIfbdMVX1m+mG20/f6Tk2r9wRxtAdxU4WqhK+YaZf8ZE6LfsNwJVyWI+o0VeK2v/2GkdUVeuDvq9aju+BipuUUHs9K09a4EyZOMNJtYUPj53W76rVP3rwAXr2jj+sWeDFCibsNTkv2KuyOzOM1cJCbONXNfqPAo5yx3cAwXp/ikz9kPMwmVqgIHGAd6QsTmaBXe4ex5C+GA1OBCMvk6ZAoSwRsAmoOZdharD+6dEEFL4HeqQx3XT+ddTRcGiQxgxuwPDAxcuCBkvqZSuVt1jb2c4WpL9id1S0TEsfzRtDj6VGM318jV3pj3pZvLXwVMJc7J4o6f0MNhjtgOZdcc302sh6HrusTn/zrRPpQVUPHkmmvmB4eP6IVT6aeKQS8Vt10PNtXbJKLYqFGnlTrrlHxBrGDMfz/j5ycai16VKeaKS1SnR1TQAReOaOksMc17xDVo9hnocOMs89tzCkDQ3e14lKngxWzmcxZAS6NGA5u/Y6x48b8OCiVbsbOxoeI5ouKd37TVPJEHo1VRPOhruVU50xv+eZtCbSkpTWPMq3r4AXZJjTKXn3aYTMQNMisR0yhto4dkdoNQw93ngm+MSduv+Sxt3VG108G6UDVEjE21ylMDueP5rDQ4G2sBPgIT/uSyFWan3tcP2eTFjps4BB0yzx4evjdUqu+Uqkvts7DOPY4MT8/g8YO41PvAW5sFItcwr6gLALyVSK8I3dzePeNELXK6daHLhkcI4EN4Yh3OO+kkT00X29A/V7wqIoV7T06FneC6Hg8rWyPHTFbAO0zqXK58Tp4E0kp0LkZHS+nLbmvuZOKSyQOMNWTvMYcagfRc+VgbAPjnZ9yRCXvWHY6N2z2CTKEioYoqt3Sgs8dgRHVZK/qGoO5lAWfdb6cTUFOZU0FnXYTS2ccQdOf8bJHOmldhavi0Oswe6wWpg3/Rp5Rvm0Y0g3r5CEF6lybkjM4K6eXc3DsFWcV43VPw/1w0sV3ErtuJHVyYxZzyS+iO0FC0Vpvru2emHoylbn0Tw3Cy31onjbnRlJfd9hzEZYiCUDj9l2P5b8Lrmw127NL25pzA+tdnRi55QS+ceUZ6omPqf7YsIO5AygG5+ZDCwFfjBX3tW5dpEFXzsdx1GWLopxT8RkPxjRjm8Z5EJpQtIYmptc3C6nBvPPCx0qVXJKo0LNbm9pZ1QPF0Vi/qS+V8PsL6dwPFH4t5jcKXJUdPNuiVLcqogKVicPSP+NviDn38UjWXixPHhkYk5Rv/2setqUXkKM+vePnOv7fNE3Px8QqJembwYkaj+T5do8st2KbJy08B2/l3gYvKoMZ5A3B3ypz3gghnEYPXb9uK1QyQIUsfV8tPFyFFWLVDQbSBSbqsWDfV1FThAJSi/FhcI4Al2JuqPvESQmjKW3qP6kk2GXQQco+R0lPszTEum1M9YQxq6YnRRy/wAPnHZgSgwNliNzx9d/FQbgo1kNg5LgdFjZh41ooPAubRyxfkHxzsVrnhjEV22wA/7dsAdllnnWRARQjBfn3tzENiG8YV/pWZF78aL8XZwapiPrWI=,iv:2Mvmz1CFO1112RxjIl6sxyNIDqa/cg00um6RcQaHNY8=,tag:+zygdwQdCBeBXVLvAj/jJQ==,type:str]
|
|
||||||
gitlab-key: ENC[AES256_GCM,data:1iAAh7CEeJGYibM1wcFn9MRK8TtgRFA2dCSVZThiCI53GKkbbf5JZ2cYJm3p/D9loP0/lU7TbNR8IjVyqqGP8MF+u4cm0gFIEL0i9+wBKIJsYXxzXV7XIQNTF1JU26/b+hpfUEcqXANQ88wdaGTrEDYAaMV0kYcBUkpMgUdIU+iCJkr3bPKZRjengA3/Sj6QkRzBTBrWo8ANEAnmi+Nn8NTFdHbwp+uLwelijCOz4iiShMTRjJYtBZ8zlGXf7qv9warXn91oh1p5aPYBRH6CuUwX1lZYDPmFGxOS5usYYippqsRmEEg9Haas0EwxU8CAZgX6cNnfjhq3le86vCapqZnzdNAwR5rvMEQ178Fl89Ri5Ka7n9GU7CFRzzXpykPErKbsG+T3KtfO20Lo2eDWO/gXuQILZcwaFDEbZuXq7qbrtyJ1TmtXQF73paG7yEITwOFLaMeJVRX/WvdXbzFo9X8V7zv7iuyyi4Y/RzkW2g7Ck0x3MIgxyUkDQZnb9XLYm5PzoKZ54uXIC6tqaC7ux7o785VOvaaNJiu1r+mtm7tN3VD3nQGBMGC4BqM4iYEt/KcTC4fn4rSwecfcYTpGQf6LfDOWgZvBz8Fw8AraWIANjHkOMrlWhIJJ8g7N+35rThEfrC1hGAptWsOSVZ0NbZk3UMCzv88KpDJA/9rekLIpAodJaZafM3VhK2ZLU4i6IYprKlsFYB/+WDwvppX+LIofMdhZfGhI+hRyiNF1egh+PBv/UzHIdanNLiITXO6/Kt5kgSujVmr2O6NWOlx+Ve1udxXWzNxp0qrMKa2JVljBS4UFw4HPM0LzQ2KMW3rZ1fWq88/dRtzoBJfouL8smeSrc+VJJACEzHevXq4e8zgjg9+QnK+ZWNwcna1bQgB+lG76hGnfVvIHF4PQM6tGSS6RLQrwsAMI8DMsiRhYUc8Bdrj2+fM8GFTC81pYyRsmha6tJmq+S8oM919iTqFFGFk4NFMy1Mj/95Ckrb0tkCIiJe+Quvu91oLVzLAbkRdDF/H6rudrndhqlAANQs0acPemuD4/rrUfv+jFEiOazjydGrHTae0jnJyS5mR3QZxWst0p7Q+yIlduU+kY9uX+ZuDwjUsOqy56K2mn9+dPVA10D0hqSiWUQQ+TQU5QGaalJRjt4RG2V3fcwCs8nla4XNrxaSty67141CBJHgh4I37qCFcu1f7YqqKJNmVJwBX2/70Rg0nb63FPDh6UWtyaheQD4GL+2ZUJmlh+ZMPzJZEO6fABOQoyyMZhOv2Pem+AQHD97sN32E2WoCiSxMFYFe4Pc9sy5rFkZb7OsdNK3VzoeWVkklhNqpis0sU50Bqt48V+2qXFU12LGUuglzo9dBTJCgaD6xqadEYlh+WH18Q6yQPefcwcWzl0Ql/Y/F0XfSEgaIyd/VZdQ6QP3ZF6q4oEtKOCg+AnkbMVUw5TA+RdW/UnhJlErIs+AQRkKZ8JwpIalTccAEk7VgQQdRiCD1PBhc+0T9gzTbQTqCB8pCqy7M6UEUbumOfyUKOtkosk0Bx8MLtyzX7va+3D0h7Cdze4CFTUT8EZquSWoX5ozwF1DdsBs3wrunIa1FYYaZQDiMiYLZ64TRzVBujeyZxFQLgKPbEBBr1BalgJglGALLZUfkmz01g5stgkZDeXvbTgA0W9PKFhZ+lLfrZ2NQzblZ6DiLeFM5ybxSbCbBSx2gzzBuMgbWOVTFDXLRuGOE0GRWVpzEtcqTncQfbJT+6AicA86e6MuXn12Zq3uyF4HoiybBFEAkYF24qLz2XZ6K9E7aNdWJAY2dcvq+LCoaHKlpekSUO+jrfykEfH5eFhnSj+hrwtSa3+3tLkuNdzjEpTcvq3l0d9dVAcMswv93RrU9PNGs66W7wRKiiOYvC+BqjOIkUvXVxr5Tl/1WDUgah1BTaQO80KEphtmEen4s1gLQEUN6lA0HsBAyDOMHGfkDgcT2pH8A6s5bc8BpXyyGZOLQ89h5vpvCPFFbxHNxffKXgRWLUfoNoXDqBG0kxDm7+CLmkD9jmH1XkRu3a0qr9KgZDUqQoVHCpUMXF8/HN7+1VHIUP5pWO9mupX0jL91ymF16HBCucJQiCWmKr2Cn+huPwtzcRblAoQAZY4da1PbIBwdys8Q77WETrTiK/XrQHiE/ZRiPFZK3B4wPFjMGyp7yhnF23ram76E3ny0xqunfjvyTLcLVmkmdDIz6FpNCa2Qd+oqpkKzFEF3hcmZgue9uqsmjJk4ymAKqTXB2PUdz0GoOe7obg6QyZS0WvgsuCuem5yePjYL43AXiFfyDp4fDRRaB5qpJzXS8HzCh0Whyg3z8UEygVnXMmL1k/84LsfME4/ubMV4cJn5Q9rDFGIwUfk4M98Y1ylPWQfcbwpAxtipBN0uQL6WX6L4dglE4wcf/0d6IGmIxF03E08BvvQvniox7fZEIYY8dP9LlitXZBfKqSDw3jQ5JuLllGI//hbXGu8IxWFnABz5i/NkNGJnSb6b4V5vWXAWSBi918ZZYMmxqH87hypen6ONq2jxPXdgN4lphyQDxL7Sx1oNAUUdm8NqTj47g6Ny0RWHUJPAnKAZNpAljmbCny0fkTzDzg/OhetkUv6+BSRZq800gaGkNz41cmJvTZBe+MOrGEvHwc5C2uFsLJuagJ+vryyN0sdpuSFVF/3Zm8Ch/aFldeS5xjwf7Yfy2Nb2H2WRJbFa01sEbMiMkrhLLpyQdwL9XoFBN/1IKoZyQE0fBLXwU8D9BnL3PCBbSeVDoswRt7hPe40SyBMTu9uhzn9n7DXhWqb+hpbM1ViDlT1wE/P4xx3UcRRb+xx5ANkbuF11Yf16cAa0hwM/2BmRAVInmgeNS4Lp/gre0WBO9x21I3rZ5YaRxRsOUTBlaElYRMcxQQTkw6sc1TM3u7lK+b6Ug8iS8jYP+3m/QGHF4W/3eHVoELfBq8vwYCPa87338sQwlLAmQlf5REYBqDhV0Z075hmwGeOPW/Q+2cKpY8XdlD/eYKhgNuHV1pL1CRAbWCkZg21Lq7zVR+wYuu3tuEqmIT7+P0Yj4EjNiODe523wBNPH2gxLzupPZmT/fR1YoI/ij51qj6QPCQgy1eJB4TTlmNJHDNBKEakVr26wFg4Pd6y+99W1sEPNn6weoezXLk5DWSXln0AdAmYcxa5I8ZWGwDrTMASf6QUNlg0lTXbqw9khZgdk069zrfYzBhtcSyHAqg6DzyHeLzUbPNXmvBS2WGbbJUZX73tqB+cRAD4UUDv02ZQ2YrUT0AQpvc9+dekzWuv/UGnQ1Y085NMSP6s+sGL0WfcOamb39Y7Ov4y6hCikq5M1TiHogndk7Apkm1hQLOiUM3Tb0IXmrBtmX6RxvUgXBLQ+XuZjJ3884soM0swwdt9f2vKljG2lnOnCdHPVSQUO3XQ90itLXQhq21B8SOiFA0DvRWJMEhr4d3LdNOAbj6Iu1yQ0PvdEaD0X+1ND/3Tot6yAlAqzA6+47tnU1Gq0s6Y6uqkW5u2oSSwMoeIoRInBIKLO4tSW/rKICWJznuDivRIm5BHPFajEnahJdzclA7sPsbbKNwXEj7jzJELl+oUympJ/L1dpPfxcM3tSmErgwfwdNWNkf97kml9MZ03F2bUm71Azm1tq26aFUUOGxbsGI2T8NNFJsf25m5CfC06YK3F5Yb8pG08IhKRrkihM356uJcjC0m5V+OUETF2fTQLytWbq1gthXfaG+gE4Gk/MUX1vHfGUprTf3JYgiIZzgIIZeaX5j4XJ7hykwb6ahhIMX/ndB5XYGCER2vkDrDPwspsAL/pXiIOMDFSwJVsvf/9fbLDttYNJCR2B9/Enbjh87abaYlQsgUjsPFPAGH2nw7hX6iuEihrPyLZdUp0xJb2PIq8R4xpiStzomDdVkC018YPRWank9mKXHYf4+1QdQ3AftOs5iDMgf50XASNl/6F4V+NGX2vRiPJ2gxWBvpoPu5csSgKetHiJCqNLbHLggFQEjYJyW3Cepsm87LC1/eEa7AEPdR+eQYsIp4Xr1LMD9cEogHpz+/VOgdtcQmPMrNHsRolTaO5lT1vbrRJE+SM6byoi/ACDKI2pRObI+FPzflmm5X0/Kh+b6InGzCXR+k1CXyUauI6wro82J8T+vHdxPEy59kdXlAicy7q0/+UZ8zF4ApNT7XXV9sgmyhzD3/v1kWwDPnowptr/JJT01TTHTUPtDDqy5X497h56jqwjWex3Lc7cTusrkVrcHg26fIMw/zyTW3pgmrwpGayVC8kg3pNJQw+MX6xYO5Cq/EQv72rOKVw5YY83IWqkh6GHn3bTghvMETiWoCDUPB0JNsPY1i7hrFCYzGJib+p6M53ngNCfjI786qZ78CQVhmIyl8VGGwYrvtHY3UFArXUDK/Y9rc2lvMoCIBCwhq5w/eaJiTN1BhMgFVvgbdI+Y9cj/UgtE3yFjsQp/kI+oEyCDQntuzO1UhZiP2/9nXm4Lyf/ZhUcdEI9I0=,iv:aG4nqGJ/TRiAtiWoPwqej6We+IWEWFibCqL7bGwXbkA=,tag:c5ckW2o4+2rm/5mrGF1tzg==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVby9Wa1NUUkpyeDMwU3dM
|
|
||||||
R0EyeFVtT0tJU0pKaWtXQzRkTDBPY3JjcTFrClNIQnl2WVorS0FZZjhicTQ5V2kx
|
|
||||||
MUZTZWZtaUk2a1ZhUTBCUnhkWHFIMFUKLS0tIElLcjJLZWNLOUJYN0NNVGFNUEFN
|
|
||||||
RkMrdTYwNkY1Tlc3M3dxTFdkRXJJZUEKUlYU45jXpS9hJO9Z/uAQ6XMj9QWgMMRI
|
|
||||||
LbJxvt48+yC+Y0XKOtDE0lHAuGNzUG8R/7FB1tTD8NCamBe46KGCIg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2026-04-23T07:50:07Z"
|
|
||||||
mac: ENC[AES256_GCM,data:V3us1oxkQxIg5hn8TMiSHWa0RhNbio2mP8j59lSCKDLjnpTUHUAUZZOan+fkBwPxxtIdZFVZQl/kZuEHcnNwXk8J0DLeT8jrs8pvlDCHMAc+C9uzThNjQ9CrZ2C/dNtoI6uop3a6qo8UMhKhvAus08yR8rLsY7Gqt/In28HKqxU=,iv:g8wmq1thPfkSSfG+mtJS0431wbon/uylDTfH0P31dlw=,tag:5Z6CJMWeGN6frTLJQMxGGw==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.12.2
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# Choose your theme here:
|
|
||||||
../../themes/nixy.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config.var = {
|
|
||||||
hostname = "h-work";
|
|
||||||
username = "hadrien";
|
|
||||||
configDirectory = "/home/" + config.var.username + "/.config/nixos"; # The path of the nixos configuration directory
|
|
||||||
|
|
||||||
keyboardLayout = "fr";
|
|
||||||
|
|
||||||
timeZone = "Europe/Paris";
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
extraLocale = "fr_FR.UTF-8";
|
|
||||||
|
|
||||||
git = {
|
|
||||||
username = "Hadi";
|
|
||||||
email = "hadi@example.com";
|
|
||||||
};
|
|
||||||
|
|
||||||
autoUpgrade = false;
|
|
||||||
autoGarbageCollector = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# DON'T TOUCH THIS
|
|
||||||
options = {
|
|
||||||
var = lib.mkOption {
|
|
||||||
type = lib.types.attrs;
|
|
||||||
default = {};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
rocmPackages.clr.icd
|
|
||||||
# Support VA-API pour AMD
|
|
||||||
libvdpau-va-gl
|
|
||||||
libva-vdpau-driver
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+1
-3
@@ -13,9 +13,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
"10-disable-camera" = {
|
"10-disable-camera" = {
|
||||||
"wireplumber.profiles" = {
|
"wireplumber.profiles" = {main."monitor.libcamera" = "disabled";};
|
||||||
main."monitor.libcamera" = "disabled";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
+3
-1
@@ -1,7 +1,9 @@
|
|||||||
# Bluetooth configuration for NixOS
|
# Bluetooth configuration for NixOS
|
||||||
{
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [blueman];
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
powerOnBoot = true;
|
powerOnBoot = true;
|
||||||
};
|
};
|
||||||
|
services.blueman.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
{config, pkgs, ...}: {
|
# Docker is a containerization platform that allows you to run applications in isolated environments called containers.
|
||||||
|
{config, ...}: {
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
virtualisation.docker.package = pkgs.docker_29;
|
|
||||||
users.users."${config.var.username}".extraGroups = ["docker"];
|
users.users."${config.var.username}".extraGroups = ["docker"];
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user