Compare commits
1499 Commits
main
..
a393b84c92
| Author | SHA1 | Date | |
|---|---|---|---|
| a393b84c92 | |||
| ccdf0c289a | |||
| cdffe66d72 | |||
| 082de49ca4 | |||
| 11391ae56c | |||
| a8f39b1729 | |||
| a704d3a7d2 | |||
| f72d6ab55c | |||
| 2890b49b82 | |||
| b8f30fbe4e | |||
| cc7f352ced | |||
| 24081abaf0 | |||
| 4addb1bd33 | |||
| c27c0550fb | |||
| 1333132eef | |||
| 1e83efd78a | |||
| 2f89759ca7 | |||
| 79351e46a1 | |||
| 3f37a26162 | |||
| e9fbdcb870 | |||
| e5d494607f | |||
| d4e4a8f9f7 | |||
| 7f54f94974 | |||
| 148b093eb4 | |||
| dd3ad203fa | |||
| 76f2982167 | |||
| 868c215895 | |||
| ceecbb858d | |||
| 9e45e35b7e | |||
| 6c2a7563d3 | |||
| 783e8fb9ff | |||
| 2878142360 | |||
| 93c36aa3ef | |||
| a195e1d2e9 | |||
| 3c13b64fec | |||
| 1e4b0f610c | |||
| c06762d636 | |||
| 1ba64e3731 | |||
| afc1928f5a | |||
| 87c258312c | |||
| 03f6cd7fe8 | |||
| 57db0eaaf6 | |||
| e14c569193 | |||
| a5e4dcddac | |||
| fd7c23055f | |||
| 4322ca33db | |||
| 9ebdaa1505 | |||
| 6a9752b74e | |||
| 48bb118da4 | |||
| ab92a39a28 | |||
| ec6abc4aba | |||
| fe781a0eed | |||
| 19609ad781 | |||
| 922e916a7a | |||
| 7c8a552730 | |||
| a15bc11625 | |||
| d233ae904f | |||
| 5f72e16819 | |||
| 2954349fee | |||
| 4b79b7689a | |||
| 5dff7ceb12 | |||
| a90a3809ce | |||
| fe1247f121 | |||
| 313f3c0b87 | |||
| 93152a5dcb | |||
| edf013bb08 | |||
| cb323223f8 | |||
| d1462de38c | |||
| 8419542ea2 | |||
| 2740475af1 | |||
| 5e9b5ad633 | |||
| 0452f40b25 | |||
| d71c9d8169 | |||
| e805c868a7 | |||
| 0fd0a73e92 | |||
| cd2896eb5d | |||
| 35b79af191 | |||
| 325cacc86f | |||
| 7862c970fd | |||
| 498ed902a2 | |||
| 3478a9a0a5 | |||
| f6d056deb3 | |||
| 795621ada6 | |||
| 31964cca35 | |||
| abcadd4eaf | |||
| 5945a72b01 | |||
| df6381db85 | |||
| 6ed60d7a13 | |||
| bcd4fa9839 | |||
| 143c5d2a34 | |||
| 4ed04ebf55 | |||
| 1a57874e68 | |||
| 2127ffbe31 | |||
| a76f81fa13 | |||
| f9d5c6ab00 | |||
| b51a78ac1c | |||
| 96b5d5e671 | |||
| a222958eea | |||
| c3f86c9831 | |||
| dc5c7dc915 | |||
| 3cbe2a1ab2 | |||
| a1ed4ebc4c | |||
| 80aa828ee5 | |||
| 28cdcb6dad | |||
| e620c5296f | |||
| 80ca377585 | |||
| 3a8ac99f43 | |||
| 6724573f16 | |||
| 13ae753f3d | |||
| 805f43618c | |||
| 4489c9e0ae | |||
| 3a86013330 | |||
| 922a412cda | |||
| cedf87698c | |||
| 52561cf335 | |||
| 9429c9f93b | |||
| 5e0dd70cfa | |||
| 9e24c44c53 | |||
| 241db5ce7a | |||
| 00faa213bf | |||
| 0aac097e77 | |||
| 5aaeba1512 | |||
| 1bdf7a3af5 | |||
| 4f3cf99b99 | |||
| f7a2aa6256 | |||
| ac3c0886b7 | |||
| 17f976d4e7 | |||
| daaf0d2b27 | |||
| 5f0d3bff5f | |||
| 36ad6aeb57 | |||
| 2326857f65 | |||
| 28b7923e47 | |||
| 29bdd6468a | |||
| 08db0a42c4 | |||
| 66cc2a3958 | |||
| 80afef207a | |||
| d18d67d86e | |||
| 2e10d6feff | |||
| dea17ebf3c | |||
| ae024e308d | |||
| 302f0ceec9 | |||
| 1cddeef739 | |||
| d7b72277f7 | |||
| 5d9ab362a3 | |||
| a6b2f66ac8 | |||
| e2a60b15dc | |||
| d029d6f205 | |||
| d9b4102bed | |||
| a744d85f48 | |||
| 5d50819d49 | |||
| 087f71d2d5 | |||
| 3f36665767 | |||
| 6cb4d1eb96 | |||
| 983c83b981 | |||
| c482e6e075 | |||
| 0a01e8f3e8 | |||
| 641411ad51 | |||
| 86fd60fd3d | |||
| 9a41aff92d | |||
| e4a2a7abd0 | |||
| b4d8e87abe | |||
| 5de0ce50d6 | |||
| aba6dafffa | |||
| 290471fcc2 | |||
| ac90e05258 | |||
| 562f2507c0 | |||
| a393b97680 | |||
| 59901b0081 | |||
| 6ecf475301 | |||
| 75483ea97a | |||
| 4cd0eccde5 | |||
| d32c4a317f | |||
| 5ecc516a2f | |||
| de489d7d9c | |||
| 19bfd1201b | |||
| 20f7bca099 | |||
| 72ed018351 | |||
| b904fd4fde | |||
| b1cf5fb3a1 | |||
| fee44db81c | |||
| 214095c02a | |||
| 29fc893847 | |||
| 3689215480 | |||
| 14168a65ea | |||
| 43ae447b34 | |||
| 07fa66f1b6 | |||
| 168423cf16 | |||
| bde39be205 | |||
| 18137f444a | |||
| e835f2466b | |||
| d2a9fff0d1 | |||
| 081e05c702 | |||
| 4a4b997ef3 | |||
| 37abf49364 | |||
| 36f5ef3792 | |||
| 3d4099c97b | |||
| 89413d06a8 | |||
| 76e3368f3e | |||
| 0f40fccb5e | |||
| cefebdbd0a | |||
| 05cfe684c2 | |||
| f11bd21e00 | |||
| 40477c6562 | |||
| d1fec1128d | |||
| 677a279eda | |||
| 1489261fa9 | |||
| 29d19d5502 | |||
| 2f69c6e1d4 | |||
| 9ad71c5775 | |||
| b5c64e96c4 | |||
| af787952ad | |||
| 4ebf579743 | |||
| 78aa49547d | |||
| d21fc81a19 | |||
| b0684b2e56 | |||
| 49a9f3f169 | |||
| 8caa02139c | |||
| 0c0a487488 | |||
| 6f463fc7f9 | |||
| 3e82b1cd60 | |||
| f9d171cef3 | |||
| 89c61650bc | |||
| c94559d29f | |||
| e91047a3e1 | |||
| 1d75175be8 | |||
| ea18558cb3 | |||
| 72c13294e6 | |||
| a771f685b2 | |||
| 27ad0783bc | |||
| d61e378405 | |||
| baa1ce858d | |||
| f32ea27565 | |||
| b657e5a891 | |||
| 48f3f3170b | |||
| 87778bd3fa | |||
| 5736c8ccf2 | |||
| 31031447ce | |||
| 4fb4058dca | |||
| 33b3ef66f2 | |||
| 52ee08e13b | |||
| 8c4b9340b6 | |||
| a1d57253f0 | |||
| 6e21914113 | |||
| 7acddfafa1 | |||
| 9fb4072893 | |||
| fd644671af | |||
| bfb7c2f4e0 | |||
| 22b5aa9797 | |||
| 4ac3945174 | |||
| d3cdc25481 | |||
| 6a0b3418a7 | |||
| f2c2540cd4 | |||
| 223f785c3a | |||
| 81ab17fed7 | |||
| 8f16767240 | |||
| e32cf43d87 | |||
| 8e6270ca34 | |||
| 1b0eb2f7bf | |||
| 7861a22df0 | |||
| 53ab3a608c | |||
| e6873e8caa | |||
| 9b7a311fc3 | |||
| bb7819114b | |||
| 1acb888684 | |||
| c09899e365 | |||
| d7fea0c4aa | |||
| c8dd5f2bbf | |||
| 71b559e0f6 | |||
| a901005929 | |||
| 31fb93ff68 | |||
| 84018b229c | |||
| 27d8dfb87f | |||
| 61c56e1b1d | |||
| 2ad7a99077 | |||
| 8088a45891 | |||
| 5b8240c176 | |||
| 44964ce7cc | |||
| 25c331b2f1 | |||
| d58e10e95d | |||
| e79e8d0d3b | |||
| 45aa87f9f8 | |||
| 9dee9b0d6a | |||
| 2fac831333 | |||
| a2cfea4c3e | |||
| 6095fb13cc | |||
| 738631870d | |||
| 66169bb57e | |||
| 984c99f45e | |||
| 47ec5d10e9 | |||
| 43e45e5cce | |||
| 76a97d964f | |||
| 198e88682c | |||
| 6e57ee66c2 | |||
| 1ace7442a1 | |||
| cce4cbee10 | |||
| 3c7702789c | |||
| 65213eb7cf | |||
| 56d7a4cd23 | |||
| 8bd2c8752e | |||
| cd95d86540 | |||
| fa37b8c89f | |||
| 32a079507c | |||
| 0cb07052bd | |||
| 0455d520d1 | |||
| 1bca9316b4 | |||
| 60c25395eb | |||
| 3807536cf2 | |||
| fada191840 | |||
| b756f0fcd5 | |||
| f88825b93c | |||
| ae115a50f2 | |||
| 3d6a3f62ec | |||
| b0c93e7e00 | |||
| 96dc0bcb4c | |||
| c853611916 | |||
| 49f4828046 | |||
| 29dbc0af97 | |||
| bc064cf1c5 | |||
| 4f9ea610d6 | |||
| 9d04654018 | |||
| 8508faf26e | |||
| 71437939ab | |||
| e851e8c2c3 | |||
| f3e4069e8c | |||
| 3bce0bce82 | |||
| 38a61285b3 | |||
| 2a77cbf773 | |||
| 87b4be1860 | |||
| e55385b3f0 | |||
| 8d25b1b088 | |||
| 97ff9eb09e | |||
| f9c4bd1f99 | |||
| bd2c7dfc25 | |||
| f110213bb0 | |||
| 8fdab8a9cc | |||
| 1e68496efe | |||
| 172205b613 | |||
| a07b0a38ac | |||
| f70a139bd7 | |||
| b98af7060b | |||
| 31bb45950d | |||
| cd55babaa2 | |||
| d9b4ef2766 | |||
| e8a5db5dc2 | |||
| b69baaf428 | |||
| 550248aa4e | |||
| 229e7bf30e | |||
| e1f03b2909 | |||
| 696bbcdcdf | |||
| d61b5989c0 | |||
| dd73b1c3e5 | |||
| ecde37dbe6 | |||
| 279a89e424 | |||
| be47d4801a | |||
| 6a641139bd | |||
| d211c4408b | |||
| 5a6c1e7663 | |||
| 91944a9b8d | |||
| 4932c2dd5e | |||
| c66fcbd709 | |||
| 9f01990924 | |||
| 4b3c6bcb04 | |||
| c077387e5f | |||
| 877171faa7 | |||
| f9ecc03f9d | |||
| a419fb2214 | |||
| 838187c0ad | |||
| d7dc6ff8ab | |||
| 66ed46603b | |||
| 4323eb53b7 | |||
| 7c36c6ce14 | |||
| c9ec302d19 | |||
| 69bba83536 | |||
| 59ae3d5f9d | |||
| 72e4be86eb | |||
| 18c8afb616 | |||
| f74e15288b | |||
| 21b993d1cc | |||
| 9ee631dd7a | |||
| ba3536c4dd | |||
| 6e14ad1357 | |||
| ee84daa4b4 | |||
| 806697e20d | |||
| db9286108d | |||
| 709c6c3680 | |||
| 4a40717982 | |||
| 51f20ec168 | |||
| fc3d977050 | |||
| 38665036fc | |||
| d5cc53f975 | |||
| 1c539f857d | |||
| b241a2f367 | |||
| d9d4cf53f8 | |||
| 6649f93754 | |||
| 74d2b12889 | |||
| c594900d45 | |||
| f306041af9 | |||
| 5d7c159e34 | |||
| f4e951169a | |||
| 8d75aa0b2d | |||
| 88d712360a | |||
| a1691ae886 | |||
| 37f63e248a | |||
| 1a0e9429f7 | |||
| f2e7751d7f | |||
| 9857d75263 | |||
| 2af2fdd7a1 | |||
| 5eeba41413 | |||
| 794650d294 | |||
| 7013531715 | |||
| d35af50097 | |||
| 1c587f2ff3 | |||
| 2d344e086e | |||
| c5c6c46af8 | |||
| 0afd3fc6cf | |||
| 7f094e0a4f | |||
| 3506f691eb | |||
| 1f36d4eb75 | |||
| a7d433c2fd | |||
| 3ccb167d6d | |||
| 680ee14463 | |||
| 8c4162b885 | |||
| 15f4554703 | |||
| 56792d70ec | |||
| e82fa4e8c8 | |||
| b7636142cd | |||
| 43ae984817 | |||
| e3090bee73 | |||
| 587bbf860e | |||
| 17e31c6bbc | |||
| 3693fad125 | |||
| f275bee6c8 | |||
| 18d5042a21 | |||
| dd83ee0e5e | |||
| 0f944e4c05 | |||
| 98598ee3ce | |||
| 830c1059a9 | |||
| 53e8a42484 | |||
| ea7eaa106a | |||
| 936266ab11 | |||
| 26b08ec009 | |||
| 96673a4e69 | |||
| 81b3128ef6 | |||
| 55349958d3 | |||
| a6524d8d83 | |||
| 682f24b1be | |||
| 4fb4ab9ae2 | |||
| 64c833dfaf | |||
| fe1d58998c | |||
| 557844d07a | |||
| aac1ced91e | |||
| 45cd05c304 | |||
| 4da1706085 | |||
| b06ec10646 | |||
| 8ea5a5e6ae | |||
| 40d80808c3 | |||
| 66cce04e98 | |||
| 580c7302aa | |||
| f36bef6bde | |||
| 0bfb226119 | |||
| 6fd6982d0f | |||
| d1eb1353f5 | |||
| 7dce2b592f | |||
| bbec068d1d | |||
| 30c4099b64 | |||
| 8eec546631 | |||
| 21f9ed2d54 | |||
| a056244dd8 | |||
| d7e1dd20d9 | |||
| f1a7ba0f77 | |||
| 0540ee700d | |||
| 24d77739b9 | |||
| 6d4a886acb | |||
| af0c00d1d0 | |||
| 23c3d86c73 | |||
| 64d63b8f52 | |||
| 6b43b76880 | |||
| 31e03a7fb8 | |||
| c6d4c3f14b | |||
| 9f3521a716 | |||
| 767d687674 | |||
| 13312a62a1 | |||
| a12fe9a81a | |||
| c5e85ae57d | |||
| 0d8bfd7749 | |||
| d8993672c1 | |||
| fedd6a72ea | |||
| 36bd8b84e1 | |||
| c43ae9578b | |||
| 911845949e | |||
| 76c47913ea | |||
| fe1f7245b0 | |||
| ceadb80791 | |||
| cc27decf7a | |||
| cbd2d465e9 | |||
| de2a311f84 | |||
| afedf85534 | |||
| 5af43b4194 | |||
| 10e01b3270 | |||
| 7c6aaf80c3 | |||
| 0fcc535f53 | |||
| 6fe18fb699 | |||
| 5ee6829136 | |||
| 01c55c2428 | |||
| a21e14e5e6 | |||
| b4ecbdb587 | |||
| 299f017b06 | |||
| 3e1c32ff6c | |||
| 7a72b4229d | |||
| 5a9dc62173 | |||
| d146aa6af1 | |||
| 068f8722f0 | |||
| f2cf006a02 | |||
| c268e920c4 | |||
| e9eed8212a | |||
| 8753ac2d0b | |||
| 13578f0f2f | |||
| b8ceb39db9 | |||
| b22bd95f9f | |||
| b25ce91ca0 | |||
| dac3b34e64 | |||
| ae9427b508 | |||
| cd3715664f | |||
| 8136b19187 | |||
| a90a77a29d | |||
| 1006680dea | |||
| d0ad3c6e6e | |||
| 2e6e17f224 | |||
| 61830ffe71 | |||
| 1cb855c181 | |||
| c1eee689fd | |||
| d6c080930d | |||
| 67b70c3e5c | |||
| 07f7654c69 | |||
| 2f5e5683e9 | |||
| 1f2a665ef0 | |||
| 58e16598b1 | |||
| 16896d0b37 | |||
| 3f2a7346c5 | |||
| 3e1255349b | |||
| 7f3757e530 | |||
| d39656ad66 | |||
| 3d25e1799b | |||
| c937ee3afc | |||
| 43b8be4931 | |||
| 31879f6186 | |||
| 0c34239fab | |||
| 104c816612 | |||
| 60d177ba39 | |||
| b6cad25714 | |||
| 542f811107 | |||
| 4b80d21c00 | |||
| ab80268f61 | |||
| 30cd88a6b0 | |||
| 28d59ed58e | |||
| eb81d94717 | |||
| f1c4eff2d6 | |||
| d044e3dd2e | |||
| 6851655e0a | |||
| c7e6aba945 | |||
| 669249bdaa | |||
| 31488b2534 | |||
| 638e37a4b4 | |||
| 422e3ffaf5 | |||
| 8e26c50b92 | |||
| 0ff65b95b5 | |||
| 0f6d9c16b5 | |||
| a26a80596a | |||
| 1a1b5e9d07 | |||
| ad194bb96d | |||
| f8b20c8f20 | |||
| 6971afb3af | |||
| 50c3a83d84 | |||
| 33810fc79e | |||
| cd8cbe7d65 | |||
| e1bec5a053 | |||
| 1a53b35a1f | |||
| 968c7a922e | |||
| aac1a100d8 | |||
| 38c9906ada | |||
| 14744197ac | |||
| f374f6de9b | |||
| e7ccac616d | |||
| f76aee3783 | |||
| 4dd98a5554 | |||
| c70507cebd | |||
| dbc55aaa6f | |||
| 62a1a19d9d | |||
| 1ad395000d | |||
| e54127637e | |||
| 2fc1d31961 | |||
| 9e53d48c68 | |||
| 0b1f3996cf | |||
| b2688973f1 | |||
| 75fcb1c2be | |||
| c587c47b79 | |||
| d63ce02e5e | |||
| 2e371da2e5 | |||
| c52a7766c2 | |||
| d9337db684 | |||
| e5f2161604 | |||
| 9151dc75d8 | |||
| 3ce26e6b88 | |||
| 84026e498e | |||
| 29ff0aa3dd | |||
| fa76704fb5 | |||
| 5c59bfa474 | |||
| b5a5efde90 | |||
| 7c1f56d6a3 | |||
| b20bf2fbce | |||
| dbcddb6115 | |||
| 56ef64700f | |||
| 458fe29a91 | |||
| 8785a2bd04 | |||
| 16c9d54a30 | |||
| e26b4d0285 | |||
| 95d3326857 | |||
| c5175cdaeb | |||
| bb084f66e9 | |||
| 0960892340 | |||
| 34ef6d39f9 | |||
| 444340c880 | |||
| acbc487772 | |||
| 305c11dc6d | |||
| 8a7a76297a | |||
| f9c5e63136 | |||
| 1b70d8c5cf | |||
| 9f5a1ca09e | |||
| 1612dca680 | |||
| f78389127a | |||
| 52c2187734 | |||
| d1fadd9059 | |||
| 2ccd7409ca | |||
| 9e35e81a69 | |||
| 8a596d9d86 | |||
| d8e807633c | |||
| 81ca5204bb | |||
| ca54d98acf | |||
| 62b2ff0090 | |||
| ee976873ce | |||
| 411b951332 | |||
| 71ec7d1390 | |||
| 3571c9da85 | |||
| dee8dcddf8 | |||
| 85fa2c5f11 | |||
| d3881d19af | |||
| d16d6906b8 | |||
| 449ad7997e | |||
| 4d80db7ccb | |||
| b314c9648f | |||
| 77ff7edce5 | |||
| 5ee186ca15 | |||
| 92c34e0c28 | |||
| a38304d73b | |||
| 5fd0da5327 | |||
| 9ae7a67a40 | |||
| 48cb6d9065 | |||
| 62bc08a436 | |||
| e0e933132b | |||
| eba2fc481e | |||
| 15fa1daa8f | |||
| de6a1f4529 | |||
| 04e34161b1 | |||
| 575e2d246b | |||
| 88ee45885b | |||
| b48a197157 | |||
| 59c2ee28e1 | |||
| 4c32612a43 | |||
| 72e2184e0b | |||
| a221b2d5c1 | |||
| de60ad7c84 | |||
| 30293a616b | |||
| 16c76c92b3 | |||
| d22a30be53 | |||
| 92e165396d | |||
| b0899442ab | |||
| 991b456713 | |||
| 53dc030c22 | |||
| afd27f2a92 | |||
| 6a5c430830 | |||
| f04821fffe | |||
| eeeaf1a7c4 | |||
| 2c42201b15 | |||
| e3e7714f4c | |||
| 28ff9b7e6a | |||
| c92d1ac1ad | |||
| 3d214c7c2d | |||
| bfd689beab | |||
| 8879e0c222 | |||
| 794932ee3b | |||
| d5e56f4092 | |||
| ad0cc491f8 | |||
| a90dfeac07 | |||
| 61ae19567a | |||
| 2ffa0a3abf | |||
| 651de22342 | |||
| 3d5516e20c | |||
| 2270fe77b6 | |||
| 6514624612 | |||
| 4d4db27d49 | |||
| 9ff48eb543 | |||
| 519de26e6a | |||
| e1915e1741 | |||
| de177e0003 | |||
| c054d85b1c | |||
| 47e9b45cfa | |||
| f1f8d50c2e | |||
| e514c9ca09 | |||
| 336574206c | |||
| dcd302bf5b | |||
| 5aad861057 | |||
| 1098005af6 | |||
| 223b91e075 | |||
| ee80453e77 | |||
| a49bc73bbd | |||
| 818dfda0e3 | |||
| 33f62390c5 | |||
| fe143348a4 | |||
| 937c0a70d9 | |||
| 11c88abded | |||
| 9c43f16027 | |||
| ffc3b1baed | |||
| 73c349918f | |||
| 662009000d | |||
| d4ffdae2f4 | |||
| 1a69437e3f | |||
| a2210756c5 | |||
| 76dabd905e | |||
| 3c1be077b9 | |||
| 5aef2f7d40 | |||
| 7342a52609 | |||
| 8f1949c3fb | |||
| 09352dbcbc | |||
| b32cc2ade5 | |||
| eb457f8069 | |||
| bba6f699bd | |||
| 532b2e4e0a | |||
| 21beb27859 | |||
| 029655cb72 | |||
| ec8f733408 | |||
| 47449eb534 | |||
| 8d585f941d | |||
| 35e8d0a6a6 | |||
| 5662804337 | |||
| 523a3819d1 | |||
| 4532330c0c | |||
| 0362bbec14 | |||
| fcdd2dc92c | |||
| e7b81f510c | |||
| c3517e5f56 | |||
| 9af2f9f691 | |||
| 9ca1a031b5 | |||
| 640f815782 | |||
| 5885d6e400 | |||
| 897dcfb7e3 | |||
| 17589f5697 | |||
| 914f8bfa7e | |||
| 65f98fd3ec | |||
| f65f5a28e8 | |||
| c9ca8c21f3 | |||
| b0e4113b3b | |||
| 2a200b0e75 | |||
| f1b6044ed1 | |||
| 8891834ae1 | |||
| 4356ad0e2f | |||
| 3cbf606230 | |||
| fb75ecc61d | |||
| 792970dc7f | |||
| 30220aba6c | |||
| 6f0e14a560 | |||
| fb297a1016 | |||
| ea3baad219 | |||
| f12c527cdc | |||
| f16312b953 | |||
| de8abc2c4f | |||
| 3308c7424a | |||
| 12ca3743a1 | |||
| fc7fbfe0ee | |||
| 916a9ed923 | |||
| bd98e149f9 | |||
| a66048b432 | |||
| d8d8d7e990 | |||
| 8c5ce4880e | |||
| 14ef376f03 | |||
| ff5a75f687 | |||
| bbfd3a5de2 | |||
| a980904382 | |||
| 25d6f672a4 | |||
| 1922a9550b | |||
| 79b3cec6fb | |||
| e9f8555d37 | |||
| 0875217932 | |||
| 7dc0964759 | |||
| d7553fbce8 | |||
| 458e61b19c | |||
| d20693de9a | |||
| ea770a10ec | |||
| 970aa3133b | |||
| fe323511a4 | |||
| ea806f21d4 | |||
| a6a6cc3c09 | |||
| c334ff2851 | |||
| 40c8ca00db | |||
| a25c5fd551 | |||
| b6d0f00b34 | |||
| c020deea69 | |||
| 01e6c36348 | |||
| 1c9454a1cd | |||
| 0b65935549 | |||
| b48b9d1ef2 | |||
| c52a218305 | |||
| b5638ad2c8 | |||
| ca94ff3e9b | |||
| a306013288 | |||
| 90a73be013 | |||
| 4aa1b4eb50 | |||
| c2c92cf19c | |||
| d767f47422 | |||
| 442a0ad2b8 | |||
| 8b4fae6767 | |||
| 886e10612b | |||
| 5734351eca | |||
| c52894ecf0 | |||
| 72dd09aca1 | |||
| 4bd0343a63 | |||
| 961bb66e39 | |||
| 3e2f341bdb | |||
| e0dcde257a | |||
| e2ce1c442c | |||
| d3a25298d8 | |||
| b4edee45c2 | |||
| c830e627b0 | |||
| fcec5fff43 | |||
| 8a81c97ef3 | |||
| 6d46bb179c | |||
| a38eb82a2d | |||
| 2c01fd4182 | |||
| ad01749b10 | |||
| 201e9141a9 | |||
| dfbabf721d | |||
| 24553acae4 | |||
| ace16b05dd | |||
| 9222b90b24 | |||
| ac7da3935e | |||
| c08d1bd231 | |||
| 9635c7c8d5 | |||
| 51c00c532f | |||
| e386a42a43 | |||
| 26f5c4d041 | |||
| c3c4d5a027 | |||
| c416c53ec3 | |||
| 51c1e94c15 | |||
| 12657964c0 | |||
| b4a41673ed | |||
| a0c9d2570d | |||
| abca34497f | |||
| 3a66e81390 | |||
| 9c8ff97621 | |||
| fd3b272e31 | |||
| b14941d499 | |||
| b503ef1dec | |||
| f600f4903f | |||
| 023bf6d570 | |||
| 3e23890e43 | |||
| fc4dba9a75 | |||
| 2b56da08c6 | |||
| f95f539cad | |||
| d8b626139a | |||
| 477679c0a7 | |||
| 109ce61bbe | |||
| 0c50468ec2 | |||
| 71f03bde80 | |||
| b568faa7f2 | |||
| 31a84fd6ff | |||
| 30d497fef2 | |||
| 6e41aed96f | |||
| 9256aabe91 | |||
| 7d54322e8c | |||
| 364945be45 | |||
| 7932ba1f44 | |||
| 4eef13d9ba | |||
| 80ea020322 | |||
| 31d025a1b8 | |||
| b41644c69d | |||
| 0ec95f82d2 | |||
| 0df71d76df | |||
| d3f39e88dc | |||
| a8db853539 | |||
| ba4af473f4 | |||
| c272a4a8f9 | |||
| 16f1aba0c1 | |||
| 9be215cdea | |||
| f125369e88 | |||
| 73d9867b9a | |||
| 04b3882399 | |||
| ad0c8828cf | |||
| 89252b80bf | |||
| ab6ae9e7fb | |||
| c84eb4e185 | |||
| 00236ad9b1 | |||
| 3e9f37ea04 | |||
| 0019097d38 | |||
| 90284912bc | |||
| f9f63657fb | |||
| 319da87024 | |||
| b5cad0e00c | |||
| 892666e946 | |||
| d1f5b0ea4f | |||
| a8980eb4dd | |||
| 8482de47b2 | |||
| 7faec62f69 | |||
| 69f2ccceca | |||
| 476d89a651 | |||
| 690ae53780 | |||
| 58ed393097 | |||
| 4367c39873 | |||
| f32062d541 | |||
| eb57aa062e | |||
| fce3056d8f | |||
| 42bb93093c | |||
| e785e84bf2 | |||
| e2af0156c8 | |||
| b071daad02 | |||
| 4e7a020fc4 | |||
| ac53f1a812 | |||
| 5ed0ec12ea | |||
| fc0c2b0d13 | |||
| aa1f99e8f4 | |||
| 2b947bd5b1 | |||
| c0efbbd734 | |||
| 6379ff551d | |||
| 492d257fa5 | |||
| 3bebb475d7 | |||
| 4a832f376f | |||
| a5bd556df9 | |||
| c6710b1d64 | |||
| 731aa270b6 | |||
| 8c74fa0fc8 | |||
| 0bb41bb6dd | |||
| 92e9e59f02 | |||
| 7a177e4bb2 | |||
| e8625f81e9 | |||
| b14c343f14 | |||
| c364668759 | |||
| 3381fe405b | |||
| b738189d0c | |||
| ac914caf6a | |||
| 97e2c915cd | |||
| 21ed46cd7c | |||
| 7eb4e5ade9 | |||
| dae95bc5be | |||
| a33cf73ff1 | |||
| 18c30e5931 | |||
| 13c8f27411 | |||
| a640670baa | |||
| ae77733c71 | |||
| 6827360045 | |||
| 359e9745d6 | |||
| 56bcd3d56a | |||
| 8a81c546de | |||
| 23f0682eac | |||
| 418bc45bd2 | |||
| 1c4fece944 | |||
| 3716ba6b4f | |||
| 0e56be3428 | |||
| 7beef9441e | |||
| 176e3ba305 | |||
| ed045316ff | |||
| cfec304bbb | |||
| 575bb58bfc | |||
| 9ce3df4884 | |||
| 3c9875a110 | |||
| 8c69c549db | |||
| f1f919fe49 | |||
| 12cc080fc3 | |||
| 6b4b9a9aa7 | |||
| 6207e48d84 | |||
| b41dfdf664 | |||
| 8155f65fb9 | |||
| b0ca6aa757 | |||
| fd0251afbc | |||
| 5e16ae7463 | |||
| 2a2f4e4b9d | |||
| eef1d9531f | |||
| b92243118d | |||
| 01f9894fc6 | |||
| 03d202250b | |||
| 9cb8036b73 | |||
| 60fe3769e8 | |||
| 641bf821d4 | |||
| 25aa619445 | |||
| 5a0d476de3 | |||
| 00db8d0ae6 | |||
| ef66b6f848 | |||
| 59caed5e69 | |||
| dad0865d06 | |||
| c106c76cbc | |||
| 4181544de8 | |||
| 30c8414749 | |||
| 6bb9386773 | |||
| ae82cbcf67 | |||
| 518ac107c6 | |||
| 58f5f421e8 | |||
| 999950afc9 | |||
| 13a6249227 | |||
| c68df370cc | |||
| c08d551932 | |||
| fa63cf950a | |||
| 31cb1fd0f2 | |||
| 647236f7b0 | |||
| 43566fc4ae | |||
| 682c50793c | |||
| 2958b5a03c | |||
| 2b25d18bd5 | |||
| 248f9a5ba8 | |||
| 89ff802e16 | |||
| 13643dc1bc | |||
| 188ef240ae | |||
| a8c1b6363d | |||
| 8aaa6199f2 | |||
| 4cd544d59f | |||
| c9a4f2115d | |||
| 395efb8ef1 | |||
| 1280370a0a | |||
| f9bcfb5b50 | |||
| 3244b2d7e0 | |||
| eff0846c0f | |||
| e2a10d4067 | |||
| 39a1d16701 | |||
| adbe7f3295 | |||
| d67f234b2b | |||
| 14a3a77c9e | |||
| 0a1f505dd1 | |||
| c6b1af26ce | |||
| 4a42f1fc91 | |||
| 612a8f6d33 | |||
| e7b608ecc4 | |||
| bfe270b6e1 | |||
| e5f82cdb2d | |||
| d705c8cecc | |||
| f2613218db | |||
| 2099c4636c | |||
| 8cf93bfbc8 | |||
| b2dca45c34 | |||
| 403e4e1967 | |||
| 7ef771f14e | |||
| acb7db87df | |||
| 0f5b7f60b6 | |||
| d7264b0de1 | |||
| 23b518381a | |||
| 8876aae16c | |||
| 0ed5d1cf04 | |||
| 83decac5e9 | |||
| 9104494893 | |||
| 10d1a73eeb | |||
| 307c0b5edd | |||
| 321914861f | |||
| b851c527af | |||
| 69f1aa3072 | |||
| aeaee053c4 | |||
| 7632e82867 | |||
| ffbb5eb322 | |||
| fe6288d42c | |||
| f54ec0a5ab | |||
| 768b475183 | |||
| 0643968e77 | |||
| 18a17abad4 | |||
| c4b19710ef | |||
| 1beb1be29c | |||
| 621520e9e8 | |||
| f030f9b6ed | |||
| f6c5f90a75 | |||
| 3ad6f353b6 | |||
| debc426717 | |||
| 0e6f7110e4 | |||
| af3b9fcd6e | |||
| 8e5df9ff90 | |||
| 7e1eaf33af | |||
| 6a12e7cde9 | |||
| 9a4fb9fd61 | |||
| c77dd39a98 | |||
| a0a7d5755a | |||
| 5efa224a57 | |||
| 61e195d134 | |||
| 5b2c6db769 | |||
| c6fee1ccd6 | |||
| 60652a60df | |||
| b41f3576c9 | |||
| edacf85795 | |||
| 7dd9f021f0 | |||
| ce4da71c70 | |||
| 0380714faa | |||
| 2b7d962b27 | |||
| 11f73f74ff | |||
| 8cc101b169 | |||
| 0bd30d921b | |||
| fe238ca49a | |||
| 527a22c37b | |||
| e1ad72405f | |||
| 985a8b063d | |||
| 66677bc08e | |||
| f3434352d2 | |||
| 65b82b3609 | |||
| c3e544248f | |||
| 6a33d7ac72 | |||
| 9b8c5b9b19 | |||
| 130415e809 | |||
| 52a029e998 | |||
| d1a8286a21 | |||
| 78bccf2c7e | |||
| 4290cc3c35 | |||
| 8f70b0d26b | |||
| d9580c1dff | |||
| 763fa5e549 | |||
| 0c68ac35b5 | |||
| 3ed7128cc4 | |||
| d7f34d9f0e | |||
| 826fd6aaaf | |||
| 1fba2d19b3 | |||
| d92bbe59a6 | |||
| edc0243200 | |||
| 27ac4008f8 | |||
| 9dc7b851f5 | |||
| 4a2d941991 | |||
| a62c549e8f | |||
| 7232c54382 | |||
| 25067c9d06 | |||
| be8b1b696c | |||
| 885f18806e | |||
| b9ebf59fea | |||
| ba007b4710 | |||
| 1d8bc979c3 | |||
| a7197e360e | |||
| 878754ad8b | |||
| 4a08e654e0 | |||
| 5d94699990 | |||
| d98468a34d | |||
| 5f73e46e73 | |||
| 674ef50ac9 | |||
| d276202288 | |||
| 9b31f3be8d | |||
| 24d0f22f8e | |||
| 13cf7cd494 | |||
| 65c430318f | |||
| b4e6f9d48c | |||
| a024023c43 | |||
| 6edf2cd0b9 | |||
| d2b3e6b430 | |||
| b5476da7ef | |||
| 9c1afd279c | |||
| f998316b9e | |||
| fea1eade7f | |||
| 2517219f4c | |||
| c5d95b14ea | |||
| 0a7befb23b | |||
| 41116fb2b5 | |||
| cf2f5f2f9b | |||
| 35ba84724f | |||
| 2151fc6f90 | |||
| 45ed8258ca | |||
| ffc95dcd1b | |||
| 2c68166067 | |||
| ae83c7497a | |||
| 03c675cf62 | |||
| a4d8670563 | |||
| 0114b629e6 | |||
| 7f4280af72 | |||
| e7b4080c2a | |||
| c541832066 | |||
| 8b57bffcd6 | |||
| 7a4e3ad1a3 | |||
| 7a2c2c6201 | |||
| a8c0fdb670 | |||
| 5ce310fe6d | |||
| 89818e9ee2 | |||
| d943b85cc9 | |||
| 8eaa78bf4b | |||
| 82d6c29f21 | |||
| 72a8aa16bb | |||
| 5c9b799afe | |||
| eb584dac56 | |||
| 2fd610a09c | |||
| 8eb88f474a | |||
| f73291c269 | |||
| e93e5807f9 | |||
| 6d0a2e186b | |||
| c2a700ef3a | |||
| 7b0deaf9c1 | |||
| 98d1ccb2c0 | |||
| e6f46e1788 | |||
| e6c2becccb | |||
| cfc9f99c83 | |||
| 3c43b277b7 | |||
| 64f789e52a | |||
| 9ab4dae87b | |||
| f2b742e470 | |||
| a3f44fa53c | |||
| 91d06ef6a4 | |||
| b9df9861fc | |||
| 049e2a9214 | |||
| 78bb7ff465 | |||
| 8e04a559b9 | |||
| aa3f3e2269 | |||
| bcc505f5dd | |||
| f0617924b0 | |||
| 14c33a8191 | |||
| fcd92d0155 | |||
| 9d73c644a7 | |||
| c5c0fdc7cc | |||
| 42d7b8b820 | |||
| 2983dd6270 | |||
| 7d684153a9 | |||
| bc26eb05a7 | |||
| ec38767570 | |||
| 5340cfeb84 | |||
| 734e310f28 | |||
| e388cc7556 | |||
| 0263e08415 | |||
| 65f8fcc926 | |||
| 59a3c1d4de | |||
| 206d4d7433 | |||
| 8c8833b26e | |||
| 392a3e4998 | |||
| 76a423a964 | |||
| 63c19a0c61 | |||
| f3f4689cc8 | |||
| 2050efbfbf | |||
| 8d5734b739 | |||
| f23897d7d8 | |||
| 22b00bf301 | |||
| 76355d3ca1 | |||
| 14b29a6588 | |||
| 5eafcf5b76 | |||
| 9c43d22eb1 | |||
| 06428958dd | |||
| 0d84783032 | |||
| 25af8d6213 | |||
| e3549ce9e5 | |||
| 1d859e5c13 | |||
| 4ef84d1f8d | |||
| ed791eb748 | |||
| 5c6acc2028 | |||
| a9dc177a34 | |||
| ef32063715 | |||
| bdaa52dedc | |||
| c5d7ba76c7 | |||
| 358e8c9158 | |||
| d1dd841da8 | |||
| 8137ebfd99 | |||
| cc45eda3ef | |||
| 8415d92264 | |||
| 17d95716b6 | |||
| 6db2fc373d | |||
| ebbf404c68 | |||
| 9fc328f675 | |||
| ba489aaea3 | |||
| 67ec1dd41f | |||
| ae50fc36d6 | |||
| f401067dd9 | |||
| a02bee95de | |||
| ec7b2a2fe9 | |||
| 2a40427cd6 | |||
| eb42d3e4d1 | |||
| 03f4715693 | |||
| c35dfb8017 | |||
| 7bdacd9ed5 | |||
| c8ca22f308 | |||
| 13b147932e | |||
| 29b6dc17c0 | |||
| 8ff1df4333 | |||
| af0241f1eb | |||
| 3719cc90be | |||
| 396297d6f7 | |||
| cb4b5741d7 | |||
| da000e60bd | |||
| c4a38e7691 | |||
| 8972cd081b | |||
| b930a7e9f7 | |||
| 85a7fc8ca7 | |||
| 869a442843 | |||
| 49b6d81216 | |||
| 21d84fd39d | |||
| 2a12db0133 | |||
| 9c5118264c | |||
| 3a8df54936 | |||
| a3c8ad5efb | |||
| b38a1ccef8 | |||
| 321bb0bd16 | |||
| 6c96796584 | |||
| c6bc2ba192 | |||
| c5f8e0f7a2 | |||
| 9ff0e4cbe4 | |||
| 4c0a61ccad | |||
| 8ddabcee34 | |||
| ccef91e0ed | |||
| f9057b2983 | |||
| 5e276e88f8 | |||
| 6c4428b4ef | |||
| fd32e06cd2 | |||
| 1a4615a781 | |||
| 3823561a0a | |||
| b667a65f31 | |||
| 88df4c8d42 | |||
| 8082c06548 | |||
| 21bf90efc0 | |||
| 6d22f2d409 | |||
| ffa788dd4e | |||
| 79a045e3bb | |||
| 2fb8a97b71 | |||
| 26065f3699 | |||
| 4f2ba52404 | |||
| be23ff67aa | |||
| ff79cbf502 | |||
| 8b8f3fa54b | |||
| 1f2bb4c33a | |||
| 9d458b7e04 | |||
| dedf840131 | |||
| 7dc2c69292 | |||
| def86d31a4 | |||
| 3038f62405 | |||
| fe01b971cf | |||
| 918c865202 | |||
| 6e30f6cd4e | |||
| ff73c05ba6 | |||
| dbf520b556 | |||
| fc046db74b | |||
| 96bae83dd1 | |||
| aae802193c | |||
| 8dc316d6a4 | |||
| ad86356f9a | |||
| 007ef7304b | |||
| 019a6deaf4 | |||
| 7da96ad2c7 | |||
| 7ebc1ba322 | |||
| c5e9cb9c32 | |||
| a3ec52058e | |||
| d78f213006 | |||
| 73b2015d02 | |||
| cedad9a7a6 | |||
| 65d6c2f28f | |||
| 18c7618ebf | |||
| e29a5c2517 | |||
| 6f3c922010 | |||
| 2b902ef731 | |||
| 7cb070b6b1 | |||
| e788f5954e | |||
| bfb370d8fe | |||
| 0332b6c56b | |||
| e5bdab5a24 | |||
| a42ef3ff84 | |||
| da33cf1fd3 | |||
| 4290a5e814 | |||
| 8e425d5d87 | |||
| 8aeff4bb9a | |||
| 6d23ca208e | |||
| 41ccb74258 | |||
| 5f1b047221 | |||
| a5b26b92de | |||
| 5e71ef48dd | |||
| 2fc51aa02e | |||
| 7dc90af1c8 | |||
| 7a564110a5 | |||
| bb08cd494a | |||
| 3b5885e2c9 | |||
| d9810c3c1f | |||
| 13f060d100 | |||
| 40164e8cbd | |||
| f9187d3252 | |||
| b86fe8b3c7 | |||
| 9cdddb99c5 | |||
| 35bb470eb1 | |||
| 1a1597ba49 | |||
| 8c55eb48af | |||
| cd3dfb985c | |||
| 19bf7838c4 | |||
| 05da8fd990 | |||
| d28ad77974 | |||
| 379424e228 | |||
| 355336c9ff | |||
| 46b213bbfa | |||
| 4fda4eda9e | |||
| 3bffc0142c | |||
| 21f5d55569 | |||
| 12d7254c83 | |||
| 35dd9bb964 | |||
| e104aec12d | |||
| e11dcecace | |||
| 84d2f689ed | |||
| 52c060c8be | |||
| 28dc3d1a94 | |||
| ef2ee20495 | |||
| f4f253a218 | |||
| 2f0f3c74f3 | |||
| 2809615f7b | |||
| a617044695 | |||
| 379cd9e98d | |||
| 60d880aac2 | |||
| 89d736c311 | |||
| 96faa74cf0 | |||
| 0f6a8af649 | |||
| 80b3607bc1 | |||
| 9c1c2a21a4 | |||
| ab13ead2a8 | |||
| dea3f4f4fd | |||
| 4bf7d41ff1 | |||
| 54bb1e2064 | |||
| 3e818073e0 | |||
| 9c8d27e687 | |||
| ca138aa8af | |||
| 784df1e08f | |||
| a12846fddc | |||
| 820268a2a1 | |||
| 7e19f9ee0d | |||
| 6558683822 | |||
| 8401688019 | |||
| cfd999b373 | |||
| 70b156b828 | |||
| 6e056afe67 | |||
| caa93f691c | |||
| 34776f0af1 | |||
| 7f30239b2a | |||
| 6d744fab45 | |||
| cf6ed4a265 | |||
| 62e0472698 | |||
| d477340177 | |||
| f9c910f5ac | |||
| 41a225ec83 | |||
| 35c98d1b97 | |||
| 1a477e26bc | |||
| 8166950e74 | |||
| ea0d1cee92 | |||
| 8df0278272 | |||
| 6c471c33f7 | |||
| 5182276d1e | |||
| d18e69ee75 | |||
| f363249e41 | |||
| 342fbc2fcc | |||
| 150617ca7a | |||
| 7196117da7 | |||
| ba1feb92ec | |||
| 7452406a00 | |||
| 2c910092c8 | |||
| c3d9df2cb0 | |||
| b573560024 | |||
| 1633e21d9b | |||
| 406d7ae6e9 | |||
| 2055d2da9a | |||
| ec4fc1864c | |||
| fa0aa29974 | |||
| 8e4d046365 | |||
| aec2c05778 | |||
| 5cd78b81d1 | |||
| d906e2675d | |||
| ac5949e2a0 | |||
| 72111e6c3a | |||
| dad7e92a41 | |||
| 8cf07d7418 | |||
| 3ae887ef0e | |||
| ac34c94aad | |||
| dd54fa49f0 | |||
| 4f1920ac35 | |||
| 7693435eab | |||
| 5451b4cfb4 | |||
| 3677d8f6a1 | |||
| 8f3fd2e2a5 | |||
| d7a1249a3f | |||
| 290cfca8b3 | |||
| 5717331eb6 | |||
| 0bf5355641 | |||
| b4c0b61815 | |||
| 011c084203 | |||
| 10215a086f | |||
| 882c3f0c76 | |||
| c3151cc1f5 | |||
| cb1b2c04c7 | |||
| 8ab6e708f6 | |||
| 06805d8d27 | |||
| 557b1d375e | |||
| b9cf6573bd | |||
| 2cd17956fa | |||
| 435d82cfba | |||
| c1b7e8d56c | |||
| 2956e1599a | |||
| 4545f906ef | |||
| ae7d092e1a | |||
| 7252a96939 | |||
| b24abc3831 | |||
| 22395725a3 | |||
| 9beb7bc157 | |||
| f0d8a6b811 | |||
| 202ac3ca3b | |||
| 1f6075cae7 | |||
| 0ab8844d04 | |||
| 1bb1112db2 | |||
| 61804bcbe7 | |||
| 31ace98f68 | |||
| e9480830d8 | |||
| 7490f1ef84 | |||
| f7e41e3653 |
@@ -0,0 +1,134 @@
|
|||||||
|
<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
|
||||||
|
- [GROUPS](docs/GROUPS.md): Reusable package groups (dev, cybersecurity)
|
||||||
|
|
||||||
|
- [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
|
||||||
|
After Width: | Height: | Size: 837 KiB |
|
After Width: | Height: | Size: 738 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
@@ -0,0 +1,20 @@
|
|||||||
|
#!/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"
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/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)
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
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,7 +1,3 @@
|
|||||||
|
.sops.yaml
|
||||||
.claude/
|
.claude/
|
||||||
old/
|
old/
|
||||||
docs/superpowers/
|
|
||||||
.superpowers/
|
|
||||||
result/
|
|
||||||
.pre-commit-config.yaml
|
|
||||||
.direnv/
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
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,3 +1,4 @@
|
|||||||
|
[//]: # (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>
|
||||||
@@ -23,23 +24,20 @@
|
|||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, minimalist & easily
|
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, 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 & TUIs: Preconfigured Hyprland ecosystem with a lot of cool TUIs
|
- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!)
|
||||||
- 🎨 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
|
||||||
|
|
||||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
- [Table of Content](#table-of-content)
|
||||||
<!-- 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)
|
||||||
@@ -50,13 +48,11 @@ _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
|
||||||
|
|
||||||
@@ -91,7 +87,7 @@ This directory contains host-specific configurations. Each host includes:
|
|||||||
|
|
||||||
### 🖥️ /server-modules
|
### 🖥️ /server-modules
|
||||||
|
|
||||||
This folder contains server-related nixos modules. (gitea, cloudflared, self-hosted apps, ...)
|
This folder contains server-related nixos modules. (bitwarden, nextcloud, ...)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -134,6 +130,7 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
|||||||
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
||||||
collection of wallpapers
|
collection of wallpapers
|
||||||
- [NEOVIM](docs/NEOVIM.md): How to use the Neovim config in your own flake
|
- [NEOVIM](docs/NEOVIM.md): How to use the Neovim config in your own flake
|
||||||
|
- [GROUPS](docs/GROUPS.md): Reusable package groups (dev, cybersecurity)
|
||||||
|
|
||||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||||
- [LICENSE](LICENSE): MIT License
|
- [LICENSE](LICENSE): MIT License
|
||||||
|
|||||||
@@ -9,5 +9,8 @@ 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
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# Groups
|
||||||
|
|
||||||
|
Groups are curated sets of packages exposed as flake outputs. Each group has two forms:
|
||||||
|
|
||||||
|
- **`homeManagerModules.<group>`** — full home-manager module (packages + files + systemd units)
|
||||||
|
- **`packages.<group>`** — standalone environment for `nix shell` (packages only)
|
||||||
|
|
||||||
|
## Available groups
|
||||||
|
|
||||||
|
- dev (go, bun, air, ...)
|
||||||
|
- cybersecurity (nmap, john, dirb, ffuf, ...)
|
||||||
|
|
||||||
|
For the Cybersecurity group, the home-manager module also sets up:
|
||||||
|
|
||||||
|
- `~/Cyber/wordlists/` with SecLists, fuzz4bounty, and hashcat rules
|
||||||
|
- `~/Cyber/tmp/` as a temporary workspace
|
||||||
|
|
||||||
|
## Use in another flake
|
||||||
|
|
||||||
|
Add this repo as an input:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
inputs.nixy.url = "github:anotherhadi/nixy";
|
||||||
|
```
|
||||||
|
|
||||||
|
Import the home-manager module in your home configuration:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ inputs, ... }: {
|
||||||
|
imports = [
|
||||||
|
inputs.nixy.homeManagerModules.cybersecurity
|
||||||
|
# inputs.nixy.homeManagerModules.dev
|
||||||
|
];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick shell without installing
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix shell github:anotherhadi/nixy#cybersecurity
|
||||||
|
nix shell github:anotherhadi/nixy#dev
|
||||||
|
```
|
||||||
|
|
||||||
|
This drops you into a shell with all tools in `PATH`. No home-manager required, no wordlists or systemd units.
|
||||||
@@ -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: ai, clue, comment, diff, git, icons, indentscope, jump2d, pairs, starter, statusline, surround |
|
| `mini.nix` | Mini.nvim suite: pairs, comment, icons, indentscope, diff, git |
|
||||||
|
|||||||
@@ -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,17 +17,13 @@ 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. (legally ofc)
|
- **Arr Stack (Radarr, Sonarr, etc.)**: Automated media management tools for handling movies and TV shows. (legaly ofc)
|
||||||
- **Mealie**: A self-hosted recipe manager and meal planner with a clean user interface.
|
- **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, Kernel Hardening
|
- **Security related stuff**: Cloudflared, Fail2Ban, Firewall
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
# Themes
|
# Themes
|
||||||
|
|
||||||
Themes are defined in `themes/`. They define the colors, fonts, icons, wallpaper, and other visual settings used by Hyprland and all apps/programs.
|
Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
|
||||||
You can change the selected theme by changing the import statement in your host's `variables.nix` file.
|
You can change the selected theme by changing the import statement of your host's variables.nix file.
|
||||||
|
|
||||||
## Create your theme
|
## Create your theme
|
||||||
|
|
||||||
Create a copy of `themes/nixy.nix` and change the variables.
|
Create a copy of one of the existing themes and change the variables.
|
||||||
Wallpapers are loaded from my [awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo.
|
Wallpapers are loaded from the [hadi's awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo.
|
||||||
|
|
||||||
|
## Gallery
|
||||||
|
|
||||||
|
### Rose-pine
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|||||||
@@ -1,5 +1,23 @@
|
|||||||
{
|
{
|
||||||
"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"
|
||||||
@@ -71,7 +89,7 @@
|
|||||||
"blog": {
|
"blog": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"bun2nix": "bun2nix",
|
"bun2nix": "bun2nix",
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780522780,
|
"lastModified": 1780522780,
|
||||||
@@ -137,10 +155,50 @@
|
|||||||
"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_2"
|
"nixpkgs": "nixpkgs_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780323652,
|
"lastModified": 1780323652,
|
||||||
@@ -156,34 +214,14 @@
|
|||||||
"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": 1783570805,
|
"lastModified": 1779670703,
|
||||||
"narHash": "sha256-ptl5aRlCv9/uRSv2u8Hq8UFVFeZ6Q/bT049bpqNgc3w=",
|
"narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=",
|
||||||
"owner": "rafaelmardojai",
|
"owner": "rafaelmardojai",
|
||||||
"repo": "firefox-gnome-theme",
|
"repo": "firefox-gnome-theme",
|
||||||
"rev": "5602ed62d638142c1ab31dccd01dfbfb28841225",
|
"rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -193,22 +231,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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,
|
||||||
@@ -261,6 +283,24 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -281,7 +321,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_4": {
|
"flake-parts_5": {
|
||||||
|
"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",
|
||||||
@@ -289,11 +350,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782949081,
|
"lastModified": 1778716662,
|
||||||
"narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -318,27 +379,6 @@
|
|||||||
"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": {
|
||||||
@@ -359,15 +399,15 @@
|
|||||||
"helium-browser": {
|
"helium-browser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787301512,
|
"lastModified": 1781783441,
|
||||||
"narHash": "sha256-VYbNaWAcwK9G+mq3jmqyCu6t4zUNUOTT8PXB3pj7XgA=",
|
"narHash": "sha256-v7rAVyX0DGAYqei3FxWPDJLqrzJrEsue2DVBEDApxQo=",
|
||||||
"owner": "oxcl",
|
"owner": "oxcl",
|
||||||
"repo": "nix-flake-helium-browser",
|
"repo": "nix-flake-helium-browser",
|
||||||
"rev": "4fe9ac832466143224203f896a3a38aa8c73b611",
|
"rev": "aabc12cf6518480d83b2b5d06d2eecf86a25273f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -383,33 +423,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787146702,
|
"lastModified": 1782103446,
|
||||||
"narHash": "sha256-YbRcLdU/yK4gWsQg7V8WTKZHfXL33g8+wSFUX3wyevs=",
|
"narHash": "sha256-+vMR3KPBVoY9nJrQI9qje5H1vmv51dJgMYkUuYimtJg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "173b7e8d40fdc8c296a9c99854314f17a3a1704c",
|
"rev": "d8dac1f668fd861369571be3678ec75b1573e7e3",
|
||||||
"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": {
|
||||||
@@ -418,22 +436,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"impermanence": {
|
"iknowyou": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager_2",
|
"bun2nix": "bun2nix_3",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"nur-osint": "nur-osint"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769548169,
|
"lastModified": 1779949739,
|
||||||
"narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=",
|
"narHash": "sha256-axo7EprQSm8yYL4P6Ye9EZGEz/bdh8HHkmBlRIQzzvM=",
|
||||||
"owner": "nix-community",
|
"owner": "anotherhadi",
|
||||||
"repo": "impermanence",
|
"repo": "iknowyou",
|
||||||
"rev": "7b1d382faf603b6d264f58627330f9faa5cba149",
|
"rev": "bb778b43747b7e703e2c311a898198c4a89ac12a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "anotherhadi",
|
||||||
"repo": "impermanence",
|
"repo": "iknowyou",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -467,6 +486,21 @@
|
|||||||
"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,
|
||||||
@@ -489,11 +523,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1786852476,
|
"lastModified": 1782030356,
|
||||||
"narHash": "sha256-IM5CYtf86W4w8eUPpKcY/LpdHElmVBtJhaKnoTKxZEA=",
|
"narHash": "sha256-h4WpMr455AfRub0FXBaon6Vcpe0waUyJ4GivIW6oyd4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "c7962dc97b45129df8d751bedaf37beb5a17706e",
|
"rev": "3017088b49efd404f78e3b104f553b97e4af786b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -504,35 +538,35 @@
|
|||||||
},
|
},
|
||||||
"nixarr": {
|
"nixarr": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_5",
|
||||||
"treefmt-nix": "treefmt-nix_3",
|
"treefmt-nix": "treefmt-nix_4",
|
||||||
"vpnconfinement": "vpnconfinement",
|
"vpnconfinement": "vpnconfinement",
|
||||||
"website-builder": "website-builder"
|
"website-builder": "website-builder"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784997863,
|
"lastModified": 1781774207,
|
||||||
"narHash": "sha256-oTMag4I9MW3bstuOKqzc0F1OqxO49lLa9jkSkRe3EqA=",
|
"narHash": "sha256-pUHOn5uRbY1yOdeBgfm/UpkVkN9YrLUxl7jZnN1emyo=",
|
||||||
"owner": "nix-media-server",
|
"owner": "rasmus-kirk",
|
||||||
"repo": "nixarr",
|
"repo": "nixarr",
|
||||||
"rev": "282ce99b31d52d72cca281e3d26d3dd267946800",
|
"rev": "67952a6e79a298396e909d35f7ee35b23f754c43",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-media-server",
|
"owner": "rasmus-kirk",
|
||||||
"repo": "nixarr",
|
"repo": "nixarr",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_6"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787144466,
|
"lastModified": 1782166108,
|
||||||
"narHash": "sha256-HHfv2/HkNSKbbSyU9iD/g8lbP6r4tl33sSw1W4rXCk0=",
|
"narHash": "sha256-/EtnQBcKbsaCAGQ5VRcplrHRkR4ryqyLMpBfkVuG9Xw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "0471accf8d0a8210b31d947497d179ecc99e0021",
|
"rev": "875776f0252fcb8618bb948640a0d1f7a5b362be",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -543,15 +577,15 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776548001,
|
"lastModified": 1774106199,
|
||||||
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
|
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
|
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
@@ -587,23 +621,54 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-lib_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787135253,
|
"lastModified": 1769909678,
|
||||||
"narHash": "sha256-RD2kNWCG+Bjo6h+JVjWVNntZs2GtRoeY2xHjts/FNkA=",
|
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
|
||||||
|
"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": "ffb3c9b700e759be2ef13237c9d8f953b32a1e46",
|
"rev": "34268251cf5547d39063f2c5ea9a196246f7f3a6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-26.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1776548001,
|
||||||
|
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772773019,
|
"lastModified": 1772773019,
|
||||||
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
|
"narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=",
|
||||||
@@ -619,23 +684,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1768564909,
|
"lastModified": 1775710090,
|
||||||
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
|
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
|
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
|
||||||
"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_4": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775595990,
|
"lastModified": 1775595990,
|
||||||
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
|
"narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=",
|
||||||
@@ -651,7 +716,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767892417,
|
"lastModified": 1767892417,
|
||||||
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
|
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
|
||||||
@@ -664,13 +729,29 @@
|
|||||||
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_7": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787204541,
|
"lastModified": 1781577229,
|
||||||
"narHash": "sha256-OURZPknrTjQrlNyxPdqzyqmU/81Wes1CUP/Ft1Rv/YI=",
|
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5880666fd9eb563038431edb35c2d0aa595884e6",
|
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
|
||||||
|
"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": {
|
||||||
@@ -680,32 +761,41 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"notashelf-tuigreet": {
|
||||||
|
"inputs": {
|
||||||
|
"crane": "crane",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784796856,
|
"lastModified": 1781718334,
|
||||||
"narHash": "sha256-vwxWgF+Gj276WznzGb1LxGsK/39HaQwgQXiU3EkC844=",
|
"narHash": "sha256-Ova9OQemsGRmg2b22W9HQSRhtjwS1C9mLUtkYqEjyRs=",
|
||||||
"rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
|
"owner": "NotAShelf",
|
||||||
"type": "tarball",
|
"repo": "tuigreet",
|
||||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1040357.e2587caef70c/nixexprs.tar.xz"
|
"rev": "a75f469d51a11b35f9766153d35d15c535b268a6",
|
||||||
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"owner": "NotAShelf",
|
||||||
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
"repo": "tuigreet",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_3",
|
"flake-parts": "flake-parts_4",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787315761,
|
"lastModified": 1782288426,
|
||||||
"narHash": "sha256-1ze3fFnH7GhN6P3e76Ved2OGNLU/r1Pgo59TbPi9Pg8=",
|
"narHash": "sha256-SNJtZSWJ4/ZGmD2PCpbpOggNugnNs917knMbmUi+1oU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "9fd3c9b18edddb6c611fcbee9974d3b6de5443a7",
|
"rev": "b944f4918bc67344f4c9253ea4b72cddda85a9d7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -714,6 +804,27 @@
|
|||||||
"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": [
|
||||||
@@ -726,11 +837,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785549842,
|
"lastModified": 1780281641,
|
||||||
"narHash": "sha256-DCwBZmGsySF7oKGTRgEv2HvpxVXkHT+38VhTM76k0B4=",
|
"narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "a9f987b57594e845e3e5cdd423b9a70846d70308",
|
"rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -741,16 +852,18 @@
|
|||||||
},
|
},
|
||||||
"nvf": {
|
"nvf": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-parts": "flake-parts_5",
|
||||||
"mnw": "mnw",
|
"mnw": "mnw",
|
||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_8",
|
||||||
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787305329,
|
"lastModified": 1781997110,
|
||||||
"narHash": "sha256-nYA+0kCn0h0dsaApPWuSJwIlBrPchqJphnfGLzDCOFs=",
|
"narHash": "sha256-6D6xtYN5t1kZGNd69eMZsRBkgX5Df1roErn/kFR1C+A=",
|
||||||
"owner": "notashelf",
|
"owner": "notashelf",
|
||||||
"repo": "nvf",
|
"repo": "nvf",
|
||||||
"rev": "93cb00e768908ba77f64a846f487e43e79130796",
|
"rev": "320f60b97075a58d38b90fc5e39f478421dbd38a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -759,46 +872,47 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nvf-config": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nvf": [
|
|
||||||
"nvf"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"path": "./home/programs/tui/nvf",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"path": "./home/programs/tui/nvf",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
"parent": []
|
|
||||||
},
|
|
||||||
"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",
|
||||||
"impermanence": "impermanence",
|
"iknowyou": "iknowyou",
|
||||||
"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_6",
|
"nixpkgs": "nixpkgs_7",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"notashelf-tuigreet": "notashelf-tuigreet",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"nvf": "nvf",
|
"nvf": "nvf",
|
||||||
"nvf-config": "nvf-config",
|
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"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": [
|
||||||
@@ -806,11 +920,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1786629091,
|
"lastModified": 1781943681,
|
||||||
"narHash": "sha256-gkig4nPi1CWc4Z50GBsjE4ygSE7hMpl/TwID2an2Cck=",
|
"narHash": "sha256-NFHmA7H47adqiyp+0iEOyZOQhmigDqA/NBAlf4imB6U=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "a8627b21b9107c5711c96b84f32a9a4b3d45295f",
|
"rev": "420f8d2e9882911f65cfac15cc706f639ba96cca",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -826,29 +940,28 @@
|
|||||||
"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_4",
|
"flake-parts": "flake-parts_6",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nur": "nur_2",
|
"nur": "nur_2",
|
||||||
"systems": "systems_3",
|
"systems": "systems_5",
|
||||||
"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": 1786383226,
|
"lastModified": 1781997134,
|
||||||
"narHash": "sha256-SM00z+A0/ruFPGCRdoxDnApVGa3A1iLlhRmMvnGH7tU=",
|
"narHash": "sha256-muBZG4O/agq/ljgHr6c3AsobIWgODAS6vf50xIS7o+Q=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "a01dcef2f28b4106d6b3817ab89280194bf716d3",
|
"rev": "a6a493119e492e15874caf6f7f8c7e572e64c655",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-26.05",
|
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -898,6 +1011,36 @@
|
|||||||
"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": {
|
||||||
@@ -917,11 +1060,11 @@
|
|||||||
"tinted-schemes": {
|
"tinted-schemes": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785153830,
|
"lastModified": 1777806186,
|
||||||
"narHash": "sha256-fNdfCTeCXU3tZG3TMincd+u68qBHQgCr2Ljr/M1mWP0=",
|
"narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "schemes",
|
"repo": "schemes",
|
||||||
"rev": "9bd28ed313560db3c5b605c63bc4e309e78e3fc8",
|
"rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -933,11 +1076,11 @@
|
|||||||
"tinted-tmux": {
|
"tinted-tmux": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785031658,
|
"lastModified": 1778379944,
|
||||||
"narHash": "sha256-mZp9O2LjzdMzlqQF3l3fjqsuPBzXy+1qTfBEUGjTlpk=",
|
"narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "tinted-tmux",
|
"repo": "tinted-tmux",
|
||||||
"rev": "5d2c67f61ea7af36f16865ab6d541cdba41dc257",
|
"rev": "fe0203a198690e71a5ff11e08812a4673de3678d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -949,11 +1092,11 @@
|
|||||||
"tinted-zed": {
|
"tinted-zed": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785030526,
|
"lastModified": 1778378178,
|
||||||
"narHash": "sha256-klZf8UviewRkxuu74Bhbq6tqy7oxebQC7UVRWbbtQxU=",
|
"narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-zed",
|
"repo": "base16-zed",
|
||||||
"rev": "16f5a8adf4a6b1310d0a61ab172de963e8f76a02",
|
"rev": "9cd816033ff969415b190722cddf134e78a5665f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1007,6 +1150,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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,15 +6,10 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||||
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 = {
|
|
||||||
url = "path:./home/programs/tui/nvf";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
inputs.nvf.follows = "nvf";
|
|
||||||
};
|
|
||||||
nur = {
|
nur = {
|
||||||
url = "github:nix-community/nur";
|
url = "github:nix-community/nur";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -24,82 +19,63 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-26.05";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
stylix = {
|
stylix = {
|
||||||
url = "github:nix-community/stylix/release-26.05";
|
url = "github:nix-community/stylix";
|
||||||
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";
|
||||||
};
|
};
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
notashelf-tuigreet = {
|
||||||
disko = {
|
url = "github:NotAShelf/tuigreet";
|
||||||
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:nix-media-server/nixarr";
|
nixarr.url = "github:rasmus-kirk/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-unstable,
|
nixpkgs-stable,
|
||||||
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/nvf/flake.nix args)
|
||||||
|
(import ./home/programs/group/flake.nix args)
|
||||||
|
(import ./home/programs/nixy/flake.nix args)
|
||||||
{
|
{
|
||||||
formatter.${system} = pkgs.alejandra;
|
formatter.${system} = pkgs.alejandra;
|
||||||
packages.${system}.nvim = inputs.nvf-config.packages.${system}.nvim;
|
|
||||||
apps.${system}.nvim = inputs.nvf-config.apps.${system}.nvim;
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
h-laptop = import ./hosts/laptop/flake.nix args;
|
h-laptop = import ./hosts/laptop/flake.nix args;
|
||||||
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};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cursorShaders = pkgs.fetchFromGitHub {
|
||||||
|
owner = "sahaj-b";
|
||||||
|
repo = "ghostty-cursor-shaders";
|
||||||
|
rev = "06d4e90fb5410e9c4d0b3131584060adddf89406";
|
||||||
|
hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw=";
|
||||||
|
};
|
||||||
|
c = config.lib.stylix.colors;
|
||||||
|
in {
|
||||||
|
home.sessionVariables = {
|
||||||
|
TERMINAL = "ghostty";
|
||||||
|
TERM = "ghostty";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
installVimSyntax = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
window-padding-x = 10;
|
||||||
|
confirm-close-surface = false;
|
||||||
|
window-padding-y = 10;
|
||||||
|
clipboard-read = "allow";
|
||||||
|
clipboard-write = "allow";
|
||||||
|
copy-on-select = "clipboard";
|
||||||
|
app-notifications = false;
|
||||||
|
custom-shader = "${cursorShaders}/cursor_warp.glsl";
|
||||||
|
custom-shader-animation = "always";
|
||||||
|
keybind = [
|
||||||
|
# "ctrl+j=goto_split:left"
|
||||||
|
# "ctrl+i=goto_split:up"
|
||||||
|
# "ctrl+k=goto_split:down"
|
||||||
|
# "ctrl+l=goto_split:right"
|
||||||
|
# "shift+ctrl+h=new_split:left"
|
||||||
|
# "shift+ctrl+j=new_split:down"
|
||||||
|
# "shift+ctrl+k=new_split:up"
|
||||||
|
# "shift+ctrl+l=new_split:right"
|
||||||
|
"shift+ctrl+tab=new_tab"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".config/ilovetui/config.yaml".text = ''
|
||||||
|
colors:
|
||||||
|
base00: "#${c.base00}" # Background
|
||||||
|
base01: "#${c.base01}" # Lighter Background / Status Bars
|
||||||
|
base02: "#${c.base02}" # Selection Background
|
||||||
|
base03: "#${c.base03}" # Comments / Invisibles
|
||||||
|
base04: "#${c.base04}" # Dark Foreground / Status Bars
|
||||||
|
base05: "#${c.base05}" # Default Foreground
|
||||||
|
base06: "#${c.base06}" # Light Foreground
|
||||||
|
base07: "#${c.base07}" # Light Background
|
||||||
|
base08: "#${c.base08}" # Variables / Errors / Diff Deleted
|
||||||
|
base09: "#${c.base09}" # Integers / Constants / Booleans
|
||||||
|
base0a: "#${c.base0A}" # Classes / Warnings / Search Background
|
||||||
|
base0b: "#${c.base0B}" # Strings / Success / Diff Inserted
|
||||||
|
base0c: "#${c.base0C}" # Support / Regex / Escape Characters
|
||||||
|
base0d: "#${c.base0D}" # Functions / Methods / Headings / Accent
|
||||||
|
base0e: "#${c.base0E}" # Keywords / Storage / Diff Changed
|
||||||
|
base0f: "#${c.base0F}" # Embedded / Misc
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -16,18 +16,16 @@ in {
|
|||||||
"node_modules"
|
"node_modules"
|
||||||
"result"
|
"result"
|
||||||
"result-*"
|
"result-*"
|
||||||
".superpowers/"
|
|
||||||
".claude/"
|
|
||||||
"docs/superpowers/"
|
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
user.name = username;
|
user.name = username;
|
||||||
user.email = email;
|
user.email = email;
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
pull.rebase = "true";
|
pull.rebase = "false";
|
||||||
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";
|
||||||
@@ -42,10 +40,13 @@ in {
|
|||||||
d = "diff";
|
d = "diff";
|
||||||
ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)";
|
ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)";
|
||||||
pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)";
|
pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)";
|
||||||
|
af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)";
|
||||||
st = "status";
|
st = "status";
|
||||||
br = "branch";
|
br = "branch";
|
||||||
|
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
|
||||||
hist = ''log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
|
hist = ''log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
|
||||||
llog = ''log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
|
llog = ''log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
|
||||||
|
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
pkgs-stable,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs-stable; [
|
||||||
|
vlc # Video player
|
||||||
|
obsidian # Note taking app
|
||||||
|
textpieces # Manipulate texts
|
||||||
|
resources # Ressource monitor
|
||||||
|
gnome-clocks # Clocks app
|
||||||
|
gnome-text-editor # Basic graphic text editor
|
||||||
|
ticktick # Todo app
|
||||||
|
pinta # Image editor
|
||||||
|
switcheroo # Convert images between different formats
|
||||||
|
onlyoffice-desktopeditors # Office suite
|
||||||
|
blanket # Listen to different sounds
|
||||||
|
signal-desktop # Messaging app
|
||||||
|
|
||||||
|
# I love TUIs
|
||||||
|
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
|
||||||
|
sttr # Minimalist "cyberchef" like. Cross-platform, cli app to perform various operations on string
|
||||||
|
wiremix # Simple TUI mixer for PipeWire
|
||||||
|
slides # A terminal-based presentation tool that allows you to create and deliver presentations directly from the command line
|
||||||
|
pom # Pomodoro timer in your terminal
|
||||||
|
tabiew # A terminal-based CSV viewer and manipulator
|
||||||
|
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.sheets # Terminal based spreadsheet tool
|
||||||
|
|
||||||
|
# I love CLIs
|
||||||
|
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
||||||
|
gh # GitHub
|
||||||
|
gh-dash # A terminal dashboard for GitHub
|
||||||
|
figlet # Transform text into ASCII art
|
||||||
|
pastel # Command-line tool to generate, analyze, convert and manipulate colors
|
||||||
|
imagemagick # Image manipulation tool
|
||||||
|
chafa # Image to ANSI/Unicode converter and more.
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,20 +1,25 @@
|
|||||||
{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
|
||||||
@@ -23,7 +28,6 @@
|
|||||||
dig
|
dig
|
||||||
nmap
|
nmap
|
||||||
samba
|
samba
|
||||||
hydra
|
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
metasploit
|
metasploit
|
||||||
@@ -35,6 +39,9 @@
|
|||||||
|
|
||||||
# Forensics
|
# Forensics
|
||||||
binwalk
|
binwalk
|
||||||
pkgs.nur.repos.anotherhadi.spilltea
|
])
|
||||||
pkgs.nur.repos.anotherhadi.jwt-tui
|
++ [ pkgs.dnsrecon ]
|
||||||
|
++ (with pkgs.nur.repos.anotherhadi; [
|
||||||
|
spilltea
|
||||||
|
jwt-tui
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
pkgs-stable,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = import ./cybersecurity-packages.nix {
|
home.packages = import ./cybersecurity-packages.nix {
|
||||||
inherit pkgs;
|
inherit pkgs pkgs-stable;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.tmpfiles.rules = [
|
systemd.user.tmpfiles.rules = [
|
||||||
@@ -42,10 +41,4 @@
|
|||||||
hash = "sha256-T0XkMHJZQiy63/j25nGTkaiDFjc+blmgEVGTAFgVylU=";
|
hash = "sha256-T0XkMHJZQiy63/j25nGTkaiDFjc+blmgEVGTAFgVylU=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
directories = [
|
|
||||||
"Cyber"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
pkgs-stable,
|
||||||
|
}:
|
||||||
|
(with pkgs; [
|
||||||
|
go
|
||||||
|
claude-code
|
||||||
|
])
|
||||||
|
++ (with pkgs-stable; [
|
||||||
|
nodejs
|
||||||
|
air
|
||||||
|
duckdb
|
||||||
|
python3
|
||||||
|
jq
|
||||||
|
nix-prefetch-github
|
||||||
|
rsync
|
||||||
|
])
|
||||||
@@ -1,34 +1,7 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-unstable,
|
pkgs-stable,
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home = {
|
home.packages = import ./dev-packages.nix {inherit pkgs pkgs-stable;};
|
||||||
packages = with pkgs-unstable;
|
|
||||||
[
|
|
||||||
go
|
|
||||||
claude-code
|
|
||||||
]
|
|
||||||
++ (with pkgs; [
|
|
||||||
nodejs
|
|
||||||
air
|
|
||||||
duckdb
|
|
||||||
python3
|
|
||||||
jq
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
pkgs-stable,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
devPackages = import ./dev-packages.nix {inherit pkgs pkgs-stable;};
|
||||||
|
cyberPackages = import ./cybersecurity-packages.nix {inherit pkgs pkgs-stable;};
|
||||||
|
in {
|
||||||
|
packages.${system} = {
|
||||||
|
dev = pkgs.buildEnv {
|
||||||
|
name = "dev-tools";
|
||||||
|
paths = devPackages;
|
||||||
|
};
|
||||||
|
cybersecurity = pkgs.buildEnv {
|
||||||
|
name = "cybersecurity-tools";
|
||||||
|
paths = cyberPackages;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{pkgs-stable, ...}: {
|
||||||
|
home.packages = with pkgs-stable; [
|
||||||
|
tty-solitaire
|
||||||
|
bastet
|
||||||
|
peaclock
|
||||||
|
cbonsai
|
||||||
|
pipes
|
||||||
|
cmatrix
|
||||||
|
fastfetch
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
vlc # Video player
|
|
||||||
obsidian # Note taking app
|
|
||||||
pinta # Image editor
|
|
||||||
onlyoffice-desktopeditors # Office suite
|
|
||||||
blanket # Listen to different sounds
|
|
||||||
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"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -43,10 +43,6 @@
|
|||||||
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-unstable,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
@@ -44,11 +44,11 @@
|
|||||||
"--show-avatar-button=never"
|
"--show-avatar-button=never"
|
||||||
];
|
];
|
||||||
|
|
||||||
originalPkg = (inputs.helium-browser.packages.${pkgs-unstable.stdenv.hostPlatform.system}.helium).override {
|
originalPkg = (inputs.helium-browser.packages.${pkgs.stdenv.hostPlatform.system}.helium).override {
|
||||||
flags = heliumFlags;
|
flags = heliumFlags;
|
||||||
};
|
};
|
||||||
|
|
||||||
patchScript = pkgs-unstable.writeShellScript "helium-patch-prefs" ''
|
patchScript = pkgs.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-unstable.jq} \
|
${lib.getExe pkgs.jq} \
|
||||||
--arg id "${themeId}" \
|
--arg id "${themeId}" \
|
||||||
--slurpfile manifest "$THEME_DIR/manifest.json" \
|
--slurpfile manifest "$THEME_DIR/manifest.json" \
|
||||||
'
|
'
|
||||||
@@ -85,13 +85,12 @@
|
|||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
baseWrapped = pkgs-unstable.symlinkJoin {
|
baseWrapped = pkgs.symlinkJoin {
|
||||||
name = "helium-wrapped";
|
name = "helium-wrapped";
|
||||||
paths = [originalPkg];
|
paths = [originalPkg];
|
||||||
nativeBuildInputs = [pkgs-unstable.makeWrapper];
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/helium \
|
wrapProgram $out/bin/helium \
|
||||||
--set-default GTK_USE_PORTAL 1 \
|
|
||||||
--run ${lib.escapeShellArg (toString patchScript)}
|
--run ${lib.escapeShellArg (toString patchScript)}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
@@ -112,7 +111,7 @@ in {
|
|||||||
|
|
||||||
xdg.desktopEntries.helium = {
|
xdg.desktopEntries.helium = {
|
||||||
name = "Helium";
|
name = "Helium";
|
||||||
genericName = "Web Browser";
|
genericName = "Navigateur Web";
|
||||||
exec = "${config.programs.helium.package}/bin/helium %U";
|
exec = "${config.programs.helium.package}/bin/helium %U";
|
||||||
icon = "${config.programs.helium.package}/share/icons/hicolor/256x256/apps/helium.png";
|
icon = "${config.programs.helium.package}/share/icons/hicolor/256x256/apps/helium.png";
|
||||||
terminal = false;
|
terminal = false;
|
||||||
@@ -129,17 +128,11 @@ in {
|
|||||||
|
|
||||||
xdg.desktopEntries.helium-private = {
|
xdg.desktopEntries.helium-private = {
|
||||||
name = "Helium (Private window)";
|
name = "Helium (Private window)";
|
||||||
genericName = "Web Browser";
|
genericName = "Navigateur Web";
|
||||||
exec = "${config.programs.helium.package}/bin/helium --incognito %U";
|
exec = "${config.programs.helium.package}/bin/helium --incognito %U";
|
||||||
icon = "${config.programs.helium.package}/share/icons/hicolor/256x256/apps/helium.png";
|
icon = "${config.programs.helium.package}/share/icons/hicolor/256x256/apps/helium.png";
|
||||||
terminal = false;
|
terminal = false;
|
||||||
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"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
c = config.lib.stylix.colors;
|
||||||
|
in {
|
||||||
|
imports = [inputs.nvf.homeManagerModules.default];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nvf = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
vim.luaConfigRC.hl-overrides = ''
|
||||||
|
local function apply_hl()
|
||||||
|
vim.api.nvim_set_hl(0, "MiniStarterHeader", { fg = "#${c.base0D}", bold = true })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksPickerBorder", { fg = "#${c.base0D}" })
|
||||||
|
vim.api.nvim_set_hl(0, "SnacksPickerTitle", { fg = "#${c.base0D}", bold = true })
|
||||||
|
end
|
||||||
|
apply_hl()
|
||||||
|
vim.api.nvim_create_autocmd("ColorScheme", { pattern = "*", callback = apply_hl })
|
||||||
|
'';
|
||||||
|
imports = [
|
||||||
|
./options.nix
|
||||||
|
./languages.nix
|
||||||
|
./picker.nix
|
||||||
|
./snacks.nix
|
||||||
|
./keymaps.nix
|
||||||
|
./utils.nix
|
||||||
|
./mini.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
nvimConfig = inputs.nvf.lib.neovimConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
modules = [
|
||||||
|
./options.nix
|
||||||
|
./languages.nix
|
||||||
|
./picker.nix
|
||||||
|
./snacks.nix
|
||||||
|
./keymaps.nix
|
||||||
|
./utils.nix
|
||||||
|
./mini.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
packages.${system}.nvim = nvimConfig.neovim;
|
||||||
|
|
||||||
|
apps.${system}.nvim = {
|
||||||
|
type = "app";
|
||||||
|
program = "${nvimConfig.neovim}/bin/nvim";
|
||||||
|
};
|
||||||
|
defaultApp.${system} = {
|
||||||
|
type = "app";
|
||||||
|
program = "${nvimConfig.neovim}/bin/nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
homeManagerModules.nvim = {
|
||||||
|
imports = [
|
||||||
|
inputs.nvf.homeManagerModules.default
|
||||||
|
./default.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>set spell!<cr>";
|
action = "<cmd>set spell!<cr>";
|
||||||
desc = "Toggle spell check";
|
desc = "Toggle spellLazyGitcheck";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>uc";
|
key = "<leader>uc";
|
||||||
@@ -207,28 +207,6 @@
|
|||||||
desc = "Dedent and keep selection";
|
desc = "Dedent and keep selection";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Scroll and center
|
|
||||||
{
|
|
||||||
key = "<C-d>";
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"v"
|
|
||||||
];
|
|
||||||
silent = true;
|
|
||||||
action = "<C-d>zz";
|
|
||||||
desc = "Scroll down and center";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<C-u>";
|
|
||||||
mode = [
|
|
||||||
"n"
|
|
||||||
"v"
|
|
||||||
];
|
|
||||||
silent = true;
|
|
||||||
action = "<C-u>zz";
|
|
||||||
desc = "Scroll up and center";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Move
|
# Move
|
||||||
{
|
{
|
||||||
key = "<C-h>";
|
key = "<C-h>";
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{pkgs, ...}: {
|
{...}: {
|
||||||
vim = {
|
vim = {
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -25,7 +25,6 @@
|
|||||||
context.enable = true;
|
context.enable = true;
|
||||||
highlight.enable = true;
|
highlight.enable = true;
|
||||||
textobjects.enable = true;
|
textobjects.enable = true;
|
||||||
grammars = [pkgs.vimPlugins.nvim-treesitter.grammarPlugins.http];
|
|
||||||
};
|
};
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -84,7 +83,7 @@
|
|||||||
go.enable = true;
|
go.enable = true;
|
||||||
markdown = {
|
markdown = {
|
||||||
enable = true;
|
enable = true;
|
||||||
format.type = ["prettier"];
|
format.type = ["prettierd"];
|
||||||
extensions = {
|
extensions = {
|
||||||
markview-nvim = {
|
markview-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -23,12 +23,13 @@
|
|||||||
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 = '+tools' },
|
{ mode = 'n', keys = '<Leader>t', desc = '+terminal' },
|
||||||
{ 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 },
|
||||||
})
|
})
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
|
"protonvpn-app --start-minimized"
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,16 +1,24 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs-stable,
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs-stable; [
|
||||||
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"'';
|
||||||
@@ -28,11 +36,4 @@
|
|||||||
terminal = false;
|
terminal = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
directories = [
|
|
||||||
".config/protonvpn"
|
|
||||||
".config/Proton Pass"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{pkgs-stable, ...}: {
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs-stable.direnv;
|
||||||
|
nix-direnv = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs-stable.nix-direnv;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
# 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 = [
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# Fzf is a general-purpose command-line fuzzy finder.
|
||||||
|
{
|
||||||
|
pkgs-stable,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
accent = "#" + config.lib.stylix.colors.base0D;
|
||||||
|
foreground = "#" + config.lib.stylix.colors.base05;
|
||||||
|
muted = "#" + config.lib.stylix.colors.base03;
|
||||||
|
in {
|
||||||
|
programs.fzf = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs-stable.fzf;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
colors = lib.mkForce {
|
||||||
|
"fg+" = accent;
|
||||||
|
"bg+" = "-1";
|
||||||
|
"fg" = foreground;
|
||||||
|
"bg" = "-1";
|
||||||
|
"prompt" = muted;
|
||||||
|
"pointer" = accent;
|
||||||
|
};
|
||||||
|
defaultOptions = [
|
||||||
|
"--margin=1"
|
||||||
|
"--layout=reverse"
|
||||||
|
"--border=none"
|
||||||
|
"--info='hidden'"
|
||||||
|
"--header=''"
|
||||||
|
"--prompt='/ '"
|
||||||
|
"-i"
|
||||||
|
"--no-bold"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
# 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,
|
||||||
...
|
...
|
||||||
@@ -9,6 +10,7 @@
|
|||||||
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,7 +1,8 @@
|
|||||||
# 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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
# My shell configuration
|
||||||
|
{
|
||||||
|
pkgs-stable,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs-stable; [
|
||||||
|
bat
|
||||||
|
ripgrep
|
||||||
|
];
|
||||||
|
|
||||||
|
home = {
|
||||||
|
sessionPath = ["$HOME/go/bin"];
|
||||||
|
sessionVariables = {
|
||||||
|
COLORTERM = "truecolor";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting = {
|
||||||
|
enable = true;
|
||||||
|
highlighters = [
|
||||||
|
"main"
|
||||||
|
"brackets"
|
||||||
|
"pattern"
|
||||||
|
"regexp"
|
||||||
|
"root"
|
||||||
|
"line"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
historySubstringSearch.enable = true;
|
||||||
|
|
||||||
|
history = {
|
||||||
|
ignoreDups = true;
|
||||||
|
save = 10000;
|
||||||
|
size = 10000;
|
||||||
|
};
|
||||||
|
|
||||||
|
profileExtra = lib.optionalString (config.home.sessionPath != []) ''
|
||||||
|
export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
# Change default
|
||||||
|
vim = "nvim";
|
||||||
|
vi = "nvim";
|
||||||
|
cd = "z";
|
||||||
|
ls = "eza --icons=always --no-quotes";
|
||||||
|
tree = "eza --icons=always --tree --no-quotes";
|
||||||
|
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
|
||||||
|
mkdir = "mkdir -p";
|
||||||
|
|
||||||
|
# Shortcuts
|
||||||
|
spt = "spotatui";
|
||||||
|
v = "nvim";
|
||||||
|
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()'";
|
||||||
|
nix-shell = "nix-shell --command zsh";
|
||||||
|
|
||||||
|
# git
|
||||||
|
g = "lazygit";
|
||||||
|
ga = "git add";
|
||||||
|
gc = "git commit";
|
||||||
|
gcu = "git add . && git commit -m 'Update'";
|
||||||
|
gp = "git push";
|
||||||
|
gpl = "git pull";
|
||||||
|
gs = "git status";
|
||||||
|
gd = "git diff";
|
||||||
|
gco = "git checkout";
|
||||||
|
gcb = "git checkout -b";
|
||||||
|
gbr = "git branch";
|
||||||
|
grs = "git reset HEAD~1";
|
||||||
|
grh = "git reset --hard HEAD~1";
|
||||||
|
gaa = "git add .";
|
||||||
|
gcm = "git commit -m";
|
||||||
|
|
||||||
|
# Typo
|
||||||
|
clera = "clear";
|
||||||
|
celar = "clear";
|
||||||
|
claer = "clear";
|
||||||
|
sl = "ls";
|
||||||
|
};
|
||||||
|
|
||||||
|
initContent =
|
||||||
|
# bash
|
||||||
|
''
|
||||||
|
bindkey -e
|
||||||
|
|
||||||
|
# Open command in VIM
|
||||||
|
autoload -Uz edit-command-line
|
||||||
|
zle -N edit-command-line
|
||||||
|
bindkey '^X' edit-command-line
|
||||||
|
|
||||||
|
# Suffix Aliases
|
||||||
|
alias -s {nix,md,txt,yml,yaml,go}=nvim
|
||||||
|
alias -s {json,jsonl}=jless
|
||||||
|
alias -s {csv,tsv,parquet,pqt,arrow,db,sqlite,xls,xlsx,xlsm,xlsb,fwf}=tw
|
||||||
|
alias -s {png,jpg,jpeg,gif,pdf}=xdg-open
|
||||||
|
|
||||||
|
# 3. Global Aliases (Remplacés n'importe où dans la commande, pas seulement au début)
|
||||||
|
alias -g G="| grep"
|
||||||
|
alias -g L="| less"
|
||||||
|
alias -g V="| nvim"
|
||||||
|
alias -g H="| head"
|
||||||
|
alias -g T="| tail"
|
||||||
|
alias -g JQ="| jq"
|
||||||
|
alias -g C="| wl-copy"
|
||||||
|
alias -g NE="2>/dev/null"
|
||||||
|
alias -g ND=">/dev/null"
|
||||||
|
alias -g NUL=">/dev/null 2>1"
|
||||||
|
|
||||||
|
# search history based on what's typed in the prompt
|
||||||
|
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:*' list-grouped false
|
||||||
|
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
|
||||||
|
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
||||||
|
|
||||||
|
# Case insensitive tab completion
|
||||||
|
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||||
|
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
|
||||||
|
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,21 +1,16 @@
|
|||||||
# 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,
|
pkgs-stable,
|
||||||
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; [
|
home.packages = with pkgs-stable; [
|
||||||
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,174 @@
|
|||||||
|
# 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>
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
{
|
|
||||||
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}"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# Ghostty is a terminal emulator
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cursorShaders = pkgs.fetchFromGitHub {
|
|
||||||
owner = "sahaj-b";
|
|
||||||
repo = "ghostty-cursor-shaders";
|
|
||||||
rev = "06d4e90fb5410e9c4d0b3131584060adddf89406";
|
|
||||||
hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw=";
|
|
||||||
};
|
|
||||||
c = config.lib.stylix.colors;
|
|
||||||
in {
|
|
||||||
home.sessionVariables = {
|
|
||||||
TERMINAL = "ghostty";
|
|
||||||
TERM = "ghostty";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ghostty = {
|
|
||||||
enable = true;
|
|
||||||
installVimSyntax = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
settings = {
|
|
||||||
window-padding-x = 10;
|
|
||||||
confirm-close-surface = false;
|
|
||||||
window-padding-y = 10;
|
|
||||||
gtk-single-instance = true;
|
|
||||||
clipboard-read = "allow";
|
|
||||||
clipboard-write = "allow";
|
|
||||||
copy-on-select = "clipboard";
|
|
||||||
app-notifications = false;
|
|
||||||
custom-shader = "${cursorShaders}/cursor_warp.glsl";
|
|
||||||
custom-shader-animation = "always";
|
|
||||||
keybind = [
|
|
||||||
"shift+ctrl+tab=new_tab"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{config, ...}: let
|
|
||||||
c = config.lib.stylix.colors;
|
|
||||||
in {
|
|
||||||
home.file.".config/ilovetui/config.yaml".text = ''
|
|
||||||
nerd_fonts: true
|
|
||||||
border: rounded
|
|
||||||
layout_border: full
|
|
||||||
colors:
|
|
||||||
base00: "#${c.base00}" # Background
|
|
||||||
base01: "#${c.base01}" # Lighter Background / Status Bars
|
|
||||||
base02: "#${c.base02}" # Selection Background
|
|
||||||
base03: "#${c.base03}" # Comments / Invisibles
|
|
||||||
base04: "#${c.base04}" # Dark Foreground / Status Bars
|
|
||||||
base05: "#${c.base05}" # Default Foreground
|
|
||||||
base06: "#${c.base06}" # Light Foreground
|
|
||||||
base07: "#${c.base07}" # Light Background
|
|
||||||
base08: "#${c.base08}" # Variables / Errors / Diff Deleted
|
|
||||||
base09: "#${c.base09}" # Integers / Constants / Booleans
|
|
||||||
base0a: "#${c.base0A}" # Classes / Warnings / Search Background
|
|
||||||
base0b: "#${c.base0B}" # Strings / Success / Diff Inserted
|
|
||||||
base0c: "#${c.base0C}" # Support / Regex / Escape Characters
|
|
||||||
base0d: "#${c.base0D}" # Functions / Methods / Headings / Accent
|
|
||||||
base0e: "#${c.base0E}" # Keywords / Storage / Diff Changed
|
|
||||||
base0f: "#${c.base0F}" # Embedded / Misc
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
programs.navi = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
VISUAL = "nvim";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.nvf = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
vim.luaConfigRC = lib.mkIf (config ? stylix && config.stylix.enable) {
|
|
||||||
hl-overrides = let
|
|
||||||
c = config.lib.stylix.colors;
|
|
||||||
in ''
|
|
||||||
local function apply_hl()
|
|
||||||
vim.api.nvim_set_hl(0, "MiniStarterHeader", { fg = "#${c.base0D}", bold = true })
|
|
||||||
vim.api.nvim_set_hl(0, "SnacksPickerBorder", { fg = "#${c.base0D}" })
|
|
||||||
vim.api.nvim_set_hl(0, "SnacksPickerTitle", { fg = "#${c.base0D}", bold = true })
|
|
||||||
end
|
|
||||||
apply_hl()
|
|
||||||
vim.api.nvim_create_autocmd("ColorScheme", { pattern = "*", callback = apply_hl })
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
imports = [
|
|
||||||
./options.nix
|
|
||||||
./languages.nix
|
|
||||||
./picker.nix
|
|
||||||
./snacks.nix
|
|
||||||
./keymaps.nix
|
|
||||||
./utils.nix
|
|
||||||
./mini.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1777699697,
|
|
||||||
"narHash": "sha256-Eg9b/rq/ECYwNwEXs5i9wHyhxNI0JrYx2srdI2uZMaQ=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "382052b74656a369c5408822af3f2501e9b1af81",
|
|
||||||
"revCount": 94,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.lix.systems/lix-project/flake-compat.git"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.lix.systems/lix-project/flake-compat.git"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mnw": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1780772958,
|
|
||||||
"narHash": "sha256-VKKe8r4pwCGWZ3Yr9CPN129R4S3CKLSrlYqdYz3vKpM=",
|
|
||||||
"owner": "Gerg-L",
|
|
||||||
"repo": "mnw",
|
|
||||||
"rev": "0871dbf63a53610c95db04439ed8ea4d6ec9c160",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Gerg-L",
|
|
||||||
"repo": "mnw",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1785133411,
|
|
||||||
"narHash": "sha256-Yjv0WEg39KRYS0rBdTbu6Fc/or/ihAKk13W9sQ6VWd0=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "2f5a153c270b70cb0f8c11f46d96d6d3bc39f4e3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-26.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1781216227,
|
|
||||||
"narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-26.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nvf": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"mnw": "mnw",
|
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1781997110,
|
|
||||||
"narHash": "sha256-6D6xtYN5t1kZGNd69eMZsRBkgX5Df1roErn/kFR1C+A=",
|
|
||||||
"owner": "notashelf",
|
|
||||||
"repo": "nvf",
|
|
||||||
"rev": "320f60b97075a58d38b90fc5e39f478421dbd38a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "notashelf",
|
|
||||||
"repo": "nvf",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"nvf": "nvf"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
{
|
|
||||||
description = "Hadi's NVF Neovim configuration";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
|
||||||
nvf.url = "github:notashelf/nvf";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
nvf,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin"];
|
|
||||||
forAllSystems = f: nixpkgs.lib.genAttrs systems f;
|
|
||||||
modules = [
|
|
||||||
./options.nix
|
|
||||||
./languages.nix
|
|
||||||
./picker.nix
|
|
||||||
./snacks.nix
|
|
||||||
./keymaps.nix
|
|
||||||
./utils.nix
|
|
||||||
./mini.nix
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
packages = forAllSystems (system: let
|
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
nvim = (nvf.lib.neovimConfiguration {inherit pkgs modules;}).neovim;
|
|
||||||
in {
|
|
||||||
inherit nvim;
|
|
||||||
default = nvim;
|
|
||||||
});
|
|
||||||
|
|
||||||
apps = forAllSystems (system: let
|
|
||||||
nvim = {
|
|
||||||
type = "app";
|
|
||||||
program = "${self.packages.${system}.nvim}/bin/nvim";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
inherit nvim;
|
|
||||||
default = nvim;
|
|
||||||
});
|
|
||||||
|
|
||||||
homeManagerModules = rec {
|
|
||||||
nvim = {
|
|
||||||
imports = [
|
|
||||||
nvf.homeManagerModules.default
|
|
||||||
./default.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
default = nvim;
|
|
||||||
};
|
|
||||||
|
|
||||||
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
pkgs-unstable,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# I love TUIs
|
|
||||||
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
|
|
||||||
tealdeer # Fast tldr client
|
|
||||||
sttr # A minimalist CyberChef-like, cross-platform CLI app for performing various operations on strings
|
|
||||||
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
|
|
||||||
tabiew # A terminal-based CSV viewer and manipulator
|
|
||||||
jless # A pager for JSON
|
|
||||||
pkgs.nur.repos.anotherhadi.usbguard-tui # TUI for managing USBGuard rules
|
|
||||||
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
|
|
||||||
|
|
||||||
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
|
||||||
gh # GitHub
|
|
||||||
figlet # Transform text into ASCII art
|
|
||||||
pastel # Command-line tool to generate, analyze, convert and manipulate colors
|
|
||||||
imagemagick # Image manipulation tool
|
|
||||||
chafa # Image to ANSI/Unicode converter and more.
|
|
||||||
|
|
||||||
# Just cool
|
|
||||||
tty-solitaire
|
|
||||||
bastet
|
|
||||||
peaclock
|
|
||||||
cbonsai
|
|
||||||
pipes
|
|
||||||
cmatrix
|
|
||||||
fastfetch
|
|
||||||
smassh # typing test, 10fastfinger like
|
|
||||||
];
|
|
||||||
|
|
||||||
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
directories = [".config/gh" ".config/gh-dash"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
# Fzf is a general-purpose command-line fuzzy finder.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
accent = "#" + config.lib.stylix.colors.base0D;
|
|
||||||
foreground = "#" + config.lib.stylix.colors.base05;
|
|
||||||
muted = "#" + config.lib.stylix.colors.base03;
|
|
||||||
previewCmd = "bat --color=always --style=plain,numbers --line-range=:500 {}";
|
|
||||||
in {
|
|
||||||
programs.fzf = {
|
|
||||||
enable = 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 {
|
|
||||||
"fg+" = accent;
|
|
||||||
"bg+" = "-1";
|
|
||||||
"fg" = foreground;
|
|
||||||
"bg" = "-1";
|
|
||||||
"prompt" = muted;
|
|
||||||
"pointer" = accent;
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultOptions = [
|
|
||||||
"--height=60%"
|
|
||||||
"--layout=reverse"
|
|
||||||
"--border=none"
|
|
||||||
"--prompt='/ '"
|
|
||||||
"--preview-window=right:65%:wrap:border-left"
|
|
||||||
"-i"
|
|
||||||
"--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,154 +0,0 @@
|
|||||||
# My shell configuration
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
bat
|
|
||||||
ripgrep
|
|
||||||
];
|
|
||||||
|
|
||||||
home = {
|
|
||||||
sessionVariables = {
|
|
||||||
COLORTERM = "truecolor";
|
|
||||||
MANPAGER = "bat -l man -p";
|
|
||||||
};
|
|
||||||
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
files = [".zsh_history"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
autocd = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.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 = {
|
|
||||||
ignoreDups = true;
|
|
||||||
findNoDups = true;
|
|
||||||
expireDuplicatesFirst = true;
|
|
||||||
ignoreSpace = true;
|
|
||||||
append = true;
|
|
||||||
save = 10000;
|
|
||||||
size = 10000;
|
|
||||||
};
|
|
||||||
|
|
||||||
setOptions = [
|
|
||||||
"NOBEEP"
|
|
||||||
"AUTOCD"
|
|
||||||
"NUMERIC_GLOB_SORT"
|
|
||||||
];
|
|
||||||
|
|
||||||
profileExtra = lib.optionalString (config.home.sessionPath != []) ''
|
|
||||||
export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}"
|
|
||||||
'';
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
# Change default
|
|
||||||
vim = "nvim";
|
|
||||||
vi = "nvim";
|
|
||||||
cd = "z";
|
|
||||||
ls = "eza --icons=always --no-quotes";
|
|
||||||
tree = "eza --icons=always --tree --no-quotes";
|
|
||||||
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
|
|
||||||
mkdir = "mkdir -p";
|
|
||||||
nix-shell = "nix-shell --command zsh";
|
|
||||||
grep = "rg --color=auto";
|
|
||||||
diff = "diff --color=auto";
|
|
||||||
df = "df -h";
|
|
||||||
|
|
||||||
# Shortcuts
|
|
||||||
spt = "spotatui";
|
|
||||||
open = "${pkgs.xdg-utils}/bin/xdg-open";
|
|
||||||
|
|
||||||
notes = "nvim ~/Notes/index.md --cmd 'cd ~/notes' -c ':lua Snacks.picker.smart()'";
|
|
||||||
|
|
||||||
# git
|
|
||||||
g = "lazygit";
|
|
||||||
ga = "git add";
|
|
||||||
gc = "git commit";
|
|
||||||
gp = "git push";
|
|
||||||
gpl = "git pull";
|
|
||||||
gs = "git status";
|
|
||||||
gd = "git diff";
|
|
||||||
gco = "git checkout";
|
|
||||||
gcb = "git checkout -b";
|
|
||||||
gbr = "git branch";
|
|
||||||
grs = "git reset HEAD~1";
|
|
||||||
grh = "git reset --hard HEAD~1";
|
|
||||||
gaa = "git add .";
|
|
||||||
gcm = "git commit -m";
|
|
||||||
|
|
||||||
# Original binaries
|
|
||||||
ocat = "/run/current-system/sw/bin/cat";
|
|
||||||
ols = "/run/current-system/sw/bin/ls";
|
|
||||||
ocd = "builtin cd";
|
|
||||||
|
|
||||||
# Typo
|
|
||||||
clera = "clear";
|
|
||||||
celar = "clear";
|
|
||||||
claer = "clear";
|
|
||||||
sl = "ls";
|
|
||||||
};
|
|
||||||
|
|
||||||
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
|
|
||||||
''
|
|
||||||
# Suffix Aliases
|
|
||||||
alias -s {nix,md,txt,yml,yaml,go}=nvim
|
|
||||||
alias -s {json,jsonl}=jless
|
|
||||||
alias -s {csv,tsv,parquet,pqt,arrow,db,sqlite,xls,xlsx,xlsm,xlsb,fwf}=tw
|
|
||||||
alias -s {png,jpg,jpeg,gif,pdf}=xdg-open
|
|
||||||
|
|
||||||
# Global Aliases
|
|
||||||
alias -g G="| rg"
|
|
||||||
alias -g L="| less"
|
|
||||||
alias -g V="| nvim"
|
|
||||||
alias -g H="| head"
|
|
||||||
alias -g T="| tail"
|
|
||||||
alias -g JQ="| jq"
|
|
||||||
alias -g C="| wl-copy"
|
|
||||||
alias -g NE="2>/dev/null"
|
|
||||||
alias -g ND=">/dev/null"
|
|
||||||
alias -g NUL=">/dev/null 2>&1"
|
|
||||||
|
|
||||||
autoload zmv # Mv for multiple files
|
|
||||||
|
|
||||||
zstyle ':completion:*' menu select
|
|
||||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
|
||||||
|
|
||||||
zvm_after_init() {
|
|
||||||
bindkey '^[[1;5C' forward-word
|
|
||||||
bindkey '^[[1;5D' backward-word
|
|
||||||
bindkey '^F' _fzf_file_no_hidden
|
|
||||||
bindkey '^[[A' history-substring-search-up
|
|
||||||
bindkey '^[[B' history-substring-search-down
|
|
||||||
}
|
|
||||||
''
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
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
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
{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
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# Clipboard history: cliphist watches the Wayland clipboard and stores every
|
|
||||||
# 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
|
|
||||||
# managed the same way as swaync/hypridle.
|
|
||||||
{pkgs, ...}: {
|
|
||||||
home.packages = [pkgs.wl-clipboard];
|
|
||||||
|
|
||||||
services.cliphist = {
|
|
||||||
enable = 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,31 +0,0 @@
|
|||||||
# hypridle handles idle management: lock the screen, turn the display off, and
|
|
||||||
# suspend after periods of inactivity. The `caffeine-toggle` script pauses it.
|
|
||||||
{pkgs, ...}: {
|
|
||||||
services.hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
# Avoid starting multiple hyprlock instances.
|
|
||||||
lock_cmd = "${pkgs.procps}/bin/pidof ${pkgs.hyprlock}/bin/hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
|
||||||
after_sleep_cmd = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on";
|
|
||||||
};
|
|
||||||
|
|
||||||
listener = [
|
|
||||||
{
|
|
||||||
timeout = 300; # 5 min → lock
|
|
||||||
on-timeout = "loginctl lock-session";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 360; # 6 min → screen off
|
|
||||||
on-timeout = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off";
|
|
||||||
on-resume = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 1800; # 30 min → suspend
|
|
||||||
on-timeout = "systemctl suspend";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -6,9 +6,13 @@
|
|||||||
then "4"
|
then "4"
|
||||||
else if animationSpeed == "medium"
|
else if animationSpeed == "medium"
|
||||||
then "2.5"
|
then "2.5"
|
||||||
else if animationSpeed == "fast"
|
else "1.5";
|
||||||
then "1.5"
|
borderDuration =
|
||||||
else "0.5";
|
if animationSpeed == "slow"
|
||||||
|
then "10"
|
||||||
|
else if animationSpeed == "medium"
|
||||||
|
then "6"
|
||||||
|
else "3";
|
||||||
in {
|
in {
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
animations = {
|
animations = {
|
||||||
@@ -34,7 +38,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, ${animationDuration}, default"
|
"border, 1, ${borderDuration}, 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,22 +1,21 @@
|
|||||||
{
|
{
|
||||||
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 = "top";
|
anchor = "bottom-right";
|
||||||
border = "#${colors.base0D}EE";
|
border = "#${colors.base0D}80";
|
||||||
border_width = border-size;
|
background = "#${colors.base01}EE";
|
||||||
background = "#${colors.base01}FF";
|
|
||||||
color = "#${colors.base05}";
|
color = "#${colors.base05}";
|
||||||
margin_top = 0;
|
margin_right = 15;
|
||||||
|
margin_bottom = 15;
|
||||||
rows_per_column = 5;
|
rows_per_column = 5;
|
||||||
|
|
||||||
inherit menu;
|
inherit menu;
|
||||||
@@ -24,21 +23,8 @@
|
|||||||
);
|
);
|
||||||
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";
|
||||||
@@ -78,17 +64,17 @@ in {
|
|||||||
{
|
{
|
||||||
key = "o";
|
key = "o";
|
||||||
desc = "Obsidian";
|
desc = "Obsidian";
|
||||||
cmd = "${pkgs.obsidian}/bin/obsidian";
|
cmd = "${pkgs-stable.obsidian}/bin/obsidian";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "s";
|
key = "s";
|
||||||
desc = "Signal";
|
desc = "Signal";
|
||||||
cmd = "${pkgs.signal-desktop}/bin/signal-desktop";
|
cmd = "${pkgs-stable.signal-desktop}/bin/signal-desktop";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "t";
|
key = "t";
|
||||||
desc = "TickTick";
|
desc = "TickTick";
|
||||||
cmd = "${pkgs.ticktick}/bin/ticktick";
|
cmd = "${pkgs-stable.ticktick}/bin/ticktick";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "b";
|
key = "b";
|
||||||
@@ -112,7 +98,7 @@ in {
|
|||||||
{
|
{
|
||||||
key = "l";
|
key = "l";
|
||||||
desc = "Lock";
|
desc = "Lock";
|
||||||
cmd = "${pkgs.hyprlock}/bin/hyprlock";
|
cmd = "hyprlock";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "s";
|
key = "s";
|
||||||
@@ -129,20 +115,25 @@ 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, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
|
||||||
"$mod,E, exec, ${pkgs.ghostty}/bin/ghostty +new-window -e elio" # Elio
|
"$mod,E, exec, uwsm app -- ${pkgs-stable.thunar}/bin/thunar" # Thunar
|
||||||
"$mod, SPACE, exec, ${lib.getExe tofi-drun-toggle}" # Launcher (toggle)
|
"$mod, SPACE, exec, tofi-drun" # Launcher
|
||||||
"$mod, N, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t" # Notification center
|
"$mod, N, exec, 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, ${scripts.focus-toggle}/bin/focus-toggle" # Toggle focus mode
|
"$shiftMod, SPACE, exec, focus-toggle" # Toggle focus mode
|
||||||
|
|
||||||
# Focus Windows
|
# Focus Windows
|
||||||
"$mod,H, movefocus, l" # Move focus left
|
"$mod,H, movefocus, l" # Move focus left
|
||||||
@@ -154,13 +145,10 @@ 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
|
||||||
", Print, exec, ${pkgs.hyprshot}/bin/hyprshot -m region" # Capture region
|
"$shiftMod, S, exec, hyprshot -m region" # Capture region
|
||||||
"$shiftMod, Print, exec, ${pkgs.hyprshot}/bin/hyprshot -m output" # Capture screen
|
", Print, exec, hyprshot -m region" # Capture region
|
||||||
|
"$shiftMod+Alt, S, exec, hyprshot -m output" # Capture screen
|
||||||
]
|
]
|
||||||
++ (builtins.concatLists (
|
++ (builtins.concatLists (
|
||||||
builtins.genList (
|
builtins.genList (
|
||||||
@@ -181,21 +169,21 @@ in {
|
|||||||
|
|
||||||
bindl = [
|
bindl = [
|
||||||
# Brightness
|
# Brightness
|
||||||
", XF86MonBrightnessUp, exec, ${scripts.bright-up}/bin/bright-up"
|
", XF86MonBrightnessUp, exec, bright-up"
|
||||||
", XF86MonBrightnessDown, exec, ${scripts.bright-down}/bin/bright-down"
|
", XF86MonBrightnessDown, exec, bright-down"
|
||||||
|
|
||||||
# Media
|
# Media
|
||||||
", XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
", XF86AudioPause, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
", XF86AudioPause, exec, playerctl play-pause"
|
||||||
", XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next"
|
", XF86AudioNext, exec, playerctl next"
|
||||||
", XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous"
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
", XF86AudioStop, exec, ${pkgs.playerctl}/bin/playerctl stop"
|
", XF86AudioStop, exec, playerctl stop"
|
||||||
|
|
||||||
# Sound
|
# Sound
|
||||||
", XF86AudioMute, exec, ${scripts.vol-mute}/bin/vol-mute"
|
", XF86AudioMute, exec, vol-mute"
|
||||||
", XF86AudioRaiseVolume, exec, ${scripts.vol-up}/bin/vol-up"
|
", XF86AudioRaiseVolume, exec, vol-up"
|
||||||
", XF86AudioLowerVolume, exec, ${scripts.vol-down}/bin/vol-down"
|
", XF86AudioLowerVolume, exec, vol-down"
|
||||||
", XF86AudioMicMute, exec, ${scripts.mic-mute}/bin/mic-mute"
|
", XF86AudioMicMute, exec, 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,26 +24,23 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
home.packages =
|
home.packages =
|
||||||
(with pkgs-unstable; [
|
(with pkgs; [
|
||||||
qt5.qtwayland
|
qt5.qtwayland
|
||||||
qt6.qtwayland
|
qt6.qtwayland
|
||||||
hyprland-qtutils
|
|
||||||
])
|
|
||||||
++ (with pkgs; [
|
|
||||||
libsForQt5.qt5ct
|
libsForQt5.qt5ct
|
||||||
qt6Packages.qt6ct
|
qt6Packages.qt6ct
|
||||||
|
hyprland-qtutils
|
||||||
|
])
|
||||||
|
++ (with pkgs-stable; [
|
||||||
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
|
||||||
satty
|
swappy
|
||||||
imv
|
imv
|
||||||
wf-recorder
|
wf-recorder
|
||||||
|
wlr-randr
|
||||||
brightnessctl
|
brightnessctl
|
||||||
gnome-themes-extra
|
gnome-themes-extra
|
||||||
dconf
|
dconf
|
||||||
@@ -61,11 +58,7 @@ in {
|
|||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
monitor = [
|
monitor = [
|
||||||
",preferred,auto,1" # default
|
",prefered,auto,1" # default
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
"systemctl --user start app-com.mitchellh.ghostty.service"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
env = [
|
env = [
|
||||||
@@ -125,7 +118,6 @@ in {
|
|||||||
|
|
||||||
layerrule = [
|
layerrule = [
|
||||||
"match:namespace launcher, animation popin 70%"
|
"match:namespace launcher, animation popin 70%"
|
||||||
"match:namespace swaync-control-center, animation slide right"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
windowrule = [
|
windowrule = [
|
||||||
@@ -133,9 +125,6 @@ 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"
|
||||||
@@ -177,20 +166,4 @@ 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,8 +1,9 @@
|
|||||||
# Hyprpaper is used to set the wallpaper on the system
|
# Hyprpaper is used to set the wallpaper on the system
|
||||||
{lib, ...}: {
|
{pkgs-stable, 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, ...}: {
|
{pkgs-stable, ...}: {
|
||||||
home.packages = with pkgs; [hyprpolkitagent];
|
home.packages = with pkgs-stable; [hyprpolkitagent];
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start hyprpolkitagent"];
|
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start hyprpolkitagent"];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,75 +1,11 @@
|
|||||||
{
|
{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;
|
||||||
|
|
||||||
programs.hyprlock = {
|
programs.hyprlock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
|
||||||
grace = 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
background = [
|
background = [
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
@@ -80,87 +16,68 @@ in {
|
|||||||
label = [
|
label = [
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
text = ''cmd[update:1000] date +"%H:%M %A %d %B"'';
|
text = ''cmd[update:0] echo "[$USER@$(hostname) ~]"'';
|
||||||
color = "rgb(${c.base05})";
|
color = "rgb(${c.base0D})";
|
||||||
font_size = fontSize;
|
font_size = 13;
|
||||||
font_family = font;
|
font_family = "Maple Mono NF";
|
||||||
position = "0, -64";
|
position = "48, -48";
|
||||||
halign = "center";
|
halign = "left";
|
||||||
valign = "top";
|
valign = "top";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
text = "Welcome";
|
text = ''cmd[update:1000] echo "$(date +'%H:%M:%S')"'';
|
||||||
color = "rgb(${c.base05})";
|
color = "rgb(${c.base05})";
|
||||||
font_size = fontSize;
|
font_size = 13;
|
||||||
font_family = font;
|
font_family = "Maple Mono NF";
|
||||||
position = "0, ${px outsideY}";
|
position = "48, -70";
|
||||||
halign = "center";
|
halign = "left";
|
||||||
valign = "center";
|
valign = "top";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
monitor = "";
|
monitor = "";
|
||||||
text = fromFile "hyprlock-frame" (lib.concatStringsSep "\n" lines);
|
text = ''cmd[update:60000] echo "$(date +'%A %d %B %Y')"'';
|
||||||
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 = fontSize;
|
font_size = 13;
|
||||||
font_family = font;
|
font_family = "Maple Mono NF";
|
||||||
position = "0, 40";
|
position = "48, -92";
|
||||||
halign = "center";
|
halign = "left";
|
||||||
valign = "bottom";
|
valign = "top";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
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 = "${px inputW}, ${px inputH}";
|
size = "200, 20";
|
||||||
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)";
|
||||||
rounding = 0;
|
|
||||||
fade_on_empty = false;
|
|
||||||
|
|
||||||
font_family = font;
|
|
||||||
font_color = "rgb(${c.base05})";
|
font_color = "rgb(${c.base05})";
|
||||||
|
fade_on_empty = false;
|
||||||
dots_text_format = "*";
|
placeholder_text = "";
|
||||||
dots_size = 0.8;
|
hide_input = true;
|
||||||
dots_spacing = 0.0;
|
rounding = 0;
|
||||||
dots_center = false;
|
check_color = "rgb(${c.base0B})";
|
||||||
|
|
||||||
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,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
@@ -10,10 +9,10 @@
|
|||||||
image = ["imv-dir.desktop"];
|
image = ["imv-dir.desktop"];
|
||||||
audio = ["vlc.desktop"];
|
audio = ["vlc.desktop"];
|
||||||
video = ["vlc.desktop"];
|
video = ["vlc.desktop"];
|
||||||
directory = ["elio.desktop"];
|
directory = ["thunar.desktop"];
|
||||||
office = ["onlyoffice-desktopeditors.desktop"];
|
office = ["onlyoffice-desktopeditors.desktop"];
|
||||||
pdf = ["onlyoffice-desktopeditors.desktop"];
|
pdf = ["onlyoffice-desktopeditors.desktop"];
|
||||||
archive = ["elio.desktop"];
|
archive = ["xarchiver.desktop"];
|
||||||
browser = ["helium.desktop"];
|
browser = ["helium.desktop"];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -117,7 +116,7 @@
|
|||||||
nvim-ghostty = pkgs.makeDesktopItem {
|
nvim-ghostty = pkgs.makeDesktopItem {
|
||||||
name = "nvim-ghostty";
|
name = "nvim-ghostty";
|
||||||
desktopName = "Neovim (Ghostty)";
|
desktopName = "Neovim (Ghostty)";
|
||||||
exec = ''${pkgs.ghostty}/bin/ghostty +new-window --title="Neovim Editor" -e nvim %F'';
|
exec = ''ghostty --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;
|
||||||
@@ -140,18 +139,5 @@ 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,9 +1,4 @@
|
|||||||
{
|
{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;
|
||||||
@@ -69,28 +64,28 @@ in {
|
|||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
type = "toggle";
|
type = "toggle";
|
||||||
command = "${scripts.nightshift-toggle}/bin/nightshift-toggle";
|
command = "nightshift-toggle";
|
||||||
"update-command" = "${pkgs.procps}/bin/pidof ${pkgs.hyprsunset}/bin/hyprsunset > /dev/null && echo true || echo false";
|
"update-command" = "pidof hyprsunset > /dev/null && echo true || echo false";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
type = "toggle";
|
type = "toggle";
|
||||||
command = "${scripts.focus-toggle}/bin/focus-toggle";
|
command = "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 = "${scripts.mic-mute}/bin/mic-mute";
|
command = "swayosd-client --input-volume mute-toggle";
|
||||||
"update-command" = "${scripts.mic-status}/bin/mic-status";
|
"update-command" = "wpctl get-volume @DEFAULT_SOURCE@ | grep -q MUTED && echo true || echo false";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
command = "${pkgs.swaynotificationcenter}/bin/swaync-client -cp ; ${pkgs.hyprlock}/bin/hyprlock";
|
command = "swaync-client -cp ; hyprlock";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
label = "";
|
label = "";
|
||||||
command = "${pkgs.swaynotificationcenter}/bin/swaync-client -cp ; systemctl poweroff";
|
command = "swaync-client -cp ; systemctl poweroff";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -116,6 +111,7 @@ in {
|
|||||||
--border-radius: ${toString rounding}px;
|
--border-radius: ${toString rounding}px;
|
||||||
--border-radius-s: ${toString gaps-in}px;
|
--border-radius-s: ${toString gaps-in}px;
|
||||||
--border-radius-xl: ${toString (rounding - 2)}px;
|
--border-radius-xl: ${toString (rounding - 2)}px;
|
||||||
|
--shadow: 2px 4px 10px rgba(0,0,0,0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification { padding: 5px; }
|
.notification { padding: 5px; }
|
||||||
@@ -214,6 +210,7 @@ in {
|
|||||||
|
|
||||||
.control-center .notification-background {
|
.control-center .notification-background {
|
||||||
background: @center-notification-bg;
|
background: @center-notification-bg;
|
||||||
|
box-shadow: var(--shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-center .notification-background .close-button,
|
.control-center .notification-background .close-button,
|
||||||
@@ -275,6 +272,7 @@ in {
|
|||||||
|
|
||||||
.widget-mpris {
|
.widget-mpris {
|
||||||
border-radius: var(--border-radius);
|
border-radius: var(--border-radius);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mpris-overlay {
|
.mpris-overlay {
|
||||||
@@ -304,6 +302,7 @@ in {
|
|||||||
border-radius: var(--border-radius);
|
border-radius: var(--border-radius);
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
background: @background-alt;
|
background: @background-alt;
|
||||||
|
box-shadow: var(--shadow);
|
||||||
color: @text;
|
color: @text;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,6 +343,7 @@ in {
|
|||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
border-radius: var(--border-radius);
|
border-radius: var(--border-radius);
|
||||||
background: @background-alt;
|
background: @background-alt;
|
||||||
|
box-shadow: var(--shadow);
|
||||||
color: @text;
|
color: @text;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,6 +375,7 @@ in {
|
|||||||
padding: 5px 15px;
|
padding: 5px 15px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
background: @background-alt;
|
background: @background-alt;
|
||||||
|
box-shadow: var(--shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
.widget-buttons-grid button {
|
.widget-buttons-grid button {
|
||||||
@@ -408,14 +409,4 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
stylix.targets.swaync.enable = false;
|
stylix.targets.swaync.enable = false;
|
||||||
|
|
||||||
# GTK 4.22 defaults to the Vulkan renderer, which compiles its graphics
|
|
||||||
# pipelines lazily on the first frame. The control center has many distinct
|
|
||||||
# visual elements, so the first open triggers a big burst of pipeline
|
|
||||||
# compilation (a multi-second stall on a cold boot) while later opens reuse
|
|
||||||
# the in-process cache. The GL (ngl) renderer avoids this: it stays
|
|
||||||
# GPU-accelerated and benefits from Mesa's on-disk shader cache, so the
|
|
||||||
# first open is as fast as the rest. Scoped to swaync so other GTK4 apps
|
|
||||||
# keep the Vulkan renderer.
|
|
||||||
systemd.user.services.swaync.Service.Environment = ["GSK_RENDERER=ngl"];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
# Use elio as the file picker for portal dialogs (browser "select file(s)" and
|
|
||||||
# "save download to..."). The backend is xdg-desktop-portal-termfilechooser,
|
|
||||||
# enabled system-wide in nixos/utils.nix (extraPortals + FileChooser routing).
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
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
|
|
||||||
# single-instance daemon, otherwise the wrapper returns before you've picked
|
|
||||||
# anything and the portal reads an empty selection.
|
|
||||||
termcmd = "ghostty --gtk-single-instance=false --title=termfilechooser -e";
|
|
||||||
in {
|
|
||||||
xdg.configFile."xdg-desktop-portal-termfilechooser/config".text = ''
|
|
||||||
[filechooser]
|
|
||||||
cmd=${wrapper}
|
|
||||||
default_dir=$HOME
|
|
||||||
open_mode=suggested
|
|
||||||
save_mode=suggested
|
|
||||||
env=TERMCMD=${termcmd}
|
|
||||||
PATH=${config.home.profileDirectory}/bin:/run/current-system/sw/bin:/run/wrappers/bin
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,8 @@
|
|||||||
{
|
{...}: {
|
||||||
pkgs,
|
|
||||||
scripts,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
xdg.desktopEntries = {
|
xdg.desktopEntries = {
|
||||||
focus-toggle = {
|
focus-toggle = {
|
||||||
name = "Focus Mode";
|
name = "Focus Mode";
|
||||||
exec = "${scripts.focus-toggle}/bin/focus-toggle";
|
exec = "focus-toggle";
|
||||||
icon = "do-not-disturb-symbolic";
|
icon = "do-not-disturb-symbolic";
|
||||||
comment = "Toggle focus mode";
|
comment = "Toggle focus mode";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -15,7 +11,7 @@
|
|||||||
|
|
||||||
nightshift-toggle = {
|
nightshift-toggle = {
|
||||||
name = "Night Shift";
|
name = "Night Shift";
|
||||||
exec = "${scripts.nightshift-toggle}/bin/nightshift-toggle";
|
exec = "nightshift-toggle";
|
||||||
icon = "night-light-symbolic";
|
icon = "night-light-symbolic";
|
||||||
comment = "Toggle night shift";
|
comment = "Toggle night shift";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -24,7 +20,7 @@
|
|||||||
|
|
||||||
mic-mute = {
|
mic-mute = {
|
||||||
name = "Mute Microphone";
|
name = "Mute Microphone";
|
||||||
exec = "${scripts.mic-mute}/bin/mic-mute";
|
exec = "mic-mute";
|
||||||
icon = "microphone-sensitivity-muted-symbolic";
|
icon = "microphone-sensitivity-muted-symbolic";
|
||||||
comment = "Toggle microphone mute";
|
comment = "Toggle microphone mute";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -33,7 +29,7 @@
|
|||||||
|
|
||||||
lock = {
|
lock = {
|
||||||
name = "Lock";
|
name = "Lock";
|
||||||
exec = "${pkgs.hyprlock}/bin/hyprlock";
|
exec = "hyprlock";
|
||||||
icon = "system-lock-screen-symbolic";
|
icon = "system-lock-screen-symbolic";
|
||||||
comment = "Lock the screen";
|
comment = "Lock the screen";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -69,7 +65,7 @@
|
|||||||
|
|
||||||
waybar-toggle = {
|
waybar-toggle = {
|
||||||
name = "Toggle Waybar";
|
name = "Toggle Waybar";
|
||||||
exec = "${scripts.waybar-toggle}/bin/waybar-toggle";
|
exec = "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"];
|
||||||
@@ -78,7 +74,7 @@
|
|||||||
|
|
||||||
wifi-toggle = {
|
wifi-toggle = {
|
||||||
name = "Toggle Wi-Fi";
|
name = "Toggle Wi-Fi";
|
||||||
exec = "${scripts.wifi-toggle}/bin/wifi-toggle";
|
exec = "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"];
|
||||||
@@ -87,245 +83,30 @@
|
|||||||
|
|
||||||
bluetooth-toggle = {
|
bluetooth-toggle = {
|
||||||
name = "Toggle Bluetooth";
|
name = "Toggle Bluetooth";
|
||||||
exec = "${scripts.bluetooth-toggle}/bin/bluetooth-toggle";
|
exec = "bluetooth-toggle";
|
||||||
icon = "bluetooth-symbolic";
|
icon = "bluetooth-symbolic";
|
||||||
comment = "Enable or disable Bluetooth";
|
comment = "Enable or disable Bluetooth";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
terminal = false;
|
terminal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
color-pick = {
|
|
||||||
name = "Pick Color";
|
|
||||||
exec = "${scripts.color-pick}/bin/color-pick";
|
|
||||||
icon = "color-select-symbolic";
|
|
||||||
comment = "Pick a screen color to the clipboard";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "color;picker;hex;eyedropper;";
|
|
||||||
};
|
|
||||||
|
|
||||||
screenshot-region = {
|
|
||||||
name = "Screenshot Region";
|
|
||||||
exec = "${pkgs.hyprshot}/bin/hyprshot -m region";
|
|
||||||
icon = "screenshot-recorded-symbolic";
|
|
||||||
comment = "Capture a selected region";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "screenshot;capture;region;";
|
|
||||||
};
|
|
||||||
|
|
||||||
screenshot-window = {
|
|
||||||
name = "Screenshot Window";
|
|
||||||
exec = "${pkgs.hyprshot}/bin/hyprshot -m window";
|
|
||||||
icon = "screenshot-recorded-symbolic";
|
|
||||||
comment = "Capture the active window";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "screenshot;capture;window;";
|
|
||||||
};
|
|
||||||
|
|
||||||
screenshot-screen = {
|
|
||||||
name = "Screenshot Screen";
|
|
||||||
exec = "${pkgs.hyprshot}/bin/hyprshot -m output";
|
|
||||||
icon = "screenshot-recorded-symbolic";
|
|
||||||
comment = "Capture the whole screen";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "screenshot;capture;screen;monitor;";
|
|
||||||
};
|
|
||||||
|
|
||||||
screenshot-edit = {
|
|
||||||
name = "Screenshot & Annotate";
|
|
||||||
exec = "${scripts.screenshot-edit}/bin/screenshot-edit";
|
|
||||||
icon = "edit-symbolic";
|
|
||||||
comment = "Capture a region and open it in Satty";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "screenshot;annotate;satty;edit;";
|
|
||||||
};
|
|
||||||
|
|
||||||
record-toggle = {
|
|
||||||
name = "Screen Recording";
|
|
||||||
exec = "${scripts.record-toggle}/bin/record-toggle";
|
|
||||||
icon = "media-record-symbolic";
|
|
||||||
comment = "Start or stop screen recording";
|
|
||||||
categories = ["Utility" "AudioVideo"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "record;recording;screencast;video;";
|
|
||||||
};
|
|
||||||
|
|
||||||
power-cycle = {
|
|
||||||
name = "Power Profile";
|
|
||||||
exec = "${scripts.power-cycle}/bin/power-cycle";
|
|
||||||
icon = "power-profile-balanced-symbolic";
|
|
||||||
comment = "Cycle power-saver / balanced / performance";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "power;profile;performance;battery;";
|
|
||||||
};
|
|
||||||
|
|
||||||
airplane-toggle = {
|
|
||||||
name = "Airplane Mode";
|
|
||||||
exec = "${scripts.airplane-toggle}/bin/airplane-toggle";
|
|
||||||
icon = "airplane-mode-symbolic";
|
|
||||||
comment = "Toggle Wi-Fi and Bluetooth together";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "airplane;flight;wifi;bluetooth;offline;";
|
|
||||||
};
|
|
||||||
|
|
||||||
clipboard-menu = {
|
|
||||||
name = "Clipboard History";
|
|
||||||
exec = "${scripts.clipboard-menu}/bin/clipboard-menu";
|
|
||||||
icon = "edit-paste-symbolic";
|
|
||||||
comment = "Pick a past clipboard entry";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
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 = {
|
|
||||||
name = "Emoji Picker";
|
|
||||||
exec = "${scripts.emoji-picker}/bin/emoji-picker";
|
|
||||||
icon = "face-smile-symbolic";
|
|
||||||
comment = "Pick an emoji and type it";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
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 = {
|
|
||||||
name = "Keep Awake";
|
|
||||||
exec = "${scripts.caffeine-toggle}/bin/caffeine-toggle";
|
|
||||||
icon = "my-caffeine-on-symbolic";
|
|
||||||
comment = "Pause or resume idle locking and suspend";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "caffeine;idle;awake;inhibit;suspend;";
|
|
||||||
};
|
|
||||||
|
|
||||||
logout = {
|
logout = {
|
||||||
name = "Logout";
|
name = "Logout";
|
||||||
exec = "${pkgs.hyprland}/bin/hyprctl dispatch exit";
|
exec = "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"];
|
||||||
terminal = false;
|
terminal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
dnd-toggle = {
|
|
||||||
name = "Do Not Disturb";
|
|
||||||
exec = "${scripts.dnd-toggle}/bin/dnd-toggle";
|
|
||||||
icon = "notifications-disabled-symbolic";
|
|
||||||
comment = "Toggle Do Not Disturb";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "dnd;notifications;disturb;swaync;silence;";
|
|
||||||
};
|
|
||||||
|
|
||||||
vol-mute = {
|
|
||||||
name = "Mute Volume";
|
|
||||||
exec = "${scripts.vol-mute}/bin/vol-mute";
|
|
||||||
icon = "audio-volume-muted-symbolic";
|
|
||||||
comment = "Toggle output mute";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
vol-up = {
|
|
||||||
name = "Volume Up";
|
|
||||||
exec = "${scripts.vol-up}/bin/vol-up";
|
|
||||||
icon = "audio-volume-high-symbolic";
|
|
||||||
comment = "Raise the volume by 5%";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
vol-down = {
|
|
||||||
name = "Volume Down";
|
|
||||||
exec = "${scripts.vol-down}/bin/vol-down";
|
|
||||||
icon = "audio-volume-low-symbolic";
|
|
||||||
comment = "Lower the volume by 5%";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
bright-up = {
|
|
||||||
name = "Brightness Up";
|
|
||||||
exec = "${scripts.bright-up}/bin/bright-up";
|
|
||||||
icon = "display-brightness-high-symbolic";
|
|
||||||
comment = "Raise the brightness by 5%";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
bright-down = {
|
|
||||||
name = "Brightness Down";
|
|
||||||
exec = "${scripts.bright-down}/bin/bright-down";
|
|
||||||
icon = "display-brightness-low-symbolic";
|
|
||||||
comment = "Lower the brightness by 5%";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
output-cycle = {
|
|
||||||
name = "Cycle Audio Output";
|
|
||||||
exec = "${scripts.output-cycle}/bin/output-cycle";
|
|
||||||
icon = "audio-speakers-symbolic";
|
|
||||||
comment = "Switch to the next audio output";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "audio;output;sink;speaker;headphones;";
|
|
||||||
};
|
|
||||||
|
|
||||||
input-cycle = {
|
|
||||||
name = "Cycle Audio Input";
|
|
||||||
exec = "${scripts.input-cycle}/bin/input-cycle";
|
|
||||||
icon = "audio-input-microphone-symbolic";
|
|
||||||
comment = "Switch to the next audio input";
|
|
||||||
categories = ["System"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "audio;input;source;microphone;mic;";
|
|
||||||
};
|
|
||||||
|
|
||||||
spotatui = {
|
spotatui = {
|
||||||
name = "Spotify";
|
name = "Spotify";
|
||||||
exec = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.spotatui}/bin/spotatui";
|
exec = "ghostty -e 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,6 +4,5 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
notify = true;
|
notify = true;
|
||||||
automount = true;
|
automount = true;
|
||||||
tray = "never";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,103 +0,0 @@
|
|||||||
# 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,23 +1,13 @@
|
|||||||
{
|
{pkgs, ...}: let
|
||||||
pkgs,
|
scripts = import ./scripts.nix {inherit 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;
|
||||||
@@ -27,33 +17,10 @@ in {
|
|||||||
playerctl
|
playerctl
|
||||||
pavucontrol
|
pavucontrol
|
||||||
blueman
|
blueman
|
||||||
|
iw
|
||||||
hyprsunset
|
hyprsunset
|
||||||
]
|
]
|
||||||
++ (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]);
|
++ (with scripts; [vol-up vol-down vol-mute mic-mute bright-up bright-down nightshift-toggle focus-toggle waybar-toggle wifi-toggle bluetooth-toggle]);
|
||||||
|
|
||||||
# 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,40 +1,10 @@
|
|||||||
{
|
{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 = ''
|
||||||
${waybar-osd}/bin/waybar-osd "$OSD_TEXT"
|
[ -f /tmp/waybar-osd-pid ] && kill "$(cat /tmp/waybar-osd-pid)" 2>/dev/null
|
||||||
|
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 = ''
|
||||||
@@ -61,124 +31,35 @@
|
|||||||
OSD_TEXT=" $BRIGHT%"
|
OSD_TEXT=" $BRIGHT%"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Resolve $src: the default source, otherwise the first available source.
|
|
||||||
# Some machines have no default audio source (@DEFAULT_AUDIO_SOURCE@ unresolved).
|
|
||||||
micSource = ''
|
|
||||||
src=$(${pkgs.wireplumber}/bin/wpctl inspect @DEFAULT_AUDIO_SOURCE@ 2>/dev/null | sed -n 's/^id \([0-9]*\),.*/\1/p')
|
|
||||||
if [ -z "$src" ]; then
|
|
||||||
src=$(${pkgs.pipewire}/bin/pw-dump | ${pkgs.jq}/bin/jq -r \
|
|
||||||
'[.[] | select(.info.props."media.class"=="Audio/Source") | .id] | .[0] // empty')
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
# tofi in vertical dmenu mode: the global config is a 36px-tall horizontal
|
|
||||||
# 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";
|
|
||||||
|
|
||||||
# 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
|
if bluetoothctl show 2>/dev/null | grep -q "Powered: yes"; then
|
||||||
nl=$'\n'
|
device=$(bluetoothctl devices Connected 2>/dev/null | head -1 | cut -d' ' -f3-)
|
||||||
# bluetoothctl hangs without a controller by default → always bounded by timeout.
|
if [ -n "$device" ]; then
|
||||||
bt() { timeout 3 ${pkgs.bluez}/bin/bluetoothctl "$@" 2>/dev/null; }
|
printf '{"text": "%s", "class": "connected", "tooltip": "Bluetooth\\n %s"}\n' "$device" "$device"
|
||||||
|
|
||||||
powered=$(bt show | awk '/Powered:/ { print $2; exit }')
|
|
||||||
if [ "$powered" != "yes" ]; then
|
|
||||||
"$jq" -cn '{ text: "", class: "off", tooltip: "Bluetooth off" }'
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
tip=""
|
|
||||||
add_tip() { tip="''${tip:+$tip$nl}$1"; }
|
|
||||||
|
|
||||||
count=0
|
|
||||||
for mac in $(bt devices Connected | awk '{ print $2 }'); do
|
|
||||||
count=$((count + 1))
|
|
||||||
info=$(bt info "$mac")
|
|
||||||
name=$(printf '%s' "$info" | sed -n 's/^[[:space:]]*Name: //p' | head -1)
|
|
||||||
[ -z "$name" ] && name="$mac"
|
|
||||||
batt=$(printf '%s' "$info" | sed -n 's/.*Battery Percentage:.*(\([0-9][0-9]*\)).*/\1/p' | head -1)
|
|
||||||
add_tip " $name''${batt:+ · $batt%}"
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$count" -gt 0 ]; then
|
|
||||||
"$jq" -cn --arg tooltip "$tip" '{ text: "", class: "connected", tooltip: $tooltip }'
|
|
||||||
else
|
else
|
||||||
"$jq" -cn '{ text: "", class: "on", tooltip: "Bluetooth on" }'
|
printf '{"text": "", "class": "on", "tooltip": "Bluetooth on"}\n'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf '{"text": "", "class": "off", "tooltip": "Bluetooth off"}\n'
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
networkScript = pkgs.writeShellScript "waybar-network" ''
|
networkScript = pkgs.writeShellScript "waybar-network" ''
|
||||||
nmcli=${pkgs.networkmanager}/bin/nmcli
|
for iface in $(${pkgs.iproute2}/bin/ip -br link show | awk '$2 == "UP" {print $1}' | grep -vE '^(lo|tun|proton|wg[0-9]|ppp|vpn|docker|br-|veth|virbr)'); do
|
||||||
ip=${pkgs.iproute2}/bin/ip
|
ip=$(${pkgs.iproute2}/bin/ip addr show "$iface" 2>/dev/null | grep 'inet ' | awk '{print $2}' | cut -d/ -f1 | head -1)
|
||||||
jq=${pkgs.jq}/bin/jq
|
if [ -n "$ip" ]; then
|
||||||
nl=$'\n'
|
if [[ "$iface" == wl* ]]; then
|
||||||
|
ssid=$(${pkgs.iw}/bin/iw dev "$iface" link 2>/dev/null | grep SSID | sed 's/.*SSID: //')
|
||||||
text=""
|
signal=$(${pkgs.iw}/bin/iw dev "$iface" link 2>/dev/null | grep signal | awk '{print $2}')
|
||||||
tip=""
|
printf '{"text": "", "class": "wifi", "tooltip": " %s\\n %s dBm"}\n' "$ssid" "$signal"
|
||||||
class="disconnected"
|
else
|
||||||
add_seg() { text="''${text:+$text }$1"; }
|
printf '{"text": "", "class": "ethernet", "tooltip": " %s\\n %s"}\n' "$iface" "$ip"
|
||||||
add_tip() { tip="''${tip:+$tip$nl}$1"; }
|
|
||||||
|
|
||||||
# ── Ethernet ────────────────────────────────────────────────
|
|
||||||
eth=$("$nmcli" -t -f DEVICE,TYPE,STATE device status 2>/dev/null \
|
|
||||||
| awk -F: '$2 == "ethernet" && $3 == "connected" { print $1; exit }')
|
|
||||||
if [ -n "$eth" ]; then
|
|
||||||
eth_ip=$("$ip" -4 -br addr show "$eth" 2>/dev/null | awk '{ print $3 }' | cut -d/ -f1)
|
|
||||||
add_seg ""
|
|
||||||
class="ethernet"
|
|
||||||
add_tip " Ethernet''${eth_ip:+ · $eth_ip}"
|
|
||||||
fi
|
fi
|
||||||
|
exit 0
|
||||||
# ── Wi-Fi ───────────────────────────────────────────────────
|
|
||||||
wifi=$("$nmcli" -t -f ACTIVE,SSID,SIGNAL device wifi 2>/dev/null | grep -m1 '^yes:')
|
|
||||||
if [ -n "$wifi" ]; then
|
|
||||||
ssid=$(printf '%s' "$wifi" | cut -d: -f2)
|
|
||||||
signal=$(printf '%s' "$wifi" | cut -d: -f3)
|
|
||||||
if [ "''${signal:-0}" -ge 80 ]; then icon=""
|
|
||||||
elif [ "''${signal:-0}" -ge 60 ]; then icon=""
|
|
||||||
elif [ "''${signal:-0}" -ge 40 ]; then icon=""
|
|
||||||
elif [ "''${signal:-0}" -ge 20 ]; then icon=""
|
|
||||||
else icon=""
|
|
||||||
fi
|
fi
|
||||||
add_seg "$icon"
|
done
|
||||||
[ "$class" = "disconnected" ] && class="wifi"
|
printf '{"text": "", "class": "disconnected", "tooltip": "Disconnected"}\n'
|
||||||
add_tip "$icon ''${ssid:-Wi-Fi}''${signal:+ · $signal%}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ── VPN (nmcli, fallback interfaces) ────────────────────────
|
|
||||||
vpn=$("$nmcli" -t -f TYPE,NAME connection show --active 2>/dev/null \
|
|
||||||
| awk -F: '$1 == "vpn" || $1 == "wireguard" { print $2; exit }')
|
|
||||||
if [ -z "$vpn" ]; then
|
|
||||||
vpn=$("$ip" -br link show 2>/dev/null \
|
|
||||||
| awk '($2 == "UP" || $2 == "UNKNOWN") && $1 ~ /^(tun|wg|proton|ppp)/ { sub(/@.*/, "", $1); print $1; exit }')
|
|
||||||
fi
|
|
||||||
if [ -n "$vpn" ]; then
|
|
||||||
add_seg ""
|
|
||||||
add_tip " VPN · $vpn"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$text" ]; then
|
|
||||||
text=""
|
|
||||||
tip="Disconnected"
|
|
||||||
fi
|
|
||||||
|
|
||||||
"$jq" -cn --arg text "$text" --arg class "$class" --arg tooltip "$tip" \
|
|
||||||
'{ text: $text, class: $class, tooltip: $tooltip }'
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
vol-up = pkgs.writeShellScriptBin "vol-up" ''
|
vol-up = pkgs.writeShellScriptBin "vol-up" ''
|
||||||
@@ -200,12 +81,8 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
mic-mute = pkgs.writeShellScriptBin "mic-mute" ''
|
mic-mute = pkgs.writeShellScriptBin "mic-mute" ''
|
||||||
wpctl=${pkgs.wireplumber}/bin/wpctl
|
${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_SOURCE@ toggle
|
||||||
${micSource}
|
if ${pkgs.wireplumber}/bin/wpctl get-volume @DEFAULT_SOURCE@ | grep -q MUTED; then
|
||||||
[ -z "$src" ] && exit 0
|
|
||||||
|
|
||||||
"$wpctl" set-mute "$src" toggle
|
|
||||||
if "$wpctl" get-volume "$src" | grep -q MUTED; then
|
|
||||||
OSD_TEXT=" Muted"
|
OSD_TEXT=" Muted"
|
||||||
else
|
else
|
||||||
OSD_TEXT=" Live"
|
OSD_TEXT=" Live"
|
||||||
@@ -213,15 +90,6 @@ in {
|
|||||||
${updateOsd}
|
${updateOsd}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
mic-status = pkgs.writeShellScriptBin "mic-status" ''
|
|
||||||
${micSource}
|
|
||||||
if [ -n "$src" ] && ${pkgs.wireplumber}/bin/wpctl get-volume "$src" | grep -q MUTED; then
|
|
||||||
echo true
|
|
||||||
else
|
|
||||||
echo false
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
bright-up = pkgs.writeShellScriptBin "bright-up" ''
|
bright-up = pkgs.writeShellScriptBin "bright-up" ''
|
||||||
${pkgs.brightnessctl}/bin/brightnessctl set 5%+
|
${pkgs.brightnessctl}/bin/brightnessctl set 5%+
|
||||||
${brightGetText}
|
${brightGetText}
|
||||||
@@ -235,19 +103,19 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
wifi-toggle = pkgs.writeShellScriptBin "wifi-toggle" ''
|
wifi-toggle = pkgs.writeShellScriptBin "wifi-toggle" ''
|
||||||
if ${pkgs.networkmanager}/bin/nmcli radio wifi | grep -q enabled; then
|
if nmcli radio wifi | grep -q enabled; then
|
||||||
${pkgs.networkmanager}/bin/nmcli radio wifi off
|
nmcli radio wifi off
|
||||||
else
|
else
|
||||||
${pkgs.networkmanager}/bin/nmcli radio wifi on
|
nmcli radio wifi on
|
||||||
fi
|
fi
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
bluetooth-toggle = pkgs.writeShellScriptBin "bluetooth-toggle" ''
|
bluetooth-toggle = pkgs.writeShellScriptBin "bluetooth-toggle" ''
|
||||||
if ${pkgs.bluez}/bin/bluetoothctl show | grep -q "Powered: yes"; then
|
if bluetoothctl show | grep -q "Powered: yes"; then
|
||||||
${pkgs.bluez}/bin/bluetoothctl power off
|
bluetoothctl power off
|
||||||
else
|
else
|
||||||
${pkgs.bluez}/bin/bluetoothctl power on
|
bluetoothctl power on
|
||||||
fi
|
fi
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
'';
|
'';
|
||||||
@@ -261,7 +129,7 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
nightshift-toggle = pkgs.writeShellScriptBin "nightshift-toggle" ''
|
nightshift-toggle = pkgs.writeShellScriptBin "nightshift-toggle" ''
|
||||||
if ${pkgs.procps}/bin/pidof "hyprsunset" > /dev/null; then
|
if pidof "hyprsunset" > /dev/null; then
|
||||||
pkill hyprsunset
|
pkill hyprsunset
|
||||||
OSD_TEXT=" Night Shift Off"
|
OSD_TEXT=" Night Shift Off"
|
||||||
else
|
else
|
||||||
@@ -272,185 +140,25 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
focus-toggle = pkgs.writeShellScriptBin "focus-toggle" ''
|
focus-toggle = pkgs.writeShellScriptBin "focus-toggle" ''
|
||||||
if test -f "$XDG_RUNTIME_DIR/hypr-focus-mode"; then
|
if test -f /tmp/hypr-focus-mode; then
|
||||||
rm "$XDG_RUNTIME_DIR/hypr-focus-mode"
|
rm /tmp/hypr-focus-mode
|
||||||
OSD_TEXT=" Focus Off"
|
OSD_TEXT=" Focus Off"
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
${pkgs.hyprland}/bin/hyprctl reload
|
hyprctl reload
|
||||||
${pkgs.hyprland}/bin/hyprctl dispatch exec waybar
|
hyprctl dispatch exec waybar
|
||||||
else
|
else
|
||||||
touch "$XDG_RUNTIME_DIR/hypr-focus-mode"
|
touch /tmp/hypr-focus-mode
|
||||||
OSD_TEXT=" Focus On"
|
OSD_TEXT=" Focus On"
|
||||||
${updateOsd}
|
${updateOsd}
|
||||||
${pkgs.procps}/bin/pkill waybar || true
|
pkill waybar || true
|
||||||
${pkgs.hyprland}/bin/hyprctl keyword animations:enabled false
|
hyprctl keyword animations:enabled false
|
||||||
${pkgs.hyprland}/bin/hyprctl keyword general:gaps_in 0
|
hyprctl keyword general:gaps_in 0
|
||||||
${pkgs.hyprland}/bin/hyprctl keyword general:gaps_out 0
|
hyprctl keyword general:gaps_out 0
|
||||||
${pkgs.hyprland}/bin/hyprctl keyword decoration:active_opacity 1
|
hyprctl keyword decoration:active_opacity 1
|
||||||
${pkgs.hyprland}/bin/hyprctl keyword decoration:inactive_opacity 1
|
hyprctl keyword decoration:inactive_opacity 1
|
||||||
${pkgs.hyprland}/bin/hyprctl keyword decoration:rounding 0
|
hyprctl keyword decoration:rounding 0
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
dnd-toggle = pkgs.writeShellScriptBin "dnd-toggle" ''
|
# TODO: Run in background
|
||||||
state=$(${pkgs.swaynotificationcenter}/bin/swaync-client -d)
|
|
||||||
if [ "$state" = "true" ]; then
|
|
||||||
OSD_TEXT=" Do Not Disturb On"
|
|
||||||
else
|
|
||||||
OSD_TEXT=" Do Not Disturb Off"
|
|
||||||
fi
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
|
|
||||||
output-cycle = pkgs.writeShellScriptBin "output-cycle" ''
|
|
||||||
wpctl=${pkgs.wireplumber}/bin/wpctl
|
|
||||||
jq=${pkgs.jq}/bin/jq
|
|
||||||
pwdump=${pkgs.pipewire}/bin/pw-dump
|
|
||||||
|
|
||||||
# Sink IDs in pw-dump order.
|
|
||||||
ids=($("$pwdump" | "$jq" -r '.[] | select(.info.props."media.class"=="Audio/Sink") | .id'))
|
|
||||||
n=''${#ids[@]}
|
|
||||||
[ "$n" -eq 0 ] && exit 0
|
|
||||||
|
|
||||||
cur=$("$wpctl" inspect @DEFAULT_AUDIO_SINK@ 2>/dev/null | sed -n 's/^id \([0-9]*\),.*/\1/p')
|
|
||||||
|
|
||||||
next_index=0
|
|
||||||
for i in "''${!ids[@]}"; do
|
|
||||||
if [ "''${ids[$i]}" = "$cur" ]; then
|
|
||||||
next_index=$(( (i + 1) % n ))
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
next=''${ids[$next_index]}
|
|
||||||
|
|
||||||
"$wpctl" set-default "$next"
|
|
||||||
desc=$("$pwdump" | "$jq" -r --argjson id "$next" '.[] | select(.id==$id) | .info.props."node.description"')
|
|
||||||
OSD_TEXT=" ''${desc:-Output}"
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
|
|
||||||
input-cycle = pkgs.writeShellScriptBin "input-cycle" ''
|
|
||||||
wpctl=${pkgs.wireplumber}/bin/wpctl
|
|
||||||
jq=${pkgs.jq}/bin/jq
|
|
||||||
pwdump=${pkgs.pipewire}/bin/pw-dump
|
|
||||||
|
|
||||||
# Source IDs in pw-dump order.
|
|
||||||
ids=($("$pwdump" | "$jq" -r '.[] | select(.info.props."media.class"=="Audio/Source") | .id'))
|
|
||||||
n=''${#ids[@]}
|
|
||||||
[ "$n" -eq 0 ] && exit 0
|
|
||||||
|
|
||||||
cur=$("$wpctl" inspect @DEFAULT_AUDIO_SOURCE@ 2>/dev/null | sed -n 's/^id \([0-9]*\),.*/\1/p')
|
|
||||||
|
|
||||||
next_index=0
|
|
||||||
for i in "''${!ids[@]}"; do
|
|
||||||
if [ "''${ids[$i]}" = "$cur" ]; then
|
|
||||||
next_index=$(( (i + 1) % n ))
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
next=''${ids[$next_index]}
|
|
||||||
|
|
||||||
"$wpctl" set-default "$next"
|
|
||||||
desc=$("$pwdump" | "$jq" -r --argjson id "$next" '.[] | select(.id==$id) | .info.props."node.description"')
|
|
||||||
OSD_TEXT=" ''${desc:-Input}"
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
|
|
||||||
color-pick = pkgs.writeShellScriptBin "color-pick" ''
|
|
||||||
# hyprpicker -a already copies the color to the clipboard.
|
|
||||||
color=$(${pkgs.hyprpicker}/bin/hyprpicker -a 2>/dev/null)
|
|
||||||
if [ -n "$color" ]; then
|
|
||||||
OSD_TEXT=" $color"
|
|
||||||
else
|
|
||||||
OSD_TEXT=" Cancelled"
|
|
||||||
fi
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
|
|
||||||
screenshot-edit = pkgs.writeShellScriptBin "screenshot-edit" ''
|
|
||||||
${pkgs.hyprshot}/bin/hyprshot -m region --raw 2>/dev/null \
|
|
||||||
| ${pkgs.satty}/bin/satty --filename -
|
|
||||||
'';
|
|
||||||
|
|
||||||
record-toggle = pkgs.writeShellScriptBin "record-toggle" ''
|
|
||||||
if pgrep -x wf-recorder >/dev/null; then
|
|
||||||
# -INT lets wf-recorder finalize the file cleanly.
|
|
||||||
pkill -INT -x wf-recorder
|
|
||||||
OSD_TEXT=" Recording saved"
|
|
||||||
else
|
|
||||||
dir="$HOME/Videos"
|
|
||||||
mkdir -p "$dir"
|
|
||||||
file="$dir/rec-$(date +%Y%m%d-%H%M%S).mp4"
|
|
||||||
${pkgs.wf-recorder}/bin/wf-recorder -f "$file" >/dev/null 2>&1 &
|
|
||||||
OSD_TEXT=" Recording…"
|
|
||||||
fi
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
|
|
||||||
power-cycle = pkgs.writeShellScriptBin "power-cycle" ''
|
|
||||||
ppd=${pkgs.power-profiles-daemon}/bin/powerprofilesctl
|
|
||||||
cur=$("$ppd" get)
|
|
||||||
case "$cur" in
|
|
||||||
power-saver) next=balanced; icon="" ;;
|
|
||||||
balanced) next=performance; icon="" ;;
|
|
||||||
performance) next=power-saver; icon="" ;;
|
|
||||||
*) next=balanced; icon="" ;;
|
|
||||||
esac
|
|
||||||
"$ppd" set "$next"
|
|
||||||
OSD_TEXT="$icon ''${next^}"
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
|
|
||||||
airplane-toggle = pkgs.writeShellScriptBin "airplane-toggle" ''
|
|
||||||
# Reuse nmcli + bluetoothctl (unprivileged) instead of rfkill.
|
|
||||||
on=false
|
|
||||||
nmcli radio wifi 2>/dev/null | grep -q enabled && on=true
|
|
||||||
bluetoothctl show 2>/dev/null | grep -q "Powered: yes" && on=true
|
|
||||||
if $on; then
|
|
||||||
nmcli radio wifi off 2>/dev/null
|
|
||||||
bluetoothctl power off >/dev/null 2>&1 || true
|
|
||||||
OSD_TEXT=" Airplane On"
|
|
||||||
else
|
|
||||||
nmcli radio wifi on 2>/dev/null
|
|
||||||
bluetoothctl power on >/dev/null 2>&1 || true
|
|
||||||
OSD_TEXT=" Airplane Off"
|
|
||||||
fi
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
|
|
||||||
clipboard-menu = pkgs.writeShellScriptBin "clipboard-menu" ''
|
|
||||||
list=$(${pkgs.cliphist}/bin/cliphist list)
|
|
||||||
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.wl-clipboard}/bin/wl-copy
|
|
||||||
'';
|
|
||||||
|
|
||||||
emoji-picker = pkgs.writeShellScriptBin "emoji-picker" ''
|
|
||||||
export PATH="${pkgs.wtype}/bin:${pkgs.wl-clipboard}/bin:$PATH"
|
|
||||||
export BEMOJI_PICKER_CMD="${tofiMenu} --prompt-text 'emoji: '"
|
|
||||||
# -t types the emoji (wtype), -c also copies it.
|
|
||||||
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" ''
|
|
||||||
# Pause hypridle (stay awake) or resume it.
|
|
||||||
if systemctl --user is-active --quiet hypridle; then
|
|
||||||
systemctl --user stop hypridle
|
|
||||||
OSD_TEXT=" Keep Awake On"
|
|
||||||
else
|
|
||||||
systemctl --user start hypridle
|
|
||||||
OSD_TEXT=" Keep Awake Off"
|
|
||||||
fi
|
|
||||||
${updateOsd}
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
|
||||||
osdPath,
|
|
||||||
networkScript,
|
networkScript,
|
||||||
bluetoothScript,
|
bluetoothScript,
|
||||||
caffeineToggleScript,
|
|
||||||
osdStatusScript,
|
|
||||||
nightshiftToggleScript,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
gaps-out = config.theme.gaps-out;
|
gaps-out = config.theme.gaps-out;
|
||||||
@@ -18,7 +13,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 = ["custom/osd" "custom/osd-sep" "clock" "tray" "hyprland/workspaces" "custom/network" "custom/bluetooth" "battery" "group/drawer"];
|
modules-center = ["custom/osd" "custom/osd-sep" "clock" "tray" "hyprland/workspaces" "custom/network" "custom/bluetooth" "battery"];
|
||||||
|
|
||||||
# ── Modules ─────────────────────────────────────────────────────────
|
# ── Modules ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -27,68 +22,52 @@ 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 = "${pkgs.hyprland}/bin/hyprctl dispatch workspace e+1";
|
on-scroll-down = "hyprctl dispatch workspace e+1";
|
||||||
on-scroll-up = "${pkgs.hyprland}/bin/hyprctl dispatch workspace e-1";
|
on-scroll-up = "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 = "bluetoothctl show 2>/dev/null | grep -q Controller";
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
interval = 5;
|
interval = 5;
|
||||||
on-click = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings --page bluetooth";
|
on-click-right = "blueman-manager &";
|
||||||
|
on-click = "bluetooth-toggle";
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom/osd" = {
|
"custom/osd" = {
|
||||||
exec = "cat ${osdPath}";
|
exec = "cat /tmp/waybar-osd";
|
||||||
exec-if = "${osdStatusScript}/bin/waybar-osd-status";
|
exec-if = "test -f /tmp/waybar-osd";
|
||||||
signal = 8;
|
signal = 8;
|
||||||
interval = 1;
|
interval = "once";
|
||||||
format = "{}";
|
format = "{}";
|
||||||
};
|
};
|
||||||
|
|
||||||
"custom/osd-sep" = {
|
"custom/osd-sep" = {
|
||||||
exec = "echo '|'";
|
exec = "echo '|'";
|
||||||
exec-if = "${osdStatusScript}/bin/waybar-osd-status";
|
exec-if = "test -f /tmp/waybar-osd";
|
||||||
signal = 8;
|
signal = 8;
|
||||||
interval = 1;
|
interval = "once";
|
||||||
format = "{}";
|
format = "{}";
|
||||||
tooltip = false;
|
tooltip = false;
|
||||||
};
|
};
|
||||||
@@ -99,7 +78,8 @@ 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 = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings --page audio";
|
on-click = "vol-mute";
|
||||||
|
on-click-right = "pavucontrol -t 4 &";
|
||||||
format-icons = {
|
format-icons = {
|
||||||
headphone = "";
|
headphone = "";
|
||||||
hands-free = "";
|
hands-free = "";
|
||||||
@@ -125,7 +105,7 @@ in {
|
|||||||
exec = "${networkScript}";
|
exec = "${networkScript}";
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
interval = 10;
|
interval = 10;
|
||||||
on-click = "${pkgs.ghostty}/bin/ghostty +new-window -e ${pkgs.nur.repos.anotherhadi.settuings}/bin/settuings --page network";
|
on-click-right = "ghostty -e wifitui &";
|
||||||
};
|
};
|
||||||
|
|
||||||
tray = {
|
tray = {
|
||||||
@@ -150,14 +130,10 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"group/drawer" = {
|
"custom/arrow-left" = {
|
||||||
orientation = "horizontal";
|
format = " ";
|
||||||
drawer = {
|
tooltip = false;
|
||||||
transition-duration = 300;
|
cursor = true;
|
||||||
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,22 +45,10 @@ 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};
|
||||||
@@ -126,11 +114,6 @@ 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,29 +9,49 @@
|
|||||||
../../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/steam.nix
|
../../nixos/usbguard.nix
|
||||||
../../nixos/kernel-hardening.nix
|
../../home/programs/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:
|
../../nixos/omen.nix # CHANGEME: For my laptop only, remove this (OMEN 16)
|
||||||
./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
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users."${config.var.username}" = import ./home.nix;
|
# USBGuard:
|
||||||
|
# Allow all USB devices until a proper policy is configured.
|
||||||
|
# Run `sudo usbguard generate-policy` with your devices plugged in,
|
||||||
|
# then set rules = "<output>" and switch implicitPolicyTarget to "block".
|
||||||
|
# services.usbguard.implicitPolicyTarget = lib.mkForce "allow";
|
||||||
|
|
||||||
users.users.${config.var.username}.hashedPassword = "$y$j9T$A7gH534UczuBxulj9IfEu1$ImRy3lpYpemRWNVIkA7efKPWXneFiqhZnEF1aMkWcD8"; # CHANGEME: This is my password
|
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;
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
system.stateVersion = "26.05";
|
system.stateVersion = "26.05";
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||