Compare commits
1532 Commits
2ea661c8f4
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 445829e365 | |||
| bb054e7e8d | |||
| eb7cea567c | |||
| 8654da046c | |||
| f56bf4402c | |||
| 6953622559 | |||
| 5076c244db | |||
| 9a3fa6f4a9 | |||
| 735cd50059 | |||
| 663439dcdf | |||
| 61ecbdb8d3 | |||
| 3f67868830 | |||
| a50e14d04c | |||
| 40dea7c9bc | |||
| 6a2adfb338 | |||
| 2affa2a8ec | |||
| 60d850c2bc | |||
| 5d0ef403e3 | |||
| ac008183bd | |||
| a4b07fa578 | |||
| a7684e2ee4 | |||
| 56341489e8 | |||
| 0846223efd | |||
| e58bb947d3 | |||
| 9baaaa2bfe | |||
| a7100f6ed5 | |||
| 828fe95bd4 | |||
| be9ffa94c6 | |||
| 7fd44889a5 | |||
| 3b32f061da | |||
| 2234f167ef | |||
| 07df6754de | |||
| 8e093d75ef | |||
| ac0a706f1c | |||
| b0a3843bcc | |||
| 6c5210cf66 | |||
| f704a5e9c4 | |||
| 0cef4320fd | |||
| f1f22de7b7 | |||
| f73f992540 | |||
| d29e164c99 | |||
| 9787f677de | |||
| 16eb64de6e | |||
| f3d9a4b428 | |||
| 30e14103d1 | |||
| 23d7c0b460 | |||
| 075f8c4a11 | |||
| 0c89a3d7e5 | |||
| 9000ed8e28 | |||
| 9365de4822 | |||
| 207c49fff8 | |||
| 120a6df4ed | |||
| f036f367da | |||
| 6fc06f8616 | |||
| 9880cbeb0f | |||
| bb6cb8c00e | |||
| beeb29276c | |||
| a2aa6c3d08 | |||
| 83b0a34256 | |||
| 1459743717 | |||
| c76f503dcc | |||
| 7931f68e41 | |||
| 5f74119742 | |||
| e593974327 | |||
| b245cfacf9 | |||
| 38c00b16f1 | |||
| 5a0bf2e2ac | |||
| 66758b8c24 | |||
| 4c4035acf3 | |||
| cced6d4f3a | |||
| 8aa58a2d0d | |||
| 94903f7b8a | |||
| bf44f38fa0 | |||
| dbc68cdfc5 | |||
| d25bc65534 | |||
| 8d4f4cfd41 | |||
| ff31020187 | |||
| 93971606b9 | |||
| 092cf1cbd7 | |||
| 37c6211cb8 | |||
| 7793ac81c4 | |||
| bc6dd4e7a2 | |||
| 517465799f | |||
| e5dc149b99 | |||
| bae9ba2206 | |||
| f578134eda | |||
| c082fd0e34 | |||
| 8e47d2bd42 | |||
| 1340916804 | |||
| fd9d12cca9 | |||
| 4695035189 | |||
| 460bbd13af | |||
| f34a6a5c46 | |||
| 0edce83723 | |||
| 5268761f93 | |||
| 3ba89fdc62 | |||
| e5def52943 | |||
| 4139a737a7 | |||
| ebaf1432ec | |||
| 8cc20297ff | |||
| dbf72b0908 | |||
| 21490ddc4b | |||
| 0a71c8a008 | |||
| 8938762d5c | |||
| 07e1790037 | |||
| 685e88700c | |||
| 8a3de59ef8 | |||
| d1438c47e7 | |||
| dee01e6445 | |||
| f4991fb791 | |||
| 6df293c05a | |||
| a40fac04e5 | |||
| c800d3323f | |||
| 8cefd8452d | |||
| f18e8d4c54 | |||
| 94e589447a | |||
| 458f201632 | |||
| ac604883de | |||
| 08759a72dc | |||
| 489f625382 | |||
| f95f09b5fe | |||
| 632f7e1803 | |||
| 96db5ae833 | |||
| 50dc8d01c3 | |||
| 4d79b06b74 | |||
| 86cf2bd722 | |||
| 41858ae8d5 | |||
| 57c2968a5e | |||
| f0c09c3419 | |||
| 61d22024c7 | |||
| 6eef87a5e7 | |||
| 81118d2a83 | |||
| a5fa4e68bf | |||
| babbcabc7b | |||
| d16486c689 | |||
| bbe597823d | |||
| c06bdf9687 | |||
| 0d1ff517fa | |||
| a5ab8ddfd6 | |||
| 74720c3237 | |||
| 517ef11ec5 | |||
| 0a42c2e42c | |||
| b6de70ee92 | |||
| 6e34c7d981 | |||
| e2a6572b3b | |||
| 256af405aa | |||
| 65a79ad825 | |||
| 2bca81d5b0 | |||
| 3ae26a1824 | |||
| 449574d41a | |||
| d42942539d | |||
| 1f08634963 | |||
| acd53cf447 | |||
| cef215e013 | |||
| 7bf5ea63cf | |||
| 7c8bc1120d | |||
| fcf899a3e4 | |||
| d89f08628f | |||
| 2981e825cc | |||
| f2cc6f585c | |||
| 4519deff2a | |||
| e653e61f95 | |||
| 7e7af440b1 | |||
| 4dc3880ed5 | |||
| edbdc57095 | |||
| 907f83f904 | |||
| 97a9b6d46a | |||
| bd392e2d76 | |||
| 74f9dbf41d | |||
| 79926862b3 | |||
| d9260e41c5 | |||
| 4e03d67f47 | |||
| 81bcc90087 | |||
| b415d9b1c9 | |||
| a9c0efddbd | |||
| 0bd2ea12d7 | |||
| 94a0ac4f37 | |||
| de3b1f96c8 | |||
| 8fa48091c3 | |||
| d991edf5ab | |||
| 4e28fc2e1c | |||
| 5f6d420f44 | |||
| cc8e4909e2 | |||
| f0f66e9ff5 | |||
| ddd0361dd1 | |||
| b0bdfe592e | |||
| 010499f7c8 | |||
| a9ef1dacd1 | |||
| 5e72e95231 | |||
| 0f2e6fde66 | |||
| 6e6129337e | |||
| 0deaf7c43a | |||
| 1f8858b5c4 | |||
| d661a9f274 | |||
| 418ff715ac | |||
| f25379daee | |||
| 4090bc57d4 | |||
| 179f9356ba | |||
| fabc66d025 | |||
| 73da720c44 | |||
| e18e3acbf3 | |||
| ae1d898ec8 | |||
| f5bb810306 | |||
| 38e417eaa9 | |||
| f29c186f9a | |||
| cb3427c23c | |||
| 27ca1425e6 | |||
| 71c6af5b40 | |||
| 0d55e6df30 | |||
| 2751481d44 | |||
| dd82e1a54d | |||
| 8e99cff275 | |||
| d886414d49 | |||
| bd0d515fe9 | |||
| e090847313 | |||
| 3860731172 | |||
| 2e174f948b | |||
| 84e9ad059e | |||
| c33a1287d6 | |||
| 1b57252dd7 | |||
| 0eb1673b93 | |||
| 5310ffb0eb | |||
| 09aa0d8b53 | |||
| ab78a4f96d | |||
| c9e6f940fa | |||
| 002a3fa8cc | |||
| bade12e797 | |||
| b469b470d1 | |||
| cc6a4a1420 | |||
| b640f51b9a | |||
| b439a09368 | |||
| c4bc7a65fa | |||
| 4a30068d34 | |||
| f22616e26c | |||
| 54779b19e6 | |||
| e5af5ad4c1 | |||
| 1a2b83a4c3 | |||
| 4f01870115 | |||
| e3be677baa | |||
| 2f01d6eb1d | |||
| bdf04d1332 | |||
| 9040a2e058 | |||
| d4929d2012 | |||
| 31ae503629 | |||
| f8a8987c02 | |||
| 312c7c7342 | |||
| 093591c8e3 | |||
| 858d07d2e4 | |||
| ea37f50d93 | |||
| f63a15737d | |||
| 1c4f9769c0 | |||
| 3abe80a52d | |||
| e9c65ba519 | |||
| 5800c9849f | |||
| d4f33b6cd0 | |||
| 87e367c848 | |||
| 9193709f2f | |||
| b218e4ee69 | |||
| 4be6cab204 | |||
| d36258f0e5 | |||
| 9584ad7c36 | |||
| be8abdf661 | |||
| e9191589f4 | |||
| 3ad0e29c7d | |||
| 6584e50a7e | |||
| 5ca86f0772 | |||
| c7cbf652c4 | |||
| b0e1c01dda | |||
| bb7bcb73bc | |||
| 4c538c127f | |||
| 11ae0559eb | |||
| 96b140df41 | |||
| f663cd7a47 | |||
| 6459e0b1b4 | |||
| 8acd1a6215 | |||
| a1bbaf5d22 | |||
| 53b9a56350 | |||
| d33da45600 | |||
| 387b7b8750 | |||
| 8c996e0dea | |||
| 67cc20cb41 | |||
| 48809b4e1e | |||
| 7718d60d57 | |||
| 73271ea2fd | |||
| 055737dca2 | |||
| 630ea14bb9 | |||
| 2ec5c1ee7d | |||
| 97cc0b06ac | |||
| 9b8f7c2ed2 | |||
| 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,133 +0,0 @@
|
|||||||
<div align="center">
|
|
||||||
<img alt="nixy logo" src="./.github/assets/logo.png" width="120px" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
# Nixy
|
|
||||||
|
|
||||||
<br>
|
|
||||||
<div align="center">
|
|
||||||
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
|
||||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=starship&logoColor={primarycolor}">
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/anotherhadi/nixy/">
|
|
||||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=github&logoColor={primarycolor}">
|
|
||||||
</a>
|
|
||||||
<a href="https://nixos.org">
|
|
||||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor={backgroundcolor}&logo=NixOS&logoColor={primarycolor}&color={primarycolor}">
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
|
||||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA={backgroundcolor}&colorB={primarycolor}&logo=unlicense&logoColor={primarycolor}"/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily
|
|
||||||
customizable setup. It provides a structured way to manage your system
|
|
||||||
configuration and dotfiles with minimal effort. It includes _home-manager_,
|
|
||||||
_secrets_, and _custom theming_ all in one place.
|
|
||||||
|
|
||||||
**Features:**
|
|
||||||
|
|
||||||
- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!)
|
|
||||||
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
|
||||||
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
|
||||||
|
|
||||||
## Table of Content
|
|
||||||
|
|
||||||
{md_table_of_content}
|
|
||||||
|
|
||||||
## Screenshots
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
### 🏠 /home (User-level configuration)
|
|
||||||
|
|
||||||
Contains **dotfiles and settings** that apply to your user environment.
|
|
||||||
|
|
||||||
**Subfolders:**
|
|
||||||
|
|
||||||
- `programs` is a collection of apps configured with home-manager
|
|
||||||
- `system` is some "desktop environment" configuration
|
|
||||||
|
|
||||||
### 🐧 /nixos
|
|
||||||
|
|
||||||
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader,
|
|
||||||
...)
|
|
||||||
|
|
||||||
### 🎨 /themes
|
|
||||||
|
|
||||||
This folder contains all system themes. Mainly
|
|
||||||
[stylix](https://stylix.danth.me/) configurations. Check out the available
|
|
||||||
themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
|
|
||||||
|
|
||||||
### 💻 /hosts
|
|
||||||
|
|
||||||
This directory contains host-specific configurations. Each host includes:
|
|
||||||
|
|
||||||
- `configuration.nix` for system-wide settings
|
|
||||||
- `home.nix` for user-level configuration
|
|
||||||
- `variables.nix` for global variables
|
|
||||||
- `secrets/` for sensitive data
|
|
||||||
|
|
||||||
### 🖥️ /server-modules
|
|
||||||
|
|
||||||
This folder contains server-related nixos modules. (bitwarden, nextcloud, ...)
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to
|
|
||||||
your system:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Copy the `hosts/laptop` folder, rename it to match your system’s hostname,
|
|
||||||
and update `variables.nix` with your machine’s settings.
|
|
||||||
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure
|
|
||||||
proper hardware support.
|
|
||||||
4. Register your new host in `flake.nix` by adding it under nixosConfigurations.
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> `# CHANGEME` comments are placed throughout the config to
|
|
||||||
> indicate necessary modifications. Use the following command to quickly locate
|
|
||||||
> them:
|
|
||||||
>
|
|
||||||
> ```sh
|
|
||||||
> rg "CHANGEME" ~/.config/nixos
|
|
||||||
> ```
|
|
||||||
|
|
||||||
> [!TIP]
|
|
||||||
> When you add new files, don't forget to run `git add .` to add them to the git
|
|
||||||
> repository
|
|
||||||
|
|
||||||
5. Build the system
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
|
||||||
```
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
- [SERVER](docs/SERVER.md): Check out the server documentation
|
|
||||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
|
||||||
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
|
||||||
collection of wallpapers
|
|
||||||
- [NEOVIM](docs/NEOVIM.md): How to use the Neovim config in your own flake
|
|
||||||
|
|
||||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
|
||||||
- [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: 837 KiB |
|
Before Width: | Height: | Size: 738 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
@@ -1,20 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Create the README.md file from the .github/assets/README_template.md file
|
|
||||||
|
|
||||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
|
||||||
|
|
||||||
README_FILE="./README.md"
|
|
||||||
|
|
||||||
table_of_content=$(markdown-table-of-contents --start-by 2 ./.github/assets/README_template.md) # https://github.com/anotherhadi/markdown-table-of-contents
|
|
||||||
readme_content=$(cat "./.github/assets/README_template.md")
|
|
||||||
|
|
||||||
# Replace variables
|
|
||||||
readme_content=${readme_content//\{primarycolor\}/A89AD1}
|
|
||||||
readme_content=${readme_content//\{backgroundcolor\}/0b0b0b}
|
|
||||||
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
|
|
||||||
|
|
||||||
echo "[//]: # (This file is autogenerated)" >"$README_FILE"
|
|
||||||
echo "$readme_content" >>"$README_FILE"
|
|
||||||
sed 's/\r//' "$README_FILE" >"/tmp/readme.md"
|
|
||||||
mv "/tmp/readme.md" "$README_FILE"
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
PATTERN = re.compile(r"<!-- exec: (.+?) -->.*?<!-- endexec -->", re.DOTALL)
|
||||||
|
|
||||||
|
|
||||||
|
def replace(match):
|
||||||
|
cmd = match.group(1).strip()
|
||||||
|
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
||||||
|
output = result.stdout
|
||||||
|
if result.returncode != 0:
|
||||||
|
print(
|
||||||
|
f"[inject-exec] command failed ({result.returncode}): {cmd}",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
print(result.stderr, file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
output = re.sub(r"<!-- exec: .+? -->\n?|<!-- endexec -->\n?", "", output)
|
||||||
|
if output and not output.endswith("\n"):
|
||||||
|
output += "\n"
|
||||||
|
return f"<!-- exec: {cmd} -->\n{output}<!-- endexec -->"
|
||||||
|
|
||||||
|
|
||||||
|
def process(path):
|
||||||
|
content = Path(path).read_text()
|
||||||
|
new_content = PATTERN.sub(replace, content)
|
||||||
|
if new_content != content:
|
||||||
|
Path(path).write_text(new_content)
|
||||||
|
print(f"[inject-exec] updated {path}")
|
||||||
|
|
||||||
|
|
||||||
|
for p in sys.argv[1:]:
|
||||||
|
process(p)
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.github/assets/README_template.md'
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
jobs:
|
|
||||||
update-readme:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./
|
|
||||||
steps:
|
|
||||||
- name: Check out the repository to the runner
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Set up Go
|
|
||||||
uses: actions/setup-go@v5
|
|
||||||
with:
|
|
||||||
go-version: '^1.23'
|
|
||||||
- name: Install required dependencies
|
|
||||||
run: |
|
|
||||||
go install github.com/anotherhadi/markdown-table-of-contents@latest
|
|
||||||
- name: Run a script
|
|
||||||
run: |
|
|
||||||
chmod +x ./.github/scripts/create_readme.sh
|
|
||||||
./.github/scripts/create_readme.sh
|
|
||||||
git config user.name github-actions
|
|
||||||
git config user.email github-actions@github.com
|
|
||||||
git add .
|
|
||||||
git commit -m "Update README.md (auto)" && git push
|
|
||||||
exit 0
|
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
.sops.yaml
|
|
||||||
.claude/
|
.claude/
|
||||||
old/
|
old/
|
||||||
docs/superpowers/
|
docs/superpowers/
|
||||||
.superpowers/
|
.superpowers/
|
||||||
|
result/
|
||||||
|
.pre-commit-config.yaml
|
||||||
|
.direnv/
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
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
|
||||||
|
- *primary
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
[//]: # (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="./.github/assets/logo.png" width="120px" />
|
||||||
</div>
|
</div>
|
||||||
@@ -24,20 +23,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily
|
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, minimalist & easily
|
||||||
customizable setup. It provides a structured way to manage your system
|
customizable setup. It provides a structured way to manage your system
|
||||||
configuration and dotfiles with minimal effort. It includes _home-manager_,
|
configuration and dotfiles with minimal effort. It includes _home-manager_,
|
||||||
_secrets_, and _custom theming_ all in one place.
|
_secrets_, and _custom theming_ all in one place.
|
||||||
|
|
||||||
**Features:**
|
**Features:**
|
||||||
|
|
||||||
- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!)
|
- 💻 Hyprland & TUIs: Preconfigured Hyprland ecosystem with a lot of cool TUIs
|
||||||
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
||||||
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
||||||
|
- 🔒 Hardened by Default: LUKS encryption, sops-nix secrets, impermanence and more
|
||||||
|
|
||||||
## Table of Content
|
## Table of Content
|
||||||
|
|
||||||
- [Table of Content](#table-of-content)
|
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||||
|
|
||||||
- [Screenshots](#screenshots)
|
- [Screenshots](#screenshots)
|
||||||
- [Architecture](#architecture)
|
- [Architecture](#architecture)
|
||||||
- [🏠 /home (User-level configuration)](#-home-user-level-configuration)
|
- [🏠 /home (User-level configuration)](#-home-user-level-configuration)
|
||||||
@@ -48,11 +50,13 @@ _secrets_, and _custom theming_ all in one place.
|
|||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
- [Documentation](#documentation)
|
- [Documentation](#documentation)
|
||||||
|
|
||||||
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
@@ -87,7 +91,7 @@ This directory contains host-specific configurations. Each host includes:
|
|||||||
|
|
||||||
### 🖥️ /server-modules
|
### 🖥️ /server-modules
|
||||||
|
|
||||||
This folder contains server-related nixos modules. (bitwarden, nextcloud, ...)
|
This folder contains server-related nixos modules. (gitea, cloudflared, self-hosted apps, ...)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,5 @@ The process is straight-forward.
|
|||||||
- Write your changes (new theme, bug fixes, issues fix, ...).
|
- Write your changes (new theme, bug fixes, issues fix, ...).
|
||||||
- Create a Pull Request against the main branch of Nixy.
|
- Create a Pull Request against the main branch of Nixy.
|
||||||
|
|
||||||
> [!TIP]
|
|
||||||
> To update the README, change the `./.github/assets/README_template.md`
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> Don't push your host's folder
|
> Don't push your host's folder
|
||||||
|
|||||||
@@ -37,4 +37,4 @@ Then import the home-manager module in your home configuration:
|
|||||||
| `picker.nix` | Snacks picker + oil.nvim |
|
| `picker.nix` | Snacks picker + oil.nvim |
|
||||||
| `snacks.nix` | Snacks extras: image preview, zen mode, git signs, statuscolumn |
|
| `snacks.nix` | Snacks extras: image preview, zen mode, git signs, statuscolumn |
|
||||||
| `utils.nix` | Bufferline, lualine, copilot, lazygit, toggleterm, autocomplete |
|
| `utils.nix` | Bufferline, lualine, copilot, lazygit, toggleterm, autocomplete |
|
||||||
| `mini.nix` | Mini.nvim suite: pairs, comment, icons, indentscope, diff, git |
|
| `mini.nix` | Mini.nvim suite: ai, clue, comment, diff, git, icons, indentscope, jump2d, pairs, starter, statusline, surround |
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
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 **a Cloudflare Tunnel**.
|
||||||
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?**
|
||||||
|
|
||||||
@@ -17,13 +17,17 @@ The server is designed for private, secure, and easily manageable self-hosting o
|
|||||||
|
|
||||||
The server hosts several key applications:
|
The server hosts several key applications:
|
||||||
|
|
||||||
- **NGINX**: Reverse proxy for routing traffic to services via my domain name.
|
|
||||||
- **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.
|
||||||
- **Glance**: An awesome dashboard! (See the screenshot above)
|
- **Glance**: An awesome dashboard! (See the screenshot above)
|
||||||
- **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. (legally ofc)
|
||||||
- **Mealie**: A self-hosted recipe manager and meal planner with a clean user interface.
|
- **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.
|
- **Stirling-PDF**: A powerful, locally hosted web application for editing, merging, and converting PDF files.
|
||||||
- **CyberChef**: The "Cyber Swiss Army Knife" for data analysis, decoding, and encryption tasks.
|
- **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.
|
- **Mazanoke**: A utility service for image processing, specialized in format conversion and downgrading/optimization.
|
||||||
|
- **Umami**: Privacy-focused web analytics.
|
||||||
|
- **Gitea**: Self-hosted git forge.
|
||||||
|
- **Blog**: Personal website/blog.
|
||||||
|
- **iknowyou**: Personal project hosted in two containers (prod + demo).
|
||||||
|
- **Awesome Wallpapers**: Wallpaper browser served via NGINX inside a container.
|
||||||
- **SSH**: Secure remote access configuration for server management. (via browser too)
|
- **SSH**: Secure remote access configuration for server management. (via browser too)
|
||||||
- **Security related stuff**: Cloudflared, Fail2Ban, Firewall
|
- **Security related stuff**: Cloudflared, Fail2Ban, Firewall, Kernel Hardening
|
||||||
|
|||||||
@@ -1,17 +1,9 @@
|
|||||||
# Themes
|
# Themes
|
||||||
|
|
||||||
Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
|
Themes are defined in `themes/`. They define the colors, fonts, icons, wallpaper, and other visual settings used by Hyprland and all apps/programs.
|
||||||
You can change the selected theme by changing the import statement of your host's variables.nix file.
|
You can change the selected theme by changing the import statement in your host's `variables.nix` file.
|
||||||
|
|
||||||
## Create your theme
|
## Create your theme
|
||||||
|
|
||||||
Create a copy of one of the existing themes and change the variables.
|
Create a copy of `themes/nixy.nix` and change the variables.
|
||||||
Wallpapers are loaded from the [hadi's awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo.
|
Wallpapers are loaded from my [awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo.
|
||||||
|
|
||||||
## Gallery
|
|
||||||
|
|
||||||
### Rose-pine
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|||||||
@@ -1,23 +1,5 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"awesome-wallpapers": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1781031430,
|
|
||||||
"narHash": "sha256-AcJTjMpnffSJ6bpTDEaGcJ/31rOOYDgGr/2L2yH7H0Y=",
|
|
||||||
"owner": "anotherhadi",
|
|
||||||
"repo": "awesome-wallpapers",
|
|
||||||
"rev": "0147e19341039fd3b01d36c3cbaa9571105fb777",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "anotherhadi",
|
|
||||||
"repo": "awesome-wallpapers",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16": {
|
"base16": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"fromYaml": "fromYaml"
|
"fromYaml": "fromYaml"
|
||||||
@@ -89,7 +71,7 @@
|
|||||||
"blog": {
|
"blog": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"bun2nix": "bun2nix",
|
"bun2nix": "bun2nix",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780522780,
|
"lastModified": 1780522780,
|
||||||
@@ -155,50 +137,10 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bun2nix_3": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts_3",
|
|
||||||
"import-tree": "import-tree_3",
|
|
||||||
"nixpkgs": [
|
|
||||||
"iknowyou",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems_3",
|
|
||||||
"treefmt-nix": "treefmt-nix_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1770895533,
|
|
||||||
"narHash": "sha256-v3QaK9ugy9bN9RXDnjw0i2OifKmz2NnKM82agtqm/UY=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "bun2nix",
|
|
||||||
"rev": "c843f477b15f51151f8c6bcc886954699440a6e1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "bun2nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"crane": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1780532242,
|
|
||||||
"narHash": "sha256-D+BsdpxmtUwtqGoY0IXPhHgTlmqgcZKCEo1oMyn7ep0=",
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"rev": "59a82a1222dd3b2080b5cc52a1a2e8d5f1b77f37",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default-creds": {
|
"default-creds": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"bun2nix": "bun2nix_2",
|
"bun2nix": "bun2nix_2",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780323652,
|
"lastModified": 1780323652,
|
||||||
@@ -214,14 +156,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"disko": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1781152676,
|
||||||
|
"narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"firefox-gnome-theme": {
|
"firefox-gnome-theme": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779670703,
|
"lastModified": 1783570805,
|
||||||
"narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=",
|
"narHash": "sha256-ptl5aRlCv9/uRSv2u8Hq8UFVFeZ6Q/bT049bpqNgc3w=",
|
||||||
"owner": "rafaelmardojai",
|
"owner": "rafaelmardojai",
|
||||||
"repo": "firefox-gnome-theme",
|
"repo": "firefox-gnome-theme",
|
||||||
"rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9",
|
"rev": "5602ed62d638142c1ab31dccd01dfbfb28841225",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -231,6 +193,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777699697,
|
"lastModified": 1777699697,
|
||||||
@@ -283,24 +261,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_3": {
|
"flake-parts_3": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": "nixpkgs-lib_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1769996383,
|
|
||||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts_4": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nur",
|
"nur",
|
||||||
@@ -321,28 +281,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_5": {
|
"flake-parts_4": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"nvf",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1778716662,
|
|
||||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts_6": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"stylix",
|
"stylix",
|
||||||
@@ -350,11 +289,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778716662,
|
"lastModified": 1782949081,
|
||||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
"narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
"rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -379,6 +318,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1784288435,
|
||||||
|
"narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gnome-shell": {
|
"gnome-shell": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -399,15 +359,15 @@
|
|||||||
"helium-browser": {
|
"helium-browser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs-unstable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781783441,
|
"lastModified": 1786621994,
|
||||||
"narHash": "sha256-v7rAVyX0DGAYqei3FxWPDJLqrzJrEsue2DVBEDApxQo=",
|
"narHash": "sha256-ygaOQQFGv3QHcNMoGBor22Dm5GouzmwYucrUfX6oTxQ=",
|
||||||
"owner": "oxcl",
|
"owner": "oxcl",
|
||||||
"repo": "nix-flake-helium-browser",
|
"repo": "nix-flake-helium-browser",
|
||||||
"rev": "aabc12cf6518480d83b2b5d06d2eecf86a25273f",
|
"rev": "810640b8a7aa504d3962ec8bb857f8252aad6547",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -423,11 +383,33 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782103446,
|
"lastModified": 1785119570,
|
||||||
"narHash": "sha256-+vMR3KPBVoY9nJrQI9qje5H1vmv51dJgMYkUuYimtJg=",
|
"narHash": "sha256-Rgs2xKnGLFWQscxUaXX07oyZeuMDOHEbqDOsgliLFGM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "d8dac1f668fd861369571be3678ec75b1573e7e3",
|
"rev": "d4fd24667c8cbef124bb70a20380cab75ec8474d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-26.05",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"impermanence",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1768598210,
|
||||||
|
"narHash": "sha256-kkgA32s/f4jaa4UG+2f8C225Qvclxnqs76mf8zvTVPg=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "c47b2cc64a629f8e075de52e4742de688f930dc6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -436,23 +418,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"iknowyou": {
|
"impermanence": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"bun2nix": "bun2nix_3",
|
"home-manager": "home-manager_2",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_3"
|
||||||
"nur-osint": "nur-osint"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779949739,
|
"lastModified": 1769548169,
|
||||||
"narHash": "sha256-axo7EprQSm8yYL4P6Ye9EZGEz/bdh8HHkmBlRIQzzvM=",
|
"narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=",
|
||||||
"owner": "anotherhadi",
|
"owner": "nix-community",
|
||||||
"repo": "iknowyou",
|
"repo": "impermanence",
|
||||||
"rev": "bb778b43747b7e703e2c311a898198c4a89ac12a",
|
"rev": "7b1d382faf603b6d264f58627330f9faa5cba149",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "anotherhadi",
|
"owner": "nix-community",
|
||||||
"repo": "iknowyou",
|
"repo": "impermanence",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -486,21 +467,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"import-tree_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1763762820,
|
|
||||||
"narHash": "sha256-ZvYKbFib3AEwiNMLsejb/CWs/OL/srFQ8AogkebEPF0=",
|
|
||||||
"owner": "vic",
|
|
||||||
"repo": "import-tree",
|
|
||||||
"rev": "3c23749d8013ec6daa1d7255057590e9ca726646",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "vic",
|
|
||||||
"repo": "import-tree",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mnw": {
|
"mnw": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780772958,
|
"lastModified": 1780772958,
|
||||||
@@ -523,11 +489,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782030356,
|
"lastModified": 1786249295,
|
||||||
"narHash": "sha256-h4WpMr455AfRub0FXBaon6Vcpe0waUyJ4GivIW6oyd4=",
|
"narHash": "sha256-Y2mSr+HLKYoOsjiackgilxkHXe8gkJ3z4hFFekjQX3I=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "3017088b49efd404f78e3b104f553b97e4af786b",
|
"rev": "14d55b8069119e3b88da7aa2f6c97f86a2cd3cd6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -538,35 +504,35 @@
|
|||||||
},
|
},
|
||||||
"nixarr": {
|
"nixarr": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"treefmt-nix": "treefmt-nix_4",
|
"treefmt-nix": "treefmt-nix_3",
|
||||||
"vpnconfinement": "vpnconfinement",
|
"vpnconfinement": "vpnconfinement",
|
||||||
"website-builder": "website-builder"
|
"website-builder": "website-builder"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781774207,
|
"lastModified": 1784997863,
|
||||||
"narHash": "sha256-pUHOn5uRbY1yOdeBgfm/UpkVkN9YrLUxl7jZnN1emyo=",
|
"narHash": "sha256-oTMag4I9MW3bstuOKqzc0F1OqxO49lLa9jkSkRe3EqA=",
|
||||||
"owner": "rasmus-kirk",
|
"owner": "nix-media-server",
|
||||||
"repo": "nixarr",
|
"repo": "nixarr",
|
||||||
"rev": "67952a6e79a298396e909d35f7ee35b23f754c43",
|
"rev": "282ce99b31d52d72cca281e3d26d3dd267946800",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "rasmus-kirk",
|
"owner": "nix-media-server",
|
||||||
"repo": "nixarr",
|
"repo": "nixarr",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782166108,
|
"lastModified": 1786528975,
|
||||||
"narHash": "sha256-/EtnQBcKbsaCAGQ5VRcplrHRkR4ryqyLMpBfkVuG9Xw=",
|
"narHash": "sha256-8KuasCs+mVQ7WbLONUf/QB7NZeQvovyXRyxAj4nOOzY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "875776f0252fcb8618bb948640a0d1f7a5b362be",
|
"rev": "3e7edd9afe17e45521300e041c65de3015f4a302",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -577,15 +543,15 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774106199,
|
"lastModified": 1776548001,
|
||||||
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
|
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
|
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
@@ -621,54 +587,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib_3": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769909678,
|
"lastModified": 1786599213,
|
||||||
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
|
"narHash": "sha256-yNJd40f11EzXBjSByCB7IPpeFFAdeoSKKM67dGkfFoU=",
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"rev": "72716169fe93074c333e8d0173151350670b824c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1782116945,
|
|
||||||
"narHash": "sha256-G3tw/IXmaH6IQ2upZvhuN9sG8CkuX+BLuJDpE8hz0Ds=",
|
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "34268251cf5547d39063f2c5ea9a196246f7f3a6",
|
"rev": "0e251e24a4f24e036a084b6b4b2d2491af4167f4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-26.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1776548001,
|
|
||||||
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772773019,
|
"lastModified": 1772773019,
|
||||||
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
|
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
|
||||||
@@ -684,23 +619,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775710090,
|
"lastModified": 1768564909,
|
||||||
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
|
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
|
"rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775595990,
|
"lastModified": 1775595990,
|
||||||
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
|
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
|
||||||
@@ -716,7 +651,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767892417,
|
"lastModified": 1767892417,
|
||||||
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
|
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
|
||||||
@@ -729,29 +664,13 @@
|
|||||||
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781577229,
|
"lastModified": 1786535285,
|
||||||
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
|
"narHash": "sha256-rG5HKMAgAhMgydvKGtco6rqTxRq4EDZQCx9USLvVqYw=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
|
"rev": "9f78f44a87948854445dae0b6bf82b2e87e4efb5",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_8": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1781216227,
|
|
||||||
"narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -761,41 +680,32 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notashelf-tuigreet": {
|
"nixpkgs_7": {
|
||||||
"inputs": {
|
|
||||||
"crane": "crane",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"rust-overlay": "rust-overlay"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781718334,
|
"lastModified": 1784796856,
|
||||||
"narHash": "sha256-Ova9OQemsGRmg2b22W9HQSRhtjwS1C9mLUtkYqEjyRs=",
|
"narHash": "sha256-vwxWgF+Gj276WznzGb1LxGsK/39HaQwgQXiU3EkC844=",
|
||||||
"owner": "NotAShelf",
|
"rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
|
||||||
"repo": "tuigreet",
|
"type": "tarball",
|
||||||
"rev": "a75f469d51a11b35f9766153d35d15c535b268a6",
|
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1040357.e2587caef70c/nixexprs.tar.xz"
|
||||||
"type": "github"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NotAShelf",
|
"type": "tarball",
|
||||||
"repo": "tuigreet",
|
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_4",
|
"flake-parts": "flake-parts_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782288426,
|
"lastModified": 1786700839,
|
||||||
"narHash": "sha256-SNJtZSWJ4/ZGmD2PCpbpOggNugnNs917knMbmUi+1oU=",
|
"narHash": "sha256-DtB4Byceo3tyyZNsmwuM0YZSO76VaUaGMSxVjdwYQyw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "b944f4918bc67344f4c9253ea4b72cddda85a9d7",
|
"rev": "3c7c14b16718033c171babfd3020006c05d724d8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -804,27 +714,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur-osint": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"iknowyou",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1775935554,
|
|
||||||
"narHash": "sha256-7StMiQf3HSBruAxZ2/ZYJhhNEp1KbglGVijQBrurqiM=",
|
|
||||||
"owner": "anotherhadi",
|
|
||||||
"repo": "nur-osint",
|
|
||||||
"rev": "460e377522a43d3d968be20bec2cf40a72013904",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "anotherhadi",
|
|
||||||
"repo": "nur-osint",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nur_2": {
|
"nur_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
@@ -837,11 +726,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780281641,
|
"lastModified": 1785549842,
|
||||||
"narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=",
|
"narHash": "sha256-DCwBZmGsySF7oKGTRgEv2HvpxVXkHT+38VhTM76k0B4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01",
|
"rev": "a9f987b57594e845e3e5cdd423b9a70846d70308",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -852,18 +741,16 @@
|
|||||||
},
|
},
|
||||||
"nvf": {
|
"nvf": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-parts": "flake-parts_5",
|
|
||||||
"mnw": "mnw",
|
"mnw": "mnw",
|
||||||
"nixpkgs": "nixpkgs_8",
|
"nixpkgs": "nixpkgs_7"
|
||||||
"systems": "systems_4"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781997110,
|
"lastModified": 1786433999,
|
||||||
"narHash": "sha256-6D6xtYN5t1kZGNd69eMZsRBkgX5Df1roErn/kFR1C+A=",
|
"narHash": "sha256-rbOp2g0UCYt+evTnCGCKBQGqSMfwX4RTXneNbeHqOAk=",
|
||||||
"owner": "notashelf",
|
"owner": "notashelf",
|
||||||
"repo": "nvf",
|
"repo": "nvf",
|
||||||
"rev": "320f60b97075a58d38b90fc5e39f478421dbd38a",
|
"rev": "a213644cadd5f90bf18b0c409f08f282b30e55e3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -875,7 +762,7 @@
|
|||||||
"nvf-config": {
|
"nvf-config": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-stable"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nvf": [
|
"nvf": [
|
||||||
"nvf"
|
"nvf"
|
||||||
@@ -893,18 +780,18 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"awesome-wallpapers": "awesome-wallpapers",
|
|
||||||
"blog": "blog",
|
"blog": "blog",
|
||||||
"default-creds": "default-creds",
|
"default-creds": "default-creds",
|
||||||
|
"disko": "disko",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
"helium-browser": "helium-browser",
|
"helium-browser": "helium-browser",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"iknowyou": "iknowyou",
|
"impermanence": "impermanence",
|
||||||
"nix-index-database": "nix-index-database",
|
"nix-index-database": "nix-index-database",
|
||||||
"nixarr": "nixarr",
|
"nixarr": "nixarr",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_7",
|
"nixpkgs": "nixpkgs_6",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"notashelf-tuigreet": "notashelf-tuigreet",
|
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"nvf": "nvf",
|
"nvf": "nvf",
|
||||||
"nvf-config": "nvf-config",
|
"nvf-config": "nvf-config",
|
||||||
@@ -912,27 +799,6 @@
|
|||||||
"stylix": "stylix"
|
"stylix": "stylix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"notashelf-tuigreet",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1780975129,
|
|
||||||
"narHash": "sha256-428T1pLXnbVeUgZx2wWEkbvl3ZORjras34ANZ3ACp5A=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "fe64e6b409dc513274d2941f8da13bbd0fdcf44e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -940,11 +806,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781943681,
|
"lastModified": 1786629091,
|
||||||
"narHash": "sha256-NFHmA7H47adqiyp+0iEOyZOQhmigDqA/NBAlf4imB6U=",
|
"narHash": "sha256-gkig4nPi1CWc4Z50GBsjE4ygSE7hMpl/TwID2an2Cck=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "420f8d2e9882911f65cfac15cc706f639ba96cca",
|
"rev": "a8627b21b9107c5711c96b84f32a9a4b3d45295f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -960,28 +826,29 @@
|
|||||||
"base16-helix": "base16-helix",
|
"base16-helix": "base16-helix",
|
||||||
"base16-vim": "base16-vim",
|
"base16-vim": "base16-vim",
|
||||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
"flake-parts": "flake-parts_6",
|
"flake-parts": "flake-parts_4",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nur": "nur_2",
|
"nur": "nur_2",
|
||||||
"systems": "systems_5",
|
"systems": "systems_3",
|
||||||
"tinted-kitty": "tinted-kitty",
|
"tinted-kitty": "tinted-kitty",
|
||||||
"tinted-schemes": "tinted-schemes",
|
"tinted-schemes": "tinted-schemes",
|
||||||
"tinted-tmux": "tinted-tmux",
|
"tinted-tmux": "tinted-tmux",
|
||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781997134,
|
"lastModified": 1786383226,
|
||||||
"narHash": "sha256-muBZG4O/agq/ljgHr6c3AsobIWgODAS6vf50xIS7o+Q=",
|
"narHash": "sha256-SM00z+A0/ruFPGCRdoxDnApVGa3A1iLlhRmMvnGH7tU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "a6a493119e492e15874caf6f7f8c7e572e64c655",
|
"rev": "a01dcef2f28b4106d6b3817ab89280194bf716d3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
|
"ref": "release-26.05",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -1031,36 +898,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tinted-kitty": {
|
"tinted-kitty": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -1080,11 +917,11 @@
|
|||||||
"tinted-schemes": {
|
"tinted-schemes": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777806186,
|
"lastModified": 1785153830,
|
||||||
"narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=",
|
"narHash": "sha256-fNdfCTeCXU3tZG3TMincd+u68qBHQgCr2Ljr/M1mWP0=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "schemes",
|
"repo": "schemes",
|
||||||
"rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795",
|
"rev": "9bd28ed313560db3c5b605c63bc4e309e78e3fc8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1096,11 +933,11 @@
|
|||||||
"tinted-tmux": {
|
"tinted-tmux": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778379944,
|
"lastModified": 1785031658,
|
||||||
"narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=",
|
"narHash": "sha256-mZp9O2LjzdMzlqQF3l3fjqsuPBzXy+1qTfBEUGjTlpk=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "tinted-tmux",
|
"repo": "tinted-tmux",
|
||||||
"rev": "fe0203a198690e71a5ff11e08812a4673de3678d",
|
"rev": "5d2c67f61ea7af36f16865ab6d541cdba41dc257",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1112,11 +949,11 @@
|
|||||||
"tinted-zed": {
|
"tinted-zed": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778378178,
|
"lastModified": 1785030526,
|
||||||
"narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=",
|
"narHash": "sha256-klZf8UviewRkxuu74Bhbq6tqy7oxebQC7UVRWbbtQxU=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-zed",
|
"repo": "base16-zed",
|
||||||
"rev": "9cd816033ff969415b190722cddf134e78a5665f",
|
"rev": "16f5a8adf4a6b1310d0a61ab172de963e8f76a02",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1170,28 +1007,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"treefmt-nix_3": {
|
"treefmt-nix_3": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"iknowyou",
|
|
||||||
"bun2nix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1770228511,
|
|
||||||
"narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"rev": "337a4fe074be1042a35086f15481d763b8ddc0e7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"treefmt-nix_4": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixarr",
|
"nixarr",
|
||||||
|
|||||||
@@ -6,13 +6,13 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
nvf.url = "github:notashelf/nvf";
|
nvf.url = "github:notashelf/nvf";
|
||||||
nvf-config = {
|
nvf-config = {
|
||||||
url = "path:./home/programs/tui/nvf";
|
url = "path:./home/programs/tui/nvf";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nvf.follows = "nvf";
|
inputs.nvf.follows = "nvf";
|
||||||
};
|
};
|
||||||
nur = {
|
nur = {
|
||||||
@@ -24,51 +24,64 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager/release-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
stylix = {
|
stylix = {
|
||||||
url = "github:nix-community/stylix";
|
url = "github:nix-community/stylix/release-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
url = "github:Mic92/sops-nix";
|
url = "github:Mic92/sops-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
notashelf-tuigreet = {
|
impermanence.url = "github:nix-community/impermanence";
|
||||||
url = "github:NotAShelf/tuigreet";
|
disko = {
|
||||||
|
url = "github:nix-community/disko";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
helium-browser = {
|
helium-browser = {
|
||||||
url = "github:oxcl/nix-flake-helium-browser";
|
url = "github:oxcl/nix-flake-helium-browser";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
|
};
|
||||||
|
git-hooks = {
|
||||||
|
url = "github:cachix/git-hooks.nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Server
|
# Server
|
||||||
nixarr.url = "github:rasmus-kirk/nixarr";
|
nixarr.url = "github:nix-media-server/nixarr";
|
||||||
default-creds.url = "github:anotherhadi/default-creds";
|
default-creds.url = "github:anotherhadi/default-creds";
|
||||||
blog.url = "github:anotherhadi/blog";
|
blog.url = "github:anotherhadi/blog";
|
||||||
awesome-wallpapers.url = "github:anotherhadi/awesome-wallpapers";
|
|
||||||
iknowyou.url = "github:anotherhadi/iknowyou";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
nixpkgs-stable,
|
nixpkgs-unstable,
|
||||||
|
git-hooks,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
pkgs-unstable = import nixpkgs-unstable {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
args = {
|
args = {
|
||||||
inherit
|
inherit
|
||||||
inputs
|
inputs
|
||||||
nixpkgs
|
nixpkgs
|
||||||
system
|
system
|
||||||
|
pkgs-unstable
|
||||||
pkgs
|
pkgs
|
||||||
;
|
;
|
||||||
pkgs-stable = nixpkgs-stable.legacyPackages.${system};
|
|
||||||
};
|
};
|
||||||
merge = nixpkgs.lib.foldl nixpkgs.lib.recursiveUpdate {};
|
merge = nixpkgs.lib.foldl nixpkgs.lib.recursiveUpdate {};
|
||||||
|
supportedSystems = ["x86_64-linux" "aarch64-linux"];
|
||||||
|
|
||||||
|
forAllSystems = f:
|
||||||
|
nixpkgs.lib.genAttrs supportedSystems
|
||||||
|
(system: f system (import nixpkgs {inherit system;}));
|
||||||
in
|
in
|
||||||
merge [
|
merge [
|
||||||
(import ./home/programs/tui/nixy/flake.nix args)
|
(import ./home/programs/tui/nixy/flake.nix args)
|
||||||
@@ -81,6 +94,12 @@
|
|||||||
h-work = import ./hosts/work/flake.nix args;
|
h-work = import ./hosts/work/flake.nix args;
|
||||||
jack = import ./hosts/server/flake.nix args;
|
jack = import ./hosts/server/flake.nix args;
|
||||||
};
|
};
|
||||||
|
devShells = forAllSystems (system: pkgs: {
|
||||||
|
default = import ./shell.nix {
|
||||||
|
inherit pkgs;
|
||||||
|
gitHooksLib = git-hooks.lib.${system};
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,20 @@
|
|||||||
{
|
{pkgs}: (with pkgs; [
|
||||||
pkgs,
|
|
||||||
pkgs-stable,
|
|
||||||
}:
|
|
||||||
(with pkgs-stable; [
|
|
||||||
# Web
|
# Web
|
||||||
dirb
|
dirb
|
||||||
ffuf
|
ffuf
|
||||||
katana
|
katana
|
||||||
whatweb
|
whatweb
|
||||||
|
sqlmap
|
||||||
|
nosqli
|
||||||
|
|
||||||
# Hashes
|
# Hashes
|
||||||
hashcat
|
hashcat
|
||||||
haiti
|
haiti
|
||||||
hydra
|
|
||||||
john
|
john
|
||||||
|
|
||||||
# Databases
|
# Databases
|
||||||
mariadb
|
mariadb
|
||||||
redis
|
redis
|
||||||
sqlmap
|
|
||||||
nosqli
|
|
||||||
|
|
||||||
# Network
|
# Network
|
||||||
inetutils
|
inetutils
|
||||||
@@ -28,6 +23,7 @@
|
|||||||
dig
|
dig
|
||||||
nmap
|
nmap
|
||||||
samba
|
samba
|
||||||
|
hydra
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
metasploit
|
metasploit
|
||||||
@@ -39,9 +35,6 @@
|
|||||||
|
|
||||||
# Forensics
|
# Forensics
|
||||||
binwalk
|
binwalk
|
||||||
])
|
pkgs.nur.repos.anotherhadi.spilltea
|
||||||
++ [ pkgs.dnsrecon ]
|
pkgs.nur.repos.anotherhadi.jwt-tui
|
||||||
++ (with pkgs.nur.repos.anotherhadi; [
|
|
||||||
spilltea
|
|
||||||
jwt-tui
|
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
config,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = import ./cybersecurity-packages.nix {
|
home.packages = import ./cybersecurity-packages.nix {
|
||||||
inherit pkgs pkgs-stable;
|
inherit pkgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.tmpfiles.rules = [
|
systemd.user.tmpfiles.rules = [
|
||||||
@@ -41,4 +42,10 @@
|
|||||||
hash = "sha256-T0XkMHJZQiy63/j25nGTkaiDFjc+blmgEVGTAFgVylU=";
|
hash = "sha256-T0XkMHJZQiy63/j25nGTkaiDFjc+blmgEVGTAFgVylU=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [
|
||||||
|
"Cyber"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,34 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
pkgs-unstable,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs;
|
home = {
|
||||||
[
|
packages = with pkgs-unstable;
|
||||||
go
|
[
|
||||||
claude-code
|
go
|
||||||
]
|
claude-code
|
||||||
++ (with pkgs-stable; [
|
]
|
||||||
nodejs
|
++ (with pkgs; [
|
||||||
air
|
nodejs
|
||||||
duckdb
|
air
|
||||||
python3
|
duckdb
|
||||||
jq
|
python3
|
||||||
nix-prefetch-github
|
jq
|
||||||
rsync
|
nix-prefetch-github
|
||||||
]);
|
rsync
|
||||||
|
]);
|
||||||
|
|
||||||
|
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [
|
||||||
|
".claude"
|
||||||
|
];
|
||||||
|
files = [".claude.json"];
|
||||||
|
};
|
||||||
|
|
||||||
|
sessionPath = ["$HOME/.local/share/go/bin"];
|
||||||
|
sessionVariables.GOPATH = "$HOME/.local/share/go";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,10 @@
|
|||||||
name = "Gemini";
|
name = "Gemini";
|
||||||
url = "https://gemini.google.com";
|
url = "https://gemini.google.com";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "Lumo";
|
||||||
|
url = "https://lumo.proton.me";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs-unstable,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
@@ -44,11 +44,11 @@
|
|||||||
"--show-avatar-button=never"
|
"--show-avatar-button=never"
|
||||||
];
|
];
|
||||||
|
|
||||||
originalPkg = (inputs.helium-browser.packages.${pkgs.stdenv.hostPlatform.system}.helium).override {
|
originalPkg = (inputs.helium-browser.packages.${pkgs-unstable.stdenv.hostPlatform.system}.helium).override {
|
||||||
flags = heliumFlags;
|
flags = heliumFlags;
|
||||||
};
|
};
|
||||||
|
|
||||||
patchScript = pkgs.writeShellScript "helium-patch-prefs" ''
|
patchScript = pkgs-unstable.writeShellScript "helium-patch-prefs" ''
|
||||||
PROFILE="$HOME/.config/net.imput.helium/Default"
|
PROFILE="$HOME/.config/net.imput.helium/Default"
|
||||||
THEME_DIR="$PROFILE/Extensions/${themeId}/1.0_0"
|
THEME_DIR="$PROFILE/Extensions/${themeId}/1.0_0"
|
||||||
PREFS="$PROFILE/Preferences"
|
PREFS="$PROFILE/Preferences"
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
if [ -f "$PREFS" ]; then
|
if [ -f "$PREFS" ]; then
|
||||||
tmp=$(mktemp)
|
tmp=$(mktemp)
|
||||||
${lib.getExe pkgs.jq} \
|
${lib.getExe pkgs-unstable.jq} \
|
||||||
--arg id "${themeId}" \
|
--arg id "${themeId}" \
|
||||||
--slurpfile manifest "$THEME_DIR/manifest.json" \
|
--slurpfile manifest "$THEME_DIR/manifest.json" \
|
||||||
'
|
'
|
||||||
@@ -85,10 +85,10 @@
|
|||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
baseWrapped = pkgs.symlinkJoin {
|
baseWrapped = pkgs-unstable.symlinkJoin {
|
||||||
name = "helium-wrapped";
|
name = "helium-wrapped";
|
||||||
paths = [originalPkg];
|
paths = [originalPkg];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [pkgs-unstable.makeWrapper];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/helium \
|
wrapProgram $out/bin/helium \
|
||||||
--set-default GTK_USE_PORTAL 1 \
|
--set-default GTK_USE_PORTAL 1 \
|
||||||
@@ -136,4 +136,10 @@ in {
|
|||||||
categories = ["Network" "WebBrowser"];
|
categories = ["Network" "WebBrowser"];
|
||||||
mimeType = ["text/html" "text/xml" "application/xhtml+xml"];
|
mimeType = ["text/html" "text/xml" "application/xhtml+xml"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [
|
||||||
|
".config/net.imput.helium"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,28 @@
|
|||||||
{pkgs-stable, ...}: {
|
{
|
||||||
home.packages = with pkgs-stable; [
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
vlc # Video player
|
vlc # Video player
|
||||||
obsidian # Note taking app
|
obsidian # Note taking app
|
||||||
textpieces # Manipulate texts
|
|
||||||
resources # Resource monitor
|
|
||||||
gnome-clocks # Clocks app
|
|
||||||
gnome-text-editor # Basic graphic text editor
|
|
||||||
ticktick # Todo app
|
|
||||||
pinta # Image editor
|
pinta # Image editor
|
||||||
switcheroo # Convert images between different formats
|
|
||||||
onlyoffice-desktopeditors # Office suite
|
onlyoffice-desktopeditors # Office suite
|
||||||
blanket # Listen to different sounds
|
blanket # Listen to different sounds
|
||||||
signal-desktop # Messaging app
|
signal-desktop # Messaging app
|
||||||
|
ticktick # Todo app
|
||||||
|
|
||||||
|
# Backup
|
||||||
|
thunar
|
||||||
|
gnome-text-editor
|
||||||
];
|
];
|
||||||
|
|
||||||
|
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [
|
||||||
|
".config/ticktick"
|
||||||
|
".config/Signal"
|
||||||
|
".config/obsidian"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
|
||||||
"protonvpn-app --start-minimized"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,24 +1,16 @@
|
|||||||
{
|
{
|
||||||
pkgs-stable,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs-stable; [
|
home.packages = with pkgs; [
|
||||||
proton-vpn
|
proton-vpn
|
||||||
proton-pass
|
proton-pass
|
||||||
proton-authenticator
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Fix Proton Authenticator desktop entry
|
# Fix Proton Authenticator desktop entry
|
||||||
xdg.desktopEntries = {
|
xdg.desktopEntries = {
|
||||||
"Proton Authenticator" = {
|
|
||||||
name = "Proton Authenticator";
|
|
||||||
exec = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs-stable.proton-authenticator}/bin/proton-authenticator";
|
|
||||||
icon = "proton-authenticator";
|
|
||||||
type = "Application";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
"Proton Calendar" = {
|
"Proton Calendar" = {
|
||||||
name = "Proton Calendar";
|
name = "Proton Calendar";
|
||||||
exec = ''${config.programs.helium.package}/bin/helium "https://calendar.proton.me"'';
|
exec = ''${config.programs.helium.package}/bin/helium "https://calendar.proton.me"'';
|
||||||
@@ -36,4 +28,11 @@
|
|||||||
terminal = false;
|
terminal = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [
|
||||||
|
".config/protonvpn"
|
||||||
|
".config/Proton Pass"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,174 +0,0 @@
|
|||||||
# Thunar is a file explorer
|
|
||||||
{
|
|
||||||
pkgs-stable,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
user = config.var.username;
|
|
||||||
in {
|
|
||||||
# ctrl + m to toggle the menubar
|
|
||||||
home.packages =
|
|
||||||
(with pkgs-stable; [
|
|
||||||
thunar
|
|
||||||
xfconf
|
|
||||||
tumbler
|
|
||||||
thunar-archive-plugin
|
|
||||||
thunar-volman
|
|
||||||
thunar-media-tags-plugin
|
|
||||||
p7zip
|
|
||||||
xarchiver
|
|
||||||
])
|
|
||||||
++ (with pkgs-stable; [
|
|
||||||
papirus-icon-theme
|
|
||||||
material-icons
|
|
||||||
material-design-icons
|
|
||||||
material-symbols
|
|
||||||
]);
|
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
iconTheme = {
|
|
||||||
name = "Papirus-Dark";
|
|
||||||
package = pkgs-stable.papirus-icon-theme;
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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 = {
|
|
||||||
XDG_ICON_DIR = "${pkgs-stable.papirus-icon-theme}/share/icons/Papirus";
|
|
||||||
QS_ICON_THEME = "Papirus";
|
|
||||||
QT_STYLE_OVERRIDE = lib.mkForce "Fusion";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".config/xarchiver/xarchiverrc".text = ''
|
|
||||||
[xarchiver]
|
|
||||||
preferred_format=0
|
|
||||||
prefer_unzip=true
|
|
||||||
confirm_deletion=true
|
|
||||||
sort_filename_content=false
|
|
||||||
advanced_isearch=true
|
|
||||||
auto_expand=true
|
|
||||||
store_output=false
|
|
||||||
icon_size=2
|
|
||||||
show_archive_comment=false
|
|
||||||
show_sidebar=true
|
|
||||||
show_location_bar=true
|
|
||||||
show_toolbar=true
|
|
||||||
preferred_custom_cmd=
|
|
||||||
preferred_temp_dir=/tmp
|
|
||||||
preferred_extract_dir=./
|
|
||||||
allow_sub_dir=0
|
|
||||||
ensure_directory=true
|
|
||||||
overwrite=false
|
|
||||||
full_path=2
|
|
||||||
touch=false
|
|
||||||
fresh=false
|
|
||||||
update=false
|
|
||||||
store_path=false
|
|
||||||
updadd=true
|
|
||||||
freshen=false
|
|
||||||
recurse=true
|
|
||||||
solid_archive=false
|
|
||||||
remove_files=false
|
|
||||||
'';
|
|
||||||
|
|
||||||
home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml" = {
|
|
||||||
text = ''
|
|
||||||
<?xml version="1.1" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<channel name="thunar" version="1.0">
|
|
||||||
<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-window-maximized" type="bool" value="true"/>
|
|
||||||
<property name="last-separator-position" type="int" value="230"/>
|
|
||||||
<property name="last-statusbar-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="shortcuts-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-thumbnail-draw-frames" type="bool" value="true"/>
|
|
||||||
<property name="misc-text-beside-icons" type="bool" value="false"/>
|
|
||||||
<property name="misc-change-window-icon" type="bool" value="false"/>
|
|
||||||
<property name="hidden-bookmarks" type="array">
|
|
||||||
<value type="string" value="computer:///"/>
|
|
||||||
<value type="string" value="recent:///"/>
|
|
||||||
<value type="string" value="network:///"/>
|
|
||||||
</property>
|
|
||||||
<property name="hidden-devices" type="array">
|
|
||||||
<value type="string" value="52FEA905FEA8E309"/>
|
|
||||||
</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-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-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-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-side-pane" type="string" value="THUNAR_SIDEPANE_TYPE_SHORTCUTS"/>
|
|
||||||
<property name="last-image-preview-visible" type="bool" value="false"/>
|
|
||||||
<property name="misc-use-csd" type="bool" value="true"/>
|
|
||||||
<property name="default-view" type="string" value="ThunarIconView"/>
|
|
||||||
<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-date-style" type="string" value="THUNAR_DATE_STYLE_SIMPLE"/>
|
|
||||||
<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="misc-symbolic-icons-in-sidepane" type="bool" value="true"/>
|
|
||||||
<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-show-delete-action" type="bool" value="false"/>
|
|
||||||
</channel>
|
|
||||||
'';
|
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."Thunar/uca.xml".text = ''
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<actions>
|
|
||||||
<action>
|
|
||||||
<icon>utilities-terminal</icon>
|
|
||||||
<name>Open Terminal Here</name>
|
|
||||||
<unique-id>1700000000000001</unique-id>
|
|
||||||
<command>ghostty -d %f</command>
|
|
||||||
<description>Opens terminal in the selected folder</description>
|
|
||||||
<patterns>*</patterns>
|
|
||||||
<startup-notify/>
|
|
||||||
<directories/>
|
|
||||||
</action>
|
|
||||||
<action>
|
|
||||||
<icon></icon>
|
|
||||||
<name>Extract here</name>
|
|
||||||
<submenu></submenu>
|
|
||||||
<unique-id>1689618425925956-3</unique-id>
|
|
||||||
<command>xarchiver -x . %f</command>
|
|
||||||
<description>Extracts the archive into the directory it is located in.</description>
|
|
||||||
<range>*</range>
|
|
||||||
<patterns>*.tar.bz2;*.tar.gz;*.tar.xz;*.tar.Z;*.tar;*.taz;*.tb2;*.tbz;*.tbz2;*.tgz;*.txz;*.zip;*.bz2;*.docx;*.apk;*.gz;*.odt;</patterns>
|
|
||||||
<other-files/>
|
|
||||||
</action>
|
|
||||||
<action>
|
|
||||||
<icon>package-x-generic</icon>
|
|
||||||
<name>Compress here (tar.gz)</name>
|
|
||||||
<submenu></submenu>
|
|
||||||
<unique-id>1700000000000003</unique-id>
|
|
||||||
<command>tar -czvf %n.tar.gz %N</command>
|
|
||||||
<description>Creates a compressed archive (.tar.gz) of selected files/folders.</description>
|
|
||||||
<range>*</range>
|
|
||||||
<patterns>*</patterns>
|
|
||||||
<directories/>
|
|
||||||
<other-files/>
|
|
||||||
</action>
|
|
||||||
</actions>
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
c = config.lib.stylix.colors;
|
||||||
|
# TODO: Waiting for a version in nixpkgs
|
||||||
|
version = "1.11.2";
|
||||||
|
sources = {
|
||||||
|
"x86_64-linux" = {
|
||||||
|
url = "https://github.com/elio-fm/elio/releases/download/v${version}/elio-${version}-x86_64-unknown-linux-gnu.tar.gz";
|
||||||
|
hash = "sha256-9cW/xUA9p0LEYI3/j4MGPVZvcyJpV1JYKYBuHur4sTM=";
|
||||||
|
};
|
||||||
|
"aarch64-linux" = {
|
||||||
|
url = "https://github.com/elio-fm/elio/releases/download/v${version}/elio-${version}-aarch64-unknown-linux-gnu.tar.gz";
|
||||||
|
hash = "sha256-zg141Dp+jHwAqzoaCNvOoC7ZFeAX+cO8HZF5W7wz1Qs=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
source =
|
||||||
|
sources.${pkgs.stdenv.hostPlatform.system}
|
||||||
|
or (throw "elio: unsupported platform ${pkgs.stdenv.hostPlatform.system}");
|
||||||
|
|
||||||
|
elio = pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "elio";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = pkgs.fetchurl {inherit (source) url hash;};
|
||||||
|
|
||||||
|
nativeBuildInputs = [pkgs.autoPatchelfHook];
|
||||||
|
|
||||||
|
buildInputs = [pkgs.stdenv.cc.cc.lib];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
install -Dm755 elio -t $out/bin
|
||||||
|
|
||||||
|
for size in 48 128 256 512; do
|
||||||
|
install -Dm644 \
|
||||||
|
"packaging/linux/icons/hicolor/''${size}x''${size}/apps/elio.png" \
|
||||||
|
"$out/share/icons/hicolor/''${size}x''${size}/apps/elio.png"
|
||||||
|
done
|
||||||
|
install -Dm644 packaging/linux/elio.desktop -t $out/share/applications
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Terminal file manager";
|
||||||
|
homepage = "https://github.com/elio-fm/elio";
|
||||||
|
license = pkgs.lib.licenses.mit;
|
||||||
|
mainProgram = "elio";
|
||||||
|
platforms = builtins.attrNames sources;
|
||||||
|
sourceProvenance = [pkgs.lib.sourceTypes.binaryNativeCode];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
home.packages = [elio];
|
||||||
|
|
||||||
|
xdg.desktopEntries.elio = {
|
||||||
|
name = "elio";
|
||||||
|
exec = "${pkgs.ghostty}/bin/ghostty +new-window -e ${elio}/bin/elio %f";
|
||||||
|
terminal = false;
|
||||||
|
icon = "elio";
|
||||||
|
mimeType = ["inode/directory"];
|
||||||
|
categories = ["System" "FileManager" "FileTools" "ConsoleOnly"];
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."elio/config.toml".text = ''
|
||||||
|
[places]
|
||||||
|
entries = [
|
||||||
|
"home",
|
||||||
|
"documents",
|
||||||
|
"downloads",
|
||||||
|
"pictures",
|
||||||
|
{ title = "Notes", path = "~/Notes" },
|
||||||
|
{ title = "Cyber", path = "~/Cyber" },
|
||||||
|
{ title = "Projects", path = "~/Projects" },
|
||||||
|
{ title = "NixOS Config", path = "~/.config/nixos" },
|
||||||
|
"trash",
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
|
||||||
|
xdg.configFile."elio/theme.toml".text = ''
|
||||||
|
[palette]
|
||||||
|
bg = "#${c.base00}"
|
||||||
|
chrome = "#${c.base01}"
|
||||||
|
chrome_alt = "#${c.base01}"
|
||||||
|
chip_text = "#${c.base00}"
|
||||||
|
panel = "#${c.base00}"
|
||||||
|
panel_alt = "#${c.base00}"
|
||||||
|
surface = "#${c.base02}"
|
||||||
|
elevated = "#${c.base02}"
|
||||||
|
border = "#${c.base03}"
|
||||||
|
text = "#${c.base05}"
|
||||||
|
muted = "#${c.base04}"
|
||||||
|
accent = "#${c.base0D}"
|
||||||
|
accent_soft = "#${c.base02}"
|
||||||
|
accent_text = "#${c.base06}"
|
||||||
|
selected_bg = "#${c.base02}"
|
||||||
|
selected_border = "#${c.base0D}"
|
||||||
|
selection_bar = "#${c.base09}"
|
||||||
|
yank_bar = "#${c.base0B}"
|
||||||
|
cut_bar = "#${c.base08}"
|
||||||
|
progress_bar = "#${c.base0D}"
|
||||||
|
grid_selection_band = "#${c.base02}"
|
||||||
|
grid_yank_band = "#${c.base01}"
|
||||||
|
grid_cut_band = "#${c.base01}"
|
||||||
|
sidebar_active = "#${c.base02}"
|
||||||
|
button_bg = "#${c.base01}"
|
||||||
|
button_disabled_bg = "#${c.base01}"
|
||||||
|
path_bg = "#${c.base00}"
|
||||||
|
|
||||||
|
[preview.code]
|
||||||
|
fg = "#${c.base05}"
|
||||||
|
bg = "#${c.base01}"
|
||||||
|
selection_bg = "#${c.base02}"
|
||||||
|
selection_fg = "#${c.base06}"
|
||||||
|
caret = "#${c.base0C}"
|
||||||
|
line_highlight = "#${c.base01}"
|
||||||
|
line_number = "#${c.base03}"
|
||||||
|
comment = "#${c.base03}"
|
||||||
|
string = "#${c.base0B}"
|
||||||
|
constant = "#${c.base09}"
|
||||||
|
keyword = "#${c.base0E}"
|
||||||
|
function = "#${c.base0D}"
|
||||||
|
type = "#${c.base0A}"
|
||||||
|
parameter = "#${c.base08}"
|
||||||
|
tag = "#${c.base0C}"
|
||||||
|
operator = "#${c.base0C}"
|
||||||
|
macro = "#${c.base0F}"
|
||||||
|
invalid = "#${c.base08}"
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -17,17 +17,17 @@ in {
|
|||||||
"result"
|
"result"
|
||||||
"result-*"
|
"result-*"
|
||||||
".superpowers/"
|
".superpowers/"
|
||||||
|
".claude/"
|
||||||
"docs/superpowers/"
|
"docs/superpowers/"
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
user.name = username;
|
user.name = username;
|
||||||
user.email = email;
|
user.email = email;
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
pull.rebase = "false";
|
pull.rebase = "true";
|
||||||
push.autoSetupRemote = true;
|
push.autoSetupRemote = true;
|
||||||
color.ui = "1";
|
color.ui = "1";
|
||||||
alias = {
|
alias = {
|
||||||
essa = "push --force";
|
|
||||||
co = "checkout";
|
co = "checkout";
|
||||||
fuck = "commit --amend -m";
|
fuck = "commit --amend -m";
|
||||||
c = "commit -m";
|
c = "commit -m";
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
in {
|
in {
|
||||||
home.file.".config/ilovetui/config.yaml".text = ''
|
home.file.".config/ilovetui/config.yaml".text = ''
|
||||||
|
nerd_fonts: true
|
||||||
|
border: rounded
|
||||||
colors:
|
colors:
|
||||||
base00: "#${c.base00}" # Background
|
base00: "#${c.base00}" # Background
|
||||||
base01: "#${c.base01}" # Lighter Background / Status Bars
|
base01: "#${c.base01}" # Lighter Background / Status Bars
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
}: {
|
}: {
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
EDITOR = "nvim";
|
EDITOR = "nvim";
|
||||||
|
VISUAL = "nvim";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.nvf = {
|
programs.nvf = {
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>set spell!<cr>";
|
action = "<cmd>set spell!<cr>";
|
||||||
desc = "Toggle spellLazyGitcheck";
|
desc = "Toggle spell check";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>uc";
|
key = "<leader>uc";
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
go.enable = true;
|
go.enable = true;
|
||||||
markdown = {
|
markdown = {
|
||||||
enable = true;
|
enable = true;
|
||||||
format.type = ["prettierd"];
|
format.type = ["prettier"];
|
||||||
extensions = {
|
extensions = {
|
||||||
markview-nvim = {
|
markview-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -23,13 +23,12 @@
|
|||||||
miniclue.gen_clues.z(),
|
miniclue.gen_clues.z(),
|
||||||
{ mode = 'n', keys = '<Leader>f', desc = '+find' },
|
{ mode = 'n', keys = '<Leader>f', desc = '+find' },
|
||||||
{ mode = 'n', keys = '<Leader>s', desc = '+search' },
|
{ mode = 'n', keys = '<Leader>s', desc = '+search' },
|
||||||
{ mode = 'n', keys = '<Leader>t', desc = '+terminal' },
|
{ mode = 'n', keys = '<Leader>t', desc = '+tools' },
|
||||||
{ mode = 'n', keys = '<Leader>u', desc = '+ui' },
|
{ mode = 'n', keys = '<Leader>u', desc = '+ui' },
|
||||||
{ mode = 'n', keys = '<Leader>l', desc = '+lsp' },
|
{ mode = 'n', keys = '<Leader>l', desc = '+lsp' },
|
||||||
{ mode = 'n', keys = '<Leader>x', desc = '+trouble' },
|
{ mode = 'n', keys = '<Leader>x', desc = '+trouble' },
|
||||||
{ mode = 'n', keys = '<Leader>!', desc = 'shell' },
|
{ mode = 'n', keys = '<Leader>!', desc = 'shell' },
|
||||||
{ mode = 'v', keys = '<Leader>!', desc = 'shell' },
|
{ mode = 'v', keys = '<Leader>!', desc = 'shell' },
|
||||||
{ mode = 'n', keys = '<Leader>e', desc = 'yazi' },
|
|
||||||
},
|
},
|
||||||
window = { delay = 300 },
|
window = { delay = 300 },
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,28 +1,29 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
pkgs-unstable,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs-stable; [
|
home.packages = with pkgs; [
|
||||||
# I love TUIs
|
# I love TUIs
|
||||||
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
|
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
|
||||||
dysk # A terminal-based disk usage analyzer
|
|
||||||
wikiman # Offline search engine for manual pages (arch wiki, tldr)
|
|
||||||
tealdeer # Fast tldr client
|
tealdeer # Fast tldr client
|
||||||
sttr # Minimalist "cyberchef" like. Cross-platform, cli app to perform various operations on string
|
sttr # A minimalist CyberChef-like, cross-platform CLI app for performing various operations on strings
|
||||||
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
|
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
|
pom # Pomodoro timer in your terminal
|
||||||
tabiew # A terminal-based CSV viewer and manipulator
|
tabiew # A terminal-based CSV viewer and manipulator
|
||||||
jless # A pager for JSON
|
jless # A pager for JSON
|
||||||
pkgs.wifitui # TUI for managing wifi
|
|
||||||
pkgs.nur.repos.anotherhadi.usbguard-tui # TUI for managing USBGuard rules
|
pkgs.nur.repos.anotherhadi.usbguard-tui # TUI for managing USBGuard rules
|
||||||
pkgs.nur.repos.anotherhadi.sheets # Terminal based spreadsheet tool
|
pkgs.nur.repos.anotherhadi.settuings # Terminal based settings (wifi, bluetooth, audio, ...)
|
||||||
|
pkgs.nur.repos.anotherhadi.fztea # Flipper Zero from the terminal
|
||||||
|
pkgs.nur.repos.anotherhadi.monitui # Edit hyprland's monitor configuration
|
||||||
|
dua # Tool to conveniently learn about the disk usage of directories
|
||||||
|
mcat # Cat command for documents / images / videos and more
|
||||||
|
lazyjournal
|
||||||
|
|
||||||
# I love CLIs
|
|
||||||
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
||||||
gh # GitHub
|
gh # GitHub
|
||||||
gh-dash # A terminal dashboard for GitHub
|
|
||||||
figlet # Transform text into ASCII art
|
figlet # Transform text into ASCII art
|
||||||
pastel # Command-line tool to generate, analyze, convert and manipulate colors
|
pastel # Command-line tool to generate, analyze, convert and manipulate colors
|
||||||
imagemagick # Image manipulation tool
|
imagemagick # Image manipulation tool
|
||||||
@@ -36,5 +37,10 @@
|
|||||||
pipes
|
pipes
|
||||||
cmatrix
|
cmatrix
|
||||||
fastfetch
|
fastfetch
|
||||||
|
smassh # typing test, 10fastfinger like
|
||||||
];
|
];
|
||||||
|
|
||||||
|
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [".config/gh" ".config/gh-dash"];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
{pkgs-stable, ...}: {
|
{
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-stable.direnv;
|
|
||||||
nix-direnv = {
|
nix-direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-stable.nix-direnv;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
# Eza is a ls replacement
|
# Eza is a ls replacement
|
||||||
{pkgs-stable, ...}: {
|
{
|
||||||
|
programs.zsh.initContent = ''
|
||||||
|
compdef eza=ls
|
||||||
|
'';
|
||||||
programs.eza = {
|
programs.eza = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-stable.eza;
|
|
||||||
icons = "auto";
|
icons = "auto";
|
||||||
|
|
||||||
extraOptions = [
|
extraOptions = [
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# Fzf is a general-purpose command-line fuzzy finder.
|
# Fzf is a general-purpose command-line fuzzy finder.
|
||||||
{
|
{
|
||||||
pkgs-stable,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
@@ -8,11 +7,16 @@
|
|||||||
accent = "#" + config.lib.stylix.colors.base0D;
|
accent = "#" + config.lib.stylix.colors.base0D;
|
||||||
foreground = "#" + config.lib.stylix.colors.base05;
|
foreground = "#" + config.lib.stylix.colors.base05;
|
||||||
muted = "#" + config.lib.stylix.colors.base03;
|
muted = "#" + config.lib.stylix.colors.base03;
|
||||||
|
previewCmd = "bat --color=always --style=plain,numbers --line-range=:500 {}";
|
||||||
in {
|
in {
|
||||||
programs.fzf = {
|
programs.fzf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-stable.fzf;
|
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
|
||||||
|
defaultCommand = "fd --type f --hidden --strip-cwd-prefix";
|
||||||
|
fileWidgetCommand = "fd --type f --hidden --strip-cwd-prefix";
|
||||||
|
fileWidgetOptions = ["--preview '${previewCmd}'"];
|
||||||
|
|
||||||
colors = lib.mkForce {
|
colors = lib.mkForce {
|
||||||
"fg+" = accent;
|
"fg+" = accent;
|
||||||
"bg+" = "-1";
|
"bg+" = "-1";
|
||||||
@@ -21,15 +25,26 @@ in {
|
|||||||
"prompt" = muted;
|
"prompt" = muted;
|
||||||
"pointer" = accent;
|
"pointer" = accent;
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultOptions = [
|
defaultOptions = [
|
||||||
"--margin=1"
|
"--height=60%"
|
||||||
"--layout=reverse"
|
"--layout=reverse"
|
||||||
"--border=none"
|
"--border=none"
|
||||||
"--info='hidden'"
|
|
||||||
"--header=''"
|
|
||||||
"--prompt='/ '"
|
"--prompt='/ '"
|
||||||
|
"--preview-window=right:65%:wrap:border-left"
|
||||||
"-i"
|
"-i"
|
||||||
"--no-bold"
|
"--no-bold"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.zsh.initContent = lib.mkAfter ''
|
||||||
|
_fzf_file_no_hidden() {
|
||||||
|
local cmd result
|
||||||
|
cmd="''${FZF_DEFAULT_COMMAND/--hidden /}"
|
||||||
|
result=$(eval "''${cmd:-find . -type f}" | fzf --preview "${previewCmd}") \
|
||||||
|
&& LBUFFER+="$result"
|
||||||
|
zle reset-prompt
|
||||||
|
}
|
||||||
|
zle -N _fzf_file_no_hidden
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# starship is a minimal, fast, and extremely customizable prompt for any shell!
|
# starship is a minimal, fast, and extremely customizable prompt for any shell!
|
||||||
{
|
{
|
||||||
pkgs-stable,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
@@ -10,7 +9,6 @@
|
|||||||
in {
|
in {
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-stable.starship;
|
|
||||||
settings = {
|
settings = {
|
||||||
add_newline = true;
|
add_newline = true;
|
||||||
format = lib.concatStrings [
|
format = lib.concatStrings [
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
# Zoxide is a cd replacement
|
# Zoxide is a cd replacement
|
||||||
{pkgs-stable, ...}: {
|
{
|
||||||
programs.zoxide = {
|
programs.zoxide = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-stable.zoxide;
|
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,45 +1,57 @@
|
|||||||
# My shell configuration
|
# My shell configuration
|
||||||
{
|
{
|
||||||
pkgs-stable,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs-stable; [
|
home.packages = with pkgs; [
|
||||||
bat
|
bat
|
||||||
ripgrep
|
ripgrep
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
sessionPath = ["$HOME/go/bin"];
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
COLORTERM = "truecolor";
|
COLORTERM = "truecolor";
|
||||||
|
MANPAGER = "bat -l man -p";
|
||||||
|
};
|
||||||
|
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
files = [".zsh_history"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
autocd = true;
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
syntaxHighlighting = {
|
syntaxHighlighting.enable = true;
|
||||||
enable = true;
|
|
||||||
highlighters = [
|
|
||||||
"main"
|
|
||||||
"brackets"
|
|
||||||
"pattern"
|
|
||||||
"regexp"
|
|
||||||
"root"
|
|
||||||
"line"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
historySubstringSearch.enable = true;
|
historySubstringSearch.enable = true;
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "zsh-vi-mode";
|
||||||
|
src = pkgs.zsh-vi-mode;
|
||||||
|
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
history = {
|
history = {
|
||||||
ignoreDups = true;
|
ignoreDups = true;
|
||||||
|
findNoDups = true;
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
ignoreSpace = true;
|
||||||
|
append = true;
|
||||||
save = 10000;
|
save = 10000;
|
||||||
size = 10000;
|
size = 10000;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setOptions = [
|
||||||
|
"NOBEEP"
|
||||||
|
"AUTOCD"
|
||||||
|
"NUMERIC_GLOB_SORT"
|
||||||
|
];
|
||||||
|
|
||||||
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}"
|
||||||
'';
|
'';
|
||||||
@@ -53,22 +65,21 @@
|
|||||||
tree = "eza --icons=always --tree --no-quotes";
|
tree = "eza --icons=always --tree --no-quotes";
|
||||||
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";
|
||||||
|
nix-shell = "nix-shell --command zsh";
|
||||||
|
grep = "rg --color=auto";
|
||||||
|
diff = "diff --color=auto";
|
||||||
|
df = "df -h";
|
||||||
|
|
||||||
# Shortcuts
|
# Shortcuts
|
||||||
spt = "spotatui";
|
spt = "spotatui";
|
||||||
v = "nvim";
|
open = "${pkgs.xdg-utils}/bin/xdg-open";
|
||||||
c = "clear";
|
|
||||||
e = "exit";
|
|
||||||
open = "${pkgs-stable.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()'";
|
||||||
nix-shell = "nix-shell --command zsh";
|
|
||||||
|
|
||||||
# git
|
# git
|
||||||
g = "lazygit";
|
g = "lazygit";
|
||||||
ga = "git add";
|
ga = "git add";
|
||||||
gc = "git commit";
|
gc = "git commit";
|
||||||
gcu = "git add . && git commit -m 'Update'";
|
|
||||||
gp = "git push";
|
gp = "git push";
|
||||||
gpl = "git pull";
|
gpl = "git pull";
|
||||||
gs = "git status";
|
gs = "git status";
|
||||||
@@ -81,6 +92,11 @@
|
|||||||
gaa = "git add .";
|
gaa = "git add .";
|
||||||
gcm = "git commit -m";
|
gcm = "git commit -m";
|
||||||
|
|
||||||
|
# Original binaries
|
||||||
|
ocat = "/run/current-system/sw/bin/cat";
|
||||||
|
ols = "/run/current-system/sw/bin/ls";
|
||||||
|
ocd = "builtin cd";
|
||||||
|
|
||||||
# Typo
|
# Typo
|
||||||
clera = "clear";
|
clera = "clear";
|
||||||
celar = "clear";
|
celar = "clear";
|
||||||
@@ -88,24 +104,28 @@
|
|||||||
sl = "ls";
|
sl = "ls";
|
||||||
};
|
};
|
||||||
|
|
||||||
initContent =
|
initContent = lib.mkMerge [
|
||||||
|
(lib.mkOrder 550 ''
|
||||||
|
function zvm_config() {
|
||||||
|
ZVM_INSERT_MODE_CURSOR=$ZVM_CURSOR_BEAM
|
||||||
|
ZVM_NORMAL_MODE_CURSOR=$ZVM_CURSOR_BLOCK
|
||||||
|
ZVM_VISUAL_MODE_CURSOR=$ZVM_CURSOR_BLOCK
|
||||||
|
|
||||||
|
ZVM_VI_HIGHLIGHT_BACKGROUND=none
|
||||||
|
ZVM_VI_HIGHLIGHT_FOREGROUND=none
|
||||||
|
ZVM_VI_HIGHLIGHT_EXTRASTYLE=none
|
||||||
|
}
|
||||||
|
'')
|
||||||
# bash
|
# bash
|
||||||
''
|
''
|
||||||
bindkey -e
|
|
||||||
|
|
||||||
# Open command in VIM
|
|
||||||
autoload -Uz edit-command-line
|
|
||||||
zle -N edit-command-line
|
|
||||||
bindkey '^X' edit-command-line
|
|
||||||
|
|
||||||
# Suffix Aliases
|
# Suffix Aliases
|
||||||
alias -s {nix,md,txt,yml,yaml,go}=nvim
|
alias -s {nix,md,txt,yml,yaml,go}=nvim
|
||||||
alias -s {json,jsonl}=jless
|
alias -s {json,jsonl}=jless
|
||||||
alias -s {csv,tsv,parquet,pqt,arrow,db,sqlite,xls,xlsx,xlsm,xlsb,fwf}=tw
|
alias -s {csv,tsv,parquet,pqt,arrow,db,sqlite,xls,xlsx,xlsm,xlsb,fwf}=tw
|
||||||
alias -s {png,jpg,jpeg,gif,pdf}=xdg-open
|
alias -s {png,jpg,jpeg,gif,pdf}=xdg-open
|
||||||
|
|
||||||
# 3. Global Aliases (expanded anywhere in the command, not just at the start)
|
# Global Aliases
|
||||||
alias -g G="| grep"
|
alias -g G="| rg"
|
||||||
alias -g L="| less"
|
alias -g L="| less"
|
||||||
alias -g V="| nvim"
|
alias -g V="| nvim"
|
||||||
alias -g H="| head"
|
alias -g H="| head"
|
||||||
@@ -116,83 +136,19 @@
|
|||||||
alias -g ND=">/dev/null"
|
alias -g ND=">/dev/null"
|
||||||
alias -g NUL=">/dev/null 2>&1"
|
alias -g NUL=">/dev/null 2>&1"
|
||||||
|
|
||||||
# search history based on what's typed in the prompt
|
autoload zmv # Mv for multiple files
|
||||||
autoload -U history-search-end
|
|
||||||
zle -N history-beginning-search-backward-end history-search-end
|
|
||||||
zle -N history-beginning-search-forward-end history-search-end
|
|
||||||
bindkey "^[OA" history-beginning-search-backward-end
|
|
||||||
bindkey "^[OB" history-beginning-search-forward-end
|
|
||||||
|
|
||||||
# General completion behavior
|
|
||||||
zstyle ':completion:*' completer _extensions _complete _approximate
|
|
||||||
|
|
||||||
# Use cache
|
|
||||||
zstyle ':completion:*' use-cache on
|
|
||||||
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"
|
|
||||||
|
|
||||||
# Complete the alias
|
|
||||||
zstyle ':completion:*' complete true
|
|
||||||
|
|
||||||
# Autocomplete options
|
|
||||||
zstyle ':completion:*' complete-options true
|
|
||||||
|
|
||||||
# Completion matching control
|
|
||||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
|
||||||
zstyle ':completion:*' keep-prefix true
|
|
||||||
|
|
||||||
# Group matches and describe
|
|
||||||
zstyle ':completion:*' menu select
|
zstyle ':completion:*' menu select
|
||||||
zstyle ':completion:*' list-grouped false
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
||||||
zstyle ':completion:*' list-separator '''
|
|
||||||
zstyle ':completion:*' group-name '''
|
|
||||||
zstyle ':completion:*' verbose yes
|
|
||||||
zstyle ':completion:*:matches' group 'yes'
|
|
||||||
zstyle ':completion:*:warnings' format '%F{red}%B-- No match for: %d --%b%f'
|
|
||||||
zstyle ':completion:*:messages' format '%d'
|
|
||||||
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
|
|
||||||
zstyle ':completion:*:descriptions' format '[%d]'
|
|
||||||
|
|
||||||
# Colors
|
zvm_after_init() {
|
||||||
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
bindkey '^[[1;5C' forward-word
|
||||||
|
bindkey '^[[1;5D' backward-word
|
||||||
# Case insensitive tab completion
|
bindkey '^F' _fzf_file_no_hidden
|
||||||
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
bindkey '^[[A' history-substring-search-up
|
||||||
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
|
bindkey '^[[B' history-substring-search-down
|
||||||
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
|
|
||||||
zstyle ':completion:*:*:-command-:*:*' group-order aliases builtins functions commands
|
|
||||||
zstyle ':completion:*' special-dirs true
|
|
||||||
zstyle ':completion:*' squeeze-slashes true
|
|
||||||
|
|
||||||
# Sort
|
|
||||||
zstyle ':completion:*' sort false
|
|
||||||
zstyle ":completion:*:git-checkout:*" sort false
|
|
||||||
zstyle ':completion:*' file-sort modification
|
|
||||||
zstyle ':completion:*:eza' sort false
|
|
||||||
zstyle ':completion:complete:*:options' 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 ''
|
|
||||||
gnupg_path=$(ls $XDG_RUNTIME_DIR/gnupg)
|
|
||||||
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/$gnupg_path/S.gpg-agent.ssh"
|
|
||||||
''}
|
|
||||||
|
|
||||||
# Allow foot to pipe command output
|
|
||||||
function precmd {
|
|
||||||
if ! builtin zle; then
|
|
||||||
print -n "\e]133;D\e\\"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
function preexec {
|
''
|
||||||
print -n "\e]133;C\e\\"
|
];
|
||||||
}
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
# 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.
|
# 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,
|
config,
|
||||||
pkgs-stable,
|
pkgs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
rgb = base: "${c."${base}-rgb-r"}, ${c."${base}-rgb-g"}, ${c."${base}-rgb-b"}";
|
rgb = base: "${c."${base}-rgb-r"}, ${c."${base}-rgb-g"}, ${c."${base}-rgb-b"}";
|
||||||
in {
|
in {
|
||||||
home.packages = with pkgs-stable; [
|
home.packages = with pkgs; [
|
||||||
spotatui
|
spotatui
|
||||||
];
|
];
|
||||||
|
|
||||||
|
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [".config/spotatui" ".config/spotify"];
|
||||||
|
};
|
||||||
|
|
||||||
home.file.".config/spotatui/config.yml".text = ''
|
home.file.".config/spotatui/config.yml".text = ''
|
||||||
keybindings:
|
keybindings:
|
||||||
back: q
|
back: q
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# wikiman ships without the ArchWiki/tldr-pages databases (too heavy to
|
||||||
|
# bundle). These are fetched declaratively from wikiman's own release
|
||||||
|
# snapshots and baked into a wrapped `wikiman` so `-S` shows them as
|
||||||
|
# installed offline, no manual `make source-*` step required.
|
||||||
|
# To refresh: bump the release tag/date below and update the hashes
|
||||||
|
# (`nix hash file --sri <downloaded file>`).
|
||||||
|
#
|
||||||
|
# Download size (compressed): ~17M ArchWiki + ~3.4M tldr-pages.
|
||||||
|
# Store size (unpacked): ~239M ArchWiki + ~147M tldr-pages (~385M total).
|
||||||
|
archWikiSrc = pkgs.fetchurl {
|
||||||
|
url = "https://github.com/filiparag/wikiman/releases/download/2.14.1/arch-wiki_20260810.source.tar.xz";
|
||||||
|
hash = "sha256-82aiDvwZ07m9CfBVYIDLSUpWds4QxUbCbCPmQ26j1XI=";
|
||||||
|
};
|
||||||
|
tldrPagesSrc = pkgs.fetchurl {
|
||||||
|
url = "https://github.com/filiparag/wikiman/releases/download/2.14.1/tldr-pages_20260810.source.tar.xz";
|
||||||
|
hash = "sha256-2vdszVMImSN1UF+OepKdj1v+lsG2jM68gcpnUJyqddw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Real files (not symlinks): wikiman's source-detection does `find -type f`
|
||||||
|
# on this dir, which doesn't match symlinks, so `pkgs.symlinkJoin` alone
|
||||||
|
# won't work here.
|
||||||
|
data = pkgs.runCommand "wikiman-data" {nativeBuildInputs = [pkgs.xz];} ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r ${pkgs.wikiman}/share $out/share
|
||||||
|
chmod -R u+w $out/share
|
||||||
|
tar xf ${archWikiSrc} -C $out --strip-components=1
|
||||||
|
tar xf ${tldrPagesSrc} -C $out --strip-components=1
|
||||||
|
'';
|
||||||
|
|
||||||
|
wikiman-full = pkgs.symlinkJoin {
|
||||||
|
name = "wikiman-full";
|
||||||
|
paths = [pkgs.wikiman];
|
||||||
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
|
postBuild = ''
|
||||||
|
rm $out/bin/wikiman
|
||||||
|
makeWrapper ${pkgs.wikiman}/bin/.wikiman-wrapped $out/bin/wikiman \
|
||||||
|
--prefix PATH : "${lib.makeBinPath [pkgs.fzf pkgs.ripgrep pkgs.gawk pkgs.w3m pkgs.coreutils pkgs.parallel]}" \
|
||||||
|
--set conf_sys_usr "${data}"
|
||||||
|
'';
|
||||||
|
meta.mainProgram = "wikiman";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
home.packages = [wikiman-full]; # Offline search engine for manual pages, ArchWiki and tldr
|
||||||
|
}
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
{pkgs, pkgs-stable, ...}: {
|
|
||||||
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-stable; [glow ouch hexyl exiftool 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
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -2,9 +2,25 @@
|
|||||||
# entry (text + images) so it can be recalled later via the `clipboard-menu`
|
# entry (text + images) so it can be recalled later via the `clipboard-menu`
|
||||||
# script (tofi). Uses the home-manager module so the watcher services are
|
# script (tofi). Uses the home-manager module so the watcher services are
|
||||||
# managed the same way as swaync/hypridle.
|
# managed the same way as swaync/hypridle.
|
||||||
{...}: {
|
{pkgs, ...}: {
|
||||||
|
home.packages = [pkgs.wl-clipboard];
|
||||||
|
|
||||||
services.cliphist = {
|
services.cliphist = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowImages = true;
|
allowImages = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.user.services.cliphist-wipe = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Wipe cliphist history on login and logout";
|
||||||
|
After = ["cliphist.service"];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = "${pkgs.cliphist}/bin/cliphist wipe";
|
||||||
|
ExecStop = "${pkgs.cliphist}/bin/cliphist wipe";
|
||||||
|
};
|
||||||
|
Install.WantedBy = ["default.target"];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
# hypridle handles idle management: lock the screen, turn the display off, and
|
# hypridle handles idle management: lock the screen, turn the display off, and
|
||||||
# suspend after periods of inactivity. The `caffeine-toggle` script pauses it.
|
# suspend after periods of inactivity. The `caffeine-toggle` script pauses it.
|
||||||
{...}: {
|
{pkgs, ...}: {
|
||||||
services.hypridle = {
|
services.hypridle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
# Avoid starting multiple hyprlock instances.
|
# Avoid starting multiple hyprlock instances.
|
||||||
lock_cmd = "pidof hyprlock || hyprlock";
|
lock_cmd = "${pkgs.procps}/bin/pidof ${pkgs.hyprlock}/bin/hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
after_sleep_cmd = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on";
|
||||||
};
|
};
|
||||||
|
|
||||||
listener = [
|
listener = [
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
timeout = 360; # 6 min → screen off
|
timeout = 360; # 6 min → screen off
|
||||||
on-timeout = "hyprctl dispatch dpms off";
|
on-timeout = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off";
|
||||||
on-resume = "hyprctl dispatch dpms on";
|
on-resume = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
timeout = 1800; # 30 min → suspend
|
timeout = 1800; # 30 min → suspend
|
||||||
|
|||||||
@@ -6,13 +6,9 @@
|
|||||||
then "4"
|
then "4"
|
||||||
else if animationSpeed == "medium"
|
else if animationSpeed == "medium"
|
||||||
then "2.5"
|
then "2.5"
|
||||||
else "1.5";
|
else if animationSpeed == "fast"
|
||||||
borderDuration =
|
then "1.5"
|
||||||
if animationSpeed == "slow"
|
else "0.5";
|
||||||
then "10"
|
|
||||||
else if animationSpeed == "medium"
|
|
||||||
then "6"
|
|
||||||
else "3";
|
|
||||||
in {
|
in {
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
animations = {
|
animations = {
|
||||||
@@ -38,7 +34,7 @@ in {
|
|||||||
"windows, 1, ${animationDuration}, md3_decel, popin 60%"
|
"windows, 1, ${animationDuration}, md3_decel, popin 60%"
|
||||||
"windowsIn, 1, ${animationDuration}, md3_decel, popin 60%"
|
"windowsIn, 1, ${animationDuration}, md3_decel, popin 60%"
|
||||||
"windowsOut, 1, ${animationDuration}, md3_accel, popin 60%"
|
"windowsOut, 1, ${animationDuration}, md3_accel, popin 60%"
|
||||||
"border, 1, ${borderDuration}, default"
|
"border, 1, ${animationDuration}, default"
|
||||||
"fade, 1, ${animationDuration}, md3_decel"
|
"fade, 1, ${animationDuration}, md3_decel"
|
||||||
"layersIn, 1, ${animationDuration}, menu_decel, slide"
|
"layersIn, 1, ${animationDuration}, menu_decel, slide"
|
||||||
"layersOut, 1, ${animationDuration}, menu_accel"
|
"layersOut, 1, ${animationDuration}, menu_accel"
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
|
scripts,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
colors = config.lib.stylix.colors;
|
colors = config.lib.stylix.colors;
|
||||||
|
border-size = config.theme.border-size;
|
||||||
|
|
||||||
mkMenu = menu: let
|
mkMenu = menu: let
|
||||||
configFile = pkgs.writeText "config.yaml" (
|
configFile = pkgs.writeText "config.yaml" (
|
||||||
lib.generators.toYAML {} {
|
lib.generators.toYAML {} {
|
||||||
anchor = "bottom-right";
|
anchor = "top";
|
||||||
border = "#${colors.base0D}80";
|
border = "#${colors.base0D}EE";
|
||||||
background = "#${colors.base01}EE";
|
border_width = border-size;
|
||||||
|
background = "#${colors.base01}FF";
|
||||||
color = "#${colors.base05}";
|
color = "#${colors.base05}";
|
||||||
margin_right = 15;
|
margin_top = 0;
|
||||||
margin_bottom = 15;
|
|
||||||
rows_per_column = 5;
|
rows_per_column = 5;
|
||||||
|
|
||||||
inherit menu;
|
inherit menu;
|
||||||
@@ -23,8 +24,21 @@
|
|||||||
);
|
);
|
||||||
in
|
in
|
||||||
pkgs.writeShellScriptBin "menu" ''
|
pkgs.writeShellScriptBin "menu" ''
|
||||||
|
# Toggle: if wlr-which-key is already open, closing it is all this run should do.
|
||||||
|
if ${pkgs.procps}/bin/pkill -x wlr-which-key; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
exec ${lib.getExe pkgs.wlr-which-key} ${configFile}
|
exec ${lib.getExe pkgs.wlr-which-key} ${configFile}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
tofi-drun-toggle = pkgs.writeShellScriptBin "tofi-drun-toggle" ''
|
||||||
|
# tofi-drun is a distinct process name from the plain "tofi" binary
|
||||||
|
# used by the emoji/icon/clipboard pickers, so this can't close those.
|
||||||
|
if ${pkgs.procps}/bin/pkill -x tofi-drun; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
exec ${pkgs.tofi}/bin/tofi-drun
|
||||||
|
'';
|
||||||
in {
|
in {
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
@@ -64,17 +78,17 @@ in {
|
|||||||
{
|
{
|
||||||
key = "o";
|
key = "o";
|
||||||
desc = "Obsidian";
|
desc = "Obsidian";
|
||||||
cmd = "${pkgs-stable.obsidian}/bin/obsidian";
|
cmd = "${pkgs.obsidian}/bin/obsidian";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "s";
|
key = "s";
|
||||||
desc = "Signal";
|
desc = "Signal";
|
||||||
cmd = "${pkgs-stable.signal-desktop}/bin/signal-desktop";
|
cmd = "${pkgs.signal-desktop}/bin/signal-desktop";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "t";
|
key = "t";
|
||||||
desc = "TickTick";
|
desc = "TickTick";
|
||||||
cmd = "${pkgs-stable.ticktick}/bin/ticktick";
|
cmd = "${pkgs.ticktick}/bin/ticktick";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "b";
|
key = "b";
|
||||||
@@ -98,7 +112,7 @@ in {
|
|||||||
{
|
{
|
||||||
key = "l";
|
key = "l";
|
||||||
desc = "Lock";
|
desc = "Lock";
|
||||||
cmd = "hyprlock";
|
cmd = "${pkgs.hyprlock}/bin/hyprlock";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "s";
|
key = "s";
|
||||||
@@ -115,25 +129,20 @@ in {
|
|||||||
desc = "Power Off";
|
desc = "Power Off";
|
||||||
cmd = "systemctl poweroff";
|
cmd = "systemctl poweroff";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
key = "n";
|
|
||||||
desc = "Nightshift";
|
|
||||||
cmd = "nightshift-toggle";
|
|
||||||
}
|
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
# Quick launch
|
# Quick launch
|
||||||
"$mod,RETURN, exec, ${pkgs.ghostty}/bin/ghostty +new-window" # Ghostty (terminal, via daemon D-Bus)
|
"$mod,RETURN, exec, ${pkgs.ghostty}/bin/ghostty +new-window" # Ghostty (terminal, via daemon D-Bus)
|
||||||
"$mod,E, exec, uwsm app -- ${pkgs-stable.thunar}/bin/thunar" # Thunar
|
"$mod,E, exec, ${pkgs.ghostty}/bin/ghostty +new-window -e elio" # Elio
|
||||||
"$mod, SPACE, exec, tofi-drun" # Launcher
|
"$mod, SPACE, exec, ${lib.getExe tofi-drun-toggle}" # Launcher (toggle)
|
||||||
"$mod, N, exec, swaync-client -t" # Notification center
|
"$mod, N, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t" # Notification center
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
"$mod,Q, killactive," # Close window
|
"$mod,Q, killactive," # Close window
|
||||||
"$mod,F, fullscreen" # Toggle Fullscreen
|
"$mod,F, fullscreen" # Toggle Fullscreen
|
||||||
"$shiftMod,F, togglefloating," # Toggle Floating
|
"$shiftMod,F, togglefloating," # Toggle Floating
|
||||||
"$shiftMod, SPACE, exec, focus-toggle" # Toggle focus mode
|
"$shiftMod, SPACE, exec, ${scripts.focus-toggle}/bin/focus-toggle" # Toggle focus mode
|
||||||
|
|
||||||
# Focus Windows
|
# Focus Windows
|
||||||
"$mod,H, movefocus, l" # Move focus left
|
"$mod,H, movefocus, l" # Move focus left
|
||||||
@@ -145,10 +154,13 @@ in {
|
|||||||
"$shiftMod,K, layoutmsg, addmaster" # Add to master
|
"$shiftMod,K, layoutmsg, addmaster" # Add to master
|
||||||
"$shiftMod,L, focusmonitor, 1" # Focus next monitor
|
"$shiftMod,L, focusmonitor, 1" # Focus next monitor
|
||||||
|
|
||||||
|
# Special workspaces
|
||||||
|
"$mod, S, togglespecialworkspace, scratch" # Toggle scratch workspace
|
||||||
|
"$shiftMod, S, movetoworkspace, special:scratch" # Move to scratch workspace
|
||||||
|
|
||||||
# Utilities
|
# Utilities
|
||||||
"$shiftMod, S, exec, hyprshot -m region" # Capture region
|
", Print, exec, ${pkgs.hyprshot}/bin/hyprshot -m region" # Capture region
|
||||||
", Print, exec, hyprshot -m region" # Capture region
|
"$shiftMod, Print, exec, ${pkgs.hyprshot}/bin/hyprshot -m output" # Capture screen
|
||||||
"$shiftMod+Alt, S, exec, hyprshot -m output" # Capture screen
|
|
||||||
]
|
]
|
||||||
++ (builtins.concatLists (
|
++ (builtins.concatLists (
|
||||||
builtins.genList (
|
builtins.genList (
|
||||||
@@ -169,21 +181,21 @@ in {
|
|||||||
|
|
||||||
bindl = [
|
bindl = [
|
||||||
# Brightness
|
# Brightness
|
||||||
", XF86MonBrightnessUp, exec, bright-up"
|
", XF86MonBrightnessUp, exec, ${scripts.bright-up}/bin/bright-up"
|
||||||
", XF86MonBrightnessDown, exec, bright-down"
|
", XF86MonBrightnessDown, exec, ${scripts.bright-down}/bin/bright-down"
|
||||||
|
|
||||||
# Media
|
# Media
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
", XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
", XF86AudioPause, exec, playerctl play-pause"
|
", XF86AudioPause, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
", XF86AudioNext, exec, playerctl next"
|
", XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next"
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
", XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous"
|
||||||
", XF86AudioStop, exec, playerctl stop"
|
", XF86AudioStop, exec, ${pkgs.playerctl}/bin/playerctl stop"
|
||||||
|
|
||||||
# Sound
|
# Sound
|
||||||
", XF86AudioMute, exec, vol-mute"
|
", XF86AudioMute, exec, ${scripts.vol-mute}/bin/vol-mute"
|
||||||
", XF86AudioRaiseVolume, exec, vol-up"
|
", XF86AudioRaiseVolume, exec, ${scripts.vol-up}/bin/vol-up"
|
||||||
", XF86AudioLowerVolume, exec, vol-down"
|
", XF86AudioLowerVolume, exec, ${scripts.vol-down}/bin/vol-down"
|
||||||
", XF86AudioMicMute, exec, mic-mute"
|
", XF86AudioMicMute, exec, ${scripts.mic-mute}/bin/mic-mute"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Hyprland is a dynamic tiling Wayland compositor that is highly customizable and performant.
|
# Hyprland is a dynamic tiling Wayland compositor that is highly customizable and performant.
|
||||||
{
|
{
|
||||||
|
pkgs-unstable,
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
@@ -24,24 +24,26 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
home.packages =
|
home.packages =
|
||||||
(with pkgs; [
|
(with pkgs-unstable; [
|
||||||
qt5.qtwayland
|
qt5.qtwayland
|
||||||
qt6.qtwayland
|
qt6.qtwayland
|
||||||
libsForQt5.qt5ct
|
|
||||||
qt6Packages.qt6ct
|
|
||||||
hyprland-qtutils
|
hyprland-qtutils
|
||||||
])
|
])
|
||||||
++ (with pkgs-stable; [
|
++ (with pkgs; [
|
||||||
|
libsForQt5.qt5ct
|
||||||
|
qt6Packages.qt6ct
|
||||||
xcb-util-cursor
|
xcb-util-cursor
|
||||||
|
papirus-icon-theme
|
||||||
|
material-icons
|
||||||
|
material-design-icons
|
||||||
|
material-symbols
|
||||||
libxcb
|
libxcb
|
||||||
adw-gtk3
|
adw-gtk3
|
||||||
hyprshot
|
hyprshot
|
||||||
hyprpicker
|
hyprpicker
|
||||||
swappy
|
|
||||||
satty
|
satty
|
||||||
imv
|
imv
|
||||||
wf-recorder
|
wf-recorder
|
||||||
wlr-randr
|
|
||||||
brightnessctl
|
brightnessctl
|
||||||
gnome-themes-extra
|
gnome-themes-extra
|
||||||
dconf
|
dconf
|
||||||
@@ -59,7 +61,7 @@ in {
|
|||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
monitor = [
|
monitor = [
|
||||||
",prefered,auto,1" # default
|
",preferred,auto,1" # default
|
||||||
];
|
];
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
@@ -131,6 +133,9 @@ in {
|
|||||||
"match:class helium, suppress_event fullscreen"
|
"match:class helium, suppress_event fullscreen"
|
||||||
"match:class helium, sync_fullscreen false"
|
"match:class helium, sync_fullscreen false"
|
||||||
|
|
||||||
|
"match:class ^(steam_app_.*)$, suppress_event fullscreen"
|
||||||
|
"match:class ^(steam_app_.*)$, sync_fullscreen false"
|
||||||
|
|
||||||
"match:class proton-authenticator, float on"
|
"match:class proton-authenticator, float on"
|
||||||
"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"
|
||||||
@@ -172,4 +177,20 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
qt.enable = true;
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
iconTheme = {
|
||||||
|
name = "Papirus-Dark";
|
||||||
|
package = pkgs.papirus-icon-theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
XDG_ICON_DIR = "${pkgs.papirus-icon-theme}/share/icons/Papirus";
|
||||||
|
QS_ICON_THEME = "Papirus";
|
||||||
|
QT_STYLE_OVERRIDE = lib.mkForce "Fusion";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
# Hyprpaper is used to set the wallpaper on the system
|
# Hyprpaper is used to set the wallpaper on the system
|
||||||
{pkgs-stable, lib, ...}: {
|
{lib, ...}: {
|
||||||
# The wallpaper is set by stylix
|
# The wallpaper is set by stylix
|
||||||
services.hyprpaper = {
|
services.hyprpaper = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-stable.hyprpaper;
|
|
||||||
settings = {
|
settings = {
|
||||||
ipc = "on";
|
ipc = "on";
|
||||||
splash = false;
|
splash = false;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# HyprPolkitAgent is a simple polkit agent for wayland compositors
|
# HyprPolkitAgent is a simple polkit agent for wayland compositors
|
||||||
{pkgs-stable, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs-stable; [hyprpolkitagent];
|
home.packages = with pkgs; [hyprpolkitagent];
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start hyprpolkitagent"];
|
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start hyprpolkitagent"];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,65 @@
|
|||||||
{config, ...}: let
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
|
font = config.stylix.fonts.monospace.name;
|
||||||
|
|
||||||
|
fontSize = 16;
|
||||||
|
em = fontSize * 4.0 / 3.0;
|
||||||
|
charW = em * 0.6;
|
||||||
|
lineH = em * 1.32;
|
||||||
|
|
||||||
|
round = x: builtins.floor (x + 0.5);
|
||||||
|
px = x: toString (round x);
|
||||||
|
|
||||||
|
paint = color: t: ''<span foreground="#${color}">${t}</span>'';
|
||||||
|
fromFile = name: text: ''cmd[update:0] cat ${pkgs.writeText name text}'';
|
||||||
|
|
||||||
|
inner = 42;
|
||||||
|
width = inner + 2;
|
||||||
|
valueCol = 13;
|
||||||
|
|
||||||
|
spaces = n: lib.concatStrings (lib.genList (_: " ") n);
|
||||||
|
|
||||||
|
border = paint c.base0D;
|
||||||
|
hbar = lib.concatStrings (lib.genList (_: "─") inner);
|
||||||
|
|
||||||
|
row = content: border "│" + content + border "│";
|
||||||
|
|
||||||
|
blank = row (spaces inner);
|
||||||
|
|
||||||
|
entry = name: value: let
|
||||||
|
prompt = " ${name}:";
|
||||||
|
gap = spaces (valueCol - builtins.stringLength prompt);
|
||||||
|
tail = spaces (inner - valueCol - builtins.stringLength value);
|
||||||
|
in
|
||||||
|
row (border prompt + gap + paint c.base05 value + tail);
|
||||||
|
|
||||||
|
lines = [
|
||||||
|
(border "┌${hbar}┐")
|
||||||
|
blank
|
||||||
|
(entry "Session" "Hyprland")
|
||||||
|
(entry "Username" config.home.username)
|
||||||
|
(entry "Password" "")
|
||||||
|
blank
|
||||||
|
(border "└${hbar}┘")
|
||||||
|
];
|
||||||
|
|
||||||
|
rowY = i: -((i + 0.5) - (builtins.length lines) / 2.0) * lineH;
|
||||||
|
colX = i: (i - width / 2.0) * charW;
|
||||||
|
|
||||||
|
frameHalfH = (builtins.length lines) * lineH / 2.0;
|
||||||
|
outsideY = frameHalfH + 1.5 * lineH;
|
||||||
|
|
||||||
|
inputH = fontSize / 0.8;
|
||||||
|
inputW = 27 * charW;
|
||||||
|
dotPad = (inputH - lineH) / 2.0;
|
||||||
|
inputX = colX (valueCol + 1) - dotPad;
|
||||||
|
passwordRow = 4;
|
||||||
|
hidden = "<span> </span>";
|
||||||
in {
|
in {
|
||||||
stylix.targets.hyprlock.enable = false;
|
stylix.targets.hyprlock.enable = false;
|
||||||
|
|
||||||
@@ -16,68 +76,87 @@ in {
|
|||||||
label = [
|
label = [
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
text = ''cmd[update:0] echo "[$USER@$(hostname) ~]"'';
|
text = ''cmd[update:1000] date +"%H:%M %A %d %B"'';
|
||||||
color = "rgb(${c.base0D})";
|
|
||||||
font_size = 13;
|
|
||||||
font_family = "Maple Mono NF";
|
|
||||||
position = "48, -48";
|
|
||||||
halign = "left";
|
|
||||||
valign = "top";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = ''cmd[update:1000] echo "$(date +'%H:%M:%S')"'';
|
|
||||||
color = "rgb(${c.base05})";
|
color = "rgb(${c.base05})";
|
||||||
font_size = 13;
|
font_size = fontSize;
|
||||||
font_family = "Maple Mono NF";
|
font_family = font;
|
||||||
position = "48, -70";
|
position = "0, -64";
|
||||||
halign = "left";
|
halign = "center";
|
||||||
valign = "top";
|
valign = "top";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
text = ''cmd[update:60000] echo "$(date +'%A %d %B %Y')"'';
|
text = "Welcome";
|
||||||
|
color = "rgb(${c.base05})";
|
||||||
|
font_size = fontSize;
|
||||||
|
font_family = font;
|
||||||
|
position = "0, ${px outsideY}";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = fromFile "hyprlock-frame" (lib.concatStringsSep "\n" lines);
|
||||||
|
color = "rgb(${c.base05})";
|
||||||
|
font_size = fontSize;
|
||||||
|
font_family = font;
|
||||||
|
text_align = "left";
|
||||||
|
position = "0, 0";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "<span> </span>$FAIL<span> </span>";
|
||||||
|
color = "rgb(${c.base08})";
|
||||||
|
font_size = fontSize;
|
||||||
|
font_family = font;
|
||||||
|
position = "0, ${px (-outsideY)}";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text =
|
||||||
|
fromFile "hyprlock-hints"
|
||||||
|
"${paint c.base0D "Enter"} ${paint c.base04 "unlock"} ${paint c.base0D "Esc"} ${paint c.base04 "clear"}";
|
||||||
color = "rgb(${c.base04})";
|
color = "rgb(${c.base04})";
|
||||||
font_size = 13;
|
font_size = fontSize;
|
||||||
font_family = "Maple Mono NF";
|
font_family = font;
|
||||||
position = "48, -92";
|
position = "0, 40";
|
||||||
halign = "left";
|
halign = "center";
|
||||||
valign = "top";
|
valign = "bottom";
|
||||||
}
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = "passwd:";
|
|
||||||
color = "rgb(${c.base0D})";
|
|
||||||
font_size = 13;
|
|
||||||
font_family = "Maple Mono NF";
|
|
||||||
position = "48, -141";
|
|
||||||
halign = "left";
|
|
||||||
valign = "top";
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
"input-field" = [
|
"input-field" = [
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
size = "200, 20";
|
size = "${px inputW}, ${px inputH}";
|
||||||
|
position = "${px (inputX + inputW / 2.0)}, ${px (rowY passwordRow)}";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
|
||||||
outline_thickness = 0;
|
outline_thickness = 0;
|
||||||
dots_size = 0.3;
|
|
||||||
dots_spacing = 0.2;
|
|
||||||
dots_center = false;
|
|
||||||
outer_color = "rgba(00000000)";
|
outer_color = "rgba(00000000)";
|
||||||
inner_color = "rgba(00000000)";
|
inner_color = "rgba(00000000)";
|
||||||
font_color = "rgb(${c.base05})";
|
|
||||||
fade_on_empty = false;
|
|
||||||
placeholder_text = "";
|
|
||||||
hide_input = true;
|
|
||||||
rounding = 0;
|
rounding = 0;
|
||||||
check_color = "rgb(${c.base0B})";
|
fade_on_empty = false;
|
||||||
|
|
||||||
|
font_family = font;
|
||||||
|
font_color = "rgb(${c.base05})";
|
||||||
|
|
||||||
|
dots_text_format = "*";
|
||||||
|
dots_size = 0.8;
|
||||||
|
dots_spacing = 0.0;
|
||||||
|
dots_center = false;
|
||||||
|
|
||||||
|
swap_font_color = true;
|
||||||
|
placeholder_text = hidden;
|
||||||
|
fail_text = hidden;
|
||||||
|
check_color = "rgb(${c.base0C})";
|
||||||
fail_color = "rgb(${c.base08})";
|
fail_color = "rgb(${c.base08})";
|
||||||
fail_text = ''<span font_desc="Maple Mono NF 13">auth failed</span>'';
|
|
||||||
capslock_color = "rgb(${c.base0A})";
|
capslock_color = "rgb(${c.base0A})";
|
||||||
position = "116, -138";
|
|
||||||
halign = "left";
|
|
||||||
valign = "top";
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
@@ -9,10 +10,10 @@
|
|||||||
image = ["imv-dir.desktop"];
|
image = ["imv-dir.desktop"];
|
||||||
audio = ["vlc.desktop"];
|
audio = ["vlc.desktop"];
|
||||||
video = ["vlc.desktop"];
|
video = ["vlc.desktop"];
|
||||||
directory = ["thunar.desktop"];
|
directory = ["elio.desktop"];
|
||||||
office = ["onlyoffice-desktopeditors.desktop"];
|
office = ["onlyoffice-desktopeditors.desktop"];
|
||||||
pdf = ["onlyoffice-desktopeditors.desktop"];
|
pdf = ["onlyoffice-desktopeditors.desktop"];
|
||||||
archive = ["xarchiver.desktop"];
|
archive = ["elio.desktop"];
|
||||||
browser = ["helium.desktop"];
|
browser = ["helium.desktop"];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -116,7 +117,7 @@
|
|||||||
nvim-ghostty = pkgs.makeDesktopItem {
|
nvim-ghostty = pkgs.makeDesktopItem {
|
||||||
name = "nvim-ghostty";
|
name = "nvim-ghostty";
|
||||||
desktopName = "Neovim (Ghostty)";
|
desktopName = "Neovim (Ghostty)";
|
||||||
exec = ''ghostty --title="Neovim Editor" -e nvim %F'';
|
exec = ''${pkgs.ghostty}/bin/ghostty +new-window --title="Neovim Editor" -e nvim %F'';
|
||||||
terminal = false;
|
terminal = false;
|
||||||
categories = ["Development" "TextEditor"];
|
categories = ["Development" "TextEditor"];
|
||||||
mimeTypes = mimeMap.code ++ mimeMap.text;
|
mimeTypes = mimeMap.code ++ mimeMap.text;
|
||||||
@@ -139,5 +140,18 @@ in {
|
|||||||
associations.added = associations;
|
associations.added = associations;
|
||||||
defaultApplications = lib.mapAttrs (_: lib.mkForce) associations;
|
defaultApplications = lib.mapAttrs (_: lib.mkForce) associations;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
desktop = null;
|
||||||
|
music = null;
|
||||||
|
publicShare = null;
|
||||||
|
templates = null;
|
||||||
|
extraConfig = {
|
||||||
|
NOTES = "${config.home.homeDirectory}/Notes";
|
||||||
|
CYBER = "${config.home.homeDirectory}/Cyber";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{config, ...}: let
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
scripts,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
font = config.stylix.fonts.sansSerif.name;
|
font = config.stylix.fonts.sansSerif.name;
|
||||||
monofont = config.stylix.fonts.monospace.name;
|
monofont = config.stylix.fonts.monospace.name;
|
||||||
@@ -64,28 +69,28 @@ in {
|
|||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
type = "toggle";
|
type = "toggle";
|
||||||
command = "nightshift-toggle";
|
command = "${scripts.nightshift-toggle}/bin/nightshift-toggle";
|
||||||
"update-command" = "pidof hyprsunset > /dev/null && echo true || echo false";
|
"update-command" = "${pkgs.procps}/bin/pidof ${pkgs.hyprsunset}/bin/hyprsunset > /dev/null && echo true || echo false";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
type = "toggle";
|
type = "toggle";
|
||||||
command = "focus-toggle";
|
command = "${scripts.focus-toggle}/bin/focus-toggle";
|
||||||
"update-command" = "test -f /tmp/hypr-focus-mode && echo true || echo false";
|
"update-command" = "test -f /tmp/hypr-focus-mode && echo true || echo false";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
type = "toggle";
|
type = "toggle";
|
||||||
command = "mic-mute";
|
command = "${scripts.mic-mute}/bin/mic-mute";
|
||||||
"update-command" = "mic-status";
|
"update-command" = "${scripts.mic-status}/bin/mic-status";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
command = "swaync-client -cp ; hyprlock";
|
command = "${pkgs.swaynotificationcenter}/bin/swaync-client -cp ; ${pkgs.hyprlock}/bin/hyprlock";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
command = "swaync-client -cp ; systemctl poweroff";
|
command = "${pkgs.swaynotificationcenter}/bin/swaync-client -cp ; systemctl poweroff";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Use yazi as the file picker for portal dialogs (browser "select file(s)" and
|
# Use elio as the file picker for portal dialogs (browser "select file(s)" and
|
||||||
# "save download to..."). The backend is xdg-desktop-portal-termfilechooser,
|
# "save download to..."). The backend is xdg-desktop-portal-termfilechooser,
|
||||||
# enabled system-wide in nixos/utils.nix (extraPortals + FileChooser routing).
|
# enabled system-wide in nixos/utils.nix (extraPortals + FileChooser routing).
|
||||||
{
|
{
|
||||||
@@ -6,7 +6,48 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
wrapper = "${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh";
|
wrapper = pkgs.writeShellScript "elio-wrapper" ''
|
||||||
|
multiple="$1"
|
||||||
|
directory="$2"
|
||||||
|
save="$3"
|
||||||
|
path="$4"
|
||||||
|
out="$5"
|
||||||
|
debug="$6"
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [[ "$debug" = 1 ]]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
cmd="elio"
|
||||||
|
termcmd="''${TERMCMD:-ghostty --gtk-single-instance=false --title=termfilechooser -e}"
|
||||||
|
|
||||||
|
if [[ "$save" = "1" ]]; then
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
elif [[ "$directory" = "1" ]]; then
|
||||||
|
set -- --chooser-file="$out" --cwd-file="$out.1" "$path"
|
||||||
|
else
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
fi
|
||||||
|
|
||||||
|
command="$termcmd $cmd"
|
||||||
|
for arg in "$@"; do
|
||||||
|
escaped=$(printf "%s" "$arg" | sed 's/"/\\"/g')
|
||||||
|
command="$command \"$escaped\""
|
||||||
|
done
|
||||||
|
|
||||||
|
sh -c "$command"
|
||||||
|
|
||||||
|
if [[ "$directory" = "1" ]]; then
|
||||||
|
if [[ ! -s "$out" ]] && [[ -s "$out.1" ]]; then
|
||||||
|
cat "$out.1" > "$out"
|
||||||
|
rm "$out.1"
|
||||||
|
else
|
||||||
|
rm "$out.1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
'';
|
||||||
# ghostty must run in the foreground instead of handing off to the
|
# ghostty must run in the foreground instead of handing off to the
|
||||||
# single-instance daemon, otherwise the wrapper returns before you've picked
|
# single-instance daemon, otherwise the wrapper returns before you've picked
|
||||||
# anything and the portal reads an empty selection.
|
# anything and the portal reads an empty selection.
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
{...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
scripts,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
xdg.desktopEntries = {
|
xdg.desktopEntries = {
|
||||||
focus-toggle = {
|
focus-toggle = {
|
||||||
name = "Focus Mode";
|
name = "Focus Mode";
|
||||||
exec = "focus-toggle";
|
exec = "${scripts.focus-toggle}/bin/focus-toggle";
|
||||||
icon = "do-not-disturb-symbolic";
|
icon = "do-not-disturb-symbolic";
|
||||||
comment = "Toggle focus mode";
|
comment = "Toggle focus mode";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -11,7 +15,7 @@
|
|||||||
|
|
||||||
nightshift-toggle = {
|
nightshift-toggle = {
|
||||||
name = "Night Shift";
|
name = "Night Shift";
|
||||||
exec = "nightshift-toggle";
|
exec = "${scripts.nightshift-toggle}/bin/nightshift-toggle";
|
||||||
icon = "night-light-symbolic";
|
icon = "night-light-symbolic";
|
||||||
comment = "Toggle night shift";
|
comment = "Toggle night shift";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -20,7 +24,7 @@
|
|||||||
|
|
||||||
mic-mute = {
|
mic-mute = {
|
||||||
name = "Mute Microphone";
|
name = "Mute Microphone";
|
||||||
exec = "mic-mute";
|
exec = "${scripts.mic-mute}/bin/mic-mute";
|
||||||
icon = "microphone-sensitivity-muted-symbolic";
|
icon = "microphone-sensitivity-muted-symbolic";
|
||||||
comment = "Toggle microphone mute";
|
comment = "Toggle microphone mute";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -29,7 +33,7 @@
|
|||||||
|
|
||||||
lock = {
|
lock = {
|
||||||
name = "Lock";
|
name = "Lock";
|
||||||
exec = "hyprlock";
|
exec = "${pkgs.hyprlock}/bin/hyprlock";
|
||||||
icon = "system-lock-screen-symbolic";
|
icon = "system-lock-screen-symbolic";
|
||||||
comment = "Lock the screen";
|
comment = "Lock the screen";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -65,7 +69,7 @@
|
|||||||
|
|
||||||
waybar-toggle = {
|
waybar-toggle = {
|
||||||
name = "Toggle Waybar";
|
name = "Toggle Waybar";
|
||||||
exec = "waybar-toggle";
|
exec = "${scripts.waybar-toggle}/bin/waybar-toggle";
|
||||||
icon = "panel-applets-symbolic";
|
icon = "panel-applets-symbolic";
|
||||||
comment = "Show or hide the status bar";
|
comment = "Show or hide the status bar";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -74,7 +78,7 @@
|
|||||||
|
|
||||||
wifi-toggle = {
|
wifi-toggle = {
|
||||||
name = "Toggle Wi-Fi";
|
name = "Toggle Wi-Fi";
|
||||||
exec = "wifi-toggle";
|
exec = "${scripts.wifi-toggle}/bin/wifi-toggle";
|
||||||
icon = "network-wireless-symbolic";
|
icon = "network-wireless-symbolic";
|
||||||
comment = "Enable or disable Wi-Fi";
|
comment = "Enable or disable Wi-Fi";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -83,7 +87,7 @@
|
|||||||
|
|
||||||
bluetooth-toggle = {
|
bluetooth-toggle = {
|
||||||
name = "Toggle Bluetooth";
|
name = "Toggle Bluetooth";
|
||||||
exec = "bluetooth-toggle";
|
exec = "${scripts.bluetooth-toggle}/bin/bluetooth-toggle";
|
||||||
icon = "bluetooth-symbolic";
|
icon = "bluetooth-symbolic";
|
||||||
comment = "Enable or disable Bluetooth";
|
comment = "Enable or disable Bluetooth";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -92,7 +96,7 @@
|
|||||||
|
|
||||||
color-pick = {
|
color-pick = {
|
||||||
name = "Pick Color";
|
name = "Pick Color";
|
||||||
exec = "color-pick";
|
exec = "${scripts.color-pick}/bin/color-pick";
|
||||||
icon = "color-select-symbolic";
|
icon = "color-select-symbolic";
|
||||||
comment = "Pick a screen color to the clipboard";
|
comment = "Pick a screen color to the clipboard";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -102,7 +106,7 @@
|
|||||||
|
|
||||||
screenshot-region = {
|
screenshot-region = {
|
||||||
name = "Screenshot Region";
|
name = "Screenshot Region";
|
||||||
exec = "hyprshot -m region";
|
exec = "${pkgs.hyprshot}/bin/hyprshot -m region";
|
||||||
icon = "screenshot-recorded-symbolic";
|
icon = "screenshot-recorded-symbolic";
|
||||||
comment = "Capture a selected region";
|
comment = "Capture a selected region";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -112,7 +116,7 @@
|
|||||||
|
|
||||||
screenshot-window = {
|
screenshot-window = {
|
||||||
name = "Screenshot Window";
|
name = "Screenshot Window";
|
||||||
exec = "hyprshot -m window";
|
exec = "${pkgs.hyprshot}/bin/hyprshot -m window";
|
||||||
icon = "screenshot-recorded-symbolic";
|
icon = "screenshot-recorded-symbolic";
|
||||||
comment = "Capture the active window";
|
comment = "Capture the active window";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -122,7 +126,7 @@
|
|||||||
|
|
||||||
screenshot-screen = {
|
screenshot-screen = {
|
||||||
name = "Screenshot Screen";
|
name = "Screenshot Screen";
|
||||||
exec = "hyprshot -m output";
|
exec = "${pkgs.hyprshot}/bin/hyprshot -m output";
|
||||||
icon = "screenshot-recorded-symbolic";
|
icon = "screenshot-recorded-symbolic";
|
||||||
comment = "Capture the whole screen";
|
comment = "Capture the whole screen";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -132,7 +136,7 @@
|
|||||||
|
|
||||||
screenshot-edit = {
|
screenshot-edit = {
|
||||||
name = "Screenshot & Annotate";
|
name = "Screenshot & Annotate";
|
||||||
exec = "screenshot-edit";
|
exec = "${scripts.screenshot-edit}/bin/screenshot-edit";
|
||||||
icon = "edit-symbolic";
|
icon = "edit-symbolic";
|
||||||
comment = "Capture a region and open it in Satty";
|
comment = "Capture a region and open it in Satty";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -142,7 +146,7 @@
|
|||||||
|
|
||||||
record-toggle = {
|
record-toggle = {
|
||||||
name = "Screen Recording";
|
name = "Screen Recording";
|
||||||
exec = "record-toggle";
|
exec = "${scripts.record-toggle}/bin/record-toggle";
|
||||||
icon = "media-record-symbolic";
|
icon = "media-record-symbolic";
|
||||||
comment = "Start or stop screen recording";
|
comment = "Start or stop screen recording";
|
||||||
categories = ["Utility" "AudioVideo"];
|
categories = ["Utility" "AudioVideo"];
|
||||||
@@ -152,7 +156,7 @@
|
|||||||
|
|
||||||
power-cycle = {
|
power-cycle = {
|
||||||
name = "Power Profile";
|
name = "Power Profile";
|
||||||
exec = "power-cycle";
|
exec = "${scripts.power-cycle}/bin/power-cycle";
|
||||||
icon = "power-profile-balanced-symbolic";
|
icon = "power-profile-balanced-symbolic";
|
||||||
comment = "Cycle power-saver / balanced / performance";
|
comment = "Cycle power-saver / balanced / performance";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -162,7 +166,7 @@
|
|||||||
|
|
||||||
airplane-toggle = {
|
airplane-toggle = {
|
||||||
name = "Airplane Mode";
|
name = "Airplane Mode";
|
||||||
exec = "airplane-toggle";
|
exec = "${scripts.airplane-toggle}/bin/airplane-toggle";
|
||||||
icon = "airplane-mode-symbolic";
|
icon = "airplane-mode-symbolic";
|
||||||
comment = "Toggle Wi-Fi and Bluetooth together";
|
comment = "Toggle Wi-Fi and Bluetooth together";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -172,7 +176,7 @@
|
|||||||
|
|
||||||
clipboard-menu = {
|
clipboard-menu = {
|
||||||
name = "Clipboard History";
|
name = "Clipboard History";
|
||||||
exec = "clipboard-menu";
|
exec = "${scripts.clipboard-menu}/bin/clipboard-menu";
|
||||||
icon = "edit-paste-symbolic";
|
icon = "edit-paste-symbolic";
|
||||||
comment = "Pick a past clipboard entry";
|
comment = "Pick a past clipboard entry";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -180,9 +184,19 @@
|
|||||||
settings.Keywords = "clipboard;history;paste;cliphist;";
|
settings.Keywords = "clipboard;history;paste;cliphist;";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
clipboard-wipe = {
|
||||||
|
name = "Clear Clipboard History";
|
||||||
|
exec = "${pkgs.cliphist}/bin/cliphist wipe";
|
||||||
|
icon = "edit-clear-all-symbolic";
|
||||||
|
comment = "Delete all clipboard history entries";
|
||||||
|
categories = ["Utility"];
|
||||||
|
terminal = false;
|
||||||
|
settings.Keywords = "clipboard;history;clear;wipe;delete;cliphist;";
|
||||||
|
};
|
||||||
|
|
||||||
emoji-picker = {
|
emoji-picker = {
|
||||||
name = "Emoji Picker";
|
name = "Emoji Picker";
|
||||||
exec = "emoji-picker";
|
exec = "${scripts.emoji-picker}/bin/emoji-picker";
|
||||||
icon = "face-smile-symbolic";
|
icon = "face-smile-symbolic";
|
||||||
comment = "Pick an emoji and type it";
|
comment = "Pick an emoji and type it";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -190,9 +204,19 @@
|
|||||||
settings.Keywords = "emoji;emoticon;smiley;symbol;";
|
settings.Keywords = "emoji;emoticon;smiley;symbol;";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
icon-picker = {
|
||||||
|
name = "Icon Picker";
|
||||||
|
exec = "${scripts.icon-picker}/bin/icon-picker";
|
||||||
|
icon = "character-map-symbolic";
|
||||||
|
comment = "Pick a Nerd Font icon and type it";
|
||||||
|
categories = ["Utility"];
|
||||||
|
terminal = false;
|
||||||
|
settings.Keywords = "icon;nerdfont;glyph;symbol;";
|
||||||
|
};
|
||||||
|
|
||||||
caffeine-toggle = {
|
caffeine-toggle = {
|
||||||
name = "Keep Awake";
|
name = "Keep Awake";
|
||||||
exec = "caffeine-toggle";
|
exec = "${scripts.caffeine-toggle}/bin/caffeine-toggle";
|
||||||
icon = "my-caffeine-on-symbolic";
|
icon = "my-caffeine-on-symbolic";
|
||||||
comment = "Pause or resume idle locking and suspend";
|
comment = "Pause or resume idle locking and suspend";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -202,7 +226,7 @@
|
|||||||
|
|
||||||
logout = {
|
logout = {
|
||||||
name = "Logout";
|
name = "Logout";
|
||||||
exec = "hyprctl dispatch exit";
|
exec = "${pkgs.hyprland}/bin/hyprctl dispatch exit";
|
||||||
icon = "system-log-out-symbolic";
|
icon = "system-log-out-symbolic";
|
||||||
comment = "End the current session";
|
comment = "End the current session";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -211,7 +235,7 @@
|
|||||||
|
|
||||||
dnd-toggle = {
|
dnd-toggle = {
|
||||||
name = "Do Not Disturb";
|
name = "Do Not Disturb";
|
||||||
exec = "dnd-toggle";
|
exec = "${scripts.dnd-toggle}/bin/dnd-toggle";
|
||||||
icon = "notifications-disabled-symbolic";
|
icon = "notifications-disabled-symbolic";
|
||||||
comment = "Toggle Do Not Disturb";
|
comment = "Toggle Do Not Disturb";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -221,7 +245,7 @@
|
|||||||
|
|
||||||
vol-mute = {
|
vol-mute = {
|
||||||
name = "Mute Volume";
|
name = "Mute Volume";
|
||||||
exec = "vol-mute";
|
exec = "${scripts.vol-mute}/bin/vol-mute";
|
||||||
icon = "audio-volume-muted-symbolic";
|
icon = "audio-volume-muted-symbolic";
|
||||||
comment = "Toggle output mute";
|
comment = "Toggle output mute";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -230,7 +254,7 @@
|
|||||||
|
|
||||||
vol-up = {
|
vol-up = {
|
||||||
name = "Volume Up";
|
name = "Volume Up";
|
||||||
exec = "vol-up";
|
exec = "${scripts.vol-up}/bin/vol-up";
|
||||||
icon = "audio-volume-high-symbolic";
|
icon = "audio-volume-high-symbolic";
|
||||||
comment = "Raise the volume by 5%";
|
comment = "Raise the volume by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -239,7 +263,7 @@
|
|||||||
|
|
||||||
vol-down = {
|
vol-down = {
|
||||||
name = "Volume Down";
|
name = "Volume Down";
|
||||||
exec = "vol-down";
|
exec = "${scripts.vol-down}/bin/vol-down";
|
||||||
icon = "audio-volume-low-symbolic";
|
icon = "audio-volume-low-symbolic";
|
||||||
comment = "Lower the volume by 5%";
|
comment = "Lower the volume by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -248,7 +272,7 @@
|
|||||||
|
|
||||||
bright-up = {
|
bright-up = {
|
||||||
name = "Brightness Up";
|
name = "Brightness Up";
|
||||||
exec = "bright-up";
|
exec = "${scripts.bright-up}/bin/bright-up";
|
||||||
icon = "display-brightness-high-symbolic";
|
icon = "display-brightness-high-symbolic";
|
||||||
comment = "Raise the brightness by 5%";
|
comment = "Raise the brightness by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -257,7 +281,7 @@
|
|||||||
|
|
||||||
bright-down = {
|
bright-down = {
|
||||||
name = "Brightness Down";
|
name = "Brightness Down";
|
||||||
exec = "bright-down";
|
exec = "${scripts.bright-down}/bin/bright-down";
|
||||||
icon = "display-brightness-low-symbolic";
|
icon = "display-brightness-low-symbolic";
|
||||||
comment = "Lower the brightness by 5%";
|
comment = "Lower the brightness by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -266,7 +290,7 @@
|
|||||||
|
|
||||||
output-cycle = {
|
output-cycle = {
|
||||||
name = "Cycle Audio Output";
|
name = "Cycle Audio Output";
|
||||||
exec = "output-cycle";
|
exec = "${scripts.output-cycle}/bin/output-cycle";
|
||||||
icon = "audio-speakers-symbolic";
|
icon = "audio-speakers-symbolic";
|
||||||
comment = "Switch to the next audio output";
|
comment = "Switch to the next audio output";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -276,7 +300,7 @@
|
|||||||
|
|
||||||
input-cycle = {
|
input-cycle = {
|
||||||
name = "Cycle Audio Input";
|
name = "Cycle Audio Input";
|
||||||
exec = "input-cycle";
|
exec = "${scripts.input-cycle}/bin/input-cycle";
|
||||||
icon = "audio-input-microphone-symbolic";
|
icon = "audio-input-microphone-symbolic";
|
||||||
comment = "Switch to the next audio input";
|
comment = "Switch to the next audio input";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -286,12 +310,22 @@
|
|||||||
|
|
||||||
spotatui = {
|
spotatui = {
|
||||||
name = "Spotify";
|
name = "Spotify";
|
||||||
exec = "ghostty -e spotatui";
|
exec = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.spotatui}/bin/spotatui";
|
||||||
icon = "spotify";
|
icon = "spotify";
|
||||||
comment = "Control Spotify from the terminal";
|
comment = "Control Spotify from the terminal";
|
||||||
categories = ["Audio" "Music"];
|
categories = ["Audio" "Music"];
|
||||||
terminal = false;
|
terminal = false;
|
||||||
settings.Keywords = "spotify;spotatui;music;";
|
settings.Keywords = "spotify;spotatui;music;";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
settuings = {
|
||||||
|
name = "Settings";
|
||||||
|
exec = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings";
|
||||||
|
icon = "preferences-system-symbolic";
|
||||||
|
comment = "Terminal based settings (wifi, bluetooth, audio, ...)";
|
||||||
|
categories = ["Settings"];
|
||||||
|
terminal = false;
|
||||||
|
settings.Keywords = "settings;wifi;bluetooth;audio;settuings;";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,5 +4,6 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
notify = true;
|
notify = true;
|
||||||
automount = true;
|
automount = true;
|
||||||
|
tray = "never";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,103 @@
|
|||||||
|
# battery-monitor: low-battery alerts for waybar/swaync.
|
||||||
|
# Runs main once (triggered by the battery-monitor systemd timer).
|
||||||
|
|
||||||
|
POWER_SUPPLY_DIR="${POWER_SUPPLY_DIR:-/sys/class/power_supply}"
|
||||||
|
STATE_FILE="${BATTERY_STATE_FILE:-/tmp/battery-alert-state}"
|
||||||
|
CRIT_ID_FILE="${BATTERY_CRIT_ID_FILE:-/tmp/battery-crit-id}"
|
||||||
|
|
||||||
|
WARN_THRESHOLD=10
|
||||||
|
CRIT_THRESHOLD=5
|
||||||
|
|
||||||
|
# Pure decision. Prints "<action>:<newstate>".
|
||||||
|
# action ∈ noop | osd_warn | crit_show | crit_clear ; state ∈ none | warn10 | crit5
|
||||||
|
battery_decide() {
|
||||||
|
status=$1
|
||||||
|
cap=$2
|
||||||
|
prev=$3
|
||||||
|
|
||||||
|
if [ "$status" = "Discharging" ]; then
|
||||||
|
if [ "$cap" -le "$CRIT_THRESHOLD" ]; then
|
||||||
|
echo "crit_show:crit5"
|
||||||
|
elif [ "$cap" -le "$WARN_THRESHOLD" ]; then
|
||||||
|
if [ "$prev" = "crit5" ]; then
|
||||||
|
echo "crit_clear:warn10"
|
||||||
|
elif [ "$prev" = "warn10" ]; then
|
||||||
|
echo "noop:warn10"
|
||||||
|
else
|
||||||
|
echo "osd_warn:warn10"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$prev" = "crit5" ]; then
|
||||||
|
echo "crit_clear:none"
|
||||||
|
else
|
||||||
|
echo "noop:none"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$prev" = "crit5" ]; then
|
||||||
|
echo "crit_clear:none"
|
||||||
|
else
|
||||||
|
echo "noop:none"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# First real battery (type == Battery, with status + capacity).
|
||||||
|
resolve_battery() {
|
||||||
|
for d in "$POWER_SUPPLY_DIR"/*; do
|
||||||
|
[ -r "$d/type" ] || continue
|
||||||
|
[ "$(cat "$d/type")" = "Battery" ] || continue
|
||||||
|
[ -r "$d/status" ] && [ -r "$d/capacity" ] || continue
|
||||||
|
printf '%s' "$d"
|
||||||
|
return 0
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
show_warn_osd() {
|
||||||
|
waybar-osd " Low battery · $1%"
|
||||||
|
}
|
||||||
|
|
||||||
|
show_crit_notification() {
|
||||||
|
cap=$1
|
||||||
|
id=$(cat "$CRIT_ID_FILE" 2>/dev/null || echo 0)
|
||||||
|
newid=$(notify-send --print-id --replace-id="$id" \
|
||||||
|
--urgency=critical --expire-time=0 \
|
||||||
|
" Critical battery" "Battery at $cap%: plug in the charger")
|
||||||
|
printf '%s' "$newid" >"$CRIT_ID_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
clear_crit_notification() {
|
||||||
|
id=$(cat "$CRIT_ID_FILE" 2>/dev/null || echo 0)
|
||||||
|
if [ "$id" != "0" ]; then
|
||||||
|
gdbus call --session \
|
||||||
|
--dest org.freedesktop.Notifications \
|
||||||
|
--object-path /org/freedesktop/Notifications \
|
||||||
|
--method org.freedesktop.Notifications.CloseNotification "$id" \
|
||||||
|
>/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
rm -f "$CRIT_ID_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
dir=$(resolve_battery) || exit 0
|
||||||
|
|
||||||
|
status=$(cat "$dir/status")
|
||||||
|
cap=$(cat "$dir/capacity")
|
||||||
|
prev=$(cat "$STATE_FILE" 2>/dev/null || echo none)
|
||||||
|
|
||||||
|
result=$(battery_decide "$status" "$cap" "$prev")
|
||||||
|
action=${result%%:*}
|
||||||
|
newstate=${result##*:}
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
osd_warn) show_warn_osd "$cap" ;;
|
||||||
|
crit_show) show_crit_notification "$cap" ;;
|
||||||
|
crit_clear) clear_crit_notification ;;
|
||||||
|
noop) : ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
printf '%s' "$newstate" >"$STATE_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
@@ -1,13 +1,23 @@
|
|||||||
{pkgs, ...}: let
|
{
|
||||||
scripts = import ./scripts.nix {inherit pkgs;};
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
scripts = import ./scripts.nix {inherit pkgs config;};
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./settings.nix
|
./settings.nix
|
||||||
./style.nix
|
./style.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
_module.args.scripts = scripts;
|
||||||
|
_module.args.osdPath = scripts.osdPath;
|
||||||
_module.args.networkScript = scripts.networkScript;
|
_module.args.networkScript = scripts.networkScript;
|
||||||
_module.args.bluetoothScript = scripts.bluetoothScript;
|
_module.args.bluetoothScript = scripts.bluetoothScript;
|
||||||
|
_module.args.volMuteScript = scripts.vol-mute;
|
||||||
|
_module.args.caffeineToggleScript = scripts.caffeine-toggle;
|
||||||
|
_module.args.osdStatusScript = scripts.waybar-osd-status;
|
||||||
|
_module.args.nightshiftToggleScript = scripts.nightshift-toggle;
|
||||||
|
|
||||||
programs.waybar.enable = true;
|
programs.waybar.enable = true;
|
||||||
stylix.targets.waybar.enable = false;
|
stylix.targets.waybar.enable = false;
|
||||||
@@ -17,10 +27,33 @@ in {
|
|||||||
playerctl
|
playerctl
|
||||||
pavucontrol
|
pavucontrol
|
||||||
blueman
|
blueman
|
||||||
iw
|
|
||||||
hyprsunset
|
hyprsunset
|
||||||
]
|
]
|
||||||
++ (with scripts; [vol-up vol-down vol-mute mic-mute bright-up bright-down nightshift-toggle focus-toggle waybar-toggle wifi-toggle bluetooth-toggle dnd-toggle output-cycle input-cycle color-pick screenshot-edit record-toggle power-cycle airplane-toggle clipboard-menu emoji-picker caffeine-toggle mic-status]);
|
++ (with scripts; [waybar-osd waybar-osd-status battery-monitor vol-up vol-down vol-mute mic-mute bright-up bright-down nightshift-toggle focus-toggle waybar-toggle wifi-toggle bluetooth-toggle dnd-toggle output-cycle input-cycle color-pick screenshot-edit record-toggle power-cycle airplane-toggle clipboard-menu emoji-picker caffeine-toggle mic-status]);
|
||||||
|
|
||||||
|
# Poll battery level every 30s; battery-monitor no-ops when no battery exists.
|
||||||
|
systemd.user.services.battery-monitor = {
|
||||||
|
Unit.Description = "Low-battery OSD and critical notification monitor";
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${scripts.battery-monitor}/bin/battery-monitor";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.timers.battery-monitor = {
|
||||||
|
Unit.Description = "Poll battery level for low-battery alerts";
|
||||||
|
Timer = {
|
||||||
|
OnBootSec = "1min";
|
||||||
|
OnUnitActiveSec = "30s";
|
||||||
|
};
|
||||||
|
Install.WantedBy = ["timers.target"];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Prevent blueman-applet from auto-starting via XDG autostart (we use custom/bluetooth module instead)
|
||||||
|
xdg.configFile."autostart/blueman.desktop".text = ''
|
||||||
|
[Desktop Entry]
|
||||||
|
Hidden=true
|
||||||
|
'';
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
"waybar"
|
"waybar"
|
||||||
|
|||||||
@@ -1,10 +1,40 @@
|
|||||||
{pkgs}: let
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
}: let
|
||||||
|
waybar-osd = pkgs.writeShellApplication {
|
||||||
|
name = "waybar-osd";
|
||||||
|
runtimeInputs = with pkgs; [procps coreutils];
|
||||||
|
text = ''
|
||||||
|
printf '%s' "$1" > "$XDG_RUNTIME_DIR/waybar-osd"
|
||||||
|
pkill -f -RTMIN+8 '^waybar$' 2>/dev/null || true
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
waybar-osd-status = pkgs.writeShellApplication {
|
||||||
|
name = "waybar-osd-status";
|
||||||
|
runtimeInputs = with pkgs; [coreutils];
|
||||||
|
text = ''
|
||||||
|
file="$XDG_RUNTIME_DIR/waybar-osd"
|
||||||
|
[ -f "$file" ] || exit 1
|
||||||
|
mtime=$(stat -c %Y "$file" 2>/dev/null) || exit 1
|
||||||
|
age=$(( $(date +%s) - mtime ))
|
||||||
|
if [ "$age" -ge 3 ]; then
|
||||||
|
rm -f "$file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# battery-monitor: low-battery alerts, run by the systemd user timer.
|
||||||
|
battery-monitor = pkgs.writeShellApplication {
|
||||||
|
name = "battery-monitor";
|
||||||
|
runtimeInputs = with pkgs; [waybar-osd libnotify glib coreutils];
|
||||||
|
text = builtins.readFile ./battery-monitor.sh;
|
||||||
|
};
|
||||||
|
|
||||||
updateOsd = ''
|
updateOsd = ''
|
||||||
[ -f /tmp/waybar-osd-pid ] && kill "$(cat /tmp/waybar-osd-pid)" 2>/dev/null
|
${waybar-osd}/bin/waybar-osd "$OSD_TEXT"
|
||||||
printf '%s' "$OSD_TEXT" > /tmp/waybar-osd
|
|
||||||
pkill -RTMIN+8 waybar 2>/dev/null
|
|
||||||
( sleep 2.5; rm -f /tmp/waybar-osd /tmp/waybar-osd-pid; pkill -RTMIN+8 waybar 2>/dev/null ) &
|
|
||||||
printf '%s' "$!" > /tmp/waybar-osd-pid
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
volGetText = ''
|
volGetText = ''
|
||||||
@@ -45,11 +75,25 @@
|
|||||||
# tofi in vertical dmenu mode: the global config is a 36px-tall horizontal
|
# tofi in vertical dmenu mode: the global config is a 36px-tall horizontal
|
||||||
# launcher, unusable for a list, so override the geometry here.
|
# launcher, unusable for a list, so override the geometry here.
|
||||||
tofiMenu = "${pkgs.tofi}/bin/tofi --horizontal false --anchor center --width 700 --height 500 --margin-top 0 --margin-left 0 --margin-right 0 --num-results 10";
|
tofiMenu = "${pkgs.tofi}/bin/tofi --horizontal false --anchor center --width 700 --height 500 --margin-top 0 --margin-left 0 --margin-right 0 --num-results 10";
|
||||||
|
|
||||||
|
# Name -> glyph table maintained by the nerd-fonts project itself, pinned to
|
||||||
|
# the same release as the nerd-fonts packages in nixos/fonts.nix.
|
||||||
|
nerdFontGlyphnames = pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/v3.4.0/glyphnames.json";
|
||||||
|
sha256 = "sha256-4tENI/W/8L1vBnbpsB2XifzcZW3ntJiilVwncW6kQ5w=";
|
||||||
|
};
|
||||||
|
nerdFontIconList = pkgs.runCommand "nerd-font-icons.txt" {nativeBuildInputs = [pkgs.jq];} ''
|
||||||
|
jq -r 'to_entries[] | select(.key != "METADATA") | "\(.value.char) \(.key)"' \
|
||||||
|
${nerdFontGlyphnames} > "$out"
|
||||||
|
'';
|
||||||
|
osdPath = "$XDG_RUNTIME_DIR/waybar-osd";
|
||||||
in {
|
in {
|
||||||
|
inherit waybar-osd waybar-osd-status battery-monitor osdPath;
|
||||||
|
|
||||||
bluetoothScript = pkgs.writeShellScript "waybar-bluetooth" ''
|
bluetoothScript = pkgs.writeShellScript "waybar-bluetooth" ''
|
||||||
jq=${pkgs.jq}/bin/jq
|
jq=${pkgs.jq}/bin/jq
|
||||||
nl=$'\n'
|
nl=$'\n'
|
||||||
# bluetoothctl bloque sans contrôleur par défaut → toujours borné par timeout.
|
# bluetoothctl hangs without a controller by default → always bounded by timeout.
|
||||||
bt() { timeout 3 ${pkgs.bluez}/bin/bluetoothctl "$@" 2>/dev/null; }
|
bt() { timeout 3 ${pkgs.bluez}/bin/bluetoothctl "$@" 2>/dev/null; }
|
||||||
|
|
||||||
powered=$(bt show | awk '/Powered:/ { print $2; exit }')
|
powered=$(bt show | awk '/Powered:/ { print $2; exit }')
|
||||||
@@ -128,7 +172,6 @@ in {
|
|||||||
add_tip " VPN · $vpn"
|
add_tip " VPN · $vpn"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Rien ────────────────────────────────────────────────────
|
|
||||||
if [ -z "$text" ]; then
|
if [ -z "$text" ]; then
|
||||||
text=""
|
text=""
|
||||||
tip="Disconnected"
|
tip="Disconnected"
|
||||||
@@ -192,19 +235,19 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
wifi-toggle = pkgs.writeShellScriptBin "wifi-toggle" ''
|
wifi-toggle = pkgs.writeShellScriptBin "wifi-toggle" ''
|
||||||
if nmcli radio wifi | grep -q enabled; then
|
if ${pkgs.networkmanager}/bin/nmcli radio wifi | grep -q enabled; then
|
||||||
nmcli radio wifi off
|
${pkgs.networkmanager}/bin/nmcli radio wifi off
|
||||||
else
|
else
|
||||||
nmcli radio wifi on
|
${pkgs.networkmanager}/bin/nmcli radio wifi on
|
||||||
fi
|
fi
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
bluetooth-toggle = pkgs.writeShellScriptBin "bluetooth-toggle" ''
|
bluetooth-toggle = pkgs.writeShellScriptBin "bluetooth-toggle" ''
|
||||||
if bluetoothctl show | grep -q "Powered: yes"; then
|
if ${pkgs.bluez}/bin/bluetoothctl show | grep -q "Powered: yes"; then
|
||||||
bluetoothctl power off
|
${pkgs.bluez}/bin/bluetoothctl power off
|
||||||
else
|
else
|
||||||
bluetoothctl power on
|
${pkgs.bluez}/bin/bluetoothctl power on
|
||||||
fi
|
fi
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
'';
|
'';
|
||||||
@@ -218,7 +261,7 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
nightshift-toggle = pkgs.writeShellScriptBin "nightshift-toggle" ''
|
nightshift-toggle = pkgs.writeShellScriptBin "nightshift-toggle" ''
|
||||||
if pidof "hyprsunset" > /dev/null; then
|
if ${pkgs.procps}/bin/pidof "hyprsunset" > /dev/null; then
|
||||||
pkill hyprsunset
|
pkill hyprsunset
|
||||||
OSD_TEXT=" Night Shift Off"
|
OSD_TEXT=" Night Shift Off"
|
||||||
else
|
else
|
||||||
@@ -229,23 +272,23 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
focus-toggle = pkgs.writeShellScriptBin "focus-toggle" ''
|
focus-toggle = pkgs.writeShellScriptBin "focus-toggle" ''
|
||||||
if test -f /tmp/hypr-focus-mode; then
|
if test -f "$XDG_RUNTIME_DIR/hypr-focus-mode"; then
|
||||||
rm /tmp/hypr-focus-mode
|
rm "$XDG_RUNTIME_DIR/hypr-focus-mode"
|
||||||
OSD_TEXT=" Focus Off"
|
OSD_TEXT=" Focus Off"
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
hyprctl reload
|
${pkgs.hyprland}/bin/hyprctl reload
|
||||||
hyprctl dispatch exec waybar
|
${pkgs.hyprland}/bin/hyprctl dispatch exec waybar
|
||||||
else
|
else
|
||||||
touch /tmp/hypr-focus-mode
|
touch "$XDG_RUNTIME_DIR/hypr-focus-mode"
|
||||||
OSD_TEXT=" Focus On"
|
OSD_TEXT=" Focus On"
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
pkill waybar || true
|
${pkgs.procps}/bin/pkill waybar || true
|
||||||
hyprctl keyword animations:enabled false
|
${pkgs.hyprland}/bin/hyprctl keyword animations:enabled false
|
||||||
hyprctl keyword general:gaps_in 0
|
${pkgs.hyprland}/bin/hyprctl keyword general:gaps_in 0
|
||||||
hyprctl keyword general:gaps_out 0
|
${pkgs.hyprland}/bin/hyprctl keyword general:gaps_out 0
|
||||||
hyprctl keyword decoration:active_opacity 1
|
${pkgs.hyprland}/bin/hyprctl keyword decoration:active_opacity 1
|
||||||
hyprctl keyword decoration:inactive_opacity 1
|
${pkgs.hyprland}/bin/hyprctl keyword decoration:inactive_opacity 1
|
||||||
hyprctl keyword decoration:rounding 0
|
${pkgs.hyprland}/bin/hyprctl keyword decoration:rounding 0
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@@ -331,7 +374,7 @@ in {
|
|||||||
|
|
||||||
record-toggle = pkgs.writeShellScriptBin "record-toggle" ''
|
record-toggle = pkgs.writeShellScriptBin "record-toggle" ''
|
||||||
if pgrep -x wf-recorder >/dev/null; then
|
if pgrep -x wf-recorder >/dev/null; then
|
||||||
# -INT laisse wf-recorder finaliser le fichier proprement.
|
# -INT lets wf-recorder finalize the file cleanly.
|
||||||
pkill -INT -x wf-recorder
|
pkill -INT -x wf-recorder
|
||||||
OSD_TEXT=" Recording saved"
|
OSD_TEXT=" Recording saved"
|
||||||
else
|
else
|
||||||
@@ -376,8 +419,10 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
clipboard-menu = pkgs.writeShellScriptBin "clipboard-menu" ''
|
clipboard-menu = pkgs.writeShellScriptBin "clipboard-menu" ''
|
||||||
${pkgs.cliphist}/bin/cliphist list \
|
list=$(${pkgs.cliphist}/bin/cliphist list)
|
||||||
| ${tofiMenu} --prompt-text "Clipboard: " \
|
selected=$(printf '%s\n' "$list" | cut -f2- | ${tofiMenu} --prompt-text "Clipboard: ")
|
||||||
|
[ -n "$selected" ] && printf '%s\n' "$list" \
|
||||||
|
| awk -F'\t' -v s="$selected" '$2 == s {print; exit}' \
|
||||||
| ${pkgs.cliphist}/bin/cliphist decode \
|
| ${pkgs.cliphist}/bin/cliphist decode \
|
||||||
| ${pkgs.wl-clipboard}/bin/wl-copy
|
| ${pkgs.wl-clipboard}/bin/wl-copy
|
||||||
'';
|
'';
|
||||||
@@ -385,10 +430,18 @@ in {
|
|||||||
emoji-picker = pkgs.writeShellScriptBin "emoji-picker" ''
|
emoji-picker = pkgs.writeShellScriptBin "emoji-picker" ''
|
||||||
export PATH="${pkgs.wtype}/bin:${pkgs.wl-clipboard}/bin:$PATH"
|
export PATH="${pkgs.wtype}/bin:${pkgs.wl-clipboard}/bin:$PATH"
|
||||||
export BEMOJI_PICKER_CMD="${tofiMenu} --prompt-text 'emoji: '"
|
export BEMOJI_PICKER_CMD="${tofiMenu} --prompt-text 'emoji: '"
|
||||||
# -t tape l'emoji (wtype), -c le copie aussi.
|
# -t types the emoji (wtype), -c also copies it.
|
||||||
exec ${pkgs.bemoji}/bin/bemoji -t -c
|
exec ${pkgs.bemoji}/bin/bemoji -t -c
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
icon-picker = pkgs.writeShellScriptBin "icon-picker" ''
|
||||||
|
selected=$(${tofiMenu} --font "${config.stylix.fonts.monospace.name}" --prompt-text 'icon: ' < ${nerdFontIconList})
|
||||||
|
[ -z "$selected" ] || icon=$(printf '%s\n' "$selected" | awk '{print $1}')
|
||||||
|
[ -n "''${icon:-}" ] || exit 0
|
||||||
|
${pkgs.wtype}/bin/wtype "$icon"
|
||||||
|
printf '%s' "$icon" | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||||
|
'';
|
||||||
|
|
||||||
caffeine-toggle = pkgs.writeShellScriptBin "caffeine-toggle" ''
|
caffeine-toggle = pkgs.writeShellScriptBin "caffeine-toggle" ''
|
||||||
# Pause hypridle (stay awake) or resume it.
|
# Pause hypridle (stay awake) or resume it.
|
||||||
if systemctl --user is-active --quiet hypridle; then
|
if systemctl --user is-active --quiet hypridle; then
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
|
osdPath,
|
||||||
networkScript,
|
networkScript,
|
||||||
bluetoothScript,
|
bluetoothScript,
|
||||||
|
caffeineToggleScript,
|
||||||
|
osdStatusScript,
|
||||||
|
nightshiftToggleScript,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
gaps-out = config.theme.gaps-out;
|
gaps-out = config.theme.gaps-out;
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
hasBattery = config.var.hasBattery or false;
|
|
||||||
in {
|
in {
|
||||||
programs.waybar.settings = [
|
programs.waybar.settings = [
|
||||||
{
|
{
|
||||||
@@ -16,9 +18,7 @@ in {
|
|||||||
position = "top";
|
position = "top";
|
||||||
height = config.theme.bar-height;
|
height = config.theme.bar-height;
|
||||||
margin = "${toString gaps-out} ${toString gaps-out} 0";
|
margin = "${toString gaps-out} ${toString gaps-out} 0";
|
||||||
modules-center =
|
modules-center = ["custom/osd" "custom/osd-sep" "clock" "tray" "hyprland/workspaces" "custom/network" "custom/bluetooth" "battery" "group/drawer"];
|
||||||
["custom/osd" "custom/osd-sep" "clock" "tray" "hyprland/workspaces" "custom/network" "custom/bluetooth"]
|
|
||||||
++ lib.optional hasBattery "battery";
|
|
||||||
|
|
||||||
# ── Modules ─────────────────────────────────────────────────────────
|
# ── Modules ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -27,52 +27,68 @@ in {
|
|||||||
all-outputs = true;
|
all-outputs = true;
|
||||||
move-to-monitor = true;
|
move-to-monitor = true;
|
||||||
ignore-workspaces = ["[5-9]" "[1-9][0-9]+"];
|
ignore-workspaces = ["[5-9]" "[1-9][0-9]+"];
|
||||||
on-scroll-down = "hyprctl dispatch workspace e+1";
|
on-scroll-down = "${pkgs.hyprland}/bin/hyprctl dispatch workspace e+1";
|
||||||
on-scroll-up = "hyprctl dispatch workspace e-1";
|
on-scroll-up = "${pkgs.hyprland}/bin/hyprctl dispatch workspace e-1";
|
||||||
persistent-workspaces."*" = [1 2 3 4];
|
persistent-workspaces."*" = [1 2 3 4];
|
||||||
cursor = true;
|
cursor = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
battery = {
|
battery = {
|
||||||
bat = "BAT1";
|
|
||||||
interval = 20;
|
interval = 20;
|
||||||
full-at = 100;
|
full-at = 100;
|
||||||
tooltip = true;
|
tooltip = true;
|
||||||
format-full = "";
|
|
||||||
format = "{icon} ";
|
format = "{icon} ";
|
||||||
format-charging = " {icon} ";
|
format-charging = " {icon} ";
|
||||||
format-icons = ["" "" "" "" ""];
|
format-icons = ["" "" "" "" ""];
|
||||||
tooltip-format = "{capacity}% · {time}";
|
tooltip-format = "{capacity}% · {time}";
|
||||||
tooltip-format-full = "Full\n{capacity}%";
|
tooltip-format-full = "Full\n{capacity}%";
|
||||||
tooltip-format-charging = "Charging\n{capacity}% · {time}";
|
tooltip-format-charging = "Charging\n{capacity}% · {time}";
|
||||||
|
on-click = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings --page power";
|
||||||
states = {
|
states = {
|
||||||
warning = 30;
|
warning = 30;
|
||||||
critical = 15;
|
critical = 15;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"custom/caffeine" = {
|
||||||
|
exec = "${pkgs.coreutils}/bin/printf ''";
|
||||||
|
exec-if = "! systemctl --user is-active --quiet hypridle";
|
||||||
|
format = "{}";
|
||||||
|
interval = 5;
|
||||||
|
on-click = "${caffeineToggleScript}/bin/caffeine-toggle";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/nightshift" = {
|
||||||
|
exec = "${pkgs.coreutils}/bin/printf ''";
|
||||||
|
exec-if = "${pkgs.procps}/bin/pgrep -x hyprsunset";
|
||||||
|
format = "{}";
|
||||||
|
interval = 5;
|
||||||
|
on-click = "${nightshiftToggleScript}/bin/nightshift-toggle";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
"custom/bluetooth" = {
|
"custom/bluetooth" = {
|
||||||
exec = "${bluetoothScript}";
|
exec = "${bluetoothScript}";
|
||||||
exec-if = "${pkgs.bluez}/bin/bluetoothctl list 2>/dev/null | grep -q Controller";
|
exec-if = "${pkgs.bluez}/bin/bluetoothctl list 2>/dev/null | grep -q Controller";
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
interval = 5;
|
interval = 5;
|
||||||
on-click-right = "blueman-manager &";
|
on-click = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings --page bluetooth";
|
||||||
on-click = "bluetooth-toggle";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom/osd" = {
|
"custom/osd" = {
|
||||||
exec = "cat /tmp/waybar-osd";
|
exec = "cat ${osdPath}";
|
||||||
exec-if = "test -f /tmp/waybar-osd";
|
exec-if = "${osdStatusScript}/bin/waybar-osd-status";
|
||||||
signal = 8;
|
signal = 8;
|
||||||
interval = "once";
|
interval = 1;
|
||||||
format = "{}";
|
format = "{}";
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom/osd-sep" = {
|
"custom/osd-sep" = {
|
||||||
exec = "echo '|'";
|
exec = "echo '|'";
|
||||||
exec-if = "test -f /tmp/waybar-osd";
|
exec-if = "${osdStatusScript}/bin/waybar-osd-status";
|
||||||
signal = 8;
|
signal = 8;
|
||||||
interval = "once";
|
interval = 1;
|
||||||
format = "{}";
|
format = "{}";
|
||||||
tooltip = false;
|
tooltip = false;
|
||||||
};
|
};
|
||||||
@@ -83,8 +99,7 @@ in {
|
|||||||
tooltip-format = "{volume}%";
|
tooltip-format = "{volume}%";
|
||||||
format-muted = "<span size='12pt'></span>";
|
format-muted = "<span size='12pt'></span>";
|
||||||
scroll-step = 2;
|
scroll-step = 2;
|
||||||
on-click = "vol-mute";
|
on-click = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings --page audio";
|
||||||
on-click-right = "pavucontrol -t 4 &";
|
|
||||||
format-icons = {
|
format-icons = {
|
||||||
headphone = "";
|
headphone = "";
|
||||||
hands-free = "";
|
hands-free = "";
|
||||||
@@ -110,7 +125,7 @@ in {
|
|||||||
exec = "${networkScript}";
|
exec = "${networkScript}";
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
interval = 10;
|
interval = 10;
|
||||||
on-click-right = "ghostty -e wifitui &";
|
on-click = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings --page network";
|
||||||
};
|
};
|
||||||
|
|
||||||
tray = {
|
tray = {
|
||||||
@@ -135,10 +150,14 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom/arrow-left" = {
|
"group/drawer" = {
|
||||||
format = " ";
|
orientation = "horizontal";
|
||||||
tooltip = false;
|
drawer = {
|
||||||
cursor = true;
|
transition-duration = 300;
|
||||||
|
children-class = "drawer-child";
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = ["custom/arrow-right" "pulseaudio" "custom/nightshift" "custom/caffeine"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom/arrow-right" = {
|
"custom/arrow-right" = {
|
||||||
|
|||||||
@@ -45,10 +45,22 @@ in {
|
|||||||
#workspaces,
|
#workspaces,
|
||||||
#custom-osd,
|
#custom-osd,
|
||||||
#custom-network,
|
#custom-network,
|
||||||
#custom-bluetooth {
|
#custom-bluetooth,
|
||||||
|
#custom-caffeine,
|
||||||
|
#custom-nightshift,
|
||||||
|
#pulseaudio {
|
||||||
padding: 1px ${module-padding};
|
padding: 1px ${module-padding};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#custom-arrow-right {
|
||||||
|
color: ${fg};
|
||||||
|
padding: 1px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#group-drawer {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#custom-osd-sep {
|
#custom-osd-sep {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: ${inactive};
|
color: ${inactive};
|
||||||
@@ -114,6 +126,11 @@ in {
|
|||||||
color: ${inactive};
|
color: ${inactive};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#custom-caffeine,
|
||||||
|
#custom-nightshift {
|
||||||
|
color: ${yellow};
|
||||||
|
}
|
||||||
|
|
||||||
#custom-osd {
|
#custom-osd {
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: ${fg};
|
color: ${fg};
|
||||||
|
|||||||
@@ -9,50 +9,29 @@
|
|||||||
../../nixos/nix.nix
|
../../nixos/nix.nix
|
||||||
../../nixos/systemd-boot.nix
|
../../nixos/systemd-boot.nix
|
||||||
../../nixos/tuigreet.nix
|
../../nixos/tuigreet.nix
|
||||||
|
../../nixos/autologin.nix # Skip first TUIGreet login, use LUKS password to unlock the keyring
|
||||||
../../nixos/users.nix
|
../../nixos/users.nix
|
||||||
../../nixos/utils.nix
|
../../nixos/utils.nix
|
||||||
../../nixos/hyprland.nix
|
../../nixos/hyprland.nix
|
||||||
../../nixos/usbguard.nix
|
../../nixos/steam.nix
|
||||||
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
||||||
|
|
||||||
../../nixos/omen.nix # CHANGEME: For my laptop only, remove this (OMEN 16)
|
# CHANGEME: You should probably remove those things:
|
||||||
|
./wireguard.nix
|
||||||
|
./persistence.nix # impermanence: what to keep once "/" is wiped on boot
|
||||||
|
./usbguard.nix
|
||||||
|
./disko.nix
|
||||||
|
./secrets
|
||||||
|
|
||||||
# You should let those lines as is
|
# You should let those lines as is
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./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;
|
||||||
|
|
||||||
|
users.users.${config.var.username}.hashedPassword = "$y$j9T$A7gH534UczuBxulj9IfEu1$ImRy3lpYpemRWNVIkA7efKPWXneFiqhZnEF1aMkWcD8"; # CHANGEME: This is my password
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
system.stateVersion = "26.05";
|
system.stateVersion = "26.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
nodev = {
|
||||||
|
"/" = {
|
||||||
|
fsType = "tmpfs";
|
||||||
|
mountOptions = [
|
||||||
|
"defaults"
|
||||||
|
"size=12G"
|
||||||
|
"mode=755"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
disk = {
|
||||||
|
boot = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-uuid/5251-9B85";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = ["fmask=0077" "dmask=0077"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-uuid/e3110976-78ee-4868-94c4-a3c052aee359";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
bypassWorkqueues = true;
|
||||||
|
};
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = ["-f"];
|
||||||
|
subvolumes = {
|
||||||
|
"/nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = ["compress=zstd" "noatime"];
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
mountpoint = "/persist";
|
||||||
|
mountOptions = ["compress=zstd" "noatime"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/persist".neededForBoot = true;
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
pkgs-unstable,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
@@ -9,13 +10,17 @@ nixpkgs.lib.nixosSystem {
|
|||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
];
|
];
|
||||||
_module.args = {inherit inputs;};
|
_module.args = {inherit inputs pkgs-unstable;};
|
||||||
}
|
}
|
||||||
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
|
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.stylix.nixosModules.stylix
|
inputs.stylix.nixosModules.stylix
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.nix-index-database.nixosModules.default
|
inputs.nix-index-database.nixosModules.default
|
||||||
inputs.helium-browser.nixosModules.default
|
inputs.helium-browser.nixosModules.default
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
./disko.nix
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Hardware detection - filesystems are managed by disko.nix
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
@@ -11,42 +9,13 @@
|
|||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usb_storage" "usbhid" "uas" "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 = [];
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/6320d3c6-0231-45ec-817a-c6f0e39aab73";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/5251-9B85";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [
|
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp7s0f4u1u4.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlo1.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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
inputs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
@@ -8,9 +9,7 @@
|
|||||||
|
|
||||||
## GUI
|
## GUI
|
||||||
../../home/programs/gui/proton
|
../../home/programs/gui/proton
|
||||||
../../home/programs/gui/proton/auto-start-vpn.nix
|
|
||||||
../../home/programs/gui/helium
|
../../home/programs/gui/helium
|
||||||
../../home/programs/gui/thunar
|
|
||||||
../../home/programs/gui/pkgs.nix
|
../../home/programs/gui/pkgs.nix
|
||||||
|
|
||||||
## TUI
|
## TUI
|
||||||
@@ -24,7 +23,8 @@
|
|||||||
../../home/programs/tui/nixy
|
../../home/programs/tui/nixy
|
||||||
../../home/programs/tui/nix-utils
|
../../home/programs/tui/nix-utils
|
||||||
../../home/programs/tui/spotatui
|
../../home/programs/tui/spotatui
|
||||||
../../home/programs/tui/yazi
|
../../home/programs/tui/elio
|
||||||
|
../../home/programs/tui/wikiman
|
||||||
../../home/programs/tui/pkgs.nix
|
../../home/programs/tui/pkgs.nix
|
||||||
|
|
||||||
## GROUPS
|
## GROUPS
|
||||||
@@ -38,20 +38,37 @@
|
|||||||
../../home/system/swaync
|
../../home/system/swaync
|
||||||
../../home/system/tofi
|
../../home/system/tofi
|
||||||
../../home/system/mime
|
../../home/system/mime
|
||||||
../../home/system/termfilechooser
|
|
||||||
../../home/system/udiskie
|
../../home/system/udiskie
|
||||||
|
../../home/system/termfilechooser
|
||||||
../../home/system/clipboard
|
../../home/system/clipboard
|
||||||
../../home/system/hypridle
|
../../home/system/hypridle
|
||||||
|
|
||||||
./variables.nix # Mostly user-specific configuration
|
./variables.nix # Mostly user-specific configuration
|
||||||
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
inherit (config.var) username;
|
inherit (config.var) username;
|
||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
file.".face" = {
|
|
||||||
source = ./profile_picture.png;
|
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [
|
||||||
|
".config/nixos" # this repo itself (nixy manages it here)
|
||||||
|
".local/share"
|
||||||
|
".local/state"
|
||||||
|
".cache"
|
||||||
|
".steam"
|
||||||
|
"Notes"
|
||||||
|
"Projects"
|
||||||
|
"Documents"
|
||||||
|
"Downloads"
|
||||||
|
"Pictures"
|
||||||
|
"Videos"
|
||||||
|
];
|
||||||
|
|
||||||
|
files = [
|
||||||
|
".ssh/known_hosts"
|
||||||
|
".config/sops/age/keys.txt"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# Impermanence: declares what should survive a wipe of "/".
|
||||||
|
{
|
||||||
|
environment.persistence."/persist" = {
|
||||||
|
hideMounts = true;
|
||||||
|
|
||||||
|
directories = [
|
||||||
|
"/etc/NetworkManager/system-connections" # Wifi connections, VPN
|
||||||
|
"/var/lib/bluetooth" # Bluetooth connections
|
||||||
|
"/var/lib/nixos" # keeps uid/gid stable across boots
|
||||||
|
"/var/lib/systemd/coredump"
|
||||||
|
"/var/lib/upower" # battery calibration state
|
||||||
|
"/var/lib/systemd/backlight" # remembers screen brightness
|
||||||
|
"/var/lib/systemd/timers" # last-run timestamps (e.g. nix gc weekly)
|
||||||
|
"/var/log"
|
||||||
|
"/var/cache/tuigreet"
|
||||||
|
"/var/db/sudo/lectured" # remembers that the sudo lecture was already shown
|
||||||
|
];
|
||||||
|
|
||||||
|
files = [
|
||||||
|
"/etc/machine-id"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||||
|
"/var/lib/systemd/random-seed" # avoid a weak entropy pool on first boot
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 12 KiB |
@@ -1,63 +1,52 @@
|
|||||||
# 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,
|
||||||
lib,
|
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
home = config.home.homeDirectory;
|
username = config.var.username;
|
||||||
|
home = "/home/${username}";
|
||||||
in {
|
in {
|
||||||
imports = [inputs.sops-nix.homeManagerModules.sops];
|
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
||||||
defaultSopsFile = ./secrets.yaml;
|
defaultSopsFile = ./secrets.yaml;
|
||||||
secrets = {
|
secrets = {
|
||||||
ssh-config = {
|
ssh-config = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/config";
|
path = "${home}/.ssh/config";
|
||||||
};
|
};
|
||||||
github-key = {
|
ssh-github-key = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/github";
|
path = "${home}/.ssh/github";
|
||||||
};
|
};
|
||||||
jack-key = {
|
anotherhadi-pgp-key = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
|
path = "${home}/.ssh/anotherhadi-priv.asc";
|
||||||
|
};
|
||||||
|
ssh-jack-key = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/jack";
|
path = "${home}/.ssh/jack";
|
||||||
};
|
};
|
||||||
signing-key = {
|
signing-key = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/key";
|
path = "${home}/.ssh/key";
|
||||||
};
|
};
|
||||||
signing-pub-key = {
|
signing-pub-key = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/key.pub";
|
path = "${home}/.ssh/key.pub";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".config/nixos/.sops.yaml".text = ''
|
environment.systemPackages = with pkgs; [
|
||||||
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
|
|
||||||
'';
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
sops
|
sops
|
||||||
age
|
age
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
|
||||||
"systemctl --user start sops-nix"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# USBGuard:
|
||||||
|
# The following line 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 = {
|
||||||
|
enable = true;
|
||||||
|
implicitPolicyTarget = "block";
|
||||||
|
IPCAllowedUsers = [
|
||||||
|
"root"
|
||||||
|
];
|
||||||
|
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 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"
|
||||||
|
allow id 1532:02a1 name "Razer Ornata V3"
|
||||||
|
allow id 03f0:066b name "HP USB-C Dock G5"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -26,8 +26,7 @@
|
|||||||
|
|
||||||
autoUpgrade = false;
|
autoUpgrade = false;
|
||||||
autoGarbageCollector = true;
|
autoGarbageCollector = true;
|
||||||
|
impermanenceEnabled = true;
|
||||||
hasBattery = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# DON'T TOUCH THIS
|
# DON'T TOUCH THIS
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
vpnConnection = "wg-vpn";
|
||||||
|
|
||||||
|
toggleVpn = pkgs.writeShellScript "toggle-wg-vpn" ''
|
||||||
|
set -euo pipefail
|
||||||
|
nmcli="${pkgs.networkmanager}/bin/nmcli"
|
||||||
|
|
||||||
|
if "$nmcli" -t -f NAME connection show --active | grep -qx "${vpnConnection}"; then
|
||||||
|
"$nmcli" connection down "${vpnConnection}"
|
||||||
|
OSD_TEXT=" VPN Off"
|
||||||
|
else
|
||||||
|
"$nmcli" connection up "${vpnConnection}"
|
||||||
|
OSD_TEXT=" VPN On"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '%s' "$OSD_TEXT" > /tmp/waybar-osd
|
||||||
|
${pkgs.procps}/bin/pkill -f -RTMIN+8 '^waybar$' 2>/dev/null || true
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
environment.systemPackages = [
|
||||||
|
(pkgs.makeDesktopItem {
|
||||||
|
name = "toggle-wg-vpn";
|
||||||
|
desktopName = "Toggle VPN";
|
||||||
|
comment = "Turn the WireGuard VPN connection on or off";
|
||||||
|
icon = "network-vpn-symbolic";
|
||||||
|
exec = "${toggleVpn}";
|
||||||
|
terminal = false;
|
||||||
|
categories = ["Network"];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
sops = {
|
||||||
|
secrets.wireguard-private-key = {};
|
||||||
|
templates."wg-vpn.nmconnection" = {
|
||||||
|
path = "/etc/NetworkManager/system-connections/wg-vpn.nmconnection";
|
||||||
|
mode = "0600";
|
||||||
|
owner = "root";
|
||||||
|
group = "root";
|
||||||
|
content = ''
|
||||||
|
[connection]
|
||||||
|
id=wg-vpn
|
||||||
|
type=wireguard
|
||||||
|
interface-name=wg-vpn
|
||||||
|
autoconnect=true
|
||||||
|
autoconnect-priority=0
|
||||||
|
|
||||||
|
[wireguard]
|
||||||
|
private-key=${config.sops.placeholder.wireguard-private-key}
|
||||||
|
|
||||||
|
[wireguard-peer.36G8+pInNcPK9F1TpHglWs9Pk5uJOY9o8SCNrCBgvHE=]
|
||||||
|
endpoint=89.222.96.158:51820
|
||||||
|
allowed-ips=0.0.0.0/0;::/0;
|
||||||
|
persistent-keepalive=25
|
||||||
|
|
||||||
|
[ipv4]
|
||||||
|
method=manual
|
||||||
|
address1=10.2.0.2/32
|
||||||
|
dns=10.2.0.1;
|
||||||
|
|
||||||
|
[ipv6]
|
||||||
|
method=manual
|
||||||
|
address1=2a07:b944::2:2/128
|
||||||
|
dns=2a07:b944::2:1;
|
||||||
|
addr-gen-mode=default
|
||||||
|
ip6-privacy=0
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -16,17 +16,13 @@
|
|||||||
../../server-modules/adguardhome.nix
|
../../server-modules/adguardhome.nix
|
||||||
../../server-modules/arr.nix
|
../../server-modules/arr.nix
|
||||||
../../server-modules/blog.nix
|
../../server-modules/blog.nix
|
||||||
../../server-modules/awesome-wallpapers.nix
|
../../server-modules/bentopdf.nix
|
||||||
../../server-modules/iknowyou.nix
|
|
||||||
../../server-modules/stirling-pdf.nix
|
|
||||||
../../server-modules/cyberchef.nix
|
../../server-modules/cyberchef.nix
|
||||||
../../server-modules/mazanoke.nix
|
../../server-modules/mazanoke.nix
|
||||||
../../server-modules/kernel-hardening.nix
|
../../server-modules/kernel-hardening.nix
|
||||||
../../server-modules/fail2ban.nix
|
../../server-modules/fail2ban.nix
|
||||||
../../server-modules/default-creds.nix
|
../../server-modules/default-creds.nix
|
||||||
../../server-modules/umami.nix
|
|
||||||
../../server-modules/gitea.nix
|
../../server-modules/gitea.nix
|
||||||
../../server-modules/mealie.nix
|
|
||||||
|
|
||||||
# You should let those lines as is
|
# You should let those lines as is
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
@@ -38,5 +34,5 @@
|
|||||||
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
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "26.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,24 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
pkgs-unstable,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
modules = [
|
modules = [
|
||||||
{_module.args = {inherit inputs;};}
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
inputs.nur.overlays.default
|
||||||
|
];
|
||||||
|
_module.args = {inherit inputs pkgs-unstable;};
|
||||||
|
}
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.stylix.nixosModules.stylix
|
inputs.stylix.nixosModules.stylix
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.nixarr.nixosModules.default
|
inputs.nixarr.nixosModules.default
|
||||||
inputs.nix-index-database.nixosModules.default
|
inputs.nix-index-database.nixosModules.default
|
||||||
inputs.default-creds.nixosModules.default
|
inputs.default-creds.nixosModules.default
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
|||||||
@@ -4,19 +4,23 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Mostly user-specific configuration
|
## TUI
|
||||||
./variables.nix
|
|
||||||
|
|
||||||
# Programs
|
|
||||||
inputs.nvf-config.homeManagerModules.default
|
inputs.nvf-config.homeManagerModules.default
|
||||||
../../home/programs/shell
|
../../home/programs/tui/ilovetui
|
||||||
../../home/programs/git
|
../../home/programs/tui/shell
|
||||||
../../home/programs/git/lazygit.nix
|
../../home/programs/tui/git
|
||||||
../../home/programs/nixy
|
../../home/programs/tui/git/lazygit.nix
|
||||||
../../home/programs/nix-utils
|
../../home/programs/tui/git/signing.nix # CHANGEME: Change the key or remove this file
|
||||||
../../home/programs/yazi
|
../../home/programs/tui/nixy
|
||||||
|
../../home/programs/tui/nix-utils
|
||||||
|
../../home/programs/tui/elio
|
||||||
|
../../home/programs/tui/wikiman
|
||||||
|
../../home/programs/tui/pkgs.nix
|
||||||
|
|
||||||
../../home/programs/group/dev.nix
|
../../home/programs/group/dev.nix
|
||||||
|
|
||||||
|
# Mostly user-specific configuration
|
||||||
|
./variables.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
@@ -24,7 +28,7 @@
|
|||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
stateVersion = "24.05";
|
stateVersion = "26.05";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
path = "/home/hadi/.ssh/config";
|
path = "/home/hadi/.ssh/config";
|
||||||
mode = "0600";
|
mode = "0600";
|
||||||
};
|
};
|
||||||
github-key = {
|
ssh-github-key = {
|
||||||
owner = "hadi";
|
owner = "hadi";
|
||||||
path = "/home/hadi/.ssh/github";
|
path = "/home/hadi/.ssh/github";
|
||||||
mode = "0600";
|
mode = "0600";
|
||||||
|
|||||||
@@ -7,13 +7,18 @@
|
|||||||
../../nixos/nix.nix
|
../../nixos/nix.nix
|
||||||
../../nixos/systemd-boot.nix
|
../../nixos/systemd-boot.nix
|
||||||
../../nixos/tuigreet.nix
|
../../nixos/tuigreet.nix
|
||||||
../../nixos/usbguard.nix
|
../../nixos/autologin.nix # Skip first TUIGreet login, use LUKS password to unlock the keyring
|
||||||
../../nixos/users.nix
|
../../nixos/users.nix
|
||||||
../../nixos/utils.nix
|
../../nixos/utils.nix
|
||||||
../../nixos/hyprland.nix
|
../../nixos/hyprland.nix
|
||||||
../../nixos/docker.nix
|
|
||||||
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
||||||
|
|
||||||
|
# CHANGEME: You should probably remove those things:
|
||||||
|
./persistence.nix # impermanence: what to keep once "/" is wiped on boot
|
||||||
|
./usbguard.nix
|
||||||
|
./disko.nix
|
||||||
|
./secrets
|
||||||
|
|
||||||
# You should let those lines as is
|
# You should let those lines as is
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./variables.nix
|
./variables.nix
|
||||||
@@ -21,20 +26,7 @@
|
|||||||
|
|
||||||
home-manager.users."${config.var.username}" = import ./home.nix;
|
home-manager.users."${config.var.username}" = import ./home.nix;
|
||||||
|
|
||||||
# USBGuard:
|
users.users.${config.var.username}.hashedPassword = "$y$j9T$quUlRuvuYJ18asD8SUrh11$0mHCP7ZRIOYjNHY0oT.aFfVho1V0M65eClLzVo0RARD"; # CHANGEME: This is my password
|
||||||
# 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: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"
|
|
||||||
allow id 17ef:608d name "Lenovo USB Optical Mouse"
|
|
||||||
'';
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [9001];
|
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
system.stateVersion = "26.05";
|
system.stateVersion = "26.05";
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
nodev = {
|
||||||
|
"/" = {
|
||||||
|
fsType = "tmpfs";
|
||||||
|
mountOptions = [
|
||||||
|
"defaults"
|
||||||
|
"size=12G"
|
||||||
|
"mode=755"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-id/nvme-SK_hynix_PVC10_HFS512GEM9X173N_5MF4N00141310464Q";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = ["fmask=0077" "dmask=0077"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
luks = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
bypassWorkqueues = true;
|
||||||
|
};
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = ["-f"];
|
||||||
|
subvolumes = {
|
||||||
|
"/nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = ["compress=zstd" "noatime"];
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
mountpoint = "/persist";
|
||||||
|
mountOptions = ["compress=zstd" "noatime"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/persist".neededForBoot = true;
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
pkgs-unstable,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
@@ -9,12 +10,16 @@ nixpkgs.lib.nixosSystem {
|
|||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
];
|
];
|
||||||
_module.args = {inherit inputs;};
|
_module.args = {inherit inputs pkgs-unstable;};
|
||||||
}
|
}
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.stylix.nixosModules.stylix
|
inputs.stylix.nixosModules.stylix
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.nix-index-database.nixosModules.default
|
inputs.nix-index-database.nixosModules.default
|
||||||
inputs.helium-browser.nixosModules.default
|
inputs.helium-browser.nixosModules.default
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
./disko.nix
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Hardware detection - filesystems are managed by disko.nix
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
@@ -12,32 +9,11 @@
|
|||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(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"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = ["kvm-intel"];
|
||||||
boot.extraModulePackages = [];
|
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 = [];
|
swapDevices = [];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
inputs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
@@ -9,19 +10,20 @@
|
|||||||
## GUI
|
## GUI
|
||||||
../../home/programs/gui/proton
|
../../home/programs/gui/proton
|
||||||
../../home/programs/gui/helium
|
../../home/programs/gui/helium
|
||||||
../../home/programs/gui/thunar
|
|
||||||
../../home/programs/gui/pkgs.nix
|
../../home/programs/gui/pkgs.nix
|
||||||
|
|
||||||
## TUI
|
## TUI
|
||||||
inputs.nvf-config.homeManagerModules.default
|
inputs.nvf-config.homeManagerModules.default
|
||||||
../../home/programs/tui/ghostty
|
../../home/programs/tui/ghostty
|
||||||
|
../../home/programs/tui/ilovetui
|
||||||
../../home/programs/tui/shell
|
../../home/programs/tui/shell
|
||||||
../../home/programs/tui/git
|
../../home/programs/tui/git
|
||||||
../../home/programs/tui/git/lazygit.nix
|
../../home/programs/tui/git/lazygit.nix
|
||||||
../../home/programs/tui/nixy
|
../../home/programs/tui/nixy
|
||||||
../../home/programs/tui/nix-utils
|
../../home/programs/tui/nix-utils
|
||||||
../../home/programs/tui/spotatui
|
../../home/programs/tui/spotatui
|
||||||
../../home/programs/tui/yazi
|
../../home/programs/tui/elio
|
||||||
|
../../home/programs/tui/wikiman
|
||||||
../../home/programs/tui/pkgs.nix
|
../../home/programs/tui/pkgs.nix
|
||||||
|
|
||||||
## GROUPS
|
## GROUPS
|
||||||
@@ -35,19 +37,38 @@
|
|||||||
../../home/system/swaync
|
../../home/system/swaync
|
||||||
../../home/system/tofi
|
../../home/system/tofi
|
||||||
../../home/system/mime
|
../../home/system/mime
|
||||||
../../home/system/termfilechooser
|
|
||||||
../../home/system/udiskie
|
../../home/system/udiskie
|
||||||
|
../../home/system/termfilechooser
|
||||||
../../home/system/clipboard
|
../../home/system/clipboard
|
||||||
../../home/system/hypridle
|
../../home/system/hypridle
|
||||||
|
|
||||||
./variables.nix # Mostly user-specific configuration
|
./variables.nix # Mostly user-specific configuration
|
||||||
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
inherit (config.var) username;
|
inherit (config.var) username;
|
||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
|
|
||||||
|
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
||||||
|
directories = [
|
||||||
|
".config/nixos" # this repo itself (nixy manages it here)
|
||||||
|
".local/share"
|
||||||
|
".local/state"
|
||||||
|
".cache"
|
||||||
|
"Notes"
|
||||||
|
"Projects"
|
||||||
|
"Documents"
|
||||||
|
"Downloads"
|
||||||
|
"Pictures"
|
||||||
|
"Videos"
|
||||||
|
];
|
||||||
|
|
||||||
|
files = [
|
||||||
|
".ssh/known_hosts"
|
||||||
|
".config/sops/age/keys.txt"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
stateVersion = "26.05";
|
stateVersion = "26.05";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# Impermanence: declares what should survive a wipe of "/".
|
||||||
|
{
|
||||||
|
environment.persistence."/persist" = {
|
||||||
|
hideMounts = true;
|
||||||
|
|
||||||
|
directories = [
|
||||||
|
"/etc/NetworkManager/system-connections" # Wifi connections, VPN
|
||||||
|
"/var/lib/bluetooth" # Bluetooth connections
|
||||||
|
"/var/lib/nixos" # keeps uid/gid stable across boots
|
||||||
|
"/var/lib/systemd/coredump"
|
||||||
|
"/var/lib/upower" # battery calibration state
|
||||||
|
"/var/lib/systemd/backlight" # remembers screen brightness
|
||||||
|
"/var/lib/systemd/timers" # last-run timestamps (e.g. nix gc weekly)
|
||||||
|
"/var/log"
|
||||||
|
"/var/cache/tuigreet"
|
||||||
|
"/var/db/sudo/lectured" # remembers that the sudo lecture was already shown
|
||||||
|
];
|
||||||
|
|
||||||
|
files = [
|
||||||
|
"/etc/machine-id"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||||
|
"/var/lib/systemd/random-seed" # avoid a weak entropy pool on first boot
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,60 +1,42 @@
|
|||||||
# 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,
|
||||||
lib,
|
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
home = config.home.homeDirectory;
|
username = config.var.username;
|
||||||
|
home = "/home/${username}";
|
||||||
in {
|
in {
|
||||||
imports = [inputs.sops-nix.homeManagerModules.sops];
|
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
||||||
defaultSopsFile = ./secrets.yaml;
|
defaultSopsFile = ./secrets.yaml;
|
||||||
secrets = {
|
secrets = {
|
||||||
ssh-config = {
|
ssh-config = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/config";
|
path = "${home}/.ssh/config";
|
||||||
};
|
};
|
||||||
netrc = {
|
netrc = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.netrc";
|
path = "${home}/.netrc";
|
||||||
};
|
};
|
||||||
github-key = {
|
ssh-github-key = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/github";
|
path = "${home}/.ssh/github";
|
||||||
};
|
};
|
||||||
gitlab-key = {
|
ssh-gitlab-key = {
|
||||||
|
owner = username;
|
||||||
|
mode = "0600";
|
||||||
path = "${home}/.ssh/gitlab";
|
path = "${home}/.ssh/gitlab";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".config/nixos/.sops.yaml".text = ''
|
environment.systemPackages = with pkgs; [
|
||||||
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
|
|
||||||
'';
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
sops
|
sops
|
||||||
age
|
age
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
|
||||||
"systemctl --user start sops-nix"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,28 @@
|
|||||||
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]
|
ssh-config: ENC[AES256_GCM,data:yTlt8SYPiON8aabbpQ9fE02hvp/u4oDmLaLuADzdOGdAL12MNe1QnNCND3lQ/nT+uxwm8k7OxExBfc70osLPjiq/CjNk1NOaO1nmBOXZqugnf33dF19P8SCMT2KtZTI1tYU2Kd5GmwpnozU6Qh0uJH+0ebR2tQnLChl16ap9fc6rg3AbD+XknSJ3+TndgZPBy4mN/MzT/GFL2kBDbYCmLoMXWDKxCM6ta1NvLRD8W7EBMeh/CNfkU+cw1kPjgPudDBP047VFudnqiueEAAigk3imqPyDFE1Jz4ouvVuLQz/f1BWnyZon3+sgHESAMRtAP3Lt7zo3s4PTJ04ohB4gk6K2fGBsFdyaWJp4uR8FMOhXrwG813KI,iv:W6bcO9ElLJ7YvN6PenqWNQnNSLi2WxZsjBc/adKdjeg=,tag:zKdx+RFXiOKpsY8EOGs46g==,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]
|
netrc: ENC[AES256_GCM,data:dlfPJqzz7EZ5JHBmQr7imMDlQv9KFfzDKY6YywtPWR7re7z9jBFgMoaPRk62ocCVltofak6Zrsr3on1jPrrpMwk4DQYFSnQ5tvUTi/1LJWpf9GgjokC5nqc=,iv:se1ysRyzZmB6MjU4heFrDLHe2bv8Ml2iLC4MuIcQW9Y=,tag:oyu8wfR+9hvOuKmsk2sDXw==,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]
|
ssh-github-key: ENC[AES256_GCM,data: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,iv:ElF3tykw7GKyhdb1YJBivwxT74DEWkdU1EOuOa/ntUM=,tag:+RYqptKt4L3UynBaoBmwNA==,type:str]
|
||||||
gitlab-key: ENC[AES256_GCM,data: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,iv:pbe2MtYmFmY/kS+gM9xyI6cXViVmzPB3H7XL1ZH47h0=,tag:NmSKMlAIEOWE8Jw/iy3+Xw==,type:str]
|
ssh-gitlab-key: ENC[AES256_GCM,data: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,iv:h87uW6VOwRubj19DKxEoddRN5/2v+vmKlBxfZnGjY70=,tag:SV17QrAMwJb0QWOXRbPdnw==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVby9Wa1NUUkpyeDMwU3dM
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBma2xHeGpudjVRMTQ2WFlZ
|
||||||
R0EyeFVtT0tJU0pKaWtXQzRkTDBPY3JjcTFrClNIQnl2WVorS0FZZjhicTQ5V2kx
|
aGJvNnJvM0hkQjM0MThZSjQvc1ErYXZRSDJjCkphZDZycUljcUhUQStNT1RFN29z
|
||||||
MUZTZWZtaUk2a1ZhUTBCUnhkWHFIMFUKLS0tIElLcjJLZWNLOUJYN0NNVGFNUEFN
|
djRrTzhTckt2K1I1TGsvRWFaeVdSK1kKLS0tIFBGdFFpV1lTNlFzMSt1TktDNk91
|
||||||
RkMrdTYwNkY1Tlc3M3dxTFdkRXJJZUEKUlYU45jXpS9hJO9Z/uAQ6XMj9QWgMMRI
|
NUphdlJ5ODZjNDZyTUl3OStpdmYrUWcKYKZ8pvGG1QkCBZTqVtFb5GIYWYfsr/Mc
|
||||||
LbJxvt48+yC+Y0XKOtDE0lHAuGNzUG8R/7FB1tTD8NCamBe46KGCIg==
|
+OGeP1hRwQzJ9+DLUgrsfK/8vr+0Y5q2Nej9gbfxyrnlszussbOADw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
recipient: age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
recipient: age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
||||||
lastmodified: "2026-07-01T12:18:22Z"
|
- enc: |
|
||||||
mac: ENC[AES256_GCM,data:rX8MoqaMAbfuMdcQMw8eDGXos3VgbA3VfNJJcGGk2xQPuTC7FW5S0BVuh68ajzVv0oaYtT8pBRktv9Lo2VDY6Mm4neVuF/9IgV0cTKwvx5ACjN40Zt7OU+QtlQK44kDXsJQFyV+BYHVNiW8jej1h9d7vSAgG0hD3GOpvtK6ZY6E=,iv:3B3COjvazDVRkUsuIiLlOCFqlE9ooFR8dC5PTXe/q28=,tag:QEqcRTks4zSX02qc9KDsrA==,type:str]
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0aWQ1NzVWc0lnMXBHZFZq
|
||||||
|
SEplcWMwc1R4NmkvdWdMQUJWY2R0dnRBeVVzCjBCNjVEc3hJazJzZXFFc0EzbXNV
|
||||||
|
enFtYnNVNzUwYVQ4RVUxWVhROFJhT2sKLS0tIGpWeHNwWm5NakFzY0JzYWxicHhk
|
||||||
|
MzVVaVdyOEtoUkF1aDY2UnBGbC9rbDgKoEUqT/OlVXYR5MVlpsnTY4NHa6yg3FzQ
|
||||||
|
WaBrZfGv2/dKeulFCKKFrT3ZG8TIbLTqdRoVIrUp1O+U3vObzY9fzA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
recipient: age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
||||||
|
lastmodified: "2026-08-17T12:19:14Z"
|
||||||
|
mac: ENC[AES256_GCM,data:2rK9RlYE7dX/c6zg3J1AeB1TI3v2XVhoUGsou0u35enhebzINUCYVC9HN9Te+6nWO/OVQ3i5vn+DwOZDbK2bfH88wqwIqI4o1Ztw2MW8/kzNJZhqv4QA4Xdo0ULD2TO3X95E1iEnuQIJ0c26gIuVdfsrQviBDbmBTMR/JVE6yHQ=,iv:kZ+2R0+Z64zAZb7ePDdJfPlo/BMFyLpAxK+7ZiDoKFI=,tag:xbf7xOYuG+Msoicx5qjyNw==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.13.1
|
version: 3.13.3
|
||||||
|
|||||||
@@ -10,5 +10,12 @@
|
|||||||
IPCAllowedUsers = [
|
IPCAllowedUsers = [
|
||||||
"root"
|
"root"
|
||||||
];
|
];
|
||||||
|
rules = ''
|
||||||
|
allow id 1d6b:0002 name "xHCI Host Controller"
|
||||||
|
allow id 0951:1666 name "DataTraveler 3.0"
|
||||||
|
allow id 1d6b:0003 name "xHCI Host Controller"
|
||||||
|
allow id 17ef:6190 name "Lenovo Calliope USB Keyboard G2"
|
||||||
|
allow id 17ef:608d name "Lenovo USB Optical Mouse"
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -21,13 +21,12 @@
|
|||||||
|
|
||||||
git = {
|
git = {
|
||||||
username = "Hadi";
|
username = "Hadi";
|
||||||
email = "hadi@example.com";
|
email = "hadi@example.fr";
|
||||||
};
|
};
|
||||||
|
|
||||||
autoUpgrade = false;
|
autoUpgrade = false;
|
||||||
autoGarbageCollector = true;
|
autoGarbageCollector = true;
|
||||||
|
impermanenceEnabled = true;
|
||||||
hasBattery = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# DON'T TOUCH THIS
|
# DON'T TOUCH THIS
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Autologin at boot: greetd starts your session directly on the first VT
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.greetd.settings.initial_session = {
|
||||||
|
command = "${pkgs.uwsm}/bin/uwsm start -e -D Hyprland hyprland.desktop";
|
||||||
|
user = config.var.username;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Needed so the LUKS passphrase entered at boot is cached in the kernel
|
||||||
|
# keyring, where pam_fde_boot_pw can retrieve it (see below).
|
||||||
|
boot.initrd.systemd.enable = true;
|
||||||
|
|
||||||
|
security.pam.services.greetd.rules.session.fde_boot_pw = {
|
||||||
|
order = 12550; # kwallet=12500, gnome_keyring=12600: must run in between
|
||||||
|
control = "optional";
|
||||||
|
modulePath = "${pkgs.pam_fde_boot_pw}/lib/security/pam_fde_boot_pw.so";
|
||||||
|
args = ["inject_for=gkr"];
|
||||||
|
};
|
||||||
|
|
||||||
|
security.pam.services.login.enableGnomeKeyring = true;
|
||||||
|
|
||||||
|
systemd.services.greetd.serviceConfig.KeyringMode = lib.mkForce "shared";
|
||||||
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
{config, ...}: {
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
users.users."${config.var.username}".extraGroups = ["docker"];
|
users.users."${config.var.username}".extraGroups = ["docker"];
|
||||||
|
environment.systemPackages = [pkgs.lazydocker];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Home-manager configuration for NixOS
|
# Home-manager configuration for NixOS
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs-unstable,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home-manager = {
|
home-manager = {
|
||||||
@@ -9,11 +9,7 @@
|
|||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
backupFileExtension = "hm-backup";
|
backupFileExtension = "hm-backup";
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs;
|
inherit inputs pkgs-unstable;
|
||||||
pkgs-stable = import inputs.nixpkgs-stable {
|
|
||||||
system = pkgs.stdenv.hostPlatform.system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,68 +0,0 @@
|
|||||||
# Omen laptop configuration for NixOS
|
|
||||||
# Import this only if you have an HP Omen laptop
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hp-omen-linux-module = pkgs.callPackage (
|
|
||||||
{
|
|
||||||
kernel ? config.boot.kernelPackages.kernel,
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitHub,
|
|
||||||
}:
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
|
||||||
pname = "hp-omen-linux-module";
|
|
||||||
version = "rebase-6.15";
|
|
||||||
# Upstream only rebases per kernel branch and currently tops out at
|
|
||||||
# rebase-6.15, while linuxPackages_latest is already on 7.x. If the
|
|
||||||
# module ever fails to build against a newer kernel, either bump this
|
|
||||||
# to a fresh upstream branch or fall back to a stable kernel.
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "ranisalt";
|
|
||||||
repo = "hp-omen-linux-module";
|
|
||||||
rev = "d4b9b5adb84581c3874ca3985dc749c40c3ece67"; # rebase-6.15
|
|
||||||
sha256 = "sha256-IOXHzcCB0n1InMjeIu3XYEJ4bhbHS3NIlS8/+4XIwkQ=";
|
|
||||||
};
|
|
||||||
setSourceRoot = ''
|
|
||||||
export sourceRoot=$(pwd)/${finalAttrs.src.name}/src
|
|
||||||
'';
|
|
||||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
|
||||||
makeFlags = [
|
|
||||||
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
|
||||||
];
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
install hp-wmi.ko -Dm444 -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/platform/x86/hp/
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
) {kernel = config.boot.kernelPackages.kernel;};
|
|
||||||
in {
|
|
||||||
boot.extraModulePackages = [hp-omen-linux-module];
|
|
||||||
boot.kernelModules = ["hp-wmi"];
|
|
||||||
boot.kernelParams = ["hp_wmi.force_slow_fan_control=1"];
|
|
||||||
|
|
||||||
users.groups.omen-rgb = {};
|
|
||||||
users.users.${config.var.username}.extraGroups = ["omen-rgb"];
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"w /sys/devices/platform/hp-wmi/rgb_zones/zone00 0660 root omen-rgb -"
|
|
||||||
"w /sys/devices/platform/hp-wmi/rgb_zones/zone01 0660 root omen-rgb -"
|
|
||||||
"w /sys/devices/platform/hp-wmi/rgb_zones/zone02 0660 root omen-rgb -"
|
|
||||||
"w /sys/devices/platform/hp-wmi/rgb_zones/zone03 0660 root omen-rgb -"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
SUBSYSTEM=="platform", KERNEL=="hp-wmi", ACTION=="add", \
|
|
||||||
RUN+="${pkgs.coreutils-full}/bin/sleep 2", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone00", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone00", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone01", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone01", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone02", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone02", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone03", \
|
|
||||||
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone03"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# Source: https://github.com/Dylouwu/MyNixy/blob/main/nixos/steam.nix
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
mangohud
|
||||||
|
protonup-ng
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/${config.var.username}/.steam/root/compatibilitytools.d";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gamemode.enable = true;
|
||||||
|
}
|
||||||
|
# Example of recommanded launch options for your games in Steam :
|
||||||
|
# Regular gaming :
|
||||||
|
# LD_PRELOAD="" gamescope -W 2560 -H 1440 -r 360 -f -- %command%
|
||||||
|
# LD_PRELOAD="" gamescope -W 3440 -H 1440 -r 140 -f -- %command%
|
||||||
|
# HDR gaming :
|
||||||
|
# LD_PRELOAD="" ENABLE_HDR_WSI=1 gamescope -w 2560 -h 1440 -r 360 -f --hdr-enabled --hdr-debug-force-output --hdr-sdr-content-nits 600 -- env ENABLE_GAMESCOPE_WSI=1 DXVK_HDR=1 DISABLE_HDR_WSI=1 VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_wait %command%
|
||||||
|
# LD_PRELOAD="" removes a glitch causing games to slow down after roughly 24 minutes
|
||||||
|
# For the rest of the command, you can change the values to match your screen resolution and refresh rate
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
tuigreet = inputs.notashelf-tuigreet.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
tuigreet = pkgs.tuigreet;
|
||||||
|
|
||||||
theme = lib.concatStringsSep ";" [
|
theme = lib.concatStringsSep ";" [
|
||||||
"border=#${c.base0D}"
|
"border=#${c.base0D}"
|
||||||
@@ -43,14 +42,14 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||||
|
|
||||||
# this is a life saver.
|
# this is a life saver.
|
||||||
# literally no documentation about this anywhere.
|
# literally no documentation about this anywhere.
|
||||||
# might be good to write about this...
|
# might be good to write about this...
|
||||||
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
|
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
|
||||||
# Unlock the gnome-keyring with the login password so apps (browser
|
# Unlock the gnome-keyring with the login password so apps (browser
|
||||||
# secrets via libsecret, ProtonVPN credentials, …) don't reprompt.
|
# secrets via libsecret, ProtonVPN credentials, …) don't reprompt.
|
||||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
|
||||||
|
|
||||||
systemd.services.greetd.serviceConfig = {
|
systemd.services.greetd.serviceConfig = {
|
||||||
Type = "idle";
|
Type = "idle";
|
||||||
StandardInput = "tty";
|
StandardInput = "tty";
|
||||||
@@ -61,6 +60,4 @@ in {
|
|||||||
TTYVHangup = true;
|
TTYVHangup = true;
|
||||||
TTYVTDisallocate = true;
|
TTYVTDisallocate = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [tuigreet];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
xdgOpenUsePortal = true;
|
xdgOpenUsePortal = false;
|
||||||
config = {
|
config = {
|
||||||
common.default = ["gtk"];
|
common.default = ["gtk"];
|
||||||
hyprland = {
|
hyprland = {
|
||||||
@@ -124,7 +124,7 @@ in {
|
|||||||
"gtk"
|
"gtk"
|
||||||
"hyprland"
|
"hyprland"
|
||||||
];
|
];
|
||||||
# Pick files / choose download paths with yazi instead of the GTK dialog.
|
# Pick files / choose download paths with elio instead of the GTK dialog.
|
||||||
# Key MUST use the "impl" interface name, else xdg-desktop-portal
|
# Key MUST use the "impl" interface name, else xdg-desktop-portal
|
||||||
# ignores it and falls back to the default (gtk). See portals.conf(5).
|
# ignores it and falls back to the default (gtk). See portals.conf(5).
|
||||||
"org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
|
"org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ in {
|
|||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
recyclarr = {
|
recyclarr = {
|
||||||
owner = "recyclarr";
|
owner = "recyclarr";
|
||||||
|
# TODO: too permissive (world-writable), should be 0600/0400
|
||||||
mode = "0777";
|
mode = "0777";
|
||||||
};
|
};
|
||||||
wireguard-pia = {
|
wireguard-pia = {
|
||||||
|
|||||||