Compare commits
1512 Commits
main
..
cd4971b30b
| Author | SHA1 | Date | |
|---|---|---|---|
| cd4971b30b | |||
| 188d838cd7 | |||
| 13ce25eb7a | |||
| 695d558058 | |||
| 0835df46d8 | |||
| 2ea661c8f4 | |||
| 2057df3ffc | |||
| ee0cb3cf68 | |||
| def37f0b3a | |||
| 0d901aa10c | |||
| 835114e5c9 | |||
| 9cef5b8f76 | |||
| c37f3fc5e4 | |||
| 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,133 @@
|
|||||||
|
<div align="center">
|
||||||
|
<img alt="nixy logo" src="./.github/assets/logo.png" width="120px" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
# Nixy
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<div align="center">
|
||||||
|
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
||||||
|
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=starship&logoColor={primarycolor}">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/anotherhadi/nixy/">
|
||||||
|
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=github&logoColor={primarycolor}">
|
||||||
|
</a>
|
||||||
|
<a href="https://nixos.org">
|
||||||
|
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor={backgroundcolor}&logo=NixOS&logoColor={primarycolor}&color={primarycolor}">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
||||||
|
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA={backgroundcolor}&colorB={primarycolor}&logo=unlicense&logoColor={primarycolor}"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily
|
||||||
|
customizable setup. It provides a structured way to manage your system
|
||||||
|
configuration and dotfiles with minimal effort. It includes _home-manager_,
|
||||||
|
_secrets_, and _custom theming_ all in one place.
|
||||||
|
|
||||||
|
**Features:**
|
||||||
|
|
||||||
|
- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!)
|
||||||
|
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
||||||
|
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
||||||
|
|
||||||
|
## Table of Content
|
||||||
|
|
||||||
|
{md_table_of_content}
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### 🏠 /home (User-level configuration)
|
||||||
|
|
||||||
|
Contains **dotfiles and settings** that apply to your user environment.
|
||||||
|
|
||||||
|
**Subfolders:**
|
||||||
|
|
||||||
|
- `programs` is a collection of apps configured with home-manager
|
||||||
|
- `system` is some "desktop environment" configuration
|
||||||
|
|
||||||
|
### 🐧 /nixos
|
||||||
|
|
||||||
|
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader,
|
||||||
|
...)
|
||||||
|
|
||||||
|
### 🎨 /themes
|
||||||
|
|
||||||
|
This folder contains all system themes. Mainly
|
||||||
|
[stylix](https://stylix.danth.me/) configurations. Check out the available
|
||||||
|
themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
|
||||||
|
|
||||||
|
### 💻 /hosts
|
||||||
|
|
||||||
|
This directory contains host-specific configurations. Each host includes:
|
||||||
|
|
||||||
|
- `configuration.nix` for system-wide settings
|
||||||
|
- `home.nix` for user-level configuration
|
||||||
|
- `variables.nix` for global variables
|
||||||
|
- `secrets/` for sensitive data
|
||||||
|
|
||||||
|
### 🖥️ /server-modules
|
||||||
|
|
||||||
|
This folder contains server-related nixos modules. (bitwarden, nextcloud, ...)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to
|
||||||
|
your system:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Copy the `hosts/laptop` folder, rename it to match your system’s hostname,
|
||||||
|
and update `variables.nix` with your machine’s settings.
|
||||||
|
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure
|
||||||
|
proper hardware support.
|
||||||
|
4. Register your new host in `flake.nix` by adding it under nixosConfigurations.
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> `# CHANGEME` comments are placed throughout the config to
|
||||||
|
> indicate necessary modifications. Use the following command to quickly locate
|
||||||
|
> them:
|
||||||
|
>
|
||||||
|
> ```sh
|
||||||
|
> rg "CHANGEME" ~/.config/nixos
|
||||||
|
> ```
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> When you add new files, don't forget to run `git add .` to add them to the git
|
||||||
|
> repository
|
||||||
|
|
||||||
|
5. Build the system
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
||||||
|
```
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- [SERVER](docs/SERVER.md): Check out the server documentation
|
||||||
|
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||||
|
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
|
||||||
|
collection of wallpapers
|
||||||
|
- [NEOVIM](docs/NEOVIM.md): How to use the Neovim config in your own flake
|
||||||
|
|
||||||
|
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||||
|
- [LICENSE](LICENSE): MIT License
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<a href="https://github.com/anotherhadi/nixy">github</a> |
|
||||||
|
<a href="https://gitlab.com/anotherhadi_mirror/nixy">gitlab (mirror)</a> |
|
||||||
|
<a href="https://git.hadi.icu/anotherhadi/nixy">gitea (mirror)</a>
|
||||||
|
</div
|
||||||
|
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,5 @@
|
|||||||
|
.sops.yaml
|
||||||
.claude/
|
.claude/
|
||||||
old/
|
old/
|
||||||
docs/superpowers/
|
docs/superpowers/
|
||||||
.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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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": 1786621994,
|
"lastModified": 1781783441,
|
||||||
"narHash": "sha256-ygaOQQFGv3QHcNMoGBor22Dm5GouzmwYucrUfX6oTxQ=",
|
"narHash": "sha256-v7rAVyX0DGAYqei3FxWPDJLqrzJrEsue2DVBEDApxQo=",
|
||||||
"owner": "oxcl",
|
"owner": "oxcl",
|
||||||
"repo": "nix-flake-helium-browser",
|
"repo": "nix-flake-helium-browser",
|
||||||
"rev": "810640b8a7aa504d3962ec8bb857f8252aad6547",
|
"rev": "aabc12cf6518480d83b2b5d06d2eecf86a25273f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -383,33 +423,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785119570,
|
"lastModified": 1782103446,
|
||||||
"narHash": "sha256-Rgs2xKnGLFWQscxUaXX07oyZeuMDOHEbqDOsgliLFGM=",
|
"narHash": "sha256-+vMR3KPBVoY9nJrQI9qje5H1vmv51dJgMYkUuYimtJg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "d4fd24667c8cbef124bb70a20380cab75ec8474d",
|
"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": 1786249295,
|
"lastModified": 1782030356,
|
||||||
"narHash": "sha256-Y2mSr+HLKYoOsjiackgilxkHXe8gkJ3z4hFFekjQX3I=",
|
"narHash": "sha256-h4WpMr455AfRub0FXBaon6Vcpe0waUyJ4GivIW6oyd4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "14d55b8069119e3b88da7aa2f6c97f86a2cd3cd6",
|
"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": 1786528975,
|
"lastModified": 1782166108,
|
||||||
"narHash": "sha256-8KuasCs+mVQ7WbLONUf/QB7NZeQvovyXRyxAj4nOOzY=",
|
"narHash": "sha256-/EtnQBcKbsaCAGQ5VRcplrHRkR4ryqyLMpBfkVuG9Xw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "3e7edd9afe17e45521300e041c65de3015f4a302",
|
"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": 1786599213,
|
"lastModified": 1769909678,
|
||||||
"narHash": "sha256-yNJd40f11EzXBjSByCB7IPpeFFAdeoSKKM67dGkfFoU=",
|
"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": "0e251e24a4f24e036a084b6b4b2d2491af4167f4",
|
"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": 1786535285,
|
"lastModified": 1781577229,
|
||||||
"narHash": "sha256-rG5HKMAgAhMgydvKGtco6rqTxRq4EDZQCx9USLvVqYw=",
|
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9f78f44a87948854445dae0b6bf82b2e87e4efb5",
|
"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": 1786700839,
|
"lastModified": 1782288426,
|
||||||
"narHash": "sha256-DtB4Byceo3tyyZNsmwuM0YZSO76VaUaGMSxVjdwYQyw=",
|
"narHash": "sha256-SNJtZSWJ4/ZGmD2PCpbpOggNugnNs917knMbmUi+1oU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "3c7c14b16718033c171babfd3020006c05d724d8",
|
"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": 1786433999,
|
"lastModified": 1781997110,
|
||||||
"narHash": "sha256-rbOp2g0UCYt+evTnCGCKBQGqSMfwX4RTXneNbeHqOAk=",
|
"narHash": "sha256-6D6xtYN5t1kZGNd69eMZsRBkgX5Df1roErn/kFR1C+A=",
|
||||||
"owner": "notashelf",
|
"owner": "notashelf",
|
||||||
"repo": "nvf",
|
"repo": "nvf",
|
||||||
"rev": "a213644cadd5f90bf18b0c409f08f282b30e55e3",
|
"rev": "320f60b97075a58d38b90fc5e39f478421dbd38a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -762,7 +875,7 @@
|
|||||||
"nvf-config": {
|
"nvf-config": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs-stable"
|
||||||
],
|
],
|
||||||
"nvf": [
|
"nvf": [
|
||||||
"nvf"
|
"nvf"
|
||||||
@@ -780,18 +893,18 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"awesome-wallpapers": "awesome-wallpapers",
|
||||||
"blog": "blog",
|
"blog": "blog",
|
||||||
"default-creds": "default-creds",
|
"default-creds": "default-creds",
|
||||||
"disko": "disko",
|
|
||||||
"git-hooks": "git-hooks",
|
|
||||||
"helium-browser": "helium-browser",
|
"helium-browser": "helium-browser",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"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",
|
"nvf-config": "nvf-config",
|
||||||
@@ -799,6 +912,27 @@
|
|||||||
"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 +940,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 +960,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 +1031,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 +1080,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 +1096,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 +1112,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 +1170,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,13 +6,13 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
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 = {
|
nvf-config = {
|
||||||
url = "path:./home/programs/tui/nvf";
|
url = "path:./home/programs/tui/nvf";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
inputs.nvf.follows = "nvf";
|
inputs.nvf.follows = "nvf";
|
||||||
};
|
};
|
||||||
nur = {
|
nur = {
|
||||||
@@ -24,64 +24,51 @@
|
|||||||
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/tui/nixy/flake.nix args)
|
||||||
@@ -94,12 +81,6 @@
|
|||||||
h-work = import ./hosts/work/flake.nix args;
|
h-work = import ./hosts/work/flake.nix args;
|
||||||
jack = import ./hosts/server/flake.nix args;
|
jack = import ./hosts/server/flake.nix args;
|
||||||
};
|
};
|
||||||
devShells = forAllSystems (system: pkgs: {
|
|
||||||
default = import ./shell.nix {
|
|
||||||
inherit pkgs;
|
|
||||||
gitHooksLib = git-hooks.lib.${system};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,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"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +1,20 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-unstable,
|
pkgs-stable,
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home = {
|
home.packages = with pkgs;
|
||||||
packages = with pkgs-unstable;
|
[
|
||||||
[
|
go
|
||||||
go
|
claude-code
|
||||||
claude-code
|
]
|
||||||
]
|
++ (with pkgs-stable; [
|
||||||
++ (with pkgs; [
|
nodejs
|
||||||
nodejs
|
air
|
||||||
air
|
duckdb
|
||||||
duckdb
|
python3
|
||||||
python3
|
jq
|
||||||
jq
|
nix-prefetch-github
|
||||||
nix-prefetch-github
|
rsync
|
||||||
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";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,10 +85,10 @@
|
|||||||
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 \
|
--set-default GTK_USE_PORTAL 1 \
|
||||||
@@ -136,10 +136,4 @@ in {
|
|||||||
categories = ["Network" "WebBrowser"];
|
categories = ["Network" "WebBrowser"];
|
||||||
mimeType = ["text/html" "text/xml" "application/xhtml+xml"];
|
mimeType = ["text/html" "text/xml" "application/xhtml+xml"];
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
directories = [
|
|
||||||
".config/net.imput.helium"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,16 @@
|
|||||||
{
|
{pkgs-stable, ...}: {
|
||||||
pkgs,
|
home.packages = with pkgs-stable; [
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
vlc # Video player
|
vlc # Video player
|
||||||
obsidian # Note taking app
|
obsidian # Note taking app
|
||||||
|
textpieces # Manipulate texts
|
||||||
|
resources # Resource monitor
|
||||||
|
gnome-clocks # Clocks app
|
||||||
|
gnome-text-editor # Basic graphic text editor
|
||||||
|
ticktick # Todo app
|
||||||
pinta # Image editor
|
pinta # Image editor
|
||||||
|
switcheroo # Convert images between different formats
|
||||||
onlyoffice-desktopeditors # Office suite
|
onlyoffice-desktopeditors # Office suite
|
||||||
blanket # Listen to different sounds
|
blanket # Listen to different sounds
|
||||||
signal-desktop # Messaging app
|
signal-desktop # Messaging app
|
||||||
ticktick # Todo app
|
|
||||||
|
|
||||||
# Backup
|
|
||||||
thunar
|
|
||||||
gnome-text-editor
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
directories = [
|
|
||||||
".config/ticktick"
|
|
||||||
".config/Signal"
|
|
||||||
".config/obsidian"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,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}"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -17,17 +17,17 @@ in {
|
|||||||
"result"
|
"result"
|
||||||
"result-*"
|
"result-*"
|
||||||
".superpowers/"
|
".superpowers/"
|
||||||
".claude/"
|
|
||||||
"docs/superpowers/"
|
"docs/superpowers/"
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
user.name = username;
|
user.name = username;
|
||||||
user.email = email;
|
user.email = email;
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
pull.rebase = "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";
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
in {
|
in {
|
||||||
home.file.".config/ilovetui/config.yaml".text = ''
|
home.file.".config/ilovetui/config.yaml".text = ''
|
||||||
nerd_fonts: true
|
|
||||||
border: rounded
|
|
||||||
colors:
|
colors:
|
||||||
base00: "#${c.base00}" # Background
|
base00: "#${c.base00}" # Background
|
||||||
base01: "#${c.base01}" # Lighter Background / Status Bars
|
base01: "#${c.base01}" # Lighter Background / Status Bars
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
}: {
|
}: {
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
EDITOR = "nvim";
|
EDITOR = "nvim";
|
||||||
VISUAL = "nvim";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.nvf = {
|
programs.nvf = {
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = "<cmd>set spell!<cr>";
|
action = "<cmd>set spell!<cr>";
|
||||||
desc = "Toggle spell check";
|
desc = "Toggle spellLazyGitcheck";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
key = "<leader>uc";
|
key = "<leader>uc";
|
||||||
|
|||||||
@@ -84,7 +84,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 },
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,29 +1,28 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-unstable,
|
pkgs-stable,
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs-stable; [
|
||||||
# I love TUIs
|
# I love TUIs
|
||||||
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
|
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
|
||||||
|
dysk # A terminal-based disk usage analyzer
|
||||||
|
wikiman # Offline search engine for manual pages (arch wiki, tldr)
|
||||||
tealdeer # Fast tldr client
|
tealdeer # Fast tldr client
|
||||||
sttr # A minimalist CyberChef-like, cross-platform CLI app for performing various operations on strings
|
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
|
slides # A terminal-based presentation tool that allows you to create and deliver presentations directly from the command line
|
||||||
pom # Pomodoro timer in your terminal
|
pom # Pomodoro timer in your terminal
|
||||||
tabiew # A terminal-based CSV viewer and manipulator
|
tabiew # A terminal-based CSV viewer and manipulator
|
||||||
jless # A pager for JSON
|
jless # A pager for JSON
|
||||||
|
pkgs.wifitui # TUI for managing wifi
|
||||||
pkgs.nur.repos.anotherhadi.usbguard-tui # TUI for managing USBGuard rules
|
pkgs.nur.repos.anotherhadi.usbguard-tui # TUI for managing USBGuard rules
|
||||||
pkgs.nur.repos.anotherhadi.settuings # Terminal based settings (wifi, bluetooth, audio, ...)
|
pkgs.nur.repos.anotherhadi.sheets # Terminal based spreadsheet tool
|
||||||
pkgs.nur.repos.anotherhadi.fztea # Flipper Zero from the terminal
|
|
||||||
pkgs.nur.repos.anotherhadi.monitui # Edit hyprland's monitor configuration
|
|
||||||
dua # Tool to conveniently learn about the disk usage of directories
|
|
||||||
mcat # Cat command for documents / images / videos and more
|
|
||||||
lazyjournal
|
|
||||||
|
|
||||||
|
# I love CLIs
|
||||||
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
||||||
gh # GitHub
|
gh # GitHub
|
||||||
|
gh-dash # A terminal dashboard for GitHub
|
||||||
figlet # Transform text into ASCII art
|
figlet # Transform text into ASCII art
|
||||||
pastel # Command-line tool to generate, analyze, convert and manipulate colors
|
pastel # Command-line tool to generate, analyze, convert and manipulate colors
|
||||||
imagemagick # Image manipulation tool
|
imagemagick # Image manipulation tool
|
||||||
@@ -37,10 +36,5 @@
|
|||||||
pipes
|
pipes
|
||||||
cmatrix
|
cmatrix
|
||||||
fastfetch
|
fastfetch
|
||||||
smassh # typing test, 10fastfinger like
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
directories = [".config/gh" ".config/gh-dash"];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{pkgs-stable, ...}: {
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs-stable.direnv;
|
||||||
nix-direnv = {
|
nix-direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs-stable.nix-direnv;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,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 = [
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# Fzf is a general-purpose command-line fuzzy finder.
|
# Fzf is a general-purpose command-line fuzzy finder.
|
||||||
{
|
{
|
||||||
|
pkgs-stable,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
@@ -7,16 +8,11 @@
|
|||||||
accent = "#" + config.lib.stylix.colors.base0D;
|
accent = "#" + config.lib.stylix.colors.base0D;
|
||||||
foreground = "#" + config.lib.stylix.colors.base05;
|
foreground = "#" + config.lib.stylix.colors.base05;
|
||||||
muted = "#" + config.lib.stylix.colors.base03;
|
muted = "#" + config.lib.stylix.colors.base03;
|
||||||
previewCmd = "bat --color=always --style=plain,numbers --line-range=:500 {}";
|
|
||||||
in {
|
in {
|
||||||
programs.fzf = {
|
programs.fzf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs-stable.fzf;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
|
||||||
defaultCommand = "fd --type f --hidden --strip-cwd-prefix";
|
|
||||||
fileWidgetCommand = "fd --type f --hidden --strip-cwd-prefix";
|
|
||||||
fileWidgetOptions = ["--preview '${previewCmd}'"];
|
|
||||||
|
|
||||||
colors = lib.mkForce {
|
colors = lib.mkForce {
|
||||||
"fg+" = accent;
|
"fg+" = accent;
|
||||||
"bg+" = "-1";
|
"bg+" = "-1";
|
||||||
@@ -25,26 +21,15 @@ in {
|
|||||||
"prompt" = muted;
|
"prompt" = muted;
|
||||||
"pointer" = accent;
|
"pointer" = accent;
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultOptions = [
|
defaultOptions = [
|
||||||
"--height=60%"
|
"--margin=1"
|
||||||
"--layout=reverse"
|
"--layout=reverse"
|
||||||
"--border=none"
|
"--border=none"
|
||||||
|
"--info='hidden'"
|
||||||
|
"--header=''"
|
||||||
"--prompt='/ '"
|
"--prompt='/ '"
|
||||||
"--preview-window=right:65%:wrap:border-left"
|
|
||||||
"-i"
|
"-i"
|
||||||
"--no-bold"
|
"--no-bold"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh.initContent = lib.mkAfter ''
|
|
||||||
_fzf_file_no_hidden() {
|
|
||||||
local cmd result
|
|
||||||
cmd="''${FZF_DEFAULT_COMMAND/--hidden /}"
|
|
||||||
result=$(eval "''${cmd:-find . -type f}" | fzf --preview "${previewCmd}") \
|
|
||||||
&& LBUFFER+="$result"
|
|
||||||
zle reset-prompt
|
|
||||||
}
|
|
||||||
zle -N _fzf_file_no_hidden
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,57 +1,45 @@
|
|||||||
# My shell configuration
|
# My shell configuration
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs-stable,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs-stable; [
|
||||||
bat
|
bat
|
||||||
ripgrep
|
ripgrep
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
|
sessionPath = ["$HOME/go/bin"];
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
COLORTERM = "truecolor";
|
COLORTERM = "truecolor";
|
||||||
MANPAGER = "bat -l man -p";
|
|
||||||
};
|
|
||||||
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
files = [".zsh_history"];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autocd = true;
|
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
syntaxHighlighting.enable = true;
|
syntaxHighlighting = {
|
||||||
|
enable = true;
|
||||||
|
highlighters = [
|
||||||
|
"main"
|
||||||
|
"brackets"
|
||||||
|
"pattern"
|
||||||
|
"regexp"
|
||||||
|
"root"
|
||||||
|
"line"
|
||||||
|
];
|
||||||
|
};
|
||||||
historySubstringSearch.enable = true;
|
historySubstringSearch.enable = true;
|
||||||
|
|
||||||
plugins = [
|
|
||||||
{
|
|
||||||
name = "zsh-vi-mode";
|
|
||||||
src = pkgs.zsh-vi-mode;
|
|
||||||
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
history = {
|
history = {
|
||||||
ignoreDups = true;
|
ignoreDups = true;
|
||||||
findNoDups = true;
|
|
||||||
expireDuplicatesFirst = true;
|
|
||||||
ignoreSpace = true;
|
|
||||||
append = true;
|
|
||||||
save = 10000;
|
save = 10000;
|
||||||
size = 10000;
|
size = 10000;
|
||||||
};
|
};
|
||||||
|
|
||||||
setOptions = [
|
|
||||||
"NOBEEP"
|
|
||||||
"AUTOCD"
|
|
||||||
"NUMERIC_GLOB_SORT"
|
|
||||||
];
|
|
||||||
|
|
||||||
profileExtra = lib.optionalString (config.home.sessionPath != []) ''
|
profileExtra = lib.optionalString (config.home.sessionPath != []) ''
|
||||||
export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}"
|
export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}"
|
||||||
'';
|
'';
|
||||||
@@ -65,21 +53,22 @@
|
|||||||
tree = "eza --icons=always --tree --no-quotes";
|
tree = "eza --icons=always --tree --no-quotes";
|
||||||
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
|
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
|
||||||
mkdir = "mkdir -p";
|
mkdir = "mkdir -p";
|
||||||
nix-shell = "nix-shell --command zsh";
|
|
||||||
grep = "rg --color=auto";
|
|
||||||
diff = "diff --color=auto";
|
|
||||||
df = "df -h";
|
|
||||||
|
|
||||||
# Shortcuts
|
# Shortcuts
|
||||||
spt = "spotatui";
|
spt = "spotatui";
|
||||||
open = "${pkgs.xdg-utils}/bin/xdg-open";
|
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()'";
|
notes = "nvim ~/notes/index.md --cmd 'cd ~/notes' -c ':lua Snacks.picker.smart()'";
|
||||||
|
nix-shell = "nix-shell --command zsh";
|
||||||
|
|
||||||
# git
|
# git
|
||||||
g = "lazygit";
|
g = "lazygit";
|
||||||
ga = "git add";
|
ga = "git add";
|
||||||
gc = "git commit";
|
gc = "git commit";
|
||||||
|
gcu = "git add . && git commit -m 'Update'";
|
||||||
gp = "git push";
|
gp = "git push";
|
||||||
gpl = "git pull";
|
gpl = "git pull";
|
||||||
gs = "git status";
|
gs = "git status";
|
||||||
@@ -92,11 +81,6 @@
|
|||||||
gaa = "git add .";
|
gaa = "git add .";
|
||||||
gcm = "git commit -m";
|
gcm = "git commit -m";
|
||||||
|
|
||||||
# Original binaries
|
|
||||||
ocat = "/run/current-system/sw/bin/cat";
|
|
||||||
ols = "/run/current-system/sw/bin/ls";
|
|
||||||
ocd = "builtin cd";
|
|
||||||
|
|
||||||
# Typo
|
# Typo
|
||||||
clera = "clear";
|
clera = "clear";
|
||||||
celar = "clear";
|
celar = "clear";
|
||||||
@@ -104,28 +88,24 @@
|
|||||||
sl = "ls";
|
sl = "ls";
|
||||||
};
|
};
|
||||||
|
|
||||||
initContent = lib.mkMerge [
|
initContent =
|
||||||
(lib.mkOrder 550 ''
|
|
||||||
function zvm_config() {
|
|
||||||
ZVM_INSERT_MODE_CURSOR=$ZVM_CURSOR_BEAM
|
|
||||||
ZVM_NORMAL_MODE_CURSOR=$ZVM_CURSOR_BLOCK
|
|
||||||
ZVM_VISUAL_MODE_CURSOR=$ZVM_CURSOR_BLOCK
|
|
||||||
|
|
||||||
ZVM_VI_HIGHLIGHT_BACKGROUND=none
|
|
||||||
ZVM_VI_HIGHLIGHT_FOREGROUND=none
|
|
||||||
ZVM_VI_HIGHLIGHT_EXTRASTYLE=none
|
|
||||||
}
|
|
||||||
'')
|
|
||||||
# bash
|
# bash
|
||||||
''
|
''
|
||||||
|
bindkey -e
|
||||||
|
|
||||||
|
# Open command in VIM
|
||||||
|
autoload -Uz edit-command-line
|
||||||
|
zle -N edit-command-line
|
||||||
|
bindkey '^X' edit-command-line
|
||||||
|
|
||||||
# Suffix Aliases
|
# Suffix Aliases
|
||||||
alias -s {nix,md,txt,yml,yaml,go}=nvim
|
alias -s {nix,md,txt,yml,yaml,go}=nvim
|
||||||
alias -s {json,jsonl}=jless
|
alias -s {json,jsonl}=jless
|
||||||
alias -s {csv,tsv,parquet,pqt,arrow,db,sqlite,xls,xlsx,xlsm,xlsb,fwf}=tw
|
alias -s {csv,tsv,parquet,pqt,arrow,db,sqlite,xls,xlsx,xlsm,xlsb,fwf}=tw
|
||||||
alias -s {png,jpg,jpeg,gif,pdf}=xdg-open
|
alias -s {png,jpg,jpeg,gif,pdf}=xdg-open
|
||||||
|
|
||||||
# Global Aliases
|
# 3. Global Aliases (expanded anywhere in the command, not just at the start)
|
||||||
alias -g G="| rg"
|
alias -g G="| grep"
|
||||||
alias -g L="| less"
|
alias -g L="| less"
|
||||||
alias -g V="| nvim"
|
alias -g V="| nvim"
|
||||||
alias -g H="| head"
|
alias -g H="| head"
|
||||||
@@ -136,19 +116,83 @@
|
|||||||
alias -g ND=">/dev/null"
|
alias -g ND=">/dev/null"
|
||||||
alias -g NUL=">/dev/null 2>&1"
|
alias -g NUL=">/dev/null 2>&1"
|
||||||
|
|
||||||
autoload zmv # Mv for multiple files
|
# 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:*' menu select
|
||||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
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]'
|
||||||
|
|
||||||
zvm_after_init() {
|
# Colors
|
||||||
bindkey '^[[1;5C' forward-word
|
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
||||||
bindkey '^[[1;5D' backward-word
|
|
||||||
bindkey '^F' _fzf_file_no_hidden
|
# Case insensitive tab completion
|
||||||
bindkey '^[[A' history-substring-search-up
|
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||||
bindkey '^[[B' history-substring-search-down
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -2,25 +2,9 @@
|
|||||||
# entry (text + images) so it can be recalled later via the `clipboard-menu`
|
# entry (text + images) so it can be recalled later via the `clipboard-menu`
|
||||||
# script (tofi). Uses the home-manager module so the watcher services are
|
# script (tofi). Uses the home-manager module so the watcher services are
|
||||||
# managed the same way as swaync/hypridle.
|
# managed the same way as swaync/hypridle.
|
||||||
{pkgs, ...}: {
|
{...}: {
|
||||||
home.packages = [pkgs.wl-clipboard];
|
|
||||||
|
|
||||||
services.cliphist = {
|
services.cliphist = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowImages = true;
|
allowImages = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services.cliphist-wipe = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Wipe cliphist history on login and logout";
|
|
||||||
After = ["cliphist.service"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStart = "${pkgs.cliphist}/bin/cliphist wipe";
|
|
||||||
ExecStop = "${pkgs.cliphist}/bin/cliphist wipe";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
# hypridle handles idle management: lock the screen, turn the display off, and
|
# hypridle handles idle management: lock the screen, turn the display off, and
|
||||||
# suspend after periods of inactivity. The `caffeine-toggle` script pauses it.
|
# suspend after periods of inactivity. The `caffeine-toggle` script pauses it.
|
||||||
{pkgs, ...}: {
|
{...}: {
|
||||||
services.hypridle = {
|
services.hypridle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
# Avoid starting multiple hyprlock instances.
|
# Avoid starting multiple hyprlock instances.
|
||||||
lock_cmd = "${pkgs.procps}/bin/pidof ${pkgs.hyprlock}/bin/hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
lock_cmd = "pidof hyprlock || hyprlock";
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
after_sleep_cmd = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on";
|
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||||
};
|
};
|
||||||
|
|
||||||
listener = [
|
listener = [
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
timeout = 360; # 6 min → screen off
|
timeout = 360; # 6 min → screen off
|
||||||
on-timeout = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off";
|
on-timeout = "hyprctl dispatch dpms off";
|
||||||
on-resume = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on";
|
on-resume = "hyprctl dispatch dpms on";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
timeout = 1800; # 30 min → suspend
|
timeout = 1800; # 30 min → 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, ${pkgs.ghostty}/bin/ghostty +new-window" # Ghostty (terminal, via daemon D-Bus)
|
||||||
"$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,24 @@ 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
|
||||||
|
swappy
|
||||||
satty
|
satty
|
||||||
imv
|
imv
|
||||||
wf-recorder
|
wf-recorder
|
||||||
|
wlr-randr
|
||||||
brightnessctl
|
brightnessctl
|
||||||
gnome-themes-extra
|
gnome-themes-extra
|
||||||
dconf
|
dconf
|
||||||
@@ -61,7 +59,7 @@ in {
|
|||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
monitor = [
|
monitor = [
|
||||||
",preferred,auto,1" # default
|
",prefered,auto,1" # default
|
||||||
];
|
];
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
@@ -133,9 +131,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 +172,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,65 +1,5 @@
|
|||||||
{
|
{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;
|
||||||
|
|
||||||
@@ -76,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 = "mic-mute";
|
||||||
"update-command" = "${scripts.mic-status}/bin/mic-status";
|
"update-command" = "mic-status";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
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";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Use elio as the file picker for portal dialogs (browser "select file(s)" and
|
# Use yazi as the file picker for portal dialogs (browser "select file(s)" and
|
||||||
# "save download to..."). The backend is xdg-desktop-portal-termfilechooser,
|
# "save download to..."). The backend is xdg-desktop-portal-termfilechooser,
|
||||||
# enabled system-wide in nixos/utils.nix (extraPortals + FileChooser routing).
|
# enabled system-wide in nixos/utils.nix (extraPortals + FileChooser routing).
|
||||||
{
|
{
|
||||||
@@ -6,48 +6,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
wrapper = pkgs.writeShellScript "elio-wrapper" ''
|
wrapper = "${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh";
|
||||||
multiple="$1"
|
|
||||||
directory="$2"
|
|
||||||
save="$3"
|
|
||||||
path="$4"
|
|
||||||
out="$5"
|
|
||||||
debug="$6"
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [[ "$debug" = 1 ]]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
cmd="elio"
|
|
||||||
termcmd="''${TERMCMD:-ghostty --gtk-single-instance=false --title=termfilechooser -e}"
|
|
||||||
|
|
||||||
if [[ "$save" = "1" ]]; then
|
|
||||||
set -- --chooser-file="$out" "$path"
|
|
||||||
elif [[ "$directory" = "1" ]]; then
|
|
||||||
set -- --chooser-file="$out" --cwd-file="$out.1" "$path"
|
|
||||||
else
|
|
||||||
set -- --chooser-file="$out" "$path"
|
|
||||||
fi
|
|
||||||
|
|
||||||
command="$termcmd $cmd"
|
|
||||||
for arg in "$@"; do
|
|
||||||
escaped=$(printf "%s" "$arg" | sed 's/"/\\"/g')
|
|
||||||
command="$command \"$escaped\""
|
|
||||||
done
|
|
||||||
|
|
||||||
sh -c "$command"
|
|
||||||
|
|
||||||
if [[ "$directory" = "1" ]]; then
|
|
||||||
if [[ ! -s "$out" ]] && [[ -s "$out.1" ]]; then
|
|
||||||
cat "$out.1" > "$out"
|
|
||||||
rm "$out.1"
|
|
||||||
else
|
|
||||||
rm "$out.1"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
# ghostty must run in the foreground instead of handing off to the
|
# ghostty must run in the foreground instead of handing off to the
|
||||||
# single-instance daemon, otherwise the wrapper returns before you've picked
|
# single-instance daemon, otherwise the wrapper returns before you've picked
|
||||||
# anything and the portal reads an empty selection.
|
# anything and the portal reads an empty selection.
|
||||||
|
|||||||
@@ -1,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,7 +83,7 @@
|
|||||||
|
|
||||||
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"];
|
||||||
@@ -96,7 +92,7 @@
|
|||||||
|
|
||||||
color-pick = {
|
color-pick = {
|
||||||
name = "Pick Color";
|
name = "Pick Color";
|
||||||
exec = "${scripts.color-pick}/bin/color-pick";
|
exec = "color-pick";
|
||||||
icon = "color-select-symbolic";
|
icon = "color-select-symbolic";
|
||||||
comment = "Pick a screen color to the clipboard";
|
comment = "Pick a screen color to the clipboard";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -106,7 +102,7 @@
|
|||||||
|
|
||||||
screenshot-region = {
|
screenshot-region = {
|
||||||
name = "Screenshot Region";
|
name = "Screenshot Region";
|
||||||
exec = "${pkgs.hyprshot}/bin/hyprshot -m region";
|
exec = "hyprshot -m region";
|
||||||
icon = "screenshot-recorded-symbolic";
|
icon = "screenshot-recorded-symbolic";
|
||||||
comment = "Capture a selected region";
|
comment = "Capture a selected region";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -116,7 +112,7 @@
|
|||||||
|
|
||||||
screenshot-window = {
|
screenshot-window = {
|
||||||
name = "Screenshot Window";
|
name = "Screenshot Window";
|
||||||
exec = "${pkgs.hyprshot}/bin/hyprshot -m window";
|
exec = "hyprshot -m window";
|
||||||
icon = "screenshot-recorded-symbolic";
|
icon = "screenshot-recorded-symbolic";
|
||||||
comment = "Capture the active window";
|
comment = "Capture the active window";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -126,7 +122,7 @@
|
|||||||
|
|
||||||
screenshot-screen = {
|
screenshot-screen = {
|
||||||
name = "Screenshot Screen";
|
name = "Screenshot Screen";
|
||||||
exec = "${pkgs.hyprshot}/bin/hyprshot -m output";
|
exec = "hyprshot -m output";
|
||||||
icon = "screenshot-recorded-symbolic";
|
icon = "screenshot-recorded-symbolic";
|
||||||
comment = "Capture the whole screen";
|
comment = "Capture the whole screen";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -136,7 +132,7 @@
|
|||||||
|
|
||||||
screenshot-edit = {
|
screenshot-edit = {
|
||||||
name = "Screenshot & Annotate";
|
name = "Screenshot & Annotate";
|
||||||
exec = "${scripts.screenshot-edit}/bin/screenshot-edit";
|
exec = "screenshot-edit";
|
||||||
icon = "edit-symbolic";
|
icon = "edit-symbolic";
|
||||||
comment = "Capture a region and open it in Satty";
|
comment = "Capture a region and open it in Satty";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -146,7 +142,7 @@
|
|||||||
|
|
||||||
record-toggle = {
|
record-toggle = {
|
||||||
name = "Screen Recording";
|
name = "Screen Recording";
|
||||||
exec = "${scripts.record-toggle}/bin/record-toggle";
|
exec = "record-toggle";
|
||||||
icon = "media-record-symbolic";
|
icon = "media-record-symbolic";
|
||||||
comment = "Start or stop screen recording";
|
comment = "Start or stop screen recording";
|
||||||
categories = ["Utility" "AudioVideo"];
|
categories = ["Utility" "AudioVideo"];
|
||||||
@@ -156,7 +152,7 @@
|
|||||||
|
|
||||||
power-cycle = {
|
power-cycle = {
|
||||||
name = "Power Profile";
|
name = "Power Profile";
|
||||||
exec = "${scripts.power-cycle}/bin/power-cycle";
|
exec = "power-cycle";
|
||||||
icon = "power-profile-balanced-symbolic";
|
icon = "power-profile-balanced-symbolic";
|
||||||
comment = "Cycle power-saver / balanced / performance";
|
comment = "Cycle power-saver / balanced / performance";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -166,7 +162,7 @@
|
|||||||
|
|
||||||
airplane-toggle = {
|
airplane-toggle = {
|
||||||
name = "Airplane Mode";
|
name = "Airplane Mode";
|
||||||
exec = "${scripts.airplane-toggle}/bin/airplane-toggle";
|
exec = "airplane-toggle";
|
||||||
icon = "airplane-mode-symbolic";
|
icon = "airplane-mode-symbolic";
|
||||||
comment = "Toggle Wi-Fi and Bluetooth together";
|
comment = "Toggle Wi-Fi and Bluetooth together";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -176,7 +172,7 @@
|
|||||||
|
|
||||||
clipboard-menu = {
|
clipboard-menu = {
|
||||||
name = "Clipboard History";
|
name = "Clipboard History";
|
||||||
exec = "${scripts.clipboard-menu}/bin/clipboard-menu";
|
exec = "clipboard-menu";
|
||||||
icon = "edit-paste-symbolic";
|
icon = "edit-paste-symbolic";
|
||||||
comment = "Pick a past clipboard entry";
|
comment = "Pick a past clipboard entry";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -184,19 +180,9 @@
|
|||||||
settings.Keywords = "clipboard;history;paste;cliphist;";
|
settings.Keywords = "clipboard;history;paste;cliphist;";
|
||||||
};
|
};
|
||||||
|
|
||||||
clipboard-wipe = {
|
|
||||||
name = "Clear Clipboard History";
|
|
||||||
exec = "${pkgs.cliphist}/bin/cliphist wipe";
|
|
||||||
icon = "edit-clear-all-symbolic";
|
|
||||||
comment = "Delete all clipboard history entries";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "clipboard;history;clear;wipe;delete;cliphist;";
|
|
||||||
};
|
|
||||||
|
|
||||||
emoji-picker = {
|
emoji-picker = {
|
||||||
name = "Emoji Picker";
|
name = "Emoji Picker";
|
||||||
exec = "${scripts.emoji-picker}/bin/emoji-picker";
|
exec = "emoji-picker";
|
||||||
icon = "face-smile-symbolic";
|
icon = "face-smile-symbolic";
|
||||||
comment = "Pick an emoji and type it";
|
comment = "Pick an emoji and type it";
|
||||||
categories = ["Utility"];
|
categories = ["Utility"];
|
||||||
@@ -204,19 +190,9 @@
|
|||||||
settings.Keywords = "emoji;emoticon;smiley;symbol;";
|
settings.Keywords = "emoji;emoticon;smiley;symbol;";
|
||||||
};
|
};
|
||||||
|
|
||||||
icon-picker = {
|
|
||||||
name = "Icon Picker";
|
|
||||||
exec = "${scripts.icon-picker}/bin/icon-picker";
|
|
||||||
icon = "character-map-symbolic";
|
|
||||||
comment = "Pick a Nerd Font icon and type it";
|
|
||||||
categories = ["Utility"];
|
|
||||||
terminal = false;
|
|
||||||
settings.Keywords = "icon;nerdfont;glyph;symbol;";
|
|
||||||
};
|
|
||||||
|
|
||||||
caffeine-toggle = {
|
caffeine-toggle = {
|
||||||
name = "Keep Awake";
|
name = "Keep Awake";
|
||||||
exec = "${scripts.caffeine-toggle}/bin/caffeine-toggle";
|
exec = "caffeine-toggle";
|
||||||
icon = "my-caffeine-on-symbolic";
|
icon = "my-caffeine-on-symbolic";
|
||||||
comment = "Pause or resume idle locking and suspend";
|
comment = "Pause or resume idle locking and suspend";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -226,7 +202,7 @@
|
|||||||
|
|
||||||
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"];
|
||||||
@@ -235,7 +211,7 @@
|
|||||||
|
|
||||||
dnd-toggle = {
|
dnd-toggle = {
|
||||||
name = "Do Not Disturb";
|
name = "Do Not Disturb";
|
||||||
exec = "${scripts.dnd-toggle}/bin/dnd-toggle";
|
exec = "dnd-toggle";
|
||||||
icon = "notifications-disabled-symbolic";
|
icon = "notifications-disabled-symbolic";
|
||||||
comment = "Toggle Do Not Disturb";
|
comment = "Toggle Do Not Disturb";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -245,7 +221,7 @@
|
|||||||
|
|
||||||
vol-mute = {
|
vol-mute = {
|
||||||
name = "Mute Volume";
|
name = "Mute Volume";
|
||||||
exec = "${scripts.vol-mute}/bin/vol-mute";
|
exec = "vol-mute";
|
||||||
icon = "audio-volume-muted-symbolic";
|
icon = "audio-volume-muted-symbolic";
|
||||||
comment = "Toggle output mute";
|
comment = "Toggle output mute";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -254,7 +230,7 @@
|
|||||||
|
|
||||||
vol-up = {
|
vol-up = {
|
||||||
name = "Volume Up";
|
name = "Volume Up";
|
||||||
exec = "${scripts.vol-up}/bin/vol-up";
|
exec = "vol-up";
|
||||||
icon = "audio-volume-high-symbolic";
|
icon = "audio-volume-high-symbolic";
|
||||||
comment = "Raise the volume by 5%";
|
comment = "Raise the volume by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -263,7 +239,7 @@
|
|||||||
|
|
||||||
vol-down = {
|
vol-down = {
|
||||||
name = "Volume Down";
|
name = "Volume Down";
|
||||||
exec = "${scripts.vol-down}/bin/vol-down";
|
exec = "vol-down";
|
||||||
icon = "audio-volume-low-symbolic";
|
icon = "audio-volume-low-symbolic";
|
||||||
comment = "Lower the volume by 5%";
|
comment = "Lower the volume by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -272,7 +248,7 @@
|
|||||||
|
|
||||||
bright-up = {
|
bright-up = {
|
||||||
name = "Brightness Up";
|
name = "Brightness Up";
|
||||||
exec = "${scripts.bright-up}/bin/bright-up";
|
exec = "bright-up";
|
||||||
icon = "display-brightness-high-symbolic";
|
icon = "display-brightness-high-symbolic";
|
||||||
comment = "Raise the brightness by 5%";
|
comment = "Raise the brightness by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -281,7 +257,7 @@
|
|||||||
|
|
||||||
bright-down = {
|
bright-down = {
|
||||||
name = "Brightness Down";
|
name = "Brightness Down";
|
||||||
exec = "${scripts.bright-down}/bin/bright-down";
|
exec = "bright-down";
|
||||||
icon = "display-brightness-low-symbolic";
|
icon = "display-brightness-low-symbolic";
|
||||||
comment = "Lower the brightness by 5%";
|
comment = "Lower the brightness by 5%";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -290,7 +266,7 @@
|
|||||||
|
|
||||||
output-cycle = {
|
output-cycle = {
|
||||||
name = "Cycle Audio Output";
|
name = "Cycle Audio Output";
|
||||||
exec = "${scripts.output-cycle}/bin/output-cycle";
|
exec = "output-cycle";
|
||||||
icon = "audio-speakers-symbolic";
|
icon = "audio-speakers-symbolic";
|
||||||
comment = "Switch to the next audio output";
|
comment = "Switch to the next audio output";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -300,7 +276,7 @@
|
|||||||
|
|
||||||
input-cycle = {
|
input-cycle = {
|
||||||
name = "Cycle Audio Input";
|
name = "Cycle Audio Input";
|
||||||
exec = "${scripts.input-cycle}/bin/input-cycle";
|
exec = "input-cycle";
|
||||||
icon = "audio-input-microphone-symbolic";
|
icon = "audio-input-microphone-symbolic";
|
||||||
comment = "Switch to the next audio input";
|
comment = "Switch to the next audio input";
|
||||||
categories = ["System"];
|
categories = ["System"];
|
||||||
@@ -310,22 +286,12 @@
|
|||||||
|
|
||||||
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 dnd-toggle output-cycle input-cycle color-pick screenshot-edit record-toggle power-cycle airplane-toggle clipboard-menu emoji-picker caffeine-toggle mic-status]);
|
||||||
|
|
||||||
# Poll battery level every 30s; battery-monitor no-ops when no battery exists.
|
|
||||||
systemd.user.services.battery-monitor = {
|
|
||||||
Unit.Description = "Low-battery OSD and critical notification monitor";
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = "${scripts.battery-monitor}/bin/battery-monitor";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.timers.battery-monitor = {
|
|
||||||
Unit.Description = "Poll battery level for low-battery alerts";
|
|
||||||
Timer = {
|
|
||||||
OnBootSec = "1min";
|
|
||||||
OnUnitActiveSec = "30s";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["timers.target"];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Prevent blueman-applet from auto-starting via XDG autostart (we use custom/bluetooth module instead)
|
|
||||||
xdg.configFile."autostart/blueman.desktop".text = ''
|
|
||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
'';
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
"waybar"
|
"waybar"
|
||||||
|
|||||||
@@ -1,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 = ''
|
||||||
@@ -75,25 +45,11 @@
|
|||||||
# tofi in vertical dmenu mode: the global config is a 36px-tall horizontal
|
# tofi in vertical dmenu mode: the global config is a 36px-tall horizontal
|
||||||
# launcher, unusable for a list, so override the geometry here.
|
# launcher, unusable for a list, so override the geometry here.
|
||||||
tofiMenu = "${pkgs.tofi}/bin/tofi --horizontal false --anchor center --width 700 --height 500 --margin-top 0 --margin-left 0 --margin-right 0 --num-results 10";
|
tofiMenu = "${pkgs.tofi}/bin/tofi --horizontal false --anchor center --width 700 --height 500 --margin-top 0 --margin-left 0 --margin-right 0 --num-results 10";
|
||||||
|
|
||||||
# Name -> glyph table maintained by the nerd-fonts project itself, pinned to
|
|
||||||
# the same release as the nerd-fonts packages in nixos/fonts.nix.
|
|
||||||
nerdFontGlyphnames = pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/v3.4.0/glyphnames.json";
|
|
||||||
sha256 = "sha256-4tENI/W/8L1vBnbpsB2XifzcZW3ntJiilVwncW6kQ5w=";
|
|
||||||
};
|
|
||||||
nerdFontIconList = pkgs.runCommand "nerd-font-icons.txt" {nativeBuildInputs = [pkgs.jq];} ''
|
|
||||||
jq -r 'to_entries[] | select(.key != "METADATA") | "\(.value.char) \(.key)"' \
|
|
||||||
${nerdFontGlyphnames} > "$out"
|
|
||||||
'';
|
|
||||||
osdPath = "$XDG_RUNTIME_DIR/waybar-osd";
|
|
||||||
in {
|
in {
|
||||||
inherit waybar-osd waybar-osd-status battery-monitor osdPath;
|
|
||||||
|
|
||||||
bluetoothScript = pkgs.writeShellScript "waybar-bluetooth" ''
|
bluetoothScript = pkgs.writeShellScript "waybar-bluetooth" ''
|
||||||
jq=${pkgs.jq}/bin/jq
|
jq=${pkgs.jq}/bin/jq
|
||||||
nl=$'\n'
|
nl=$'\n'
|
||||||
# bluetoothctl hangs without a controller by default → always bounded by timeout.
|
# bluetoothctl bloque sans contrôleur par défaut → toujours borné par timeout.
|
||||||
bt() { timeout 3 ${pkgs.bluez}/bin/bluetoothctl "$@" 2>/dev/null; }
|
bt() { timeout 3 ${pkgs.bluez}/bin/bluetoothctl "$@" 2>/dev/null; }
|
||||||
|
|
||||||
powered=$(bt show | awk '/Powered:/ { print $2; exit }')
|
powered=$(bt show | awk '/Powered:/ { print $2; exit }')
|
||||||
@@ -172,6 +128,7 @@ in {
|
|||||||
add_tip " VPN · $vpn"
|
add_tip " VPN · $vpn"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ── Rien ────────────────────────────────────────────────────
|
||||||
if [ -z "$text" ]; then
|
if [ -z "$text" ]; then
|
||||||
text=""
|
text=""
|
||||||
tip="Disconnected"
|
tip="Disconnected"
|
||||||
@@ -235,19 +192,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 +218,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,23 +229,23 @@ 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
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@@ -374,7 +331,7 @@ in {
|
|||||||
|
|
||||||
record-toggle = pkgs.writeShellScriptBin "record-toggle" ''
|
record-toggle = pkgs.writeShellScriptBin "record-toggle" ''
|
||||||
if pgrep -x wf-recorder >/dev/null; then
|
if pgrep -x wf-recorder >/dev/null; then
|
||||||
# -INT lets wf-recorder finalize the file cleanly.
|
# -INT laisse wf-recorder finaliser le fichier proprement.
|
||||||
pkill -INT -x wf-recorder
|
pkill -INT -x wf-recorder
|
||||||
OSD_TEXT=" Recording saved"
|
OSD_TEXT=" Recording saved"
|
||||||
else
|
else
|
||||||
@@ -419,10 +376,8 @@ in {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
clipboard-menu = pkgs.writeShellScriptBin "clipboard-menu" ''
|
clipboard-menu = pkgs.writeShellScriptBin "clipboard-menu" ''
|
||||||
list=$(${pkgs.cliphist}/bin/cliphist list)
|
${pkgs.cliphist}/bin/cliphist list \
|
||||||
selected=$(printf '%s\n' "$list" | cut -f2- | ${tofiMenu} --prompt-text "Clipboard: ")
|
| ${tofiMenu} --prompt-text "Clipboard: " \
|
||||||
[ -n "$selected" ] && printf '%s\n' "$list" \
|
|
||||||
| awk -F'\t' -v s="$selected" '$2 == s {print; exit}' \
|
|
||||||
| ${pkgs.cliphist}/bin/cliphist decode \
|
| ${pkgs.cliphist}/bin/cliphist decode \
|
||||||
| ${pkgs.wl-clipboard}/bin/wl-copy
|
| ${pkgs.wl-clipboard}/bin/wl-copy
|
||||||
'';
|
'';
|
||||||
@@ -430,18 +385,10 @@ in {
|
|||||||
emoji-picker = pkgs.writeShellScriptBin "emoji-picker" ''
|
emoji-picker = pkgs.writeShellScriptBin "emoji-picker" ''
|
||||||
export PATH="${pkgs.wtype}/bin:${pkgs.wl-clipboard}/bin:$PATH"
|
export PATH="${pkgs.wtype}/bin:${pkgs.wl-clipboard}/bin:$PATH"
|
||||||
export BEMOJI_PICKER_CMD="${tofiMenu} --prompt-text 'emoji: '"
|
export BEMOJI_PICKER_CMD="${tofiMenu} --prompt-text 'emoji: '"
|
||||||
# -t types the emoji (wtype), -c also copies it.
|
# -t tape l'emoji (wtype), -c le copie aussi.
|
||||||
exec ${pkgs.bemoji}/bin/bemoji -t -c
|
exec ${pkgs.bemoji}/bin/bemoji -t -c
|
||||||
'';
|
'';
|
||||||
|
|
||||||
icon-picker = pkgs.writeShellScriptBin "icon-picker" ''
|
|
||||||
selected=$(${tofiMenu} --font "${config.stylix.fonts.monospace.name}" --prompt-text 'icon: ' < ${nerdFontIconList})
|
|
||||||
[ -z "$selected" ] || icon=$(printf '%s\n' "$selected" | awk '{print $1}')
|
|
||||||
[ -n "''${icon:-}" ] || exit 0
|
|
||||||
${pkgs.wtype}/bin/wtype "$icon"
|
|
||||||
printf '%s' "$icon" | ${pkgs.wl-clipboard}/bin/wl-copy
|
|
||||||
'';
|
|
||||||
|
|
||||||
caffeine-toggle = pkgs.writeShellScriptBin "caffeine-toggle" ''
|
caffeine-toggle = pkgs.writeShellScriptBin "caffeine-toggle" ''
|
||||||
# Pause hypridle (stay awake) or resume it.
|
# Pause hypridle (stay awake) or resume it.
|
||||||
if systemctl --user is-active --quiet hypridle; then
|
if systemctl --user is-active --quiet hypridle; then
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
osdPath,
|
|
||||||
networkScript,
|
networkScript,
|
||||||
bluetoothScript,
|
bluetoothScript,
|
||||||
caffeineToggleScript,
|
|
||||||
osdStatusScript,
|
|
||||||
nightshiftToggleScript,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
gaps-out = config.theme.gaps-out;
|
gaps-out = config.theme.gaps-out;
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
|
hasBattery = config.var.hasBattery or false;
|
||||||
in {
|
in {
|
||||||
programs.waybar.settings = [
|
programs.waybar.settings = [
|
||||||
{
|
{
|
||||||
@@ -18,7 +16,9 @@ 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"]
|
||||||
|
++ lib.optional hasBattery "battery";
|
||||||
|
|
||||||
# ── Modules ─────────────────────────────────────────────────────────
|
# ── Modules ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -27,68 +27,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 = "${pkgs.bluez}/bin/bluetoothctl list 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 +83,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 +110,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 +135,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,27 +45,19 @@ 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};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#tray.empty {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#clock {
|
#clock {
|
||||||
font-size: ${font-size-clock};
|
font-size: ${font-size-clock};
|
||||||
}
|
}
|
||||||
@@ -126,11 +118,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,28 +9,50 @@
|
|||||||
../../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
|
||||||
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
||||||
|
|
||||||
# CHANGEME: You should probably remove those things:
|
../../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 13fd:5900 serial "50026B76861EE752 " name "External" hash "l/QvVV5hzZj1z6OUwB/kWl+WnH/7awrdMBoiNVx660M=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" with-interface { 08:06:50 08:06:62 } with-connect-type "unknown"
|
||||||
|
allow id 1532:02a1 name "Razer Ornata V3"
|
||||||
|
allow id 03f0:066b name "HP USB-C Dock G5"
|
||||||
|
'';
|
||||||
|
|
||||||
|
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;
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
pkgs-unstable,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
@@ -10,17 +9,13 @@ nixpkgs.lib.nixosSystem {
|
|||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
];
|
];
|
||||||
_module.args = {inherit inputs pkgs-unstable;};
|
_module.args = {inherit inputs;};
|
||||||
}
|
}
|
||||||
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
|
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.stylix.nixosModules.stylix
|
inputs.stylix.nixosModules.stylix
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.nix-index-database.nixosModules.default
|
inputs.nix-index-database.nixosModules.default
|
||||||
inputs.helium-browser.nixosModules.default
|
inputs.helium-browser.nixosModules.default
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
./disko.nix
|
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# Hardware detection - filesystems are managed by disko.nix
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
@@ -9,13 +11,42 @@
|
|||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usb_storage" "usbhid" "uas" "sd_mod"];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"uas"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = ["kvm-amd"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/6320d3c6-0231-45ec-817a-c6f0e39aab73";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/5251-9B85";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"fmask=0077"
|
||||||
|
"dmask=0077"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp7s0f4u1u4.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
@@ -9,7 +8,9 @@
|
|||||||
|
|
||||||
## GUI
|
## GUI
|
||||||
../../home/programs/gui/proton
|
../../home/programs/gui/proton
|
||||||
|
../../home/programs/gui/proton/auto-start-vpn.nix
|
||||||
../../home/programs/gui/helium
|
../../home/programs/gui/helium
|
||||||
|
../../home/programs/gui/thunar
|
||||||
../../home/programs/gui/pkgs.nix
|
../../home/programs/gui/pkgs.nix
|
||||||
|
|
||||||
## TUI
|
## TUI
|
||||||
@@ -23,8 +24,7 @@
|
|||||||
../../home/programs/tui/nixy
|
../../home/programs/tui/nixy
|
||||||
../../home/programs/tui/nix-utils
|
../../home/programs/tui/nix-utils
|
||||||
../../home/programs/tui/spotatui
|
../../home/programs/tui/spotatui
|
||||||
../../home/programs/tui/elio
|
../../home/programs/tui/yazi
|
||||||
../../home/programs/tui/wikiman
|
|
||||||
../../home/programs/tui/pkgs.nix
|
../../home/programs/tui/pkgs.nix
|
||||||
|
|
||||||
## GROUPS
|
## GROUPS
|
||||||
@@ -38,37 +38,20 @@
|
|||||||
../../home/system/swaync
|
../../home/system/swaync
|
||||||
../../home/system/tofi
|
../../home/system/tofi
|
||||||
../../home/system/mime
|
../../home/system/mime
|
||||||
../../home/system/udiskie
|
|
||||||
../../home/system/termfilechooser
|
../../home/system/termfilechooser
|
||||||
|
../../home/system/udiskie
|
||||||
../../home/system/clipboard
|
../../home/system/clipboard
|
||||||
../../home/system/hypridle
|
../../home/system/hypridle
|
||||||
|
|
||||||
./variables.nix # Mostly user-specific configuration
|
./variables.nix # Mostly user-specific configuration
|
||||||
|
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
inherit (config.var) username;
|
inherit (config.var) username;
|
||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
|
file.".face" = {
|
||||||
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
source = ./profile_picture.png;
|
||||||
directories = [
|
|
||||||
".config/nixos" # this repo itself (nixy manages it here)
|
|
||||||
".local/share"
|
|
||||||
".local/state"
|
|
||||||
".cache"
|
|
||||||
".steam"
|
|
||||||
"Notes"
|
|
||||||
"Projects"
|
|
||||||
"Documents"
|
|
||||||
"Downloads"
|
|
||||||
"Pictures"
|
|
||||||
"Videos"
|
|
||||||
];
|
|
||||||
|
|
||||||
files = [
|
|
||||||
".ssh/known_hosts"
|
|
||||||
".config/sops/age/keys.txt"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
# Impermanence: declares what should survive a wipe of "/".
|
|
||||||
{
|
|
||||||
environment.persistence."/persist" = {
|
|
||||||
hideMounts = true;
|
|
||||||
|
|
||||||
directories = [
|
|
||||||
"/etc/NetworkManager/system-connections" # Wifi connections, VPN
|
|
||||||
"/var/lib/bluetooth" # Bluetooth connections
|
|
||||||
"/var/lib/nixos" # keeps uid/gid stable across boots
|
|
||||||
"/var/lib/systemd/coredump"
|
|
||||||
"/var/lib/upower" # battery calibration state
|
|
||||||
"/var/lib/systemd/backlight" # remembers screen brightness
|
|
||||||
"/var/lib/systemd/timers" # last-run timestamps (e.g. nix gc weekly)
|
|
||||||
"/var/log"
|
|
||||||
"/var/cache/tuigreet"
|
|
||||||
"/var/db/sudo/lectured" # remembers that the sudo lecture was already shown
|
|
||||||
];
|
|
||||||
|
|
||||||
files = [
|
|
||||||
"/etc/machine-id"
|
|
||||||
"/etc/ssh/ssh_host_ed25519_key"
|
|
||||||
"/etc/ssh/ssh_host_ed25519_key.pub"
|
|
||||||
"/etc/ssh/ssh_host_rsa_key"
|
|
||||||
"/etc/ssh/ssh_host_rsa_key.pub"
|
|
||||||
"/var/lib/systemd/random-seed" # avoid a weak entropy pool on first boot
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
After Width: | Height: | Size: 12 KiB |
@@ -1,52 +1,63 @@
|
|||||||
# Those are my secrets, encrypted with sops
|
# Those are my secrets, encrypted with sops
|
||||||
# You shouldn't import this file, unless you edit it
|
# You shouldn't import this file, unless you edit it
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
username = config.var.username;
|
home = config.home.homeDirectory;
|
||||||
home = "/home/${username}";
|
|
||||||
in {
|
in {
|
||||||
|
imports = [inputs.sops-nix.homeManagerModules.sops];
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
||||||
defaultSopsFile = ./secrets.yaml;
|
defaultSopsFile = ./secrets.yaml;
|
||||||
secrets = {
|
secrets = {
|
||||||
ssh-config = {
|
ssh-config = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/config";
|
path = "${home}/.ssh/config";
|
||||||
};
|
};
|
||||||
ssh-github-key = {
|
github-key = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/github";
|
path = "${home}/.ssh/github";
|
||||||
};
|
};
|
||||||
anotherhadi-pgp-key = {
|
jack-key = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/anotherhadi-priv.asc";
|
|
||||||
};
|
|
||||||
ssh-jack-key = {
|
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/jack";
|
path = "${home}/.ssh/jack";
|
||||||
};
|
};
|
||||||
signing-key = {
|
signing-key = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/key";
|
path = "${home}/.ssh/key";
|
||||||
};
|
};
|
||||||
signing-pub-key = {
|
signing-pub-key = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/key.pub";
|
path = "${home}/.ssh/key.pub";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
home.file.".config/nixos/.sops.yaml".text = ''
|
||||||
|
keys:
|
||||||
|
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
||||||
|
- &work age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: hosts/laptop/secrets/secrets.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *primary
|
||||||
|
- path_regex: hosts/server/secrets/secrets.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *primary
|
||||||
|
- path_regex: hosts/work/secrets/secrets.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *work
|
||||||
|
'';
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
sops
|
sops
|
||||||
age
|
age
|
||||||
];
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
|
"systemctl --user start sops-nix"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
# USBGuard:
|
|
||||||
# The following line allow all USB devices until a proper policy is configured.
|
|
||||||
# Run `sudo usbguard generate-policy` with your devices plugged in,
|
|
||||||
# then set rules = "<output>" and switch implicitPolicyTarget to "block".
|
|
||||||
# services.usbguard.implicitPolicyTarget = lib.mkForce "allow";
|
|
||||||
{
|
|
||||||
services.usbguard = {
|
|
||||||
enable = true;
|
|
||||||
implicitPolicyTarget = "block";
|
|
||||||
IPCAllowedUsers = [
|
|
||||||
"root"
|
|
||||||
];
|
|
||||||
rules = ''
|
|
||||||
allow id 1d6b:0002 serial "0000:05:00.3" name "xHCI Host Controller" hash "4a4NgfdUaJO43rkCzmWRSeHHR/uUh5+SNsXnhosm9qs=" parent-hash "ldMchY4Tt4GPUYo30eNGvai+Fs/EdnVY3vMyxJUq4Nk=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:05:00.3" name "xHCI Host Controller" hash "d+DNGWARDtv9nEK2ZvnNOCtFernuMu5/e/oZ7kCppqQ=" parent-hash "ldMchY4Tt4GPUYo30eNGvai+Fs/EdnVY3vMyxJUq4Nk=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0002 serial "0000:05:00.4" name "xHCI Host Controller" hash "icotY3rI59mWiKsGxc59BGZZeBjfbuH0b4NUByj3cbQ=" parent-hash "tHvBfznK5rpQn+oa0PEEjHa29EAEvGyCcZixsfwA6W0=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:05:00.4" name "xHCI Host Controller" hash "UbEoCZW8HT2ldc3qDeiK+IiQlGeaBC7F63681OwmKhI=" parent-hash "tHvBfznK5rpQn+oa0PEEjHa29EAEvGyCcZixsfwA6W0=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0002 serial "0000:07:00.3" name "xHCI Host Controller" hash "pz29Oo0RhQ+5+7LgOZR4v3OlcsVv3m9kCgGsGUnoUjI=" parent-hash "DRyV2/31MYHdzkIEfbPQeb/1w4/PjOW6GqWrXkftf2I=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:07:00.3" name "xHCI Host Controller" hash "O6iOpcl9StImWT62SrbeXacqbG6N/mTIipTRc0ipCGM=" parent-hash "DRyV2/31MYHdzkIEfbPQeb/1w4/PjOW6GqWrXkftf2I=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0002 serial "0000:07:00.4" name "xHCI Host Controller" hash "Hp8B0Enf+ACRT2tyy0EqXj7eNsFDAnTRZadzuh/Iqd4=" parent-hash "l2vhvC+VGVKlkBUUK/usFu8jHJ/5bWOnJG6WzRexpt4=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 1d6b:0003 serial "0000:07:00.4" name "xHCI Host Controller" hash "rJ3LKdvkCK3SUrCU3lV8qVbmPjA+r9Fe5106x2HlgK4=" parent-hash "l2vhvC+VGVKlkBUUK/usFu8jHJ/5bWOnJG6WzRexpt4=" with-interface 09:00:00 with-connect-type ""
|
|
||||||
allow id 0bda:c85c serial "00e04c000001" name "Bluetooth Radio" hash "Q/wlToV8WQgEYHBW/UIhnSwCCusCGqAR2D5gspSCImQ=" parent-hash "4a4NgfdUaJO43rkCzmWRSeHHR/uUh5+SNsXnhosm9qs=" with-interface { e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 e0:01:01 } with-connect-type "hardwired"
|
|
||||||
allow id 30c9:009f serial "01.00.00" name "HP True Vision FHD Camera" hash "eYW5fqReJd29tfHXkEktKC63dGfDpmlRMo5uMGUWwME=" parent-hash "icotY3rI59mWiKsGxc59BGZZeBjfbuH0b4NUByj3cbQ=" with-interface { 0e:01:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 0e:02:01 fe:01:01 } with-connect-type "hardwired"
|
|
||||||
allow id 03f0:036b serial "" name "HP USB-C Dock G5" hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" parent-hash "Hp8B0Enf+ACRT2tyy0EqXj7eNsFDAnTRZadzuh/Iqd4=" via-port "7-1" with-interface { 09:00:01 09:00:02 } with-connect-type "hotplug"
|
|
||||||
allow id 03f0:066b serial "" name "HP USB-C Dock G5" hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" parent-hash "rJ3LKdvkCK3SUrCU3lV8qVbmPjA+r9Fe5106x2HlgK4=" via-port "8-1" with-interface 09:00:00 with-connect-type "hotplug"
|
|
||||||
allow id 03f0:056b serial "201604140001" name "USB Audio" hash "OxQ8HQenW3/4HSGEBOSYFS15rXDTOaNDnjMbICweHgw=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" with-interface { 01:01:00 01:02:00 01:02:00 01:02:00 01:02:00 03:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 03f0:086b serial "" name "USB2734" hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" via-port "7-1.3" with-interface { 09:00:01 09:00:02 } with-connect-type "unknown"
|
|
||||||
allow id 03f0:046b serial "11AD1D0A89EA2D08310E0B00" name "HP USB-C Dock G5" hash "DEGeuj1u4lwqrzp0UksFX7mSEY9JnGLxg7yxGbglAKE=" parent-hash "iPFGrgGz0sWgKQjWD/F8eNOhkeR728dTG8JJtkUSvuM=" with-interface { 11:00:00 ff:03:00 03:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 03f0:076b serial "" name "USB5734" hash "BshoqybYo0IKgoDORYPRtbhhlmQrYAxPQb2EAm1JsWA=" parent-hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" via-port "8-1.3" with-interface 09:00:00 with-connect-type "unknown"
|
|
||||||
allow id 0bda:8153 serial "000001000000" name "USB 10/100/1000 LAN" hash "utEnXKJ57kRUbPcGUaNWhEyoOEbLOYAFxvlsyC0PZkk=" parent-hash "JHDjLFApQNqijjmuKdJSWH5+1oLL7S6LQ9QHTAk5fTk=" with-interface { ff:ff:00 02:06:00 0a:00:00 0a:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 046d:0ab7 serial "2046BAB04T68" name "Blue Microphones" hash "cC6AQ2e1Q/BeFeostpbf1mH2WpoUmt6bhau4NlA3niU=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" with-interface { 01:01:00 01:02:00 01:02:00 01:02:00 01:02:00 01:02:00 01:02:00 03:00:00 } with-connect-type "unknown"
|
|
||||||
allow id 13fd:5900 serial "50026B76861EE752 " name "External" hash "l/QvVV5hzZj1z6OUwB/kWl+WnH/7awrdMBoiNVx660M=" parent-hash "MSXcPAlZqkpTyZQylOhSIB8eMfST2AzVHV9EbrBGTWc=" with-interface { 08:06:50 08:06:62 } with-connect-type "unknown"
|
|
||||||
allow id 1532:02a1 name "Razer Ornata V3"
|
|
||||||
allow id 03f0:066b name "HP USB-C Dock G5"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -26,7 +26,8 @@
|
|||||||
|
|
||||||
autoUpgrade = false;
|
autoUpgrade = false;
|
||||||
autoGarbageCollector = true;
|
autoGarbageCollector = true;
|
||||||
impermanenceEnabled = true;
|
|
||||||
|
hasBattery = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# DON'T TOUCH THIS
|
# DON'T TOUCH THIS
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
vpnConnection = "wg-vpn";
|
|
||||||
|
|
||||||
toggleVpn = pkgs.writeShellScript "toggle-wg-vpn" ''
|
|
||||||
set -euo pipefail
|
|
||||||
nmcli="${pkgs.networkmanager}/bin/nmcli"
|
|
||||||
|
|
||||||
if "$nmcli" -t -f NAME connection show --active | grep -qx "${vpnConnection}"; then
|
|
||||||
"$nmcli" connection down "${vpnConnection}"
|
|
||||||
OSD_TEXT=" VPN Off"
|
|
||||||
else
|
|
||||||
"$nmcli" connection up "${vpnConnection}"
|
|
||||||
OSD_TEXT=" VPN On"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s' "$OSD_TEXT" > /tmp/waybar-osd
|
|
||||||
${pkgs.procps}/bin/pkill -f -RTMIN+8 '^waybar$' 2>/dev/null || true
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
environment.systemPackages = [
|
|
||||||
(pkgs.makeDesktopItem {
|
|
||||||
name = "toggle-wg-vpn";
|
|
||||||
desktopName = "Toggle VPN";
|
|
||||||
comment = "Turn the WireGuard VPN connection on or off";
|
|
||||||
icon = "network-vpn-symbolic";
|
|
||||||
exec = "${toggleVpn}";
|
|
||||||
terminal = false;
|
|
||||||
categories = ["Network"];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
sops = {
|
|
||||||
secrets.wireguard-private-key = {};
|
|
||||||
templates."wg-vpn.nmconnection" = {
|
|
||||||
path = "/etc/NetworkManager/system-connections/wg-vpn.nmconnection";
|
|
||||||
mode = "0600";
|
|
||||||
owner = "root";
|
|
||||||
group = "root";
|
|
||||||
content = ''
|
|
||||||
[connection]
|
|
||||||
id=wg-vpn
|
|
||||||
type=wireguard
|
|
||||||
interface-name=wg-vpn
|
|
||||||
autoconnect=true
|
|
||||||
autoconnect-priority=0
|
|
||||||
|
|
||||||
[wireguard]
|
|
||||||
private-key=${config.sops.placeholder.wireguard-private-key}
|
|
||||||
|
|
||||||
[wireguard-peer.36G8+pInNcPK9F1TpHglWs9Pk5uJOY9o8SCNrCBgvHE=]
|
|
||||||
endpoint=89.222.96.158:51820
|
|
||||||
allowed-ips=0.0.0.0/0;::/0;
|
|
||||||
persistent-keepalive=25
|
|
||||||
|
|
||||||
[ipv4]
|
|
||||||
method=manual
|
|
||||||
address1=10.2.0.2/32
|
|
||||||
dns=10.2.0.1;
|
|
||||||
|
|
||||||
[ipv6]
|
|
||||||
method=manual
|
|
||||||
address1=2a07:b944::2:2/128
|
|
||||||
dns=2a07:b944::2:1;
|
|
||||||
addr-gen-mode=default
|
|
||||||
ip6-privacy=0
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -16,13 +16,17 @@
|
|||||||
../../server-modules/adguardhome.nix
|
../../server-modules/adguardhome.nix
|
||||||
../../server-modules/arr.nix
|
../../server-modules/arr.nix
|
||||||
../../server-modules/blog.nix
|
../../server-modules/blog.nix
|
||||||
../../server-modules/bentopdf.nix
|
../../server-modules/awesome-wallpapers.nix
|
||||||
|
../../server-modules/iknowyou.nix
|
||||||
|
../../server-modules/stirling-pdf.nix
|
||||||
../../server-modules/cyberchef.nix
|
../../server-modules/cyberchef.nix
|
||||||
../../server-modules/mazanoke.nix
|
../../server-modules/mazanoke.nix
|
||||||
../../server-modules/kernel-hardening.nix
|
../../server-modules/kernel-hardening.nix
|
||||||
../../server-modules/fail2ban.nix
|
../../server-modules/fail2ban.nix
|
||||||
../../server-modules/default-creds.nix
|
../../server-modules/default-creds.nix
|
||||||
|
../../server-modules/umami.nix
|
||||||
../../server-modules/gitea.nix
|
../../server-modules/gitea.nix
|
||||||
|
../../server-modules/mealie.nix
|
||||||
|
|
||||||
# You should let those lines as is
|
# You should let those lines as is
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
@@ -34,5 +38,5 @@
|
|||||||
home-manager.users."${config.var.username}" = import ./home.nix;
|
home-manager.users."${config.var.username}" = import ./home.nix;
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
system.stateVersion = "26.05";
|
system.stateVersion = "24.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,17 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
pkgs-unstable,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{_module.args = {inherit inputs;};}
|
||||||
nixpkgs.overlays = [
|
|
||||||
inputs.nur.overlays.default
|
|
||||||
];
|
|
||||||
_module.args = {inherit inputs pkgs-unstable;};
|
|
||||||
}
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.stylix.nixosModules.stylix
|
inputs.stylix.nixosModules.stylix
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.nixarr.nixosModules.default
|
inputs.nixarr.nixosModules.default
|
||||||
inputs.nix-index-database.nixosModules.default
|
inputs.nix-index-database.nixosModules.default
|
||||||
inputs.default-creds.nixosModules.default
|
inputs.default-creds.nixosModules.default
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
|||||||
@@ -4,23 +4,19 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
## TUI
|
|
||||||
inputs.nvf-config.homeManagerModules.default
|
|
||||||
../../home/programs/tui/ilovetui
|
|
||||||
../../home/programs/tui/shell
|
|
||||||
../../home/programs/tui/git
|
|
||||||
../../home/programs/tui/git/lazygit.nix
|
|
||||||
../../home/programs/tui/git/signing.nix # CHANGEME: Change the key or remove this file
|
|
||||||
../../home/programs/tui/nixy
|
|
||||||
../../home/programs/tui/nix-utils
|
|
||||||
../../home/programs/tui/elio
|
|
||||||
../../home/programs/tui/wikiman
|
|
||||||
../../home/programs/tui/pkgs.nix
|
|
||||||
|
|
||||||
../../home/programs/group/dev.nix
|
|
||||||
|
|
||||||
# Mostly user-specific configuration
|
# Mostly user-specific configuration
|
||||||
./variables.nix
|
./variables.nix
|
||||||
|
|
||||||
|
# Programs
|
||||||
|
inputs.nvf-config.homeManagerModules.default
|
||||||
|
../../home/programs/shell
|
||||||
|
../../home/programs/git
|
||||||
|
../../home/programs/git/lazygit.nix
|
||||||
|
../../home/programs/nixy
|
||||||
|
../../home/programs/nix-utils
|
||||||
|
../../home/programs/yazi
|
||||||
|
|
||||||
|
../../home/programs/group/dev.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
@@ -28,7 +24,7 @@
|
|||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
stateVersion = "26.05";
|
stateVersion = "24.05";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
path = "/home/hadi/.ssh/config";
|
path = "/home/hadi/.ssh/config";
|
||||||
mode = "0600";
|
mode = "0600";
|
||||||
};
|
};
|
||||||
ssh-github-key = {
|
github-key = {
|
||||||
owner = "hadi";
|
owner = "hadi";
|
||||||
path = "/home/hadi/.ssh/github";
|
path = "/home/hadi/.ssh/github";
|
||||||
mode = "0600";
|
mode = "0600";
|
||||||
|
|||||||
@@ -7,18 +7,13 @@
|
|||||||
../../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/usbguard.nix
|
||||||
../../nixos/users.nix
|
../../nixos/users.nix
|
||||||
../../nixos/utils.nix
|
../../nixos/utils.nix
|
||||||
../../nixos/hyprland.nix
|
../../nixos/hyprland.nix
|
||||||
|
../../nixos/docker.nix
|
||||||
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
../../home/programs/gui/helium/system.nix # I hate browser's configuration..
|
||||||
|
|
||||||
# CHANGEME: You should probably remove those things:
|
|
||||||
./persistence.nix # impermanence: what to keep once "/" is wiped on boot
|
|
||||||
./usbguard.nix
|
|
||||||
./disko.nix
|
|
||||||
./secrets
|
|
||||||
|
|
||||||
# You should let those lines as is
|
# You should let those lines as is
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./variables.nix
|
./variables.nix
|
||||||
@@ -26,7 +21,20 @@
|
|||||||
|
|
||||||
home-manager.users."${config.var.username}" = import ./home.nix;
|
home-manager.users."${config.var.username}" = import ./home.nix;
|
||||||
|
|
||||||
users.users.${config.var.username}.hashedPassword = "$y$j9T$quUlRuvuYJ18asD8SUrh11$0mHCP7ZRIOYjNHY0oT.aFfVho1V0M65eClLzVo0RARD"; # CHANGEME: This is my password
|
# USBGuard:
|
||||||
|
# Allow all USB devices until a proper policy is configured.
|
||||||
|
# Run `sudo usbguard generate-policy` with your devices plugged in,
|
||||||
|
# then set rules = "<output>" and switch implicitPolicyTarget to "block".
|
||||||
|
# services.usbguard.implicitPolicyTarget = lib.mkForce "allow";
|
||||||
|
services.usbguard.rules = ''
|
||||||
|
allow id 1d6b:0002 serial "0000:00:14.0" name "xHCI Host Controller" hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type ""
|
||||||
|
allow id 1d6b:0003 serial "0000:00:14.0" name "xHCI Host Controller" hash "prM+Jby/bFHCn2lNjQdAMbgc6tse3xVx+hZwjOPHSdQ=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type ""
|
||||||
|
allow id 17ef:6190 serial "" name "Lenovo Calliope USB Keyboard G2" hash "CfZ9R/aoXGm7BN/ojVEzKQwVoxCUtRWMuACrE7BL/5Y=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-10" with-interface { 03:01:01 03:00:00 } with-connect-type "hotplug"
|
||||||
|
allow id 0781:5581 name " SanDisk 3.2Gen1"
|
||||||
|
allow id 17ef:608d name "Lenovo USB Optical Mouse"
|
||||||
|
'';
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [9001];
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
system.stateVersion = "26.05";
|
system.stateVersion = "26.05";
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
{
|
|
||||||
disko.devices = {
|
|
||||||
nodev = {
|
|
||||||
"/" = {
|
|
||||||
fsType = "tmpfs";
|
|
||||||
mountOptions = [
|
|
||||||
"defaults"
|
|
||||||
"size=12G"
|
|
||||||
"mode=755"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
disk = {
|
|
||||||
main = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/nvme-SK_hynix_PVC10_HFS512GEM9X173N_5MF4N00141310464Q";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
size = "512M";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
mountOptions = ["fmask=0077" "dmask=0077"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
luks = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "luks";
|
|
||||||
name = "crypted";
|
|
||||||
settings = {
|
|
||||||
allowDiscards = true;
|
|
||||||
bypassWorkqueues = true;
|
|
||||||
};
|
|
||||||
content = {
|
|
||||||
type = "btrfs";
|
|
||||||
extraArgs = ["-f"];
|
|
||||||
subvolumes = {
|
|
||||||
"/nix" = {
|
|
||||||
mountpoint = "/nix";
|
|
||||||
mountOptions = ["compress=zstd" "noatime"];
|
|
||||||
};
|
|
||||||
"/persist" = {
|
|
||||||
mountpoint = "/persist";
|
|
||||||
mountOptions = ["compress=zstd" "noatime"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/persist".neededForBoot = true;
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
pkgs-unstable,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
@@ -10,16 +9,12 @@ nixpkgs.lib.nixosSystem {
|
|||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
];
|
];
|
||||||
_module.args = {inherit inputs pkgs-unstable;};
|
_module.args = {inherit inputs;};
|
||||||
}
|
}
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.stylix.nixosModules.stylix
|
inputs.stylix.nixosModules.stylix
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.nix-index-database.nixosModules.default
|
inputs.nix-index-database.nixosModules.default
|
||||||
inputs.helium-browser.nixosModules.default
|
inputs.helium-browser.nixosModules.default
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
./disko.nix
|
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
# Hardware detection - filesystems are managed by disko.nix
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
@@ -9,11 +12,32 @@
|
|||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"nvme"
|
||||||
|
"usb_storage"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = ["kvm-intel"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/5dbf85d3-d236-4af8-b489-d6066bfe1eb7";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/043E-1755";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"fmask=0077"
|
||||||
|
"dmask=0077"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
@@ -10,20 +9,19 @@
|
|||||||
## GUI
|
## GUI
|
||||||
../../home/programs/gui/proton
|
../../home/programs/gui/proton
|
||||||
../../home/programs/gui/helium
|
../../home/programs/gui/helium
|
||||||
|
../../home/programs/gui/thunar
|
||||||
../../home/programs/gui/pkgs.nix
|
../../home/programs/gui/pkgs.nix
|
||||||
|
|
||||||
## TUI
|
## TUI
|
||||||
inputs.nvf-config.homeManagerModules.default
|
inputs.nvf-config.homeManagerModules.default
|
||||||
../../home/programs/tui/ghostty
|
../../home/programs/tui/ghostty
|
||||||
../../home/programs/tui/ilovetui
|
|
||||||
../../home/programs/tui/shell
|
../../home/programs/tui/shell
|
||||||
../../home/programs/tui/git
|
../../home/programs/tui/git
|
||||||
../../home/programs/tui/git/lazygit.nix
|
../../home/programs/tui/git/lazygit.nix
|
||||||
../../home/programs/tui/nixy
|
../../home/programs/tui/nixy
|
||||||
../../home/programs/tui/nix-utils
|
../../home/programs/tui/nix-utils
|
||||||
../../home/programs/tui/spotatui
|
../../home/programs/tui/spotatui
|
||||||
../../home/programs/tui/elio
|
../../home/programs/tui/yazi
|
||||||
../../home/programs/tui/wikiman
|
|
||||||
../../home/programs/tui/pkgs.nix
|
../../home/programs/tui/pkgs.nix
|
||||||
|
|
||||||
## GROUPS
|
## GROUPS
|
||||||
@@ -37,38 +35,19 @@
|
|||||||
../../home/system/swaync
|
../../home/system/swaync
|
||||||
../../home/system/tofi
|
../../home/system/tofi
|
||||||
../../home/system/mime
|
../../home/system/mime
|
||||||
../../home/system/udiskie
|
|
||||||
../../home/system/termfilechooser
|
../../home/system/termfilechooser
|
||||||
|
../../home/system/udiskie
|
||||||
../../home/system/clipboard
|
../../home/system/clipboard
|
||||||
../../home/system/hypridle
|
../../home/system/hypridle
|
||||||
|
|
||||||
./variables.nix # Mostly user-specific configuration
|
./variables.nix # Mostly user-specific configuration
|
||||||
|
./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
inherit (config.var) username;
|
inherit (config.var) username;
|
||||||
homeDirectory = "/home/" + config.var.username;
|
homeDirectory = "/home/" + config.var.username;
|
||||||
|
|
||||||
persistence."/persist" = lib.mkIf (config.var.impermanenceEnabled or false) {
|
|
||||||
directories = [
|
|
||||||
".config/nixos" # this repo itself (nixy manages it here)
|
|
||||||
".local/share"
|
|
||||||
".local/state"
|
|
||||||
".cache"
|
|
||||||
"Notes"
|
|
||||||
"Projects"
|
|
||||||
"Documents"
|
|
||||||
"Downloads"
|
|
||||||
"Pictures"
|
|
||||||
"Videos"
|
|
||||||
];
|
|
||||||
|
|
||||||
files = [
|
|
||||||
".ssh/known_hosts"
|
|
||||||
".config/sops/age/keys.txt"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Don't touch this
|
# Don't touch this
|
||||||
stateVersion = "26.05";
|
stateVersion = "26.05";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
# Impermanence: declares what should survive a wipe of "/".
|
|
||||||
{
|
|
||||||
environment.persistence."/persist" = {
|
|
||||||
hideMounts = true;
|
|
||||||
|
|
||||||
directories = [
|
|
||||||
"/etc/NetworkManager/system-connections" # Wifi connections, VPN
|
|
||||||
"/var/lib/bluetooth" # Bluetooth connections
|
|
||||||
"/var/lib/nixos" # keeps uid/gid stable across boots
|
|
||||||
"/var/lib/systemd/coredump"
|
|
||||||
"/var/lib/upower" # battery calibration state
|
|
||||||
"/var/lib/systemd/backlight" # remembers screen brightness
|
|
||||||
"/var/lib/systemd/timers" # last-run timestamps (e.g. nix gc weekly)
|
|
||||||
"/var/log"
|
|
||||||
"/var/cache/tuigreet"
|
|
||||||
"/var/db/sudo/lectured" # remembers that the sudo lecture was already shown
|
|
||||||
];
|
|
||||||
|
|
||||||
files = [
|
|
||||||
"/etc/machine-id"
|
|
||||||
"/etc/ssh/ssh_host_ed25519_key"
|
|
||||||
"/etc/ssh/ssh_host_ed25519_key.pub"
|
|
||||||
"/etc/ssh/ssh_host_rsa_key"
|
|
||||||
"/etc/ssh/ssh_host_rsa_key.pub"
|
|
||||||
"/var/lib/systemd/random-seed" # avoid a weak entropy pool on first boot
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,42 +1,60 @@
|
|||||||
# Those are my secrets, encrypted with sops
|
# Those are my secrets, encrypted with sops
|
||||||
# You shouldn't import this file, unless you edit it
|
# You shouldn't import this file, unless you edit it
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
username = config.var.username;
|
home = config.home.homeDirectory;
|
||||||
home = "/home/${username}";
|
|
||||||
in {
|
in {
|
||||||
|
imports = [inputs.sops-nix.homeManagerModules.sops];
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
||||||
defaultSopsFile = ./secrets.yaml;
|
defaultSopsFile = ./secrets.yaml;
|
||||||
secrets = {
|
secrets = {
|
||||||
ssh-config = {
|
ssh-config = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/config";
|
path = "${home}/.ssh/config";
|
||||||
};
|
};
|
||||||
netrc = {
|
netrc = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.netrc";
|
path = "${home}/.netrc";
|
||||||
};
|
};
|
||||||
ssh-github-key = {
|
github-key = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/github";
|
path = "${home}/.ssh/github";
|
||||||
};
|
};
|
||||||
ssh-gitlab-key = {
|
gitlab-key = {
|
||||||
owner = username;
|
|
||||||
mode = "0600";
|
|
||||||
path = "${home}/.ssh/gitlab";
|
path = "${home}/.ssh/gitlab";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
home.file.".config/nixos/.sops.yaml".text = ''
|
||||||
|
keys:
|
||||||
|
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
||||||
|
- &work age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: hosts/laptop/secrets/secrets.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *primary
|
||||||
|
- path_regex: hosts/server/secrets/secrets.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *primary
|
||||||
|
- path_regex: hosts/work/secrets/secrets.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *work
|
||||||
|
'';
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
sops
|
sops
|
||||||
age
|
age
|
||||||
];
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
|
"systemctl --user start sops-nix"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,19 @@
|
|||||||
ssh-config: ENC[AES256_GCM,data:yTlt8SYPiON8aabbpQ9fE02hvp/u4oDmLaLuADzdOGdAL12MNe1QnNCND3lQ/nT+uxwm8k7OxExBfc70osLPjiq/CjNk1NOaO1nmBOXZqugnf33dF19P8SCMT2KtZTI1tYU2Kd5GmwpnozU6Qh0uJH+0ebR2tQnLChl16ap9fc6rg3AbD+XknSJ3+TndgZPBy4mN/MzT/GFL2kBDbYCmLoMXWDKxCM6ta1NvLRD8W7EBMeh/CNfkU+cw1kPjgPudDBP047VFudnqiueEAAigk3imqPyDFE1Jz4ouvVuLQz/f1BWnyZon3+sgHESAMRtAP3Lt7zo3s4PTJ04ohB4gk6K2fGBsFdyaWJp4uR8FMOhXrwG813KI,iv:W6bcO9ElLJ7YvN6PenqWNQnNSLi2WxZsjBc/adKdjeg=,tag:zKdx+RFXiOKpsY8EOGs46g==,type:str]
|
ssh-config: ENC[AES256_GCM,data:npBcAOSwHpApUASlZmRo4stwMrOjdrdmhfYwumjbTpcq8aQ2ybV8le7cjNdVqIyxgwxUFV4/tGfmsq4nlrWIO/85spwfC5DyPGaZ848NI3UZJj8k2GKuw5qk/xGsTveNhq+vNZQcHeL4aeXF2TRmFLDHYGTku9anFL7FWkQ75MmGW78XfPUEyZJ52ylXq3gkYeVSrl6cXuwJw/QBlu+XTgFk4MM+E5BTXBFFNJOYkIt4GwWX7wdI+QqPEof8J0ENYdxUAMKMueL4pLNclWP0fu7QC7gwwRJWjauCNElJiDhpVFa6WukJV/Ut+I30FH9cJtj0rSodeu0hq2fWaiQ0wVbQudxi0JcnxJQs+B9nb6kpF+TN0MiD,iv:c7DMZSmlgMMnNlR0/kNRKPYjCzvNQJ46mZzojHppSg8=,tag:ausjsFk0H9nOiiMebHXSUg==,type:str]
|
||||||
netrc: ENC[AES256_GCM,data:dlfPJqzz7EZ5JHBmQr7imMDlQv9KFfzDKY6YywtPWR7re7z9jBFgMoaPRk62ocCVltofak6Zrsr3on1jPrrpMwk4DQYFSnQ5tvUTi/1LJWpf9GgjokC5nqc=,iv:se1ysRyzZmB6MjU4heFrDLHe2bv8Ml2iLC4MuIcQW9Y=,tag:oyu8wfR+9hvOuKmsk2sDXw==,type:str]
|
netrc: ENC[AES256_GCM,data:EOpuZhDVXe7Q4P/98C3gtEvkdawI26d4oX/wRNytyp/mAdkHytXiLpFdsuO/3DADOG8h1CCo1UTs9ex+bqoD/LdChdp7INfNDSQ+aDxTiG0rLBgjvy8TIj8=,iv:tc/RbN1Upbjv+3rU5zUR3P//a1Hj1xODInLMShg4i1Y=,tag:7E9G2g4g+eMeJrwI20R/1g==,type:str]
|
||||||
ssh-github-key: ENC[AES256_GCM,data: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,iv:ElF3tykw7GKyhdb1YJBivwxT74DEWkdU1EOuOa/ntUM=,tag:+RYqptKt4L3UynBaoBmwNA==,type:str]
|
github-key: ENC[AES256_GCM,data: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,iv:2Mvmz1CFO1112RxjIl6sxyNIDqa/cg00um6RcQaHNY8=,tag:+zygdwQdCBeBXVLvAj/jJQ==,type:str]
|
||||||
ssh-gitlab-key: ENC[AES256_GCM,data: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,iv:h87uW6VOwRubj19DKxEoddRN5/2v+vmKlBxfZnGjY70=,tag:SV17QrAMwJb0QWOXRbPdnw==,type:str]
|
gitlab-key: ENC[AES256_GCM,data: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,iv:pbe2MtYmFmY/kS+gM9xyI6cXViVmzPB3H7XL1ZH47h0=,tag:NmSKMlAIEOWE8Jw/iy3+Xw==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBma2xHeGpudjVRMTQ2WFlZ
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVby9Wa1NUUkpyeDMwU3dM
|
||||||
aGJvNnJvM0hkQjM0MThZSjQvc1ErYXZRSDJjCkphZDZycUljcUhUQStNT1RFN29z
|
R0EyeFVtT0tJU0pKaWtXQzRkTDBPY3JjcTFrClNIQnl2WVorS0FZZjhicTQ5V2kx
|
||||||
djRrTzhTckt2K1I1TGsvRWFaeVdSK1kKLS0tIFBGdFFpV1lTNlFzMSt1TktDNk91
|
MUZTZWZtaUk2a1ZhUTBCUnhkWHFIMFUKLS0tIElLcjJLZWNLOUJYN0NNVGFNUEFN
|
||||||
NUphdlJ5ODZjNDZyTUl3OStpdmYrUWcKYKZ8pvGG1QkCBZTqVtFb5GIYWYfsr/Mc
|
RkMrdTYwNkY1Tlc3M3dxTFdkRXJJZUEKUlYU45jXpS9hJO9Z/uAQ6XMj9QWgMMRI
|
||||||
+OGeP1hRwQzJ9+DLUgrsfK/8vr+0Y5q2Nej9gbfxyrnlszussbOADw==
|
LbJxvt48+yC+Y0XKOtDE0lHAuGNzUG8R/7FB1tTD8NCamBe46KGCIg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
recipient: age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
recipient: age1c8pawdsxptfslgrz2c56s39mrtnjzc5mm3hfzgr2wdwu2v6vfsdsupjsq6
|
||||||
- enc: |
|
lastmodified: "2026-07-01T12:18:22Z"
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
mac: ENC[AES256_GCM,data:rX8MoqaMAbfuMdcQMw8eDGXos3VgbA3VfNJJcGGk2xQPuTC7FW5S0BVuh68ajzVv0oaYtT8pBRktv9Lo2VDY6Mm4neVuF/9IgV0cTKwvx5ACjN40Zt7OU+QtlQK44kDXsJQFyV+BYHVNiW8jej1h9d7vSAgG0hD3GOpvtK6ZY6E=,iv:3B3COjvazDVRkUsuIiLlOCFqlE9ooFR8dC5PTXe/q28=,tag:QEqcRTks4zSX02qc9KDsrA==,type:str]
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0aWQ1NzVWc0lnMXBHZFZq
|
|
||||||
SEplcWMwc1R4NmkvdWdMQUJWY2R0dnRBeVVzCjBCNjVEc3hJazJzZXFFc0EzbXNV
|
|
||||||
enFtYnNVNzUwYVQ4RVUxWVhROFJhT2sKLS0tIGpWeHNwWm5NakFzY0JzYWxicHhk
|
|
||||||
MzVVaVdyOEtoUkF1aDY2UnBGbC9rbDgKoEUqT/OlVXYR5MVlpsnTY4NHa6yg3FzQ
|
|
||||||
WaBrZfGv2/dKeulFCKKFrT3ZG8TIbLTqdRoVIrUp1O+U3vObzY9fzA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
|
||||||
lastmodified: "2026-08-17T12:19:14Z"
|
|
||||||
mac: ENC[AES256_GCM,data:2rK9RlYE7dX/c6zg3J1AeB1TI3v2XVhoUGsou0u35enhebzINUCYVC9HN9Te+6nWO/OVQ3i5vn+DwOZDbK2bfH88wqwIqI4o1Ztw2MW8/kzNJZhqv4QA4Xdo0ULD2TO3X95E1iEnuQIJ0c26gIuVdfsrQviBDbmBTMR/JVE6yHQ=,iv:kZ+2R0+Z64zAZb7ePDdJfPlo/BMFyLpAxK+7ZiDoKFI=,tag:xbf7xOYuG+Msoicx5qjyNw==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.13.3
|
version: 3.13.1
|
||||||
|
|||||||
@@ -21,12 +21,13 @@
|
|||||||
|
|
||||||
git = {
|
git = {
|
||||||
username = "Hadi";
|
username = "Hadi";
|
||||||
email = "hadi@example.fr";
|
email = "hadi@example.com";
|
||||||
};
|
};
|
||||||
|
|
||||||
autoUpgrade = false;
|
autoUpgrade = false;
|
||||||
autoGarbageCollector = true;
|
autoGarbageCollector = true;
|
||||||
impermanenceEnabled = true;
|
|
||||||
|
hasBattery = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
# DON'T TOUCH THIS
|
# DON'T TOUCH THIS
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
# Autologin at boot: greetd starts your session directly on the first VT
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.greetd.settings.initial_session = {
|
|
||||||
command = "${pkgs.uwsm}/bin/uwsm start -e -D Hyprland hyprland.desktop";
|
|
||||||
user = config.var.username;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Needed so the LUKS passphrase entered at boot is cached in the kernel
|
|
||||||
# keyring, where pam_fde_boot_pw can retrieve it (see below).
|
|
||||||
boot.initrd.systemd.enable = true;
|
|
||||||
|
|
||||||
security.pam.services.greetd.rules.session.fde_boot_pw = {
|
|
||||||
order = 12550; # kwallet=12500, gnome_keyring=12600: must run in between
|
|
||||||
control = "optional";
|
|
||||||
modulePath = "${pkgs.pam_fde_boot_pw}/lib/security/pam_fde_boot_pw.so";
|
|
||||||
args = ["inject_for=gkr"];
|
|
||||||
};
|
|
||||||
|
|
||||||
security.pam.services.login.enableGnomeKeyring = true;
|
|
||||||
|
|
||||||
systemd.services.greetd.serviceConfig.KeyringMode = lib.mkForce "shared";
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
{
|
{config, ...}: {
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
users.users."${config.var.username}".extraGroups = ["docker"];
|
users.users."${config.var.username}".extraGroups = ["docker"];
|
||||||
environment.systemPackages = [pkgs.lazydocker];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Home-manager configuration for NixOS
|
# Home-manager configuration for NixOS
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs-unstable,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home-manager = {
|
home-manager = {
|
||||||
@@ -9,7 +9,11 @@
|
|||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
backupFileExtension = "hm-backup";
|
backupFileExtension = "hm-backup";
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs pkgs-unstable;
|
inherit inputs;
|
||||||
|
pkgs-stable = import inputs.nixpkgs-stable {
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
# Omen laptop configuration for NixOS
|
||||||
|
# Import this only if you have an HP Omen laptop
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hp-omen-linux-module = pkgs.callPackage (
|
||||||
|
{
|
||||||
|
kernel ? config.boot.kernelPackages.kernel,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "hp-omen-linux-module";
|
||||||
|
version = "rebase-6.15";
|
||||||
|
# Upstream only rebases per kernel branch and currently tops out at
|
||||||
|
# rebase-6.15, while linuxPackages_latest is already on 7.x. If the
|
||||||
|
# module ever fails to build against a newer kernel, either bump this
|
||||||
|
# to a fresh upstream branch or fall back to a stable kernel.
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ranisalt";
|
||||||
|
repo = "hp-omen-linux-module";
|
||||||
|
rev = "d4b9b5adb84581c3874ca3985dc749c40c3ece67"; # rebase-6.15
|
||||||
|
sha256 = "sha256-IOXHzcCB0n1InMjeIu3XYEJ4bhbHS3NIlS8/+4XIwkQ=";
|
||||||
|
};
|
||||||
|
setSourceRoot = ''
|
||||||
|
export sourceRoot=$(pwd)/${finalAttrs.src.name}/src
|
||||||
|
'';
|
||||||
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
makeFlags = [
|
||||||
|
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||||
|
];
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install hp-wmi.ko -Dm444 -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/platform/x86/hp/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
) {kernel = config.boot.kernelPackages.kernel;};
|
||||||
|
in {
|
||||||
|
boot.extraModulePackages = [hp-omen-linux-module];
|
||||||
|
boot.kernelModules = ["hp-wmi"];
|
||||||
|
boot.kernelParams = ["hp_wmi.force_slow_fan_control=1"];
|
||||||
|
|
||||||
|
users.groups.omen-rgb = {};
|
||||||
|
users.users.${config.var.username}.extraGroups = ["omen-rgb"];
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"w /sys/devices/platform/hp-wmi/rgb_zones/zone00 0660 root omen-rgb -"
|
||||||
|
"w /sys/devices/platform/hp-wmi/rgb_zones/zone01 0660 root omen-rgb -"
|
||||||
|
"w /sys/devices/platform/hp-wmi/rgb_zones/zone02 0660 root omen-rgb -"
|
||||||
|
"w /sys/devices/platform/hp-wmi/rgb_zones/zone03 0660 root omen-rgb -"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
SUBSYSTEM=="platform", KERNEL=="hp-wmi", ACTION=="add", \
|
||||||
|
RUN+="${pkgs.coreutils-full}/bin/sleep 2", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone00", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone00", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone01", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone01", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone02", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone02", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone03", \
|
||||||
|
RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone03"
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# Source: https://github.com/Dylouwu/MyNixy/blob/main/nixos/steam.nix
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
gamescopeSession.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
mangohud
|
|
||||||
protonup-ng
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
|
||||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/${config.var.username}/.steam/root/compatibilitytools.d";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.gamemode.enable = true;
|
|
||||||
}
|
|
||||||
# Example of recommanded launch options for your games in Steam :
|
|
||||||
# Regular gaming :
|
|
||||||
# LD_PRELOAD="" gamescope -W 2560 -H 1440 -r 360 -f -- %command%
|
|
||||||
# LD_PRELOAD="" gamescope -W 3440 -H 1440 -r 140 -f -- %command%
|
|
||||||
# HDR gaming :
|
|
||||||
# LD_PRELOAD="" ENABLE_HDR_WSI=1 gamescope -w 2560 -h 1440 -r 360 -f --hdr-enabled --hdr-debug-force-output --hdr-sdr-content-nits 600 -- env ENABLE_GAMESCOPE_WSI=1 DXVK_HDR=1 DISABLE_HDR_WSI=1 VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_wait %command%
|
|
||||||
# LD_PRELOAD="" removes a glitch causing games to slow down after roughly 24 minutes
|
|
||||||
# For the rest of the command, you can change the values to match your screen resolution and refresh rate
|
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
c = config.lib.stylix.colors;
|
c = config.lib.stylix.colors;
|
||||||
tuigreet = pkgs.tuigreet;
|
tuigreet = inputs.notashelf-tuigreet.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||||
|
|
||||||
theme = lib.concatStringsSep ";" [
|
theme = lib.concatStringsSep ";" [
|
||||||
"border=#${c.base0D}"
|
"border=#${c.base0D}"
|
||||||
@@ -42,14 +43,14 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
|
||||||
|
|
||||||
# this is a life saver.
|
# this is a life saver.
|
||||||
# literally no documentation about this anywhere.
|
# literally no documentation about this anywhere.
|
||||||
# might be good to write about this...
|
# might be good to write about this...
|
||||||
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
|
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
|
||||||
# Unlock the gnome-keyring with the login password so apps (browser
|
# Unlock the gnome-keyring with the login password so apps (browser
|
||||||
# secrets via libsecret, ProtonVPN credentials, …) don't reprompt.
|
# secrets via libsecret, ProtonVPN credentials, …) don't reprompt.
|
||||||
|
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||||
|
|
||||||
systemd.services.greetd.serviceConfig = {
|
systemd.services.greetd.serviceConfig = {
|
||||||
Type = "idle";
|
Type = "idle";
|
||||||
StandardInput = "tty";
|
StandardInput = "tty";
|
||||||
@@ -60,4 +61,6 @@ in {
|
|||||||
TTYVHangup = true;
|
TTYVHangup = true;
|
||||||
TTYVTDisallocate = true;
|
TTYVTDisallocate = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [tuigreet];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,12 +10,5 @@
|
|||||||
IPCAllowedUsers = [
|
IPCAllowedUsers = [
|
||||||
"root"
|
"root"
|
||||||
];
|
];
|
||||||
rules = ''
|
|
||||||
allow id 1d6b:0002 name "xHCI Host Controller"
|
|
||||||
allow id 0951:1666 name "DataTraveler 3.0"
|
|
||||||
allow id 1d6b:0003 name "xHCI Host Controller"
|
|
||||||
allow id 17ef:6190 name "Lenovo Calliope USB Keyboard G2"
|
|
||||||
allow id 17ef:608d name "Lenovo USB Optical Mouse"
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -116,7 +116,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
xdgOpenUsePortal = false;
|
xdgOpenUsePortal = true;
|
||||||
config = {
|
config = {
|
||||||
common.default = ["gtk"];
|
common.default = ["gtk"];
|
||||||
hyprland = {
|
hyprland = {
|
||||||
@@ -124,7 +124,7 @@ in {
|
|||||||
"gtk"
|
"gtk"
|
||||||
"hyprland"
|
"hyprland"
|
||||||
];
|
];
|
||||||
# Pick files / choose download paths with elio instead of the GTK dialog.
|
# Pick files / choose download paths with yazi instead of the GTK dialog.
|
||||||
# Key MUST use the "impl" interface name, else xdg-desktop-portal
|
# Key MUST use the "impl" interface name, else xdg-desktop-portal
|
||||||
# ignores it and falls back to the default (gtk). See portals.conf(5).
|
# ignores it and falls back to the default (gtk). See portals.conf(5).
|
||||||
"org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
|
"org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ in {
|
|||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
recyclarr = {
|
recyclarr = {
|
||||||
owner = "recyclarr";
|
owner = "recyclarr";
|
||||||
# TODO: too permissive (world-writable), should be 0600/0400
|
|
||||||
mode = "0777";
|
mode = "0777";
|
||||||
};
|
};
|
||||||
wireguard-pia = {
|
wireguard-pia = {
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (import ./mk-container.nix {inherit lib config;}) mkContainer;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
(mkContainer {
|
||||||
|
name = "wallpapers";
|
||||||
|
hostIp = "10.233.4.1";
|
||||||
|
containerIp = "10.233.4.2";
|
||||||
|
nixosConfig = {pkgs, ...}: {
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts."wallpapers" = {
|
||||||
|
root = "${inputs.awesome-wallpapers.packages.${pkgs.stdenv.hostPlatform.system}.default}/share/awesome-wallpapers";
|
||||||
|
listen = [
|
||||||
|
{
|
||||||
|
addr = "0.0.0.0";
|
||||||
|
port = 8080;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
locations."/" = {
|
||||||
|
tryFiles = "$uri $uri/ /index.html";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
port_in_redirect off;
|
||||||
|
absolute_redirect off;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [8080];
|
||||||
|
system.stateVersion = "24.05";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
services.cloudflared.tunnels."${config.var.tunnelId}".ingress."wallpapers.${config.var.domain}" = "http://10.233.4.2:8080";
|
||||||
|
}
|
||||||