mirror of
https://github.com/oqyude/nixos.git
synced 2026-06-16 06:51:50 +03:00
Compare commits
1237 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 55edbb093a | |||
| 20852f3d52 | |||
| 02f3989c1f | |||
| e219d00995 | |||
| fb1375a3dd | |||
| 62249af1a6 | |||
| 00fc5bde43 | |||
| 39fe12f5ab | |||
| 7ce10b7dee | |||
| 53ec13b245 | |||
| 2f3ebae2fe | |||
| 45027747f3 | |||
| 8c1be673bf | |||
| 63dd521803 | |||
| 9a70e8e2b1 | |||
| 79e5f6a8d6 | |||
| 476e34ddee | |||
| f855142a98 | |||
| d00e298dc5 | |||
| 4a8abddc82 | |||
| 5b83eccec2 | |||
| c4efcd4168 | |||
| dc97c3403c | |||
| 77d6a4e50b | |||
| 1cae329e0c | |||
| 71a4e7cbb2 | |||
| 2945f72849 | |||
| 4390916124 | |||
| f937ac730f | |||
| 0c931eba89 | |||
| f187375faa | |||
| b572f4b817 | |||
| 3e2e2542da | |||
| 1bc2cd2707 | |||
| f8b74e8d88 | |||
| 564458ecb5 | |||
| 9449dcaf65 | |||
| 37baca51aa | |||
| f22981f877 | |||
| 2988c9cf56 | |||
| 1dd0808f8f | |||
| 52624479ee | |||
| 1462419052 | |||
| d3b8189aa6 | |||
| d8418c2dd4 | |||
| 4aa8edecac | |||
| 45cbdbff2d | |||
| 663820b72f | |||
| a842f8b3a1 | |||
| 37f3b8a764 | |||
| 36e48e9bf4 | |||
| 053c4c2582 | |||
| 0261dd1449 | |||
| bdc362c29e | |||
| 0a8fcda81a | |||
| c019a9adb5 | |||
| 081730a6a5 | |||
| 2ceef90e4c | |||
| 6b84713f56 | |||
| b9b22774f5 | |||
| 2abbc76ea1 | |||
| a6030f6cdd | |||
| 181468182a | |||
| d057b69ebd | |||
| 82d4d08005 | |||
| c7434c86a9 | |||
| fa1e35b44e | |||
| c8bc2e4591 | |||
| 418dea4a1d | |||
| 3c7d28ea63 | |||
| 553cad4095 | |||
| e70d6cfbf1 | |||
| a6fba87b6f | |||
| f97a0ed45c | |||
| d8daa48e25 | |||
| 03b126f7fe | |||
| 098d422946 | |||
| c0c153ab2a | |||
| 38512c5ef0 | |||
| 05de6e567e | |||
| 463479d84c | |||
| 271dfd2374 | |||
| 5ab8f8d687 | |||
| 59ad3b788f | |||
| ff90e15427 | |||
| 64ec3bc050 | |||
| bd5f1e0182 | |||
| 31031ed6e4 | |||
| 69b4b32841 | |||
| 4245b45a48 | |||
| 8c4f716521 | |||
| 0d37c1fd5a | |||
| 87866bcd5a | |||
| d9241a31a3 | |||
| 1a98e3b685 | |||
| 1cb0bc1334 | |||
| 1866dae20d | |||
| 7b5ee15190 | |||
| 0f5bbf09ba | |||
| 6baae7bbdd | |||
| 2b3501e0b6 | |||
| 609b1604e4 | |||
| a87605babe | |||
| ee892dcba3 | |||
| b6c59734ff | |||
| 1646da180a | |||
| c5a41f4fbe | |||
| b0c7f7fc67 | |||
| f83b2c12e3 | |||
| 32668fbc16 | |||
| ff9976907b | |||
| 78c3dccb56 | |||
| e8b06ae0ed | |||
| d9d145bf4e | |||
| f0b3d13d3a | |||
| a6f68e0343 | |||
| fd2e92a723 | |||
| 639fa24677 | |||
| 299f8592c2 | |||
| c2dd58e9e4 | |||
| 84f8ee3e39 | |||
| 7ac1ed3b28 | |||
| 07fee635a3 | |||
| ff2f24a25d | |||
| 7b91a33b43 | |||
| d9620297f7 | |||
| 3a1be13865 | |||
| a47d2b431c | |||
| f42bf0f8ca | |||
| 185cf18c0a | |||
| f5b71cad27 | |||
| b0fc42fe1d | |||
| 4d88e32109 | |||
| 85ad169a78 | |||
| 9a6954ee2b | |||
| a5a2bf01b8 | |||
| 4183f74ff6 | |||
| 5febe42936 | |||
| 742b48cc76 | |||
| 8da5c51f73 | |||
| 2e59594f78 | |||
| e4df6f8091 | |||
| 215870a0b7 | |||
| 8a463be2bb | |||
| ee6324a668 | |||
| 4ebf6bf56d | |||
| 1b1f462e30 | |||
| 592266855c | |||
| ff42430a12 | |||
| 22f01f9dde | |||
| 47333aa53a | |||
| 03f98a11cd | |||
| a13a41880e | |||
| 0ca4aa69c7 | |||
| 187553042a | |||
| d4b0ca936b | |||
| 730a8a4f42 | |||
| 95147647bc | |||
| 8177d1e4c2 | |||
| 871c589d48 | |||
| b06b6b2480 | |||
| 6c7e29c590 | |||
| 9537f36082 | |||
| bb9893800c | |||
| 00cdf8f2e8 | |||
| 137e3cce4b | |||
| 2a48a1e2b6 | |||
| b7d9f60d61 | |||
| aa98058b41 | |||
| 0767242ae8 | |||
| edb1e49456 | |||
| 0fe90fa456 | |||
| 1cc567b549 | |||
| 001f515961 | |||
| 113efef0bb | |||
| fbdec0df9e | |||
| 152e0fba2f | |||
| ad50394a5d | |||
| 597a2d225e | |||
| ab6bf4a0cc | |||
| d53dd8b031 | |||
| bcc189648f | |||
| 852e98a0c4 | |||
| 87947480c2 | |||
| c94a7dac81 | |||
| 3574f9d7e1 | |||
| f582e70b2b | |||
| fb9ff953d2 | |||
| 6e2cfff174 | |||
| 1feced56b1 | |||
| 1e108099f0 | |||
| 88ae6fa2d2 | |||
| 8fe0d83bfc | |||
| 9572cf95be | |||
| b90b514340 | |||
| 4db634e84e | |||
| 292840f1fb | |||
| e20ffb4fca | |||
| 5755610075 | |||
| b051d3d55f | |||
| 93f9513920 | |||
| 8cb090178a | |||
| 85b08b27fb | |||
| 7c0539a106 | |||
| b022fd1e10 | |||
| 51a8a3bea7 | |||
| 0f04c35019 | |||
| 6d875e07ca | |||
| 83bcba2b4c | |||
| cfc7f3c40d | |||
| a1db2538d3 | |||
| 348f825f62 | |||
| d3e0f1270f | |||
| 02acf6ebcb | |||
| e0cc383c1f | |||
| c28e72d4e7 | |||
| 908c7e1723 | |||
| 96dd2c499f | |||
| f8578cb93c | |||
| bef5742f8f | |||
| df4c7e1012 | |||
| aeae084df7 | |||
| 43a743a7e5 | |||
| 69abe9b606 | |||
| 15a3c22b84 | |||
| 625556456e | |||
| 275faca844 | |||
| 68f8be8bc9 | |||
| edf7ab9fbc | |||
| 30ae0e4de3 | |||
| 1da50a076e | |||
| 28f28cf260 | |||
| 804894a2fc | |||
| c402cfa7cf | |||
| 067aeec853 | |||
| 0114694c4f | |||
| b7fa6742e1 | |||
| e16acfd437 | |||
| 41a9f7e028 | |||
| a63dd64aa4 | |||
| 82d7996270 | |||
| 44a4eb5a47 | |||
| abf5c682a0 | |||
| c5a46606a5 | |||
| 9a088d6bd5 | |||
| 44258fabf4 | |||
| 8be297b781 | |||
| af1fd8f084 | |||
| e9195b26ad | |||
| 3ab0d5d592 | |||
| 73b61a8a2c | |||
| 9e329e183c | |||
| 06bdc9a521 | |||
| 480da37c83 | |||
| 443daa1c6c | |||
| a7a7dc4806 | |||
| e1af076a94 | |||
| de833db014 | |||
| 3a28656a7c | |||
| 05291e53bf | |||
| ed86b1228a | |||
| e4053b5943 | |||
| b6ea091e38 | |||
| fd1d318d47 | |||
| 3af93b3dd9 | |||
| e2a8b852fe | |||
| dc22b0cada | |||
| e108a96c32 | |||
| 54c8df31b6 | |||
| ebdf90c03b | |||
| cbeac7021e | |||
| 9fa61da370 | |||
| b03caa374f | |||
| 71c4243849 | |||
| 221c7d916b | |||
| c06130697d | |||
| 912df3b7ff | |||
| dbf293e267 | |||
| a83168bc77 | |||
| b3b379f95f | |||
| fba260ce60 | |||
| a98fd97c3b | |||
| 9adc66551e | |||
| 9948765bdb | |||
| 8d234d8cb4 | |||
| 46476196fb | |||
| fac9f5946c | |||
| d745747f1c | |||
| c8209a30ef | |||
| a1aee0b6db | |||
| 64ddecbbce | |||
| 56c2b8d505 | |||
| 7c48159ef9 | |||
| 3c010d44fa | |||
| 941ec5dea1 | |||
| 6dd6532d65 | |||
| c9363ca1db | |||
| efbf17284b | |||
| de02574fad | |||
| 92797c1065 | |||
| b9f10de4a1 | |||
| f09ed59b06 | |||
| 5d8b0f0670 | |||
| c09485e2be | |||
| f94e6a70d8 | |||
| 7dd92c999c | |||
| 6164c8c848 | |||
| e8fcdaa8a5 | |||
| 4389e2bb98 | |||
| 06a85245b7 | |||
| 107ee5d504 | |||
| d40582b1dc | |||
| 7385010925 | |||
| debdfd1a2a | |||
| 8857c91092 | |||
| 2ca1b01d6b | |||
| 3af2762482 | |||
| 7a9f4de6c4 | |||
| eb5847e638 | |||
| 8b48b6041e | |||
| 2928ca7d9d | |||
| e379faca94 | |||
| 8ea5796965 | |||
| 7713115f88 | |||
| 7e78e300fd | |||
| 108b00ba53 | |||
| abb013e228 | |||
| 1ffc20e6fc | |||
| 916c9f3252 | |||
| 3bbd353bfc | |||
| a0c14a6e38 | |||
| f8cd7197f2 | |||
| 586874ded4 | |||
| 721e1dcf94 | |||
| 2453163f7c | |||
| 999e2a1247 | |||
| a650a01161 | |||
| 3074364ebb | |||
| 51254c91d1 | |||
| 68c1885754 | |||
| 6573b68e34 | |||
| 3a81788f88 | |||
| 007bbbb218 | |||
| 19140df10a | |||
| 13f65f573e | |||
| 3062e8888e | |||
| c9a60fe9e4 | |||
| fec2582228 | |||
| db4753cbd3 | |||
| 899c08e4b6 | |||
| 7a3caf2923 | |||
| cb5ae6a770 | |||
| 542870ca6f | |||
| 651431b62a | |||
| e2012c3c6a | |||
| e27c7aec33 | |||
| 6fb234f7b0 | |||
| 889e4a1531 | |||
| 5270458b17 | |||
| 977a304b8f | |||
| f92b90c2dd | |||
| e6f42c312f | |||
| 3e1557ceca | |||
| 408f3e4284 | |||
| a09fcd997d | |||
| 8b32dab9a8 | |||
| b8042cd6f0 | |||
| 17fb37f4b6 | |||
| 647c2c9ad2 | |||
| 6b65bb1e0d | |||
| 35d245ee6d | |||
| f9c50b2d60 | |||
| 65c2ebc1f2 | |||
| ac5f58832a | |||
| 821c5b7a63 | |||
| 48d1701933 | |||
| d53dce8123 | |||
| 8f19345e26 | |||
| efbec18fd4 | |||
| 974e910681 | |||
| f5db8cb7fd | |||
| f9eb7e8bdc | |||
| 300a519614 | |||
| ab1140845c | |||
| 0b71172606 | |||
| c4b0cfbb8e | |||
| 0d9a00c89e | |||
| 8fd7cf7382 | |||
| 043827faaf | |||
| 36ff09dbed | |||
| 08900ddb2f | |||
| 2bfa0e4cfd | |||
| 3583676dd1 | |||
| 8bb4ca6424 | |||
| 839c028212 | |||
| b649db807e | |||
| 7244914120 | |||
| ae417a0938 | |||
| 183d4c51d0 | |||
| 43cc7ee75a | |||
| 175d85ddbf | |||
| 1d81be4977 | |||
| 089ff1d1fb | |||
| 241ba40269 | |||
| c15887b2b0 | |||
| c99f415006 | |||
| cbcdba9a1b | |||
| ee8a6b9d55 | |||
| f9cfb9b9a1 | |||
| 833bcd6ff2 | |||
| f6a6dcbe24 | |||
| 05bc943198 | |||
| 1d10d5d78d | |||
| 0d99801c50 | |||
| b99d4f363f | |||
| 110090d683 | |||
| b1d33c9322 | |||
| 407a9036ff | |||
| 585de29fd2 | |||
| 8eec316eee | |||
| 99a1dcee19 | |||
| d954ec4a58 | |||
| 476d6e081c | |||
| d459bd5a2b | |||
| 565f92a4d8 | |||
| 5f295784fb | |||
| c9c08a313e | |||
| aed2818f04 | |||
| addaf788ba | |||
| ed9594d4e3 | |||
| be57ed59cd | |||
| 031e7a8013 | |||
| 9448249897 | |||
| 556cef9e65 | |||
| ac842b2e11 | |||
| a5aca58ad0 | |||
| 4bea875604 | |||
| 5c2240046b | |||
| 7f40de78b5 | |||
| 855c482e19 | |||
| 2864c06a54 | |||
| da880b10bf | |||
| 8ca8e7e3df | |||
| dff3412be4 | |||
| d03d18631d | |||
| 4047ccf9b6 | |||
| 4109a29eba | |||
| 4a5860bd5e | |||
| d8f48cb46e | |||
| 6f25a056b5 | |||
| f7c8741cb8 | |||
| 53d2469ed1 | |||
| d99e38bf0d | |||
| dc6b5f6ba7 | |||
| 7517d57a50 | |||
| afb795d2d0 | |||
| 623ec88019 | |||
| 8248eec6c4 | |||
| f136c1d298 | |||
| 50e992c848 | |||
| 0ed398b717 | |||
| 77d79d3baf | |||
| 947a38354f | |||
| 99feb38c45 | |||
| 0a82fb12ac | |||
| 12434007df | |||
| 00033b741c | |||
| 1d695e67c1 | |||
| 4a04052e12 | |||
| bac176e6d1 | |||
| c288fda489 | |||
| b8a1852795 | |||
| 201677c966 | |||
| b1f5a339e9 | |||
| 2caa881ebe | |||
| 4e80597636 | |||
| 1fb701aefa | |||
| 690daa0323 | |||
| 1d799400ae | |||
| 524b2392f2 | |||
| 95283cc26b | |||
| 89bbd853c3 | |||
| 7ceb8d1472 | |||
| 6666a86584 | |||
| 7dc67d0498 | |||
| aa736c7eb1 | |||
| 41b4ddca8c | |||
| 873b1fcd75 | |||
| cf0a0ab8a8 | |||
| c64eb452a5 | |||
| 50a5f63cb0 | |||
| 95d2212901 | |||
| 9589d3dd6c | |||
| 0ce61a1c0a | |||
| bef88d4e49 | |||
| 9c4b38837b | |||
| 4966675982 | |||
| 6a89474593 | |||
| ffdb2b6f95 | |||
| 224baa59cd | |||
| de34cfd01c | |||
| 401fb10662 | |||
| ab53e3d1fd | |||
| 5d2fc46a85 | |||
| aef4a32304 | |||
| c92504577b | |||
| 6af69629da | |||
| 5548e2c8ae | |||
| 07054486eb | |||
| 8a1a6ab04f | |||
| bd2f5b7c13 | |||
| 9759a18b6e | |||
| 11e302373b | |||
| 8dbafa1d02 | |||
| fb845716f7 | |||
| c5a4a203ba | |||
| fbffde8f27 | |||
| be6d6788eb | |||
| 7aee9ff142 | |||
| 9abfdda5ad | |||
| de8c1f16a3 | |||
| 732a81ed56 | |||
| be75bfd8fc | |||
| be834b0bd3 | |||
| 32fd02a78e | |||
| be47bddcc9 | |||
| bb76d77bfe | |||
| aa5dccb0dc | |||
| 850e64a316 | |||
| 4a96993de9 | |||
| 104b6d426f | |||
| 6ccc4a512b | |||
| f0a28fd64e | |||
| 823d26be53 | |||
| a2c39fe3bf | |||
| da1b9e65dd | |||
| 79d2610631 | |||
| ead0d12a1b | |||
| 542e18ca89 | |||
| fb53578d73 | |||
| 6ac9916c79 | |||
| df09deb868 | |||
| 7ce24cbf7f | |||
| aa857cb98e | |||
| 0edc4091a6 | |||
| fd7eab2e7c | |||
| 050e2366d8 | |||
| b6b30811c9 | |||
| 140085cb35 | |||
| 0ca3d6d629 | |||
| db97cfe4e9 | |||
| 6bb4601113 | |||
| b065da06a4 | |||
| 78c6862c39 | |||
| aee00d4096 | |||
| 27e719d39a | |||
| f18358e283 | |||
| 5a68093268 | |||
| c88afdef2e | |||
| 1c08d29aac | |||
| 128ce2a690 | |||
| 2cb0443daa | |||
| 870bdb97c5 | |||
| 05bcc81ebb | |||
| fe519dc502 | |||
| 9ba00b14ee | |||
| 7bd4d03707 | |||
| fb4a8d3487 | |||
| f128ba7548 | |||
| 3e6856c2c7 | |||
| dcd6943757 | |||
| a9b371ebb8 | |||
| e66e3c1bd1 | |||
| 8ad9ca026a | |||
| fdd80ae15a | |||
| fe94fcf9ea | |||
| 417dd6bb39 | |||
| 6314ac296e | |||
| c39394bff4 | |||
| 76d2fb82c7 | |||
| 19433439f2 | |||
| 931e78ffa1 | |||
| 791ce98634 | |||
| eb65c65190 | |||
| e2e8d8b6c9 | |||
| 9c04291e9b | |||
| 5ae0d0edb0 | |||
| 8d7cc3cdcb | |||
| 935cadb47c | |||
| 440bdd404a | |||
| f71f4adcf7 | |||
| 2e4321d347 | |||
| 6340357428 | |||
| c2fc9141f1 | |||
| 22dc8b569c | |||
| 90446052be | |||
| f14c10c8c8 | |||
| b0a30770a3 | |||
| 67cc08d2fd | |||
| f32895b48b | |||
| 27807816cb | |||
| e951f8544d | |||
| 1af49f58ba | |||
| af5042e347 | |||
| cbc1ead4d2 | |||
| fc7fff0271 | |||
| 8d80e49e87 | |||
| 32248e5cac | |||
| 29bebbce06 | |||
| b34949e442 | |||
| 24dec6ff63 | |||
| 7f11d122dd | |||
| fced475e86 | |||
| 4c57551ff8 | |||
| 24e6d2027b | |||
| e071116676 | |||
| 9c106b46e2 | |||
| c29b4d11df | |||
| 4b43a43129 | |||
| 2af4ea9ad9 | |||
| ed27bb72df | |||
| 13eab5ef24 | |||
| 436489cb85 | |||
| 62cdc110b9 | |||
| c2038cecc2 | |||
| f9036cf4ab | |||
| 78fbbb1160 | |||
| e25859ed0a | |||
| d2b3cf99c9 | |||
| 93a4f8c837 | |||
| b19ca0410e | |||
| f01fa76232 | |||
| 2e0e169295 | |||
| a2e1276190 | |||
| c1eba6e1ed | |||
| ea49a3f258 | |||
| 9613c0aa7f | |||
| 186fa8781c | |||
| 92caad8ffc | |||
| e86a055a1d | |||
| 812405690e | |||
| ffc8528f29 | |||
| 414ca82c7d | |||
| b9f1f3fe08 | |||
| ba231c6fd1 | |||
| 01cc674ef3 | |||
| 78b61aa45c | |||
| 48bd82b30f | |||
| 99b35f6045 | |||
| 03024d0d24 | |||
| af67cc1ca7 | |||
| 79854c3dfe | |||
| de79cd63ec | |||
| 34e46a34d3 | |||
| 2c865de832 | |||
| 1d0161e546 | |||
| 144e40dbe7 | |||
| c0ff1af738 | |||
| b2b8d306ca | |||
| 786327f6d2 | |||
| cbb7e9210b | |||
| ec3d9d128d | |||
| 4909e3fd2c | |||
| 9a10db22e9 | |||
| edc8070767 | |||
| 6e1d4f46ba | |||
| a03acc4c63 | |||
| dee12112c2 | |||
| 6c7a4648d2 | |||
| efacb944ae | |||
| fe0beab681 | |||
| 9008de4f66 | |||
| c00eb7e6cd | |||
| 13ae65c3dc | |||
| 9c3de99b51 | |||
| 425c0361d4 | |||
| ead3731772 | |||
| 8855a9cce9 | |||
| ec16e0418c | |||
| c948a43734 | |||
| 8b66ea4f1b | |||
| 2b4987e5ae | |||
| ee5b4f96d8 | |||
| 96ada2e301 | |||
| bb3efb7143 | |||
| 866570eb9d | |||
| db3fd7c71d | |||
| 4ff3e4ba29 | |||
| 8e79c3630e | |||
| 32414bdd10 | |||
| f3a9b2ef9f | |||
| 9469c8c73b | |||
| 389964f0f8 | |||
| 89606ebe67 | |||
| 86e70d5fb1 | |||
| 90748fbe5a | |||
| a349acd649 | |||
| f6c2582971 | |||
| e228df7a85 | |||
| c33171eaa6 | |||
| a2fbfe3ee9 | |||
| 6dd31e15cc | |||
| a99747dfb2 | |||
| ae75152924 | |||
| 7ab3a4b679 | |||
| 93a7f4992a | |||
| 5730a15dbc | |||
| ed33edb419 | |||
| ef257a32c2 | |||
| 0f2fb9246e | |||
| f563ab1216 | |||
| e2dff4c1d1 | |||
| 64369d5b66 | |||
| ab07e026d5 | |||
| 7b283ed65f | |||
| c455cab6b0 | |||
| 8c305c34d0 | |||
| 89acdf4f29 | |||
| 12ef81e032 | |||
| 8f181318c0 | |||
| 6f78c66740 | |||
| 795f7e68b7 | |||
| a3f6f9ad66 | |||
| 17966dc7b4 | |||
| 53f0b6cc86 | |||
| 9eb1b8cc00 | |||
| 07255eb42e | |||
| d179ad4e10 | |||
| 867f4b15ef | |||
| 4f9f77544d | |||
| 0396ffef4e | |||
| ffc96d19a3 | |||
| 6a61c81a5f | |||
| f3e3b633dd | |||
| b59493a9c9 | |||
| 4c26501126 | |||
| 13b0d96d20 | |||
| 498207d986 | |||
| 37ddd0ab6f | |||
| b163f27e96 | |||
| b3b4fb0198 | |||
| a3e5d52a21 | |||
| 93844ac7a4 | |||
| 6d464336d2 | |||
| 9204f1a290 | |||
| e7fd107e12 | |||
| 48acab4c50 | |||
| 601c2d737f | |||
| 2ef5d644e2 | |||
| 3a3530ac20 | |||
| 9a95052e4c | |||
| 5c62823ae9 | |||
| c517858e0b | |||
| 97fabb65e9 | |||
| 8ff84c3c87 | |||
| 097d8c6903 | |||
| cd0f1baa10 | |||
| f8775ed8be | |||
| f6b25335ec | |||
| 7475939293 | |||
| df659b8a4c | |||
| 5dfba2833b | |||
| 5180f7fcf1 | |||
| 258923c4a4 | |||
| 3e08829d22 | |||
| 00d9293d53 | |||
| ba5420755f | |||
| 875aea3d90 | |||
| 254832989c | |||
| 7e974e2f12 | |||
| 518e739235 | |||
| 7a4b2984a4 | |||
| 292a371ee0 | |||
| 06211616e1 | |||
| 625ba2ae6b | |||
| 4f083668b3 | |||
| 15e1a9295c | |||
| 9b8364a875 | |||
| 4c936d6440 | |||
| 372781f1af | |||
| 9ca8382ff7 | |||
| 6b48bd1b5a | |||
| b51574b7a9 | |||
| dd6b4e88fb | |||
| 1037687fc3 | |||
| dadaaba7cf | |||
| c66efde7b5 | |||
| 3928f0f96c | |||
| ce81d0c1ae | |||
| a02326273b | |||
| 53ce5867c8 | |||
| 41343c3b91 | |||
| 6d0dd41240 | |||
| d042a27532 | |||
| 49df52ccfe | |||
| 38210d34cd | |||
| 5b8559f254 | |||
| 43d17b845a | |||
| 7206899073 | |||
| c804afe51a | |||
| 585cf6e488 | |||
| b5ab4c6c8c | |||
| 0e239aae28 | |||
| 65fd37babf | |||
| 259a07de8e | |||
| 4074b188e9 | |||
| 6d0e6dd420 | |||
| cb14814677 | |||
| 9b5d393bab | |||
| 20845b6db9 | |||
| 677c9c5e65 | |||
| 839c79a080 | |||
| dde5366d89 | |||
| 15f64edb29 | |||
| 46425fb6eb | |||
| 1fb926f5ae | |||
| fc24f2c2cb | |||
| e9c6503895 | |||
| e93e311739 | |||
| 76d5b825f4 | |||
| 8fc3d13eb0 | |||
| 1314bd6aca | |||
| aa64e1761b | |||
| 45a60b7bb2 | |||
| e07c492d9b | |||
| a90720dee8 | |||
| cc41c67fe7 | |||
| 7ea01288b5 | |||
| 9b88ec5cb2 | |||
| bb9ddeabaf | |||
| d0f146be60 | |||
| e3357936e4 | |||
| b7776e404a | |||
| 24e2c81cff | |||
| 1892055b22 | |||
| 9cc0e3c2e1 | |||
| 2f4fa64ce4 | |||
| e0e86d6b83 | |||
| 7edae13daa | |||
| b7ce4a8342 | |||
| 7cac33a84e | |||
| 7ebab66b5d | |||
| 28b12ae2ff | |||
| 72654657da | |||
| 6337d8b3e3 | |||
| aaadfa6e71 | |||
| 49762d4f5e | |||
| d0a9b5f995 | |||
| 2647ca1934 | |||
| 2aa3255b66 | |||
| d648930053 | |||
| 6ddde82a11 | |||
| 6ab6ea96c7 | |||
| aea3ae3f67 | |||
| 38e875d9b1 | |||
| cc874ab34f | |||
| 29d975231a | |||
| d081716394 | |||
| b3cf77203c | |||
| cbcb5fa211 | |||
| 9146debc1d | |||
| 7bc324fb1e | |||
| 3604718849 | |||
| 24efd8d052 | |||
| 5c65478182 | |||
| f2468577a2 | |||
| 3690b55241 | |||
| 357ea37aed | |||
| 291e65f298 | |||
| 6fa14020bc | |||
| 8a324a44d1 | |||
| 00ef40c201 | |||
| e62a4db09d | |||
| 5757e2830b | |||
| 869f85b74e | |||
| 830d0cbecd | |||
| e1e851cb6f | |||
| 5e6198c3ef | |||
| 7f6c112cb6 | |||
| ad33b3cc07 | |||
| 65271d4006 | |||
| 9ba50f20e9 | |||
| ca616fa17f | |||
| c76aeaf8f6 | |||
| e314026bb8 | |||
| 714050513f | |||
| 92ab8ea0e1 | |||
| a029d29049 | |||
| bc83b18d04 | |||
| 7a6adb28ee | |||
| 002abaafe7 | |||
| 4e2b47b639 | |||
| e9205cfc37 | |||
| 3ee4f473c9 | |||
| 435bc08e62 | |||
| 563da675c5 | |||
| 0fb61984b6 | |||
| ee027a0028 | |||
| edef83260d | |||
| 56763644e3 | |||
| c995d8baf8 | |||
| 27261809bf | |||
| a48902e402 | |||
| 84f0073994 | |||
| 1cf20ffc4a | |||
| e0f22c63cb | |||
| aa7ce4e012 | |||
| bdc3955dc1 | |||
| 47d3b923d3 | |||
| 29ced102b1 | |||
| 0c698859e3 | |||
| 1781ef85e0 | |||
| 17a66ab261 | |||
| ca025b5f40 | |||
| 2560045563 | |||
| 87e68d901c | |||
| d7f0270986 | |||
| c0d7b512cd | |||
| 591b9b880e | |||
| c8217f3aaa | |||
| 884fb0ce97 | |||
| dad44d8f19 | |||
| 816576a2de | |||
| dc897b006d | |||
| a13f546830 | |||
| b8370fc311 | |||
| 9dd654a43f | |||
| 90e9707d27 | |||
| 310f41d9eb | |||
| baef10f9b8 | |||
| 8b0a1e1ba5 | |||
| 4f730c25ea | |||
| 6d5490d9cc | |||
| 1a72638911 | |||
| 5fc35acdca | |||
| 1cddab2c50 | |||
| a7b5c6f466 | |||
| 8cedf7f691 | |||
| c4cd1284b3 | |||
| e4e7d8637d | |||
| c1de1b7089 | |||
| 1140f2239c | |||
| 7a8413dbbf | |||
| 701b68f46b | |||
| d19395a7f6 | |||
| 53ddd509fb | |||
| 54a9b6a328 | |||
| cfb3f2d2c6 | |||
| 7b728b4a21 | |||
| 7636a5c4c5 | |||
| b55b12ff7e | |||
| de44801150 | |||
| 185d6e22b4 | |||
| 09ce473994 | |||
| b52f06e37a | |||
| da242bb982 | |||
| 5583fb9ff3 | |||
| 25345d396e | |||
| a9e0c535b1 | |||
| 0b92e733aa | |||
| 6b1bc2ab85 | |||
| c16bff935f | |||
| 1596220c91 | |||
| f33bb778be | |||
| 1dd1848673 | |||
| 81f1f863d4 | |||
| 28a952f6c3 | |||
| 2dd71c7367 | |||
| dbe21be8d9 | |||
| 8b48a60b6d | |||
| f52eb4e005 | |||
| af49875f2a | |||
| d2723fac00 | |||
| 9cb36e5119 | |||
| 9b950e5cc6 | |||
| 6a62963bf4 | |||
| 44a4cbc268 | |||
| b8c8d1f068 | |||
| 2cc724ed12 | |||
| 9586a727ab | |||
| 4a3d17da9e | |||
| 6115cd5e68 | |||
| 903753567f | |||
| 309e4198ef | |||
| f59bd98568 | |||
| cc01931c9d | |||
| ece16dd202 | |||
| 3f292a7f4c | |||
| 5a6496092b | |||
| 09910e2fba | |||
| 22b0de9ff1 | |||
| efbb644bf2 | |||
| 7f450271ab | |||
| 56e97b6d5f | |||
| 704e704b4c | |||
| 0a1d711ba1 | |||
| a7b119f60d | |||
| 9fe1be9564 | |||
| aac4567c02 | |||
| 889df388f8 | |||
| a31c1303c9 | |||
| 86732e91df | |||
| 6a3b5c2c92 | |||
| 690fbedf4c | |||
| 20ad33b742 | |||
| 52b6290e1c | |||
| eb9ec4f5bd | |||
| 56932e8ef0 | |||
| ac0eb28d0c | |||
| aeb43d1a08 | |||
| 573165796f | |||
| 9c9681af67 | |||
| 7d81e1e6a8 | |||
| 68dbab0064 | |||
| d7d1dd2761 | |||
| cff31bbf4b | |||
| c7ec44e873 | |||
| 7db9b065a0 | |||
| 4a8319199e | |||
| 30ca9a4413 | |||
| 1e52daf5d6 | |||
| f3abfbd4ca | |||
| d91c185245 | |||
| 986947c71b | |||
| 8fdca767a4 | |||
| 15e3ebe064 | |||
| 81a69917ac | |||
| 42bdea4f8c | |||
| f8c613d621 | |||
| 17de73c7fd | |||
| 471ff2bcd4 | |||
| b2d8e3e12c | |||
| a2468462d7 | |||
| d67d6c5831 | |||
| b3b91497d8 | |||
| 2a12543fc2 | |||
| 5acd21938e | |||
| a0d639c71b | |||
| 79f1f64aa8 | |||
| 8bd11808e9 | |||
| c7381723ab | |||
| bbe007c0bf | |||
| 87a5315858 | |||
| 28742581c1 | |||
| b82243d9e8 | |||
| 0570c31d24 | |||
| 9d7972a5b3 | |||
| e380852b65 | |||
| d5c5b93cb0 | |||
| f3c73603c7 | |||
| e5925a060f | |||
| 57cb3e01fb | |||
| 32f2f07307 | |||
| 542c14ea60 | |||
| c1a247a186 | |||
| bb4308f688 | |||
| 4339fa0e85 | |||
| 94f2aa35b2 | |||
| 9f2ba38940 | |||
| 23a87df964 | |||
| e556925d8f | |||
| 5714b42395 | |||
| 3cc108b4f9 | |||
| 72eea2ce77 | |||
| de90e5d767 | |||
| 7f6e643cc7 | |||
| 8cd1c4d276 | |||
| 38b4f2d634 | |||
| 55266bd79a | |||
| 93ef99b14b | |||
| 83e7d98aa8 | |||
| ada3eb2cd7 | |||
| 823fea14ed | |||
| 00a4865150 | |||
| 9bde890878 | |||
| df210e56ea | |||
| 6fcb85d42c | |||
| 0a186d881e | |||
| f2f59a15e8 | |||
| 19ee86c8a2 | |||
| d28b54d025 | |||
| 97d406fe7e | |||
| d90d5483e1 | |||
| 082e45bfec | |||
| 943531117d | |||
| ac66fe6918 | |||
| aa8cb6da0f | |||
| 58d8907d04 | |||
| 98b5d88077 | |||
| b030ee1767 | |||
| 6a5af2abb2 | |||
| 12a2354522 | |||
| 5f9853c1fe | |||
| 050a0b8c23 | |||
| fd49bb81f2 | |||
| 3d1421f38d | |||
| e400b5ea8a | |||
| ad0fa5bfdd | |||
| 80aab38a68 | |||
| b76bd649c9 | |||
| 0d248cf2b1 | |||
| 01ff99a5d7 | |||
| 1d8398e891 | |||
| a9c2ab1659 | |||
| 39110104ab | |||
| ffa350eee3 | |||
| e50fb21aa9 | |||
| 547ac40f89 | |||
| d0219a976b | |||
| b7268f5f54 | |||
| 1da6d97ce0 | |||
| a6e1d9202c | |||
| e496935c89 | |||
| bbf7efc462 | |||
| ef38dc4e59 | |||
| 6b0698de26 | |||
| dcba862613 | |||
| 2207736fa2 | |||
| 0bf9fc844a | |||
| 333b4f8549 | |||
| 553ed61e34 | |||
| d8e30def44 | |||
| ce95b5904d | |||
| 82d8a3c714 | |||
| 51cda7557c | |||
| 611774b200 | |||
| b480c94188 | |||
| 8ee3dd3c85 | |||
| d5f25316c3 | |||
| 1415210244 | |||
| 03c452b9ce | |||
| db3fa40494 | |||
| a40d057cb9 | |||
| 14fc4ba5b3 | |||
| 45f19be069 | |||
| d5f0615d2f | |||
| 9ed5341100 | |||
| 78c867fbcb | |||
| ad0370a536 | |||
| 96b08dab64 | |||
| fad346d5a7 | |||
| cada2d4878 | |||
| 40fa9fba58 | |||
| dabc7647a5 | |||
| c463f746a4 | |||
| 928d538bd9 | |||
| 9de432cb57 | |||
| d7a78d2fc5 | |||
| 2aec1bd63e | |||
| 021e70570b | |||
| 223f3dca85 | |||
| 900dd626a8 | |||
| cf76234e8a | |||
| 6088f6f701 | |||
| bf22d1e2bd | |||
| 1015fdeab4 | |||
| 0f301b4269 | |||
| 7f1480afb2 | |||
| 0f3630da75 | |||
| 6e87397e16 | |||
| 73f23c450b | |||
| 1e9b9245cc | |||
| ed97db54c2 | |||
| 0671c10e67 | |||
| b9b6c52bc2 | |||
| 4adf180c8c | |||
| 59ded4e50b | |||
| 495c6c534e | |||
| db9f630261 | |||
| 05f9298825 | |||
| f9016845d5 | |||
| 596782e0c3 | |||
| 25d94976d5 | |||
| 93ba9bdc70 | |||
| f78a37bd74 | |||
| 0e4d975dc2 | |||
| 2de66a1b49 | |||
| 4ba05b62cc | |||
| 2537aa5710 | |||
| a6e17dec77 | |||
| b9f1c8c9ee | |||
| 736b33e46e | |||
| 7a4b2c6aba | |||
| a81e20f8b8 | |||
| d3154688cb | |||
| aec5c7c494 | |||
| 6a2f704ff7 | |||
| 0ff17695aa | |||
| 1f005a5385 | |||
| 26d17a1fd5 | |||
| 7d8c576151 | |||
| 59dcd78e32 | |||
| 0e490aa985 | |||
| 581ce8a3e6 | |||
| 73206ccc37 | |||
| f3b1b6585a | |||
| d56f2ace79 | |||
| c1b49f6975 | |||
| a02077f5fd | |||
| b4db82239e | |||
| e13c86f475 | |||
| bc10386109 | |||
| 1cb0688a9c | |||
| 2a197c249f | |||
| aef5aafa1e | |||
| 4f3ba52550 | |||
| 0fcaf6156a | |||
| a73ce9cfb0 | |||
| 7dc205d64a | |||
| e684992603 | |||
| ae3c412a7d | |||
| 9e34525b71 | |||
| 50c1e6daf9 | |||
| f28cfcb1ec | |||
| 6bd6ac0ac0 | |||
| 0080e37a5a | |||
| ad2903df6f | |||
| d0a0595f75 | |||
| a69cd1aa55 | |||
| bbe32988a0 | |||
| 3b426c2f73 | |||
| 746496c1c4 | |||
| a71b8f1780 | |||
| d2be3651a7 | |||
| 6ddf0d5d84 | |||
| 1b32112dc9 | |||
| 95e94d41f2 | |||
| 9ec008c76d | |||
| a4ae755694 | |||
| 1e4299f10b | |||
| 97035e9f93 | |||
| a6d094d2b4 | |||
| 4b1323a69d | |||
| 5b43ec3e71 | |||
| 859f15812c | |||
| ea0820e26a | |||
| b6cee5e832 |
@@ -1 +0,0 @@
|
|||||||
* text=auto eol=lf
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
.vscode
|
|
||||||
@@ -1 +1 @@
|
|||||||
I'm a super newbie who just posted my stuff here. Now maybe about intermediate
|
I'm a super newbie who just posted my stuff here. Now maybe simple newbie
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
swap = {
|
swap = {
|
||||||
size = "6G";
|
size = "2G";
|
||||||
content = {
|
content = {
|
||||||
type = "swap";
|
type = "swap";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
swap = {
|
swap = {
|
||||||
size = "4G";
|
size = "1G";
|
||||||
content = {
|
content = {
|
||||||
type = "swap";
|
type = "swap";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,11 +14,11 @@
|
|||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
# supportedFilesystems = [
|
supportedFilesystems = [
|
||||||
# "nfs"
|
"nfs"
|
||||||
# "nfsv4"
|
"nfsv4"
|
||||||
# "overlay"
|
"overlay"
|
||||||
# ];
|
];
|
||||||
availableKernelModules = [
|
availableKernelModules = [
|
||||||
"nvme"
|
"nvme"
|
||||||
"xhci_pci"
|
"xhci_pci"
|
||||||
|
|||||||
@@ -51,13 +51,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
zramSwap = {
|
# swapDevices = [
|
||||||
enable = true;
|
# { device = "/dev/disk/by-partlabel/disk-main-swap"; }
|
||||||
};
|
# ];
|
||||||
|
|
||||||
swapDevices = [
|
|
||||||
{ device = "/dev/disk/by-partlabel/disk-main-swap"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
|||||||
@@ -13,13 +13,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
# swapDevices = [
|
||||||
{ device = "/dev/disk/by-partlabel/disk-main-swap"; }
|
# { device = "/dev/disk/by-partlabel/disk-main-swap"; }
|
||||||
];
|
# ];
|
||||||
|
|
||||||
zramSwap = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|||||||
@@ -69,11 +69,11 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
# xserver = {
|
xserver = {
|
||||||
# videoDrivers = [
|
videoDrivers = [
|
||||||
# "nomodeset"
|
"nomodeset"
|
||||||
# ];
|
];
|
||||||
# };
|
};
|
||||||
syncthing = {
|
syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemService = true;
|
systemService = true;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ let
|
|||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
# kernelPackages = pkgs.linuxPackages_xanmod_stable;
|
kernelPackages = pkgs.linuxPackages_xanmod_stable;
|
||||||
hardwareScan = true;
|
hardwareScan = true;
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = lib.mkDefault true;
|
systemd-boot.enable = lib.mkDefault true;
|
||||||
@@ -41,6 +41,10 @@ let
|
|||||||
intel-gpu-tools.enable = true;
|
intel-gpu-tools.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# swapDevices = [
|
||||||
|
# { device = "/dev/disk/by-partlabel/disk-main-swap"; }
|
||||||
|
# ];
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
# External drive
|
# External drive
|
||||||
"${xlib.dirs.server-home}" = {
|
"${xlib.dirs.server-home}" = {
|
||||||
@@ -48,7 +52,7 @@ let
|
|||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
# Archive drive
|
# Archive drive
|
||||||
"${xlib.dirs.archive-drive}" = {
|
"/mnt/archive" = {
|
||||||
device = "/dev/disk/by-label/archive";
|
device = "/dev/disk/by-label/archive";
|
||||||
fsType = "exfat";
|
fsType = "exfat";
|
||||||
options = [
|
options = [
|
||||||
@@ -58,7 +62,7 @@ let
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
# Mobile SD-Card
|
# Mobile SD-Card
|
||||||
"${xlib.dirs.mobile-drive}" = {
|
"/mnt/mobile" = {
|
||||||
device = "/dev/disk/by-uuid/7EB1-DC99";
|
device = "/dev/disk/by-uuid/7EB1-DC99";
|
||||||
fsType = "exfat";
|
fsType = "exfat";
|
||||||
options = [
|
options = [
|
||||||
@@ -67,13 +71,15 @@ let
|
|||||||
"gid=1000"
|
"gid=1000"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# Services in /mnt folder
|
|
||||||
"${xlib.dirs.services-mnt-folder}" = {
|
"${xlib.dirs.services-mnt-folder}" = {
|
||||||
device = "${xlib.dirs.services-folder}";
|
device = "${xlib.dirs.services-folder}";
|
||||||
fsType = "none";
|
|
||||||
options = [
|
options = [
|
||||||
"bind"
|
"bind"
|
||||||
"nofail"
|
"nofail"
|
||||||
|
# "uid=1000"
|
||||||
|
# "gid=1000"
|
||||||
|
# "fmask=0000"
|
||||||
|
# "dmask=0000"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -46,6 +46,53 @@ let
|
|||||||
SystemMaxUse=512M
|
SystemMaxUse=512M
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
samba = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
"invalid users" = [ ];
|
||||||
|
"passwd program" = "/run/wrappers/bin/passwd %u";
|
||||||
|
security = "user";
|
||||||
|
};
|
||||||
|
nixos = {
|
||||||
|
"path" = "/etc/nixos";
|
||||||
|
"browseable" = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"valid users" = "${xlib.device.username}";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"writable" = "yes";
|
||||||
|
"create mask" = 755;
|
||||||
|
"directory mask" = 755;
|
||||||
|
"force user" = "${xlib.device.username}";
|
||||||
|
"force group" = "users";
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
"path" = "/";
|
||||||
|
"browseable" = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"valid users" = "${xlib.device.username}";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"writable" = "yes";
|
||||||
|
#"create mask" = 0644;
|
||||||
|
#"directory mask" = 0644;
|
||||||
|
"force user" = "root";
|
||||||
|
"force group" = "root";
|
||||||
|
};
|
||||||
|
"${xlib.device.username}" = {
|
||||||
|
"path" = "/home/${xlib.device.username}";
|
||||||
|
"browseable" = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"valid users" = "${xlib.device.username}";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"writable" = "yes";
|
||||||
|
"create mask" = 700;
|
||||||
|
"directory mask" = 700;
|
||||||
|
"force user" = "${xlib.device.username}";
|
||||||
|
"force group" = "users";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
openssh = {
|
openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowSFTP = true;
|
allowSFTP = true;
|
||||||
|
|||||||
+55
-35
@@ -26,7 +26,7 @@ let
|
|||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
# kernelPackages = pkgs.linuxPackages_xanmod_stable;
|
kernelPackages = pkgs.linuxPackages_xanmod_stable;
|
||||||
hardwareScan = true;
|
hardwareScan = true;
|
||||||
loader = {
|
loader = {
|
||||||
grub = {
|
grub = {
|
||||||
@@ -37,12 +37,6 @@ let
|
|||||||
};
|
};
|
||||||
systemd-boot.enable = lib.mkDefault false;
|
systemd-boot.enable = lib.mkDefault false;
|
||||||
};
|
};
|
||||||
kernel.sysctl = {
|
|
||||||
"net.ipv4.tcp_syncookies" = 1;
|
|
||||||
"net.ipv4.tcp_max_syn_backlog" = 4096;
|
|
||||||
"net.ipv4.tcp_synack_retries" = 3;
|
|
||||||
"net.ipv4.tcp_syn_retries" = 3;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
@@ -52,6 +46,53 @@ let
|
|||||||
SystemMaxUse=512M
|
SystemMaxUse=512M
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
samba = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
"invalid users" = [ ];
|
||||||
|
"passwd program" = "/run/wrappers/bin/passwd %u";
|
||||||
|
security = "user";
|
||||||
|
};
|
||||||
|
nixos = {
|
||||||
|
"path" = "/etc/nixos";
|
||||||
|
"browseable" = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"valid users" = "${xlib.device.username}";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"writable" = "yes";
|
||||||
|
"create mask" = 755;
|
||||||
|
"directory mask" = 755;
|
||||||
|
"force user" = "${xlib.device.username}";
|
||||||
|
"force group" = "users";
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
"path" = "/";
|
||||||
|
"browseable" = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"valid users" = "${xlib.device.username}";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"writable" = "yes";
|
||||||
|
#"create mask" = 0644;
|
||||||
|
#"directory mask" = 0644;
|
||||||
|
"force user" = "root";
|
||||||
|
"force group" = "root";
|
||||||
|
};
|
||||||
|
"${xlib.device.username}" = {
|
||||||
|
"path" = "/home/${xlib.device.username}";
|
||||||
|
"browseable" = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"valid users" = "${xlib.device.username}";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"writable" = "yes";
|
||||||
|
"create mask" = 700;
|
||||||
|
"directory mask" = 700;
|
||||||
|
"force user" = "${xlib.device.username}";
|
||||||
|
"force group" = "users";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
openssh = {
|
openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowSFTP = true;
|
allowSFTP = true;
|
||||||
@@ -73,49 +114,28 @@ let
|
|||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
nameservers = [
|
nameservers = [
|
||||||
"1.1.1.1"
|
"1.1.1.1"
|
||||||
"8.8.8.8"
|
"8.8.8.8"
|
||||||
# "2001:4860:4860::8844"
|
"2001:4860:4860::8844"
|
||||||
# "2001:4860:4860::8888"
|
"2001:4860:4860::8888"
|
||||||
# "2606:4700:4700::1111"
|
"2606:4700:4700::1111"
|
||||||
# "2606:4700:4700::1001"
|
"2606:4700:4700::1001"
|
||||||
];
|
];
|
||||||
hostName = "${xlib.device.hostname}";
|
hostName = "${xlib.device.hostname}";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
tempAddresses = "disabled";
|
tempAddresses = "disabled";
|
||||||
dhcpcd = {
|
dhcpcd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
IPv6rs = false;
|
IPv6rs = true;
|
||||||
};
|
};
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowPing = true;
|
allowPing = true;
|
||||||
};
|
};
|
||||||
nftables = {
|
enableIPv6 = true;
|
||||||
enable = true;
|
|
||||||
ruleset = ''
|
|
||||||
table inet filter {
|
|
||||||
chain input {
|
|
||||||
type filter hook input priority 0;
|
|
||||||
|
|
||||||
# loopback
|
|
||||||
iif lo accept
|
|
||||||
|
|
||||||
# уже установленные
|
|
||||||
ct state established,related accept
|
|
||||||
|
|
||||||
# РЕЖЕМ SYN СРАЗУ
|
|
||||||
tcp flags syn tcp dport {80,443} limit rate 20/second burst 40 packets accept
|
|
||||||
tcp flags syn tcp dport {80,443} drop
|
|
||||||
|
|
||||||
# остальное по необходимости
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
enableIPv6 = false;
|
|
||||||
interfaces.ens3 = {
|
interfaces.ens3 = {
|
||||||
useDHCP = true;
|
useDHCP = true;
|
||||||
# ipv4.addresses = [
|
# ipv4.addresses = [
|
||||||
|
|||||||
Generated
+169
-74
@@ -1,5 +1,26 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"compose2nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"onchg": "onchg"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1768176895,
|
||||||
|
"narHash": "sha256-GvcYMsrvQ1yjehcKmnlniBQM8HP9U/v7qSvfnxj3VtA=",
|
||||||
|
"owner": "aksiksi",
|
||||||
|
"repo": "compose2nix",
|
||||||
|
"rev": "e36aecd3649f43d745a5f837bf91c27c4499e203",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "aksiksi",
|
||||||
|
"repo": "compose2nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"deploy-rs": {
|
"deploy-rs": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
@@ -13,11 +34,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781023725,
|
"lastModified": 1770019181,
|
||||||
"narHash": "sha256-Gt+qFANcrDRjl3xzidLYrAUQCd3808iuAsLwZbYYAEU=",
|
"narHash": "sha256-hwsYgDnby50JNVpTRYlF3UR/Rrpt01OrxVuryF40CFY=",
|
||||||
"owner": "serokell",
|
"owner": "serokell",
|
||||||
"repo": "deploy-rs",
|
"repo": "deploy-rs",
|
||||||
"rev": "2ce9051767ee4d1a3c43b52ba327431783bfd463",
|
"rev": "77c906c0ba56aabdbc72041bf9111b565cdd6171",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -33,11 +54,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781152676,
|
"lastModified": 1769524058,
|
||||||
"narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=",
|
"narHash": "sha256-zygdD6X1PcVNR2PsyK4ptzrVEiAdbMqLos7utrMDEWE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1",
|
"rev": "71a3fc97d80881e91710fe721f1158d3b96ae14d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -61,6 +82,21 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1652776076,
|
||||||
|
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"grub2-themes": {
|
"grub2-themes": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -88,11 +124,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781365335,
|
"lastModified": 1771037579,
|
||||||
"narHash": "sha256-zqDBhXMzfbdlO7F2bGHe7MOtB3xngd/+4ieMHDC+ZXo=",
|
"narHash": "sha256-NX5XuhGcsmk0oEII2PEtMRgvh2KaAv3/WWQsOpxAgR4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "5b6f5733726a1b2ccafb5dec6ac4ca7299fad66c",
|
"rev": "05e6dc0f6ed936f918cb6f0f21f1dad1e4c53150",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -101,16 +137,56 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"musnix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781168557,
|
"lastModified": 1767232402,
|
||||||
"narHash": "sha256-LOnLQ2tpYF9gqIDDr3+j3DbpJJr/QCH6zPRT2GzEUOE=",
|
"narHash": "sha256-li+h6crnhc5Zqs+M6pn7D7M0W9M63ECNennDjRgzioE=",
|
||||||
|
"owner": "musnix",
|
||||||
|
"repo": "musnix",
|
||||||
|
"rev": "d65f98e0b1f792365f1705653d7b2d266ceeff6e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "musnix",
|
||||||
|
"repo": "musnix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-pre-commit": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"compose2nix",
|
||||||
|
"onchg",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1653259102,
|
||||||
|
"narHash": "sha256-XfCEu4zur/N2Dk4v8wFiQAgJ7bgNqPqwWp1vBXkeczM=",
|
||||||
|
"owner": "jmgilman",
|
||||||
|
"repo": "nix-pre-commit",
|
||||||
|
"rev": "6a99b2711c7eac9960939d8eb91e84322b22d50c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "jmgilman",
|
||||||
|
"repo": "nix-pre-commit",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770882871,
|
||||||
|
"narHash": "sha256-nw5g+xl3veea+maxJ2/81tMEA/rPq9aF1H5XF35X+OE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "6358ff76821101c178e3ab4919a62799bfe3652e",
|
"rev": "af04cb78aa85b2a4d1c15fc7270347e0d0eda97b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -130,11 +206,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781182279,
|
"lastModified": 1770657009,
|
||||||
"narHash": "sha256-V5EQQbDnmdiXGQXrEF1PEL7QYsFqfH8N1E89Z5ONwFk=",
|
"narHash": "sha256-v/LA5ZSJ+JQYzMSKB4sySM0wKfsAqddNzzxLLnbsV/E=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "5675822ba756e6e56f8f6a5a76e90e0da2ece94d",
|
"rev": "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -146,56 +222,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767892417,
|
"lastModified": 1770843696,
|
||||||
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
|
"narHash": "sha256-LovWTGDwXhkfCOmbgLVA10bvsi/P8eDDpRudgk68HA8=",
|
||||||
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-beets": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1774610258,
|
|
||||||
"narHash": "sha256-HaThtroVD9wRdx7KQk0B75JmFcXlMUoEdDFNOMOlsOs=",
|
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "832efc09b4caf6b4569fbf9dc01bec3082a00611",
|
"rev": "2343bbb58f99267223bc2aac4fc9ea301a155a16",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "832efc09b4caf6b4569fbf9dc01bec3082a00611",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-calibre": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1776255774,
|
|
||||||
"narHash": "sha256-psVTpH6PK3q1htMJpmdz1hLF5pQgEshu7gQWgKO6t6Y=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "566acc07c54dc807f91625bb286cb9b321b5f42a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "566acc07c54dc807f91625bb286cb9b321b5f42a",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781461743,
|
"lastModified": 1771056776,
|
||||||
"narHash": "sha256-gjBRAyMLpEJ+xtfHNLNE+5iFiSREBMmEYp8hFtL0Afs=",
|
"narHash": "sha256-0l776LxthDY08ujQ1h83k9z6K5vBg1bGc415AWeFOOI=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "94af5fb07bc318fb359ad100ab64457ccbbaf38a",
|
"rev": "d22fe1660f1f1ccbd52c9d2c09e92fe3861dd691",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -207,11 +254,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780952837,
|
"lastModified": 1770770419,
|
||||||
"narHash": "sha256-Fwd1+spDtQ0hDyBwme6ufG3n4mY0UrjjFdYHv+G/Hds=",
|
"narHash": "sha256-iKZMkr6Cm9JzWlRYW/VPoL0A9jVKtZYiU4zSrVeetIs=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e820eb4a444b46a19b2e03e8dfd2359439ff30fe",
|
"rev": "6c5e707c6b5339359a9a9e215c5e66d6d802fd7a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -221,19 +268,65 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"noctalia": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781074563,
|
"lastModified": 1771045170,
|
||||||
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
|
"narHash": "sha256-esBQIlClWRgYYvtYW27N79fCbOUkuFj3gxwJrb8WFX4=",
|
||||||
"owner": "NixOS",
|
"owner": "noctalia-dev",
|
||||||
"repo": "nixpkgs",
|
"repo": "noctalia-shell",
|
||||||
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
|
"rev": "92612c09a9dce53d5dd60e53f066160f1cdf13b4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "noctalia-dev",
|
||||||
"ref": "nixos-unstable",
|
"repo": "noctalia-shell",
|
||||||
"repo": "nixpkgs",
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nypkgs": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761401328,
|
||||||
|
"narHash": "sha256-1Mylp3ZHkft5Sg5VzMpRRvSNsuuO/Oj+cBqjkFoOnRg=",
|
||||||
|
"owner": "yunfachi",
|
||||||
|
"repo": "nypkgs",
|
||||||
|
"rev": "193c13630997d000e72e9ae6f6bfe9b71f5c4b3f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "yunfachi",
|
||||||
|
"repo": "nypkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"onchg": {
|
||||||
|
"inputs": {
|
||||||
|
"nix-pre-commit": "nix-pre-commit",
|
||||||
|
"nixpkgs": [
|
||||||
|
"compose2nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720368454,
|
||||||
|
"narHash": "sha256-NUSw3G2gsQX8/G64/pDBb1oitM+x13m7nFRvpiI4a+s=",
|
||||||
|
"owner": "aksiksi",
|
||||||
|
"repo": "onchg-rs",
|
||||||
|
"rev": "c42b693d10920874b3644ef1502e33318409d69c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "aksiksi",
|
||||||
|
"repo": "onchg-rs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -247,11 +340,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775856943,
|
"lastModified": 1770766818,
|
||||||
"narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=",
|
"narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "plasma-manager",
|
"repo": "plasma-manager",
|
||||||
"rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5",
|
"rev": "44b928068359b7d2310a34de39555c63c93a2c90",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -262,18 +355,20 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"compose2nix": "compose2nix",
|
||||||
"deploy-rs": "deploy-rs",
|
"deploy-rs": "deploy-rs",
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"grub2-themes": "grub2-themes",
|
"grub2-themes": "grub2-themes",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"musnix": "musnix",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixos-wsl": "nixos-wsl",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-beets": "nixpkgs-beets",
|
|
||||||
"nixpkgs-calibre": "nixpkgs-calibre",
|
|
||||||
"nixpkgs-master": "nixpkgs-master",
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"noctalia": "noctalia",
|
||||||
|
"nypkgs": "nypkgs",
|
||||||
"plasma-manager": "plasma-manager",
|
"plasma-manager": "plasma-manager",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"utils": "utils",
|
"utils": "utils",
|
||||||
@@ -288,11 +383,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780547341,
|
"lastModified": 1770683991,
|
||||||
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
|
"narHash": "sha256-xVfPvXDf9QN3Eh9dV+Lw6IkWG42KSuQ1u2260HKvpnc=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
|
"rev": "8b89f44c2cc4581e402111d928869fe7ba9f7033",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -6,12 +6,11 @@
|
|||||||
zapret.url = "github:oqyude/zapret-easyflake"; # stupid flake of zapret
|
zapret.url = "github:oqyude/zapret-easyflake"; # stupid flake of zapret
|
||||||
|
|
||||||
# nixpkgs
|
# nixpkgs
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
# nixpkgs-last-unstable.url = "github:NixOS/nixpkgs/6b4955211758ba47fac850c040a27f23b9b4008f";
|
# nixpkgs-last-unstable.url = "github:NixOS/nixpkgs/6b4955211758ba47fac850c040a27f23b9b4008f";
|
||||||
nixpkgs-calibre.url = "github:NixOS/nixpkgs/566acc07c54dc807f91625bb286cb9b321b5f42a";
|
# nixpkgs-calibre.url = "github:NixOS/nixpkgs/e6f23dc08d3624daab7094b701aa3954923c6bbb";
|
||||||
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
|
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||||
nixpkgs-beets.url = "github:NixOS/nixpkgs/832efc09b4caf6b4569fbf9dc01bec3082a00611"; # 2343bbb58f99267223bc2aac4fc9ea301a155a16
|
|
||||||
#nixpkgs-fingerprint.url = "github:NixOS/nixpkgs/nixos-24.11";
|
#nixpkgs-fingerprint.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
|
|
||||||
# nix-community
|
# nix-community
|
||||||
@@ -37,10 +36,14 @@
|
|||||||
# nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
|
# nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
|
||||||
# flake-utils.url = "github:numtide/flake-utils";
|
# flake-utils.url = "github:numtide/flake-utils";
|
||||||
# flake-parts.url = "github:hercules-ci/flake-parts";
|
# flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
# noctalia = {
|
# nur = {
|
||||||
# url = "github:noctalia-dev/noctalia-shell";
|
# url = "github:nix-community/NUR";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# };
|
# };
|
||||||
|
noctalia = {
|
||||||
|
url = "github:noctalia-dev/noctalia-shell";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager"; # flake:home-manager
|
url = "github:nix-community/home-manager"; # flake:home-manager
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -57,18 +60,14 @@
|
|||||||
home-manager.follows = "home-manager";
|
home-manager.follows = "home-manager";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
sops-nix = {
|
|
||||||
url = "github:Mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
grub2-themes = {
|
|
||||||
url = "github:vinceliuice/grub2-themes";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
# nix-index-database = {
|
# nix-index-database = {
|
||||||
# url = "github:nix-community/nix-index-database";
|
# url = "github:nix-community/nix-index-database";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# };
|
# };
|
||||||
|
compose2nix = {
|
||||||
|
url = "github:aksiksi/compose2nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
# extras
|
# extras
|
||||||
# nix-gaming.url = "github:fufexan/nix-gaming";
|
# nix-gaming.url = "github:fufexan/nix-gaming";
|
||||||
@@ -79,15 +78,23 @@
|
|||||||
# flake-compat.follows = "flake-compat";
|
# flake-compat.follows = "flake-compat";
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
# musnix = {
|
musnix = {
|
||||||
# url = "github:musnix/musnix";
|
url = "github:musnix/musnix";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# };
|
};
|
||||||
# nypkgs = {
|
grub2-themes = {
|
||||||
# # https://github.com/yunfachi/nypkgs
|
url = "github:vinceliuice/grub2-themes";
|
||||||
# url = "github:yunfachi/nypkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
};
|
||||||
# };
|
nypkgs = {
|
||||||
|
# https://github.com/yunfachi/nypkgs
|
||||||
|
url = "github:yunfachi/nypkgs";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
sops-nix = {
|
||||||
|
url = "github:Mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
# stylix = {
|
# stylix = {
|
||||||
# url = "github:danth/stylix";
|
# url = "github:danth/stylix";
|
||||||
# inputs = {
|
# inputs = {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./gramps.nix
|
./gramps.nix
|
||||||
./streamrip.nix
|
./streamrip.nix
|
||||||
# ./v2rayn.nix
|
./v2rayn.nix
|
||||||
./yt-dlp.nix
|
./yt-dlp.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,18 @@
|
|||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
streamripPath = "${xlib.dirs.wsl-storage}/streamrip";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
xdg = {
|
||||||
|
configFile = {
|
||||||
|
"streamrip" = {
|
||||||
|
source = config.lib.file.mkOutOfStoreSymlink streamripPath;
|
||||||
|
target = "streamrip";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.streamrip
|
pkgs.streamrip
|
||||||
];
|
];
|
||||||
|
|||||||
+3
-3
@@ -15,7 +15,7 @@ let
|
|||||||
];
|
];
|
||||||
home = {
|
home = {
|
||||||
username = username;
|
username = username;
|
||||||
stateVersion = lib.mkDefault "26.05";
|
stateVersion = lib.mkDefault "25.05";
|
||||||
homeDirectory =
|
homeDirectory =
|
||||||
if username == "root" then lib.mkDefault "/${username}" else lib.mkDefault "/home/${username}";
|
if username == "root" then lib.mkDefault "/${username}" else lib.mkDefault "/home/${username}";
|
||||||
enableNixpkgsReleaseCheck = false;
|
enableNixpkgsReleaseCheck = false;
|
||||||
@@ -24,7 +24,7 @@ let
|
|||||||
mkRootModule = username: {
|
mkRootModule = username: {
|
||||||
home = {
|
home = {
|
||||||
username = username;
|
username = username;
|
||||||
stateVersion = lib.mkDefault "26.05";
|
stateVersion = lib.mkDefault "25.05";
|
||||||
homeDirectory =
|
homeDirectory =
|
||||||
if username == "root" then lib.mkDefault "/${username}" else lib.mkDefault "/home/${username}";
|
if username == "root" then lib.mkDefault "/${username}" else lib.mkDefault "/home/${username}";
|
||||||
enableNixpkgsReleaseCheck = false;
|
enableNixpkgsReleaseCheck = false;
|
||||||
@@ -36,7 +36,7 @@ let
|
|||||||
];
|
];
|
||||||
home = {
|
home = {
|
||||||
username = username;
|
username = username;
|
||||||
stateVersion = lib.mkDefault "26.05";
|
stateVersion = lib.mkDefault "25.05";
|
||||||
homeDirectory =
|
homeDirectory =
|
||||||
if username == "root" then lib.mkDefault "/${username}" else lib.mkDefault "/home/${username}";
|
if username == "root" then lib.mkDefault "/${username}" else lib.mkDefault "/home/${username}";
|
||||||
enableNixpkgsReleaseCheck = false;
|
enableNixpkgsReleaseCheck = false;
|
||||||
|
|||||||
@@ -75,6 +75,7 @@
|
|||||||
# Games
|
# Games
|
||||||
#ludusavi
|
#ludusavi
|
||||||
#prismlauncher
|
#prismlauncher
|
||||||
|
steam
|
||||||
#lutris
|
#lutris
|
||||||
|
|
||||||
# AI
|
# AI
|
||||||
|
|||||||
@@ -8,8 +8,12 @@
|
|||||||
let
|
let
|
||||||
symlinksPaths = {
|
symlinksPaths = {
|
||||||
# cfg
|
# cfg
|
||||||
|
"${xlib.dirs.user-storage}/ssh/config" = ".ssh/config";
|
||||||
|
"${xlib.dirs.user-storage}/beets" = ".config/beets";
|
||||||
"${xlib.dirs.user-storage}/ludusavi" = ".config/ludusavi";
|
"${xlib.dirs.user-storage}/ludusavi" = ".config/ludusavi";
|
||||||
|
"${xlib.dirs.user-storage}/solaar" = ".config/solaar";
|
||||||
"${xlib.dirs.user-storage}/easyeffects" = ".config/easyeffects";
|
"${xlib.dirs.user-storage}/easyeffects" = ".config/easyeffects";
|
||||||
|
"${xlib.dirs.user-storage}/KeePassXC" = ".config/keepassxc";
|
||||||
"${xlib.dirs.user-storage}/v2rayN" = ".local/share/v2rayN";
|
"${xlib.dirs.user-storage}/v2rayN" = ".local/share/v2rayN";
|
||||||
"/etc/nixos" = "Configuration";
|
"/etc/nixos" = "Configuration";
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -8,13 +8,18 @@
|
|||||||
let
|
let
|
||||||
symlinksPaths = {
|
symlinksPaths = {
|
||||||
# cfg
|
# cfg
|
||||||
|
"${xlib.dirs.user-storage}/ssh/config" = ".ssh/config";
|
||||||
|
"${xlib.dirs.user-storage}/beets" = ".config/beets";
|
||||||
"${xlib.dirs.user-storage}/ludusavi" = ".config/ludusavi";
|
"${xlib.dirs.user-storage}/ludusavi" = ".config/ludusavi";
|
||||||
|
"${xlib.dirs.user-storage}/solaar" = ".config/solaar";
|
||||||
|
"${xlib.dirs.user-storage}/easyeffects" = ".config/easyeffects";
|
||||||
|
"${xlib.dirs.user-storage}/KeePassXC" = ".config/keepassxc";
|
||||||
"${xlib.dirs.user-storage}/v2rayN" = ".local/share/v2rayN";
|
"${xlib.dirs.user-storage}/v2rayN" = ".local/share/v2rayN";
|
||||||
"/etc/nixos" = "Configuration";
|
"/etc/nixos" = "Configuration";
|
||||||
|
|
||||||
"${config.home.homeDirectory}/Games/PrismLaunchers/${config.home.username}" =
|
"${config.home.homeDirectory}/Games/PrismLaunchers/${config.home.username}" =
|
||||||
".local/share/PrismLauncher";
|
".local/share/PrismLauncher";
|
||||||
"${xlib.dirs.lamet-drive}/Users/oqyude/Music" = "Music";
|
#"${xlib.dirs.lamet-drive}/Users/oqyude/Music" = "Music";
|
||||||
};
|
};
|
||||||
mkLinks = lib.mapAttrs' (sourcePath: targetPath: {
|
mkLinks = lib.mapAttrs' (sourcePath: targetPath: {
|
||||||
name = targetPath;
|
name = targetPath;
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
let
|
let
|
||||||
symlinksPaths = {
|
symlinksPaths = {
|
||||||
"${config.home.homeDirectory}/External/Music" = "Music";
|
"${config.home.homeDirectory}/External/Music" = "Music";
|
||||||
|
"${xlib.dirs.storage}/beets" = ".config/beets";
|
||||||
|
"${xlib.dirs.storage}/ssh/config" = ".ssh/config";
|
||||||
|
"${xlib.dirs.storage}/ssh/known_hosts" = ".ssh/known_hosts";
|
||||||
};
|
};
|
||||||
mkLinks = lib.mapAttrs' (sourcePath: targetPath: {
|
mkLinks = lib.mapAttrs' (sourcePath: targetPath: {
|
||||||
name = targetPath;
|
name = targetPath;
|
||||||
|
|||||||
+4
-1
@@ -9,7 +9,10 @@ let
|
|||||||
symlinksPaths = {
|
symlinksPaths = {
|
||||||
"${config.home.homeDirectory}/External/Music" = "Music";
|
"${config.home.homeDirectory}/External/Music" = "Music";
|
||||||
"${xlib.dirs.wsl-home}" = "External";
|
"${xlib.dirs.wsl-home}" = "External";
|
||||||
"${xlib.dirs.wsl-storage}" = "Storage";
|
"${xlib.dirs.wsl-storage}/beets" = ".config/beets";
|
||||||
|
"${xlib.dirs.wsl-storage}/ssh/config" = ".ssh/config";
|
||||||
|
"${xlib.dirs.wsl-storage}/ssh/known_hosts" = ".ssh/known_hosts";
|
||||||
|
"${xlib.dirs.wsl-storage}/flow" = ".config/flow";
|
||||||
};
|
};
|
||||||
mkLinks = lib.mapAttrs' (sourcePath: targetPath: {
|
mkLinks = lib.mapAttrs' (sourcePath: targetPath: {
|
||||||
name = targetPath;
|
name = targetPath;
|
||||||
|
|||||||
@@ -1,131 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
virtualisation = {
|
|
||||||
podman = {
|
|
||||||
enable = true;
|
|
||||||
autoPrune = {
|
|
||||||
enable = true;
|
|
||||||
flags = [ "--all" ];
|
|
||||||
};
|
|
||||||
dockerCompat = true;
|
|
||||||
};
|
|
||||||
oci-containers = {
|
|
||||||
backend = "podman";
|
|
||||||
containers."3xui_app" = {
|
|
||||||
image = "ghcr.io/mhsanaei/3x-ui:latest";
|
|
||||||
environment = {
|
|
||||||
"XRAY_VMESS_AEAD_FORCED" = "false";
|
|
||||||
"XUI_ENABLE_FAIL2BAN" = "true";
|
|
||||||
"TZ" = "Europe/Moscow";
|
|
||||||
};
|
|
||||||
volumes = [
|
|
||||||
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/cert/:/root/cert:rw"
|
|
||||||
"${xlib.dirs.services-mnt-folder}/containers/3x-ui/db/:/etc/x-ui:rw"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--network=host"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
services = {
|
|
||||||
"podman-3xui_app" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-3x-ui-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-3x-ui-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# Update
|
|
||||||
"podman-update-3xui_app" = {
|
|
||||||
path = [
|
|
||||||
pkgs.podman
|
|
||||||
];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
TimeoutSec = 300;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman pull ghcr.io/mhsanaei/3x-ui:latest
|
|
||||||
systemctl restart podman-3xui_app.service
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
# Builds
|
|
||||||
# "podman-build-3xui_app" = {
|
|
||||||
# path = [
|
|
||||||
# pkgs.podman
|
|
||||||
# pkgs.git
|
|
||||||
# ];
|
|
||||||
# serviceConfig = {
|
|
||||||
# Type = "oneshot";
|
|
||||||
# TimeoutSec = 300;
|
|
||||||
# };
|
|
||||||
# script = ''
|
|
||||||
# cd /mnt/containers/3x-ui
|
|
||||||
# podman build -t compose2nix/3xui_app -f ./Dockerfile .
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
# Root service
|
|
||||||
# When started, this will automatically create all resources and start
|
|
||||||
# the containers. When stopped, this will teardown all resources.
|
|
||||||
targets."podman-compose-3x-ui-root" = {
|
|
||||||
unitConfig = {
|
|
||||||
Description = "Root target generated by compose2nix.";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
timers."podman-update-3xui_app" = {
|
|
||||||
wantedBy = [ "timers.target" ];
|
|
||||||
timerConfig = {
|
|
||||||
OnCalendar = "weekly";
|
|
||||||
Persistent = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Folders
|
|
||||||
tmpfiles.rules = [
|
|
||||||
"d /mnt 0755 root root -"
|
|
||||||
"d /mnt/containers 0755 root root -"
|
|
||||||
"d /mnt/services/containers 0755 root root -"
|
|
||||||
"d /mnt/services/containers/3x-ui 0755 root root -"
|
|
||||||
"d /mnt/services/containers/3x-ui/cert 0755 root root -"
|
|
||||||
"d /mnt/services/containers/3x-ui/db 0755 root root -"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable container name DNS for all Podman networks.
|
|
||||||
networking.firewall = {
|
|
||||||
allowedUDPPortRanges = [
|
|
||||||
{
|
|
||||||
from = 14380;
|
|
||||||
to = 15380;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
allowedTCPPortRanges = [
|
|
||||||
{
|
|
||||||
from = 14380;
|
|
||||||
to = 15380;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
interfaces =
|
|
||||||
let
|
|
||||||
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"${matchAll}".allowedUDPPorts = [ 53 ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Runtime
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
autoPrune.enable = true;
|
|
||||||
dockerCompat = true;
|
|
||||||
dockerSocket.enable = true;
|
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable container name DNS for all Podman networks.
|
|
||||||
networking.firewall.interfaces =
|
|
||||||
let
|
|
||||||
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"${matchAll}".allowedUDPPorts = [ 53 ];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.oci-containers.backend = "podman";
|
|
||||||
|
|
||||||
# Containers
|
|
||||||
virtualisation.oci-containers.containers."openhands-app" = {
|
|
||||||
image = "ghcr.io/openhands/openhands:latest";
|
|
||||||
environment = {
|
|
||||||
"AGENT_SERVER_IMAGE_REPOSITORY" = "ghcr.io/openhands/agent-server";
|
|
||||||
"AGENT_SERVER_IMAGE_TAG" = "31536c8-python";
|
|
||||||
"WORKSPACE_MOUNT_PATH" = "${xlib.dirs.services-mnt-folder}/containers/openhands/workspace";
|
|
||||||
};
|
|
||||||
volumes = [
|
|
||||||
"${xlib.dirs.services-mnt-folder}/containers/openhands/userspace:/.openhands:rw"
|
|
||||||
"${xlib.dirs.services-mnt-folder}/containers/openhands/workspace:/opt/workspace_base:rw"
|
|
||||||
"/run/podman/podman.sock:/var/run/docker.sock:rw"
|
|
||||||
];
|
|
||||||
ports = [
|
|
||||||
"3000:3000/tcp"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
# "--network=host"
|
|
||||||
"--add-host=host.docker.internal:host-gateway"
|
|
||||||
"--network-alias=openhands"
|
|
||||||
"--network=openhands_default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-openhands-app" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "no";
|
|
||||||
};
|
|
||||||
after = [
|
|
||||||
"podman-network-openhands_default.service"
|
|
||||||
];
|
|
||||||
requires = [
|
|
||||||
"podman-network-openhands_default.service"
|
|
||||||
];
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-openhands-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-openhands-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Networks
|
|
||||||
systemd.services."podman-network-openhands_default" = {
|
|
||||||
path = [ pkgs.podman ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStop = "podman network rm -f openhands_default";
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman network inspect openhands_default || podman network create openhands_default
|
|
||||||
'';
|
|
||||||
partOf = [ "podman-compose-openhands-root.target" ];
|
|
||||||
wantedBy = [ "podman-compose-openhands-root.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Builds
|
|
||||||
# systemd.services."podman-build-openhands-app" = {
|
|
||||||
# enable = false;
|
|
||||||
# path = [
|
|
||||||
# pkgs.podman
|
|
||||||
# pkgs.git
|
|
||||||
# ];
|
|
||||||
# serviceConfig = {
|
|
||||||
# Type = "oneshot";
|
|
||||||
# TimeoutSec = 300;
|
|
||||||
# };
|
|
||||||
# script = ''
|
|
||||||
# cd ${xlib.dirs.services-mnt-folder}/containers/openhands/source
|
|
||||||
# podman build -t openhands:latest -f ./containers/app/Dockerfile .
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Root service
|
|
||||||
# When started, this will automatically create all resources and start
|
|
||||||
# the containers. When stopped, this will teardown all resources.
|
|
||||||
systemd.targets."podman-compose-openhands-root" = {
|
|
||||||
unitConfig = {
|
|
||||||
Description = "Root target generated by compose2nix.";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d ${xlib.dirs.services-mnt-folder} 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers/openhands 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers/openhands/userspace 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers/openhands/workspace 0755 root root -"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d ${xlib.dirs.services-mnt-folder} 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers/remnanode 0755 root root -"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
# Auto-generated by compose2nix.
|
|
||||||
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Runtime
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
autoPrune.enable = true;
|
|
||||||
dockerCompat = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable container name DNS for all Podman networks.
|
|
||||||
networking.firewall.interfaces =
|
|
||||||
let
|
|
||||||
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"${matchAll}".allowedUDPPorts = [ 53 ];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.oci-containers.backend = "podman";
|
|
||||||
|
|
||||||
# Containers
|
|
||||||
virtualisation.oci-containers.containers."remnawave-panel-1" = {
|
|
||||||
image = "localhost/compose2nix/remnawave-panel-1";
|
|
||||||
environment = {
|
|
||||||
"API_INSTANCES" = "1";
|
|
||||||
"APP_PORT" = "3000";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD" = "[60, 80]";
|
|
||||||
"CLOUDFLARE_TOKEN" = "ey...";
|
|
||||||
"DATABASE_URL" = "postgresql://remnawave:remnawave@remnawave-db:5432/postgres";
|
|
||||||
"FRONT_END_DOMAIN" = "*";
|
|
||||||
"IS_DOCS_ENABLED" = "false";
|
|
||||||
"IS_TELEGRAM_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"JWT_API_TOKENS_SECRET" =
|
|
||||||
"787aa44c10130a9fa17ea3ea50c1248dd3e868f74941b96c09d608051399f88b95b67cd68d045aa39658b4b3fe933bf2b2c1437522498976f39f85ae1eab40da";
|
|
||||||
"JWT_AUTH_SECRET" =
|
|
||||||
"2bc14bacb6b82ce9e3ef69f8dd7bfb6b8a531f4f516902735d1d8f1bac8ff9b5077398f95b942b1adafc0ca1da4cdfd24a18539fa6eb26bee3f597a45deac94a";
|
|
||||||
"METRICS_PASS" = "admin";
|
|
||||||
"METRICS_PORT" = "3001";
|
|
||||||
"METRICS_USER" = "admin";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS" = "[6, 24, 48]";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"PANEL_DOMAIN" = "rw.zeroq.ru";
|
|
||||||
"POSTGRES_DB" = "remnawave";
|
|
||||||
"POSTGRES_PASSWORD" = "gQLqOm2jK/Z1oBXCD18XSgr76M8ZqkVhHZbNKvZQXnY=";
|
|
||||||
"POSTGRES_USER" = "remnawave";
|
|
||||||
"REDIS_SOCKET" = "/var/run/valkey/valkey.sock";
|
|
||||||
"SCALAR_PATH" = "/scalar";
|
|
||||||
"SUB_PUBLIC_DOMAIN" = "rw.zeroq.ru/api/sub";
|
|
||||||
"SWAGGER_PATH" = "/docs";
|
|
||||||
# "TELEGRAM_BOT_TOKEN" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_CRM" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_NODES" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_SERVICE" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_TBLOCKER" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_USERS" = "change_me";
|
|
||||||
"WEBHOOK_ENABLED" = "false";
|
|
||||||
"WEBHOOK_SECRET_HEADER" = "vsmu67Kmg6R8FjIOF1WUY8LWBHie4scdEqrfsKmyf4IAf8dY3nFS0wwYHkhh6ZvQ";
|
|
||||||
"WEBHOOK_URL" = "https://your-webhook-url.com/endpoint";
|
|
||||||
};
|
|
||||||
ports = [
|
|
||||||
"3003:3003/tcp"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--network-alias=remnawave-panel-1"
|
|
||||||
"--network=remnawavebackend_default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-remnawave-panel-1" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Builds
|
|
||||||
systemd.services."podman-build-remnawave-panel-1" = {
|
|
||||||
path = [
|
|
||||||
pkgs.podman
|
|
||||||
pkgs.git
|
|
||||||
];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
TimeoutSec = 300;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
cd /mnt/s/Deploy/remnawave-backend
|
|
||||||
podman build -t compose2nix/remnawave-panel-1 .
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Root service
|
|
||||||
# When started, this will automatically create all resources and start
|
|
||||||
# the containers. When stopped, this will teardown all resources.
|
|
||||||
systemd.targets."podman-compose-remnawave-root" = {
|
|
||||||
unitConfig = {
|
|
||||||
Description = "Root target generated by compose2nix.";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,290 +0,0 @@
|
|||||||
# Auto-generated by compose2nix.
|
|
||||||
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Runtime
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
autoPrune.enable = true;
|
|
||||||
dockerCompat = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable container name DNS for all Podman networks.
|
|
||||||
networking.firewall.interfaces =
|
|
||||||
let
|
|
||||||
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"${matchAll}".allowedUDPPorts = [ 53 ];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.oci-containers.backend = "podman";
|
|
||||||
|
|
||||||
# Containers
|
|
||||||
virtualisation.oci-containers.containers."remnawave" = {
|
|
||||||
image = "remnawave/backend:2";
|
|
||||||
environment = {
|
|
||||||
"API_INSTANCES" = "1";
|
|
||||||
"APP_PORT" = "3000";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD" = "[60, 80]";
|
|
||||||
"CLOUDFLARE_TOKEN" = "ey...";
|
|
||||||
"DATABASE_URL" = "postgresql://remnawave:remnawave@remnawave-db:5432/postgres";
|
|
||||||
"FRONT_END_DOMAIN" = "*";
|
|
||||||
"IS_DOCS_ENABLED" = "false";
|
|
||||||
"IS_TELEGRAM_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"JWT_API_TOKENS_SECRET" =
|
|
||||||
"787aa44c10130a9fa17ea3ea50c1248dd3e868f74941b96c09d608051399f88b95b67cd68d045aa39658b4b3fe933bf2b2c1437522498976f39f85ae1eab40da";
|
|
||||||
"JWT_AUTH_SECRET" =
|
|
||||||
"2bc14bacb6b82ce9e3ef69f8dd7bfb6b8a531f4f516902735d1d8f1bac8ff9b5077398f95b942b1adafc0ca1da4cdfd24a18539fa6eb26bee3f597a45deac94a";
|
|
||||||
"METRICS_PASS" = "admin";
|
|
||||||
"METRICS_PORT" = "3001";
|
|
||||||
"METRICS_USER" = "admin";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS" = "[6, 24, 48]";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"PANEL_DOMAIN" = "rw.zeroq.ru";
|
|
||||||
"POSTGRES_DB" = "remnawave";
|
|
||||||
"POSTGRES_PASSWORD" = "gQLqOm2jK/Z1oBXCD18XSgr76M8ZqkVhHZbNKvZQXnY=";
|
|
||||||
"POSTGRES_USER" = "remnawave";
|
|
||||||
"REDIS_SOCKET" = "/var/run/valkey/valkey.sock";
|
|
||||||
"SCALAR_PATH" = "/scalar";
|
|
||||||
"SUB_PUBLIC_DOMAIN" = "rw.zeroq.ru/api/sub";
|
|
||||||
"SWAGGER_PATH" = "/docs";
|
|
||||||
"TELEGRAM_BOT_TOKEN" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_CRM" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_NODES" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_SERVICE" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_TBLOCKER" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_USERS" = "change_me";
|
|
||||||
"WEBHOOK_ENABLED" = "false";
|
|
||||||
"WEBHOOK_SECRET_HEADER" = "vsmu67Kmg6R8FjIOF1WUY8LWBHie4scdEqrfsKmyf4IAf8dY3nFS0wwYHkhh6ZvQ";
|
|
||||||
"WEBHOOK_URL" = "https://your-webhook-url.com/endpoint";
|
|
||||||
};
|
|
||||||
volumes = [
|
|
||||||
"valkey-socket:/var/run/valkey:rw"
|
|
||||||
];
|
|
||||||
ports = [
|
|
||||||
"127.0.0.1:3000:3000/tcp"
|
|
||||||
"127.0.0.1:3001:3001/tcp"
|
|
||||||
];
|
|
||||||
dependsOn = [
|
|
||||||
"remnawave-db"
|
|
||||||
"remnawave-redis"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--health-cmd=curl -f http://localhost:3001/health"
|
|
||||||
"--health-interval=30s"
|
|
||||||
"--health-retries=3"
|
|
||||||
"--health-start-period=30s"
|
|
||||||
"--health-timeout=5s"
|
|
||||||
"--hostname=remnawave"
|
|
||||||
"--network-alias=remnawave"
|
|
||||||
"--network=remnawave-network"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-remnawave" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
after = [
|
|
||||||
"podman-network-remnawave-network.service"
|
|
||||||
"podman-volume-valkey-socket.service"
|
|
||||||
];
|
|
||||||
requires = [
|
|
||||||
"podman-network-remnawave-network.service"
|
|
||||||
"podman-volume-valkey-socket.service"
|
|
||||||
];
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
virtualisation.oci-containers.containers."remnawave-db" = {
|
|
||||||
image = "postgres:17.6";
|
|
||||||
environment = {
|
|
||||||
"API_INSTANCES" = "1";
|
|
||||||
"APP_PORT" = "3000";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD" = "[60, 80]";
|
|
||||||
"CLOUDFLARE_TOKEN" = "ey...";
|
|
||||||
"DATABASE_URL" = "postgresql://remnawave:remnawave@remnawave-db:5432/postgres";
|
|
||||||
"FRONT_END_DOMAIN" = "*";
|
|
||||||
"IS_DOCS_ENABLED" = "false";
|
|
||||||
"IS_TELEGRAM_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"JWT_API_TOKENS_SECRET" =
|
|
||||||
"787aa44c10130a9fa17ea3ea50c1248dd3e868f74941b96c09d608051399f88b95b67cd68d045aa39658b4b3fe933bf2b2c1437522498976f39f85ae1eab40da";
|
|
||||||
"JWT_AUTH_SECRET" =
|
|
||||||
"2bc14bacb6b82ce9e3ef69f8dd7bfb6b8a531f4f516902735d1d8f1bac8ff9b5077398f95b942b1adafc0ca1da4cdfd24a18539fa6eb26bee3f597a45deac94a";
|
|
||||||
"METRICS_PASS" = "admin";
|
|
||||||
"METRICS_PORT" = "3001";
|
|
||||||
"METRICS_USER" = "admin";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS" = "[6, 24, 48]";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"PANEL_DOMAIN" = "rw.zeroq.ru";
|
|
||||||
"POSTGRES_DB" = "";
|
|
||||||
"POSTGRES_PASSWORD" = "";
|
|
||||||
"POSTGRES_USER" = "";
|
|
||||||
"REDIS_SOCKET" = "/var/run/valkey/valkey.sock";
|
|
||||||
"SCALAR_PATH" = "/scalar";
|
|
||||||
"SUB_PUBLIC_DOMAIN" = "rw.zeroq.ru/api/sub";
|
|
||||||
"SWAGGER_PATH" = "/docs";
|
|
||||||
"TELEGRAM_BOT_TOKEN" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_CRM" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_NODES" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_SERVICE" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_TBLOCKER" = "change_me";
|
|
||||||
"TELEGRAM_NOTIFY_USERS" = "change_me";
|
|
||||||
"TZ" = "UTC";
|
|
||||||
"WEBHOOK_ENABLED" = "false";
|
|
||||||
"WEBHOOK_SECRET_HEADER" = "vsmu67Kmg6R8FjIOF1WUY8LWBHie4scdEqrfsKmyf4IAf8dY3nFS0wwYHkhh6ZvQ";
|
|
||||||
"WEBHOOK_URL" = "https://your-webhook-url.com/endpoint";
|
|
||||||
};
|
|
||||||
volumes = [
|
|
||||||
"remnawave-db-data:/var/lib/postgresql/data:rw"
|
|
||||||
];
|
|
||||||
ports = [
|
|
||||||
"127.0.0.1:6767:5432/tcp"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--health-cmd=pg_isready -U \${POSTGRES_USER} -d \${POSTGRES_DB}"
|
|
||||||
"--health-interval=3s"
|
|
||||||
"--health-retries=3"
|
|
||||||
"--health-timeout=10s"
|
|
||||||
"--hostname=remnawave-db"
|
|
||||||
"--network-alias=remnawave-db"
|
|
||||||
"--network=remnawave-network"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-remnawave-db" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
after = [
|
|
||||||
"podman-network-remnawave-network.service"
|
|
||||||
"podman-volume-remnawave-db-data.service"
|
|
||||||
];
|
|
||||||
requires = [
|
|
||||||
"podman-network-remnawave-network.service"
|
|
||||||
"podman-volume-remnawave-db-data.service"
|
|
||||||
];
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
virtualisation.oci-containers.containers."remnawave-redis" = {
|
|
||||||
image = "valkey/valkey:9-alpine";
|
|
||||||
volumes = [
|
|
||||||
"valkey-socket:/var/run/valkey:rw"
|
|
||||||
];
|
|
||||||
cmd = [
|
|
||||||
"valkey-server"
|
|
||||||
"--save"
|
|
||||||
""
|
|
||||||
"--appendonly"
|
|
||||||
"no"
|
|
||||||
"--maxmemory-policy"
|
|
||||||
"noeviction"
|
|
||||||
"--loglevel"
|
|
||||||
"warning"
|
|
||||||
"--unixsocket"
|
|
||||||
"/var/run/valkey/valkey.sock"
|
|
||||||
"--unixsocketperm"
|
|
||||||
"777"
|
|
||||||
"--port"
|
|
||||||
"0"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--health-cmd=[\"valkey-cli\", \"-s\", \"/var/run/valkey/valkey.sock\", \"ping\"]"
|
|
||||||
"--health-interval=3s"
|
|
||||||
"--health-retries=3"
|
|
||||||
"--health-timeout=3s"
|
|
||||||
"--hostname=remnawave-redis"
|
|
||||||
"--network-alias=remnawave-redis"
|
|
||||||
"--network=remnawave-network"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-remnawave-redis" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
after = [
|
|
||||||
"podman-network-remnawave-network.service"
|
|
||||||
"podman-volume-valkey-socket.service"
|
|
||||||
];
|
|
||||||
requires = [
|
|
||||||
"podman-network-remnawave-network.service"
|
|
||||||
"podman-volume-valkey-socket.service"
|
|
||||||
];
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Networks
|
|
||||||
systemd.services."podman-network-remnawave-network" = {
|
|
||||||
path = [ pkgs.podman ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStop = "podman network rm -f remnawave-network";
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman network inspect remnawave-network || podman network create remnawave-network --driver=bridge
|
|
||||||
'';
|
|
||||||
partOf = [ "podman-compose-remnawave-root.target" ];
|
|
||||||
wantedBy = [ "podman-compose-remnawave-root.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Volumes
|
|
||||||
systemd.services."podman-volume-remnawave-db-data" = {
|
|
||||||
path = [ pkgs.podman ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman volume inspect remnawave-db-data || podman volume create remnawave-db-data --driver=local
|
|
||||||
'';
|
|
||||||
partOf = [ "podman-compose-remnawave-root.target" ];
|
|
||||||
wantedBy = [ "podman-compose-remnawave-root.target" ];
|
|
||||||
};
|
|
||||||
systemd.services."podman-volume-valkey-socket" = {
|
|
||||||
path = [ pkgs.podman ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman volume inspect valkey-socket || podman volume create valkey-socket --driver=local
|
|
||||||
'';
|
|
||||||
partOf = [ "podman-compose-remnawave-root.target" ];
|
|
||||||
wantedBy = [ "podman-compose-remnawave-root.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Root service
|
|
||||||
# When started, this will automatically create all resources and start
|
|
||||||
# the containers. When stopped, this will teardown all resources.
|
|
||||||
systemd.targets."podman-compose-remnawave-root" = {
|
|
||||||
unitConfig = {
|
|
||||||
Description = "Root target generated by compose2nix.";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,198 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
# Runtime
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
autoPrune.enable = true;
|
|
||||||
dockerCompat = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable container name DNS for all Podman networks.
|
|
||||||
networking.firewall.interfaces =
|
|
||||||
let
|
|
||||||
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"${matchAll}".allowedUDPPorts = [ 53 ];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.oci-containers.backend = "podman";
|
|
||||||
|
|
||||||
# Containers
|
|
||||||
virtualisation.oci-containers.containers."remnawave-panel-1" = {
|
|
||||||
image = "ghcr.io/remnawave/backend:latest";
|
|
||||||
environment = {
|
|
||||||
"API_INSTANCES" = "1";
|
|
||||||
"APP_PORT" = "3000";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD" = "[60, 80]";
|
|
||||||
"FRONT_END_DOMAIN" = "*";
|
|
||||||
"IS_DOCS_ENABLED" = "false";
|
|
||||||
"IS_TELEGRAM_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"METRICS_PASS" = "admin";
|
|
||||||
"METRICS_PORT" = "3001";
|
|
||||||
"METRICS_USER" = "admin";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS" = "[6, 24, 48]";
|
|
||||||
"NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED" = "false";
|
|
||||||
"PANEL_DOMAIN" = "rw.zeroq.su";
|
|
||||||
"POSTGRES_DB" = "remnawave";
|
|
||||||
"POSTGRES_USER" = "remnawave";
|
|
||||||
"REDIS_SOCKET" = "/var/run/valkey/valkey.sock";
|
|
||||||
"SCALAR_PATH" = "/scalar";
|
|
||||||
"SUB_PUBLIC_DOMAIN" = "rw.zeroq.su/api/sub";
|
|
||||||
"SWAGGER_PATH" = "/docs";
|
|
||||||
# "TELEGRAM_BOT_TOKEN" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_CRM" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_NODES" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_SERVICE" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_TBLOCKER" = "change_me";
|
|
||||||
# "TELEGRAM_NOTIFY_USERS" = "change_me";
|
|
||||||
"WEBHOOK_ENABLED" = "false";
|
|
||||||
# "WEBHOOK_URL" = "https://your-webhook-url.com/endpoint";
|
|
||||||
};
|
|
||||||
environmentFiles = [
|
|
||||||
"/run/secrets/remnawave-env"
|
|
||||||
];
|
|
||||||
ports = [
|
|
||||||
"3003:3003/tcp"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--network-alias=remnawave-panel-1"
|
|
||||||
"--network=host" # "--network=remnawavebackend_default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-remnawave-panel-1" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-remnawave-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Builds
|
|
||||||
# systemd.services."podman-build-remnawave-panel-1" = {
|
|
||||||
# path = [ pkgs.podman pkgs.git ];
|
|
||||||
# serviceConfig = {
|
|
||||||
# Type = "oneshot";
|
|
||||||
# TimeoutSec = 300;
|
|
||||||
# };
|
|
||||||
# script = ''
|
|
||||||
# cd /mnt/s/Deploy/remnawave-backend
|
|
||||||
# podman build -t compose2nix/remnawave-panel-1 .
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Root service
|
|
||||||
# When started, this will automatically create all resources and start
|
|
||||||
# the containers. When stopped, this will teardown all resources.
|
|
||||||
systemd.targets."podman-compose-remnawave-root" = {
|
|
||||||
unitConfig = {
|
|
||||||
Description = "Root target generated by compose2nix.";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
postgresql = {
|
|
||||||
ensureDatabases = [ "remnawave" ];
|
|
||||||
ensureUsers = [
|
|
||||||
{
|
|
||||||
name = "remnawave";
|
|
||||||
ensureDBOwnership = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services = {
|
|
||||||
remnawave-env = {
|
|
||||||
description = "Generate remnawave env file";
|
|
||||||
requiredBy = [ "podman-remnawave-panel-1.service" ];
|
|
||||||
before = [ "podman-remnawave-panel-1.service" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = "root";
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
cat > /run/secrets/remnawave-env <<EOF
|
|
||||||
DATABASE_URL=$(cat ${config.sops.secrets.DATABASE_URL.path})
|
|
||||||
DATABASE_PASSWORD=$(cat ${config.sops.secrets.DATABASE_PASSWORD.path})
|
|
||||||
JWT_AUTH_SECRET=$(cat ${config.sops.secrets.JWT_AUTH_SECRET.path})
|
|
||||||
JWT_API_TOKENS_SECRET=$(cat ${config.sops.secrets.JWT_API_TOKENS_SECRET.path})
|
|
||||||
WEBHOOK_SECRET_HEADER=$(cat ${config.sops.secrets.WEBHOOK_SECRET_HEADER.path})
|
|
||||||
EOF
|
|
||||||
chmod 600 /run/secrets/remnawave-env
|
|
||||||
'';
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
remnawave-db-init = {
|
|
||||||
description = "Initialize Remnawave DB user";
|
|
||||||
after = [ "postgresql.service" ];
|
|
||||||
requires = [ "postgresql.service" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = "postgres";
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
PASSWORD=$(cat ${config.sops.secrets.DATABASE_PASSWORD.path})
|
|
||||||
${pkgs.postgresql}/bin/psql -v ON_ERROR_STOP=1 <<EOF
|
|
||||||
DO \$\$
|
|
||||||
BEGIN
|
|
||||||
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname='remnawave') THEN
|
|
||||||
EXECUTE format('ALTER ROLE remnawave WITH PASSWORD %L', '$PASSWORD');
|
|
||||||
END IF;
|
|
||||||
END
|
|
||||||
\$\$ LANGUAGE plpgsql;
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets = {
|
|
||||||
DATABASE_PASSWORD = {
|
|
||||||
key = "DATABASE_PASSWORD";
|
|
||||||
sopsFile = ./secrets/remnawave.yaml;
|
|
||||||
owner = "postgres";
|
|
||||||
group = "postgres";
|
|
||||||
mode = "0400";
|
|
||||||
};
|
|
||||||
WEBHOOK_SECRET_HEADER = {
|
|
||||||
key = "WEBHOOK_SECRET_HEADER";
|
|
||||||
sopsFile = ./secrets/remnawave.yaml;
|
|
||||||
mode = "0400";
|
|
||||||
};
|
|
||||||
DATABASE_URL = {
|
|
||||||
key = "DATABASE_URL";
|
|
||||||
sopsFile = ./secrets/remnawave.yaml;
|
|
||||||
mode = "0400";
|
|
||||||
};
|
|
||||||
JWT_AUTH_SECRET = {
|
|
||||||
key = "JWT_AUTH_SECRET";
|
|
||||||
sopsFile = ./secrets/remnawave.yaml;
|
|
||||||
mode = "0400";
|
|
||||||
};
|
|
||||||
JWT_API_TOKENS_SECRET = {
|
|
||||||
key = "JWT_API_TOKENS_SECRET";
|
|
||||||
sopsFile = ./secrets/remnawave.yaml;
|
|
||||||
mode = "0400";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d ${xlib.dirs.services-mnt-folder} 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers 0755 root root -"
|
|
||||||
"d ${xlib.dirs.services-mnt-folder}/containers/remnawave 0755 root root -"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
DATABASE_PASSWORD: ENC[AES256_GCM,data:DRactR3j13q9zHFO0puGhBv09CX9YJc9KtFSLuOUVV/U7O/Nmh5Hb4ID0+A=,iv:5ErptccuQIVxfZKIcpfO5yVtcM0zE7kPn4v7kHctTP8=,tag:e3w8Rz+wGLTrxDSNftmkLw==,type:str]
|
|
||||||
WEBHOOK_SECRET_HEADER: ENC[AES256_GCM,data:ZJYKwG1a8JH0ODeRnrv395plPN7PA18+gi3R/ueGd/r8OrtbVGL8UnZ/6HgW9M+/jCGWNclD5mZfyRg3He6hDg==,iv:PIYCD2n5ED5T24JfG6xhrvStd6jySCoBHhA8hUFIEMk=,tag:WWpfI1q9l9R44FRNaqIiaA==,type:str]
|
|
||||||
DATABASE_URL: ENC[AES256_GCM,data:6plSDBUKyZVAO/djw3bPTthtS11yljwCGfQcIUqQetxROk5hwwVEGNMd1e6nGgS7eTtqJHW6uStkw58=,iv:RDjCVPDgPhMEbCriW0xjrxzcAolmyD55fbkD95LZMlE=,tag:ovH2D3eTXtHFmZba6u+IZg==,type:str]
|
|
||||||
JWT_AUTH_SECRET: ENC[AES256_GCM,data:rzsOoIwJwwzCd+QbelcWYjfe1Bt7Y1ihrEn9tsxNyZnfmVVIkpFC948ne3YhUZ0CXYEDJYen/SFQgyyWsPwTwZgcy11mIZnROh4vlOJvPWILB1IlVQF/JDDts3fvXfe9HQ7ujBwkw5uR/33Rm+yxeLHMWTsn644DZSyKFi53QqY=,iv:aB3meC8BeEsLmiF0UMjQ60xipjGTJ0Qg1XqRHNujPFE=,tag:s/YcehFUrArknqHlXo3MYw==,type:str]
|
|
||||||
JWT_API_TOKENS_SECRET: ENC[AES256_GCM,data:m6EtsdMNDRJk99LEYRgTk5rFNUYux4I2UWo/8AWy+2HJI8tRiOrBO284T3W/N+2/3fbty96sVB/SD8bjIIsxHij51sZTYi4+hdU7VxANGPdiMckKAXtvj3FMsVwrtW4MgRbH0j7taiDtnxVp6F3Cl7Sb0GamKFJjgAZnA3weN/8=,iv:rnNB1AzosstyF3c2pUcvYVTyUWcmo8Du+/b09OgcN9w=,tag:O81gnP2nXJ3JvgkivzVgkw==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3dWxEUDdhV2Z4V3JpNzNL
|
|
||||||
T0ZkYjlLWTNFV2c0Vm5Vb05xK09sQ0RxU0ZVCjhaSVhsSmoyZCtLYlNOVlNnTGFv
|
|
||||||
TTU1Y3I5U3UrcXhOOGt6U0hoSGw0YlUKLS0tIEJIbnJwNUk4Z0ZGNTRQRVFjWFhv
|
|
||||||
d0sreEpsMjV5M2JoRHFnVkpqeGhMM1EKX7K3Q2yj8EZuzCIxWIc+6Xeo+0lidPse
|
|
||||||
wstbeHV8ygWvOjIxjRGPOETQ17GLLl3eNEsk6P2gytZchmLkLYKKsA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2026-04-04T23:08:05Z"
|
|
||||||
mac: ENC[AES256_GCM,data:vWNFqNiWleqvRItVB0X5W/7e/F+LEWmfIKtnjbV5xwgyZ1jkP2N2wkw8CpzDNN5xwrkTdKfziGt+Psg8p72uMfvqns1lgQzvSbT3W8Di7bbIxgvwyBV8qCCpYn95ra/KRmV+oefhhr/1RlBN8wNb3oZI/m7sH8lv9d0sKw5SrE8=,iv:UAOifm4itrG6M3VKi7zelxL73lcpQkGXLSa/dk/hbvM=,tag:rzCK7Id3zQVF8VSDJV3nhg==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.12.2
|
|
||||||
+4
-3
@@ -3,9 +3,9 @@ let
|
|||||||
defaultModule =
|
defaultModule =
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
deviceType,
|
|
||||||
lib,
|
lib,
|
||||||
xlib,
|
xlib,
|
||||||
|
deviceType,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -21,9 +21,10 @@ let
|
|||||||
sops-nix.nixosModules.sops # sops module
|
sops-nix.nixosModules.sops # sops module
|
||||||
self.homeConfigurations.default.nixosModule # default homeConfigurations
|
self.homeConfigurations.default.nixosModule # default homeConfigurations
|
||||||
disko.nixosModules.disko # disko module
|
disko.nixosModules.disko # disko module
|
||||||
|
noctalia.nixosModules.default
|
||||||
];
|
];
|
||||||
nixpkgs.overlays = with inputs; [
|
nixpkgs.overlays = [
|
||||||
self.nixosOverlays.default
|
inputs.self.nixosOverlays.default
|
||||||
];
|
];
|
||||||
_module.args = {
|
_module.args = {
|
||||||
inputs = inputs;
|
inputs = inputs;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
@@ -50,7 +49,7 @@
|
|||||||
programs = {
|
programs = {
|
||||||
dconf.enable = true;
|
dconf.enable = true;
|
||||||
gamemode.enable = true;
|
gamemode.enable = true;
|
||||||
steam.enable = true;
|
# steam.enable = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
@@ -59,7 +58,7 @@
|
|||||||
xkb = {
|
xkb = {
|
||||||
layout = "us,ru";
|
layout = "us,ru";
|
||||||
variant = "";
|
variant = "";
|
||||||
# options = "grp:alt_shift_toggle";
|
options = "grp:alt_shift_toggle";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
libinput.enable = true;
|
libinput.enable = true;
|
||||||
@@ -69,12 +68,7 @@
|
|||||||
cups-pdf.enable = true;
|
cups-pdf.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# environment = {
|
# environment.sessionVariables = {
|
||||||
# systemPackages = [
|
# NIXOS_OZONE_WL = "1";
|
||||||
# pkgs.pcbu-desktop
|
|
||||||
# ];
|
|
||||||
# # sessionVariables = {
|
|
||||||
# # NIXOS_OZONE_WL = "1";
|
|
||||||
# # };
|
|
||||||
# };
|
# };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
./packages.nix
|
./packages.nix
|
||||||
./services.nix
|
./services.nix
|
||||||
./settings.nix
|
./settings.nix
|
||||||
./systemd-routines.nix
|
# ./systemd-routine.nix
|
||||||
./shell.nix
|
./shell.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ in
|
|||||||
btop
|
btop
|
||||||
broot
|
broot
|
||||||
bottom
|
bottom
|
||||||
fastfetch
|
fastfetchMinimal
|
||||||
|
|
||||||
# Encrypt
|
# Encrypt
|
||||||
age
|
age
|
||||||
@@ -38,12 +38,6 @@ in
|
|||||||
lazyjournal
|
lazyjournal
|
||||||
systemctl-tui
|
systemctl-tui
|
||||||
|
|
||||||
# IDE
|
|
||||||
yaml-language-server
|
|
||||||
nil
|
|
||||||
fresh-editor
|
|
||||||
#flow-control
|
|
||||||
|
|
||||||
# Base
|
# Base
|
||||||
curl
|
curl
|
||||||
# efibootmgr
|
# efibootmgr
|
||||||
@@ -59,7 +53,7 @@ in
|
|||||||
wget
|
wget
|
||||||
tree
|
tree
|
||||||
dust
|
dust
|
||||||
tuckr
|
flow-control
|
||||||
|
|
||||||
# Net Diagnostic
|
# Net Diagnostic
|
||||||
mtr
|
mtr
|
||||||
@@ -78,7 +72,7 @@ in
|
|||||||
exfatprogs # for gparted exfat support
|
exfatprogs # for gparted exfat support
|
||||||
|
|
||||||
# Archivers
|
# Archivers
|
||||||
# rar
|
rar
|
||||||
unzip
|
unzip
|
||||||
zstd
|
zstd
|
||||||
zip
|
zip
|
||||||
@@ -92,22 +86,20 @@ in
|
|||||||
|
|
||||||
# To save
|
# To save
|
||||||
tuios
|
tuios
|
||||||
bluetui
|
fresh-editor
|
||||||
speedtest-cli
|
|
||||||
# jocalsend
|
# Test
|
||||||
|
jocalsend
|
||||||
|
lazydocker
|
||||||
|
dtop
|
||||||
tlrc
|
tlrc
|
||||||
lazyssh
|
lazyssh
|
||||||
mcat
|
mcat
|
||||||
|
framework-tool-tui
|
||||||
|
bluetui
|
||||||
snitch
|
snitch
|
||||||
whosthere
|
|
||||||
devenv
|
devenv
|
||||||
|
whosthere
|
||||||
# Test
|
|
||||||
rgx
|
|
||||||
net-tools
|
|
||||||
# lazydocker
|
|
||||||
# dtop
|
|
||||||
# framework-tool-tui
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
environment.variables.EDITOR = "fresh";
|
environment.variables.EDITOR = "fresh";
|
||||||
@@ -126,6 +118,7 @@ in
|
|||||||
enable = false;
|
enable = false;
|
||||||
plugins = {
|
plugins = {
|
||||||
inherit (pkgs.yaziPlugins)
|
inherit (pkgs.yaziPlugins)
|
||||||
|
gitui
|
||||||
git
|
git
|
||||||
sudo
|
sudo
|
||||||
ouch
|
ouch
|
||||||
@@ -188,9 +181,6 @@ in
|
|||||||
name = "oqyude";
|
name = "oqyude";
|
||||||
email = "oqyude@gmail.com";
|
email = "oqyude@gmail.com";
|
||||||
};
|
};
|
||||||
pull = {
|
|
||||||
rebase = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
lazygit.enable = true;
|
lazygit.enable = true;
|
||||||
@@ -202,7 +192,7 @@ in
|
|||||||
flake = "/etc/nixos";
|
flake = "/etc/nixos";
|
||||||
clean = {
|
clean = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraArgs = "--keep 2 --keep-since 2d";
|
extraArgs = "--keep 3 --keep-since 2d";
|
||||||
dates = "daily";
|
dates = "daily";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
xlib,
|
xlib,
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -9,34 +8,33 @@
|
|||||||
system.nixos.label = "default";
|
system.nixos.label = "default";
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
# package = pkgs.lixPackageSets.stable.lix; # maybe unstable
|
channel = {
|
||||||
channel.enable = false;
|
enable = true;
|
||||||
nixPath = [ "nixpkgs=flake:nixpkgs" ];
|
};
|
||||||
|
# nixPath = [ "nixpkgs=flake:nixpkgs" ];
|
||||||
settings = {
|
settings = {
|
||||||
require-sigs = false;
|
require-sigs = false;
|
||||||
substituters = [
|
substituters = [
|
||||||
"http://100.64.0.0:5000"
|
|
||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://mirror.yandex.ru/nixos"
|
"https://mirror.yandex.ru/nixos"
|
||||||
"https://cache.nixos.kz"
|
"https://cache.nixos.kz"
|
||||||
# "https://cache.xd0.zip"
|
"https://cache.xd0.zip"
|
||||||
"https://nixos-cache-proxy.cofob.dev"
|
"https://nixos-cache-proxy.cofob.dev"
|
||||||
# "https://nixos-cache-proxy.sweetdogs.ru"
|
# "https://nixos-cache-proxy.sweetdogs.ru"
|
||||||
# "https://nixos-cache-proxy.elxreno.com"
|
# "https://nixos-cache-proxy.elxreno.com"
|
||||||
# "https://nixos.snix.store" # https://nixos.snix.store/
|
# "https://nixos.snix.store" # https://nixos.snix.store/
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"cache.local:be5jFLkiwNyOep/McxSafB3jguBmztxx+oJ46ySyc/s="
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
];
|
];
|
||||||
stalled-download-timeout = 8;
|
stalled-download-timeout = 4;
|
||||||
connect-timeout = 8;
|
connect-timeout = 4;
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
fallback = true;
|
fallback = true;
|
||||||
allow-import-from-derivation = true;
|
# allow-import-from-derivation = false;
|
||||||
keep-derivations = false;
|
# keep-derivations = true;
|
||||||
keep-outputs = false;
|
# keep-outputs = true;
|
||||||
experimental-features = [
|
experimental-features = [
|
||||||
"flakes"
|
"flakes"
|
||||||
"nix-command"
|
"nix-command"
|
||||||
@@ -45,10 +43,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
flake = {
|
# flake = {
|
||||||
setFlakeRegistry = false;
|
# setFlakeRegistry = false;
|
||||||
setNixPath = false;
|
# setNixPath = false;
|
||||||
};
|
# };
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@
|
|||||||
gp = "git pull";
|
gp = "git pull";
|
||||||
ns = "nh os switch";
|
ns = "nh os switch";
|
||||||
gp-ns = "gp && ns";
|
gp-ns = "gp && ns";
|
||||||
gc = "git add . && git commit -m 'dev: автокоммит $(date +'%Y-%m-%d %H:%M:%S')'";
|
|
||||||
y = "yazi";
|
y = "yazi";
|
||||||
nix-shellp = "nix-shell --run $SHELL -p";
|
nix-shellp = "nix-shell --run $SHELL -p";
|
||||||
z-proxy = "export ALL_PROXY=socks5://localhost:10808";
|
z-proxy = "export ALL_PROXY=socks5://localhost:10808";
|
||||||
@@ -67,7 +66,4 @@
|
|||||||
json2nix = "nix run github:sempruijs/json2nix";
|
json2nix = "nix run github:sempruijs/json2nix";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
environment.sessionVariables = {
|
|
||||||
TUCKR_HOME = "$HOME/Storage/dotfiles";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
xlib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
systemd = {
|
||||||
|
services.nixos-auto-rebuild = {
|
||||||
|
description = "Auto rebuild NixOS config";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "${xlib.device.username}";
|
||||||
|
WorkingDirectory = "/etc/nixos";
|
||||||
|
ExecStart = "gp-ns";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
timers.nixos-auto-rebuild = {
|
||||||
|
description = "Run NixOS auto rebuild at 4am daily";
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "*-*-* 04:00:00";
|
||||||
|
Persistent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
systemd = {
|
|
||||||
services = {
|
|
||||||
nixos-prebuild = {
|
|
||||||
description = "Prebuild NixOS closure";
|
|
||||||
serviceConfig = {
|
|
||||||
CPUQuota = "20%";
|
|
||||||
User = "oqyude";
|
|
||||||
Group = "users";
|
|
||||||
Nice = 10;
|
|
||||||
Type = "oneshot";
|
|
||||||
WorkingDirectory = "/tmp";
|
|
||||||
Environment = [
|
|
||||||
"HOME=/home/oqyude"
|
|
||||||
];
|
|
||||||
ExecStart = ''
|
|
||||||
${pkgs.nix}/bin/nix build --no-link /etc/nixos#nixosConfigurations.${config.networking.hostName}.config.system.build.toplevel
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
timers = {
|
|
||||||
nixos-prebuild = {
|
|
||||||
wantedBy = [ "timers.target" ];
|
|
||||||
timerConfig = {
|
|
||||||
OnCalendar = "*-*-* 04:00:00";
|
|
||||||
Persistent = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
# let
|
|
||||||
# pkgs-stable = import inputs.nixpkgs-stable { system = "x86_64-linux"; };
|
|
||||||
# in
|
|
||||||
{
|
|
||||||
services.bentopdf = {
|
|
||||||
enable = true;
|
|
||||||
domain = "bentopdf.local";
|
|
||||||
nginx.enable = true;
|
|
||||||
# package = pkgs-stable.bentopdf;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,22 +1,16 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
xlib,
|
||||||
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
|
||||||
stable = import inputs.nixpkgs-calibre {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
services.calibre-web = {
|
services.calibre-web = {
|
||||||
package = stable.calibre-web;
|
|
||||||
enable = true;
|
enable = true;
|
||||||
# dataDir = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
group = "users";
|
||||||
|
user = "${xlib.device.username}";
|
||||||
options = {
|
options = {
|
||||||
calibreLibrary = "${xlib.dirs.services-mnt-folder}/calibre-web-library";
|
calibreLibrary = "${xlib.dirs.calibre-library}";
|
||||||
enableBookUploading = true;
|
enableBookUploading = true;
|
||||||
enableKepubify = true;
|
enableKepubify = true;
|
||||||
enableBookConversion = false;
|
enableBookConversion = false;
|
||||||
@@ -25,13 +19,4 @@ in
|
|||||||
listen.port = 8083;
|
listen.port = 8083;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/lib/calibre-web" = {
|
|
||||||
device = "${xlib.dirs.services-mnt-folder}/calibre-web";
|
|
||||||
fsType = "none";
|
|
||||||
options = [
|
|
||||||
"bind"
|
|
||||||
"nofail"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
imports = [
|
||||||
gcc
|
./remnawave.nix
|
||||||
gdb
|
];
|
||||||
cmake
|
|
||||||
gnumake
|
|
||||||
|
|
||||||
nlohmann_json
|
environment.systemPackages = with pkgs; [
|
||||||
|
compose2nix
|
||||||
|
podman-tui
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
xlib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
|
# fileSystems."${config.services.immich.mediaLocation}" = {
|
||||||
|
# device = "${xlib.dirs.services-folder}/immich";
|
||||||
|
# options = [
|
||||||
|
# "bind"
|
||||||
|
# "nofail"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# systemd.tmpfiles.rules = [
|
||||||
|
# "z ${config.services.immich.mediaLocation} 0755 immich immich -"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# environment = {
|
||||||
|
# systemPackages = with pkgs; [
|
||||||
|
# immich-cli
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services.coredns = {
|
|
||||||
enable = true;
|
|
||||||
config = ''
|
|
||||||
zeroq.su:53 {
|
|
||||||
hosts {
|
|
||||||
192.168.1.20 agent.zeroq.su
|
|
||||||
192.168.1.20 bentopdf.zeroq.su
|
|
||||||
192.168.1.20 calibre.zeroq.su
|
|
||||||
192.168.1.20 dns.zeroq.su
|
|
||||||
192.168.1.20 flux.zeroq.su
|
|
||||||
192.168.1.20 gitea.zeroq.su
|
|
||||||
192.168.1.20 health.zeroq.su
|
|
||||||
192.168.1.20 immich.zeroq.su
|
|
||||||
192.168.1.20 kuma.zeroq.su
|
|
||||||
192.168.1.20 n8n.zeroq.su
|
|
||||||
192.168.1.20 nextcloud.zeroq.su
|
|
||||||
192.168.1.20 office.zeroq.su
|
|
||||||
fallthrough
|
|
||||||
}
|
|
||||||
cache 300
|
|
||||||
log
|
|
||||||
}
|
|
||||||
.:53 {
|
|
||||||
forward . 1.1.1.1 9.9.9.9
|
|
||||||
cache 300
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -5,29 +5,20 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../software/beets
|
../software/beets
|
||||||
./bentopdf.nix
|
|
||||||
./calibre-web.nix
|
./calibre-web.nix
|
||||||
./coredns.nix
|
./containers
|
||||||
./gitea.nix
|
|
||||||
./glances.nix
|
|
||||||
./immich.nix
|
./immich.nix
|
||||||
./miniflux.nix
|
./miniflux.nix
|
||||||
./n8n.nix
|
|
||||||
./navidrome.nix
|
|
||||||
./netdata.nix
|
|
||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./nix-serve.nix
|
|
||||||
./open-webui.nix
|
./open-webui.nix
|
||||||
./postgresql.nix
|
./postgresql.nix
|
||||||
./samba.nix
|
./samba.nix
|
||||||
./step-ca.nix
|
|
||||||
./stirling-pdf.nix
|
./stirling-pdf.nix
|
||||||
./syncthing.nix
|
./syncthing.nix
|
||||||
./systemd.nix
|
./systemd.nix
|
||||||
./transmission.nix
|
./transmission.nix
|
||||||
./uptime-kuma.nix
|
./uptime-kuma.nix
|
||||||
# ../containers/remnawave.nix
|
|
||||||
# ./mealie.nix
|
# ./mealie.nix
|
||||||
# ./memos.nix
|
# ./memos.nix
|
||||||
# ./nfs.nix
|
# ./nfs.nix
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
gitea = {
|
|
||||||
enable = true;
|
|
||||||
stateDir = "${xlib.dirs.services-mnt-folder}/gitea";
|
|
||||||
appName = "ZeroQ Gitea Service";
|
|
||||||
settings = {
|
|
||||||
server = {
|
|
||||||
DOMAIN = "gitea.local";
|
|
||||||
HTTP_PORT = 3000;
|
|
||||||
};
|
|
||||||
service.DISABLE_REGISTRATION = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"z ${config.services.gitea.stateDir} 0755 gitea gitea -"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
glances = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
port = 61208;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
inputs,
|
||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
@@ -22,9 +22,21 @@ in
|
|||||||
accelerationDevices = null;
|
accelerationDevices = null;
|
||||||
machine-learning.enable = true;
|
machine-learning.enable = true;
|
||||||
mediaLocation = "${xlib.dirs.services-mnt-folder}/immich";
|
mediaLocation = "${xlib.dirs.services-mnt-folder}/immich";
|
||||||
|
database = {
|
||||||
|
enableVectors = false;
|
||||||
|
enableVectorChord = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# fileSystems."${config.services.immich.mediaLocation}" = {
|
||||||
|
# device = "${xlib.dirs.services-folder}/immich";
|
||||||
|
# options = [
|
||||||
|
# "bind"
|
||||||
|
# "nofail"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"z ${config.services.immich.mediaLocation} 0755 immich immich -"
|
"z ${config.services.immich.mediaLocation} 0755 immich immich -"
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
services.mealie = {
|
services.mealie = {
|
||||||
enable = false;
|
enable = true;
|
||||||
listenAddress = "0.0.0.0";
|
listenAddress = "0.0.0.0";
|
||||||
port = 9000;
|
port = 9000;
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
services.memos = {
|
services.memos = {
|
||||||
enable = false;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
settings = {
|
settings = {
|
||||||
MEMOS_MODE = "prod";
|
MEMOS_MODE = "prod";
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
configDir = "${xlib.dirs.services-mnt-folder}/n8n";
|
|
||||||
varDir = "/var/lib/n8n";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.n8n = {
|
|
||||||
enable = false;
|
|
||||||
environment = {
|
|
||||||
# N8N_USER_FOLDER = lib.mkForce "${configDir}";
|
|
||||||
N8N_SECURE_COOKIE = "false";
|
|
||||||
N8N_PORT = 5678;
|
|
||||||
};
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d ${configDir} 0755 nobody nogroup -"
|
|
||||||
"z ${configDir} 0755 nobody nogroup -"
|
|
||||||
];
|
|
||||||
|
|
||||||
fileSystems.${varDir} = {
|
|
||||||
device = "${configDir}";
|
|
||||||
fsType = "none";
|
|
||||||
options = [
|
|
||||||
"bind"
|
|
||||||
"nofail"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
navidrome = {
|
|
||||||
enable = false;
|
|
||||||
openFirewall = true;
|
|
||||||
# environmentFile = "";
|
|
||||||
settings = {
|
|
||||||
Address = "0.0.0.0";
|
|
||||||
Port = "4533";
|
|
||||||
MusicFolder = "/mnt/beets/music";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
netdata = {
|
|
||||||
enable = false;
|
|
||||||
package = pkgs.netdata.override {
|
|
||||||
withCloudUi = true;
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
web = {
|
|
||||||
"allow connections from" = "localhost *";
|
|
||||||
"default port" = "19999";
|
|
||||||
"bind to" = "0.0.0.0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# python = {
|
|
||||||
# enable = true;
|
|
||||||
# recommendedPythonPackages = true;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
19999
|
|
||||||
];
|
|
||||||
}
|
|
||||||
+81
-124
@@ -18,14 +18,14 @@ in
|
|||||||
nextcloud-whiteboard-server = {
|
nextcloud-whiteboard-server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
NEXTCLOUD_URL = "http://nextcloud.private";
|
NEXTCLOUD_URL = "http://nextcloud.local";
|
||||||
};
|
};
|
||||||
secrets = [ config.sops.secrets.nextcloud-whiteboard-jwt.path ];
|
secrets = [ "${inputs.zeroq-credentials}/services/nextcloud/jwt-secret.txt" ];
|
||||||
};
|
};
|
||||||
nextcloud = {
|
nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud33;
|
package = pkgs.nextcloud32;
|
||||||
hostName = "nextcloud.private";
|
hostName = "nextcloud.local";
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
home = "${xlib.dirs.services-mnt-folder}/nextcloud";
|
home = "${xlib.dirs.services-mnt-folder}/nextcloud";
|
||||||
configureRedis = true;
|
configureRedis = true;
|
||||||
@@ -39,42 +39,30 @@ in
|
|||||||
dbuser = "nextcloud";
|
dbuser = "nextcloud";
|
||||||
dbname = "nextcloud";
|
dbname = "nextcloud";
|
||||||
adminuser = "oqyude";
|
adminuser = "oqyude";
|
||||||
adminpassFile = config.sops.secrets.nextcloud-adminpass.path;
|
adminpassFile = "${inputs.zeroq-credentials}/services/nextcloud/admin-pass.txt";
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
log_type = "file";
|
log_type = "file";
|
||||||
trusted_domains = [
|
trusted_domains = [
|
||||||
|
"nextcloud.zeroq.ru"
|
||||||
"100.64.0.0"
|
"100.64.0.0"
|
||||||
"192.168.1.20"
|
"192.168.1.20"
|
||||||
"localhost"
|
"localhost"
|
||||||
"nextcloud.local"
|
|
||||||
"nextcloud.private"
|
|
||||||
"nextcloud.zeroq.su"
|
|
||||||
"office.local"
|
|
||||||
"office.zeroq.su"
|
|
||||||
];
|
];
|
||||||
trusted_proxies = [
|
trusted_proxies = [
|
||||||
"100.64.1.0"
|
"100.64.1.0"
|
||||||
"109.248.161.5"
|
|
||||||
];
|
];
|
||||||
overwriteprotocol = ""; # maybe no
|
overwriteprotocol = "https";
|
||||||
};
|
};
|
||||||
extraAppsEnable = true;
|
extraAppsEnable = true;
|
||||||
appstoreEnable = false;
|
appstoreEnable = false;
|
||||||
notify_push = {
|
|
||||||
enable = false;
|
|
||||||
bendDomainToLocalhost = true;
|
|
||||||
};
|
|
||||||
# phpPackage = pkgs.php85;
|
|
||||||
extraApps = {
|
extraApps = {
|
||||||
inherit (config.services.nextcloud.package.packages.apps)
|
inherit (config.services.nextcloud.package.packages.apps) # (config.services.nextcloud.package.packages.apps)
|
||||||
# richdocuments
|
|
||||||
# gpoddersync
|
# gpoddersync
|
||||||
# integration_paperless
|
# integration_paperless
|
||||||
# memories
|
# memories
|
||||||
# news
|
|
||||||
# nextpod
|
# nextpod
|
||||||
# notify_push
|
# onlyoffice
|
||||||
# phonetrack
|
# phonetrack
|
||||||
# repod
|
# repod
|
||||||
# sociallogin
|
# sociallogin
|
||||||
@@ -92,92 +80,96 @@ in
|
|||||||
impersonate
|
impersonate
|
||||||
mail
|
mail
|
||||||
music
|
music
|
||||||
|
# news
|
||||||
notes
|
notes
|
||||||
onlyoffice
|
notify_push
|
||||||
polls
|
polls
|
||||||
previewgenerator
|
previewgenerator
|
||||||
|
richdocuments
|
||||||
spreed
|
spreed
|
||||||
tables
|
tables
|
||||||
tasks
|
|
||||||
user_oidc
|
user_oidc
|
||||||
user_saml
|
user_saml
|
||||||
whiteboard
|
whiteboard
|
||||||
;
|
;
|
||||||
# inherit (pkgs.nextcloud31Packages.apps)
|
inherit (pkgs.nextcloud31Packages.apps)
|
||||||
# # end_to_end_encryption
|
# end_to_end_encryption
|
||||||
# # maps
|
# maps
|
||||||
# tasks
|
tasks
|
||||||
# ;
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# collabora-online = {
|
collabora-online = {
|
||||||
# enable = false;
|
|
||||||
# port = 9980;
|
|
||||||
# # package = master.collabora-online;
|
|
||||||
# settings = {
|
|
||||||
# server_name = "office.zeroq.su";
|
|
||||||
# ssl = {
|
|
||||||
# enable = false;
|
|
||||||
# termination = true;
|
|
||||||
# ssl_verification = false;
|
|
||||||
# };
|
|
||||||
# net = {
|
|
||||||
# listen = "0.0.0.0";
|
|
||||||
# post_allow.host = [
|
|
||||||
# "0.0.0.0"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# storage.wopi = {
|
|
||||||
# "@allow" = true;
|
|
||||||
# host = [
|
|
||||||
# "0.0.0.0/0"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
onlyoffice = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
hostname = "office.local";
|
port = 9980;
|
||||||
port = 8090;
|
# package = master.collabora-online;
|
||||||
allowLocalConnections = true;
|
settings = {
|
||||||
wopi = true;
|
server_name = "office.zeroq.ru";
|
||||||
jwtSecretFile = config.sops.secrets.onlyoffice-jwt.path;
|
ssl = {
|
||||||
securityNonceFile = config.sops.secrets.onlyoffice-nonce.path;
|
enable = false;
|
||||||
|
termination = true;
|
||||||
|
ssl_verification = false;
|
||||||
|
};
|
||||||
|
net = {
|
||||||
|
listen = "0.0.0.0";
|
||||||
|
post_allow.host = [
|
||||||
|
"0.0.0.0"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
storage.wopi = {
|
||||||
|
"@allow" = true;
|
||||||
|
host = [
|
||||||
|
"0.0.0.0/0"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
onlyoffice = {
|
||||||
|
enable = false;
|
||||||
|
hostname = "0.0.0.0";
|
||||||
|
jwtSecretFile = "${inputs.zeroq-credentials}/services/onlyoffice/jwt.txt";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# fonts.packages = [ work.corefonts ];
|
# fonts.packages = [ work.corefonts ];
|
||||||
|
|
||||||
# networking.hosts = {
|
# networking.hosts = {
|
||||||
# "localhost" = [ "nextcloud-private.local" ];
|
# };
|
||||||
# };
|
|
||||||
|
|
||||||
# systemd.services.nextcloud-config-collabora =
|
systemd.services.nextcloud-config-collabora =
|
||||||
# let
|
let
|
||||||
# inherit (config.services.nextcloud) occ;
|
inherit (config.services.nextcloud) occ;
|
||||||
# wopi_url = "http://localhost:${toString config.services.collabora-online.port}";
|
wopi_url = "http://localhost:${toString config.services.collabora-online.port}";
|
||||||
# public_wopi_url = "https://office.zeroq.su";
|
public_wopi_url = "https://office.zeroq.ru";
|
||||||
# wopi_allowlist = lib.concatStringsSep "," [
|
wopi_allowlist = lib.concatStringsSep "," [
|
||||||
# "0.0.0.0/0"
|
"0.0.0.0/0"
|
||||||
# ];
|
];
|
||||||
# in
|
in
|
||||||
# {
|
{
|
||||||
# wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
# after = [
|
after = [
|
||||||
# "nextcloud-setup.service"
|
"nextcloud-setup.service"
|
||||||
# "coolwsd.service"
|
"coolwsd.service"
|
||||||
# ];
|
];
|
||||||
# requires = [ "coolwsd.service" ];
|
requires = [ "coolwsd.service" ];
|
||||||
# script = ''
|
script = ''
|
||||||
# ${occ}/bin/nextcloud-occ config:app:set richdocuments wopi_url --value ${lib.escapeShellArg wopi_url}
|
${occ}/bin/nextcloud-occ config:app:set richdocuments wopi_url --value ${lib.escapeShellArg wopi_url}
|
||||||
# ${occ}/bin/nextcloud-occ config:app:set richdocuments public_wopi_url --value ${lib.escapeShellArg public_wopi_url}
|
${occ}/bin/nextcloud-occ config:app:set richdocuments public_wopi_url --value ${lib.escapeShellArg public_wopi_url}
|
||||||
# ${occ}/bin/nextcloud-occ config:app:set richdocuments wopi_allowlist --value ${lib.escapeShellArg wopi_allowlist}
|
${occ}/bin/nextcloud-occ config:app:set richdocuments wopi_allowlist --value ${lib.escapeShellArg wopi_allowlist}
|
||||||
# ${occ}/bin/nextcloud-occ richdocuments:setup
|
${occ}/bin/nextcloud-occ richdocuments:setup
|
||||||
# '';
|
'';
|
||||||
# serviceConfig = {
|
serviceConfig = {
|
||||||
# Type = "oneshot";
|
Type = "oneshot";
|
||||||
# };
|
};
|
||||||
# };
|
};
|
||||||
|
|
||||||
|
# fileSystems."${config.services.nextcloud.home}" = {
|
||||||
|
# device = "${xlib.dirs.services-folder}/nextcloud";
|
||||||
|
# options = [
|
||||||
|
# "bind"
|
||||||
|
# "nofail"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"z ${config.services.nextcloud.home} 0750 nextcloud nextcloud -"
|
"z ${config.services.nextcloud.home} 0750 nextcloud nextcloud -"
|
||||||
@@ -186,39 +178,4 @@ in
|
|||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.nc4nix # Packaging helper for Nextcloud apps
|
pkgs.nc4nix # Packaging helper for Nextcloud apps
|
||||||
];
|
];
|
||||||
|
|
||||||
sops.secrets = {
|
|
||||||
nextcloud-adminpass = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "adminpass";
|
|
||||||
sopsFile = ./secrets/nextcloud.yaml;
|
|
||||||
owner = "nextcloud";
|
|
||||||
group = "nextcloud";
|
|
||||||
mode = "0650";
|
|
||||||
};
|
|
||||||
nextcloud-whiteboard-jwt = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "whiteboard-jwt";
|
|
||||||
sopsFile = ./secrets/nextcloud.yaml;
|
|
||||||
owner = "nextcloud";
|
|
||||||
group = "nextcloud";
|
|
||||||
mode = "0650";
|
|
||||||
};
|
|
||||||
onlyoffice-nonce = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "nonce";
|
|
||||||
sopsFile = ./secrets/onlyoffice.yaml;
|
|
||||||
owner = "onlyoffice";
|
|
||||||
group = "onlyoffice";
|
|
||||||
mode = "0650";
|
|
||||||
};
|
|
||||||
onlyoffice-jwt = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "jwt";
|
|
||||||
sopsFile = ./secrets/onlyoffice.yaml;
|
|
||||||
owner = "onlyoffice";
|
|
||||||
group = "onlyoffice";
|
|
||||||
mode = "0650";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
+48
-158
@@ -5,9 +5,6 @@
|
|||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
|
||||||
server = "192.168.1.20";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
nginx = {
|
nginx = {
|
||||||
@@ -17,177 +14,70 @@ in
|
|||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
recommendedTlsSettings = true;
|
recommendedTlsSettings = true;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
"nextcloud.private" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
listen = [
|
|
||||||
{
|
|
||||||
addr = "100.64.0.0";
|
|
||||||
port = 10000;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
addr = "192.168.1.20";
|
|
||||||
port = 10000;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"office.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
};
|
|
||||||
"bentopdf.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
listen = [
|
|
||||||
{
|
|
||||||
addr = "0.0.0.0";
|
|
||||||
port = 80;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
addr = "100.64.0.0";
|
|
||||||
port = 8446;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
addr = "192.168.1.20";
|
|
||||||
port = 8446;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"nextcloud.local" = {
|
"nextcloud.local" = {
|
||||||
forceSSL = false;
|
forceSSL = false;
|
||||||
enableACME = false;
|
enableACME = false;
|
||||||
locations = {
|
listen = [
|
||||||
"/" = {
|
{
|
||||||
proxyPass = "http://${server}:10000";
|
addr = "100.64.0.0";
|
||||||
proxyWebsockets = true;
|
port = 10000;
|
||||||
};
|
}
|
||||||
"/whiteboard" = {
|
{
|
||||||
proxyPass = "http://${server}:3002";
|
addr = "192.168.1.20";
|
||||||
proxyWebsockets = true;
|
port = 10000;
|
||||||
};
|
}
|
||||||
};
|
];
|
||||||
extraConfig = ''
|
};
|
||||||
client_max_body_size 5G;
|
"zeroq.local" = {
|
||||||
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
|
root = pkgs.writeTextDir "index.html" ''
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<pre>This server is running in backend.</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
'';
|
'';
|
||||||
|
listen = [
|
||||||
|
{
|
||||||
|
addr = "100.64.0.0";
|
||||||
|
port = 80;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
addr = "192.168.1.20";
|
||||||
|
port = 80;
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"gitea.local" = {
|
# "localhost:8000" = {
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:3000";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"nextcloud.zeroq.su" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations = {
|
|
||||||
"/" = {
|
|
||||||
proxyPass = "http://${server}:10000";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
"/whiteboard" = {
|
|
||||||
proxyPass = "http://${server}:3002";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"n8n.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:5678";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"kuma.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:4001";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"health.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:19999";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"agent.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:3000";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"flux.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:6061";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"immich.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:2283";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"calibre.local" = {
|
|
||||||
forceSSL = false;
|
|
||||||
enableACME = false;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:8083";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
client_max_body_size 5G;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
# "zeroq.local" = {
|
|
||||||
# forceSSL = false;
|
# forceSSL = false;
|
||||||
# enableACME = false;
|
# enableACME = false;
|
||||||
# root = pkgs.writeTextDir "index.html" ''
|
|
||||||
# <!doctype html>
|
|
||||||
# <html>
|
|
||||||
# <body>
|
|
||||||
# <pre>This server is running in backend.</pre>
|
|
||||||
# </body>
|
|
||||||
# </html>
|
|
||||||
# '';
|
|
||||||
# listen = [
|
# listen = [
|
||||||
# {
|
# {
|
||||||
# addr = "100.64.0.0";
|
# addr = "100.64.0.0";
|
||||||
# port = 80;
|
# port = 9980;
|
||||||
# }
|
# }
|
||||||
# {
|
# {
|
||||||
# addr = "192.168.1.20";
|
# addr = "192.168.1.20";
|
||||||
# port = 80;
|
# port = 9980;
|
||||||
# }
|
# }
|
||||||
# ];
|
# ];
|
||||||
# };
|
# };
|
||||||
|
# "office.zeroq.ru" = {
|
||||||
|
# forceSSL = false;
|
||||||
|
# enableACME = false;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://onlyoffice.local:8000";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# # Force nginx to return relative redirects. This lets the browser
|
||||||
|
# # figure out the full URL. This ends up working better because it's in
|
||||||
|
# # front of the reverse proxy and has the right protocol, hostname & port.
|
||||||
|
# absolute_redirect off;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
nix-serve = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
port = 5000;
|
|
||||||
bindAddress = "0.0.0.0";
|
|
||||||
secretKeyFile = config.sops.secrets.private-key.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
sops.secrets = {
|
|
||||||
private-key = {
|
|
||||||
key = "private-key";
|
|
||||||
sopsFile = ./secrets/nix-serve.yaml;
|
|
||||||
mode = "0600";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -23,7 +23,6 @@ in
|
|||||||
|
|
||||||
fileSystems."/var/lib/postgresql" = {
|
fileSystems."/var/lib/postgresql" = {
|
||||||
device = "${xlib.dirs.services-mnt-folder}/postgresql";
|
device = "${xlib.dirs.services-mnt-folder}/postgresql";
|
||||||
fsType = "none";
|
|
||||||
options = [
|
options = [
|
||||||
"bind"
|
"bind"
|
||||||
"nofail"
|
"nofail"
|
||||||
|
|||||||
@@ -6,9 +6,6 @@
|
|||||||
{
|
{
|
||||||
services.samba = {
|
services.samba = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nmbd = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
settings = {
|
settings = {
|
||||||
global = {
|
global = {
|
||||||
"invalid users" = [ ];
|
"invalid users" = [ ];
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"root": "/root/.step/certs/root_ca.crt",
|
|
||||||
"federatedRoots": null,
|
|
||||||
"crt": "/root/.step/certs/intermediate_ca.crt",
|
|
||||||
"key": "/root/.step/secrets/intermediate_ca_key",
|
|
||||||
"address": "0.0.0.0:9000",
|
|
||||||
"insecureAddress": "",
|
|
||||||
"dnsNames": [
|
|
||||||
"ca.zeroq.su"
|
|
||||||
],
|
|
||||||
"logger": {
|
|
||||||
"format": "text"
|
|
||||||
},
|
|
||||||
"db": {
|
|
||||||
"type": "badgerv2",
|
|
||||||
"dataSource": "/root/.step/db",
|
|
||||||
"badgerFileLoadingMode": ""
|
|
||||||
},
|
|
||||||
"authority": {
|
|
||||||
"provisioners": [
|
|
||||||
{
|
|
||||||
"type": "JWK",
|
|
||||||
"name": "oqyude@zeroq.su",
|
|
||||||
"key": {
|
|
||||||
"use": "sig",
|
|
||||||
"kty": "EC",
|
|
||||||
"kid": "vhOaaOVnwo0MtJVP13ZM60ckirLUqq-5WEbq2PQTQ-w",
|
|
||||||
"crv": "P-256",
|
|
||||||
"alg": "ES256",
|
|
||||||
"x": "0WXy0B9DHwz4POacxrSiml7bbOPFYPKVvyUlm18M5ro",
|
|
||||||
"y": "AptaeuzpC2TV9_hHAx8s2afDmCa_QJSzke23kCYzKfU"
|
|
||||||
},
|
|
||||||
"encryptedKey": "eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjdHkiOiJqd2sranNvbiIsImVuYyI6IkEyNTZHQ00iLCJwMmMiOjYwMDAwMCwicDJzIjoiVTBRS24wUHFJUUZiNTRyRkVYeDVwZyJ9.Xc96u-JxlKELcawpLmyrzqp4_UUY1sAqUo7PX6hBWL8_Ix2RzS8ZwA.fs5K5A9kXmp3KEUu.J1s016RTlqKbfRzQJB1bdz8v93S9PLpU3DqlEvIVnOIEhovL9vG5dzPLAfLApZ_MArHhubVkirHhZHB4fYd3KvbFpCRaYQomB4vP0V188zclL7gyatiQ36R_fTG_oiRiKHeP0nPubVpL-I-ESdtXR05pMQtit5A1luLGm3H78FuTF883Hiz-hc84v8E-nq0Z5l5zQeV-fy4QaCFzg1_5s7MacNlgplDLopzbfJIhp3SDKiwWjsotPjsuKMSQ-blawbBL5skf44t23hDelSaRvASq8-Dq-hkBLsKssMX7SzccHPWpxazZ07Ug8PKc8_o2kxc6k5-K0Xr5tY4h8VI.YSsnw_InABsga1SCjLtq1g"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"tls": {
|
|
||||||
"cipherSuites": [
|
|
||||||
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
||||||
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
|
|
||||||
],
|
|
||||||
"minVersion": 1.2,
|
|
||||||
"maxVersion": 1.3,
|
|
||||||
"renegotiation": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
adminpass: ENC[AES256_GCM,data:Fm+Q6YWXxouP5cX2WHU05Jr49FU=,iv:Exf/li6bL6xpR9HQ8XDDSprjx4ltHkJFl99Ga+gXwmQ=,tag:iB9d5O4982tr7lPu1nWccQ==,type:str]
|
|
||||||
whiteboard-jwt: ENC[AES256_GCM,data:5i+x8VODrBIhGEWS5Ua6lrk7tsfk6xTa/1qm1rXe4A==,iv:2gFEeudip7BxJh553QtZ1CZo9T8jro3Q/Afdo8ouHtw=,tag:HgBM9ta41rhXJlsQJ+asFg==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxNWFiUlZXMEEvNll0aFFk
|
|
||||||
UldxNitqaDgyenBFeWRhLzUxSVVhQk55Q1FBCkdLU3p4S0NTOVhERkRoaWVwbWVB
|
|
||||||
cUxwdkJnQ1IyNzFTaVJvVXRwbElYbVkKLS0tIDQ5ejZvRks5U0tPU0w0WXdtM0ht
|
|
||||||
WGVQYjZtaHhaeC9pMzYxYmxTcVNtYk0KKxXXNA9h0fs+mA6U/Vsyg+q1CPl5hFrI
|
|
||||||
Ozjqh+dzwajQeqkCPUdCsoeIWsvBY2Cyabvs+f0zj8S00faXb8rVQQ==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2026-03-30T12:49:45Z"
|
|
||||||
mac: ENC[AES256_GCM,data:1EkbMGa6nK53GqGWYvXZP+sqy91AldGKy/32CVPshZwvTzJtk/VeK3W9A3fIGwvo7gl+QVWJmSiqrOTql4v+U4Yi3jVLEXsHXA5Bh28aJ7Ng9nkZmI10K7oaYF1xWNxzwss4gcDNIuomK+wG1WNLaiLbxwCBkN6xHugWQ4F+DLs=,iv:UmI6nC7dIHGeas54taf5kTIINvyd8YXyOVdIYghwHmE=,tag:VxdJLXRYin8D07r6CCA00A==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.12.2
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
private-key: ENC[AES256_GCM,data:VTj1cmhYLbBuUnIgtXI3CZtULaNZ5XOpoheJB0gUwrWrH5B0rmxcvZLlJWX7xhGs4oqcC3Wwmo+TBPhcgGylLVdCuhJG5A94UwOa9ZIV4s3x3IJ4RU3UcHTsA0xdtw7XxBfryw==,iv:8oZCojIU0JXWJgE5t+fNNW9trC109yOJp1UGAV76FbU=,tag:S74cHFy9B8C29npdcoVBeg==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6MHBkYzZneEdhUlN5MEpx
|
|
||||||
NGxud1BkVU1NUFdyVFE2VDJWb1M2cW9IcUVFCm9QZ3RvNHFaeWpFbnZ3Q1dKSDdn
|
|
||||||
RHQvUDgrZHRiUHpSR3FrWXRkQUxXWGMKLS0tIERsemNuL1BwR2xYYUpmbVFROWtN
|
|
||||||
RGI1WlRGMzlkS2tqQ0JPSFJHTUY1TUkKDeaivc+ST8MYtnJEDx07Y+IhtpvblR47
|
|
||||||
SLZf6WKQ8WNY4Bb5VeMWiCABPP/2L+VwoACqkOdZ01yGUVQSc9X6tw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2026-05-03T17:05:41Z"
|
|
||||||
mac: ENC[AES256_GCM,data:6jNp7N7lIvsLez3zQbDKTWPyvkL8u9g34I3q27GudgXzYw8B3Pb26jc9dCYCxCylCZxN5IeWWyHvUt4PadQABI4jrrIKnIfVV1A2c+A90chu+xSyE/B9OhkSC7yYVOnCURJPYku8799RIRkpHAWeKawkydbOiszCiC3qIKZDSTQ=,iv:xXivLDNnTABlNeWOOWsCESDUOnFv+9Lh0o029r7rk+A=,tag:vUoIZjcNtE3xJX/jNCao7Q==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.12.2
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
jwt: ENC[AES256_GCM,data:Mp+eAh0Nle0QDfo92isNLwvHn/E=,iv:0FLK/8QpmX5Mv7IXMy04AJAgUknp5DATpD0acyPqrUg=,tag:rP9x3G8WIDG6KWSjqPXulQ==,type:str]
|
|
||||||
nonce: ENC[AES256_GCM,data:IGIo74eaE1vppWmLJt8C1cmpUm8eozumLXU5ecJJIolpKlC85H39l6oGmw==,iv:YwLbgbkOxpChwLTbknCii66LMVwD61sr7gXsbv3t/NI=,tag:YFfLkO5b55/AcJKTpSyslQ==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVSzIwWlBrWFJWVHpIUVJk
|
|
||||||
eHh1MkYza28yeU54OWczY1ZjYmJHOFI3dXc4ClVKUVpoUWZTR0g5L2FTd0l4NzUr
|
|
||||||
R0xlYTJVQ1VLQXJuSGZJUE1Bd3Jsa00KLS0tIExPSi9Ob0ErSTRZQlhlTGN5WUV0
|
|
||||||
dm4xa25tSmN3VjlPaWpBWnhJdklqWEEK+sD+lvwQGjNkOic3ZCo2VGQ/+p2Nhmm+
|
|
||||||
g846YrGljYOib6hNryEhZWe0KmaDhn24vnEK5NS4WtqqwV+IhCZbmg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2026-03-30T21:55:57Z"
|
|
||||||
mac: ENC[AES256_GCM,data:Ff8KB0O7sDE4GL8kccuA3s8DSallp5aOsy+T60FLCxsZN1m7m6Cql+3Hb3IS0M/nLRZMoZre8kztnzSbWs8ZK0e5wZoQjb6KMESZaXPOfjjbPWjMKiRCAQZUJNZy5P067qoxOIQ3t25kPNolmHkSyicpLoLRIB4Adn8+M79/RLk=,iv:LfVbDH8JVbgkVk5cFpr/lbvtSu8waLhn9XHwPW/8jBE=,tag:ll5JQbyr84vI8V154ZE/wQ==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.12.2
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
intermediate-password: ENC[AES256_GCM,data:SvV5uYVXVTuhh/dhzXIDJw69dJ3s33a0ibKCyDWnfyA=,iv:S9VydNWm4PL+quWQ7arCmSFXa6YO1/hL+xrYty/2IPE=,tag:zHJ6/ZNRfs9w9vrt77xdow==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5K3YyYkRkVkxwamMybWRj
|
|
||||||
WGxEZnc3TGRYRHNtTXRZYlZKQ2hBK0YrQjNZCndVQVhYcTJqRitCdUdmMjduTk1M
|
|
||||||
azNnMUhHKzB1M25vZGFScjZBcHJOaUEKLS0tIHJBRnZwamhvYU1ybFVFMFZsTmVS
|
|
||||||
ZmN3NTVnZ1RwRkNzTUxJTjVGMU4yUHMKMEZdpDBm6pdZmrFidkOdivnnd2/b8OO/
|
|
||||||
IUYmiWPlPd1IDV1NeMtlSYtO8exzB22XL9DqW4x/tJ7DeSZaBsjcOw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
recipient: age13l2gtk0nzr484zprp7e0pkrt0ne0j4asyn2pjmlaw73nte7t7d8q4sqtxm
|
|
||||||
lastmodified: "2026-06-13T22:59:34Z"
|
|
||||||
mac: ENC[AES256_GCM,data:72E73xauS1Xrfw6tcyN/PHSJZ4ZZnIeKp8JVUPFGPBvIzaD6ZThYZwQ10FDD4JF+YOwn3QhCEh3t0ozcSNNnJFkyBgSqFtRMkym0ede12VAOPu2wQFoNvMdkT7+n14lJ/9OOz6KDyMf0BQDJKlSfDBkt+mLi61zte5iUxPsWsp4=,iv:xuOwFBEnlRgbaVdMq4O6w9T2edpS6uEPh9yhNbYBJIk=,tag:Y+dtcU17Q83o/9Nt1LGCcg==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.13.1
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
configDir = "${xlib.dirs.services-mnt-folder}/step-ca";
|
|
||||||
varDir = "/var/lib/step-ca";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.step-ca = {
|
|
||||||
enable = true;
|
|
||||||
address = "0.0.0.0";
|
|
||||||
port = 9000;
|
|
||||||
openFirewall = true;
|
|
||||||
intermediatePasswordFile = config.sops.secrets.intermediate-password.path;
|
|
||||||
settings = {
|
|
||||||
root = "${varDir}/certs/root_ca.crt";
|
|
||||||
crt = "${varDir}/certs/intermediate_ca.crt";
|
|
||||||
key = "${varDir}/secrets/intermediate_ca_key";
|
|
||||||
# address = "0.0.0.0:9000";
|
|
||||||
dnsNames = [
|
|
||||||
"ca.zeroq.su"
|
|
||||||
];
|
|
||||||
db = {
|
|
||||||
type = "badgerv2";
|
|
||||||
dataSource = "${varDir}/db";
|
|
||||||
};
|
|
||||||
authority = {
|
|
||||||
provisioners = [
|
|
||||||
{
|
|
||||||
type = "JWK";
|
|
||||||
name = "oqyude@zeroq.su";
|
|
||||||
key = {
|
|
||||||
use = "sig";
|
|
||||||
kty = "EC";
|
|
||||||
kid = "XEpzFJA-sedFf0ANCiEH1UDaSvrHiZabLahQOyoAYmc";
|
|
||||||
crv = "P-256";
|
|
||||||
alg = "ES256";
|
|
||||||
x = "AGHevH0UU7_abhE6d8JhNuNRgXBeVI7qCldZrFfkn5o";
|
|
||||||
y = "pLKOpAwUiGRv4HRQUyiXFAMqsywTjrjazeEkDOr29Sk";
|
|
||||||
};
|
|
||||||
encryptedKey = "eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjdHkiOiJqd2sranNvbiIsImVuYyI6IkEyNTZHQ00iLCJwMmMiOjYwMDAwMCwicDJzIjoibFlONzBwMWJiVzc0MDlGaS1EOEZVUSJ9.zBEsf2hAaj4yyy_Lk1Jss7h5Hn68kz6UMeg3Jz3X_VVeMWLvcoRVaw.tpY50S9CSzmcfWXz.u5ta_Yd3GLMz19RKA2WondVIwTGbGs3is5v7_D0aUOtQ0158d4GcjrOHFD2PexaackbTNuUPtqa2X38ypnFq5wh1uq3udWu-qWRjRSd_YkY4YJt_GWFvUHQ_jldx0NSfMDNGndU2IakR62-9WklEjU3UGmUeaPGP9DTuzmdJa36t2aLuPuNnmV-tEJIH3eQ5huU8nLy1ROZjdkrF-agHh78EG_Ss8P4vHuqOtTAjZW3YCtfSfb57iKAsbrk3nUTo6zhPc0ds8cPB7Rva0K8Rj2Pf3apB7qZnCVF5zBiu1icvhOYIfwVQAiqpdz6qMi42QSBWZ4ROu4Db2q5a6D0.AS7Dr3v_Niiwy7aHIR-0bw";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."${varDir}" = {
|
|
||||||
device = "${configDir}";
|
|
||||||
fsType = "none";
|
|
||||||
options = [
|
|
||||||
"bind"
|
|
||||||
"nofail"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
step-cli
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d ${configDir} 0755 nobody nogroup -"
|
|
||||||
"z ${configDir} 0755 nobody nogroup -"
|
|
||||||
"Z ${configDir}/ 0700 nobody nogroup -"
|
|
||||||
];
|
|
||||||
|
|
||||||
sops.secrets = {
|
|
||||||
intermediate-password = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "intermediate-password";
|
|
||||||
sopsFile = ./secrets/step-ca.yaml;
|
|
||||||
# owner = "nobody";
|
|
||||||
# group = "nogroup";
|
|
||||||
mode = "0600";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -11,47 +11,31 @@
|
|||||||
rsync-archivesta = {
|
rsync-archivesta = {
|
||||||
# Archivesta
|
# Archivesta
|
||||||
description = "Backup data using rsync";
|
description = "Backup data using rsync";
|
||||||
unitConfig.RequiresMountsFor = [
|
requisite = [ "mnt-archive.mount" ]; # hard-code
|
||||||
"${xlib.dirs.archive-drive}"
|
|
||||||
"${xlib.dirs.server-home}"
|
|
||||||
"${xlib.dirs.services-mnt-folder}"
|
|
||||||
];
|
|
||||||
script = ''
|
script = ''
|
||||||
${pkgs.rsync}/bin/rsync -rtv --delete \
|
${pkgs.rsync}/bin/rsync -rtv --delete ${xlib.dirs.services-folder}/ ${xlib.dirs.archive-drive}/Services/
|
||||||
${xlib.dirs.services-mnt-folder}/ \
|
|
||||||
${xlib.dirs.archive-drive}/Services/
|
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
User = "root";
|
User = "root";
|
||||||
Group = "root";
|
Group = "root";
|
||||||
Nice = 10;
|
Nice = 19;
|
||||||
CPUQuota = "5%";
|
|
||||||
IOSchedulingClass = "idle";
|
IOSchedulingClass = "idle";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
rsync-archivesta-lite = {
|
rsync-archivesta-lite = {
|
||||||
# Archivesta Lite
|
# Archivesta Lite
|
||||||
description = "Backup data using rsync";
|
description = "Backup data using rsync";
|
||||||
unitConfig.RequiresMountsFor = [
|
requisite = [ "mnt-mobile.mount" ]; # hard-code
|
||||||
"${xlib.dirs.server-home}"
|
|
||||||
"${xlib.dirs.mobile-drive}"
|
|
||||||
];
|
|
||||||
script = ''
|
script = ''
|
||||||
${pkgs.rsync}/bin/rsync -rtv --delete \
|
${pkgs.rsync}/bin/rsync -rtv --delete ${xlib.dirs.server-home}/Music/ ${xlib.dirs.mobile-drive}/Music/
|
||||||
${xlib.dirs.server-home}/Music/ \
|
${pkgs.rsync}/bin/rsync -rtv --delete "${xlib.dirs.server-home}/Hosts/epral/Neo Backup/" "${xlib.dirs.mobile-drive}/Neo Backup/"
|
||||||
${xlib.dirs.mobile-drive}/Music/
|
|
||||||
|
|
||||||
${pkgs.rsync}/bin/rsync -rtv --delete \
|
|
||||||
"${xlib.dirs.server-home}/Hosts/epral/Neo Backup/" \
|
|
||||||
"${xlib.dirs.mobile-drive}/Neo Backup/"
|
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
User = "root";
|
User = "root";
|
||||||
Group = "root";
|
Group = "root";
|
||||||
Nice = 10;
|
Nice = 19;
|
||||||
CPUQuota = "5%";
|
|
||||||
IOSchedulingClass = "idle";
|
IOSchedulingClass = "idle";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
services.uptime-kuma = {
|
services.uptime-kuma = {
|
||||||
enable = false;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
PORT = "4001";
|
PORT = "4001";
|
||||||
HOST = "0.0.0.0";
|
HOST = "0.0.0.0";
|
||||||
@@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
fileSystems."/var/lib/private/uptime-kuma" = {
|
fileSystems."/var/lib/private/uptime-kuma" = {
|
||||||
device = "${xlib.dirs.services-mnt-folder}/uptime-kuma";
|
device = "${xlib.dirs.services-mnt-folder}/uptime-kuma";
|
||||||
fsType = "none";
|
|
||||||
options = [
|
options = [
|
||||||
"bind"
|
"bind"
|
||||||
"nofail"
|
"nofail"
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
xlib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# services = {
|
||||||
|
# nextjs-ollama-llm-ui.enable = false;
|
||||||
|
# ollama = {
|
||||||
|
# enable = false;
|
||||||
|
# package = pkgs.ollama-rocm;
|
||||||
|
# environmentVariables = {
|
||||||
|
# HSA_OVERRIDE_GFX_VERSION = "11.5.0";
|
||||||
|
# HCC_AMDGPU_TARGET = "gfx1150"; # used to be necessary, but doesn't seem to anymore
|
||||||
|
# };
|
||||||
|
# user = "ollama"; # "${xlib.device.username}";
|
||||||
|
# group = "ollama";
|
||||||
|
# acceleration = "rocm";
|
||||||
|
# rocmOverrideGfx = "11.5.0";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -1,84 +1,28 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
xlib,
|
xlib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
stable = import inputs.nixpkgs-beets {
|
depsOverlay = import ./dependencies.nix {
|
||||||
system = "x86_64-linux";
|
# ./dependencies-full.nix if broken
|
||||||
|
inherit (pkgs) fetchurl fetchgit fetchhg;
|
||||||
|
inherit pkgs;
|
||||||
};
|
};
|
||||||
in
|
python3 = pkgs.python3.override {
|
||||||
let
|
packageOverrides = depsOverlay;
|
||||||
# depsOverlay = import ./dependencies.nix {
|
};
|
||||||
# # ./dependencies-full.nix if broken
|
beetsEnv = python3.withPackages (ps: [
|
||||||
# inherit (pkgs) fetchurl fetchgit fetchhg;
|
ps.beets
|
||||||
# inherit pkgs;
|
]);
|
||||||
# };
|
|
||||||
# python3 = pkgs.python3.override {
|
|
||||||
# packageOverrides = depsOverlay;
|
|
||||||
# };
|
|
||||||
beetsEnv = pkgs.python314.withPackages (
|
|
||||||
ps: with ps; [
|
|
||||||
# et-xmlfile
|
|
||||||
# exceptiongroup
|
|
||||||
# markdown-it-py
|
|
||||||
# mdurl
|
|
||||||
# munkres
|
|
||||||
# musicbrainzngs
|
|
||||||
# openpyxl
|
|
||||||
# pygments
|
|
||||||
# rich
|
|
||||||
# sniffio
|
|
||||||
anyio
|
|
||||||
beautifulsoup4
|
|
||||||
beetcamp
|
|
||||||
beets
|
|
||||||
certifi
|
|
||||||
charset-normalizer
|
|
||||||
colorama
|
|
||||||
confuse
|
|
||||||
discogs-client
|
|
||||||
filetype
|
|
||||||
h11
|
|
||||||
httpcore
|
|
||||||
httpx
|
|
||||||
httpx-socks
|
|
||||||
idna
|
|
||||||
jellyfish
|
|
||||||
langdetect
|
|
||||||
lap
|
|
||||||
llvmlite
|
|
||||||
mediafile
|
|
||||||
mutagen
|
|
||||||
numba
|
|
||||||
numpy
|
|
||||||
oauthlib
|
|
||||||
packaging
|
|
||||||
pillow
|
|
||||||
platformdirs
|
|
||||||
pycountry
|
|
||||||
pylast
|
|
||||||
pyrate-limiter
|
|
||||||
pysocks
|
|
||||||
python-dateutil
|
|
||||||
pyyaml
|
|
||||||
requests
|
|
||||||
requests-ratelimiter
|
|
||||||
scipy
|
|
||||||
# setuptools
|
|
||||||
six
|
|
||||||
socksio
|
|
||||||
soupsieve
|
|
||||||
typing-extensions
|
|
||||||
unidecode
|
|
||||||
urllib3
|
|
||||||
]
|
|
||||||
);
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"z /mnt/beets 0700 ${xlib.device.username} users -" # beets absolute paths
|
||||||
|
];
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
users = {
|
users = {
|
||||||
"${xlib.device.username}" = {
|
"${xlib.device.username}" = {
|
||||||
@@ -86,20 +30,21 @@ in
|
|||||||
beetsEnv
|
beetsEnv
|
||||||
pkgs.mp3gain
|
pkgs.mp3gain
|
||||||
pkgs.imagemagick
|
pkgs.imagemagick
|
||||||
#ffmpeg
|
#pkgs.ffmpeg
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.mounts = [
|
fileSystems."/mnt/beets/music" = {
|
||||||
{
|
device = "/home/${xlib.device.username}/Music"; # "${xlib.dirs.vetymae-drive}/Users/User/Music"
|
||||||
enable = true;
|
options = [
|
||||||
options = "bind,x-systemd.automount,nofail";
|
"bind"
|
||||||
requires = [ "local-fs.target" ];
|
"uid=1000"
|
||||||
type = "none";
|
"gid=1000"
|
||||||
wantedBy = [ "multi-user.target" ];
|
"fmask=0077"
|
||||||
what = "/home/${xlib.device.username}/Music";
|
"dmask=0077"
|
||||||
where = "/home/${xlib.device.username}/.config/beets";
|
"nofail"
|
||||||
}
|
#"x-systemd.device-timeout=0"
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ self: super: {
|
|||||||
self."requests" # For spotify, deezer, embedart, fetchart, lyrics
|
self."requests" # For spotify, deezer, embedart, fetchart, lyrics
|
||||||
self."python3-discogs-client" # For discogs
|
self."python3-discogs-client" # For discogs
|
||||||
self."pylast" # For lastgenre
|
self."pylast" # For lastgenre
|
||||||
# self."beetcamp" # Another
|
self."beetcamp" # Another
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"certifi" = super.buildPythonPackage rec {
|
"certifi" = super.buildPythonPackage rec {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
xlib.device.username = "oqyude";
|
xlib.device.username = "oqyude";
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
mutableUsers = false;
|
|
||||||
users = {
|
users = {
|
||||||
"${xlib.device.username}" = {
|
"${xlib.device.username}" = {
|
||||||
name = "${xlib.device.username}";
|
name = "${xlib.device.username}";
|
||||||
@@ -81,22 +80,6 @@
|
|||||||
group = config.users.users."${xlib.device.username}".group;
|
group = config.users.users."${xlib.device.username}".group;
|
||||||
mode = "0655";
|
mode = "0655";
|
||||||
};
|
};
|
||||||
ssh_key_private_root = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "ssh_key_private";
|
|
||||||
path = "/root/.ssh/id_ed25519";
|
|
||||||
owner = "root";
|
|
||||||
group = "root";
|
|
||||||
mode = "0600";
|
|
||||||
};
|
|
||||||
ssh_key_public_root = {
|
|
||||||
format = "yaml";
|
|
||||||
key = "ssh_key_public";
|
|
||||||
path = "/root/.ssh/id_ed25519";
|
|
||||||
owner = "root";
|
|
||||||
group = "root";
|
|
||||||
mode = "0655";
|
|
||||||
};
|
|
||||||
ssh_key_public_host = {
|
ssh_key_public_host = {
|
||||||
format = "yaml";
|
format = "yaml";
|
||||||
key = "ssh_key_public";
|
key = "ssh_key_public";
|
||||||
|
|||||||
@@ -58,7 +58,6 @@
|
|||||||
environment = {
|
environment = {
|
||||||
"XRAY_VMESS_AEAD_FORCED" = "false";
|
"XRAY_VMESS_AEAD_FORCED" = "false";
|
||||||
"XUI_ENABLE_FAIL2BAN" = "true";
|
"XUI_ENABLE_FAIL2BAN" = "true";
|
||||||
"TZ" = "Europe/Moscow";
|
|
||||||
};
|
};
|
||||||
volumes = [
|
volumes = [
|
||||||
"/mnt/containers/3x-ui/cert/:/root/cert:rw"
|
"/mnt/containers/3x-ui/cert/:/root/cert:rw"
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./3x-ui.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
compose2nix
|
||||||
|
podman-tui
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../vds
|
./containers
|
||||||
|
./nginx.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.netbird.server = {
|
||||||
|
enable = false;
|
||||||
|
enableNginx = true;
|
||||||
|
domain = "netbird.zeroq.ru";
|
||||||
|
dashboard = {
|
||||||
|
enable = false;
|
||||||
|
domain = "netbird.zeroq.ru";
|
||||||
|
settings = {
|
||||||
|
#AUTH_AUTHORITY = "nbp_ufe0v5mbb5H1lQWL8eJfuzJ5ItPmlM46Mik0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
management = {
|
||||||
|
enable = false;
|
||||||
|
domain = "netbird.zeroq.ru";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# networking.firewall = {
|
||||||
|
# allowedTCPPorts = [
|
||||||
|
# 80
|
||||||
|
# 443
|
||||||
|
# 33073
|
||||||
|
# 10000
|
||||||
|
# 33080
|
||||||
|
# ];
|
||||||
|
# allowedUDPPorts = [ 3478 ];
|
||||||
|
# allowedUDPPortRanges = [
|
||||||
|
# {
|
||||||
|
# from = 49152;
|
||||||
|
# to = 65535;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
server = "100.64.0.0";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
environment.etc."nginx/pubray".text = inputs.zeroq-credentials.services.xray.auth;
|
||||||
|
users.users.nginx.extraGroups = [ "acme" ];
|
||||||
|
services = {
|
||||||
|
nginx = {
|
||||||
|
enable = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
appendHttpConfig = inputs.zeroq-credentials.services.xray.maps;
|
||||||
|
virtualHosts = {
|
||||||
|
# "pubray.zeroq.ru" = {
|
||||||
|
# enableACME = true;
|
||||||
|
# forceSSL = true;
|
||||||
|
# root = "${inputs.zeroq-credentials.services.xray.subs}";
|
||||||
|
# locations."/" = {
|
||||||
|
# extraConfig = ''
|
||||||
|
# auth_basic "Restricted";
|
||||||
|
# auth_basic_user_file /etc/nginx/pubray;
|
||||||
|
|
||||||
|
# if ($subfile = "") { return 403; }
|
||||||
|
# rewrite ^/$ $subfile break;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
"x.new.zeroq.ru" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations = {
|
||||||
|
"/" = {
|
||||||
|
proxyPass = "http://localhost:2049";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
"/default" = {
|
||||||
|
proxyPass = "http://localhost:2053";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
"/subs/" = {
|
||||||
|
proxyPass = "http://localhost:2096";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# "kuma.new.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:4001";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# "node-red.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# kTLS = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:1880";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# "new.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# root = pkgs.writeTextDir "index.html" ''
|
||||||
|
# <!doctype html>
|
||||||
|
# <html>
|
||||||
|
# <body>
|
||||||
|
# <pre>What are you doing here?</pre>
|
||||||
|
# </body>
|
||||||
|
# </html>
|
||||||
|
# '';
|
||||||
|
# locations = {
|
||||||
|
# "/guest/" = {
|
||||||
|
# proxyPass = "http://${server}:80";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# # "/.well-known/discord" = {
|
||||||
|
# # extraConfig = ''
|
||||||
|
# # default_type text/plain;
|
||||||
|
# # return 200 "dh=c2d103553a4cfdaa1b7952a87a7d8120a1e167cc";
|
||||||
|
# # '';
|
||||||
|
# # };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# "flux.new.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:6061";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# "office.new.zeroq.ru" = {
|
||||||
|
# enableACME = true;
|
||||||
|
# forceSSL = true;
|
||||||
|
# locations = {
|
||||||
|
# "/" = {
|
||||||
|
# proxyPass = "http://${server}:9980"; # API и coauthoring
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
# proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
# ''; # absolute_redirect off;
|
||||||
|
# };
|
||||||
|
# "immich.new.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:2283";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# "nextcloud.new.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations = {
|
||||||
|
# "/" = {
|
||||||
|
# proxyPass = "http://${server}:10000";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# "/whiteboard" = {
|
||||||
|
# proxyPass = "http://${server}:3002";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# "calibre.new.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:8083";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# "pdf.new.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:6060";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# "ai.zeroq.ru" = {
|
||||||
|
# forceSSL = true;
|
||||||
|
# enableACME = true;
|
||||||
|
# locations."/" = {
|
||||||
|
# proxyPass = "http://${server}:11112";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# };
|
||||||
|
# extraConfig = ''
|
||||||
|
# client_max_body_size 5G;
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
defaults = {
|
||||||
|
email = "go.bin043120@gmail.com";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
# Auto-generated using compose2nix v0.3.3-pre.
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Runtime
|
||||||
|
virtualisation.podman = {
|
||||||
|
enable = true;
|
||||||
|
autoPrune = {
|
||||||
|
enable = true;
|
||||||
|
flags = [ "--all" ];
|
||||||
|
};
|
||||||
|
dockerCompat = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable container name DNS for all Podman networks.
|
||||||
|
networking.firewall.interfaces =
|
||||||
|
let
|
||||||
|
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"${matchAll}".allowedUDPPorts = [ 53 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
|
from = 14380;
|
||||||
|
to = 15380;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
allowedTCPPortRanges = [
|
||||||
|
{
|
||||||
|
from = 14380;
|
||||||
|
to = 15380;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
allowedTCPPorts = [
|
||||||
|
8443
|
||||||
|
9443
|
||||||
|
13380
|
||||||
|
];
|
||||||
|
allowedUDPPorts = [
|
||||||
|
8443
|
||||||
|
9443
|
||||||
|
13380
|
||||||
|
];
|
||||||
|
};
|
||||||
|
virtualisation.oci-containers.backend = "podman";
|
||||||
|
|
||||||
|
# Containers
|
||||||
|
virtualisation.oci-containers.containers."3xui_app" = {
|
||||||
|
image = "ghcr.io/mhsanaei/3x-ui:latest";
|
||||||
|
environment = {
|
||||||
|
"XRAY_VMESS_AEAD_FORCED" = "false";
|
||||||
|
"XUI_ENABLE_FAIL2BAN" = "true";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"/mnt/containers/3x-ui/cert/:/root/cert:rw"
|
||||||
|
"/mnt/containers/3x-ui/db/:/etc/x-ui:rw"
|
||||||
|
];
|
||||||
|
log-driver = "journald";
|
||||||
|
extraOptions = [
|
||||||
|
"--network=host"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systemd.services."podman-3xui_app" = {
|
||||||
|
serviceConfig = {
|
||||||
|
Restart = lib.mkOverride 90 "always";
|
||||||
|
};
|
||||||
|
partOf = [
|
||||||
|
"podman-compose-3x-ui-root.target"
|
||||||
|
];
|
||||||
|
wantedBy = [
|
||||||
|
"podman-compose-3x-ui-root.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Builds
|
||||||
|
systemd.services."podman-build-3xui_app" = {
|
||||||
|
path = [
|
||||||
|
pkgs.podman
|
||||||
|
pkgs.git
|
||||||
|
];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
TimeoutSec = 300;
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
cd /mnt/containers/3x-ui
|
||||||
|
podman build -t compose2nix/3xui_app -f ./Dockerfile .
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Root service
|
||||||
|
# When started, this will automatically create all resources and start
|
||||||
|
# the containers. When stopped, this will teardown all resources.
|
||||||
|
systemd.targets."podman-compose-3x-ui-root" = {
|
||||||
|
unitConfig = {
|
||||||
|
Description = "Root target generated by compose2nix.";
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./3x-ui.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
compose2nix
|
||||||
|
podman-tui
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -4,11 +4,10 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../containers/3x-ui.nix
|
./containers
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./samba.nix
|
./xray.nix
|
||||||
# ./glances.nix
|
# ../services/uptime-kuma.nix
|
||||||
# ./netbird.nix
|
# ./netbird.nix
|
||||||
# ./xray.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
glances = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
port = 61208;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -7,17 +7,17 @@
|
|||||||
services.netbird.server = {
|
services.netbird.server = {
|
||||||
enable = false;
|
enable = false;
|
||||||
enableNginx = true;
|
enableNginx = true;
|
||||||
domain = "netbird.zeroq.su";
|
domain = "netbird.zeroq.ru";
|
||||||
dashboard = {
|
dashboard = {
|
||||||
enable = false;
|
enable = false;
|
||||||
domain = "netbird.zeroq.su";
|
domain = "netbird.zeroq.ru";
|
||||||
settings = {
|
settings = {
|
||||||
#AUTH_AUTHORITY = "nbp_ufe0v5mbb5H1lQWL8eJfuzJ5ItPmlM46Mik0";
|
#AUTH_AUTHORITY = "nbp_ufe0v5mbb5H1lQWL8eJfuzJ5ItPmlM46Mik0";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
management = {
|
management = {
|
||||||
enable = false;
|
enable = false;
|
||||||
domain = "netbird.zeroq.su";
|
domain = "netbird.zeroq.ru";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+37
-78
@@ -8,7 +8,7 @@ let
|
|||||||
server = "100.64.0.0";
|
server = "100.64.0.0";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# environment.etc."nginx/pubray".text = inputs.zeroq-credentials.services.xray.auth;
|
environment.etc."nginx/pubray".text = inputs.zeroq-credentials.services.xray.auth;
|
||||||
users.users.nginx.extraGroups = [ "acme" ];
|
users.users.nginx.extraGroups = [ "acme" ];
|
||||||
services = {
|
services = {
|
||||||
nginx = {
|
nginx = {
|
||||||
@@ -17,9 +17,9 @@ in
|
|||||||
recommendedOptimisation = true;
|
recommendedOptimisation = true;
|
||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
recommendedTlsSettings = true;
|
recommendedTlsSettings = true;
|
||||||
# appendHttpConfig = inputs.zeroq-credentials.services.xray.maps;
|
appendHttpConfig = inputs.zeroq-credentials.services.xray.maps;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
# "pubray.zeroq.su" = {
|
# "pubray.zeroq.ru" = {
|
||||||
# enableACME = true;
|
# enableACME = true;
|
||||||
# forceSSL = true;
|
# forceSSL = true;
|
||||||
# root = "${inputs.zeroq-credentials.services.xray.subs}";
|
# root = "${inputs.zeroq-credentials.services.xray.subs}";
|
||||||
@@ -33,7 +33,7 @@ in
|
|||||||
# '';
|
# '';
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
"x.zeroq.su" = {
|
"x.zeroq.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
locations = {
|
locations = {
|
||||||
@@ -45,45 +45,20 @@ in
|
|||||||
proxyPass = "http://localhost:2096";
|
proxyPass = "http://localhost:2096";
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
};
|
};
|
||||||
"/subsjs/" = {
|
|
||||||
proxyPass = "http://localhost:2096";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"kuma.zeroq.su" = {
|
"kuma.zeroq.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://${server}:4001";
|
proxyPass = "http://${server}:4001";
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
};
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
"health.zeroq.su" = {
|
# "node-red.zeroq.ru" = {
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:19999";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"git.zeroq.su" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:3000";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# "agent.zeroq.su" = {
|
|
||||||
# forceSSL = true;
|
|
||||||
# enableACME = true;
|
|
||||||
# locations."/" = {
|
|
||||||
# proxyPass = "http://${server}:3000";
|
|
||||||
# proxyWebsockets = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# "node-red.zeroq.su" = {
|
|
||||||
# forceSSL = true;
|
# forceSSL = true;
|
||||||
# enableACME = true;
|
# enableACME = true;
|
||||||
# kTLS = true;
|
# kTLS = true;
|
||||||
@@ -95,7 +70,7 @@ in
|
|||||||
# client_max_body_size 5G;
|
# client_max_body_size 5G;
|
||||||
# '';
|
# '';
|
||||||
# };
|
# };
|
||||||
"zeroq.su" = {
|
"zeroq.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
root = pkgs.writeTextDir "index.html" ''
|
root = pkgs.writeTextDir "index.html" ''
|
||||||
@@ -119,50 +94,34 @@ in
|
|||||||
# };
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"flux.zeroq.su" = {
|
"flux.zeroq.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://${server}:6061";
|
proxyPass = "http://${server}:6061";
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
};
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 5G;
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
"n8n.zeroq.su" = {
|
"office.zeroq.ru" = {
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://${server}:5678";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"office.zeroq.su" = {
|
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
locations = {
|
locations = {
|
||||||
"/" = {
|
"/" = {
|
||||||
proxyPass = "http://${server}:8090";
|
proxyPass = "http://${server}:9980"; # API и coauthoring
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# extraConfig = ''
|
extraConfig = ''
|
||||||
# client_max_body_size 5G;
|
client_max_body_size 5G;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
# proxy_http_version 1.1;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
# proxy_buffering off;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
''; # absolute_redirect off;
|
||||||
# proxy_set_header Host $host;
|
|
||||||
# proxy_set_header X-Forwarded-Host $host;
|
|
||||||
# proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
# proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
|
|
||||||
# proxy_set_header Authorization $http_authorization;
|
|
||||||
|
|
||||||
# proxy_set_header Upgrade $http_upgrade;
|
|
||||||
# proxy_set_header Connection "upgrade";
|
|
||||||
# ''; # absolute_redirect off;
|
|
||||||
};
|
};
|
||||||
"immich.zeroq.su" = {
|
"immich.zeroq.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
@@ -173,7 +132,7 @@ in
|
|||||||
client_max_body_size 5G;
|
client_max_body_size 5G;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"nextcloud.zeroq.su" = {
|
"nextcloud.zeroq.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
locations = {
|
locations = {
|
||||||
@@ -190,7 +149,7 @@ in
|
|||||||
client_max_body_size 5G;
|
client_max_body_size 5G;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"calibre.zeroq.su" = {
|
"calibre.zeroq.ru" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
@@ -201,18 +160,18 @@ in
|
|||||||
client_max_body_size 5G;
|
client_max_body_size 5G;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"pdf.zeroq.su" = {
|
# "pdf.zeroq.ru" = {
|
||||||
forceSSL = true;
|
# forceSSL = true;
|
||||||
enableACME = true;
|
# enableACME = true;
|
||||||
locations."/" = {
|
# locations."/" = {
|
||||||
proxyPass = "http://${server}:8446";
|
# proxyPass = "http://${server}:6060";
|
||||||
proxyWebsockets = true;
|
# proxyWebsockets = true;
|
||||||
};
|
# };
|
||||||
extraConfig = ''
|
# extraConfig = ''
|
||||||
client_max_body_size 5G;
|
# client_max_body_size 5G;
|
||||||
'';
|
# '';
|
||||||
};
|
# };
|
||||||
# "ai.zeroq.su" = {
|
# "ai.zeroq.ru" = {
|
||||||
# forceSSL = true;
|
# forceSSL = true;
|
||||||
# enableACME = true;
|
# enableACME = true;
|
||||||
# locations."/" = {
|
# locations."/" = {
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
xlib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services.samba = {
|
|
||||||
enable = true;
|
|
||||||
nmbd = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
"invalid users" = [ ];
|
|
||||||
"passwd program" = "/run/wrappers/bin/passwd %u";
|
|
||||||
security = "user";
|
|
||||||
};
|
|
||||||
nixos = {
|
|
||||||
"path" = "/etc/nixos";
|
|
||||||
"browseable" = "yes";
|
|
||||||
"read only" = "no";
|
|
||||||
"valid users" = "${xlib.device.username}";
|
|
||||||
"guest ok" = "no";
|
|
||||||
"writable" = "yes";
|
|
||||||
"create mask" = 755;
|
|
||||||
"directory mask" = 755;
|
|
||||||
"force user" = "${xlib.device.username}";
|
|
||||||
"force group" = "users";
|
|
||||||
};
|
|
||||||
root = {
|
|
||||||
"path" = "/";
|
|
||||||
"browseable" = "yes";
|
|
||||||
"read only" = "no";
|
|
||||||
"valid users" = "${xlib.device.username}";
|
|
||||||
"guest ok" = "no";
|
|
||||||
"writable" = "yes";
|
|
||||||
#"create mask" = 0644;
|
|
||||||
#"directory mask" = 0644;
|
|
||||||
"force user" = "root";
|
|
||||||
"force group" = "root";
|
|
||||||
};
|
|
||||||
"${xlib.device.username}" = {
|
|
||||||
"path" = "/home/${xlib.device.username}";
|
|
||||||
"browseable" = "yes";
|
|
||||||
"read only" = "no";
|
|
||||||
"valid users" = "${xlib.device.username}";
|
|
||||||
"guest ok" = "no";
|
|
||||||
"writable" = "yes";
|
|
||||||
"create mask" = 700;
|
|
||||||
"directory mask" = 700;
|
|
||||||
"force user" = "${xlib.device.username}";
|
|
||||||
"force group" = "users";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -5,10 +5,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
|
||||||
# ./3x-ui.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
compose2nix
|
compose2nix
|
||||||
podman-tui
|
podman-tui
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../software/aichat.nix
|
|
||||||
../software/beets
|
../software/beets
|
||||||
../software/whisper.nix
|
../software/whisper.nix
|
||||||
./containers
|
../software/aichat.nix
|
||||||
./tools
|
#../vds/docker.nix
|
||||||
#../server/open-webui.nix
|
|
||||||
#../services/tts.nix
|
#../services/tts.nix
|
||||||
|
#../server/open-webui.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-6
@@ -1,8 +1,3 @@
|
|||||||
{
|
{ inputs, ... }:
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
self: super: {
|
self: super: {
|
||||||
rovr = inputs.self.packages.x86_64-linux.rovr;
|
|
||||||
pcbu-desktop = inputs.self.packages.x86_64-linux.pcbu-desktop;
|
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-12
@@ -1,17 +1,9 @@
|
|||||||
{ inputs, ... }@flakeContext:
|
{ inputs, ... }@flakeContext:
|
||||||
let
|
let
|
||||||
system = "x86_64-linux";
|
pkgs = import inputs.nixpkgs { system = "x86_64-linux"; };
|
||||||
pkgs = import inputs.nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
packages.${system} = {
|
# packages."x86_64-linux" = {
|
||||||
rovr = pkgs.callPackage ./rovr { };
|
# immich = pkgs.callPackage ./immich/package.nix { };
|
||||||
pcbu-desktop = pkgs.callPackage ./pcbu-desktop { };
|
# };
|
||||||
# immich = pkgs.callPackage ./immich { };
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,54 +0,0 @@
|
|||||||
{ pkgs }:
|
|
||||||
|
|
||||||
let
|
|
||||||
pname = "pcbu-desktop";
|
|
||||||
version = "3.2.3";
|
|
||||||
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://github.com/MeisApps/pcbu-desktop/releases/download/v${version}/PCBioUnlock-x64.AppImage";
|
|
||||||
sha256 = "sha256-+NxAm6vhMH51z6BscuFvaMidHN/3tNBR1g+i0q9hjWE=";
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
|
||||||
pkgs.appimageTools.wrapType2 {
|
|
||||||
inherit pname version src;
|
|
||||||
|
|
||||||
extraPkgs =
|
|
||||||
pkgs: with pkgs; [
|
|
||||||
glib
|
|
||||||
nss
|
|
||||||
nspr
|
|
||||||
libdrm
|
|
||||||
libGL
|
|
||||||
libxkbcommon
|
|
||||||
libX11
|
|
||||||
libXcursor
|
|
||||||
libXrandr
|
|
||||||
libXi
|
|
||||||
libXext
|
|
||||||
libXfixes
|
|
||||||
libXrender
|
|
||||||
libXtst
|
|
||||||
libxcrypt-legacy
|
|
||||||
gtk3
|
|
||||||
alsa-lib
|
|
||||||
at-spi2-atk
|
|
||||||
at-spi2-core
|
|
||||||
cups
|
|
||||||
dbus
|
|
||||||
expat
|
|
||||||
pango
|
|
||||||
cairo
|
|
||||||
];
|
|
||||||
|
|
||||||
extraInstallCommands = ''
|
|
||||||
mkdir -p $out/share/applications
|
|
||||||
cat > $out/share/applications/${pname}.desktop <<EOF
|
|
||||||
[Desktop Entry]
|
|
||||||
Name=PCBU Desktop
|
|
||||||
Exec=${pname}
|
|
||||||
Type=Application
|
|
||||||
Categories=Utility;
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
Для сервиса пригодится:
|
|
||||||
|
|
||||||
```
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
services.dbus.enable = true;
|
|
||||||
networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> building '/nix/store/8q029crhzkqw1vqvjbnxvmpgpwfr9sk1-pcbu-desktop-3.2.3-fhsenv-rootfs.drv'
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> structuredAttrs is enabled
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> Warning: Schema ?org.gnome.system.locale? has path ?/system/locale/?. Paths starting with ?/apps/?, ?/desktop/? or ?/system/? are deprecated.
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> Warning: Schema ?org.gnome.system.proxy? has path ?/system/proxy/?. Paths starting with ?/apps/?, ?/desktop/? or ?/system/? are deprecated.
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> Warning: Schema ?org.gnome.system.proxy.http? has path ?/system/proxy/http/?. Paths starting with ?/apps/?, ?/desktop/? or ?/system/? are deprecated.
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> Warning: Schema ?org.gnome.system.proxy.https? has path ?/system/proxy/https/?. Paths starting with ?/apps/?, ?/desktop/? or ?/system/? are deprecated.
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> Warning: Schema ?org.gnome.system.proxy.ftp? has path ?/system/proxy/ftp/?. Paths starting with ?/apps/?, ?/desktop/? or ?/system/? are deprecated.
|
|
||||||
pcbu-desktop-3.2.3-fhsenv-rootfs> Warning: Schema ?org.gnome.system.proxy.socks? has path ?/system/proxy/socks/?. Paths starting with ?/apps/?, ?/desktop/? or ?/system/? are deprecated.
|
|
||||||
pcbu-desktop-3.2.3-bwrap> building '/nix/store/6pzpm3vzia2jjfjizh8yx8v1n8l9apnr-pcbu-desktop-3.2.3-bwrap.drv'
|
|
||||||
pcbu-desktop> building '/nix/store/9jrq44m27r427rfxvbn3ym7b4y6hnnha-pcbu-desktop-3.2.3.drv'
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
{ pkgs }:
|
|
||||||
|
|
||||||
let
|
|
||||||
python = pkgs.python314.override {
|
|
||||||
packageOverrides = self: super: {
|
|
||||||
textual = super.textual.overridePythonAttrs (old: rec {
|
|
||||||
version = "7.1.0";
|
|
||||||
src = super.fetchPypi {
|
|
||||||
pname = "textual";
|
|
||||||
inherit version;
|
|
||||||
sha256 = "sha256-PHFI7wCpJ3tF/Xihpq3HxBnEUdPtcUoLAVsW6qKopzs=";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
py = python.pkgs;
|
|
||||||
|
|
||||||
textualDeps = with py; [
|
|
||||||
textual
|
|
||||||
textual-autocomplete
|
|
||||||
textual-image
|
|
||||||
textual-speedups
|
|
||||||
];
|
|
||||||
|
|
||||||
pythonDeps = with py; [
|
|
||||||
ujson
|
|
||||||
prompt-toolkit
|
|
||||||
rich
|
|
||||||
fastjsonschema
|
|
||||||
humanize
|
|
||||||
natsort
|
|
||||||
pathvalidate
|
|
||||||
pdf2image
|
|
||||||
pillow
|
|
||||||
platformdirs
|
|
||||||
psutil
|
|
||||||
puremagic
|
|
||||||
rarfile
|
|
||||||
rich-click
|
|
||||||
send2trash
|
|
||||||
tomli
|
|
||||||
];
|
|
||||||
|
|
||||||
in
|
|
||||||
|
|
||||||
py.buildPythonApplication rec {
|
|
||||||
pname = "rovr";
|
|
||||||
version = "0.7.0";
|
|
||||||
|
|
||||||
src = py.fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
format = "wheel";
|
|
||||||
dist = "py3";
|
|
||||||
python = "py3";
|
|
||||||
abi = "none";
|
|
||||||
platform = "any";
|
|
||||||
sha256 = "sha256-CMj3jepLSA2bMcl2r89HY/ghPXEIpF5RohkBkLj6iNw=";
|
|
||||||
};
|
|
||||||
|
|
||||||
format = "wheel";
|
|
||||||
|
|
||||||
propagatedBuildInputs = pythonDeps ++ textualDeps;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgs.stdenv.cc.cc.lib ];
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
meta = with pkgs.lib; {
|
|
||||||
description = "Terminal file manager rovr";
|
|
||||||
homepage = "https://pypi.org/project/rovr/";
|
|
||||||
license = licenses.mit;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user