Compare commits
1135 commits
upgrade-to
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 924e9b7ab4 | |||
| beb9705d2f | |||
| b5a8a9a545 | |||
| 6365f7b4f3 | |||
| 27babd819c | |||
| 0d0d6ebb56 | |||
| fa8efef26a | |||
| e8af512370 | |||
| 15149a7968 | |||
| 9f53c984f4 | |||
| 4828dc5a21 | |||
| 2d801ae06a | |||
| d8f2812003 | |||
| e863aea052 | |||
| 04163b2c79 | |||
| 3f0333b4a0 | |||
| d7c245ed8e | |||
| 83831f6a75 | |||
| 9be3caddbc | |||
| 76ecdba67e | |||
| 03f0570342 | |||
| 4e9a1dae72 | |||
| b668212daf | |||
| 859a4b20a5 | |||
| 72c8a0e7e2 | |||
| 351bd99fdf | |||
| 1ea530a2a6 | |||
| 7277135a5b | |||
| 8c6fdd5b51 | |||
| 1d1b76b329 | |||
| 9ca56553f7 | |||
| 4361d6e0a9 | |||
| e6bdf0f984 | |||
| 8331e8c875 | |||
| ed8a6297b7 | |||
| eb5ebb056c | |||
| 8b86b1ccc0 | |||
| ce5be49975 | |||
| 85b1605ea9 | |||
| 0bfe20a736 | |||
| 5ddac8b95b | |||
| b1e5e83744 | |||
| c42c6cd83a | |||
| afab4c4d0a | |||
| 284bd502f0 | |||
| 9f7cf822ed | |||
| b8264643e6 | |||
| 8b9eae079e | |||
| c00ef6ab7c | |||
| 16f79d8a7d | |||
| c914256c97 | |||
| 2240c4e256 | |||
| 8f97bc80e3 | |||
| 392df35a1c | |||
| d916c8f36a | |||
| 03b73e7090 | |||
| d3a3617e29 | |||
| 4da3beb168 | |||
| 74175100c7 | |||
| c8d487d374 | |||
| 13c1d5864d | |||
| 91d0d875ea | |||
| 1b620d556b | |||
| 65eb518651 | |||
| e15a9c0c01 | |||
| 2c49a7318b | |||
| 93944f1391 | |||
| c777f0e5f1 | |||
| 0af0720268 | |||
| 3d91ef0932 | |||
| f445891c25 | |||
| cf08bc61b2 | |||
| 3fedba90c4 | |||
| fc803fd67e | |||
| a4f27b49af | |||
| 68218ec187 | |||
| 641ebc7ad9 | |||
| 8597f372c0 | |||
| 2fc9fe9e1a | |||
| 75312f7622 | |||
| 86fe2646d1 | |||
| 57125b4bf8 | |||
| 8fdeb93bc5 | |||
| ccebf381b0 | |||
| 09d0847ea4 | |||
| b6119bd2cc | |||
| 3e29186990 | |||
| e1c1ff801d | |||
| eb2a4ea67a | |||
| ae0393ae37 | |||
| cd876e3a17 | |||
| 69c5e8d9be | |||
| fb317980e2 | |||
| 2615b290a1 | |||
| e43910155c | |||
| 38df2ff9d6 | |||
| 0a00c2b25a | |||
| eecbb372cb | |||
| 28245e92f5 | |||
| 970da745ad | |||
| 338714285e | |||
| f934ff1092 | |||
| 164d665324 | |||
| 190010e31f | |||
| 2b42883523 | |||
| cd58dde5fd | |||
| 3af90c044f | |||
| 91e57025b7 | |||
| 48993bb1e6 | |||
| 64d2ca9c23 | |||
| 2df0370ce0 | |||
| 2fea832484 | |||
| 90028fb7fe | |||
| fb41beb270 | |||
| 5fc8c72a51 | |||
| 283ef9c680 | |||
| d824d6269c | |||
| 25cad55c78 | |||
| 820e082f49 | |||
| 264942168d | |||
| fe93e06d34 | |||
| a82ddf87df | |||
| 19493e8ef6 | |||
| a959fb46be | |||
| 7c242b437d | |||
| 98f9b3a8fc | |||
| fd0f27145a | |||
| d05764d3dd | |||
| d87450b305 | |||
| 2c6009b5b8 | |||
| a741b9b559 | |||
| bb801f4e4c | |||
| c37d347ba1 | |||
| 0bfc27e90f | |||
| 53df838182 | |||
| f29d5d4207 | |||
| 9aea5cd1f6 | |||
| 9666439eeb | |||
| 50e6fac406 | |||
| ce69f89492 | |||
| c2d28ac798 | |||
| 22896ea923 | |||
| 203ffb3738 | |||
| d2d28a968f | |||
| f7e9fd9cad | |||
| 6e5a9ca208 | |||
| 85c3c570dd | |||
| db6366a491 | |||
| f8140164d1 | |||
| 1a927b60be | |||
| f06d9b0e01 | |||
| 83977d50ae | |||
| 6292a84a01 | |||
| 28c64bd454 | |||
| a377ad8176 | |||
| dafbcb9f8d | |||
| 513dab012d | |||
| 630e634cd2 | |||
| f7a528a94f | |||
| 35f9aaca7d | |||
| 989f5407ec | |||
| cb1230214a | |||
| bc9098525b | |||
| 0bd973fb25 | |||
| 90b1e43b99 | |||
| 7fce74c605 | |||
| 1815e8e3f6 | |||
| a47d0a090d | |||
| 5832fcb26b | |||
| 00cbe6876e | |||
| b8a2c3c10d | |||
| 421a389bdb | |||
| c925026183 | |||
| 5d77bb0959 | |||
| 71a1bad913 | |||
| 8385b2d6e6 | |||
| 0c64697063 | |||
| a0fadd7a1b | |||
| c366ce1cbe | |||
| ba96c9b687 | |||
| 790b5ec4e7 | |||
| 6be10e325a | |||
| 965a5eef13 | |||
| 0617934f31 | |||
| 23d426f0ea | |||
| a7545faa45 | |||
| 92a6c20c18 | |||
| f3ee33177f | |||
| da57debd66 | |||
| a483112a32 | |||
| 68ea0f03f2 | |||
| cbbef2a3a6 | |||
| 8279721102 | |||
| 922c492412 | |||
| 36d0ee851e | |||
| d0a38fbfa3 | |||
| 40d2622862 | |||
| 5640408d9f | |||
| 789157e3bf | |||
| 1c7d4a513d | |||
| c46418c783 | |||
| 3dd73e0b24 | |||
| bdff3d97e9 | |||
| 8bfd76f23c | |||
| b123ab87df | |||
| 6adbd2d38c | |||
| ac36661d4e | |||
| 8a700174b1 | |||
| 786e3967e3 | |||
| f8bf8ed7a4 | |||
| bcff4d2cbe | |||
| 251f88df02 | |||
| 5847ecfe1b | |||
| 573fbdd240 | |||
| 65b7cf4ab6 | |||
| a59b356e9d | |||
| dec75b3f7e | |||
| 83f7d01824 | |||
| 91da240751 | |||
| 02fcfb5008 | |||
| 2f970835b2 | |||
| 77edacc9d4 | |||
| b6bd1ec321 | |||
| a60ca21925 | |||
| d713ba1f15 | |||
| 904bb98f36 | |||
| 36ac10c6dd | |||
| 24f4f270c1 | |||
| d93a2a7993 | |||
| 67989ca1a8 | |||
| d65b4380e7 | |||
| 3d4deae65a | |||
| daf1e39df3 | |||
| c154d91613 | |||
| 5631236aff | |||
| 8933b405d4 | |||
| c66d7c21da | |||
| bd0d7e5495 | |||
| 88235bb32e | |||
| a2bce9715d | |||
| 710e431dad | |||
| fb7b164a6c | |||
| 335205338f | |||
| ebbbc8da58 | |||
| dca3d05aec | |||
| f83298f632 | |||
| a1d47a2744 | |||
| c396ca7400 | |||
| a275c8d43e | |||
| 74ed35e5f4 | |||
| 21c8f8c7e4 | |||
| 98ebbcfbd3 | |||
| 7eeff4c125 | |||
| 16d3391714 | |||
| fcba25620b | |||
| 68994153d0 | |||
| 62cf076375 | |||
| 135cd0642b | |||
| 3733eb8b3a | |||
| 2d4374899c | |||
| ba2d6eb02a | |||
| 0c754f1930 | |||
| 577aa1cc33 | |||
| fe9678388d | |||
| 49130f062d | |||
| 0b3613086c | |||
| ce51dd5dd3 | |||
| d130ffb20d | |||
| 99056c9f32 | |||
| 5895f4beb1 | |||
| a2eacddd44 | |||
| 3eaabeacd9 | |||
| 4bb34105f1 | |||
| efc4b199a4 | |||
| 049a95e7b0 | |||
| 10f09226eb | |||
| 75e75a571e | |||
| 9aabffc52a | |||
| 5eab2e1ccc | |||
| 49e920ac97 | |||
| 16d61d8d73 | |||
| 45daaddfb6 | |||
| 818bb17a3f | |||
| cf66663534 | |||
| 22dc0e1915 | |||
| d7f7561cbb | |||
| a6a4f594cf | |||
| 581f281950 | |||
| aee3b50212 | |||
| 30e89ac9d3 | |||
| ff4ceecd67 | |||
| 7c98655a99 | |||
| fc51305ad6 | |||
| 5c8044283a | |||
| dc4f025318 | |||
| 565e5f8224 | |||
| bdc9c97289 | |||
| 4a4284bce2 | |||
| bcb20eb1ca | |||
| 74d858d5c5 | |||
| dd07992751 | |||
| e4f9e94269 | |||
| 69c9bfca26 | |||
| ed5cbe1a05 | |||
| 147be34498 | |||
| 221e4878b4 | |||
| 0f6f51975d | |||
| e952cfa34f | |||
| 84f5b7537b | |||
| 9cbd262e14 | |||
|
|
159dbbfe90 | ||
| 183ebd78d1 | |||
| 147c52ee20 | |||
| 4159ee98cc | |||
| 25db001181 | |||
| 3c72a10ec0 | |||
| aa17ed51c8 | |||
| 8bace4cb22 | |||
| 99e5c29a3b | |||
| 38281315f7 | |||
| c569ed03d2 | |||
| c666b582f6 | |||
| b20c1b53d1 | |||
| 7ad9530040 | |||
| fdad5d88bb | |||
| 32b291be20 | |||
| 3b5c8735be | |||
| e531e6cb68 | |||
| e15aa9ba44 | |||
| cd802ab3a6 | |||
|
|
3748aae1c5 | ||
| 34e1dd0bfc | |||
| 0e66939ab1 | |||
| c7d2db076b | |||
| 52a08be94d | |||
| d18e059d1e | |||
| 492d870980 | |||
| d39890589b | |||
| 37f3b3fc60 | |||
| dfd094ef67 | |||
| 59692e7651 | |||
| a643254864 | |||
| cfa31cbe51 | |||
| b51bea1785 | |||
| 582ac7314a | |||
| 67716baa54 | |||
| f58fdb8d49 | |||
| 74cadfd80f | |||
| 85dc75ced4 | |||
| 059ed79f33 | |||
| 9b8a0629a1 | |||
| 84113d5327 | |||
| f85d3d5ac2 | |||
| 72ec589771 | |||
| 0466a64c17 | |||
| dbb6887168 | |||
| f3c83f4ac2 | |||
| 39fcb86f6e | |||
| bd866ba7a2 | |||
| cae6f707af | |||
| 4dbe60e314 | |||
| d0194b301a | |||
| e497436f05 | |||
| ef324a47db | |||
| 12f190bbaa | |||
| 99bce3fd14 | |||
| 428fd3f9f0 | |||
| 7d04111f4a | |||
| 1ed98c54b5 | |||
| 565aae0710 | |||
| 17e929fe3e | |||
| 1ba89c9548 | |||
| b061708ce7 | |||
| c3ee394131 | |||
| 1f6c51441a | |||
| f551e27127 | |||
| 4872cdfb98 | |||
| f71901fc08 | |||
| 3730c8f01c | |||
| 45488dd25c | |||
| ab1ffbcfdf | |||
| 8004eba6d9 | |||
| c084034269 | |||
| a68714db8d | |||
| 2d911bc591 | |||
| 32598541f3 | |||
| 6747aba0d3 | |||
| 694104e62c | |||
| 3a2bc2cda5 | |||
| eb7b34924a | |||
| 1cac73de87 | |||
| ffc7d81f70 | |||
| 37823965c3 | |||
| ca38820ac6 | |||
| 3baa80bf1f | |||
| 09274de08c | |||
| c018979cb2 | |||
| d5235f5bf3 | |||
| ec6a77b76b | |||
| 4bd53fc871 | |||
| 551c3e2b11 | |||
| 3645370498 | |||
| 8637b214ac | |||
| b81cb471cc | |||
| b442b1e5a9 | |||
| c3c4c32358 | |||
| a3b8fe20d1 | |||
| dc9cc8b6fa | |||
| bdf8140765 | |||
| 10902ed69f | |||
| 1aca0c5e64 | |||
| c7088d8b96 | |||
| 0991d4defb | |||
| dad79e9b40 | |||
| d686b4f0b5 | |||
| f836354767 | |||
| 8bc792fb2d | |||
| 5981d50a72 | |||
| 52cb4607db | |||
| d9d0ad7b73 | |||
| 2626ac99c3 | |||
| 100f7ec33e | |||
| 5bf5c9f737 | |||
| cf2a201c7a | |||
| 6d6dab1764 | |||
| 64b4a1b6cb | |||
| 97b30aa8fc | |||
| 2c45da4844 | |||
| 16fa01ad7d | |||
| 0119c52db6 | |||
| 95dd730b7d | |||
| b8d1c3985b | |||
| 7a5219af7c | |||
| 6f82fb26bd | |||
| a65936845f | |||
| 7eae2ded13 | |||
| bf3c360a0d | |||
| 48f97c5aae | |||
| 777ab3a99b | |||
| 7006a7ff93 | |||
| 301a1bfa9b | |||
| 6e885dfbb6 | |||
| 79a247d9e6 | |||
| c322de5757 | |||
| 1b96024e4a | |||
| 114fcad32e | |||
| e1f4b528c6 | |||
| 863840b2b1 | |||
| 5001e70c14 | |||
| 020cec94a1 | |||
| 99a17a7c79 | |||
| a826c532e5 | |||
| 85ccce45b9 | |||
| 675b8c7b85 | |||
| cae5c4f036 | |||
| a700fc64b7 | |||
| c8863554a2 | |||
| faab731506 | |||
| b9b9f28e26 | |||
| 8b43439238 | |||
| 1318dbba65 | |||
| 5e310a8255 | |||
| e4ec92a8f0 | |||
| 67f3cf3fad | |||
| 421be2b14b | |||
| b7a9debd3b | |||
| 4f61147f8d | |||
| 7e3da29f97 | |||
| 5f99d8a0f4 | |||
| 45f86f522a | |||
| 84fa84350a | |||
| f4712fdf70 | |||
| bec73e73ad | |||
| 7de1a1bad7 | |||
| 6ac0973357 | |||
| 2f3eafb1de | |||
| fd871aed7a | |||
| c0594967a7 | |||
| 05c28f5ce5 | |||
| 46678f11f1 | |||
| 617a0b2356 | |||
| 57c9e8d66f | |||
| b7d90ad5a5 | |||
| 9fc7d0c26b | |||
| e3f0c2666f | |||
| 07217c6777 | |||
| 1fad825868 | |||
| 6628a2d181 | |||
| 89c600766a | |||
| fbe01084d2 | |||
| cc11a5a386 | |||
| 28a3bf2509 | |||
| 19985c86da | |||
| b740d56f03 | |||
| 316a147c4a | |||
| 3931366eb9 | |||
| e2925ee06a | |||
| 94b0eb3d65 | |||
| 72557d36ea | |||
| f704fd47d1 | |||
| a66628290b | |||
| 9e1ae553cf | |||
| aeed860735 | |||
| 008d792a4b | |||
| c9646442f8 | |||
| 8d8b118b36 | |||
| 2d49d6aece | |||
| 91ebf1acc9 | |||
| 74116aa110 | |||
| 6b8e8fc132 | |||
|
|
3eee85a87d | ||
| ca0c84006e | |||
| b37b576ead | |||
| 3425b07040 | |||
| 0be1aa7adc | |||
| 26798e0356 | |||
| 012687565a | |||
| 760a3d3b2a | |||
| f02f907932 | |||
| 5e271ae4a5 | |||
| 56442c00dd | |||
| 4b1ea077d3 | |||
| 7bd66a216d | |||
| f6cb581dd2 | |||
| f13ac0b8ec | |||
| 9bea86b4ff | |||
| bb9f35e960 | |||
| 944207fdd2 | |||
| 2eb19d7374 | |||
| 8699442aba | |||
| 921f1ad912 | |||
| 4244072f23 | |||
| bad020c1d6 | |||
| f9d60b9c8b | |||
| d933203186 | |||
| 19bddffde3 | |||
| 7535e078fe | |||
| 30f41d10db | |||
| 68628028bd | |||
| 0aee3539f0 | |||
| be5fb3bc24 | |||
| c603df28bf | |||
| 3d439c4893 | |||
| 319550e718 | |||
| 2b9491c837 | |||
| ea97158296 | |||
| 56c81782ba | |||
| 7cba5baa63 | |||
| 2730ed6cdc | |||
| befadf8ed2 | |||
| a3d1a8a744 | |||
| 4ea69cf70d | |||
| 228cbf3734 | |||
| 2481e03a87 | |||
| 08824dddf3 | |||
| 120583cea7 | |||
| 0a5226d6fd | |||
| e01b542bb5 | |||
| 35235b004b | |||
| 4964354f8c | |||
| 335c97864e | |||
| ed6067d43e | |||
| 1ac5d06ab2 | |||
| 544d1f6a22 | |||
| 5d644f0959 | |||
| 384ecd5712 | |||
| b322c242ce | |||
| b014af7891 | |||
| 5926168b3f | |||
| 5f776ae552 | |||
| d4c3fc64f7 | |||
| 70f9fdecdd | |||
| 3ccdbe36c9 | |||
| cb04535cbf | |||
| 789c84fc3f | |||
| bda9abff87 | |||
| 09839004e1 | |||
| ea0d7caf4f | |||
| 7202d3a57f | |||
| 26fde46886 | |||
| 819b9bd218 | |||
| 0337f4f7a0 | |||
| 7019c43d85 | |||
| 761dfedf1b | |||
| ce6732acd8 | |||
| 16d47d5214 | |||
| 3ecc3456ec | |||
| 13b2e5ef6f | |||
| 89eb9e4b71 | |||
| 8062c8ad5a | |||
| cd48978f98 | |||
| 72a94a71c1 | |||
| 317aa3800a | |||
| 57372c8d28 | |||
| e28022921a | |||
| aad1faa052 | |||
| c29fbb1fd6 | |||
| 762c0ff7dc | |||
| 7048a56413 | |||
| fe52c9055b | |||
| 6b3003972d | |||
| 8aaa524fce | |||
| f8f05329a2 | |||
| b43657877c | |||
| 640f1a1c41 | |||
| 7227036630 | |||
| 60ded6e153 | |||
| eb6be432d6 | |||
| 2e159d1359 | |||
| fe701b6eec | |||
| 27ebce4fc6 | |||
| bfbf57b180 | |||
| d93115b35c | |||
| a07ddd315c | |||
| 233581eccb | |||
| 693410597a | |||
| 430bafb0b2 | |||
| 7888103b1e | |||
| 82bbd7ce87 | |||
| 9351f85534 | |||
| e88fb8a16e | |||
| 7474faefe5 | |||
| 5a1fd5175c | |||
| 26f91e4e19 | |||
| 47e6ac288b | |||
| 2bf27fdf63 | |||
| b9c51f9226 | |||
| 8f84c12306 | |||
| 81bb301ee2 | |||
| ff7ed8e940 | |||
| de26a1adc4 | |||
| fff0a55aed | |||
| 8c20418939 | |||
| 34a9c49b17 | |||
| 1ccb1ded82 | |||
| eaac86bb1f | |||
| 9bbe570dfb | |||
| 7c731dd583 | |||
| 63c544b37f | |||
| cca30dea32 | |||
| e89a25dfc2 | |||
| c3f7752d09 | |||
| 721adfb3d6 | |||
| e7b6ebb54e | |||
| 620cb43697 | |||
| 84d4918224 | |||
| da19e35f83 | |||
| e4f4b8db98 | |||
| 6b53ede822 | |||
| 020c4bc4b8 | |||
| 6d7408bc5b | |||
| f0b0ca75da | |||
| f012eb6d2b | |||
| a9aa0dff00 | |||
| 8b2709ae33 | |||
| e2d5273ed8 | |||
| 975b402ff7 | |||
| 06ec510599 | |||
| 61c2b3dcbb | |||
| c0529d5225 | |||
| 2018954c98 | |||
| 7f8155840c | |||
| 7c7f1ca339 | |||
| dddd601fd2 | |||
| 1132547d91 | |||
| e724778fcf | |||
| 7ca46b27d1 | |||
| 27d0d1de30 | |||
| cb748fedaa | |||
| d90a267618 | |||
| 90d45024db | |||
| ae8471345d | |||
| 2abeee6dbe | |||
| fb8aa242c3 | |||
| d02fae40ad | |||
| 38ad6796a1 | |||
| c6a89378c6 | |||
| 1ecb8c32dc | |||
| 8f3eefe140 | |||
| c23dda00c0 | |||
| 26cc28ba41 | |||
| 192b136259 | |||
| 50bb1a9ba0 | |||
| d081c06a1c | |||
| 436c1785a8 | |||
| 2f0230c401 | |||
| a1f41b6295 | |||
| 8a8b69b79b | |||
| 8d1b7584f3 | |||
| f4bb46fb28 | |||
| 73a1fa2f84 | |||
| b89652f269 | |||
| 8a0a0ff09e | |||
| cbe3645a3a | |||
| 7af7bd2b4f | |||
| fea701c7b8 | |||
| b27ddf6aad | |||
| 80eaacd3a3 | |||
| 93f60414ac | |||
| ec8de77c54 | |||
| b59d94321a | |||
| 9166ecdede | |||
| 0adf440318 | |||
| efc0440d61 | |||
| d2beeff928 | |||
| fcb0ecb3df | |||
| 11cad9233f | |||
| 054edff989 | |||
| 75cf2f6740 | |||
| ad10e13501 | |||
| d14a5e89c3 | |||
| cb538d49fc | |||
| de85ce8d81 | |||
| 8311fcc691 | |||
| 0976d52cab | |||
| 8e92447f83 | |||
| ddde5f5c56 | |||
| cbf8e99b7b | |||
| cbd8191537 | |||
| 19ae6db3b1 | |||
| c038df0ba8 | |||
| de8bfae07a | |||
| d706a86250 | |||
| afec7ca0bc | |||
| 502074653c | |||
| fd8053ed65 | |||
| 12c9b16a55 | |||
| e7bee1a15f | |||
| 502e7576ae | |||
| 25d981a1a0 | |||
| f308ecaa72 | |||
| 92eabd4b92 | |||
| 0156f17eea | |||
| 49809407d5 | |||
| cfaf6ddd9d | |||
| 2448bc421a | |||
| 1bb7eeb88e | |||
| 41e7112fce | |||
| 9f79cc1890 | |||
| 8fad5e1f92 | |||
| 6769536ec7 | |||
| 50097d8c51 | |||
| 232963fffd | |||
| 8d0aab3e22 | |||
| 1311ab275a | |||
| a40268476c | |||
| 5c0fe68738 | |||
| 58ce37c65f | |||
| 7056d6f597 | |||
| 14fa5aff15 | |||
| c7bcbaed03 | |||
| 70202144a5 | |||
| 3c3b192f35 | |||
| 17f58cfeba | |||
| d78c2e3f67 | |||
| 386d2ae024 | |||
| 77df840e1f | |||
| 07b2ee00eb | |||
| 604d4b253a | |||
| c4e846e91e | |||
| 9ebfc2e1ae | |||
| 100b4169b1 | |||
| b5a58ea23f | |||
| 1f00befb3e | |||
| 0162c94d93 | |||
| 621de00ad3 | |||
| e9bd1e24c3 | |||
| f9986b0d8d | |||
| cbdd6192fe | |||
| 394ec6e788 | |||
| 7f86264983 | |||
| 42776e6396 | |||
| 9fc86390b8 | |||
| 7f202c503d | |||
| 9b5dfb9c20 | |||
| 92b2b131ba | |||
| 3a15f90405 | |||
| e0f5fffea4 | |||
| c114dc56ad | |||
| cf4ab5001e | |||
| 6ce1dba91e | |||
| 89e548cb41 | |||
| 98e393fd92 | |||
| 983b76f82a | |||
| 4320ecc26a | |||
| 90cbeed3f2 | |||
| b4020d4316 | |||
| ea3870aa6e | |||
| dda60e84d8 | |||
| d8b8c8e37c | |||
| 9d53cc611a | |||
| b3d71fc28c | |||
| 4653a6cf94 | |||
| 508b032665 | |||
| 83ba3625b0 | |||
| 8189375072 | |||
| 8e49b25e4d | |||
| 8b7546a7fb | |||
| faad6bbe42 | |||
| 69afd4bdab | |||
| bafe0953a1 | |||
| 1dbfc7ecc3 | |||
| 49e2e715b1 | |||
| 813993250a | |||
| 7c463d4852 | |||
| b924128f7c | |||
| 30a39ec7b0 | |||
| 3ee043ab13 | |||
| 1f281357aa | |||
| b20181aec5 | |||
| 63062475e2 | |||
| dcd6b194cb | |||
| afb6170927 | |||
| 44e2429b4c | |||
| af5251bf42 | |||
| 78d717bfef | |||
| a4494f566b | |||
| e0a28e73d2 | |||
| f374274550 | |||
| 73adf771c6 | |||
| 175765ba57 | |||
| e33be49adb | |||
| 04feb2a4fe | |||
| a80920a663 | |||
| 9a8309def9 | |||
| 437d3022eb | |||
| b56b90651a | |||
| f3189018bf | |||
| 08df06dc26 | |||
| 1443e62ccd | |||
| cf34e7c222 | |||
| e6fd986fc5 | |||
| ddca181222 | |||
| b841a4fda9 | |||
| 1a84aa2290 | |||
| 5a52fd9f3a | |||
| 78d3ac4d4e | |||
| 3e4b9056f4 | |||
| 486d719d52 | |||
| dc3a37fd98 | |||
| e8f709aa45 | |||
| d1787ecb24 | |||
| 0281e6cfeb | |||
| d54cf1741b | |||
| d5098eb264 | |||
| 63d6a617c1 | |||
| d9aab2cdc8 | |||
| 015ad6a1c6 | |||
| 6871f8f301 | |||
| 2542722888 | |||
| 51f3854609 | |||
| 9592300a09 | |||
| 2e47069bd1 | |||
| 834d512ba2 | |||
| 3b0764c478 | |||
| 7de933ebf8 | |||
| 9f4501f909 | |||
| e4c6910d41 | |||
| 9d1e799dd3 | |||
| 65ed299e18 | |||
| 921f4d4dce | |||
| e351761651 | |||
| f461c9e8f3 | |||
| 8a1d1bd41d | |||
| 5b99e3cc56 | |||
| 79012f45de | |||
| 61ff386854 | |||
| fe9038c685 | |||
| 1510694a4a | |||
| 6ca883ca0a | |||
| 749476efcc | |||
| 37dcf27b05 | |||
| 0353945dec | |||
| 9cccf7b4b0 | |||
| cafa6e4097 | |||
| 9b75124f16 | |||
| d4337b29b9 | |||
| a13dc78024 | |||
| e598012ab8 | |||
| 7df7f68291 | |||
| bb7b08a630 | |||
| 2ec7a30da1 | |||
| a9df918291 | |||
| 3348f8457a | |||
| 85b6f2f09c | |||
| 998ea1fa43 | |||
| 3992f3e6b0 | |||
| 1372eff3d8 | |||
| e0394bc056 | |||
| 778c084bd2 | |||
| 7108758182 | |||
| c1756aff12 | |||
| ff7cffe256 | |||
| e43b6dc882 | |||
| 4b1c7e7bd1 | |||
| 25afdc2a3a | |||
| 3dfdbe92c6 | |||
| 734b043bc7 | |||
| 59d5da3419 | |||
| 27e3886afc | |||
| ac9f1aa71c | |||
| 2ad0a865d5 | |||
| 15d667763c | |||
| 5141f0bcf3 | |||
| 6114bddb91 | |||
| fcc6fdfade | |||
| 0d6bdf7d94 | |||
| 5f5c16503a | |||
| 7505ddccb3 | |||
| 4f5a944834 | |||
| 10fc83b906 | |||
| a4ecb63da6 | |||
| 36928939d5 | |||
| 7e3dc3cb97 | |||
| 4dd3b646f2 | |||
| 6c14f4d0aa | |||
| d0f8eab6c9 | |||
| 2e73463ebc | |||
| 62ef357aff | |||
| 33d16b58f1 | |||
| 605e3bd630 | |||
| 6683a3a161 | |||
| 1deb7cf3c0 | |||
| f7f70c3643 | |||
| a126250c44 | |||
| b856056d24 | |||
| df662f7307 | |||
| 6249738563 | |||
| 6f7f8c5521 | |||
| a11a7598fc | |||
| a74a58ecfd | |||
| 4aeb6d4d53 | |||
| 46433b513d | |||
| c5642afeb0 | |||
| 5ec3c1c068 | |||
| 5e8f1f8232 | |||
| 330b203396 | |||
| 3527a25625 | |||
| 0c053bde9c | |||
| d3706f28ee | |||
| 006ff76290 | |||
| 69ae27e713 | |||
| 46e73a0765 | |||
| 95c929bdf7 | |||
| fd1efa3aec | |||
| feec9e898e | |||
| 1138343be8 | |||
| c47e8216d5 | |||
| e67ace042d | |||
| f2a3cbdbf6 | |||
| f753d67874 | |||
| 2d22bdf013 | |||
| e6b7c624af | |||
| a595d97675 | |||
| 3ecf51580d | |||
| 5fc18d212f | |||
| ca7dd48db3 | |||
| 190044ee8f | |||
| 2040a00a02 | |||
| caff869c81 | |||
| efbba16fea | |||
| 1c9dced21c | |||
| 43fb0b1169 | |||
| 8b6c91980f | |||
| 747c01370a | |||
| 50766db8c9 | |||
| 6cf28e30a7 | |||
| 0dd4f4c956 | |||
| 3746b5356e | |||
| 29e7ab4516 | |||
| 3480ab8216 | |||
| f40adefed8 | |||
| 8b6b7e54d6 | |||
| 84cbb13782 | |||
| 1de7abfc58 | |||
| 061aee27ad | |||
| 49268397de | |||
| 2e666b18ee | |||
| bd5cba2c72 | |||
| 3f74fb61e4 | |||
| 2426e966e5 | |||
| 31501f509c | |||
| 63ed34e568 | |||
| 71e088d8ca | |||
| 7468275123 | |||
| a641d8bb4c | |||
| 1328e16181 | |||
| 81ded02e19 | |||
| f3c39dd7b4 | |||
| a4b51545e6 | |||
| 3e6ab74cb4 | |||
| 4b3a5a4778 | |||
| b9663da3a3 | |||
| ebee0cb26b | |||
| b623acef48 | |||
| da0bd77930 | |||
| 884590e972 | |||
| d92b95c90f | |||
| 73f9f12489 | |||
| b3297f130e | |||
| 4ff3dda4d0 | |||
| e98119358d | |||
| 3bdb7539b5 | |||
| e3577910d1 | |||
| 5af49c32e2 | |||
| 7e6a0c9ad2 | |||
| 9cb596d6c5 | |||
| 35189a4e19 | |||
| 5f983678dc | |||
| 008f1bc36f | |||
| 1b2eadecf4 | |||
| 88a712eac9 | |||
| 47c8ca29a0 | |||
| e6b6416bc3 | |||
| 052d072ea5 | |||
| 559121da21 | |||
| 3fc4d0bf80 | |||
| b02aef6546 | |||
| a0b5740029 | |||
| aeb1b8c376 | |||
| 6f7941aa74 | |||
| 329ac39050 | |||
| efafd187d9 | |||
| c85c03a55e | |||
| 7d80cffd7f | |||
| ed1d2f3830 | |||
| a67ce6f8ee | |||
| 124322df4c | |||
| 455790a5b1 | |||
| 7765c2a550 | |||
| a0d2ba5c70 | |||
| 0a358a8643 | |||
| 638cf16a41 | |||
| 100a4df006 | |||
| 6f59bd3d6d | |||
| 8c35cda8e9 | |||
| a0db9fdcde | |||
| a0e2825acd | |||
| a0221784e7 | |||
| bd85f36dda | |||
| 60b28ea218 | |||
| 94a87229f1 | |||
| 0dbd1faaa6 | |||
| 200ff43096 | |||
| cb3ec0cb57 | |||
| 9b1e8798c0 | |||
| 62fdddc21e | |||
| 8e01e3b437 | |||
| c7c780d86d | |||
|
|
ec6b78fec7 | ||
| 273bcd9ffd | |||
| 7d96e010ed | |||
| bc899d5901 | |||
| 7e0a707db5 | |||
| 62a2fda287 | |||
| d3067f9547 | |||
| e3fe1566a4 | |||
| d15fa5d7fa | |||
| a213508f68 | |||
| 9220a6acb1 | |||
| f9830c2dfe | |||
| 582fe1b01b | |||
| 31dcdf1d7c | |||
| 6a83942761 | |||
| 23c444cdd0 | |||
| 89140b9bfd | |||
| ec15de1f6c | |||
| 49966fb6da | |||
| 5566b334e1 | |||
| e91cb56c09 | |||
| 46f3c70957 | |||
| 92f5996759 | |||
|
|
fcd583a063 | ||
| 31d1018267 | |||
| 7c41dfd9b3 | |||
| c7206aa602 | |||
| b7cbebdd05 | |||
| 76630bb781 | |||
| ac567396db | |||
| aa00c6eefb | |||
| 894e0c85ce | |||
| bec17eb0f3 | |||
| d016e5f21e | |||
| ea6f1be016 | |||
| 3dc9a6bb63 | |||
| 1c35c527a5 | |||
| c690057add | |||
| 70baaaca0f | |||
| b202fe478d | |||
| ade2927e8b | |||
| bb6c9ea5d1 | |||
| ad8081bba3 | |||
| 79006c509b | |||
| 8975afd18d | |||
| 6df7d43e73 | |||
| e844d29eae | |||
| 8f7e8e3661 | |||
| 2d69565d91 | |||
| 4ba470cf5d | |||
| 757f60070f | |||
| e1d352d019 | |||
| 1167b979d9 | |||
| 52f70f8829 | |||
| f9e71005a4 | |||
| 7974ca628c | |||
| 69ad531978 | |||
| 0dc2b2980b | |||
| d6eff86646 | |||
| fa385918cd | |||
| ded324e0f3 | |||
| 25ca3bb7cc | |||
| 6e6fa9c599 | |||
| 87f78bac52 | |||
| 933b4fb9bb | |||
|
|
e37566c35b | ||
| 0de81c9406 | |||
|
|
a061fb29be | ||
| 5dec9fe288 | |||
| 0b0e52e0c5 | |||
| 26a6a74bc6 | |||
| 762d43bd91 | |||
| c5937bf9b6 | |||
| a167ea6dd1 | |||
| 6c64366a42 | |||
| 06d11340a8 | |||
| b7c99f3fea | |||
| fd0ef3be5b | |||
| d6705e5a97 | |||
| 62bc8f9bee | |||
| 879abfdf7d | |||
| e2a406b551 | |||
| 79ea9fe230 | |||
| 10404c18e3 | |||
| 1c617bdbf3 | |||
|
|
f77fdb73d9 |
153 changed files with 9020 additions and 843 deletions
1
.envrc
Normal file
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
use flake
|
||||||
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -2,6 +2,12 @@
|
||||||
# Ignore build outputs from performing a nix-build or `nix build` command
|
# Ignore build outputs from performing a nix-build or `nix build` command
|
||||||
result
|
result
|
||||||
result-*
|
result-*
|
||||||
|
repl-result*
|
||||||
|
|
||||||
# I don't want to do a commit everytime that I want to update stuff
|
# ---> Kate
|
||||||
flake.lock
|
# Ignore kate's swap files
|
||||||
|
*.kate-swp
|
||||||
|
|
||||||
|
|
||||||
|
# ---> Direnv
|
||||||
|
.direnv
|
||||||
|
|
|
||||||
3
.helix/languages.toml
Normal file
3
.helix/languages.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[[language]]
|
||||||
|
name = "nix"
|
||||||
|
formatter = { command = "alejandra" }
|
||||||
33
.justfile
Normal file
33
.justfile
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Hide the default option from the recipes list
|
||||||
|
_default: print-recipes
|
||||||
|
|
||||||
|
# Escape codes for text formatting
|
||||||
|
bold := `tput bold`
|
||||||
|
normal := `tput sgr0`
|
||||||
|
|
||||||
|
find-results:
|
||||||
|
find . -name '*result*'
|
||||||
|
|
||||||
|
print-recipes:
|
||||||
|
@just --list
|
||||||
|
|
||||||
|
update:
|
||||||
|
nix flake update
|
||||||
|
|
||||||
|
@edit-secrets:
|
||||||
|
git clone ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets.git /tmp/secrets
|
||||||
|
sed -i 's\git+ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets\/tmp/secrets\g' flake.nix
|
||||||
|
nix flake update secrets
|
||||||
|
echo "{{bold}}All done!"
|
||||||
|
echo "{{normal}}Remember to restore flake.nix"
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
alias build := build-nixos
|
||||||
|
# Build a NixOS configuration
|
||||||
|
build-nixos host=`hostname`:
|
||||||
|
nom build .#nixosConfigurations.{{host}}.config.system.build.toplevel
|
||||||
|
|
||||||
|
# nix-diff with some parameters piped to less
|
||||||
|
nix-diff left right:
|
||||||
|
nix-diff --color=always --skip-already-compared {{left}} {{right}} | less -F
|
||||||
16
.vscode/settings.json
vendored
16
.vscode/settings.json
vendored
|
|
@ -1,7 +1,15 @@
|
||||||
{
|
{
|
||||||
"editor.detectIndentation": true,
|
"editor.detectIndentation": true,
|
||||||
"editor.insertSpaces": false,
|
"editor.insertSpaces": true,
|
||||||
"editor.tabSize": 2,
|
"editor.defaultFormatter": "jnoortheen.nix-ide",
|
||||||
"editor.renderWhitespace": "all",
|
"nix.formatterPath": "alejandra",
|
||||||
"editor.defaultFormatter": "jnoortheen.nix-ide"
|
"nix.serverSettings": {
|
||||||
|
"nil": {
|
||||||
|
"formatting": {
|
||||||
|
"command": [
|
||||||
|
"alejandra"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
608
flake.lock
generated
Normal file
608
flake.lock
generated
Normal file
|
|
@ -0,0 +1,608 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"agenix": {
|
||||||
|
"inputs": {
|
||||||
|
"darwin": [],
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-raw"
|
||||||
|
],
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762618334,
|
||||||
|
"narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"rev": "fcdea223397448d35d9b31f798479227e80183f6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"catppuccin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765990358,
|
||||||
|
"narHash": "sha256-l8x0gU8mnYaGMl+gWrsSHKBJlZWD8KXJfHTkRlFiPI0=",
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "de1b60ca45a578f59f7d84c8d338b346017b2161",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"catppuccin-konsole": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720277724,
|
||||||
|
"narHash": "sha256-d5+ygDrNl2qBxZ5Cn4U7d836+ZHz77m6/yxTIANd9BU=",
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "konsole",
|
||||||
|
"rev": "3b64040e3f4ae5afb2347e7be8a38bc3cd8c73a8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "konsole",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"copyparty": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766045858,
|
||||||
|
"narHash": "sha256-lsbdHVSc5EB2+XgKDbeG1DjLLY5DnzlKQIPV0uQu/bQ=",
|
||||||
|
"owner": "9001",
|
||||||
|
"repo": "copyparty",
|
||||||
|
"rev": "0e6b167167eaf04036df8576f1ea96bc116ea951",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "9001",
|
||||||
|
"repo": "copyparty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"eza-themes": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765813820,
|
||||||
|
"narHash": "sha256-WcwzKm2mi/tyA+zZCpyvTdrOrZ1R1ENA3t622SGzFas=",
|
||||||
|
"owner": "eza-community",
|
||||||
|
"repo": "eza-themes",
|
||||||
|
"rev": "1239cb1dd23fa8b70865550db77701b164a53cde",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "eza-community",
|
||||||
|
"repo": "eza-themes",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1678901627,
|
||||||
|
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flakey-profile": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712898590,
|
||||||
|
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
|
||||||
|
"owner": "lf-",
|
||||||
|
"repo": "flakey-profile",
|
||||||
|
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lf-",
|
||||||
|
"repo": "flakey-profile",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flakey-profile_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712898590,
|
||||||
|
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
|
||||||
|
"owner": "lf-",
|
||||||
|
"repo": "flakey-profile",
|
||||||
|
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lf-",
|
||||||
|
"repo": "flakey-profile",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1745494811,
|
||||||
|
"narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager-unstable": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-unstable-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765980955,
|
||||||
|
"narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765979862,
|
||||||
|
"narHash": "sha256-/r9/1KamvbHJx6I40H4HsSXnEcBAkj46ZwibhBx9kg0=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "d3135ab747fd9dac250ffb90b4a7e80634eacbe9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-25.11",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jovian": {
|
||||||
|
"inputs": {
|
||||||
|
"nix-github-actions": "nix-github-actions",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-unstable-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766067735,
|
||||||
|
"narHash": "sha256-cRC/rOYRtZNzc5y9nTccozyo/mkI4/1eFE33Aqgs+SQ=",
|
||||||
|
"owner": "Jovian-Experiments",
|
||||||
|
"repo": "Jovian-NixOS",
|
||||||
|
"rev": "34a16089be30f77ac9444907ec97c02b4b711896",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Jovian-Experiments",
|
||||||
|
"repo": "Jovian-NixOS",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765883751,
|
||||||
|
"narHash": "sha256-clrWX/t2swPGBVs50Yegq2HK3q5bbwOt3kWMsL7JIZM=",
|
||||||
|
"rev": "fc0073f54095f15ee272621d4746eb9f40946385",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/fc0073f54095f15ee272621d4746eb9f40946385.tar.gz?rev=fc0073f54095f15ee272621d4746eb9f40946385"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lix-module": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"flakey-profile": "flakey-profile",
|
||||||
|
"lix": [
|
||||||
|
"lix"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764519849,
|
||||||
|
"narHash": "sha256-XnNABKfIYKSimQVvKc9FnlC2H0LurOhd9MS6l0Z67lE=",
|
||||||
|
"rev": "6c95c0b6f73f831226453fc6905c216ab634c30f",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/6c95c0b6f73f831226453fc6905c216ab634c30f.tar.gz?rev=6c95c0b6f73f831226453fc6905c216ab634c30f"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lix-module-unstable": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_3",
|
||||||
|
"flakey-profile": "flakey-profile_2",
|
||||||
|
"lix": [
|
||||||
|
"lix"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-unstable-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764519849,
|
||||||
|
"narHash": "sha256-XnNABKfIYKSimQVvKc9FnlC2H0LurOhd9MS6l0Z67lE=",
|
||||||
|
"rev": "6c95c0b6f73f831226453fc6905c216ab634c30f",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/6c95c0b6f73f831226453fc6905c216ab634c30f.tar.gz?rev=6c95c0b6f73f831226453fc6905c216ab634c30f"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-flatpak": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1754777568,
|
||||||
|
"narHash": "sha256-0bBqT+3XncgF8F03RFAamw9vdf0VmaDoIJLTGkjfQZs=",
|
||||||
|
"owner": "gmodena",
|
||||||
|
"repo": "nix-flatpak",
|
||||||
|
"rev": "62f636b87ef6050760a8cb325cadb90674d1e23e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "gmodena",
|
||||||
|
"ref": "main",
|
||||||
|
"repo": "nix-flatpak",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-github-actions": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"jovian",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729697500,
|
||||||
|
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"ref": "matrix-name",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-impermanence": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737831083,
|
||||||
|
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "impermanence",
|
||||||
|
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "impermanence",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-index-db": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765267181,
|
||||||
|
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-index-db-unstable": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-unstable-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765267181,
|
||||||
|
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764440730,
|
||||||
|
"narHash": "sha256-ZlJTNLUKQRANlLDomuRWLBCH5792x+6XUJ4YdFRjtO4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "9154f4569b6cdfd3c595851a6ba51bfaa472d9f3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1763966396,
|
||||||
|
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-raw": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765838191,
|
||||||
|
"narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable-raw": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765779637,
|
||||||
|
"narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plasma-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager-unstable"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-unstable-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1763909441,
|
||||||
|
"narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "plasma-manager",
|
||||||
|
"rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "plasma-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"agenix": "agenix",
|
||||||
|
"catppuccin": "catppuccin",
|
||||||
|
"catppuccin-konsole": "catppuccin-konsole",
|
||||||
|
"copyparty": "copyparty",
|
||||||
|
"eza-themes": "eza-themes",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"home-manager-unstable": "home-manager-unstable",
|
||||||
|
"jovian": "jovian",
|
||||||
|
"lix": "lix",
|
||||||
|
"lix-module": "lix-module",
|
||||||
|
"lix-module-unstable": "lix-module-unstable",
|
||||||
|
"nix-flatpak": "nix-flatpak",
|
||||||
|
"nix-impermanence": "nix-impermanence",
|
||||||
|
"nix-index-db": "nix-index-db",
|
||||||
|
"nix-index-db-unstable": "nix-index-db-unstable",
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
"nixpkgs-raw": "nixpkgs-raw",
|
||||||
|
"nixpkgs-unstable-raw": "nixpkgs-unstable-raw",
|
||||||
|
"plasma-manager": "plasma-manager",
|
||||||
|
"secrets": "secrets",
|
||||||
|
"sops-nix": "sops-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"secrets": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766143747,
|
||||||
|
"narHash": "sha256-bG4QoCZLUDrubYFuRvxiXhycBD3R+UjrzXrNZ+qRnio=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "8921f23861a82f0f8d706c276bc738ca72c053b1",
|
||||||
|
"revCount": 41,
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sops-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-unstable-raw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765836173,
|
||||||
|
"narHash": "sha256-hWRYfdH2ONI7HXbqZqW8Q1y9IRbnXWvtvt/ONZovSNY=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"rev": "443a7f2e7e118c4fc63b7fae05ab3080dd0e5c63",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
255
flake.nix
Executable file → Normal file
255
flake.nix
Executable file → Normal file
|
|
@ -2,81 +2,236 @@
|
||||||
description = "Configuration for Everest";
|
description = "Configuration for Everest";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-23.05";
|
secrets = {
|
||||||
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
url = "git+ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
nixpkgs-raw.url = "nixpkgs/nixos-25.11";
|
||||||
|
nixpkgs-unstable-raw.url = "nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
agenix = {
|
agenix = {
|
||||||
url = "github:ryantm/agenix";
|
url = "github:ryantm/agenix";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs-raw";
|
||||||
darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies
|
darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
sops-nix = {
|
||||||
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
url = "github:Mic92/sops-nix";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||||
|
|
||||||
nix-impermanence.url = "github:nix-community/impermanence";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {nixpkgs, agenix, home-manager, nixpkgs-unstable, nix-impermanence, ... }: {
|
home-manager = {
|
||||||
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell {
|
url = "github:nix-community/home-manager/release-25.11";
|
||||||
name = "Environment for toast's nixos configurations";
|
inputs.nixpkgs.follows = "nixpkgs-raw";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager-unstable = {
|
||||||
|
url = "github:nix-community/home-manager/";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
|
||||||
|
jovian = {
|
||||||
|
url = "github:Jovian-Experiments/Jovian-NixOS";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-impermanence.url = "github:nix-community/impermanence";
|
||||||
|
|
||||||
|
copyparty.url = "github:9001/copyparty";
|
||||||
|
copyparty.inputs.nixpkgs.follows = "nixpkgs-raw";
|
||||||
|
|
||||||
|
/*
|
||||||
|
These are the same input, just following different nixpkgs versions
|
||||||
|
This avoids some wierdness when using one that follows unstable on a stable nixpkgs
|
||||||
|
*/
|
||||||
|
nix-index-db = {
|
||||||
|
url = "github:Mic92/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-raw";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-index-db-unstable = {
|
||||||
|
url = "github:Mic92/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||||
|
};
|
||||||
|
|
||||||
|
plasma-manager = {
|
||||||
|
url = "github:nix-community/plasma-manager/";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||||
|
inputs.home-manager.follows = "home-manager-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-flatpak.url = "github:gmodena/nix-flatpak/main";
|
||||||
|
|
||||||
|
catppuccin.url = "github:catppuccin/nix";
|
||||||
|
|
||||||
|
lix-module = {
|
||||||
|
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-raw";
|
||||||
|
inputs.lix.follows = "lix";
|
||||||
|
};
|
||||||
|
lix-module-unstable = {
|
||||||
|
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
|
||||||
|
inputs.lix.follows = "lix";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Non flake inputs / random things
|
||||||
|
lix = {
|
||||||
|
url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
eza-themes = {
|
||||||
|
url = "github:eza-community/eza-themes";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
catppuccin-konsole = {
|
||||||
|
url = "github:catppuccin/konsole";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {...} @ inputs:
|
||||||
|
with inputs;
|
||||||
|
# Patch nixpkgs
|
||||||
|
# https://ertt.ca/nix/patch-nixpkgs/
|
||||||
|
let
|
||||||
|
nixpkgs-unstable-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches {
|
||||||
|
name = "patched-nixpkgs-unstable";
|
||||||
|
src = nixpkgs-unstable-raw;
|
||||||
|
patches = [
|
||||||
|
./nixpkgs-patches/pr471291.patch
|
||||||
|
./nixpkgs-patches/revert-mangohud-update.patch
|
||||||
|
];
|
||||||
|
};
|
||||||
|
nixpkgs-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches {
|
||||||
|
name = "patched-nixpkgs";
|
||||||
|
src = nixpkgs-raw;
|
||||||
|
patches = [
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# https://discourse.nixos.org/t/proper-way-of-applying-patch-to-system-managed-via-flake/21073/26
|
||||||
|
nixpkgs-unstable = (import "${nixpkgs-unstable-patched}/flake.nix").outputs {self = inputs.nixpkgs-unstable-raw;};
|
||||||
|
nixpkgs = (import "${nixpkgs-patched}/flake.nix").outputs {self = inputs.nixpkgs-raw;};
|
||||||
|
in {
|
||||||
|
formatter.x86_64-linux = nixpkgs-unstable.legacyPackages.x86_64-linux.alejandra;
|
||||||
|
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShellNoCC {
|
||||||
|
name = "toast-devshell";
|
||||||
# The agenix cli is not needed to activate a configuration, so instead of installing it
|
# The agenix cli is not needed to activate a configuration, so instead of installing it
|
||||||
# I'll just add it to de devShell, since that's the only real time I'm going to use it.
|
# I'll just add it to de devShell, since that's the only real time I'm going to use it.
|
||||||
packages = [
|
packages = with nixpkgs.legacyPackages.x86_64-linux; [
|
||||||
agenix.packages.x86_64-linux.default
|
agenix.packages.x86_64-linux.default
|
||||||
nixpkgs.legacyPackages.x86_64-linux.git
|
git
|
||||||
|
nvd
|
||||||
|
nix-output-monitor
|
||||||
|
nix-diff
|
||||||
|
just
|
||||||
|
alejandra
|
||||||
];
|
];
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
export PS1="$PS1(toast-configs)> "
|
export PS1="$PS1(toast-configs)> "
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
overlays.default = final: prev: {
|
||||||
nixosConfigurations = {
|
kasane-teto-cursor = final.callPackage ./pkgs/kasane-teto-cursor {};
|
||||||
Archie = nixpkgs-unstable.lib.nixosSystem {
|
kame-editor = final.callPackage ./pkgs/kame-editor {};
|
||||||
system = "x86_64-linux";
|
kame-tools = final.callPackage ./pkgs/kame-tools {};
|
||||||
pkgs = import nixpkgs-unstable {
|
rstmcpp = final.callPackage ./pkgs/rstmcpp {};
|
||||||
system = "x86_64-linux";
|
|
||||||
config = { allowUnfree = true; }; # TODO: Find why this doesn't work
|
|
||||||
overlays =
|
|
||||||
let
|
|
||||||
discordOverlay = self: super: {
|
|
||||||
discord = super.discord.override {
|
|
||||||
withOpenASAR = true;
|
|
||||||
withVencord = true;
|
|
||||||
};
|
};
|
||||||
|
packages = {
|
||||||
|
x86_64-linux = with import nixpkgs-unstable-raw {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
overlays = [self.overlays.default];
|
||||||
|
}; {
|
||||||
|
inherit kasane-teto-cursor kame-editor kame-tools rstmcpp;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nixosConfigurations = let
|
||||||
|
mkSystems = hosts:
|
||||||
|
builtins.mapAttrs (
|
||||||
|
host: settings: let
|
||||||
|
pkgs =
|
||||||
|
if isStable
|
||||||
|
then nixpkgs
|
||||||
|
else nixpkgs-unstable;
|
||||||
|
isStable = (settings ? stable) && (settings.stable == true);
|
||||||
|
in
|
||||||
|
mkSystem host settings.modules pkgs isStable
|
||||||
|
)
|
||||||
|
hosts;
|
||||||
|
mkSystem = host: modules: pkgs: stable:
|
||||||
|
pkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
flakeSelf = self;
|
||||||
|
};
|
||||||
|
lib = import ./lib {nixpkgs = pkgs;};
|
||||||
|
modules =
|
||||||
|
[
|
||||||
|
agenix.nixosModules.default
|
||||||
|
sops-nix.nixosModules.sops
|
||||||
|
(
|
||||||
|
if stable
|
||||||
|
then home-manager
|
||||||
|
else home-manager-unstable
|
||||||
|
)
|
||||||
|
.nixosModules
|
||||||
|
.home-manager
|
||||||
|
(
|
||||||
|
if stable
|
||||||
|
then nix-index-db
|
||||||
|
else nix-index-db-unstable
|
||||||
|
)
|
||||||
|
.nixosModules
|
||||||
|
.nix-index
|
||||||
|
catppuccin.nixosModules.catppuccin
|
||||||
|
(
|
||||||
|
if stable
|
||||||
|
then lix-module
|
||||||
|
else lix-module-unstable
|
||||||
|
)
|
||||||
|
.nixosModules
|
||||||
|
.default
|
||||||
|
./roles/common
|
||||||
|
(./machines + "/${host}")
|
||||||
|
]
|
||||||
|
++ modules;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
[ discordOverlay ];
|
mkSystems {
|
||||||
};
|
Archie.modules = [
|
||||||
modules = [
|
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||||
# Needed for nix-index
|
|
||||||
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
|
||||||
agenix.nixosModules.default
|
|
||||||
home-manager.nixosModule
|
|
||||||
./roles/common
|
|
||||||
./roles/desktop
|
./roles/desktop
|
||||||
./roles/kde
|
./roles/kde
|
||||||
./machines/Archie
|
./roles/gaming
|
||||||
];
|
];
|
||||||
};
|
SurfaceGo.modules = [
|
||||||
|
nixos-hardware.nixosModules.microsoft-surface-go
|
||||||
Everest = nixpkgs.lib.nixosSystem {
|
./roles/desktop
|
||||||
system = "x86_64-linux";
|
./roles/kde
|
||||||
pkgs = import nixpkgs {
|
./machines/SurfaceGo
|
||||||
system = "x86_64-linux";
|
];
|
||||||
config = { allowUnfree = false; }; # TODO: Find why this doesn't work
|
SteamDeck.modules = [
|
||||||
};
|
jovian.nixosModules.default
|
||||||
|
./roles/desktop
|
||||||
|
./roles/kde
|
||||||
|
./roles/gaming
|
||||||
|
];
|
||||||
|
WinMax2.modules = [
|
||||||
|
nixos-hardware.nixosModules.gpd-win-max-2-2023
|
||||||
|
./roles/desktop
|
||||||
|
./roles/kde
|
||||||
|
./roles/gaming
|
||||||
|
];
|
||||||
|
Everest = {
|
||||||
|
stable = true;
|
||||||
modules = [
|
modules = [
|
||||||
# Needed for nix-index
|
copyparty.nixosModules.default
|
||||||
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
|
||||||
agenix.nixosModules.default
|
|
||||||
home-manager.nixosModule
|
|
||||||
./roles/common
|
|
||||||
./roles/server
|
./roles/server
|
||||||
./machines/Everest
|
|
||||||
./openbox.nix
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
10
lib/default.nix
Normal file
10
lib/default.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{nixpkgs}:
|
||||||
|
nixpkgs.lib.extend (final: prev: {
|
||||||
|
toast = let
|
||||||
|
importLib = file: import file {lib = final;};
|
||||||
|
in {
|
||||||
|
patches = importLib ./patches.nix;
|
||||||
|
networkManager = importLib ./networkManager.nix;
|
||||||
|
syncthing = importLib ./syncthing.nix;
|
||||||
|
};
|
||||||
|
})
|
||||||
23
lib/networkManager.nix
Normal file
23
lib/networkManager.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{lib}: {
|
||||||
|
/**
|
||||||
|
Make a NetworkManager wifi profile, to be used with ensureProfiles
|
||||||
|
*/
|
||||||
|
mkWifiProfile = {
|
||||||
|
id,
|
||||||
|
ssid,
|
||||||
|
priority ? 0,
|
||||||
|
wifi-security,
|
||||||
|
}: {
|
||||||
|
connection = {
|
||||||
|
inherit id;
|
||||||
|
type = "wifi";
|
||||||
|
autoconnect-priority = priority;
|
||||||
|
};
|
||||||
|
ipv4.method = "auto";
|
||||||
|
wifi = {
|
||||||
|
mode = "infrastructure";
|
||||||
|
inherit ssid;
|
||||||
|
};
|
||||||
|
inherit wifi-security;
|
||||||
|
};
|
||||||
|
}
|
||||||
13
lib/patches.nix
Normal file
13
lib/patches.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{lib}: {
|
||||||
|
/**
|
||||||
|
Get a list of patches from a path.
|
||||||
|
*/
|
||||||
|
patchesInPath = path: let
|
||||||
|
pathContents = builtins.readDir path;
|
||||||
|
filter = name: value:
|
||||||
|
(value == "regular" || value == "symlink") && lib.strings.hasSuffix ".patch" name;
|
||||||
|
filteredContents = lib.attrsets.filterAttrs filter pathContents;
|
||||||
|
patchFilenames = builtins.attrNames filteredContents;
|
||||||
|
in
|
||||||
|
builtins.map (value: lib.path.append path value) patchFilenames;
|
||||||
|
}
|
||||||
5
lib/syncthing.nix
Normal file
5
lib/syncthing.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{lib}: let
|
||||||
|
data = import ./../syncthing.nix;
|
||||||
|
in {
|
||||||
|
devices = builtins.getAttr "devices" data;
|
||||||
|
}
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
# Edit this configuration file to define what should be installed on
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running `nixos-help`).
|
# and in the NixOS manual (accessible by running `nixos-help`).
|
||||||
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
# Use grub boot loader
|
# Use grub boot loader
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
systemd-boot.enable = false;
|
systemd-boot.enable = false;
|
||||||
|
|
@ -18,34 +19,17 @@
|
||||||
};
|
};
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
|
||||||
|
|
||||||
networking.hostName = "Archie"; # Define your hostname.
|
networking.hostName = "Archie"; # Define your hostname.
|
||||||
networking.networkmanager.enable = true; # Enable networking
|
|
||||||
|
|
||||||
# Allow unfree packages
|
# Allow unfree packages
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "Europe/Madrid";
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
# Configure network proxy if necessary
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
console = {
|
|
||||||
keyMap = "es";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
# Enable the pipewire sound server
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
# services.xserver.layout = "us";
|
# services.xserver.layout = "us";
|
||||||
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
||||||
|
|
@ -60,15 +44,7 @@
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
# services.xserver.libinput.enable = true;
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
hardware.bluetooth.enable = true;
|
||||||
users.users.toast = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
|
||||||
packages = with pkgs; [
|
|
||||||
firefox
|
|
||||||
tree
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
# List packages installed in system profile. To search, run:
|
||||||
# $ nix search wget
|
# $ nix search wget
|
||||||
|
|
@ -100,6 +76,4 @@
|
||||||
# (/run/current-system/configuration.nix). This is useful in case you
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
# accidentally delete configuration.nix.
|
# accidentally delete configuration.nix.
|
||||||
# system.copySystemConfiguration = true;
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,84 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
config,
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
# Enable support for the Xbox One wireless dongle
|
||||||
boot.initrd.kernelModules = [ ];
|
hardware.xone.enable = true;
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "nvme" "sd_mod"];
|
||||||
|
boot.initrd.kernelModules = ["amdgpu"];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = ["kvm-amd"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
boot.extraModprobeConfig = "options snd_hda_intel power_save=0";
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=@root" "compress=zstd" ];
|
options = ["subvol=@root"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nix" =
|
fileSystems."/nix" = {
|
||||||
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=@nix" "compress=zstd" ];
|
options = ["subvol=@nix"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=@boot" "compress=zstd" ];
|
options = ["subvol=@boot"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" =
|
fileSystems."/boot/efi" = {
|
||||||
{ device = "/dev/disk/by-uuid/FB87-4CBC";
|
device = "/dev/disk/by-uuid/FB87-4CBC";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
/*
|
||||||
|
Mount the root subvolume of the SSD
|
||||||
|
This is helpful for getting things from
|
||||||
|
my old Arch install, as well as for running btdu
|
||||||
|
*/
|
||||||
|
"/mnt/ssd" = {
|
||||||
|
device = config.fileSystems."/".device;
|
||||||
|
fsType = config.fileSystems."/".fsType;
|
||||||
|
options = ["subvolid=5" "ro"];
|
||||||
|
};
|
||||||
|
"/mnt/hdd" = {
|
||||||
|
# device = "/dev/disk/by-id/ata-SAMSUNG_HD103SI_S1Y5J9CZA19763-part1";
|
||||||
|
label = "Archie\\x20HDD";
|
||||||
|
fsType = "bcachefs";
|
||||||
|
options = ["x-systemd.automount"];
|
||||||
|
};
|
||||||
|
"/mnt/windows" = {
|
||||||
|
device = "/dev/disk/by-uuid/B61AFDAC1AFD6A2F";
|
||||||
|
fsType = "ntfs3";
|
||||||
|
neededForBoot = false;
|
||||||
|
options = ["noauto" "windows_names"];
|
||||||
|
};
|
||||||
|
"/home" = {
|
||||||
|
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@home"];
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@persist"];
|
||||||
|
neededForBoot = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
# Edit this configuration file to define what should be installed on
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
{lib, ...}: {
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.timeout = 5;
|
boot.loader.timeout = 5;
|
||||||
|
|
@ -23,81 +20,41 @@
|
||||||
dhcpcd.enable = false;
|
dhcpcd.enable = false;
|
||||||
interfaces.eno1 = {
|
interfaces.eno1 = {
|
||||||
wakeOnLan.enable = true;
|
wakeOnLan.enable = true;
|
||||||
ipv4.addresses = [ {
|
ipv4.addresses = [
|
||||||
address = "192.168.0.160";
|
{
|
||||||
|
address = "192.168.1.160";
|
||||||
prefixLength = 24;
|
prefixLength = 24;
|
||||||
} ];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
defaultGateway = "192.168.0.1";
|
# I use networkd, so I need to declare the interface for the default gateway
|
||||||
nameservers = [ "8.8.8.8" ];
|
defaultGateway = {
|
||||||
|
address = "192.168.1.1";
|
||||||
|
interface = "eno1";
|
||||||
};
|
};
|
||||||
|
nameservers = ["9.9.9.9"];
|
||||||
|
};
|
||||||
|
systemd.network.wait-online.extraArgs = ["--dns"];
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "Europe/Madrid";
|
time.timeZone = "Europe/Madrid";
|
||||||
|
services.automatic-timezoned.enable = lib.mkForce false;
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "es_ES.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "es_ES.UTF-8";
|
|
||||||
LC_MEASUREMENT = "es_ES.UTF-8";
|
|
||||||
LC_MONETARY = "es_ES.UTF-8";
|
|
||||||
LC_NAME = "es_ES.UTF-8";
|
|
||||||
LC_NUMERIC = "es_ES.UTF-8";
|
|
||||||
LC_PAPER = "es_ES.UTF-8";
|
|
||||||
LC_TELEPHONE = "es_ES.UTF-8";
|
|
||||||
LC_TIME = "es_ES.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver = {
|
|
||||||
layout = "es";
|
|
||||||
xkbVariant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure console keymap
|
|
||||||
console.keyMap = "es";
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
users.users.toast = {
|
users.users.toast = {
|
||||||
isNormalUser = true;
|
extraGroups = ["networkmanager" "transmission"];
|
||||||
description = "Toast";
|
|
||||||
extraGroups = [ "networkmanager" "wheel" "transmission"];
|
|
||||||
packages = with pkgs; [];
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2bOVmxUNvg9qFv9DlzMmTRlzcNsyNq1F1wBuAXySwsWAzHGaO+WGdSCINxW3k2ccXn7M/o1r89LeTzRzi8sWQYCpBaIqYVszM/r7SvTS4gASyKhM6lNlyUEPOnvCXH7rdtF+fjoA1TJPv7GBk78QRhGh+eVO3qhY1m++5C1CPFlyrc6sSfgIBQJ5GQZFl/7YEgsrPo+M+0Sd7LkaCOyNmJA0Wi0BA3bbf5sJhrZVMMg/p7w+eMphz2kd1VTVjW3yeMq9zLCiu4SOTBNGCMEvKIdUZbQ83lNrqO2z1/3T1bDwJgpz3xusfkNCeNJSmhfFw5ydHEUp/9jshq38WmulKAMw2Kl/Zed62AVU7Ux7YjUkZkWvo8i3eXuLUxoG891S7cWV1/ijs9QMajOLLT14FG7RbzUYYaYlx+/iNGji9d4sp9/oMYyO45TMe+vEezFSBygP7TY0QFOr4xTi49ZRQFsszbFnGRv+k3wVKoGoeNt0xWB8pBEPFtaeHJpQyJX8= id_rsa_moon"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOeu3crGqtxwaqgoQPt5mWlC8+PL/Icvcvo0MBAaK80L Key for work laptop"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
|
||||||
|
boot.tmp.useTmpfs = false;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
backupFileExtension = "backup";
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
users.toast = {config, ...}: {
|
users.toast = {config, ...}: {
|
||||||
home = {
|
home = {
|
||||||
stateVersion = "23.05";
|
|
||||||
file = {
|
file = {
|
||||||
# This symlinks the Transmission downloads folder into my user's downloads folder for easy access
|
# This symlinks the Transmission downloads folder into my user's downloads folder for easy access
|
||||||
"Downloads/Transmission".source = config.lib.file.mkOutOfStoreSymlink "/var/lib/transmission/Downloads";
|
"Downloads/Transmission".source = config.lib.file.mkOutOfStoreSymlink "/var/lib/transmission/Downloads";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
xdg = {
|
|
||||||
#enable = true;
|
|
||||||
userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
publicShare = null; # Disable the public folder
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# 8384 is syncthing's webui, and 22000 is syncthing related too
|
|
||||||
# No idea what 5201 and 21027 do tho
|
|
||||||
networking.firewall.allowedTCPPorts = [ 5201 8384 22000 ];
|
|
||||||
networking.firewall.allowedUDPPorts = [ 5201 22000 21027];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
config,
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
|
boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
|
||||||
|
|
@ -13,13 +16,42 @@
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = ["kvm-intel"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems = {
|
||||||
{ device = "/dev/disk/by-label/Everest";
|
"/" = {
|
||||||
|
device = "/dev/disk/by-label/Everest";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
|
options = ["compress=zstd" "subvol=@"];
|
||||||
|
};
|
||||||
|
"/nix" = {
|
||||||
|
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@nix-server"];
|
||||||
|
};
|
||||||
|
"/home" = {
|
||||||
|
device = "/dev/disk/by-label/Everest";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["compress=zstd" "subvol=@home"];
|
||||||
|
};
|
||||||
|
"/mnt/hdd" = {
|
||||||
|
device = "/dev/disk/by-label/Everest";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["compress=zstd" "subvol=/" "ro"];
|
||||||
|
};
|
||||||
|
"/mnt/ssd" = {
|
||||||
|
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=/" "ro"];
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
device = "/dev/disk/by-label/Everest";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["compress=zstd" "subvol=@persist"];
|
||||||
|
neededForBoot = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" =
|
fileSystems."/boot/efi" = {
|
||||||
{ device = "/dev/disk/by-label/Boot";
|
device = "/dev/disk/by-uuid/FB87-4CBC";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
103
machines/SteamDeck/configuration.nix
Executable file
103
machines/SteamDeck/configuration.nix
Executable file
|
|
@ -0,0 +1,103 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running `nixos-help`).
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Use grub boot loader
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot.enable = false;
|
||||||
|
grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "nodev";
|
||||||
|
efiSupport = true;
|
||||||
|
# No other OS on here :P
|
||||||
|
useOSProber = false;
|
||||||
|
};
|
||||||
|
efi.efiSysMountPoint = config.fileSystems."efi_boot_partition".mountPoint;
|
||||||
|
};
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = "SteamDeck"; # Define your hostname.
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
jovian = {
|
||||||
|
devices.steamdeck = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
# Steam Deck UI settings
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
autoStart = true;
|
||||||
|
user = "toast";
|
||||||
|
desktopSession = "plasma";
|
||||||
|
};
|
||||||
|
decky-loader = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.displayManager.sddm.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
# Enable bluetooth
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.layout = "us";
|
||||||
|
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# sound.enable = true;
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
|
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
|
||||||
|
boot.tmp.useTmpfs = false;
|
||||||
|
|
||||||
|
environment.systemPackages = [pkgs.steamdeck-firmware pkgs.steamdeck-hw-theme];
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
# environment.systemPackages = with pkgs; [
|
||||||
|
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
# wget
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
}
|
||||||
6
machines/SteamDeck/default.nix
Executable file
6
machines/SteamDeck/default.nix
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
79
machines/SteamDeck/hardware-configuration.nix
Executable file
79
machines/SteamDeck/hardware-configuration.nix
Executable file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# \x20 is the escape code for a space
|
||||||
|
ssdLabel = ''Deck\\x20SSD'';
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable support for the Xbox One wireless dongle
|
||||||
|
hardware.xone.enable = true;
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usb_storage" "usbhid" "sd_mod" "sdhci_pci"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = ["kvm-amd"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
"efi_boot_partition" = {
|
||||||
|
mountPoint = "/boot/efi";
|
||||||
|
label = "deckboot";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
Mount the root subvolume of the SSD
|
||||||
|
This is helpful for getting things from
|
||||||
|
my old Arch install, as well as for running btdu
|
||||||
|
*/
|
||||||
|
"btrfs_root_subvolume" = {
|
||||||
|
mountPoint = "/mnt/ssd";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvolid=5" "ro"];
|
||||||
|
};
|
||||||
|
"btrfs_root" = {
|
||||||
|
mountPoint = "/";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@" "compress=zstd"];
|
||||||
|
};
|
||||||
|
"btrfs_persist" = {
|
||||||
|
mountPoint = "/persist";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@persist"];
|
||||||
|
neededForBoot = true;
|
||||||
|
};
|
||||||
|
"btrfs_boot" = {
|
||||||
|
mountPoint = "/boot";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@boot" "compress=zstd"];
|
||||||
|
};
|
||||||
|
"btrfs_home" = {
|
||||||
|
mountPoint = "/home";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@home" "compress=zstd"];
|
||||||
|
};
|
||||||
|
"btrfs_nix" = {
|
||||||
|
mountPoint = "/nix";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@nix" "compress=zstd"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
92
machines/SurfaceGo/configuration.nix
Normal file
92
machines/SurfaceGo/configuration.nix
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running `nixos-help`).
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
# Use grub boot loader
|
||||||
|
systemd-boot.enable = false;
|
||||||
|
grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "nodev";
|
||||||
|
efiSupport = true;
|
||||||
|
enableCryptodisk = true;
|
||||||
|
};
|
||||||
|
efi = {
|
||||||
|
efiSysMountPoint = "/boot/efi";
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# I need systemd for tpm luks unlocking
|
||||||
|
initrd.systemd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
security.tpm2.enable = true;
|
||||||
|
|
||||||
|
networking.hostName = "SurfaceGo"; # Define your hostname.
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.layout = "us";
|
||||||
|
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
console = {
|
||||||
|
# The kernel doesn't detect the scree as being HiDPI, so I need to use a bigger font
|
||||||
|
font = "ter-i32n";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# sound.enable = true;
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
# environment.systemPackages = with pkgs; [
|
||||||
|
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
# wget
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# The surface kernel sometimes fails to suspend/shutdown and I got tired of fighting it
|
||||||
|
boot.kernelPackages = lib.mkForce pkgs.linuxPackages;
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
}
|
||||||
6
machines/SurfaceGo/default.nix
Normal file
6
machines/SurfaceGo/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
50
machines/SurfaceGo/hardware-configuration.nix
Normal file
50
machines/SurfaceGo/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usbhid" "rtsx_pci_sdmmc"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = ["kvm-intel"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."SSD".device = "/dev/disk/by-uuid/1d8d7578-d3a1-4ea0-90ad-4257266a6caf";
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@" "compress=zstd"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@boot" "compress=zstd"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@nix" "compress=zstd"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "/dev/disk/by-uuid/19a52b40-3ff6-47ff-9402-18d8b289643e";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@home" "compress=zstd"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot/efi" = {
|
||||||
|
device = "/dev/disk/by-uuid/EC76-201F";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
141
machines/WinMax2/configuration.nix
Executable file
141
machines/WinMax2/configuration.nix
Executable file
|
|
@ -0,0 +1,141 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running `nixos-help`).
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = false;
|
||||||
|
limine = {
|
||||||
|
enable = true;
|
||||||
|
enableEditor = true;
|
||||||
|
secureBoot.enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
timeout: 3
|
||||||
|
'';
|
||||||
|
style = {
|
||||||
|
graphicalTerminal.font.scale = "2x2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
efi = {
|
||||||
|
efiSysMountPoint = config.fileSystems."efi_boot_partition".mountPoint;
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
I use luks, and the systemd initrd works better for this
|
||||||
|
Both for tpm unlocking (soon) and for plymouth
|
||||||
|
*/
|
||||||
|
initrd.systemd.enable = true;
|
||||||
|
# Plymouth doesn't support fractional scaling :(
|
||||||
|
plymouth.extraConfig = "DeviceScale=2";
|
||||||
|
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
};
|
||||||
|
catppuccin.limine.enable = true;
|
||||||
|
|
||||||
|
networking.hostName = "WinMax2"; # Define your hostname.
|
||||||
|
|
||||||
|
# Sleep fixes
|
||||||
|
boot.kernelParams = ["rtc_cmos.use_acpi_alarm=1" "panic=5"];
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="GXTP7385:00", ATTR{power/wakeup}="disabled"
|
||||||
|
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="PNP0C50:00", ATTR{power/wakeup}="disabled"
|
||||||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="2541", ATTR{idProduct}=="9711", ATTR{remove}="1"
|
||||||
|
'';
|
||||||
|
|
||||||
|
services = {
|
||||||
|
hardware.bolt.enable = true;
|
||||||
|
handheld-daemon = {
|
||||||
|
enable = true;
|
||||||
|
ui = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
user = "toast";
|
||||||
|
};
|
||||||
|
# Input plumber conflicts with hhd, and it doesn't let me use mouse mode
|
||||||
|
inputplumber.enable = lib.mkForce false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
services = {
|
||||||
|
xserver.xkb.layout = lib.mkForce "us";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable bluetooth
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.layout = "us";
|
||||||
|
# services.xserver.xkbOptions = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
programs.plasma.input.keyboard.layouts = lib.mkForce [{layout = "us";} {layout = "es";}];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# sound.enable = true;
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
|
# Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs
|
||||||
|
boot.tmp.useTmpfs = false;
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
# environment.systemPackages = with pkgs; [
|
||||||
|
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
# wget
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
specialisation.bootDebug.configuration = {
|
||||||
|
boot.kernelParams = [
|
||||||
|
"systemd.debug-shell=1"
|
||||||
|
"systemd.log_level=debug"
|
||||||
|
"systemd.log_target=kmsg"
|
||||||
|
"log_buf_len=1M"
|
||||||
|
"printk.devkmsg=on"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
7
machines/WinMax2/default.nix
Executable file
7
machines/WinMax2/default.nix
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./remote-builder.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
87
machines/WinMax2/hardware-configuration.nix
Executable file
87
machines/WinMax2/hardware-configuration.nix
Executable file
|
|
@ -0,0 +1,87 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# \x20 is the escape code for a space
|
||||||
|
ssdLabel = ''Win\\x20Max\\x202\\x20SSD'';
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usbhid" "sdhci_pci"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = ["kvm-amd"];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
boot.initrd.luks.devices = {
|
||||||
|
"SSD".device = "/dev/disk/by-label/wm2-enc";
|
||||||
|
"swap".device = "/dev/disk/by-label/wm2-swap";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
"efi_boot_partition" = {
|
||||||
|
mountPoint = "/boot";
|
||||||
|
label = "winmax2boot";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
Mount the root subvolume of the SSD
|
||||||
|
This is helpful for getting things from
|
||||||
|
my old Arch install, as well as for running btdu
|
||||||
|
*/
|
||||||
|
"btrfs_root_subvolume" = {
|
||||||
|
mountPoint = "/mnt/ssd";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvolid=5" "ro"];
|
||||||
|
};
|
||||||
|
"btrfs_root" = {
|
||||||
|
mountPoint = "/";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@"];
|
||||||
|
};
|
||||||
|
"btrfs_persist" = {
|
||||||
|
mountPoint = "/persist";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@persist"];
|
||||||
|
neededForBoot = true;
|
||||||
|
};
|
||||||
|
"btrfs_home" = {
|
||||||
|
mountPoint = "/home";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@home"];
|
||||||
|
};
|
||||||
|
"btrfs_nix" = {
|
||||||
|
mountPoint = "/nix";
|
||||||
|
label = ssdLabel;
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=@nix"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/dev/mapper/swap";
|
||||||
|
# only want to use the swap partition for hibernating
|
||||||
|
priority = 0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware = {
|
||||||
|
cpu.amd = {
|
||||||
|
updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
ryzen-smu.enable = true;
|
||||||
|
};
|
||||||
|
sensor.iio.bmi260.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
56
machines/WinMax2/remote-builder.nix
Normal file
56
machines/WinMax2/remote-builder.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
flakeSelf,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName + "/";
|
||||||
|
hostKeyPath = "/etc/ssh/winmax2_host_key";
|
||||||
|
in {
|
||||||
|
age.secrets = {
|
||||||
|
winmax2-host-key = {
|
||||||
|
file = hostSecrets + "host-private-key.age";
|
||||||
|
path = hostKeyPath;
|
||||||
|
mode = "0400";
|
||||||
|
};
|
||||||
|
"winmax2-host-key.pub" = {
|
||||||
|
file = hostSecrets + "host-public-key.age";
|
||||||
|
path = hostKeyPath + ".pub";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
groups.nixrbld = {};
|
||||||
|
users.nixrbld = {
|
||||||
|
isSystemUser = true;
|
||||||
|
useDefaultShell = true;
|
||||||
|
group = "nixrbld";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF8v+04ZwqHZRG8P8nxdQt+fGJfzlxHXF0F6jzENb+U6 Remote builder access key"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.settings.trusted-users = ["nixrbld"];
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
startWhenNeeded = true;
|
||||||
|
# I only want it to be accesible though tailscale
|
||||||
|
openFirewall = false;
|
||||||
|
allowSFTP = false;
|
||||||
|
settings = {
|
||||||
|
UseDns = true;
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
AllowUsers = ["nixrbld"];
|
||||||
|
};
|
||||||
|
hostKeys = [
|
||||||
|
{
|
||||||
|
path = hostKeyPath;
|
||||||
|
type = "ed25519";
|
||||||
|
comment = "Everest host key";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
networking.firewall.interfaces.tailscale0.allowedTCPPorts = [22];
|
||||||
|
}
|
||||||
0
nixpkgs-patches/.gitkeep
Normal file
0
nixpkgs-patches/.gitkeep
Normal file
61
nixpkgs-patches/pr471291.patch
Normal file
61
nixpkgs-patches/pr471291.patch
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
From ef52b16862caa43dd4abc0aedf1814796342b664 Mon Sep 17 00:00:00 2001
|
||||||
|
From: K900 <me@0upti.me>
|
||||||
|
Date: Tue, 16 Dec 2025 11:48:37 +0300
|
||||||
|
Subject: [PATCH] kdePackages.plasma-vault: refresh patch
|
||||||
|
|
||||||
|
No idea how this happened.
|
||||||
|
---
|
||||||
|
.../plasma/plasma-vault/hardcode-paths.patch | 26 +++++++++----------
|
||||||
|
1 file changed, 13 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
|
||||||
|
index d8a5f4a025de3..090df77eb15b0 100644
|
||||||
|
--- a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
|
||||||
|
+++ b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp
|
||||||
|
-index f425eb3..5b8cd43 100644
|
||||||
|
+index 64138b6..5d249aa 100644
|
||||||
|
--- a/kded/engine/backends/cryfs/cryfsbackend.cpp
|
||||||
|
+++ b/kded/engine/backends/cryfs/cryfsbackend.cpp
|
||||||
|
@@ -207,7 +207,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const
|
||||||
|
@@ -44,7 +44,7 @@ index b992f6f..eb828dd 100644
|
||||||
|
|
||||||
|
QString GocryptfsBackend::getConfigFilePath(const Device &device) const
|
||||||
|
diff --git a/kded/engine/fusebackend_p.cpp b/kded/engine/fusebackend_p.cpp
|
||||||
|
-index 8763304..e6860d2 100644
|
||||||
|
+index 714b660..61d8bf5 100644
|
||||||
|
--- a/kded/engine/fusebackend_p.cpp
|
||||||
|
+++ b/kded/engine/fusebackend_p.cpp
|
||||||
|
@@ -90,7 +90,7 @@ QProcess *FuseBackend::process(const QString &executable, const QStringList &arg
|
||||||
|
@@ -57,19 +57,19 @@ index 8763304..e6860d2 100644
|
||||||
|
|
||||||
|
FutureResult<> FuseBackend::initialize(const QString &name, const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload)
|
||||||
|
diff --git a/kded/engine/vault.cpp b/kded/engine/vault.cpp
|
||||||
|
-index c101079..67c8a83 100644
|
||||||
|
+index a7a4741..773b671 100644
|
||||||
|
--- a/kded/engine/vault.cpp
|
||||||
|
+++ b/kded/engine/vault.cpp
|
||||||
|
-@@ -485,7 +485,7 @@ FutureResult<> Vault::close()
|
||||||
|
- } else {
|
||||||
|
- // We want to check whether there is an application
|
||||||
|
- // that is accessing the vault
|
||||||
|
-- AsynQt::Process::getOutput(QStringLiteral("lsof"), {QStringLiteral("-t"), mountPoint().data()}) | cast<QString>() | onError([this] {
|
||||||
|
-+ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), {QStringLiteral("-t"), mountPoint().data()}) | cast<QString>() | onError([this] {
|
||||||
|
- d->updateMessage(i18n("Unable to lock the vault because an application is using it"));
|
||||||
|
- }) | onSuccess([this](const QString &result) {
|
||||||
|
- // based on ksolidnotify.cpp
|
||||||
|
-@@ -538,7 +538,7 @@ FutureResult<> Vault::forceClose()
|
||||||
|
+@@ -490,7 +490,7 @@ FutureResult<> Vault::close()
|
||||||
|
+ } else {
|
||||||
|
+ // We want to check whether there is an application
|
||||||
|
+ // that is accessing the vault
|
||||||
|
+- AsynQt::Process::getOutput(QStringLiteral("lsof"), { QStringLiteral("-t"), mountPoint().data() })
|
||||||
|
++ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), { QStringLiteral("-t"), mountPoint().data() })
|
||||||
|
+ | cast<QString>()
|
||||||
|
+ | onError([this] {
|
||||||
|
+ d->updateMessage(i18n("Unable to close the vault because an application is using it"));
|
||||||
|
+@@ -546,7 +546,7 @@ FutureResult<> Vault::forceClose()
|
||||||
|
using namespace AsynQt::operators;
|
||||||
|
|
||||||
|
AsynQt::await(
|
||||||
49
nixpkgs-patches/revert-mangohud-update.patch
Normal file
49
nixpkgs-patches/revert-mangohud-update.patch
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
diff --git a/pkgs/tools/graphics/mangohud/default.nix b/pkgs/tools/graphics/mangohud/default.nix
|
||||||
|
index cf83d4254baa..992afd60d3cb 100644
|
||||||
|
--- a/pkgs/tools/graphics/mangohud/default.nix
|
||||||
|
+++ b/pkgs/tools/graphics/mangohud/default.nix
|
||||||
|
@@ -24,8 +24,10 @@
|
||||||
|
unzip,
|
||||||
|
wayland,
|
||||||
|
libXNVCtrl,
|
||||||
|
+ nlohmann_json,
|
||||||
|
spdlog,
|
||||||
|
libxkbcommon,
|
||||||
|
+ glew,
|
||||||
|
glfw,
|
||||||
|
libXrandr,
|
||||||
|
x11Support ? true,
|
||||||
|
@@ -93,14 +95,14 @@ let
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "mangohud";
|
||||||
|
- version = "0.8.2";
|
||||||
|
+ version = "0.8.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "flightlessmango";
|
||||||
|
repo = "MangoHud";
|
||||||
|
tag = "v${finalAttrs.version}";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
- hash = "sha256-BZ3R7D2zOlg69rx4y2FzzjpXuPOv913TOz9kSvRN+Wg=";
|
||||||
|
+ hash = "sha256-FvPhnOvcYE8vVB5R+ZRmuZxrC9U4GA338V7VAuUlHCE=";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
@@ -188,6 +190,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
dbus
|
||||||
|
+ nlohmann_json
|
||||||
|
spdlog
|
||||||
|
]
|
||||||
|
++ lib.optional waylandSupport wayland
|
||||||
|
@@ -195,6 +198,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
|
++ lib.optional nvidiaSupport libXNVCtrl
|
||||||
|
++ lib.optional (x11Support || waylandSupport) libxkbcommon
|
||||||
|
++ lib.optionals mangoappSupport [
|
||||||
|
+ glew
|
||||||
|
glfw
|
||||||
|
libXrandr
|
||||||
|
];
|
||||||
|
|
||||||
24
openbox.nix
24
openbox.nix
|
|
@ -1,24 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
autorun = false;
|
|
||||||
windowManager.openbox.enable = true;
|
|
||||||
};
|
|
||||||
xrdp = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
defaultWindowManager = "${pkgs.openbox}/bin/openbox-session";
|
|
||||||
#confDir = "/etc/xrdp";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
pcmanfm
|
|
||||||
obconf
|
|
||||||
firefox
|
|
||||||
gnome.gnome-calculator
|
|
||||||
alacritty
|
|
||||||
];
|
|
||||||
}
|
|
||||||
59
pkgs/kame-editor/default.nix
Normal file
59
pkgs/kame-editor/default.nix
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitLab,
|
||||||
|
qt6,
|
||||||
|
portaudio,
|
||||||
|
kame-tools,
|
||||||
|
vgmstream,
|
||||||
|
rstmcpp,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "kame-editor";
|
||||||
|
version = "1.4.1";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "beelzy";
|
||||||
|
repo = name;
|
||||||
|
# tag = version;
|
||||||
|
rev = "82c9c445644b133b6d0ce3529e65b1a3df83c804";
|
||||||
|
hash = "sha256-V2nMvVIjFRM8++XQ9tkE2OiZzCvdrg0jK69HM+ZIVyA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace kame-editor.pro \
|
||||||
|
--replace-fail "/usr/local/bin/" "$out/bin"
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
qt6.qtbase
|
||||||
|
portaudio
|
||||||
|
];
|
||||||
|
|
||||||
|
qtWrapperArgs = [
|
||||||
|
"--prefix PATH : ${
|
||||||
|
lib.makeBinPath [
|
||||||
|
kame-tools
|
||||||
|
vgmstream
|
||||||
|
rstmcpp
|
||||||
|
]
|
||||||
|
}"
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
qt6.qmake
|
||||||
|
qt6.wrapQtAppsHook
|
||||||
|
];
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
bash ./buildicons.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/share/icons/hicolor
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
|
||||||
|
cp kame-editor.desktop $out/share/applications
|
||||||
|
cp -r icons/. $out/share/icons/hicolor
|
||||||
|
'';
|
||||||
|
}
|
||||||
29
pkgs/kame-tools/default.nix
Normal file
29
pkgs/kame-tools/default.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitLab,
|
||||||
|
zip,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "kame-tools";
|
||||||
|
version = "a1fe47cc";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "beelzy";
|
||||||
|
repo = name;
|
||||||
|
rev = version;
|
||||||
|
fetchSubmodules = true;
|
||||||
|
hash = "sha256-ETl5f8M4OJPFB7NEq2mVuMm4RhBtAbMzlrvGHD14zXw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace buildtools/make_base \
|
||||||
|
--replace-fail "/usr/local/bin" "$out/bin"
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp output/linux-x86_64/* $out/bin/
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [zip];
|
||||||
|
}
|
||||||
18
pkgs/kasane-teto-cursor
Normal file
18
pkgs/kasane-teto-cursor
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
stdenvNoCC,
|
||||||
|
fetchzip,
|
||||||
|
}:
|
||||||
|
stdenvNoCC.mkDerivation {
|
||||||
|
name = "kasane-teto-cursors";
|
||||||
|
|
||||||
|
src = fetchzip {
|
||||||
|
url = "http://dl.everest.tailscale/Kasane%20Teto%20Cursor%20-%20by%20wobb.zip";
|
||||||
|
hash = "sha256-4neZqApkK6hwufLTilUtPmgzyBih7onSdSZ9lezQbIU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/icons
|
||||||
|
cp -dr --no-preserve='ownership' $src/Linux/Kasane\ Teto $out/share/icons
|
||||||
|
'';
|
||||||
|
}
|
||||||
21
pkgs/rstmcpp/default.nix
Normal file
21
pkgs/rstmcpp/default.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitLab,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "rstmcpp";
|
||||||
|
version = "fe8bee01";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "beelzy";
|
||||||
|
repo = name;
|
||||||
|
rev = version;
|
||||||
|
fetchSubmodules = true;
|
||||||
|
hash = "sha256-T9mxTBj/eykvbBkbmEKTUFldtBp3cJgWAbeu44SwxiM=";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp rstmcpp $out/bin
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
@ -1,51 +1,192 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
flakeSelf,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
environment = {
|
environment = {
|
||||||
# As of the 1st of May 2023, the default packages are nano, perl, rsync and strace
|
# As of the 1st of May 2023, the default packages are nano, perl, rsync and strace
|
||||||
# I don't need any of them, so I just empty the list
|
# I don't need any of them, so I just empty the list
|
||||||
defaultPackages = [];
|
defaultPackages = [];
|
||||||
variables = {
|
};
|
||||||
# Environment variables go here
|
|
||||||
EDITOR = "micro";
|
# Set up /tmp
|
||||||
|
boot.tmp = {
|
||||||
|
useTmpfs = false;
|
||||||
|
# Cleaning out /tmp at boot if it's a tmpfs is quite stupid
|
||||||
|
cleanOnBoot = !config.boot.tmp.useTmpfs;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.localBinInPath = lib.mkDefault true;
|
||||||
|
|
||||||
|
# Set up zram
|
||||||
|
zramSwap = {
|
||||||
|
enable = true;
|
||||||
|
priority = 100;
|
||||||
|
memoryPercent = 60;
|
||||||
|
# zstd my beloved <3
|
||||||
|
algorithm = "zstd";
|
||||||
|
};
|
||||||
|
# zswap with zram is not a good idea
|
||||||
|
boot.kernelParams = ["zswap.enabled=0"];
|
||||||
|
|
||||||
|
# Set up keyboard layout
|
||||||
|
services.xserver.xkb.layout = "es";
|
||||||
|
|
||||||
|
# Set up console
|
||||||
|
console = {
|
||||||
|
packages = [pkgs.terminus_font];
|
||||||
|
earlySetup = true;
|
||||||
|
# mkDefault has 1000 priority, so that way I don't conflict with nixos-hardware
|
||||||
|
font = lib.mkOverride 999 "ter-i16n";
|
||||||
|
# Make the console use X's keyboard configuration
|
||||||
|
useXkbConfig = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.supportedFilesystems = ["nfs"];
|
||||||
|
|
||||||
|
security.pki.certificates = [
|
||||||
|
# Caddy
|
||||||
|
''
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIBqTCCAU+gAwIBAgIQceh0ZUBNrOmqLVsDr+2HBjAKBggqhkjOPQQDAjAzMTEw
|
||||||
|
LwYDVQQDEyhDYWRkeSAoRXZlcmVzdCkgbG9jYWwgQ0EgLSAyMDI0IEVDQyBSb290
|
||||||
|
MB4XDTI0MDcxODAwMDEwM1oXDTM0MDUyNzAwMDEwM1owMzExMC8GA1UEAxMoQ2Fk
|
||||||
|
ZHkgKEV2ZXJlc3QpIGxvY2FsIENBIC0gMjAyNCBFQ0MgUm9vdDBZMBMGByqGSM49
|
||||||
|
AgEGCCqGSM49AwEHA0IABJjrY8x6iDXncxG8exwLyaEq8N0XnCIbga8PVYiz3VLS
|
||||||
|
07++i0Dey9k68ag6KUZICfc8dX1uZ6/ozUZb4YO3xCSjRTBDMA4GA1UdDwEB/wQE
|
||||||
|
AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBTQAqZS9KeiAr9mSPV9
|
||||||
|
RIJbSvRsTzAKBggqhkjOPQQDAgNIADBFAiBIgHrD2cUfNEctVx0WzHb0cLAsrK4Q
|
||||||
|
3QbyxPLyenR+dAIhAMOIAyxlKKKvAJMOzAg0r+csSVRdP1YHsHiE7U1GeHWx
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
''
|
||||||
|
];
|
||||||
|
|
||||||
|
# Set up localisation
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
supportedLocales = [
|
||||||
|
"es_US.UTF-8/UTF-8"
|
||||||
|
"es_ES.UTF-8/UTF-8"
|
||||||
|
"en_US.UTF-8/UTF-8"
|
||||||
|
];
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LC_NUMERIC = "es_ES.UTF-8";
|
||||||
|
# am/pm is nice but mm/dd/yy is yucky
|
||||||
|
LC_TIME = "es_US.UTF-8";
|
||||||
|
LC_MONETARY = "es_ES.UTF-8";
|
||||||
|
LC_MEASUREMENT = "es_ES.UTF-8";
|
||||||
|
LC_PAPER = "es_ES.UTF-8";
|
||||||
|
LC_ADDRESS = "es_US.UTF-8";
|
||||||
|
LC_NAME = "es_ES.UTF-8";
|
||||||
|
LC_TELEPHONE = "es_ES.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
fstrim.enable = true;
|
||||||
|
fwupd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set up my user
|
||||||
|
users.mutableUsers = false;
|
||||||
|
users.users.toast = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Toast";
|
||||||
|
extraGroups = ["wheel"];
|
||||||
|
hashedPasswordFile = config.sops.secrets.toast.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set up time zone.
|
||||||
|
time.timeZone = lib.mkDefault "Europe/Madrid";
|
||||||
|
services.automatic-timezoned.enable = true;
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
flakeSelf.outputs.overlays.default
|
||||||
|
(
|
||||||
|
final: prev: {
|
||||||
|
catppuccin = prev.catppuccin.override {
|
||||||
|
accent = "mauve";
|
||||||
|
variant = "mocha";
|
||||||
|
themeList = [
|
||||||
|
"bat"
|
||||||
|
"btop"
|
||||||
|
"starship"
|
||||||
|
"grub"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
catppuccin = {
|
||||||
|
flavor = "mocha";
|
||||||
|
accent = "mauve";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.iotop.enable = true;
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
backupFileExtension = "hm-backup";
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
verbose = true;
|
||||||
|
sharedModules = with flakeSelf; [
|
||||||
|
inputs.catppuccin.homeModules.catppuccin
|
||||||
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
|
];
|
||||||
|
users.toast = {osConfig, ...}: {
|
||||||
|
catppuccin.flavor = osConfig.catppuccin.flavor;
|
||||||
|
catppuccin.accent = osConfig.catppuccin.accent;
|
||||||
|
home.stateVersion = "25.05";
|
||||||
|
manual = {
|
||||||
|
manpages.enable = true;
|
||||||
|
html.enable = true;
|
||||||
|
};
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
publicShare = null; # Disable the public folder
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.user.startServices = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Set up secrets
|
# Set up secrets
|
||||||
age = {
|
age = {
|
||||||
identityPaths = [
|
identityPaths = [
|
||||||
"/etc/ssh/ssh_host_rsa_key"
|
"/persist/id_host"
|
||||||
"/etc/ssh/ssh_host_ed25519_key"
|
|
||||||
# This key has a passcode, so if you need to use it you'll have to
|
|
||||||
# enter the password A LOT of times. Only on the first setup tho
|
|
||||||
"/tmp/id_ed25519_bootstrap"
|
|
||||||
];
|
];
|
||||||
# Copy (NOT SYMLINK) host ssh keys into place
|
|
||||||
secrets = {
|
|
||||||
"ed25519" = {
|
|
||||||
symlink = false;
|
|
||||||
file = ../../secrets/${config.networking.hostName}/host-key-ed25519;
|
|
||||||
path = "/etc/ssh/ssh_host_ed25519_key";
|
|
||||||
};
|
|
||||||
"rsa" = {
|
|
||||||
symlink = false;
|
|
||||||
file = ../../secrets/${config.networking.hostName}/host-key-rsa;
|
|
||||||
path= "/etc/ssh/ssh_host_rsa_key";
|
|
||||||
};
|
|
||||||
"ed25519-public" = {
|
|
||||||
symlink = false;
|
|
||||||
file = ../../secrets/${config.networking.hostName}/host-key-ed25519-public;
|
|
||||||
path = "/etc/ssh/ssh_host_ed25519_key.pub";
|
|
||||||
mode = "0644";
|
|
||||||
};
|
|
||||||
"rsa-public" = {
|
|
||||||
symlink = false;
|
|
||||||
file = ../../secrets/${config.networking.hostName}/host-key-rsa-public;
|
|
||||||
path = "/etc/ssh/ssh_host_rsa_key.pub";
|
|
||||||
mode = "0644";
|
|
||||||
};
|
};
|
||||||
|
sops = {
|
||||||
|
age.sshKeyPaths = ["/persist/id_host"];
|
||||||
|
defaultSopsFile = "${flakeSelf.inputs.secrets}/${config.networking.hostName}.yaml";
|
||||||
|
secrets.toast = {
|
||||||
|
sopsFile = "${flakeSelf.inputs.secrets}/passwd.yaml";
|
||||||
|
neededForUsers = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "23.05";
|
catppuccin.grub.enable = true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
I used to keep the host keys in the repo as a secret, but since I use the
|
||||||
|
host keys for decrypting too I'm not sure encrypting a key with itself
|
||||||
|
is a good idea. Now the host keys will need to be placed manually where they are needed
|
||||||
|
For first time installs they are generated by services.openssh.hostKeys on servers, and
|
||||||
|
manually on everything else
|
||||||
|
*/
|
||||||
|
|
||||||
|
system = {
|
||||||
|
stateVersion = "25.05";
|
||||||
|
# Nix on nixos 23.05 does not have dirtyRev
|
||||||
|
configurationRevision = flakeSelf.sourceInfo.rev or flakeSelf.sourceInfo.dirtyRev or "dirty";
|
||||||
|
nixos.variant_id = lib.mkDefault (lib.strings.toLower config.networking.hostName);
|
||||||
|
};
|
||||||
|
image.modules.iso = {
|
||||||
|
system.nixos.variant_id = "${lib.strings.toLower config.networking.hostName}-iso";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./programs
|
./programs
|
||||||
./services/avahi.nix
|
./services
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
21
roles/common/programs/atuin.nix
Normal file
21
roles/common/programs/atuin.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
catppuccin.atuin.enable = true;
|
||||||
|
programs.atuin = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
enter_accept = true;
|
||||||
|
workspaces = true;
|
||||||
|
filter_mode = "workspace";
|
||||||
|
style = "auto";
|
||||||
|
inline_height = 0;
|
||||||
|
stats = {
|
||||||
|
common_prefix = [
|
||||||
|
"sudo"
|
||||||
|
","
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
roles/common/programs/bash.nix
Normal file
8
roles/common/programs/bash.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.toast = {...}: {
|
||||||
|
programs.bash = {
|
||||||
|
enable = true;
|
||||||
|
enableVteIntegration = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
roles/common/programs/bat.nix
Normal file
8
roles/common/programs/bat.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager = {
|
||||||
|
users.toast = {
|
||||||
|
programs.bat.enable = true;
|
||||||
|
catppuccin.bat.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
roles/common/programs/btop.nix
Normal file
8
roles/common/programs/btop.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager = {
|
||||||
|
users.toast = {
|
||||||
|
catppuccin.btop.enable = true;
|
||||||
|
programs.btop.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
roles/common/programs/comma.nix
Normal file
6
roles/common/programs/comma.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{...}: {
|
||||||
|
# Use nix-index-database's comma wrapper
|
||||||
|
programs.nix-index-database.comma.enable = true;
|
||||||
|
# Run programs from the system's nixpkgs
|
||||||
|
environment.variables = {COMMA_NIXPKGS_FLAKE = "system";};
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# The nixpkgs command-not-found script does not work with flakes, so I disable it
|
# The nixpkgs command-not-found script does not work with flakes, so I disable it
|
||||||
programs.command-not-found.enable = false;
|
programs.command-not-found.enable = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,31 @@
|
||||||
{ config, pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./htop.nix
|
./htop.nix
|
||||||
./nix.nix
|
./nix.nix
|
||||||
./nix-index.nix
|
./nix-index.nix
|
||||||
./command-not-found.nix
|
./command-not-found.nix
|
||||||
|
./comma.nix
|
||||||
|
./bash.nix
|
||||||
|
./git.nix
|
||||||
|
./starship.nix
|
||||||
|
./bat.nix
|
||||||
|
./btop.nix
|
||||||
|
./helix.nix
|
||||||
|
./direnv.nix
|
||||||
|
./atuin.nix
|
||||||
|
./fish.nix
|
||||||
|
./eza.nix
|
||||||
];
|
];
|
||||||
# Some programs dont have a programs.*.enable option, so I install their package here
|
# Some programs dont have a programs.*.enable option, so I install their package here
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
speedtest-cli
|
speedtest-cli
|
||||||
|
# Bat has a home manager module, but I want it to be available system wide
|
||||||
bat
|
bat
|
||||||
micro
|
file
|
||||||
nvd
|
nvd
|
||||||
ncdu
|
ncdu
|
||||||
tree
|
tree
|
||||||
btdu
|
btdu
|
||||||
btop
|
|
||||||
iperf3
|
iperf3
|
||||||
restic
|
restic
|
||||||
];
|
];
|
||||||
|
|
|
||||||
10
roles/common/programs/direnv.nix
Normal file
10
roles/common/programs/direnv.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
20
roles/common/programs/eza.nix
Normal file
20
roles/common/programs/eza.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
flakeSelf,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home-manager = {
|
||||||
|
users.toast = {
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
git = true;
|
||||||
|
icons = "auto";
|
||||||
|
extraOptions = [
|
||||||
|
"--group"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
xdg.configFile."eza/theme.yml".source = "${flakeSelf.inputs.eza-themes}/themes/catppuccin.yml";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
roles/common/programs/fish.nix
Normal file
10
roles/common/programs/fish.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{...}: {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.toast = {
|
||||||
|
catppuccin.fish.enable = true;
|
||||||
|
programs.fish.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
25
roles/common/programs/git.nix
Normal file
25
roles/common/programs/git.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{...}: {
|
||||||
|
programs.ssh.knownHosts = {
|
||||||
|
"[git.toast003.xyz]:4222".publicKey = ''
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKoUcWx56NZ3kqydN3d0gLNz6SlBm1ArkHhqR9Fwd8qs
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
home-manager.users.toast = {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user.name = "toast";
|
||||||
|
user.email = "toast003@tutamail.com";
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
diff.colorMoved = "default";
|
||||||
|
commit.verbose = "true";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.delta = {
|
||||||
|
enable = true;
|
||||||
|
enableGitIntegration = true;
|
||||||
|
};
|
||||||
|
catppuccin.delta.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
54
roles/common/programs/helix.nix
Normal file
54
roles/common/programs/helix.nix
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.nano.enable = false;
|
||||||
|
home-manager.users.toast = {
|
||||||
|
catppuccin.helix = {
|
||||||
|
enable = true;
|
||||||
|
useItalics = true;
|
||||||
|
};
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
nixpkgs-fmt
|
||||||
|
nil
|
||||||
|
taplo
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
editor = {
|
||||||
|
mouse = true;
|
||||||
|
cursorline = true;
|
||||||
|
color-modes = true;
|
||||||
|
bufferline = "multiple";
|
||||||
|
statusline.mode = {
|
||||||
|
normal = "Normal";
|
||||||
|
insert = "Insert";
|
||||||
|
select = "Select";
|
||||||
|
};
|
||||||
|
indent-guides.render = true;
|
||||||
|
end-of-line-diagnostics = "hint";
|
||||||
|
inline-diagnostics.cursor-line = "warning";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
languages = {
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "nix";
|
||||||
|
formatter.command = "nixpkgs-fmt";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
language-server.nil = {
|
||||||
|
config = {
|
||||||
|
flake = {
|
||||||
|
autoArchive = false;
|
||||||
|
autoEvalInputs = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.htop = {
|
programs.htop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,15 @@
|
||||||
{ config, pkgs, ... }:
|
{...}: {
|
||||||
|
/*
|
||||||
{
|
|
||||||
environment.systemPackages = [ pkgs.nix-index ];
|
environment.systemPackages = [ pkgs.nix-index ];
|
||||||
programs.bash.interactiveShellInit = ''
|
programs.bash.interactiveShellInit = ''
|
||||||
source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
|
source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
|
||||||
'';
|
'';
|
||||||
|
*/
|
||||||
|
programs.nix-index = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
# I don't use zsh or fish (yet)
|
||||||
|
enableZshIntegration = false;
|
||||||
|
enableFishIntegration = false;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,61 @@
|
||||||
{ config, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
nix = {
|
config,
|
||||||
extraOptions = ''
|
lib,
|
||||||
experimental-features = nix-command flakes
|
flakeSelf,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
age.secrets = {
|
||||||
|
remoteBuilderKey.file = "${flakeSelf.inputs.secrets}/WinMax2/nixrbld-private-key.age";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.ssh = {
|
||||||
|
knownHosts.winmax2.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPE+ksvEq/I2LMLOztVXpLE9yuI6EkRh4EtXdlYkhl6C WinMax2 host key";
|
||||||
|
extraConfig = ''
|
||||||
|
Host nixrbld
|
||||||
|
HostName winmax2
|
||||||
|
IdentitiesOnly yes
|
||||||
|
IdentityFile ${config.age.secrets.remoteBuilderKey.path}
|
||||||
|
User nixrbld
|
||||||
'';
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
system.tools.nixos-option.enable = false;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
experimental-features = "nix-command flakes";
|
||||||
|
};
|
||||||
|
distributedBuilds = true;
|
||||||
|
# Don't use remote builder on the remote builder
|
||||||
|
buildMachines = lib.mkIf (config.networking.hostName != "WinMax2") [
|
||||||
|
{
|
||||||
|
hostName = "nixrbld";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
protocol = "ssh-ng";
|
||||||
|
maxJobs = 4;
|
||||||
|
supportedFeatures = [
|
||||||
|
"big-parallel"
|
||||||
|
"kvm"
|
||||||
|
"nixos-test"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
optimise = {
|
||||||
|
automatic = true;
|
||||||
|
dates = ["weekly"];
|
||||||
|
};
|
||||||
registry = {
|
registry = {
|
||||||
agenix = {
|
agenix = {
|
||||||
from = { id = "agenix"; type = "indirect"; };
|
from = {
|
||||||
to = { owner = "ryantm"; repo = "agenix"; type = "github"; };
|
id = "agenix";
|
||||||
|
type = "indirect";
|
||||||
|
};
|
||||||
|
to = {
|
||||||
|
owner = "ryantm";
|
||||||
|
repo = "agenix";
|
||||||
|
type = "github";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
31
roles/common/programs/starship.nix
Normal file
31
roles/common/programs/starship.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
{...}: {
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
presets = [
|
||||||
|
"nerd-font-symbols"
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
nix_shell = {
|
||||||
|
disabled = false;
|
||||||
|
heuristic = true;
|
||||||
|
};
|
||||||
|
os = {
|
||||||
|
disabled = false;
|
||||||
|
};
|
||||||
|
directory = {
|
||||||
|
disabled = false;
|
||||||
|
truncation_length = 6;
|
||||||
|
truncation_symbol = ".../";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# The catppuccin module only works for home-manager, so this
|
||||||
|
# sets up starship with home-manager using the system config
|
||||||
|
# home-manager.users.toast = {osConfig, ...}: {
|
||||||
|
# programs.starship = {
|
||||||
|
# enable = false;
|
||||||
|
# catppuccin.enable = true;
|
||||||
|
# settings = osConfig.programs.starship.settings;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.avahi = {
|
services.avahi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nssmdns = true;
|
nssmdns4 = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
8
roles/common/services/default.nix
Normal file
8
roles/common/services/default.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./avahi.nix
|
||||||
|
./tailscale.nix
|
||||||
|
./syncthing.nix
|
||||||
|
./kmscon.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
29
roles/common/services/kmscon.nix
Normal file
29
roles/common/services/kmscon.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
services.kmscon = {
|
||||||
|
enable = true;
|
||||||
|
useXkbConfig = true;
|
||||||
|
fonts = [
|
||||||
|
{
|
||||||
|
name = "JetBrains Mono Nerd Font";
|
||||||
|
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraConfig = ''
|
||||||
|
term=xterm-256color
|
||||||
|
font-size=10
|
||||||
|
'';
|
||||||
|
package = pkgs.kmscon.overrideAttrs (old: {
|
||||||
|
patches =
|
||||||
|
old.patches
|
||||||
|
++ [
|
||||||
|
# https://github.com/kmscon/kmscon/issues/133
|
||||||
|
(
|
||||||
|
pkgs.fetchpatch {
|
||||||
|
url = "https://github.com/Aetf/kmscon/pull/135.patch";
|
||||||
|
hash = "sha256-hJrKkONdQmz9gGMXbk11+4MF8Vn4guE3Bl1Ni6SGDw4=";
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
40
roles/common/services/syncthing.nix
Executable file
40
roles/common/services/syncthing.nix
Executable file
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
flakeSelf,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hostSecrets = "${flakeSelf.inputs.secrets}/" + config.networking.hostName;
|
||||||
|
in {
|
||||||
|
# Get secrets
|
||||||
|
age.secrets = {
|
||||||
|
syncthingKey.file = hostSecrets + "/syncthingKey.age";
|
||||||
|
syncthingCert.file = hostSecrets + "/syncthingCert.age";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.syncthing = {
|
||||||
|
key = config.age.secrets.syncthingKey.path;
|
||||||
|
cert = config.age.secrets.syncthingCert.path;
|
||||||
|
overrideDevices = true;
|
||||||
|
overrideFolders = true;
|
||||||
|
openDefaultPorts = true;
|
||||||
|
settings = {
|
||||||
|
options = {
|
||||||
|
urAccepted = 3;
|
||||||
|
};
|
||||||
|
# Set up devices and folders common to every device
|
||||||
|
devices = lib.toast.syncthing.devices;
|
||||||
|
folders = {
|
||||||
|
"passwords" = {
|
||||||
|
label = "KeePassXC Passwords";
|
||||||
|
id = "rdyaq-ex659";
|
||||||
|
devices = ["phone" "pc" "steamdeck" "server" "surface" "winmax2"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [22000];
|
||||||
|
allowedUDPPorts = [22000 21027];
|
||||||
|
};
|
||||||
|
}
|
||||||
10
roles/common/services/tailscale.nix
Normal file
10
roles/common/services/tailscale.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{lib, ...}: {
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
useRoutingFeatures = lib.mkDefault "client";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.tailscaled.environment = {
|
||||||
|
TS_NO_LOGS_NO_SUPPORT = "true";
|
||||||
|
};
|
||||||
|
}
|
||||||
35
roles/desktop/configuration.nix
Normal file
35
roles/desktop/configuration.nix
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
# Enable scanning
|
||||||
|
hardware.sane = {
|
||||||
|
enable = true;
|
||||||
|
extraBackends = [pkgs.sane-airscan];
|
||||||
|
};
|
||||||
|
users.users.toast.extraGroups = ["scanner"];
|
||||||
|
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
daemonIOSchedClass = "idle";
|
||||||
|
daemonCPUSchedPolicy = "idle";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set up fonts
|
||||||
|
fonts.packages = with pkgs.nerd-fonts; [
|
||||||
|
hack
|
||||||
|
jetbrains-mono
|
||||||
|
|
||||||
|
# Japanese fonts
|
||||||
|
pkgs.noto-fonts-cjk-sans
|
||||||
|
pkgs.noto-fonts-cjk-serif
|
||||||
|
];
|
||||||
|
|
||||||
|
# Already use electron apps (discord) so this only adds 20 mb more
|
||||||
|
environment.systemPackages = [pkgs.tetrio-desktop];
|
||||||
|
|
||||||
|
hardware.keyboard.qmk.enable = true;
|
||||||
|
home-manager.users.toast.home.packages = [pkgs.qmk];
|
||||||
|
|
||||||
|
home-manager.users.toast.xdg.autostart.enable = true;
|
||||||
|
|
||||||
|
boot.plymouth.enable = true;
|
||||||
|
}
|
||||||
8
roles/desktop/default.nix
Executable file → Normal file
8
roles/desktop/default.nix
Executable file → Normal file
|
|
@ -1,7 +1,7 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./discord.nix
|
./services
|
||||||
|
./programs
|
||||||
|
./configuration.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# TODO: Find out why this does not do anything. If I put this
|
|
||||||
# on flake.nix it does work, so it's not completely wrong.
|
|
||||||
/* nixpkgs.overlays =
|
|
||||||
let
|
|
||||||
discordOverlay = self: super: {
|
|
||||||
discord = super.discord.override {
|
|
||||||
withOpenASAR = true;
|
|
||||||
withVencord = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
[ discordOverlay ]; */
|
|
||||||
users.users.toast.packages = with pkgs; [
|
|
||||||
discord
|
|
||||||
];
|
|
||||||
}
|
|
||||||
6
roles/desktop/programs/appimage.nix
Normal file
6
roles/desktop/programs/appimage.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{...}: {
|
||||||
|
programs.appimage = {
|
||||||
|
enable = true;
|
||||||
|
binfmt = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
15
roles/desktop/programs/default.nix
Executable file
15
roles/desktop/programs/default.nix
Executable file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./discord.nix
|
||||||
|
./firefox.nix
|
||||||
|
./keepassxc.nix
|
||||||
|
./jamesdsp.nix
|
||||||
|
./git.nix
|
||||||
|
./ssh.nix
|
||||||
|
./appimage.nix
|
||||||
|
./mpv.nix
|
||||||
|
./sysdvr-qt.nix
|
||||||
|
./spotify.nix
|
||||||
|
./distrobox.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
59
roles/desktop/programs/discord.nix
Normal file
59
roles/desktop/programs/discord.nix
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
{pkgs, ...}: let
|
||||||
|
discordOverlay = _self: super: {
|
||||||
|
discord = super.discord.override {
|
||||||
|
withOpenASAR = true;
|
||||||
|
withVencord = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
nixpkgs.overlays = [discordOverlay];
|
||||||
|
home-manager.users.toast = {
|
||||||
|
catppuccin.vesktop.enable = true;
|
||||||
|
programs.vesktop = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
arRPC = true;
|
||||||
|
minimizeToTray = true;
|
||||||
|
discordBranch = "stable";
|
||||||
|
customTitleBar = true;
|
||||||
|
spellCheckLanguages = ["en-US" "en" "es"];
|
||||||
|
enableMenu = false;
|
||||||
|
};
|
||||||
|
vencord = {
|
||||||
|
settings = {
|
||||||
|
plugins = {
|
||||||
|
BetterGifPicker.enabled = true;
|
||||||
|
BetterSettings.enabled = true;
|
||||||
|
CallTimer.enabled = true;
|
||||||
|
ClearURLs.enabled = true;
|
||||||
|
FakeNitro.enabled = true;
|
||||||
|
FixSpotifyEmbeds.enabled = true;
|
||||||
|
FixYoutubeEmbeds.enabled = true;
|
||||||
|
FriendsSince.enabled = true;
|
||||||
|
iLoveSpam.enabled = true;
|
||||||
|
LoadingQuotes = {
|
||||||
|
enabled = true;
|
||||||
|
enableDiscordPresetQuotes = true;
|
||||||
|
};
|
||||||
|
MessageClickActions.enabled = true;
|
||||||
|
MessageLinkEmbeds.enabled = true;
|
||||||
|
MessageLogger.enabled = true;
|
||||||
|
Moyai = {
|
||||||
|
enabled = true;
|
||||||
|
volume = 1;
|
||||||
|
quality = "HD";
|
||||||
|
};
|
||||||
|
OpenInApp.enabled = true;
|
||||||
|
petpet.enabled = true;
|
||||||
|
PlatformIndicators.enabled = true;
|
||||||
|
ShowHiddenChannels.enabled = true;
|
||||||
|
ShowHiddenThings.enabled = true;
|
||||||
|
SpotifyControls.enabled = true;
|
||||||
|
Translate.enabled = true;
|
||||||
|
YoutubeAdblock.enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
28
roles/desktop/programs/distrobox.nix
Normal file
28
roles/desktop/programs/distrobox.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{...}: {
|
||||||
|
virtualisation.podman = {
|
||||||
|
# Due to limitations with home-manager, podman has to be available system wide
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
home-manager.users.toast = {
|
||||||
|
programs.distrobox = {
|
||||||
|
enable = true;
|
||||||
|
containers = {
|
||||||
|
uav = {
|
||||||
|
image = "quay.io/toolbx/ubuntu-toolbox:24.04";
|
||||||
|
# additional_packages = "lsb-release dmidecode git";
|
||||||
|
additional_packages = "git";
|
||||||
|
init_hooks = [
|
||||||
|
"git clone https://github.com/PX4/PX4-Autopilot.git --recursive /tmp/px4"
|
||||||
|
"cd /tmp/px4/Tools/setup/"
|
||||||
|
# The install scripts wants to add things to .bashrc, so it errors out
|
||||||
|
# This removes the line that does that
|
||||||
|
"sed -i '181d' ubuntu.sh"
|
||||||
|
"bash ubuntu.sh"
|
||||||
|
"rm -rf /tmp/px4 --one-file-system"
|
||||||
|
];
|
||||||
|
entry = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
147
roles/desktop/programs/firefox.nix
Normal file
147
roles/desktop/programs/firefox.nix
Normal file
|
|
@ -0,0 +1,147 @@
|
||||||
|
{lib, ...}: {
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
# System wide firefox settings
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
policies = {
|
||||||
|
DisableTelemetry = true;
|
||||||
|
GenerativeAI = {
|
||||||
|
Chatbot = false;
|
||||||
|
LinkPreviews = false;
|
||||||
|
TabGroups = false;
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
# You need these for Spotify
|
||||||
|
EncryptedMediaExtensions.Enabled = true;
|
||||||
|
ExtensionSettings = {
|
||||||
|
# TODO: Install extensions the NUR instead of from AMO
|
||||||
|
"uBlock0@raymondhill.net" = {
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
|
};
|
||||||
|
# Decentraleyes
|
||||||
|
"jid1-BoFifL9Vbdl2zQ@jetpack" = {
|
||||||
|
installation_mode = "normal_installed";
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/decentraleyes/latest.xpi";
|
||||||
|
};
|
||||||
|
"jid1-MnnxcxisBPnSXQ@jetpack" = {
|
||||||
|
installation_mode = "normal_installed";
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
|
||||||
|
};
|
||||||
|
# Uninstall undeclared extensions
|
||||||
|
"*" = {
|
||||||
|
installation_mode = "blocked";
|
||||||
|
blocked_install_message = "Extensions are managed by home-manager";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Preferences = {
|
||||||
|
# Enable video hardware acceleration
|
||||||
|
"media.ffmpeg.vaapi.enabled" = {
|
||||||
|
Value = true;
|
||||||
|
Status = "default";
|
||||||
|
};
|
||||||
|
"dom.security.https_only_mode" = {
|
||||||
|
Value = true;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
"browser.ml.chat.page" = {
|
||||||
|
Value = false;
|
||||||
|
Status = "Locked";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
PromptForDownloadLocation = true;
|
||||||
|
# I use an external password manager, so the built in one just bothers me
|
||||||
|
PasswordManagerEnabled = false;
|
||||||
|
Permissions = {
|
||||||
|
Autoplay = {
|
||||||
|
Allow = [
|
||||||
|
"https://www.youtube.com"
|
||||||
|
"https://sync-tube.de"
|
||||||
|
];
|
||||||
|
Default = "block-audio-video";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
FirefoxHome.SponsoredTopSites = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
# Per-user settings
|
||||||
|
home-manager.users.toast = {
|
||||||
|
programs.firefox.policies = {
|
||||||
|
DisablePocket = true;
|
||||||
|
ExtensionSettings = {
|
||||||
|
"sponsorBlocker@ajay.app" = {
|
||||||
|
installation_mode = "normal_installed";
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
|
||||||
|
};
|
||||||
|
"@testpilot-containers" = {
|
||||||
|
installation_mode = "normal_installed";
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/multi-account-containers/latest.xpi";
|
||||||
|
};
|
||||||
|
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = {
|
||||||
|
installation_mode = "normal_installed";
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/control-panel-for-twitter/latest.xpi";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Preferences = {
|
||||||
|
"general.smoothScroll.msdPhysics.enabled" = {
|
||||||
|
Value = true;
|
||||||
|
Status = "default";
|
||||||
|
};
|
||||||
|
"browser.ctrlTab.sortByRecentlyUsed" = {
|
||||||
|
Value = true;
|
||||||
|
Status = "default";
|
||||||
|
};
|
||||||
|
# This should be set automatically, but it isn't for some reason
|
||||||
|
"extensions.webextensions.ExtensionStorageIDB.enabled" = {
|
||||||
|
Value = false;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.firefox.profiles = {
|
||||||
|
personal = {
|
||||||
|
name = "Personal";
|
||||||
|
id = 0;
|
||||||
|
isDefault = true;
|
||||||
|
containersForce = true;
|
||||||
|
containers = {
|
||||||
|
work = {
|
||||||
|
name = "Work";
|
||||||
|
id = 1;
|
||||||
|
icon = "briefcase";
|
||||||
|
color = "green";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extensions.force = true;
|
||||||
|
extensions.settings = {
|
||||||
|
"@testpilot-containers".settings = {
|
||||||
|
onboarding-stage = 8;
|
||||||
|
"siteContainerMap@@_teams.microsoft.com" = {
|
||||||
|
userContextId = "1";
|
||||||
|
neverAsk = false;
|
||||||
|
identityMacAddonUUID = "b50e5b1e-6f3b-4245-8eac-5654d889156e";
|
||||||
|
};
|
||||||
|
"siteContainerMap@@_outlook.office.com" = {
|
||||||
|
userContextId = "1";
|
||||||
|
neverAsk = false;
|
||||||
|
identityMacAddonUUID = "b50e5b1e-6f3b-4245-8eac-5654d889156e";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# Control panel for twitter
|
||||||
|
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}".settings = {
|
||||||
|
hideForYouTimeline = false;
|
||||||
|
alwaysUseLatestTweets = false;
|
||||||
|
retweets = "ignore";
|
||||||
|
restoreOtherInteractionLinks = true;
|
||||||
|
navBaseFontSize = false;
|
||||||
|
followButtonStyle = "themed";
|
||||||
|
hideSidebarContent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
roles/desktop/programs/git.nix
Normal file
7
roles/desktop/programs/git.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
programs.git = {
|
||||||
|
package = pkgs.gitFull;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
roles/desktop/programs/jamesdsp.nix
Normal file
7
roles/desktop/programs/jamesdsp.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
jamesdsp
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
34
roles/desktop/programs/keepassxc.nix
Normal file
34
roles/desktop/programs/keepassxc.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager = {
|
||||||
|
users.toast = {
|
||||||
|
programs.keepassxc = {
|
||||||
|
enable = true;
|
||||||
|
autostart = true;
|
||||||
|
settings = {
|
||||||
|
General = {
|
||||||
|
# Not sure what changing this does, I'll leave it alone
|
||||||
|
ConfigVersion = 2;
|
||||||
|
MinimizeAfterUnlock = true;
|
||||||
|
AutoSaveAfterEveryChange = false;
|
||||||
|
};
|
||||||
|
GUI = {
|
||||||
|
ApplicationTheme = "classic";
|
||||||
|
MinimizeOnStartup = false;
|
||||||
|
MinimizeOnClose = true;
|
||||||
|
MinimizeToTray = true;
|
||||||
|
ShowTrayIcon = true;
|
||||||
|
# 0 is icons, 1 is text, 2 is text next to icons, 3 is text under icons, and 4 is follow style
|
||||||
|
ToolButtonStyle = 0; # Would choose 4 but it's too big for a small window
|
||||||
|
# monochrome-light, monochrome-dark or colorful
|
||||||
|
TrayIconAppearance = "monochrome-light";
|
||||||
|
};
|
||||||
|
Security = {
|
||||||
|
HideNotes = true;
|
||||||
|
IconDownloadFallback = true;
|
||||||
|
};
|
||||||
|
SSHAgent.Enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
24
roles/desktop/programs/mpv.nix
Normal file
24
roles/desktop/programs/mpv.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(
|
||||||
|
final: prev: {
|
||||||
|
mpv-unwrapped = prev.mpv-unwrapped.override {
|
||||||
|
cddaSupport = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
home-manager.users.toast = {
|
||||||
|
programs.mpv = {
|
||||||
|
enable = true;
|
||||||
|
scripts = with pkgs.mpvScripts; [
|
||||||
|
mpris
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
hwdec = "auto";
|
||||||
|
cache = true;
|
||||||
|
cdda-speed = "8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
roles/desktop/programs/spotify.nix
Normal file
5
roles/desktop/programs/spotify.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
home.packages = [pkgs.spotify];
|
||||||
|
};
|
||||||
|
}
|
||||||
33
roles/desktop/programs/ssh.nix
Normal file
33
roles/desktop/programs/ssh.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{...}: {
|
||||||
|
programs.ssh.knownHosts = {
|
||||||
|
everest = {
|
||||||
|
hostNames = [
|
||||||
|
"everest.tailscale"
|
||||||
|
"toast003.xyz"
|
||||||
|
];
|
||||||
|
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAqfABZKnF5YYGZTOKuT7m+sOnUqBQSvLke9c3JDsF5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.toast = {
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
enableDefaultConfig = false;
|
||||||
|
matchBlocks = {
|
||||||
|
"everest" = {
|
||||||
|
host = "toast003.xyz";
|
||||||
|
hostname = "toast003.xyz";
|
||||||
|
forwardAgent = true;
|
||||||
|
sendEnv = ["COLORTERM"];
|
||||||
|
port = 69;
|
||||||
|
};
|
||||||
|
"everest-tailscale" = {
|
||||||
|
host = "everest";
|
||||||
|
hostname = "everest.tailscale";
|
||||||
|
forwardAgent = true;
|
||||||
|
sendEnv = ["COLORTERM"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
roles/desktop/programs/sysdvr-qt.nix
Normal file
8
roles/desktop/programs/sysdvr-qt.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{...}: {
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee0", MODE="0666"
|
||||||
|
'';
|
||||||
|
home-manager.users.toast.services.flatpak = {
|
||||||
|
packages = ["io.github.parnassius.SysDVR-Qt"];
|
||||||
|
};
|
||||||
|
}
|
||||||
11
roles/desktop/services/default.nix
Normal file
11
roles/desktop/services/default.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./ssh-agent.nix
|
||||||
|
./flatpak.nix
|
||||||
|
./syncthing.nix
|
||||||
|
./pipewire.nix
|
||||||
|
./printing.nix
|
||||||
|
./networkmanager.nix
|
||||||
|
./tailscale.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
17
roles/desktop/services/flatpak.nix
Normal file
17
roles/desktop/services/flatpak.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{flakeSelf, ...}: {
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
sharedModules = [{imports = [flakeSelf.inputs.nix-flatpak.homeManagerModules.nix-flatpak];}];
|
||||||
|
users.toast = {
|
||||||
|
services.flatpak = {
|
||||||
|
packages = ["tv.plex.PlexDesktop"];
|
||||||
|
uninstallUnmanaged = true;
|
||||||
|
update.auto = {
|
||||||
|
enable = true;
|
||||||
|
onCalendar = "weekly";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
52
roles/desktop/services/networkmanager.nix
Normal file
52
roles/desktop/services/networkmanager.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
flakeSelf,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
tailscaleName = config.services.tailscale.interfaceName;
|
||||||
|
in {
|
||||||
|
sops.secrets.wifiPasswords = {
|
||||||
|
sopsFile = "${flakeSelf.inputs.secrets}/wifi-passwords.env";
|
||||||
|
format = "dotenv";
|
||||||
|
};
|
||||||
|
networking.networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
unmanaged = [
|
||||||
|
"interface-name:${tailscaleName}"
|
||||||
|
];
|
||||||
|
ensureProfiles = {
|
||||||
|
environmentFiles = [config.sops.secrets.wifiPasswords.path];
|
||||||
|
profiles = with lib.toast.networkManager; {
|
||||||
|
"4g-modem" = mkWifiProfile {
|
||||||
|
id = "4G Modem";
|
||||||
|
priority = 5;
|
||||||
|
ssid = "TP-Link_CCB4";
|
||||||
|
wifi-security = {
|
||||||
|
auth-alg = "open";
|
||||||
|
key-mgmt = "wpa-psk";
|
||||||
|
psk = "$MODEM";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
phone = mkWifiProfile {
|
||||||
|
id = "Phone";
|
||||||
|
priority = 5;
|
||||||
|
ssid = "Redmi Note 10 Pro_5197";
|
||||||
|
wifi-security = {
|
||||||
|
auth-alg = "open";
|
||||||
|
key-mgmt = "sae";
|
||||||
|
psk = "$PHONE";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home = mkWifiProfile {
|
||||||
|
id = "Home";
|
||||||
|
ssid = "MOVISTAR-WIFI6-DC98";
|
||||||
|
wifi-security = {
|
||||||
|
key-mgmt = "sae";
|
||||||
|
psk = "$HOME";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
roles/desktop/services/pipewire.nix
Normal file
9
roles/desktop/services/pipewire.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{...}: {
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# This allows pipewire to get realtime priority, which (hopefully) gets rid of stutters
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
}
|
||||||
7
roles/desktop/services/printing.nix
Normal file
7
roles/desktop/services/printing.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{...}: {
|
||||||
|
services.printing = {
|
||||||
|
enable = true;
|
||||||
|
startWhenNeeded = true;
|
||||||
|
stateless = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
19
roles/desktop/services/ssh-agent.nix
Normal file
19
roles/desktop/services/ssh-agent.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{...}: {
|
||||||
|
programs.ssh.startAgent = true;
|
||||||
|
/*
|
||||||
|
Home assistant added an option that does this
|
||||||
|
https://github.com/nix-community/home-manager/commit/2d9210f25ed18d5d4e11e6b886de4027c0c51a94
|
||||||
|
but since I still need to fix home-manager's envvars not applying I'll stick to the NixOS one
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
TODO: fix SSH_AUTH_SOCK not being set in Plasma
|
||||||
|
Turns out the NixOS module also has issues :3
|
||||||
|
The env is set but only in bash, not in the DE, so
|
||||||
|
keepass can't pick it up. For now I'll just set it manually
|
||||||
|
*/
|
||||||
|
home-manager.users.toast.xdg.configFile."plasma-workspace/env/ssh-agent.sh".text = ''
|
||||||
|
if [[ -z "$SSH_AUTH_SOCK" ]]; then
|
||||||
|
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
}
|
||||||
57
roles/desktop/services/syncthing.nix
Normal file
57
roles/desktop/services/syncthing.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
{config, ...}: {
|
||||||
|
services.syncthing = {
|
||||||
|
# enable = true;
|
||||||
|
# user = "toast";
|
||||||
|
# group = "users";
|
||||||
|
# dataDir = config.users.users.toast.home;
|
||||||
|
settings.folders."passwords".path = "~/Documents/Passwords";
|
||||||
|
};
|
||||||
|
age.secrets = {
|
||||||
|
syncthingCert = {
|
||||||
|
owner = "toast";
|
||||||
|
group = "users";
|
||||||
|
};
|
||||||
|
syncthingKey = {
|
||||||
|
owner = "toast";
|
||||||
|
group = "users";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home-manager.users.toast = {
|
||||||
|
osConfig,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
systemConfig = osConfig.services.syncthing;
|
||||||
|
missingOptions = [
|
||||||
|
"all_proxy"
|
||||||
|
"configDir"
|
||||||
|
"dataDir"
|
||||||
|
"databaseDir"
|
||||||
|
"declarative"
|
||||||
|
"devices"
|
||||||
|
"folders"
|
||||||
|
"extraFlags"
|
||||||
|
"user"
|
||||||
|
"group"
|
||||||
|
"systemService"
|
||||||
|
"openDefaultPorts"
|
||||||
|
"options"
|
||||||
|
"relay"
|
||||||
|
"useInotify"
|
||||||
|
"guiPasswordFile"
|
||||||
|
];
|
||||||
|
removeMissingOptions = rawOptions: (
|
||||||
|
# lib.attrsets.filterAttrs (n: v: n == "all_proxy") rawOptions
|
||||||
|
builtins.removeAttrs rawOptions missingOptions
|
||||||
|
);
|
||||||
|
in {
|
||||||
|
services.syncthing =
|
||||||
|
removeMissingOptions systemConfig
|
||||||
|
// {
|
||||||
|
enable = true;
|
||||||
|
# Renamed options
|
||||||
|
allProxy = systemConfig.all_proxy;
|
||||||
|
extraOptions = systemConfig.extraFlags;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
16
roles/desktop/services/tailscale.nix
Normal file
16
roles/desktop/services/tailscale.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
services.tailscale-systray = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.tailscale.overrideAttrs {
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace client/systray/logo.go --replace-fail \
|
||||||
|
"color.NRGBA{0, 0, 0, 255}" "color.NRGBA{0, 0, 0, 0}"
|
||||||
|
'';
|
||||||
|
# Only use this for the tray, so no testing is needed
|
||||||
|
# Makes the build last a lot less too
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
16
roles/gaming/default.nix
Normal file
16
roles/gaming/default.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
./programs
|
||||||
|
./services
|
||||||
|
];
|
||||||
|
system.replaceDependencies.replacements = [
|
||||||
|
{
|
||||||
|
oldDependency = pkgs.sdl3;
|
||||||
|
newDependency = pkgs.sdl3.overrideAttrs {
|
||||||
|
patches = [
|
||||||
|
./sdl-keychron-blacklist.patch
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
18
roles/gaming/programs/azahar.nix
Normal file
18
roles/gaming/programs/azahar.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
# nixpkgs.overlays = [
|
||||||
|
# (
|
||||||
|
# final: prev: {
|
||||||
|
# azahar = prev.azahar.overrideAttrs (old: {
|
||||||
|
# version = "2120.3";
|
||||||
|
# src = final.fetchzip {
|
||||||
|
# url = "https://github.com/azahar-emu/azahar/releases/download/2120.3/azahar-unified-source-20250414-00e3bbb.tar.xz";
|
||||||
|
# hash = "sha256-3QKicmpmWDM7x9GDJ8sxm2Xu+0Yfho4LkSWMp+ixzRk=";
|
||||||
|
# };
|
||||||
|
# });
|
||||||
|
# }
|
||||||
|
# )
|
||||||
|
# ];
|
||||||
|
home-manager.users.toast = {
|
||||||
|
home.packages = [pkgs.azahar];
|
||||||
|
};
|
||||||
|
}
|
||||||
7
roles/gaming/programs/cemu.nix
Normal file
7
roles/gaming/programs/cemu.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
home = {
|
||||||
|
packages = [pkgs.cemu];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
15
roles/gaming/programs/default.nix
Executable file
15
roles/gaming/programs/default.nix
Executable file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
./steam.nix
|
||||||
|
./mangohud.nix
|
||||||
|
./rpcs3.nix
|
||||||
|
./retroarch.nix
|
||||||
|
./pcsx2.nix
|
||||||
|
./cemu.nix
|
||||||
|
./azahar.nix
|
||||||
|
];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
heroic
|
||||||
|
prismlauncher
|
||||||
|
];
|
||||||
|
}
|
||||||
13
roles/gaming/programs/mangohud.nix
Normal file
13
roles/gaming/programs/mangohud.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.toast = {...}: {
|
||||||
|
programs.mangohud = {
|
||||||
|
enable = true;
|
||||||
|
# This only works for Vulkan, openGL programs still need the mangohud wrapper
|
||||||
|
enableSessionWide = true;
|
||||||
|
settings = {
|
||||||
|
preset = 4;
|
||||||
|
no_display = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
141
roles/gaming/programs/pcsx2.nix
Normal file
141
roles/gaming/programs/pcsx2.nix
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
pcsx2-bios = pkgs.fetchzip {
|
||||||
|
url = "https://myrient.erista.me/files/Redump/Sony%20-%20PlayStation%202%20-%20BIOS%20Images%20%28DoM%20Version%29/ps2-0200a-20040614.zip";
|
||||||
|
hash = "sha256-wMvswgmsKl+cJl49VlVW84tvU5Jzd+2dl07SOiUDtwA=";
|
||||||
|
};
|
||||||
|
toPcsx2INI = lib.generators.toINI {listsAsDuplicateKeys = true;};
|
||||||
|
in {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pcsx2
|
||||||
|
];
|
||||||
|
xdg.configFile = {
|
||||||
|
#PCSX2 silently overwrites the symlink so I need to force it's creation
|
||||||
|
"PCSX2/inis/PCSX2.ini".force = true;
|
||||||
|
"PCSX2/inis/PCSX2.ini".text = toPcsx2INI {
|
||||||
|
UI = {
|
||||||
|
SettingsVersion = 1;
|
||||||
|
# Use the system theme
|
||||||
|
Theme = "";
|
||||||
|
HideMouseCursor = true;
|
||||||
|
};
|
||||||
|
Folders = {
|
||||||
|
Bios = "/home/toast/.local/share/PCSX2/bios";
|
||||||
|
};
|
||||||
|
GameList.RecursivePaths = [
|
||||||
|
"/home/toast/Games/PS2/"
|
||||||
|
];
|
||||||
|
"EmuCore/GS" = {
|
||||||
|
dithering_ps2 = 1;
|
||||||
|
upscale_multiplier = 2;
|
||||||
|
};
|
||||||
|
EmuCore = {
|
||||||
|
EnableDiscordPresence = true;
|
||||||
|
EnableFastBoot = true;
|
||||||
|
McdFolderAutoManage = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
MemoryCards.Slot1_Filename = "MemoryCard1.ps2";
|
||||||
|
|
||||||
|
# Controller settings
|
||||||
|
Pad1 = {
|
||||||
|
Up = "SDL-0/DPadUp";
|
||||||
|
Right = "SDL-0/DPadRight";
|
||||||
|
Down = "SDL-0/DPadDown";
|
||||||
|
Left = "SDL-0/DPadLeft";
|
||||||
|
Triangle = "SDL-0/Y";
|
||||||
|
Circle = "SDL-0/B";
|
||||||
|
Cross = "SDL-0/A";
|
||||||
|
Square = "SDL-0/X";
|
||||||
|
Select = "SDL-0/Back";
|
||||||
|
Start = "SDL-0/Start";
|
||||||
|
L1 = "SDL-0/LeftShoulder";
|
||||||
|
L2 = "SDL-0/+LeftTrigger";
|
||||||
|
R1 = "SDL-0/RightShoulder";
|
||||||
|
R2 = "SDL-0/+RightTrigger";
|
||||||
|
L3 = "SDL-0/LeftStick";
|
||||||
|
R3 = "SDL-0/RightStick";
|
||||||
|
Analog = "SDL-0/Guide";
|
||||||
|
LUp = "SDL-0/-LeftY";
|
||||||
|
LRight = "SDL-0/+LeftX";
|
||||||
|
LDown = "SDL-0/+LeftY";
|
||||||
|
LLeft = "SDL-0/-LeftX";
|
||||||
|
RUp = "SDL-0/-RightY";
|
||||||
|
RRight = "SDL-0/+RightX";
|
||||||
|
RDown = "SDL-0/+RightY";
|
||||||
|
RLeft = "SDL-0/-RightX";
|
||||||
|
LargeMotor = "SDL-0/LargeMotor";
|
||||||
|
SmallMotor = "SDL-0/SmallMotor";
|
||||||
|
};
|
||||||
|
# Default hotkeys
|
||||||
|
Hotkeys = {
|
||||||
|
ToggleFullscreen = "Keyboard/Alt & Keyboard/Return";
|
||||||
|
CycleAspectRatio = "Keyboard/F6";
|
||||||
|
CycleInterlaceMode = "Keyboard/F5";
|
||||||
|
CycleMipmapMode = "Keyboard/Insert";
|
||||||
|
GSDumpMultiFrame = "Keyboard/Control & Keyboard/Shift & Keyboard/F8";
|
||||||
|
Screenshot = "Keyboard/F8";
|
||||||
|
GSDumpSingleFrame = "Keyboard/Shift & Keyboard/F8";
|
||||||
|
ToggleSoftwareRendering = "Keyboard/F9";
|
||||||
|
ZoomIn = "Keyboard/Control & Keyboard/Plus";
|
||||||
|
ZoomOut = "Keyboard/Control & Keyboard/Minus";
|
||||||
|
InputRecToggleMode = "Keyboard/Shift & Keyboard/R";
|
||||||
|
LoadStateFromSlot = "Keyboard/F3";
|
||||||
|
SaveStateToSlot = "Keyboard/F1";
|
||||||
|
NextSaveStateSlot = "Keyboard/F2";
|
||||||
|
PreviousSaveStateSlot = "Keyboard/Shift & Keyboard/F2";
|
||||||
|
OpenPauseMenu = "Keyboard/Escape";
|
||||||
|
ToggleFrameLimit = "Keyboard/F4";
|
||||||
|
TogglePause = "Keyboard/Space";
|
||||||
|
ToggleSlowMotion = "Keyboard/Shift & Keyboard/Backtab";
|
||||||
|
ToggleTurbo = "Keyboard/Tab";
|
||||||
|
HoldTurbo = "Keyboard/Period";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# 007 nightfire
|
||||||
|
"PCSX2/gamesettings/SLUS-20579_5B86BB62.ini".text = toPcsx2INI {
|
||||||
|
"EmuCore/GS".AspectRatio = "16:9";
|
||||||
|
};
|
||||||
|
"PCSX2/gamesettings/SLUS-21050_BEBF8793.ini".text = toPcsx2INI {
|
||||||
|
"EmuCore/GS".AspectRatio = "16:9";
|
||||||
|
Patches.Enable = [
|
||||||
|
"60 FPS for Crashes"
|
||||||
|
"60 FPS for Menus"
|
||||||
|
"Progressive Scan"
|
||||||
|
"MPH to KPH"
|
||||||
|
"Extra Particles While Driving"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdg.dataFile = {
|
||||||
|
# I would prefer to use symlinkJoin like I do for the ISOs, but
|
||||||
|
# the bios folder needs to be writable to store the bios settings
|
||||||
|
"PCSX2/bios/ntsc.bin".source = pkgs.runCommandLocal "pcsx2-bios" {} ''
|
||||||
|
cp -v ${pcsx2-bios}/*.bin $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Syncthing
|
||||||
|
services.syncthing.settings.folders."pcsx2" = {
|
||||||
|
label = "PCSX2";
|
||||||
|
id = "qcdsp-qaaej";
|
||||||
|
devices = ["steamdeck" "server" "pc" "winmax2"];
|
||||||
|
path = "~/.config/PCSX2";
|
||||||
|
};
|
||||||
|
home-manager.users.toast.xdg.configFile = {
|
||||||
|
"PCSX2/.stignore".text = ''
|
||||||
|
cache
|
||||||
|
bios
|
||||||
|
gamesettings
|
||||||
|
inis/PCSX2.ini*
|
||||||
|
inis/debuggersettings
|
||||||
|
inputprofiles
|
||||||
|
logs
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
87
roles/gaming/programs/retroarch.nix
Normal file
87
roles/gaming/programs/retroarch.nix
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home-manager.users.toast = {
|
||||||
|
home = {
|
||||||
|
packages = [
|
||||||
|
(
|
||||||
|
pkgs.wrapRetroArch {
|
||||||
|
cores = with pkgs.libretro; [
|
||||||
|
snes9x
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
video_driver = "vulkan";
|
||||||
|
video_fullscreen = "true";
|
||||||
|
menu_swap_ok_cancel_buttons = "true";
|
||||||
|
input_joypad_driver = "sdl2";
|
||||||
|
# Enable touchscreen support
|
||||||
|
menu_pointer_enable = "true";
|
||||||
|
|
||||||
|
# Folder stuffs
|
||||||
|
|
||||||
|
# System/BIOS files
|
||||||
|
system_directory = "~/.local/share/retroarch/system";
|
||||||
|
# Downloads
|
||||||
|
core_assets_directory = "~/.local/share/retroarch/downloads";
|
||||||
|
thumbnails_directory = "~/.local/share/retroarch/thumbnails";
|
||||||
|
content_database_path = "~/.local/share/retroarch/database/rdb";
|
||||||
|
cheat_database_path = "~/.local/share/retroarch/cheats";
|
||||||
|
video_filter_dir = "~/.local/share/retroarch/filters/video";
|
||||||
|
audio_filter_dir = "~/.local/share/retroarch/filters/audio";
|
||||||
|
video_shader_dir = "~/.local/share/retroarch/shaders";
|
||||||
|
recording_output_directory = "~/.local/share/retroarch/records";
|
||||||
|
overlay_directory = "~/.local/share/retroarch/overlays";
|
||||||
|
osk_overlay_directory = "~/.local/share/retroarch/overlays/keyboards";
|
||||||
|
screenshot_directory = "~/.local/share/retroarch/screenshots";
|
||||||
|
playlist_directory = "~/.local/share/retroarch/playlists";
|
||||||
|
savefile_directory = "~/.local/share/retroarch/saves";
|
||||||
|
savestate_directory = "~/.local/share/retroarch/states";
|
||||||
|
log_dir = "~/.local/share/retroarch/logs";
|
||||||
|
|
||||||
|
# By default settings has some things that this overrides, so I need to set them myself
|
||||||
|
libretro_info_path = "${pkgs.libretro-core-info}/share/retroarch/cores";
|
||||||
|
joypad_autoconfig_dir = "${pkgs.retroarch-joypad-autoconfig}/share/libretro/autoconfig";
|
||||||
|
assets_directory = "${pkgs.retroarch-assets}/share/retroarch/assets";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# Retroarch is dumb since it doesn't generate some folders (but it does for others)
|
||||||
|
systemd.user.tmpfiles.rules = [
|
||||||
|
"d /%h/.local/share/retroarch/playlists"
|
||||||
|
"d /%h/.local/share/retroarch/saves"
|
||||||
|
"d /%h/.local/share/retroarch/states"
|
||||||
|
];
|
||||||
|
systemd.user.paths = {
|
||||||
|
snes-roms = {
|
||||||
|
Unit.Description = "Monitor SNES rom path for changes";
|
||||||
|
Path = {
|
||||||
|
PathChanged = "/%h/Games/SNES";
|
||||||
|
Unit = "update-retroarch-library.service";
|
||||||
|
};
|
||||||
|
Install.WantedBy = ["default.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.user.services.update-retroarch-library = {
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = pkgs.writeShellScript "scan-snes-games" ''
|
||||||
|
${pkgs.libnotify}/bin/notify-send -a RetroArch \
|
||||||
|
-i retroarch \
|
||||||
|
"SNES games changed!" \
|
||||||
|
"Scanning $TRIGGER_PATH..."
|
||||||
|
${pkgs.retroarch}/bin/retroarch --scan "/home/toast/Games/SNES"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Sync saves and some other stuff
|
||||||
|
services.syncthing.settings.folders = {
|
||||||
|
"retroarch" = {
|
||||||
|
label = "RetroArch";
|
||||||
|
id = "jxuou-2yjnu";
|
||||||
|
devices = ["steamdeck" "server" "pc" "winmax2"];
|
||||||
|
path = "~/.local/share/retroarch";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
15
roles/gaming/programs/rpcs3.nix
Normal file
15
roles/gaming/programs/rpcs3.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
rpcs3
|
||||||
|
];
|
||||||
|
|
||||||
|
# Increase the memory lock limit
|
||||||
|
security.pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "*";
|
||||||
|
item = "memlock";
|
||||||
|
type = "-"; # Applies to both hard and soft limits
|
||||||
|
value = "unlimited";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
34
roles/gaming/programs/steam.nix
Normal file
34
roles/gaming/programs/steam.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
localNetworkGameTransfers.openFirewall = true;
|
||||||
|
# Doubt that I'll use it, but I'll enable it anyways
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
|
||||||
|
extraCompatPackages = with pkgs; [
|
||||||
|
proton-ge-bin
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Some linux native games (rise of the tomb raider) use alsa for sound
|
||||||
|
services.pipewire.alsa.enable =
|
||||||
|
if config.services.pipewire.pulse.enable == true
|
||||||
|
then true
|
||||||
|
else false;
|
||||||
|
|
||||||
|
home-manager.users.toast = {
|
||||||
|
systemd.user.tmpfiles.rules = [
|
||||||
|
"r '/%h/.local/share/applications/Steam Linux Runtime *.desktop'"
|
||||||
|
"r '/%h/.local/share/applications/Proton *.desktop'"
|
||||||
|
];
|
||||||
|
services.flatpak.packages = [
|
||||||
|
# Celeste mod manager
|
||||||
|
"io.github.everestapi.Olympus"
|
||||||
|
];
|
||||||
|
home.packages = [pkgs.sgdboop];
|
||||||
|
};
|
||||||
|
}
|
||||||
13
roles/gaming/sdl-keychron-blacklist.patch
Normal file
13
roles/gaming/sdl-keychron-blacklist.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c
|
||||||
|
index 5ce36de86..37bf5ca85 100644
|
||||||
|
--- a/src/joystick/SDL_joystick.c
|
||||||
|
+++ b/src/joystick/SDL_joystick.c
|
||||||
|
@@ -281,6 +281,8 @@ static Uint32 initial_blacklist_devices[] = {
|
||||||
|
MAKE_VIDPID(0x3297, 0x1969), // Moonlander MK1 Keyboard
|
||||||
|
MAKE_VIDPID(0x3434, 0x0211), // Keychron K1 Pro System Control
|
||||||
|
MAKE_VIDPID(0x04f2, 0xa13c), // HP Deluxe Webcam KQ246AA
|
||||||
|
+ MAKE_VIDPID(0x3434, 0x0353), // Keychron V5 System Control
|
||||||
|
+ MAKE_VIDPID(0x3434, 0xd030), // Keychron Link
|
||||||
|
};
|
||||||
|
static SDL_vidpid_list blacklist_devices = {
|
||||||
|
SDL_HINT_JOYSTICK_BLACKLIST_DEVICES, 0, 0, NULL,
|
||||||
5
roles/gaming/services/default.nix
Normal file
5
roles/gaming/services/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./syncthing.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
37
roles/gaming/services/syncthing.nix
Normal file
37
roles/gaming/services/syncthing.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
{...}: {
|
||||||
|
/*
|
||||||
|
This file will sync saves for games that don't have cloud saves
|
||||||
|
TODO: turn this into a module eventually
|
||||||
|
*/
|
||||||
|
|
||||||
|
services.syncthing.settings.folders = {
|
||||||
|
"steam-201810" = {
|
||||||
|
label = "Wolfenstein The New Order Saves";
|
||||||
|
id = "laxxf-t2wmy";
|
||||||
|
devices = ["steamdeck" "server" "pc" "winmax2"];
|
||||||
|
path = "~/.local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/";
|
||||||
|
};
|
||||||
|
"project-diva-mods" = {
|
||||||
|
label = "Project Diva Mods";
|
||||||
|
id = "7pscj-6egww";
|
||||||
|
devices = ["steamdeck" "server" "pc" "winmax2"];
|
||||||
|
path = "~/.local/share/Steam/steamapps/common/Hatsune Miku Project DIVA Mega Mix Plus/mods/";
|
||||||
|
};
|
||||||
|
"project-eden-saves" = {
|
||||||
|
label = "Project Eden saves";
|
||||||
|
id = "xa3qx-3ax5k";
|
||||||
|
devices = ["server" "pc" "winmax2" "steamdeck"];
|
||||||
|
path = "~/.local/share/Steam/steamapps/compatdata/1761390/pfx/drive_c/users/steamuser/AppData/Roaming/EDEN/";
|
||||||
|
};
|
||||||
|
"games" = {
|
||||||
|
label = "Games";
|
||||||
|
id = "mwzph-gf2df";
|
||||||
|
devices = ["server" "pc" "winmax2" "steamdeck"];
|
||||||
|
path = "~/Games";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home-manager.users.toast.home.file."steam-201810-ignore" = {
|
||||||
|
target = ".local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/.stignore";
|
||||||
|
text = "base/qconsole.log\nbase/wolfConfig.cfg";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./plasma.nix
|
./plasma.nix
|
||||||
|
./sddm.nix
|
||||||
|
./programs
|
||||||
|
./patches
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
29
roles/kde/patches/default.nix
Normal file
29
roles/kde/patches/default.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
rootDirs = builtins.readDir ./.;
|
||||||
|
removeFiles = lib.attrsets.filterAttrs (n: v: v == "directory") rootDirs;
|
||||||
|
programsToPatch = builtins.attrNames removeFiles;
|
||||||
|
|
||||||
|
bigOverlay = final: prev:
|
||||||
|
lib.attrsets.mergeAttrsList (
|
||||||
|
lib.lists.forEach programsToPatch (
|
||||||
|
program: let
|
||||||
|
unpatchedProgram = prev."${program}";
|
||||||
|
newPatches = lib.toast.patches.patchesInPath (lib.path.append ./. program);
|
||||||
|
in {
|
||||||
|
"${program}" = unpatchedProgram.overrideAttrs {
|
||||||
|
version = "${unpatchedProgram.version}-patched";
|
||||||
|
__intentionallyOverridingVersion = true;
|
||||||
|
patches = unpatchedProgram.patches ++ newPatches;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
in {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(
|
||||||
|
final: prev: {
|
||||||
|
kdePackages = prev.kdePackages.overrideScope bigOverlay;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
}
|
||||||
6
roles/kde/patches/plasma-desktop/patches.txt
Normal file
6
roles/kde/patches/plasma-desktop/patches.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
Plasma 6.6.0:
|
||||||
|
|
||||||
|
Pr 3256 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3256
|
||||||
|
Pr 3259 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3259
|
||||||
|
Pr 3269 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3269
|
||||||
|
Pr 3356 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3356
|
||||||
94
roles/kde/patches/plasma-desktop/pr3256.patch
Normal file
94
roles/kde/patches/plasma-desktop/pr3256.patch
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
From 79d010f4bcdb19d5a19d222dd3c3cb581fde891d Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Redondo <kde@david-redondo.de>
|
||||||
|
Date: Fri, 17 Oct 2025 15:15:51 +0200
|
||||||
|
Subject: [PATCH] applets/taskmanager: Allow changing a tasks volume by
|
||||||
|
scrolling
|
||||||
|
|
||||||
|
FEATURE:510668
|
||||||
|
FIXED-IN:6.6
|
||||||
|
---
|
||||||
|
.../package/contents/config/main.xml | 1 +
|
||||||
|
.../package/contents/ui/ConfigBehavior.qml | 3 ++-
|
||||||
|
.../package/contents/ui/MouseHandler.qml | 20 +++++++++++++++++++
|
||||||
|
3 files changed, 23 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/applets/taskmanager/package/contents/config/main.xml b/applets/taskmanager/package/contents/config/main.xml
|
||||||
|
index f71a7a8457..8c3b68785b 100644
|
||||||
|
--- a/applets/taskmanager/package/contents/config/main.xml
|
||||||
|
+++ b/applets/taskmanager/package/contents/config/main.xml
|
||||||
|
@@ -90,6 +90,7 @@
|
||||||
|
<choice name="None"/>
|
||||||
|
<choice name="AllTask"/>
|
||||||
|
<choice name="TaskOnly"/>
|
||||||
|
+ <choice name="AdjustVolume"/>
|
||||||
|
</choices>
|
||||||
|
<default>0</default>
|
||||||
|
</entry>
|
||||||
|
diff --git a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
|
||||||
|
index 2c0dc19154..73357e9dcd 100644
|
||||||
|
--- a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
|
||||||
|
+++ b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
|
||||||
|
@@ -202,13 +202,14 @@ KCMUtils.SimpleKCM {
|
||||||
|
|
||||||
|
QQC2.ComboBox {
|
||||||
|
id: wheelEnabled
|
||||||
|
- Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows'", "Scrolling behavior:")
|
||||||
|
+ Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows/adjusts the hovered task’s volume''", "Scrolling behavior:")
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.minimumWidth: Kirigami.Units.gridUnit * 14
|
||||||
|
model: [
|
||||||
|
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior does nothing'", "Does nothing"),
|
||||||
|
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through all tasks'", "Cycles through all tasks"),
|
||||||
|
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through the hovered task's windows'", "Cycles through the hovered task’s windows"),
|
||||||
|
+ i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior adjusts the hovered task’s volume'", "Adjusts the hovered task’s volume"),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/applets/taskmanager/package/contents/ui/MouseHandler.qml b/applets/taskmanager/package/contents/ui/MouseHandler.qml
|
||||||
|
index cf2362835a..3f8d703d73 100644
|
||||||
|
--- a/applets/taskmanager/package/contents/ui/MouseHandler.qml
|
||||||
|
+++ b/applets/taskmanager/package/contents/ui/MouseHandler.qml
|
||||||
|
@@ -8,6 +8,7 @@ import QtQuick
|
||||||
|
|
||||||
|
import org.kde.taskmanager as TaskManager
|
||||||
|
import org.kde.plasma.plasmoid
|
||||||
|
+import org.kde.plasma.private.volume as PlasmaPa
|
||||||
|
|
||||||
|
import "code/tools.js" as TaskTools
|
||||||
|
|
||||||
|
@@ -157,6 +158,10 @@ DropArea {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ PlasmaPa.GlobalConfig {
|
||||||
|
+ id: plasmaPaConfig
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
WheelHandler {
|
||||||
|
id: wheelHandler
|
||||||
|
|
||||||
|
@@ -179,6 +184,21 @@ DropArea {
|
||||||
|
increment--;
|
||||||
|
}
|
||||||
|
const anchor = dropArea.target.childAt(event.x, event.y);
|
||||||
|
+ if (Plasmoid.configuration.wheelEnabled === 3) {
|
||||||
|
+ const loudest = anchor?.audioStreams?.reduce((loudest, stream) => Math.max(loudest, stream.volume), 0)
|
||||||
|
+ const step = (pulseAudio.item.normalVolume - pulseAudio.item.minimalVolume) * plasmaPaConfig.volumeStep / 100;
|
||||||
|
+ anchor?.audioStreams?.forEach((stream) => {
|
||||||
|
+ let delta = step * increment;
|
||||||
|
+ if (loudest > 0) {
|
||||||
|
+ delta *= stream.volume / loudest;
|
||||||
|
+ }
|
||||||
|
+ const volume = stream.volume + delta;
|
||||||
|
+ console.log(volume, Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume)));
|
||||||
|
+ stream.model.Volume = Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume));
|
||||||
|
+ stream.model.Muted = volume === 0
|
||||||
|
+ })
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
while (increment !== 0) {
|
||||||
|
TaskTools.activateNextPrevTask(anchor, increment < 0, Plasmoid.configuration.wheelSkipMinimized, Plasmoid.configuration.wheelEnabled, tasks);
|
||||||
|
increment += (increment < 0) ? 1 : -1;
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
78
roles/kde/patches/plasma-desktop/pr3259.patch
Normal file
78
roles/kde/patches/plasma-desktop/pr3259.patch
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
From 57885ba4ec524bdc1c1326228f27c1c3a3561bba Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nate Graham <nate@kde.org>
|
||||||
|
Date: Tue, 21 Oct 2025 13:39:40 -0600
|
||||||
|
Subject: [PATCH] applets/kickoff: add spacing between non-switch-on-hover
|
||||||
|
category items
|
||||||
|
|
||||||
|
Otherwise, their highlight effects touch, and it looks bad.
|
||||||
|
|
||||||
|
To avoid blowing up the layout as a result of this change, slightly
|
||||||
|
decrease the height of these category list items too, which also reduces
|
||||||
|
some code complexity.
|
||||||
|
|
||||||
|
BUG: 508985
|
||||||
|
FIXED-IN: 6.6.0
|
||||||
|
---
|
||||||
|
applets/kickoff/ApplicationsPage.qml | 1 +
|
||||||
|
applets/kickoff/KickoffListDelegate.qml | 9 ---------
|
||||||
|
applets/kickoff/KickoffListView.qml | 5 +++++
|
||||||
|
3 files changed, 6 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
|
||||||
|
index c2baa75b52..fe8d6eaafb 100644
|
||||||
|
--- a/applets/kickoff/ApplicationsPage.qml
|
||||||
|
+++ b/applets/kickoff/ApplicationsPage.qml
|
||||||
|
@@ -20,6 +20,7 @@ BasePage {
|
||||||
|
id: sideBar
|
||||||
|
focus: true // needed for Loaders
|
||||||
|
model: kickoff.rootModel
|
||||||
|
+ showingCategories: true
|
||||||
|
// needed otherwise app displayed at top-level will show a first character as group.
|
||||||
|
section.property: ""
|
||||||
|
delegate: KickoffListDelegate {
|
||||||
|
diff --git a/applets/kickoff/KickoffListDelegate.qml b/applets/kickoff/KickoffListDelegate.qml
|
||||||
|
index b1f8afb3ce..02bfcfcacd 100644
|
||||||
|
--- a/applets/kickoff/KickoffListDelegate.qml
|
||||||
|
+++ b/applets/kickoff/KickoffListDelegate.qml
|
||||||
|
@@ -72,15 +72,6 @@ AbstractKickoffItemDelegate {
|
||||||
|
id: label
|
||||||
|
Layout.fillWidth: !descriptionLabel.visible
|
||||||
|
Layout.maximumWidth: root.width - root.leftPadding - root.rightPadding - icon.width - row.spacing
|
||||||
|
- Layout.preferredHeight: {
|
||||||
|
- if (root.isCategoryListItem) {
|
||||||
|
- return root.compact ? implicitHeight : Math.round(implicitHeight * 1.5);
|
||||||
|
- }
|
||||||
|
- if (!root.compact && !descriptionLabel.visible) {
|
||||||
|
- return implicitHeight + descriptionLabel.implicitHeight
|
||||||
|
- }
|
||||||
|
- return implicitHeight;
|
||||||
|
- }
|
||||||
|
text: root.text
|
||||||
|
textFormat: root.isMultilineText ? Text.StyledText : Text.PlainText
|
||||||
|
elide: Text.ElideRight
|
||||||
|
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
|
||||||
|
index c7787493e0..382d146428 100644
|
||||||
|
--- a/applets/kickoff/KickoffListView.qml
|
||||||
|
+++ b/applets/kickoff/KickoffListView.qml
|
||||||
|
@@ -33,6 +33,7 @@ EmptyPage {
|
||||||
|
property alias section: view.section
|
||||||
|
property alias highlight: view.highlight
|
||||||
|
property alias view: view
|
||||||
|
+ property bool showingCategories: false
|
||||||
|
|
||||||
|
property bool mainContentView: false
|
||||||
|
property bool hasSectionView: false
|
||||||
|
@@ -144,6 +145,10 @@ EmptyPage {
|
||||||
|
width: view.availableWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
|
||||||
|
+ // When this happens, their highlights tuoch and look ungly without some artificial spacing added.
|
||||||
|
+ spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
|
||||||
|
+
|
||||||
|
section {
|
||||||
|
property: "group"
|
||||||
|
criteria: ViewSection.FullString
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
66
roles/kde/patches/plasma-desktop/pr3269.patch
Normal file
66
roles/kde/patches/plasma-desktop/pr3269.patch
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
From a63fce38f285b59407c24f44639023d41b5d3ca9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nate Graham <nate@kde.org>
|
||||||
|
Date: Thu, 30 Oct 2025 20:01:32 -0600
|
||||||
|
Subject: [PATCH] applets/kickoff: add separation between Places page list
|
||||||
|
items too
|
||||||
|
|
||||||
|
Missed in 57885ba4ec524bdc1c1326228f27c1c3a3561bba
|
||||||
|
|
||||||
|
BUG: 508985
|
||||||
|
FIXED-IN: 6.6.0
|
||||||
|
---
|
||||||
|
applets/kickoff/ApplicationsPage.qml | 2 +-
|
||||||
|
applets/kickoff/KickoffListView.qml | 4 ++--
|
||||||
|
applets/kickoff/PlacesPage.qml | 1 +
|
||||||
|
3 files changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
|
||||||
|
index fe8d6eaafb..206ddd958d 100644
|
||||||
|
--- a/applets/kickoff/ApplicationsPage.qml
|
||||||
|
+++ b/applets/kickoff/ApplicationsPage.qml
|
||||||
|
@@ -20,7 +20,7 @@ BasePage {
|
||||||
|
id: sideBar
|
||||||
|
focus: true // needed for Loaders
|
||||||
|
model: kickoff.rootModel
|
||||||
|
- showingCategories: true
|
||||||
|
+ isSidebar: true
|
||||||
|
// needed otherwise app displayed at top-level will show a first character as group.
|
||||||
|
section.property: ""
|
||||||
|
delegate: KickoffListDelegate {
|
||||||
|
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
|
||||||
|
index 382d146428..2d67bd59b7 100644
|
||||||
|
--- a/applets/kickoff/KickoffListView.qml
|
||||||
|
+++ b/applets/kickoff/KickoffListView.qml
|
||||||
|
@@ -33,7 +33,7 @@ EmptyPage {
|
||||||
|
property alias section: view.section
|
||||||
|
property alias highlight: view.highlight
|
||||||
|
property alias view: view
|
||||||
|
- property bool showingCategories: false
|
||||||
|
+ property bool isSidebar: false
|
||||||
|
|
||||||
|
property bool mainContentView: false
|
||||||
|
property bool hasSectionView: false
|
||||||
|
@@ -147,7 +147,7 @@ EmptyPage {
|
||||||
|
|
||||||
|
// Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
|
||||||
|
// When this happens, their highlights tuoch and look ungly without some artificial spacing added.
|
||||||
|
- spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
|
||||||
|
+ spacing: root.isSidebar && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
|
||||||
|
|
||||||
|
section {
|
||||||
|
property: "group"
|
||||||
|
diff --git a/applets/kickoff/PlacesPage.qml b/applets/kickoff/PlacesPage.qml
|
||||||
|
index ff92f535e4..7f81096834 100644
|
||||||
|
--- a/applets/kickoff/PlacesPage.qml
|
||||||
|
+++ b/applets/kickoff/PlacesPage.qml
|
||||||
|
@@ -19,6 +19,7 @@ BasePage {
|
||||||
|
id: sideBar
|
||||||
|
focus: true // needed for Loaders
|
||||||
|
model: placesCategoryModel
|
||||||
|
+ isSidebar: true
|
||||||
|
delegate: KickoffListDelegate {
|
||||||
|
url: ""
|
||||||
|
description: ""
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
37
roles/kde/patches/plasma-desktop/pr3356.patch
Normal file
37
roles/kde/patches/plasma-desktop/pr3356.patch
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
From 04c747a41d8c01248c7baeec5c852c2298f76fc3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christoph Wolk <cwo.kde@posteo.net>
|
||||||
|
Date: Mon, 1 Dec 2025 14:36:09 +0100
|
||||||
|
Subject: [PATCH] applets/kickoff: also close when triggering from footer menu
|
||||||
|
|
||||||
|
Kickoff already closes when one of the power/session buttons from the
|
||||||
|
menu is pressed, but the same does not happen if the same action is
|
||||||
|
shown in the overflow menu.
|
||||||
|
|
||||||
|
Instead, also close kickoff in that case.
|
||||||
|
|
||||||
|
CCBUG: 508725
|
||||||
|
---
|
||||||
|
applets/kickoff/LeaveButtons.qml | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/applets/kickoff/LeaveButtons.qml b/applets/kickoff/LeaveButtons.qml
|
||||||
|
index c9a14dc3254..acf83639341 100644
|
||||||
|
--- a/applets/kickoff/LeaveButtons.qml
|
||||||
|
+++ b/applets/kickoff/LeaveButtons.qml
|
||||||
|
@@ -214,7 +214,12 @@ RowLayout {
|
||||||
|
|
||||||
|
text: model.display
|
||||||
|
icon: model.decoration
|
||||||
|
- onClicked: filteredMenuItemsModel.trigger(index)
|
||||||
|
+ onClicked: {
|
||||||
|
+ filteredMenuItemsModel.trigger(index)
|
||||||
|
+ if (kickoff.hideOnWindowDeactivate) {
|
||||||
|
+ kickoff.expanded = false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
onObjectAdded: (index, object) => contextMenu.addMenuItem(object)
|
||||||
|
onObjectRemoved: (index, object) => contextMenu.removeMenuItem(object)
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue