Compare commits
1109 Commits
57936619f3
...
ab2ef75bc4
Author | SHA1 | Date |
---|---|---|
a-n-n-a-l-e-e | ab2ef75bc4 | |
Adam C. Stephens | b399a09e3b | |
Adam C. Stephens | f16ab18e2a | |
Sandro | a853dd4cb8 | |
Emily Trau | 9e71ae5d8d | |
Gaetan Lepage | 700db686fd | |
Mario Rodas | d7ebd15637 | |
Fabian Affolter | f819df36af | |
Weijia Wang | a5fcefa1ad | |
Aaron Andersen | 98f2a766ef | |
7c6f434c | d41453cf4d | |
Connor Baker | c315728360 | |
Weijia Wang | 790bb39e57 | |
David McFarland | 74228bb627 | |
David McFarland | 8398980c8a | |
David McFarland | a6ae6b07d7 | |
Weijia Wang | 518d41b676 | |
Weijia Wang | 2351f04cd4 | |
Weijia Wang | 81a8765ab5 | |
pennae | 8fd2fb6add | |
sinavir | 301a66e8ea | |
sinavir | 1bd3ab39c4 | |
Alexander Tomokhov | 8d3698e8f3 | |
Alexander Tomokhov | 552043a34d | |
Jhonas Wernery | 5c64fa1f3a | |
Weijia Wang | 2b6a3eaa8d | |
Weijia Wang | b4ba6124ee | |
Weijia Wang | 857904b2f5 | |
Weijia Wang | 101126f635 | |
toastal | fe13f29a56 | |
Weijia Wang | fbb8b069a7 | |
Weijia Wang | dca4c5c533 | |
Weijia Wang | 658da3a32e | |
Julien Malka | d4f44d1cb1 | |
Weijia Wang | 10d3c44cc2 | |
Luka T. Korošec | 126759eb58 | |
Weijia Wang | 641d9a463b | |
Philip Taron | 21b728e641 | |
Weijia Wang | c806d520c3 | |
Weijia Wang | 1433d5f7f5 | |
Weijia Wang | 049e7c7fa9 | |
R. Ryantm | 04ca3fa759 | |
Weijia Wang | 3140b28fe3 | |
Weijia Wang | 57e2a774fd | |
Weijia Wang | f67cc73e86 | |
John Ericson | 4d1a4fd113 | |
John Ericson | a3eaa2051d | |
Philip Taron | ab48a1b595 | |
Aaron Andersen | c4719710f0 | |
Weijia Wang | b4690c34c0 | |
Yuchen He | f1ea26a7e3 | |
DontEatOreo | 1524ca4564 | |
Aleksana | f82c6a17cc | |
Mahmoud Ayman | cf8ec33cde | |
Mahmoud Ayman | a2eb367a1a | |
Yuchen He | 6389c26e7c | |
Yuchen He | b4f1d8c1d0 | |
K900 | 4c147d4246 | |
K900 | 8fb412b9c2 | |
Philip Taron | 39c882983c | |
Florian Klink | fd61db7a32 | |
Florian Klink | 27968a064c | |
Robert Schütz | 8ee944ab07 | |
Florian Warzecha | e9eb20c757 | |
Someone | 8bea75f6bd | |
Mario Rodas | b6ab6f2912 | |
Nick Cao | 097efc15ed | |
ocfox | 897c8e5976 | |
John Ericson | 1bcf7a8b53 | |
Connor Baker | 11273b60c8 | |
Nick Cao | e3cb431fab | |
Nick Cao | 8536abe0fd | |
Nick Cao | 6f6f2dc9ec | |
R. Ryantm | 746cfa80bd | |
Mario Rodas | 1c12a42ee6 | |
Mario Rodas | b80740b0df | |
Mario Rodas | b77789fac9 | |
Mario Rodas | a23eaea05c | |
Mario Rodas | 3995561f53 | |
Stig | 3dc190d083 | |
Julien Malka | 7d4b7ac4df | |
Mario Rodas | 3a3068c45c | |
R. Ryantm | 6d89459fb0 | |
Pol Dellaiera | fccf5d6bdf | |
Mattys Gervais | 0532932c86 | |
Pol Dellaiera | 25024a5886 | |
superherointj | d6b259ca25 | |
John Ericson | 48020a2121 | |
Wolfgang Walther | b5a8fcb949 | |
R. Ryantm | b2c561ddb3 | |
Nick Cao | 0ef93bf950 | |
Nick Cao | 73c3d02158 | |
Nick Cao | cdfb6810e8 | |
Nick Cao | 074758e957 | |
Nick Cao | 323e63c671 | |
Nick Cao | 68bf131fe1 | |
Nick Cao | 4ddb9b8732 | |
Nick Cao | 0445808965 | |
Nick Cao | f4a7bc008a | |
Nick Cao | 5c6d47e032 | |
Nick Cao | 20984e60f5 | |
itslychee | 8b3d580186 | |
itslychee | fe57668bca | |
Nick Cao | 3772198c70 | |
Nick Cao | 87e00e0406 | |
Nick Cao | cf87aa2ad6 | |
Nick Cao | 69a25463cf | |
Nick Cao | b31f3f33d4 | |
Adam C. Stephens | 05eb18bcc7 | |
R. Ryantm | 630a8cdc74 | |
Pol Dellaiera | 731678dab4 | |
Leona Maroni | 354e1366a7 | |
K900 | 8503ed0585 | |
a-n-n-a-l-e-e | cb13a6d0ae | |
Adam C. Stephens | f06c02ce7c | |
Gaetan Lepage | 6dbdaedade | |
Atemu | f2acaf2a07 | |
Adam C. Stephens | d269fee822 | |
Peter Hoeg | 90253a84f2 | |
Raroh73 | c5d1dea41f | |
Sandro | 07512215ac | |
Pol Dellaiera | 9b12db21dc | |
Pol Dellaiera | 5e504176f3 | |
Pol Dellaiera | f438a28dc5 | |
Pol Dellaiera | 9320e86e1a | |
Yt | bf796ac7d6 | |
Casey Link | 17d73dc9a1 | |
Casey Link | afaaa840c1 | |
Jörg Thalheim | 7c045a5460 | |
Jörg Thalheim | 1a92639f29 | |
R. Ryantm | 6740627dc2 | |
Pol Dellaiera | 6163c182cf | |
LordMZTE | d8489497c3 | |
toastal | 14377d6b82 | |
Christian Kögler | af105fd375 | |
Pol Dellaiera | 3e0b2b88cb | |
Adminy | 50b366d82b | |
Doron Behar | eaa8ed0793 | |
Pol Dellaiera | 5ac34044b2 | |
Fabian Affolter | 98785b7e13 | |
Fabian Affolter | 6c749d8ddf | |
Fabian Affolter | 33f6082e99 | |
Fabian Affolter | 17cc0c938a | |
K900 | e781bae4a4 | |
Gaetan Lepage | e79cebc3bf | |
Assistant | a238397911 | |
R. Ryantm | 8eec38d8a2 | |
Sandro | 9078780158 | |
R. Ryantm | e1b6b030fc | |
Pol Dellaiera | 3567be999c | |
R. Ryantm | ce7c1489d4 | |
Sebastian Sellmeier | 50625bd0fb | |
Sebastian Sellmeier | b6e65a161a | |
kirillrdy | f6957593d4 | |
Alyssa Ross | e7de14ea98 | |
Alyssa Ross | 5c96956e4b | |
R. Ryantm | 1ff302d40d | |
R. Ryantm | f078f04fde | |
Ulrik Strid | dae0b15166 | |
R. Ryantm | 1396048bf3 | |
Jörg Thalheim | f5eecd267b | |
R. Ryantm | 5aa295e9e1 | |
Pol Dellaiera | a378e7356a | |
Evgeny Kurnevsky | faa720d380 | |
R. Ryantm | 78a5c24319 | |
R. Ryantm | 250af4edc1 | |
sinavir | 2f0ef551f8 | |
R. Ryantm | 2be350c625 | |
R. Ryantm | 2f33899915 | |
R. Ryantm | b40420a589 | |
R. Ryantm | d984c0e34b | |
R. Ryantm | 808872e9f7 | |
Mario Rodas | 2c10fcd44f | |
R. Ryantm | 65a0e814eb | |
R. Ryantm | 385994a4cd | |
R. Ryantm | 96c7e7597a | |
Adam C. Stephens | 559cda20de | |
Bryan A. S. | 292a4d8fa1 | |
aleksana | e14716b7d2 | |
R. Ryantm | df0b73e74e | |
Qusic | 96e575af2f | |
R. Ryantm | 6cff0a5ca7 | |
Qusic | f92b33896f | |
Robert Schütz | 545b6a6859 | |
Philipp Böschen | f253578740 | |
R. Ryantm | 0517902812 | |
Pablo Ovelleiro Corral | 7f797a698f | |
Robert Schütz | a74f76e5e1 | |
Robert Schütz | dbe5775901 | |
Jack Cummings | d188d7ef29 | |
Weijia Wang | 3db4469d98 | |
Weijia Wang | 974165196f | |
Adam C. Stephens | 395a71d6cc | |
Weijia Wang | 85264a674b | |
Weijia Wang | a9b9bc99d4 | |
Weijia Wang | 8858a4cac5 | |
Weijia Wang | 0f0e60bdd4 | |
Weijia Wang | 2455658e4a | |
Weijia Wang | 48ea08448b | |
R. Ryantm | 57717be3a4 | |
Weijia Wang | 483821ea20 | |
Weijia Wang | 7963987c4d | |
R. Ryantm | 1fd6ad1f0b | |
R. Ryantm | 8d3cf2b9ac | |
Weijia Wang | 2fa254e139 | |
Weijia Wang | ccc0b900ca | |
Weijia Wang | a7e3d1068b | |
R. Ryantm | 556a1d83f7 | |
Weijia Wang | a72d421af6 | |
Weijia Wang | 2f8c0c4d1d | |
Weijia Wang | 62bc9629d3 | |
Weijia Wang | e0dd3ae0c3 | |
Dennis Wuitz | bdeca2c42d | |
Weijia Wang | 62d8cac6d3 | |
Weijia Wang | 543340dee3 | |
Cole Mickens | daa600f16b | |
Weijia Wang | a59657b42d | |
Weijia Wang | e0cd1ca588 | |
Weijia Wang | 9785a32a7b | |
Weijia Wang | 1dd5dd480b | |
Weijia Wang | 498ed67c4f | |
Weijia Wang | 48472a7639 | |
Weijia Wang | 66467339cd | |
Pol Dellaiera | 37e6dc0c44 | |
Pascal Bach | 7df1becac9 | |
Pol Dellaiera | e33b00946c | |
Pol Dellaiera | 2893db5e90 | |
Robert Schütz | bf6048933c | |
Weijia Wang | e047f577a9 | |
Soispha | 90e5e88c74 | |
Pol Dellaiera | 932751fa9f | |
Robert Schütz | 22a24fc642 | |
Dmitry Kalinkin | ce426df9bb | |
Atemu | ce31cd2a45 | |
Pol Dellaiera | 5ca75026a4 | |
R. Ryantm | 989b66f0b8 | |
Nick Cao | bbbad97414 | |
Fabian Affolter | b8d649e4b2 | |
Anderson Torres | b5b4992ef9 | |
Sandro | b0cb3b101e | |
Anderson Torres | c7ccaa7154 | |
Anderson Torres | 77a820e18a | |
Sandro | 5885834593 | |
Sandro | c20f6e2799 | |
Sandro | 1b7db66a7d | |
R. Ryantm | d65e892272 | |
Stig | be77147fa2 | |
Sandro | 78ecf78cb8 | |
R. Ryantm | fb63b132a7 | |
Fabian Affolter | efb146cad6 | |
Weijia Wang | 1a40a30ce5 | |
Daniel Florescu | de4369fc14 | |
R. Ryantm | 5dbcf0ece7 | |
Azat Bahawi | 7835a86bef | |
Pol Dellaiera | 0a08741184 | |
R. Ryantm | ebac3c20bc | |
R. Ryantm | bbd48c4c97 | |
Daniel Sidhion | c3cb77dfe5 | |
Vincent Laporte | f6371cad74 | |
Jonathan Ringer | 7cd68c3dc8 | |
Jonathan Ringer | 65c4c21a2b | |
Gaetan Lepage | 60a17414b2 | |
Guanran Wang | c3bec58e79 | |
Guanran Wang | 25f394ab02 | |
Maxine Aubrey | 35a3c22cf0 | |
7c6f434c | 2629ee5b34 | |
Robert Schütz | 58bcf7e3a4 | |
Robert Schütz | 07fedc19c1 | |
Weijia Wang | f792ecf1bd | |
Weijia Wang | 014711e881 | |
lassulus | 5c2942db11 | |
Elian Doran | 9c9dc1f366 | |
Elian Doran | e0ff218af8 | |
nixpkgs-merge-bot[bot] | 2aa0e89d57 | |
Elian Doran | 15e0d5515e | |
Elian Doran | 1f047397ab | |
DCsunset | 99fb1706fb | |
Pol Dellaiera | 68a3400aad | |
Doron Behar | fef6f3ff44 | |
Emily | 4bdb5ab775 | |
R. Ryantm | f6d714ba00 | |
Fabian Affolter | 1f097fde60 | |
R. Ryantm | 33f2f671bb | |
blinry | e6841d032e | |
R. Ryantm | e950fcdd8e | |
Nick Cao | afcd1c5328 | |
Benjamin Hajdukiewicz | 286f8f239e | |
Benjamin Hajdukiewicz | b9ed801289 | |
Jonathan Ringer | 0de1457fe3 | |
R. Ryantm | b40afca062 | |
Sebastian Gabriel Trzpiot | 081607dfcf | |
R. Ryantm | e348f4043f | |
nixpkgs-merge-bot[bot] | 84a2a1f9a1 | |
Nick Cao | a504202076 | |
Nick Cao | ef31bbb71b | |
Nick Cao | 192d602c67 | |
Nick Cao | 04bc26b036 | |
Nick Cao | 48dc546b33 | |
Nick Cao | 14e20edd18 | |
Nick Cao | 02773b9245 | |
Nick Cao | 0df3d1c609 | |
Nick Cao | 90f11eee2d | |
Nick Cao | fd387e61db | |
Nick Cao | bfbb3e6ab5 | |
Nick Cao | 08bc16ad3b | |
Nick Cao | b60f5ebc99 | |
Nick Cao | 8729a18c77 | |
Nick Cao | 50d5c6f85c | |
Nick Cao | 14f8392741 | |
Nick Cao | 50958f852a | |
Ivan Mincik | 75e7b2b097 | |
Nick Cao | 4d98454bbd | |
Nick Cao | 05cded0473 | |
Nick Cao | c9266b40c9 | |
Nick Cao | c0f3e293e5 | |
R. Ryantm | 2162088e06 | |
Nick Cao | 1ccf9aa880 | |
Nick Cao | a713acbeca | |
Nick Cao | 17d72d0889 | |
Nick Cao | 4f4caaa681 | |
Nick Cao | b05341bc28 | |
Nick Cao | 10de725d5e | |
Martin Weinelt | 1bebf93dd9 | |
Nick Cao | f28142000d | |
Nick Cao | 65c41e1067 | |
Martin Weinelt | dee02440bb | |
Martin Weinelt | e9cde035db | |
Nick Cao | 2321d59f45 | |
Nick Cao | 193e8976b6 | |
Nick Cao | 9d925497b2 | |
Yt | a87b7b96b1 | |
David McFarland | c4451cc34f | |
Nick Cao | 9027c99bda | |
R. Ryantm | 1765b13d1f | |
Jonas Heinrich | 8616aca59a | |
Thomas Gerbet | 54f9e016e9 | |
Martin Weinelt | 4e34cc4091 | |
R. Ryantm | 8b6f5c7fcc | |
superherointj | 8f4a6210b3 | |
superherointj | 14c6109d01 | |
R. Ryantm | 6ee367cd7f | |
Yt | 9bc8f11e87 | |
Yt | 241ed5902a | |
Stig Palmquist | 792526ea6e | |
Atemu | 63cde5f4e1 | |
Thomas Gerbet | 4bbb4575cd | |
Jakuzure Nonon | eb8ba567a7 | |
Wolfgang Walther | 7493cfa974 | |
Robert Schütz | b34e878675 | |
Naïm Favier | 158a3b07a2 | |
Jonas Heinrich | b104180d5b | |
Naïm Favier | 3a3c84e192 | |
R. Ryantm | 4359aed9d1 | |
R. Ryantm | c91584d445 | |
Evan Richter | 6aa88482a7 | |
Fabian Affolter | cfdef3532f | |
Fabian Affolter | ca6e137af4 | |
Fabian Affolter | 1b797b7b15 | |
Fabian Affolter | eea4c74df1 | |
Fabian Affolter | 3c558f0c2e | |
Fabian Affolter | ff298e19c4 | |
Fabian Affolter | 5fb6bfc254 | |
Fabian Affolter | 87d29656d4 | |
Fabian Affolter | 280f83b6e0 | |
Fabian Affolter | ff7ab27193 | |
Fabian Affolter | 2915884420 | |
Fabian Affolter | baadeae23f | |
Fabian Affolter | 170d59e177 | |
Fabian Affolter | 085756e57e | |
Naïm Favier | d33dfa5311 | |
Leona Maroni | f811173f8d | |
Emery Hemingway | 636d8e09e5 | |
Emery Hemingway | 8736da4cc6 | |
Emery Hemingway | d9b42d5143 | |
Emery Hemingway | 81e18dae4f | |
Naïm Favier | 92514e4863 | |
Matthias Beyer | b196257103 | |
R. Ryantm | 52542d5a37 | |
R. Ryantm | 04e15baaad | |
Ilya Grigoriev | 56be20aa49 | |
R. Ryantm | 5e55f2c46a | |
Jack Cummings | e921d4b319 | |
Doron Behar | 7848d6f048 | |
R. Ryantm | c937699962 | |
R. Ryantm | a826b314af | |
Dmitry Kalinkin | c459054f7e | |
K900 | 770bab383f | |
R. Ryantm | 314f6f280b | |
Robert Schütz | 46f803e21b | |
R. Ryantm | 3ce5d795ce | |
Dmitry Kalinkin | 924bfa96b6 | |
Dmitry Kalinkin | 415b63c4f6 | |
R. Ryantm | 633959c938 | |
Dmitry Kalinkin | dbbb97159c | |
Martin Weinelt | 38baa03829 | |
Weijia Wang | 28a658612c | |
Martin Weinelt | 0c7078367b | |
R. Ryantm | b96bc828b8 | |
Weijia Wang | 4fee93c124 | |
nixpkgs-merge-bot[bot] | c5978c1c8d | |
nixpkgs-merge-bot[bot] | 5c16d18d96 | |
Mario Rodas | cd1c70d941 | |
Weijia Wang | 175a041864 | |
Weijia Wang | 4abb61561e | |
Weijia Wang | 93a725e1a5 | |
R. Ryantm | 8b393f86b0 | |
R. Ryantm | b3efa0d2ef | |
Mario Rodas | 76c0732b85 | |
R. Ryantm | b7c2c96026 | |
R. Ryantm | 72774b5d11 | |
R. Ryantm | 5d3eb4d1dc | |
R. Ryantm | a99fd43709 | |
R. Ryantm | cc56d54530 | |
R. Ryantm | 12aee7f3db | |
Emily Trau | 37bcb7c95c | |
R. Ryantm | edb3754da5 | |
José Romildo Malaquias | ad5a4da5db | |
R. Ryantm | 301854470f | |
R. Ryantm | 9d32229a14 | |
R. Ryantm | 14489088da | |
Mario Rodas | 7d55d624b1 | |
Philip Taron | 4a660d5bb2 | |
Philip Taron | 8809c41021 | |
Philip Taron | 72f827ec28 | |
Philip Taron | 3faad46374 | |
Philip Taron | 9be6e22037 | |
Philip Taron | 75d2271a90 | |
Philip Taron | 71488a1fb6 | |
Philip Taron | 7a546620b2 | |
Philip Taron | 118bbb8bcc | |
Philip Taron | 1ed3d42bc1 | |
Philip Taron | bb2713d671 | |
Philip Taron | 751f1fc693 | |
Philip Taron | 8f49dedbcb | |
Philip Taron | 81d3babe25 | |
Weijia Wang | 9ee1ac83c2 | |
stuebinm | be7f53debd | |
Robert Schütz | 10d7d08d3f | |
Someone | 1760566bfe | |
Someone | 15148da973 | |
Thomas Gerbet | 800429eccc | |
Someone | 9a80c6e84f | |
Someone | 09b490afe6 | |
Someone | 0660548f6d | |
sodiboo | 8a08f8dd59 | |
zowoq | 5b81448bdd | |
R. Ryantm | eac3930643 | |
R. Ryantm | bc3b6e8525 | |
Weijia Wang | ec81e8e3b4 | |
Weijia Wang | 77f944385a | |
Someone Serge | b646f53a24 | |
Someone Serge | 48368865bc | |
Weijia Wang | b31887d86c | |
Thomas Gerbet | 853e10ea35 | |
Fabian Affolter | eadd5ec314 | |
Weijia Wang | e4306d0c78 | |
Fabian Affolter | 77ed57b3ed | |
maralorn | 471337c65d | |
Weijia Wang | 19442b0f89 | |
R. Ryantm | 4844f7dad3 | |
xrelkd | 62ef721432 | |
xrelkd | 9b6376b040 | |
Guillaume Girol | 9db82fb29e | |
Weijia Wang | 7a82321638 | |
Hannah Rosenberg | a334104070 | |
Hannah Rosenberg | b2fca9d78b | |
Fabian Affolter | d7bbe5fc9a | |
Casey Stark | 37f7581955 | |
Casey Stark | bd0aef53c3 | |
Guillaume Girol | 85bd601b67 | |
Weijia Wang | 45b352f43d | |
R. Ryantm | 74484f9aa1 | |
Weijia Wang | 0fadf03b0d | |
Weijia Wang | 73f78efb56 | |
Robert Hensing | ea68c891c4 | |
Weijia Wang | 3792ef0447 | |
Weijia Wang | ef040b05c9 | |
David McFarland | bf94c1d92f | |
David McFarland | d2dc458e2b | |
David McFarland | 9df74c38ef | |
David McFarland | a63d85073a | |
David McFarland | d7a6b0813c | |
David McFarland | 6830aac1a9 | |
R. Ryantm | 336c5df37a | |
Weijia Wang | 065947fb1a | |
R. Ryantm | 0fe6cfd18a | |
Weijia Wang | 5f08c72f70 | |
Weijia Wang | 7dcfb97860 | |
Mario Rodas | 247fbede36 | |
Fabian Affolter | 5b738b362b | |
Weijia Wang | f95f063db9 | |
Weijia Wang | b9fba268cc | |
Weijia Wang | 4b1f5c6b4c | |
Weijia Wang | cacdb9cee1 | |
Weijia Wang | 4b6aacd6e8 | |
Weijia Wang | 5400c82577 | |
Weijia Wang | 52765cb585 | |
Weijia Wang | 481b7349a2 | |
Weijia Wang | 15721e36fa | |
Hraban Luyat | 1208f55510 | |
Weijia Wang | c10868c528 | |
Weijia Wang | ec5894a974 | |
Weijia Wang | b9f1c35b48 | |
Weijia Wang | a16a515c58 | |
Weijia Wang | a735e127e2 | |
Alex Valiushko | 48f469c09b | |
Philip Taron | a696dbb659 | |
Adam C. Stephens | 5bb7dee2ab | |
Ryan Lahfa | 62cf6aa1da | |
Jonathan Ringer | 6a4ceb7cd7 | |
Weijia Wang | bc03601957 | |
Weijia Wang | 284fd753c9 | |
Jonathan Ringer | 46f73d4d2f | |
Jonathan Ringer | 66b556fa48 | |
Weijia Wang | c8f981bfaa | |
Weijia Wang | a39860e42b | |
Weijia Wang | 8497a5a572 | |
Weijia Wang | 81453fe2bb | |
Weijia Wang | 28475bbe6e | |
Weijia Wang | cdc29d2387 | |
Weijia Wang | 53fe5bda08 | |
Weijia Wang | 8953f69be1 | |
Weijia Wang | 782f22b08e | |
Weijia Wang | e79b11c09a | |
Weijia Wang | 8e94a18639 | |
Weijia Wang | 877bf7979c | |
Matthias Beyer | adf12b3878 | |
R. Ryantm | 076cdf587b | |
K900 | 9207df9ef3 | |
Weijia Wang | 61a3bf980c | |
Jonathan Ringer | e31bb0051f | |
Weijia Wang | d93bf8a5ca | |
Jonathan Ringer | 611761a4d8 | |
Weijia Wang | d3436f14a8 | |
Weijia Wang | 22437035e7 | |
Weijia Wang | 82277367c2 | |
Weijia Wang | 8626d92fe5 | |
Weijia Wang | 2bfa8cdcad | |
Jonathan Ringer | 13b0f46825 | |
Jonathan Ringer | bfe244b234 | |
Jonathan Ringer | 771398e0cd | |
Jonathan Ringer | 659a67f9e0 | |
K900 | 39546a6544 | |
nixpkgs-merge-bot[bot] | 3c8d9e9447 | |
Weijia Wang | 451e64cd52 | |
Jonathan Ringer | 11387afc0d | |
Weijia Wang | 7fb62607d8 | |
Weijia Wang | 89191a91fe | |
R. Ryantm | b6cf30260c | |
Weijia Wang | 9d08c37127 | |
Weijia Wang | 430b949648 | |
Weijia Wang | 582e744a81 | |
Wolfgang Walther | b9d6ff1104 | |
matthewcroughan | df7c06fe94 | |
北雁 Cryolitia | 8ce3c897a6 | |
Mario Rodas | 7a2cfaf363 | |
Weijia Wang | 602a94f999 | |
北雁 Cryolitia | c14ac40d8e | |
Fabian Affolter | 2bf5348a35 | |
R. Ryantm | 588fbb1c53 | |
R. Ryantm | 9a215265e0 | |
Lena | 1a0acec61c | |
Nick Cao | 3d8b76d951 | |
Nick Cao | 0c582dcc5f | |
Nick Cao | 016e4766bc | |
Nick Cao | 1c58d26119 | |
Nick Cao | 35fde99980 | |
Nick Cao | 06640600de | |
Nick Cao | 94d0fd7823 | |
Nick Cao | e9da0f5a56 | |
Nick Cao | a87909367a | |
Nick Cao | 7804c2141e | |
Nick Cao | a003abbba6 | |
Nick Cao | efba240a40 | |
Nick Cao | 108a2e0b05 | |
Nick Cao | 3af44697b0 | |
Nick Cao | 069fecc6ea | |
Nick Cao | f1bac8775c | |
Nick Cao | 937376cea9 | |
David McFarland | 3328c8b30f | |
David McFarland | 044aab0af8 | |
David McFarland | 3801f8df06 | |
Nick Cao | 31e7027200 | |
Nick Cao | 9e556b2ffb | |
Nick Cao | 891b2b45a1 | |
David McFarland | 519e197fc5 | |
R. Ryantm | 8cad900ec7 | |
Austin Horstman | 32364e88ca | |
David McFarland | 79259f21ab | |
Nick Cao | 182360826a | |
Nick Cao | 1be526adf8 | |
K900 | ff964811c9 | |
Nick Cao | 7773b0aa5e | |
Nick Cao | 210835531c | |
K900 | 42b1ad936d | |
Nick Cao | 0148ce6b0a | |
Nick Cao | 4bbfc1273f | |
K900 | 59bccda153 | |
K900 | 0e8bcaa661 | |
Nick Cao | 27dc843b46 | |
Nick Cao | 2932374527 | |
Nick Cao | bd041fafad | |
Nick Cao | 8305da842f | |
Fabian Affolter | f7812bed06 | |
R. Ryantm | 67bd1b6245 | |
Sefa Eyeoglu | 10c0931872 | |
Naïm Favier | 47ac0b2cc1 | |
Sandro Jäckel | 94805a3d21 | |
Eldritch Cookie | a12e54d1a9 | |
R. Ryantm | 7295c7bb9a | |
Sandro | def9bae3ef | |
Sandro Jäckel | 26538d4700 | |
Sandro | 8b152a2242 | |
Sandro | 3ea38d98b1 | |
Matthieu Coudron | e68863fa7a | |
Weijia Wang | 4e51255270 | |
Naïm Favier | 9f983a6c27 | |
Naïm Favier | 73add9a862 | |
Peder Bergebakken Sundt | 0ad2bc56e5 | |
R. Ryantm | c6411f87ae | |
Ulrik Strid | ae32f552b4 | |
R. Ryantm | fa7e935d28 | |
Matt Leon | 6e1bb51954 | |
Matt Leon | 5e00ea4342 | |
Matt Leon | 204ccc2323 | |
Gaetan Lepage | ef3bb68717 | |
Gaetan Lepage | 01e1f71fdf | |
Fabian Affolter | 1d6b803271 | |
Fabian Affolter | a5f10c2bc2 | |
Fabian Affolter | 61328d081d | |
teto sse | 4363f16d8f | |
Sandro | 62c379eb55 | |
Sandro | b58c708841 | |
Yt | e7b5a19dfc | |
Martin Schwaighofer | 710e06c1f1 | |
Sandro | 018cbced9f | |
Martin Schwaighofer | bfca76c4dd | |
Sandro | 0fb5a30ab4 | |
Sandro | b488f65e71 | |
R. Ryantm | f5f35279ea | |
Sandro | b1741ce936 | |
Dennis Wuitz | c0ba773eca | |
Sandro | dca5f899fd | |
Yaya | afce1683c0 | |
Yaya | 774056a4e6 | |
Yaya | 500b187bb9 | |
Yaya | 1dabbf3063 | |
K900 | f4a04eea5e | |
Yt | f20b81cdaf | |
K900 | ba79149c66 | |
Mario Rodas | d72da1d01a | |
Fabian Affolter | 27e0515364 | |
Fabian Affolter | c6cb043c90 | |
Fabian Affolter | e9669ba067 | |
gbtb | 5eca3b06e7 | |
Phillip Seeber | ed91367686 | |
Mario Rodas | 3eddf3150a | |
Guillaume Girol | 49c3fc46cb | |
markuskowa | 248a4a2e8b | |
kirillrdy | c5ae08c575 | |
Mario Rodas | fe2a68bebb | |
Mario Rodas | ab41fba462 | |
Mario Rodas | 0bbd98bd37 | |
Mario Rodas | a7cf52c525 | |
Pol Dellaiera | 02910df6a5 | |
Mario Rodas | baf3a47f6c | |
Mario Rodas | e3863ee018 | |
Mario Rodas | 7a0c58cd96 | |
Mario Rodas | 519d88ad4c | |
Fabian Affolter | 0bcbd226cd | |
Fabian Affolter | 8e5c566116 | |
kirillrdy | a6b7f02193 | |
aleksana | b56c119214 | |
Phillip Cloud | 3ecd43743a | |
Phillip Cloud | 4cf748d835 | |
Fabian Affolter | 6586a5bcb8 | |
Fabian Affolter | 446ae7f31e | |
Fabian Affolter | d515ded300 | |
Emilio Ziniades | 9fc370d8ad | |
Fabian Affolter | 75a7491ce2 | |
Fabian Affolter | 28aff0794b | |
Fabian Affolter | db22b5d2b8 | |
Fabian Affolter | 08cfa6e603 | |
Fabian Affolter | 1729a61ebf | |
Fabian Affolter | ffdf7f26d8 | |
R. Ryantm | 35065fb264 | |
Fabian Affolter | 95695da4aa | |
Fabian Affolter | f92d7f0c87 | |
Fabian Affolter | 347310ed31 | |
Jonas Heinrich | 72670ccc0c | |
Fabian Affolter | 0fcaf0027e | |
Fabian Affolter | 6299182d1b | |
Fabian Affolter | a20fd8a10b | |
Fabian Affolter | 460107752a | |
Fabian Affolter | 6902359c7d | |
Fabian Affolter | 38b06b5ae4 | |
Fabian Affolter | bc4fe62df6 | |
Fabian Affolter | a53ce1de35 | |
Fabian Affolter | fdb84546c3 | |
Fabian Affolter | abfff76bd5 | |
Fabian Affolter | 0a7244fda0 | |
Fabian Affolter | b39c38a5b6 | |
Fabian Affolter | e7b14aa49f | |
Fabian Affolter | f820d0621c | |
Fabian Affolter | d1de0a4b83 | |
Fabian Affolter | b1ac8efc6a | |
Fabian Affolter | 48c499ef9c | |
Fabian Affolter | 7b3f909170 | |
adisbladis | 4aef3aa1e6 | |
Felix Singer | 187a5f88dc | |
Felix Singer | a803b32736 | |
adisbladis | cfb98374f3 | |
Felix Singer | ddd15dc2d9 | |
adisbladis | bff4c55f3a | |
Felix Singer | 19edccb0ee | |
Felix Singer | 0b11c8f47c | |
Felix Singer | 8391b2c6ab | |
R. Ryantm | 38cee3ef97 | |
Alex James | 4c1ccd8a9f | |
lassulus | b6951bf573 | |
adisbladis | 5dea854358 | |
R. Ryantm | 6800014aab | |
adisbladis | dc49349c84 | |
R. Ryantm | 4b0576b803 | |
adisbladis | f8b091d53f | |
R. Ryantm | a293bb51b9 | |
K900 | 1a9a1ad28b | |
K900 | 4adf3fe22f | |
K900 | ac648a7d26 | |
K900 | 2f4ac5c209 | |
adisbladis | e2dbb7f85f | |
adisbladis | c605bfd501 | |
R. Ryantm | e372d44587 | |
R. Ryantm | 9dfc64059a | |
R. Ryantm | 210d7aa90a | |
R. Ryantm | e681e17ad2 | |
R. Ryantm | 6496340434 | |
R. Ryantm | 3f971d9676 | |
Mario Rodas | 953623a895 | |
Mario Rodas | eb457ad6c5 | |
Mario Rodas | ce8a906462 | |
Mario Rodas | 44c8e316dd | |
Mario Rodas | da8e0b4e7c | |
Adam Stephens | 41bf8e94ed | |
Adam Stephens | 26425f3603 | |
R. Ryantm | 2a90fb9368 | |
Adam Stephens | a4778d97df | |
Adam Stephens | 811965cd34 | |
R. Ryantm | ab5000d98f | |
R. Ryantm | c16b28422d | |
Adam Stephens | 248dc21a54 | |
R. Ryantm | 568f9f82b4 | |
R. Ryantm | bbec1d0653 | |
R. Ryantm | 3af083202c | |
R. Ryantm | 19b7c482df | |
Mario Rodas | d5766175de | |
R. Ryantm | 6d98f51074 | |
Mario Rodas | 4816fa452a | |
R. Ryantm | 7c82bfc37b | |
R. Ryantm | 81aecc512a | |
R. Ryantm | 1555c2aa58 | |
R. Ryantm | 3506d24084 | |
R. Ryantm | 527a8747b1 | |
Robert Schütz | 9119e4c9de | |
Robert Schütz | 51c9db4e57 | |
Robert Schütz | 2264eda254 | |
Robert Schütz | aa7ffdd1e5 | |
R. Ryantm | 1e35087718 | |
github-actions[bot] | 506e353092 | |
R. Ryantm | 68c2b061fe | |
Thomas Gerbet | cd75d22750 | |
Thomas Gerbet | 19f3d9b959 | |
Fabian Affolter | 49f8dac931 | |
Fabian Affolter | 24296e63aa | |
Fabian Affolter | 64f5e1377f | |
Fabian Affolter | 44642361a3 | |
Fabian Affolter | 7fb003d220 | |
Naïm Favier | 201e6de9c7 | |
Fabian Affolter | 2119fb6f84 | |
Fabian Affolter | 993486dfc1 | |
Fabian Affolter | 215fb23aed | |
Fabian Affolter | bb0f16553f | |
Fabian Affolter | 5559282b10 | |
Will Fancher | df32b558b5 | |
Fabian Affolter | d7f0e55483 | |
R. Ryantm | e13959136e | |
R. Ryantm | 45cccd2843 | |
R. Ryantm | 38c7df605e | |
Anthony Roussel | fac20e14d7 | |
R. Ryantm | 2da0dd80a7 | |
Nick Cao | b84dc529d6 | |
Hraban Luyat | f35c7c4ce4 | |
R. Ryantm | 6e39d3bdbc | |
Anderson Torres | 4653fbade9 | |
Anderson Torres | 1861d88ec8 | |
R. Ryantm | 1fd8c79e1f | |
Anderson Torres | 90d9ce0e26 | |
Tom Herbers | e908a93cfa | |
Hraban Luyat | a74d6c775b | |
Fabian Affolter | 9ff9e8c536 | |
R. Ryantm | a08461255b | |
R. Ryantm | 1f51dae3cb | |
R. Ryantm | 08edcc8825 | |
R. Ryantm | c4d54403cb | |
R. Ryantm | 23dfaa9b0b | |
Markus Kowalewski | 927d6ca7e4 | |
Markus Kowalewski | 46149042db | |
Olivia Crain | de6412cadd | |
Quantenzitrone | fedd84da41 | |
Eli Flanagan | 693c7d91c9 | |
quantenzitrone | 7f308fc2f7 | |
R. Ryantm | 28526cb67f | |
R. Ryantm | 71bc983333 | |
Fabian Affolter | ae2196c3cf | |
David McFarland | f1be43a54e | |
David McFarland | 30fa2e0c61 | |
Vincenzo Mantova | 87216540ef | |
Vincenzo Mantova | 7ab4733846 | |
Vincenzo Mantova | 10989de86c | |
Alex Rice | 34405fbe2a | |
R. Ryantm | f9c9aeb54c | |
Naïm Favier | f3239b1422 | |
Fabian Affolter | fa592ac67c | |
Naïm Favier | da32320429 | |
Naïm Favier | 1f2da0697c | |
Weijia Wang | f8a72ab5b0 | |
Gaël Reyrol | 46f48e86a8 | |
Gaël Reyrol | 8873c496a2 | |
Jonas Heinrich | 4dc098872b | |
Manuel Bärenz | 1ec7dbf2f2 | |
Manuel Bärenz | d6c30ff33a | |
Fabian Affolter | d316ef5e40 | |
Fabian Affolter | 53a578ca8c | |
DaRacci | ac9dac7cce | |
DaRacci | 3a5eb38af0 | |
R. Ryantm | f44e1bfeff | |
R. Ryantm | 75201b5bea | |
R. Ryantm | 184dc964c8 | |
Mario Rodas | f4e439246e | |
R. Ryantm | 276d72f925 | |
R. Ryantm | 2cd3340315 | |
R. Ryantm | 4f3886e6c7 | |
R. Ryantm | 02914abf2e | |
R. Ryantm | d526d76fe7 | |
R. Ryantm | 41530e7cda | |
github-actions[bot] | d48c2529ec | |
R. Ryantm | f2a5fa82b5 | |
Sefa Eyeoglu | 0ac3540c12 | |
Jeremy Baxter | 9488d81a00 | |
Rebecca Turner | 149d01aec5 | |
Valentin Chassignol | ee29fc964d | |
Jeremy Baxter | e2c073711f | |
R. Ryantm | 08c8996686 | |
OPNA2608 | ee6c911964 | |
OPNA2608 | 4545b43775 | |
Christian Kögler | 68d8df822d | |
R. Ryantm | 807c7ab3b2 | |
OPNA2608 | b665e3629d | |
Lin Xianyi | b06108483e | |
Payas Relekar | 466b994af9 | |
Payas Relekar | 050f4664b5 | |
R. Ryantm | 1059471627 | |
R. Ryantm | e506b0a556 | |
R. Ryantm | ef9e1f7ac4 | |
Audrey Dutcher | 0157c5f328 | |
Jonas Heinrich | 5cf1df862d | |
Jonas Heinrich | 571322fee4 | |
R. Ryantm | a34255366a | |
R. Ryantm | fd8e13613e | |
R. Ryantm | 849b601c0d | |
北雁 Cryolitia | d061e281bf | |
hacker1024 | 7114357d69 | |
rewine | 47bfff92bf | |
rewine | 2d23affa03 | |
rewine | 5b405ca28c | |
rewine | bd98a8a7f1 | |
nat | 7eb422e7ee | |
OPNA2608 | a0cfe5691b | |
Payas Relekar | fa5fd9503c | |
illustris | fa33675f10 | |
Philip Taron | 546fc67242 | |
Philip Taron | ad920b32c2 | |
Philip Taron | 7d130cf752 | |
Philip Taron | d509d28475 | |
Philip Taron | f290c5901b | |
Alexis Hildebrandt | 9e7e5156e4 | |
github-actions[bot] | 8de0afeb83 | |
R. Ryantm | 92591a1431 | |
happysalada | 04359d4f30 | |
Vincenzo Mantova | ea6ca290e2 | |
Sandro Jäckel | 9508b2a580 | |
Jon Seager | 609376b084 | |
Jon Seager | 9e2f09922e | |
Jon Seager | 3c145a2c80 | |
Jon Seager | dd9089b957 | |
Jon Seager | c64a4b4425 | |
Jon Seager | 3582633bbb | |
Sean Buckley | 8e20e710fe | |
illustris | 1c24f2780e | |
Qusic | 5d01818055 | |
Qusic | 16a4cd7662 | |
Qusic | cbded80a66 | |
R. Ryantm | 4bf2fa379a | |
Jon Seager | bbc690a0df | |
Jon Seager | c8019ff09a | |
Jon Seager | af82eea33e | |
Pyxels | f18c020f0b | |
Assistant | bc71d9242d | |
R. Ryantm | 665a03f63f | |
github-actions[bot] | 7f599f6511 | |
Nathan Henrie | 5d94d229fa | |
K900 | bb70068f7b | |
Peder Bergebakken Sundt | d79b9ff762 | |
Sandro Jäckel | 853903e3cd | |
Jon Seager | f06e35c317 | |
Jon Seager | 4de7a19d2a | |
Naïm Favier | 13461228bb | |
Marc Scholten | fe098465ff | |
Naïm Favier | 95754369eb | |
Naïm Favier | 71bccf1ae3 | |
Naïm Favier | 3d3fe7da95 | |
Cezary Siwek | 29457a1b1d | |
Marc Scholten | 4144a84970 | |
Marc Scholten | 14d6740986 | |
Marc Scholten | 7332fdc7e6 | |
Naïm Favier | 9fd49998ec | |
Marc Scholten | feae2b1e69 | |
R. Ryantm | cebbe18290 | |
Mario Rodas | 8f19a5443f | |
Mario Rodas | 7940420063 | |
Weijia Wang | 9c961f0990 | |
R. Ryantm | 848565e6e1 | |
R. Ryantm | 6c4986b4ae | |
R. Ryantm | 5a76a733d5 | |
R. Ryantm | bdb2169df0 | |
github-actions[bot] | 39a71cf239 | |
pongo1231 | 489c200664 | |
Naïm Favier | f683c5c158 | |
Sandro Jäckel | f21355bf8e | |
hellwolf | 727df1e93f | |
Mahmoud Ayman | 23251e3e0c | |
ByteSudoer | 2d68215868 | |
Nick Cao | 3ed9a873da | |
R. Ryantm | a7266560fd | |
R. Ryantm | ecbcbee960 | |
R. Ryantm | f338e75e54 | |
Tobias Poschwatta | ee2b899ff7 | |
R. Ryantm | 54bd4c46e9 | |
Mario Rodas | 69d879dec3 | |
R. Ryantm | d4ac12d5c2 | |
R. Ryantm | 014105ee38 | |
Robert Schütz | 9eb38aa6f4 | |
github-actions[bot] | 3edac3b767 | |
Robert Scott | b5244c47aa | |
R. Ryantm | d347f29dc7 | |
Chuang Zhu | 86309c4124 | |
Martin Schwaighofer | 1c92ae9614 | |
Sandro Jäckel | 0fcb4ccfc2 | |
sternenseemann | c667f803b6 | |
R. Ryantm | f182ef3a4f | |
R. Ryantm | 8c7aa803da | |
Marc Scholten | 24ebdb1b06 | |
R. Ryantm | 93c638d405 | |
github-actions[bot] | 31a14cb69e | |
R. Ryantm | 960c144f16 | |
R. Ryantm | 768b6a7b81 | |
sternenseemann | c774347c25 | |
sternenseemann | b79cc961fe | |
R. Ryantm | 152f8696a6 | |
R. Ryantm | 9c967fef32 | |
Matthias Beyer | cff3d4db97 | |
Matthias Beyer | d41c24a011 | |
R. Ryantm | faede06ebb | |
R. Ryantm | b4e3816f54 | |
R. Ryantm | 341f75d8f3 | |
R. Ryantm | 1c9ad9d3eb | |
R. Ryantm | 3f4d0561db | |
github-actions[bot] | 39632d3d4c | |
R. Ryantm | c27a1d2fac | |
Robert James Hernandez | d2ccd0b5be | |
R. Ryantm | 009ccf2ce7 | |
R. Ryantm | f0991413e3 | |
Sebastian Neubauer | eca35aef77 | |
R. Ryantm | 3585b62658 | |
R. Ryantm | b594e2e328 | |
Anders Rytter Hansen | 0a310fc3c4 | |
R. Ryantm | 9e48631eb9 | |
R. Ryantm | d8bfc22089 | |
R. Ryantm | 51adef6fc8 | |
R. Ryantm | 9a3cd10ad1 | |
eldritch-cookie | 26e23b1899 | |
sternenseemann | ae679c40db | |
sternenseemann | 3bde60c0e3 | |
R. Ryantm | a351f3ecaa | |
Guanran Wang | 320550f17a | |
Guanran Wang | ac1be15e00 | |
Guanran Wang | 8871be39b1 | |
wackbyte | c5dc5619a2 | |
R. Ryantm | ed061a5072 | |
wackbyte | b3c4658491 | |
R. Ryantm | d5b4c50a2f | |
R. Ryantm | 2d9761c736 | |
R. Ryantm | 088d5a98c6 | |
github-actions[bot] | d899609c2a | |
R. Ryantm | 2f08b4959b | |
R. Ryantm | 8944725b1e | |
sternenseemann | 70a00dffc8 | |
sternenseemann | 20155eee75 | |
sternenseemann | b4d48b0f9e | |
R. Ryantm | 480989eab7 | |
Vladimír Čunát | f373ad52f1 | |
R. Ryantm | 32f2120b01 | |
R. Ryantm | 9cf31fa3d3 | |
github-actions[bot] | 2015f3cc71 | |
R. Ryantm | 4835f1ca1c | |
R. Ryantm | 8fbff694dc | |
maralorn | 7c668395e4 | |
maralorn | 1124b563cc | |
R. Ryantm | beff2b4c79 | |
R. Ryantm | 60b53db261 | |
R. Ryantm | e2c5d4d11c | |
Magnus Viernickel | 561eefecdb | |
Naïm Favier | e9e0bda36a | |
Naïm Favier | 908f4e0789 | |
adisbladis | 085c172348 | |
adisbladis | 5ef1bd952c | |
adisbladis | 1e2f8f2a84 | |
R. Ryantm | 46d4f4ece7 | |
github-actions[bot] | 05f9a72c0e | |
Naïm Favier | 262da6e97d | |
Naïm Favier | fae0418b04 | |
Naïm Favier | f553e52103 | |
t4ccer | 419d0caae4 | |
t4ccer | 8d66827a2d | |
t4ccer | eaf992fa45 | |
t4ccer | 73aeb19386 | |
t4ccer | 9a4adbf496 | |
Atemu | e8dcb2763c | |
Quantenzitrone | d974523917 | |
Naïm Favier | 2bc295aae8 | |
Marc Scholten | d5df84e399 | |
Naïm Favier | bf6cae8d5d | |
Naïm Favier | 18e22e8b13 | |
Naïm Favier | e1140ba526 | |
Naïm Favier | aa0c4ac441 | |
Naïm Favier | d85d0016ca | |
Marc Scholten | 0b9c5e20c9 | |
Naïm Favier | a86c5b3e6f | |
Naïm Favier | 871aaab0d4 | |
Naïm Favier | d43e030972 | |
Phillip Seeber | 27f7ae4989 | |
Naïm Favier | 5fc2fba044 | |
Marc Scholten | 01ed060596 | |
Naïm Favier | bdb6888208 | |
Naïm Favier | 630d52a2ac | |
Marc Scholten | fbd5aa08d9 | |
Naïm Favier | b0982d712b | |
Marc Scholten | feb6862d50 | |
github-actions[bot] | 11c9a7e4d3 | |
Naïm Favier | b2e89c6d53 | |
Naïm Favier | df9412397b | |
Naïm Favier | 6153db067a | |
ibbem | b9343ad4c6 | |
ibbem | 1642654453 | |
maralorn | d09feae3fd | |
maralorn | fc224fa32b | |
Naïm Favier | f0bced1070 | |
Marc Scholten | 4f1964f7c4 | |
Phillip Seeber | bdb4759727 | |
maralorn | 10c80b9934 | |
maralorn | c71f355699 | |
maralorn | 12ffb29d61 | |
yunfachi | 05901fbaec | |
yunfachi | a89f27b448 | |
maralorn | 8ad8233d93 | |
zowoq | 1db622deab | |
github-actions[bot] | 7ef9aa960c | |
maralorn | ace3508e45 | |
Daniel Rolls | cd8069c733 | |
maralorn | 5bf82773b6 | |
maralorn | 33614e9200 | |
maralorn | 53219eb55f | |
maralorn | c52b0f1c7c | |
maralorn | 013cdb0c0b | |
maralorn | e2ec64eff0 | |
maralorn | 476b362a5d | |
maralorn | dc423ccc93 | |
maralorn | cbd3884d20 | |
Peter Simons | fcf286b6fa | |
github-actions[bot] | 54379021e9 | |
maralorn | 4d47470ee0 | |
maralorn | 031a7e833d | |
maralorn | cba957590c | |
Someone Serge | 6cf1820d4d | |
Yueh-Shun Li | 05491696c5 | |
Yueh-Shun Li | 5010678492 | |
Nathan Henrie | 88312612cb | |
Daylin Morgan | 7e6f67dcb1 | |
R. Ryantm | cb176b27b1 | |
adisbladis | de402796a7 | |
adisbladis | 1656fe1bf6 | |
Florian Warzecha | 2da974bf8e | |
adisbladis | d77190aeaa | |
adisbladis | fb757e30fa | |
R. Ryantm | 0f55a96523 | |
Dan Callaghan | fb39dd6f72 | |
Savyasachee Jha | dd40326836 | |
Savyasachee Jha | 5701b288e2 | |
R. Ryantm | 42766a4606 |
|
@ -29,8 +29,8 @@
|
|||
* [Discourse Forum](https://discourse.nixos.org/)
|
||||
* [Matrix Chat](https://matrix.to/#/#community:nixos.org)
|
||||
* [NixOS Weekly](https://weekly.nixos.org/)
|
||||
* [Community-maintained wiki](https://nixos.wiki/)
|
||||
* [Community-maintained list of ways to get in touch](https://nixos.wiki/wiki/Get_In_Touch#Chat) (Discord, Telegram, IRC, etc.)
|
||||
* [Official wiki](https://wiki.nixos.org/)
|
||||
* [Community-maintained list of ways to get in touch](https://wiki.nixos.org/wiki/Get_In_Touch#Chat) (Discord, Telegram, IRC, etc.)
|
||||
|
||||
# Other Project Repositories
|
||||
|
||||
|
|
|
@ -56,22 +56,17 @@ Here is a simple package example. It is a pure Coq library, thus it depends on C
|
|||
{ lib, mkCoqDerivation, version ? null
|
||||
, coq, mathcomp, mathcomp-finmap, mathcomp-bigenough }:
|
||||
|
||||
let
|
||||
inherit (lib) licenses maintainers switch;
|
||||
inherit (lib.versions) range;
|
||||
in
|
||||
|
||||
mkCoqDerivation {
|
||||
/* namePrefix leads to e.g. `name = coq8.11-mathcomp1.11-multinomials-1.5.2` */
|
||||
namePrefix = [ "coq" "mathcomp" ];
|
||||
pname = "multinomials";
|
||||
owner = "math-comp";
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch [ coq.version mathcomp.version ] [
|
||||
{ cases = [ (range "8.7" "8.12") "1.11.0" ]; out = "1.5.2"; }
|
||||
{ cases = [ (range "8.7" "8.11") (range "1.8" "1.10") ]; out = "1.5.0"; }
|
||||
{ cases = [ (range "8.7" "8.10") (range "1.8" "1.10") ]; out = "1.4"; }
|
||||
{ cases = [ "8.6" (range "1.6" "1.7") ]; out = "1.1"; }
|
||||
defaultVersion = with lib.versions; lib.switch [ coq.version mathcomp.version ] [
|
||||
{ cases = [ (range "8.7" "8.12") (isEq "1.11") ]; out = "1.5.2"; }
|
||||
{ cases = [ (range "8.7" "8.11") (range "1.8" "1.10") ]; out = "1.5.0"; }
|
||||
{ cases = [ (range "8.7" "8.10") (range "1.8" "1.10") ]; out = "1.4"; }
|
||||
{ cases = [ (isEq "8.6") (range "1.6" "1.7") ]; out = "1.1"; }
|
||||
] null;
|
||||
release = {
|
||||
"1.5.2".sha256 = "15aspf3jfykp1xgsxf8knqkxv8aav2p39c2fyirw7pwsfbsv2c4s";
|
||||
|
@ -90,7 +85,7 @@ mkCoqDerivation {
|
|||
|
||||
meta = {
|
||||
description = "A Coq/SSReflect Library for Monoidal Rings and Multinomials";
|
||||
license = licenses.cecill-c;
|
||||
license = lib.licenses.cecill-c;
|
||||
};
|
||||
}
|
||||
```
|
||||
|
|
|
@ -46,7 +46,7 @@ If a particular lock file is present, it is a strong indication of which package
|
|||
It's better to try to use a Nix tool that understand the lock file.
|
||||
Using a different tool might give you hard to understand error because different packages have been installed.
|
||||
An example of problems that could arise can be found [here](https://github.com/NixOS/nixpkgs/pull/126629).
|
||||
Upstream use NPM, but this is an attempt to package it with `yarn2nix` (that uses yarn.lock).
|
||||
Upstream use npm, but this is an attempt to package it with `yarn2nix` (that uses yarn.lock).
|
||||
|
||||
Using a different tool forces to commit a lock file to the repository.
|
||||
Those files are fairly large, so when packaging for nixpkgs, this approach does not scale well.
|
||||
|
@ -54,8 +54,8 @@ Those files are fairly large, so when packaging for nixpkgs, this approach does
|
|||
Exceptions to this rule are:
|
||||
|
||||
- When you encounter one of the bugs from a Nix tool. In each of the tool specific instructions, known problems will be detailed. If you have a problem with a particular tool, then it's best to try another tool, even if this means you will have to recreate a lock file and commit it to nixpkgs. In general `yarn2nix` has less known problems and so a simple search in nixpkgs will reveal many yarn.lock files committed.
|
||||
- Some lock files contain particular version of a package that has been pulled off NPM for some reason. In that case, you can recreate upstream lock (by removing the original and `npm install`, `yarn`, ...) and commit this to nixpkgs.
|
||||
- The only tool that supports workspaces (a feature of NPM that helps manage sub-directories with different package.json from a single top level package.json) is `yarn2nix`. If upstream has workspaces you should try `yarn2nix`.
|
||||
- Some lock files contain particular version of a package that has been pulled off npm for some reason. In that case, you can recreate upstream lock (by removing the original and `npm install`, `yarn`, ...) and commit this to nixpkgs.
|
||||
- The only tool that supports workspaces (a feature of npm that helps manage sub-directories with different package.json from a single top level package.json) is `yarn2nix`. If upstream has workspaces you should try `yarn2nix`.
|
||||
|
||||
### Try to use upstream package.json {#javascript-upstream-package-json}
|
||||
|
||||
|
@ -97,12 +97,12 @@ Then when building the frontend you can just symlink the node_modules directory.
|
|||
|
||||
## Javascript packages inside nixpkgs {#javascript-packages-nixpkgs}
|
||||
|
||||
The [pkgs/development/node-packages](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/node-packages) folder contains a generated collection of [NPM packages](https://npmjs.com/) that can be installed with the Nix package manager.
|
||||
The [pkgs/development/node-packages](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/node-packages) folder contains a generated collection of [npm packages](https://npmjs.com/) that can be installed with the Nix package manager.
|
||||
|
||||
As a rule of thumb, the package set should only provide _end user_ software packages, such as command-line utilities.
|
||||
Libraries should only be added to the package set if there is a non-NPM package that requires it.
|
||||
Libraries should only be added to the package set if there is a non-npm package that requires it.
|
||||
|
||||
When it is desired to use NPM libraries in a development project, use the `node2nix` generator directly on the `package.json` configuration file of the project.
|
||||
When it is desired to use npm libraries in a development project, use the `node2nix` generator directly on the `package.json` configuration file of the project.
|
||||
|
||||
The package set provides support for the official stable Node.js versions.
|
||||
The latest stable LTS release in `nodePackages`, as well as the latest stable current release in `nodePackages_latest`.
|
||||
|
@ -127,7 +127,7 @@ For example, `dat` requires `node-gyp-build`, so we override its expression in [
|
|||
|
||||
### Adding and Updating Javascript packages in nixpkgs {#javascript-adding-or-updating-packages}
|
||||
|
||||
To add a package from NPM to nixpkgs:
|
||||
To add a package from npm to nixpkgs:
|
||||
|
||||
1. Modify [pkgs/development/node-packages/node-packages.json](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/node-packages/node-packages.json) to add, update or remove package entries to have it included in `nodePackages` and `nodePackages_latest`.
|
||||
2. Run the script:
|
||||
|
@ -154,7 +154,7 @@ To add a package from NPM to nixpkgs:
|
|||
|
||||
For more information about the generation process, consult the [README.md](https://github.com/svanderburg/node2nix) file of the `node2nix` tool.
|
||||
|
||||
To update NPM packages in nixpkgs, run the same `generate.sh` script:
|
||||
To update npm packages in nixpkgs, run the same `generate.sh` script:
|
||||
|
||||
```sh
|
||||
./pkgs/development/node-packages/generate.sh
|
||||
|
@ -307,8 +307,8 @@ See `node2nix` [docs](https://github.com/svanderburg/node2nix) for more info.
|
|||
#### Pitfalls {#javascript-node2nix-pitfalls}
|
||||
|
||||
- If upstream package.json does not have a "version" attribute, `node2nix` will crash. You will need to add it like shown in [the package.json section](#javascript-upstream-package-json).
|
||||
- `node2nix` has some [bugs](https://github.com/svanderburg/node2nix/issues/238) related to working with lock files from NPM distributed with `nodejs_16`.
|
||||
- `node2nix` does not like missing packages from NPM. If you see something like `Cannot resolve version: vue-loader-v16@undefined` then you might want to try another tool. The package might have been pulled off of NPM.
|
||||
- `node2nix` has some [bugs](https://github.com/svanderburg/node2nix/issues/238) related to working with lock files from npm distributed with `nodejs_16`.
|
||||
- `node2nix` does not like missing packages from npm. If you see something like `Cannot resolve version: vue-loader-v16@undefined` then you might want to try another tool. The package might have been pulled off of npm.
|
||||
|
||||
### yarn2nix {#javascript-yarn2nix}
|
||||
|
||||
|
|
|
@ -47,10 +47,6 @@ Release branch. Used to specify that a package is not going to receive updates t
|
|||
|
||||
The package’s homepage. Example: `https://www.gnu.org/software/hello/manual/`
|
||||
|
||||
### `repository` {#var-meta-repository}
|
||||
|
||||
A webpage where the package's source code can be viewed. `https` links are preferred if available. Automatically set to a default value if the package uses a `fetchFrom*` fetcher for its `src`. Example: `https://github.com/forthy42/gforth`
|
||||
|
||||
### `downloadPage` {#var-meta-downloadPage}
|
||||
|
||||
The page where a link to the current version can be found. Example: `https://ftp.gnu.org/gnu/hello/`
|
||||
|
|
|
@ -1784,6 +1784,13 @@
|
|||
fingerprint = "C919 E69E A7C0 E147 9E0F C26E 1EDA D0C6 70BD 062D";
|
||||
}];
|
||||
};
|
||||
assistant = {
|
||||
email = "assistant.moetron@gmail.com";
|
||||
github = "Assistant";
|
||||
githubId = 2748721;
|
||||
matrix = "@assistant:pygmalion.chat";
|
||||
name = "Assistant Moetron";
|
||||
};
|
||||
astavie = {
|
||||
email = "astavie@pm.me";
|
||||
github = "astavie";
|
||||
|
@ -2544,6 +2551,12 @@
|
|||
githubId = 34919100;
|
||||
name = "Brendan Hall";
|
||||
};
|
||||
bhankas = {
|
||||
email = "payas@relekar.org";
|
||||
github = "bhankas";
|
||||
githubId = 24254289;
|
||||
name = "Payas Relekar";
|
||||
};
|
||||
bhipple = {
|
||||
email = "bhipple@protonmail.com";
|
||||
github = "bhipple";
|
||||
|
@ -7641,6 +7654,12 @@
|
|||
githubId = 22756350;
|
||||
name = "Emile Hansmaennel";
|
||||
};
|
||||
HannahMR = {
|
||||
name = "Hannah Rosenberg";
|
||||
email = "hannah@velascommerce.com";
|
||||
github = "HannahMR";
|
||||
githubId = 9088467;
|
||||
};
|
||||
hansjoergschurr = {
|
||||
email = "commits@schurr.at";
|
||||
github = "hansjoergschurr";
|
||||
|
@ -10101,6 +10120,11 @@
|
|||
githubId = 15855440;
|
||||
name = "Keanu Ashwell";
|
||||
};
|
||||
katanallama = {
|
||||
github = "katanallama";
|
||||
githubId = 70604257;
|
||||
name = "katanallama";
|
||||
};
|
||||
katexochen = {
|
||||
github = "katexochen";
|
||||
githubId = 49727155;
|
||||
|
@ -13688,6 +13712,14 @@
|
|||
fingerprint = "9E6A 25F2 C1F2 9D76 ED00 1932 1261 173A 01E1 0298";
|
||||
}];
|
||||
};
|
||||
n8henrie = {
|
||||
name = "Nathan Henrie";
|
||||
github = "n8henrie";
|
||||
githubId = 1234956;
|
||||
"keys" = [{
|
||||
"fingerprint" = "F21A 6194 C9DB 9899 CD09 E24E 434B 2C14 B8C3 3422";
|
||||
}];
|
||||
};
|
||||
nadir-ishiguro = {
|
||||
github = "nadir-ishiguro";
|
||||
githubId = 23151917;
|
||||
|
@ -15108,12 +15140,6 @@
|
|||
githubId = 116740;
|
||||
name = "Paweł Pacana";
|
||||
};
|
||||
payas = {
|
||||
email = "relekarpayas@gmail.com";
|
||||
github = "bhankas";
|
||||
githubId = 24254289;
|
||||
name = "Payas Relekar";
|
||||
};
|
||||
pb- = {
|
||||
email = "pbaecher@gmail.com";
|
||||
github = "pb-";
|
||||
|
@ -16164,6 +16190,12 @@
|
|||
githubId = 39039420;
|
||||
name = "Quinn Dougherty";
|
||||
};
|
||||
qusic = {
|
||||
email = "qusicx@gmail.com";
|
||||
github = "Qusic";
|
||||
githubId = 2141853;
|
||||
name = "Bang Lee";
|
||||
};
|
||||
qyliss = {
|
||||
email = "hi@alyssa.is";
|
||||
github = "alyssais";
|
||||
|
@ -18714,6 +18746,12 @@
|
|||
githubId = 6362238;
|
||||
name = "Christoph Honal";
|
||||
};
|
||||
starkca90 = {
|
||||
email = "starkca90@gmail.com";
|
||||
github = "starkca90";
|
||||
githubId = 2060836;
|
||||
name = "Casey Stark";
|
||||
};
|
||||
starsep = {
|
||||
email = "nix@starsep.com";
|
||||
github = "starsep";
|
||||
|
@ -21285,6 +21323,15 @@
|
|||
githubId = 8378365;
|
||||
name = "P. R. d. O.";
|
||||
};
|
||||
wolfgangwalther = {
|
||||
name = "Wolfgang Walther";
|
||||
email = "walther@technowledgy.de";
|
||||
github = "wolfgangwalther";
|
||||
githubId = 9132420;
|
||||
keys = [{
|
||||
fingerprint = "F943 A0BC 720C 5BEF 73CD E02D B398 93FA 5F65 CAE1";
|
||||
}];
|
||||
};
|
||||
womfoo = {
|
||||
email = "kranium@gikos.net";
|
||||
github = "womfoo";
|
||||
|
|
|
@ -78,6 +78,7 @@ import Network.HTTP.Req (
|
|||
)
|
||||
import System.Directory (XdgDirectory (XdgCache), getXdgDirectory)
|
||||
import System.Environment (getArgs)
|
||||
import System.Exit (die)
|
||||
import System.Process (readProcess)
|
||||
import Prelude hiding (id)
|
||||
import Data.List (sortOn)
|
||||
|
@ -155,17 +156,20 @@ data Build = Build
|
|||
data HydraSlownessWorkaroundFlag = HydraSlownessWorkaround | NoHydraSlownessWorkaround
|
||||
data RequestLogsFlag = RequestLogs | NoRequestLogs
|
||||
|
||||
usage :: IO a
|
||||
usage = die "Usage: get-report [--slow] [EVAL-ID] | ping-maintainers | mark-broken-list [--no-request-logs] | eval-info"
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
args <- getArgs
|
||||
case args of
|
||||
["get-report", "--slow"] -> getBuildReports HydraSlownessWorkaround
|
||||
["get-report"] -> getBuildReports NoHydraSlownessWorkaround
|
||||
"get-report":"--slow":id -> getBuildReports HydraSlownessWorkaround id
|
||||
"get-report":id -> getBuildReports NoHydraSlownessWorkaround id
|
||||
["ping-maintainers"] -> printMaintainerPing
|
||||
["mark-broken-list", "--no-request-logs"] -> printMarkBrokenList NoRequestLogs
|
||||
["mark-broken-list"] -> printMarkBrokenList RequestLogs
|
||||
["eval-info"] -> printEvalInfo
|
||||
_ -> putStrLn "Usage: get-report [--slow] | ping-maintainers | mark-broken-list [--no-request-logs] | eval-info"
|
||||
_ -> usage
|
||||
|
||||
reportFileName :: IO FilePath
|
||||
reportFileName = getXdgDirectory XdgCache "haskell-updates-build-report.json"
|
||||
|
@ -173,23 +177,26 @@ reportFileName = getXdgDirectory XdgCache "haskell-updates-build-report.json"
|
|||
showT :: Show a => a -> Text
|
||||
showT = Text.pack . show
|
||||
|
||||
getBuildReports :: HydraSlownessWorkaroundFlag -> IO ()
|
||||
getBuildReports opt = runReq defaultHttpConfig do
|
||||
evalMay <- Seq.lookup 0 . evals <$> hydraJSONQuery mempty ["jobset", "nixpkgs", "haskell-updates", "evals"]
|
||||
eval@Eval{id} <- maybe (liftIO $ fail "No Evaluation found") pure evalMay
|
||||
getBuildReports :: HydraSlownessWorkaroundFlag -> [String] -> IO ()
|
||||
getBuildReports opt args = runReq defaultHttpConfig do
|
||||
eval@Eval{id} <- case args of
|
||||
[id] -> hydraJSONQuery mempty ["eval", Text.pack id]
|
||||
[] -> do
|
||||
evalMay <- Seq.lookup 0 . evals <$> hydraJSONQuery mempty ["jobset", "nixpkgs", "haskell-updates", "evals"]
|
||||
maybe (liftIO $ fail "No Evaluation found") pure evalMay
|
||||
_ -> liftIO usage
|
||||
liftIO . putStrLn $ "Fetching evaluation " <> show id <> " from Hydra. This might take a few minutes..."
|
||||
buildReports <- getEvalBuilds opt id
|
||||
buildReports <- getEvalBuilds opt eval
|
||||
liftIO do
|
||||
fileName <- reportFileName
|
||||
putStrLn $ "Finished fetching all builds from Hydra, saving report as " <> fileName
|
||||
now <- getCurrentTime
|
||||
encodeFile fileName (eval, now, buildReports)
|
||||
|
||||
getEvalBuilds :: HydraSlownessWorkaroundFlag -> Int -> Req (Seq Build)
|
||||
getEvalBuilds NoHydraSlownessWorkaround id =
|
||||
getEvalBuilds :: HydraSlownessWorkaroundFlag -> Eval -> Req (Seq Build)
|
||||
getEvalBuilds NoHydraSlownessWorkaround Eval{id} =
|
||||
hydraJSONQuery mempty ["eval", showT id, "builds"]
|
||||
getEvalBuilds HydraSlownessWorkaround id = do
|
||||
Eval{builds} <- hydraJSONQuery mempty [ "eval", showT id ]
|
||||
getEvalBuilds HydraSlownessWorkaround Eval{builds} = do
|
||||
forM builds $ \buildId -> do
|
||||
liftIO $ putStrLn $ "Querying build " <> show buildId
|
||||
hydraJSONQuery mempty [ "build", showT buildId ]
|
||||
|
|
|
@ -1,83 +0,0 @@
|
|||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -I nixpkgs=. -i bash -p delta jq perl
|
||||
|
||||
set -euo pipefail
|
||||
shopt -s inherit_errexit
|
||||
|
||||
cat <<'EOF'
|
||||
This script attempts to automatically convert option descriptions from
|
||||
DocBook syntax to markdown. Naturally this process is incomplete and
|
||||
imperfect, so any changes generated by this script MUST be reviewed.
|
||||
|
||||
Possible problems include: incorrectly replaced tags, badly formatted
|
||||
markdown, DocBook tags this script doesn't recognize remaining in the
|
||||
output and crashing the docs build, incorrect escaping of markdown
|
||||
metacharacters, incorrect unescaping of XML entities—and the list goes on.
|
||||
|
||||
Always review the generated changes!
|
||||
|
||||
Some known limitations:
|
||||
- Does not transform literalDocBook items
|
||||
- Replacements can occur in non-option code, such as string literals
|
||||
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
|
||||
build-options-json() {
|
||||
nix-build --no-out-link --expr '
|
||||
let
|
||||
sys = import ./nixos/default.nix {
|
||||
configuration = {};
|
||||
};
|
||||
in
|
||||
[
|
||||
sys.config.system.build.manual.optionsJSON
|
||||
]
|
||||
'
|
||||
}
|
||||
|
||||
|
||||
|
||||
git diff --quiet || {
|
||||
echo "Worktree is dirty. Please stash or commit first."
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "Building options.json ..."
|
||||
old_options=$(build-options-json)
|
||||
|
||||
echo "Applying replacements ..."
|
||||
perl -pi -e '
|
||||
BEGIN {
|
||||
undef $/;
|
||||
}
|
||||
|
||||
s,<literal>([^`]*?)</literal>,`$1`,smg;
|
||||
s,<replaceable>([^»]*?)</replaceable>,«$1»,smg;
|
||||
s,<filename>([^`]*?)</filename>,{file}`$1`,smg;
|
||||
s,<option>([^`]*?)</option>,{option}`$1`,smg;
|
||||
s,<code>([^`]*?)</code>,`$1`,smg;
|
||||
s,<command>([^`]*?)</command>,{command}`$1`,smg;
|
||||
s,<link xlink:href="(.+?)" ?/>,<$1>,smg;
|
||||
s,<link xlink:href="(.+?)">(.*?)</link>,[$2]($1),smg;
|
||||
s,<package>([^`]*?)</package>,`$1`,smg;
|
||||
s,<emphasis>([^*]*?)</emphasis>,*$1*,smg;
|
||||
s,<citerefentry>\s*
|
||||
<refentrytitle>\s*(.*?)\s*</refentrytitle>\s*
|
||||
<manvolnum>\s*(.*?)\s*</manvolnum>\s*
|
||||
</citerefentry>,{manpage}`$1($2)`,smgx;
|
||||
s,^( +description =),\1 lib.mdDoc,smg;
|
||||
' "$@"
|
||||
|
||||
echo "Building options.json again ..."
|
||||
new_options=$(build-options-json)
|
||||
|
||||
|
||||
! cmp -s {$old_options,$new_options}/share/doc/nixos/options.json && {
|
||||
diff -U10 \
|
||||
<(jq . <$old_options/share/doc/nixos/options.json) \
|
||||
<(jq . <$new_options/share/doc/nixos/options.json) \
|
||||
| delta
|
||||
}
|
|
@ -7,7 +7,7 @@ However, it is possible and not-uncommon to create [impermanent systems], whose
|
|||
`rootfs` is either a `tmpfs` or reset during boot. While NixOS itself supports
|
||||
this kind of configuration, special care needs to be taken.
|
||||
|
||||
[impermanent systems]: https://nixos.wiki/wiki/Impermanence
|
||||
[impermanent systems]: https://wiki.nixos.org/wiki/Impermanence
|
||||
|
||||
|
||||
```{=include=} sections
|
||||
|
|
|
@ -95,6 +95,8 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
|
|||
|
||||
- [hebbot](https://github.com/haecker-felix/hebbot), a Matrix bot to generate "This Week in X" like blog posts. Available as [services.hebbot](#opt-services.hebbot.enable).
|
||||
|
||||
- [Workout-tracker](https://github.com/jovandeginste/workout-tracker), a workout tracking web application for personal use.
|
||||
|
||||
- [Python Matter Server](https://github.com/home-assistant-libs/python-matter-server), a
|
||||
Matter Controller Server exposing websocket connections for use with other services, notably Home Assistant.
|
||||
Available as [services.matter-server](#opt-services.matter-server.enable)
|
||||
|
@ -136,10 +138,16 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
|||
|
||||
- [Scrutiny](https://github.com/AnalogJ/scrutiny), a S.M.A.R.T monitoring tool for hard disks with a web frontend.
|
||||
|
||||
- [davis](https://github.com/tchapi/davis), a simple CardDav and CalDav server inspired by Baïkal. Available as [services.davis]($opt-services-davis.enable).
|
||||
|
||||
- [systemd-lock-handler](https://git.sr.ht/~whynothugo/systemd-lock-handler/), a bridge between logind D-Bus events and systemd targets. Available as [services.systemd-lock-handler.enable](#opt-services.systemd-lock-handler.enable).
|
||||
|
||||
- [wastebin](https://github.com/matze/wastebin), a pastebin server written in rust. Available as [services.wastebin](#opt-services.wastebin.enable).
|
||||
|
||||
- [Mealie](https://nightly.mealie.io/), a self-hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in NuxtJS for a pleasant user experience for the whole family. Available as [services.mealie](#opt-services.mealie.enable)
|
||||
|
||||
- [Uni-Sync](https://github.com/EightB1ts/uni-sync), a synchronization tool for Lian Li Uni Controllers. Available as [hardware.uni-sync](#opt-hardware.uni-sync.enable)
|
||||
|
||||
## Backward Incompatibilities {#sec-release-24.05-incompatibilities}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
@ -203,6 +211,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
|||
|
||||
- `paperless`' `services.paperless.extraConfig` setting has been removed and converted to the freeform type and option named `services.paperless.settings`.
|
||||
|
||||
- `davfs2`' `services.davfs2.extraConfig` setting has been deprecated and converted to the freeform type option named `services.davfs2.settings` according to RFC42.
|
||||
|
||||
- `services.homepage-dashboard` now takes it's configuration using native Nix expressions, rather than dumping templated configurations into `/var/lib/homepage-dashboard` where they were previously managed manually. There are now new options which allow the configuration of bookmarks, services, widgets and custom CSS/JS natively in Nix.
|
||||
|
||||
- `hare` may now be cross-compiled. For that to work, however, `haredoc` needed to stop being built together with it. Thus, the latter is now its own package with the name of `haredoc`.
|
||||
|
@ -460,6 +470,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
|||
- `services.zfs.zed.enableMail` now uses the global `sendmail` wrapper defined by an email module
|
||||
(such as msmtp or Postfix). It no longer requires using a special ZFS build with email support.
|
||||
|
||||
- `castopod` has some migration actions to be taken in case of a S3 setup. Some new features may also need some manual migration actions. See [https://code.castopod.org/adaures/castopod/-/releases](https://code.castopod.org/adaures/castopod/-/releases) for more informations.
|
||||
|
||||
- `nextcloud-setup.service` no longer changes the group of each file & directory inside `/var/lib/nextcloud/{config,data,store-apps}` if one of these directories has the wrong owner group. This was part of transitioning the group used for `/var/lib/nextcloud`, but isn't necessary anymore.
|
||||
|
||||
- `services.kavita` now uses the freeform option `services.kavita.settings` for the application settings file.
|
||||
|
|
|
@ -1,8 +1,47 @@
|
|||
{ config, lib, pkgs }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
all
|
||||
attrByPath
|
||||
attrNames
|
||||
concatLists
|
||||
concatMap
|
||||
concatMapStrings
|
||||
concatStrings
|
||||
concatStringsSep
|
||||
const
|
||||
elem
|
||||
filter
|
||||
filterAttrs
|
||||
flip
|
||||
head
|
||||
isInt
|
||||
isList
|
||||
length
|
||||
makeBinPath
|
||||
makeSearchPathOutput
|
||||
mapAttrs
|
||||
mapAttrsToList
|
||||
mkAfter
|
||||
mkIf
|
||||
optional
|
||||
optionalAttrs
|
||||
optionalString
|
||||
range
|
||||
replaceStrings
|
||||
reverseList
|
||||
splitString
|
||||
stringLength
|
||||
stringToCharacters
|
||||
tail
|
||||
toIntBase10
|
||||
trace
|
||||
types
|
||||
;
|
||||
|
||||
inherit (lib.strings) toJSON;
|
||||
|
||||
cfg = config.systemd;
|
||||
lndir = "${pkgs.buildPackages.xorg.lndir}/bin/lndir";
|
||||
systemd = cfg.package;
|
||||
|
@ -10,7 +49,7 @@ in rec {
|
|||
|
||||
shellEscape = s: (replaceStrings [ "\\" ] [ "\\\\" ] s);
|
||||
|
||||
mkPathSafeName = lib.replaceStrings ["@" ":" "\\" "[" "]"] ["-" "-" "-" "" ""];
|
||||
mkPathSafeName = replaceStrings ["@" ":" "\\" "[" "]"] ["-" "-" "-" "" ""];
|
||||
|
||||
# a type for options that take a unit name
|
||||
unitNameType = types.strMatching "[a-zA-Z0-9@%:_.\\-]+[.](service|socket|device|mount|automount|swap|target|path|timer|scope|slice)";
|
||||
|
@ -133,7 +172,7 @@ in rec {
|
|||
)) attrs;
|
||||
errors = concatMap (c: c group defs) checks;
|
||||
in if errors == [] then true
|
||||
else builtins.trace (concatStringsSep "\n" errors) false;
|
||||
else trace (concatStringsSep "\n" errors) false;
|
||||
|
||||
toOption = x:
|
||||
if x == true then "true"
|
||||
|
@ -220,7 +259,7 @@ in rec {
|
|||
# upstream unit.
|
||||
for i in ${toString (mapAttrsToList
|
||||
(n: v: v.unit)
|
||||
(lib.filterAttrs (n: v: (attrByPath [ "overrideStrategy" ] "asDropinIfExists" v) == "asDropinIfExists") units))}; do
|
||||
(filterAttrs (n: v: (attrByPath [ "overrideStrategy" ] "asDropinIfExists" v) == "asDropinIfExists") units))}; do
|
||||
fn=$(basename $i/*)
|
||||
if [ -e $out/$fn ]; then
|
||||
if [ "$(readlink -f $i/$fn)" = /dev/null ]; then
|
||||
|
@ -243,7 +282,7 @@ in rec {
|
|||
# treated as drop-in file.
|
||||
for i in ${toString (mapAttrsToList
|
||||
(n: v: v.unit)
|
||||
(lib.filterAttrs (n: v: v ? overrideStrategy && v.overrideStrategy == "asDropin") units))}; do
|
||||
(filterAttrs (n: v: v ? overrideStrategy && v.overrideStrategy == "asDropin") units))}; do
|
||||
fn=$(basename $i/*)
|
||||
mkdir -p $out/$fn.d
|
||||
ln -s $i/$fn $out/$fn.d/overrides.conf
|
||||
|
@ -384,7 +423,7 @@ in rec {
|
|||
commonUnitText = def: lines: ''
|
||||
[Unit]
|
||||
${attrsToSection def.unitConfig}
|
||||
'' + lines + lib.optionalString (def.wantedBy != [ ]) ''
|
||||
'' + lines + optionalString (def.wantedBy != [ ]) ''
|
||||
|
||||
[Install]
|
||||
WantedBy=${concatStringsSep " " def.wantedBy}
|
||||
|
@ -406,7 +445,7 @@ in rec {
|
|||
'' + (let env = cfg.globalEnvironment // def.environment;
|
||||
in concatMapStrings (n:
|
||||
let s = optionalString (env.${n} != null)
|
||||
"Environment=${builtins.toJSON "${n}=${env.${n}}"}\n";
|
||||
"Environment=${toJSON "${n}=${env.${n}}"}\n";
|
||||
# systemd max line length is now 1MiB
|
||||
# https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
|
||||
in if stringLength s >= 1048576 then throw "The value of the environment variable ‘${n}’ in systemd service ‘${name}.service’ is too long." else s) (attrNames env))
|
||||
|
@ -475,13 +514,13 @@ in rec {
|
|||
# in that attrset are determined by the supplied format.
|
||||
definitions = directoryName: format: definitionAttrs:
|
||||
let
|
||||
listOfDefinitions = lib.mapAttrsToList
|
||||
listOfDefinitions = mapAttrsToList
|
||||
(name: format.generate "${name}.conf")
|
||||
definitionAttrs;
|
||||
in
|
||||
pkgs.runCommand directoryName { } ''
|
||||
mkdir -p $out
|
||||
${(lib.concatStringsSep "\n"
|
||||
${(concatStringsSep "\n"
|
||||
(map (pkg: "cp ${pkg} $out/${pkg.name}") listOfDefinitions)
|
||||
)}
|
||||
'';
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
{ lib, systemdUtils }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
concatMapStrings
|
||||
concatStringsSep
|
||||
flip
|
||||
optionalString
|
||||
;
|
||||
|
||||
attrsToSection = systemdUtils.lib.attrsToSection;
|
||||
commonMatchText = def:
|
||||
optionalString (def.matchConfig != { }) ''
|
||||
|
|
|
@ -1,47 +1,91 @@
|
|||
{ lib, systemdUtils, pkgs }:
|
||||
|
||||
with systemdUtils.lib;
|
||||
with systemdUtils.unitOptions;
|
||||
with lib;
|
||||
let
|
||||
inherit (systemdUtils.lib)
|
||||
automountConfig
|
||||
makeUnit
|
||||
mountConfig
|
||||
stage1ServiceConfig
|
||||
stage2ServiceConfig
|
||||
unitConfig
|
||||
;
|
||||
|
||||
inherit (systemdUtils.unitOptions)
|
||||
concreteUnitOptions
|
||||
stage1AutomountOptions
|
||||
stage1CommonUnitOptions
|
||||
stage1MountOptions
|
||||
stage1PathOptions
|
||||
stage1ServiceOptions
|
||||
stage1SliceOptions
|
||||
stage1SocketOptions
|
||||
stage1TimerOptions
|
||||
stage2AutomountOptions
|
||||
stage2CommonUnitOptions
|
||||
stage2MountOptions
|
||||
stage2PathOptions
|
||||
stage2ServiceOptions
|
||||
stage2SliceOptions
|
||||
stage2SocketOptions
|
||||
stage2TimerOptions
|
||||
;
|
||||
|
||||
inherit (lib)
|
||||
mdDoc
|
||||
mkDefault
|
||||
mkDerivedConfig
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
;
|
||||
|
||||
inherit (lib.types)
|
||||
attrsOf
|
||||
lines
|
||||
listOf
|
||||
nullOr
|
||||
path
|
||||
submodule
|
||||
;
|
||||
in
|
||||
|
||||
rec {
|
||||
units = with types;
|
||||
attrsOf (submodule ({ name, config, ... }: {
|
||||
options = concreteUnitOptions;
|
||||
config = { unit = mkDefault (systemdUtils.lib.makeUnit name config); };
|
||||
}));
|
||||
units = attrsOf (submodule ({ name, config, ... }: {
|
||||
options = concreteUnitOptions;
|
||||
config = { unit = mkDefault (makeUnit name config); };
|
||||
}));
|
||||
|
||||
services = with types; attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
|
||||
initrdServices = with types; attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
|
||||
services = attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
|
||||
initrdServices = attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
|
||||
|
||||
targets = with types; attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
|
||||
initrdTargets = with types; attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
|
||||
targets = attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
|
||||
initrdTargets = attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
|
||||
|
||||
sockets = with types; attrsOf (submodule [ stage2SocketOptions unitConfig ]);
|
||||
initrdSockets = with types; attrsOf (submodule [ stage1SocketOptions unitConfig ]);
|
||||
sockets = attrsOf (submodule [ stage2SocketOptions unitConfig ]);
|
||||
initrdSockets = attrsOf (submodule [ stage1SocketOptions unitConfig ]);
|
||||
|
||||
timers = with types; attrsOf (submodule [ stage2TimerOptions unitConfig ]);
|
||||
initrdTimers = with types; attrsOf (submodule [ stage1TimerOptions unitConfig ]);
|
||||
timers = attrsOf (submodule [ stage2TimerOptions unitConfig ]);
|
||||
initrdTimers = attrsOf (submodule [ stage1TimerOptions unitConfig ]);
|
||||
|
||||
paths = with types; attrsOf (submodule [ stage2PathOptions unitConfig ]);
|
||||
initrdPaths = with types; attrsOf (submodule [ stage1PathOptions unitConfig ]);
|
||||
paths = attrsOf (submodule [ stage2PathOptions unitConfig ]);
|
||||
initrdPaths = attrsOf (submodule [ stage1PathOptions unitConfig ]);
|
||||
|
||||
slices = with types; attrsOf (submodule [ stage2SliceOptions unitConfig ]);
|
||||
initrdSlices = with types; attrsOf (submodule [ stage1SliceOptions unitConfig ]);
|
||||
slices = attrsOf (submodule [ stage2SliceOptions unitConfig ]);
|
||||
initrdSlices = attrsOf (submodule [ stage1SliceOptions unitConfig ]);
|
||||
|
||||
mounts = with types; listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
|
||||
initrdMounts = with types; listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
|
||||
mounts = listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
|
||||
initrdMounts = listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
|
||||
|
||||
automounts = with types; listOf (submodule [ stage2AutomountOptions unitConfig automountConfig ]);
|
||||
initrdAutomounts = with types; attrsOf (submodule [ stage1AutomountOptions unitConfig automountConfig ]);
|
||||
automounts = listOf (submodule [ stage2AutomountOptions unitConfig automountConfig ]);
|
||||
initrdAutomounts = attrsOf (submodule [ stage1AutomountOptions unitConfig automountConfig ]);
|
||||
|
||||
initrdContents = types.attrsOf (types.submodule ({ config, options, name, ... }: {
|
||||
initrdContents = attrsOf (submodule ({ config, options, name, ... }: {
|
||||
options = {
|
||||
enable = mkEnableOption (lib.mdDoc "copying of this file and symlinking it") // { default = true; };
|
||||
enable = mkEnableOption (mdDoc "copying of this file and symlinking it") // { default = true; };
|
||||
|
||||
target = mkOption {
|
||||
type = types.path;
|
||||
description = lib.mdDoc ''
|
||||
type = path;
|
||||
description = mdDoc ''
|
||||
Path of the symlink.
|
||||
'';
|
||||
default = name;
|
||||
|
@ -49,13 +93,13 @@ rec {
|
|||
|
||||
text = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.lines;
|
||||
description = lib.mdDoc "Text of the file.";
|
||||
type = nullOr lines;
|
||||
description = mdDoc "Text of the file.";
|
||||
};
|
||||
|
||||
source = mkOption {
|
||||
type = types.path;
|
||||
description = lib.mdDoc "Path of the source file.";
|
||||
type = path;
|
||||
description = mdDoc "Path of the source file.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,9 +1,33 @@
|
|||
{ lib, systemdUtils }:
|
||||
|
||||
with systemdUtils.lib;
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (systemdUtils.lib)
|
||||
assertValueOneOf
|
||||
automountConfig
|
||||
checkUnitConfig
|
||||
makeJobScript
|
||||
mountConfig
|
||||
serviceConfig
|
||||
unitConfig
|
||||
unitNameType
|
||||
;
|
||||
|
||||
inherit (lib)
|
||||
any
|
||||
concatMap
|
||||
filterOverrides
|
||||
isList
|
||||
mdDoc
|
||||
mergeEqualOption
|
||||
mkIf
|
||||
mkMerge
|
||||
mkOption
|
||||
mkOptionType
|
||||
singleton
|
||||
toList
|
||||
types
|
||||
;
|
||||
|
||||
checkService = checkUnitConfig "Service" [
|
||||
(assertValueOneOf "Type" [
|
||||
"exec" "simple" "forking" "oneshot" "dbus" "notify" "notify-reload" "idle"
|
||||
|
@ -31,7 +55,7 @@ in rec {
|
|||
enable = mkOption {
|
||||
default = true;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If set to false, this unit will be a symlink to
|
||||
/dev/null. This is primarily useful to prevent specific
|
||||
template instances
|
||||
|
@ -45,7 +69,7 @@ in rec {
|
|||
overrideStrategy = mkOption {
|
||||
default = "asDropinIfExists";
|
||||
type = types.enum [ "asDropinIfExists" "asDropin" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Defines how unit configuration is provided for systemd:
|
||||
|
||||
`asDropinIfExists` creates a unit file when no unit file is provided by the package
|
||||
|
@ -61,7 +85,7 @@ in rec {
|
|||
requiredBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Units that require (i.e. depend on and need to go down with) this unit.
|
||||
As discussed in the `wantedBy` option description this also creates
|
||||
`.requires` symlinks automatically.
|
||||
|
@ -71,7 +95,7 @@ in rec {
|
|||
upheldBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Keep this unit running as long as the listed units are running. This is a continuously
|
||||
enforced version of wantedBy.
|
||||
'';
|
||||
|
@ -80,7 +104,7 @@ in rec {
|
|||
wantedBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Units that want (i.e. depend on) this unit. The default method for
|
||||
starting a unit by default at boot time is to set this option to
|
||||
`["multi-user.target"]` for system services. Likewise for user units
|
||||
|
@ -98,7 +122,7 @@ in rec {
|
|||
aliases = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc "Aliases of that unit.";
|
||||
description = mdDoc "Aliases of that unit.";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -108,12 +132,12 @@ in rec {
|
|||
text = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = lib.mdDoc "Text of this systemd unit.";
|
||||
description = mdDoc "Text of this systemd unit.";
|
||||
};
|
||||
|
||||
unit = mkOption {
|
||||
internal = true;
|
||||
description = lib.mdDoc "The generated unit.";
|
||||
description = mdDoc "The generated unit.";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -124,19 +148,19 @@ in rec {
|
|||
description = mkOption {
|
||||
default = "";
|
||||
type = types.singleLineStr;
|
||||
description = lib.mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||
description = mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||
};
|
||||
|
||||
documentation = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
description = lib.mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
description = mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
};
|
||||
|
||||
requires = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Start the specified units when this unit is started, and stop
|
||||
this unit when the specified units are stopped or fail.
|
||||
'';
|
||||
|
@ -145,7 +169,7 @@ in rec {
|
|||
wants = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Start the specified units when this unit is started.
|
||||
'';
|
||||
};
|
||||
|
@ -153,7 +177,7 @@ in rec {
|
|||
upholds = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Keeps the specified running while this unit is running. A continuous version of `wants`.
|
||||
'';
|
||||
};
|
||||
|
@ -161,7 +185,7 @@ in rec {
|
|||
after = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay this unit until they have started.
|
||||
'';
|
||||
|
@ -170,7 +194,7 @@ in rec {
|
|||
before = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay them until this unit has started.
|
||||
'';
|
||||
|
@ -179,7 +203,7 @@ in rec {
|
|||
bindsTo = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Like ‘requires’, but in addition, if the specified units
|
||||
unexpectedly disappear, this unit will be stopped as well.
|
||||
'';
|
||||
|
@ -188,7 +212,7 @@ in rec {
|
|||
partOf = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are stopped or restarted, then this
|
||||
unit is stopped or restarted as well.
|
||||
'';
|
||||
|
@ -197,7 +221,7 @@ in rec {
|
|||
conflicts = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started, then this unit is stopped
|
||||
and vice versa.
|
||||
'';
|
||||
|
@ -206,7 +230,7 @@ in rec {
|
|||
requisite = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Similar to requires. However if the units listed are not started,
|
||||
they will not be started and the transaction will fail.
|
||||
'';
|
||||
|
@ -216,7 +240,7 @@ in rec {
|
|||
default = {};
|
||||
example = { RequiresMountsFor = "/data"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Unit]` section of the unit. See
|
||||
{manpage}`systemd.unit(5)` for details.
|
||||
|
@ -226,7 +250,7 @@ in rec {
|
|||
onFailure = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "failed" state.
|
||||
'';
|
||||
|
@ -235,7 +259,7 @@ in rec {
|
|||
onSuccess = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "inactive" state.
|
||||
'';
|
||||
|
@ -243,7 +267,7 @@ in rec {
|
|||
|
||||
startLimitBurst = mkOption {
|
||||
type = types.int;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Configure unit start rate limiting. Units which are started
|
||||
more than startLimitBurst times within an interval time
|
||||
interval are not permitted to start any more.
|
||||
|
@ -252,7 +276,7 @@ in rec {
|
|||
|
||||
startLimitIntervalSec = mkOption {
|
||||
type = types.int;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Configure unit start rate limiting. Units which are started
|
||||
more than startLimitBurst times within an interval time
|
||||
interval are not permitted to start any more.
|
||||
|
@ -271,7 +295,7 @@ in rec {
|
|||
restartTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.unspecified;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
An arbitrary list of items such as derivations. If any item
|
||||
in the list changes between reconfigurations, the service will
|
||||
be restarted.
|
||||
|
@ -281,7 +305,7 @@ in rec {
|
|||
reloadTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
An arbitrary list of items such as derivations. If any item
|
||||
in the list changes between reconfigurations, the service will
|
||||
be reloaded. If anything but a reload trigger changes in the
|
||||
|
@ -299,13 +323,13 @@ in rec {
|
|||
default = {};
|
||||
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
|
||||
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
|
||||
description = lib.mdDoc "Environment variables passed to the service's processes.";
|
||||
description = mdDoc "Environment variables passed to the service's processes.";
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
default = [];
|
||||
type = with types; listOf (oneOf [ package str ]);
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Packages added to the service's {env}`PATH`
|
||||
environment variable. Both the {file}`bin`
|
||||
and {file}`sbin` subdirectories of each
|
||||
|
@ -319,7 +343,7 @@ in rec {
|
|||
{ RestartSec = 5;
|
||||
};
|
||||
type = types.addCheck (types.attrsOf unitOption) checkService;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Service]` section of the unit. See
|
||||
{manpage}`systemd.service(5)` for details.
|
||||
|
@ -329,14 +353,14 @@ in rec {
|
|||
script = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc "Shell commands executed as the service's main process.";
|
||||
description = mdDoc "Shell commands executed as the service's main process.";
|
||||
};
|
||||
|
||||
scriptArgs = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "%i";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Arguments passed to the main process script.
|
||||
Can contain specifiers (`%` placeholders expanded by systemd, see {manpage}`systemd.unit(5)`).
|
||||
'';
|
||||
|
@ -345,7 +369,7 @@ in rec {
|
|||
preStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed before the service's main process
|
||||
is started.
|
||||
'';
|
||||
|
@ -354,7 +378,7 @@ in rec {
|
|||
postStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed after the service's main process
|
||||
is started.
|
||||
'';
|
||||
|
@ -363,7 +387,7 @@ in rec {
|
|||
reload = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed when the service's main process
|
||||
is reloaded.
|
||||
'';
|
||||
|
@ -372,7 +396,7 @@ in rec {
|
|||
preStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed to stop the service.
|
||||
'';
|
||||
};
|
||||
|
@ -380,7 +404,7 @@ in rec {
|
|||
postStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed after the service's main process
|
||||
has exited.
|
||||
'';
|
||||
|
@ -389,7 +413,7 @@ in rec {
|
|||
jobScripts = mkOption {
|
||||
type = with types; coercedTo path singleton (listOf path);
|
||||
internal = true;
|
||||
description = lib.mdDoc "A list of all job script derivations of this unit.";
|
||||
description = mdDoc "A list of all job script derivations of this unit.";
|
||||
default = [];
|
||||
};
|
||||
|
||||
|
@ -434,7 +458,7 @@ in rec {
|
|||
restartIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Whether the service should be restarted during a NixOS
|
||||
configuration switch if its definition has changed.
|
||||
'';
|
||||
|
@ -443,7 +467,7 @@ in rec {
|
|||
reloadIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Whether the service should be reloaded during a NixOS
|
||||
configuration switch if its definition has changed. If
|
||||
enabled, the value of {option}`restartIfChanged` is
|
||||
|
@ -459,7 +483,7 @@ in rec {
|
|||
stopIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If set, a changed unit is restarted by calling
|
||||
{command}`systemctl stop` in the old configuration,
|
||||
then {command}`systemctl start` in the new one.
|
||||
|
@ -475,7 +499,7 @@ in rec {
|
|||
type = with types; either str (listOf str);
|
||||
default = [];
|
||||
example = "Sun 14:00:00";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Automatically start this unit at the given date/time, which
|
||||
must be in the format described in
|
||||
{manpage}`systemd.time(7)`. This is equivalent
|
||||
|
@ -502,7 +526,7 @@ in rec {
|
|||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
For each item in this list, a `ListenStream`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
|
@ -512,7 +536,7 @@ in rec {
|
|||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
For each item in this list, a `ListenDatagram`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
|
@ -522,7 +546,7 @@ in rec {
|
|||
default = {};
|
||||
example = { ListenStream = "/run/my-socket"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Socket]` section of the unit. See
|
||||
{manpage}`systemd.socket(5)` for details.
|
||||
|
@ -554,7 +578,7 @@ in rec {
|
|||
default = {};
|
||||
example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Timer]` section of the unit. See
|
||||
{manpage}`systemd.timer(5)` and
|
||||
|
@ -587,7 +611,7 @@ in rec {
|
|||
default = {};
|
||||
example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Path]` section of the unit. See
|
||||
{manpage}`systemd.path(5)` for details.
|
||||
|
@ -618,13 +642,13 @@ in rec {
|
|||
what = mkOption {
|
||||
example = "/dev/sda1";
|
||||
type = types.str;
|
||||
description = lib.mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
description = mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
};
|
||||
|
||||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
|
@ -634,21 +658,21 @@ in rec {
|
|||
default = "";
|
||||
example = "ext4";
|
||||
type = types.str;
|
||||
description = lib.mdDoc "File system type.";
|
||||
description = mdDoc "File system type.";
|
||||
};
|
||||
|
||||
options = mkOption {
|
||||
default = "";
|
||||
example = "noatime";
|
||||
type = types.commas;
|
||||
description = lib.mdDoc "Options used to mount the file system.";
|
||||
description = mdDoc "Options used to mount the file system.";
|
||||
};
|
||||
|
||||
mountConfig = mkOption {
|
||||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Mount]` section of the unit. See
|
||||
{manpage}`systemd.mount(5)` for details.
|
||||
|
@ -678,7 +702,7 @@ in rec {
|
|||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
|
@ -688,7 +712,7 @@ in rec {
|
|||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Automount]` section of the unit. See
|
||||
{manpage}`systemd.automount(5)` for details.
|
||||
|
@ -719,7 +743,7 @@ in rec {
|
|||
default = {};
|
||||
example = { MemoryMax = "2G"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Slice]` section of the unit. See
|
||||
{manpage}`systemd.slice(5)` for details.
|
||||
|
|
|
@ -1,9 +1,44 @@
|
|||
{ lib, config, pkgs }: with lib;
|
||||
{ lib, config, pkgs }:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
any
|
||||
attrNames
|
||||
concatMapStringsSep
|
||||
concatStringsSep
|
||||
elem
|
||||
escapeShellArg
|
||||
filter
|
||||
flatten
|
||||
getName
|
||||
hasPrefix
|
||||
hasSuffix
|
||||
imap0
|
||||
imap1
|
||||
isAttrs
|
||||
isDerivation
|
||||
isFloat
|
||||
isInt
|
||||
isList
|
||||
isPath
|
||||
isString
|
||||
listToAttrs
|
||||
nameValuePair
|
||||
optionalString
|
||||
removePrefix
|
||||
removeSuffix
|
||||
replaceStrings
|
||||
stringToCharacters
|
||||
types
|
||||
;
|
||||
|
||||
inherit (lib.strings) toJSON normalizePath escapeC;
|
||||
in
|
||||
|
||||
rec {
|
||||
|
||||
# Copy configuration files to avoid having the entire sources in the system closure
|
||||
copyFile = filePath: pkgs.runCommand (builtins.unsafeDiscardStringContext (builtins.baseNameOf filePath)) {} ''
|
||||
copyFile = filePath: pkgs.runCommand (builtins.unsafeDiscardStringContext (baseNameOf filePath)) {} ''
|
||||
cp ${filePath} $out
|
||||
'';
|
||||
|
||||
|
@ -46,11 +81,11 @@ rec {
|
|||
escapeSystemdPath = s: let
|
||||
replacePrefix = p: r: s: (if (hasPrefix p s) then r + (removePrefix p s) else s);
|
||||
trim = s: removeSuffix "/" (removePrefix "/" s);
|
||||
normalizedPath = strings.normalizePath s;
|
||||
normalizedPath = normalizePath s;
|
||||
in
|
||||
replaceStrings ["/"] ["-"]
|
||||
(replacePrefix "." (strings.escapeC ["."] ".")
|
||||
(strings.escapeC (stringToCharacters " !\"#$%&'()*+,;<=>=@[\\]^`{|}~-")
|
||||
(replacePrefix "." (escapeC ["."] ".")
|
||||
(escapeC (stringToCharacters " !\"#$%&'()*+,;<=>=@[\\]^`{|}~-")
|
||||
(if normalizedPath == "/" then normalizedPath else trim normalizedPath)));
|
||||
|
||||
# Quotes an argument for use in Exec* service lines.
|
||||
|
@ -62,12 +97,12 @@ rec {
|
|||
# substitution for the directive.
|
||||
escapeSystemdExecArg = arg:
|
||||
let
|
||||
s = if builtins.isPath arg then "${arg}"
|
||||
else if builtins.isString arg then arg
|
||||
else if builtins.isInt arg || builtins.isFloat arg || lib.isDerivation arg then toString arg
|
||||
s = if isPath arg then "${arg}"
|
||||
else if isString arg then arg
|
||||
else if isInt arg || isFloat arg || isDerivation arg then toString arg
|
||||
else throw "escapeSystemdExecArg only allows strings, paths, numbers and derivations";
|
||||
in
|
||||
replaceStrings [ "%" "$" ] [ "%%" "$$" ] (builtins.toJSON s);
|
||||
replaceStrings [ "%" "$" ] [ "%%" "$$" ] (toJSON s);
|
||||
|
||||
# Quotes a list of arguments into a single string for use in a Exec*
|
||||
# line.
|
||||
|
@ -197,7 +232,7 @@ rec {
|
|||
(attrNames secrets))
|
||||
+ "\n"
|
||||
+ "${pkgs.jq}/bin/jq >'${output}' "
|
||||
+ lib.escapeShellArg (stringOrDefault
|
||||
+ escapeShellArg (stringOrDefault
|
||||
(concatStringsSep
|
||||
" | "
|
||||
(imap1 (index: name: ''${name} = $ENV.secret${toString index}'')
|
||||
|
@ -205,7 +240,7 @@ rec {
|
|||
".")
|
||||
+ ''
|
||||
<<'EOF'
|
||||
${builtins.toJSON set}
|
||||
${toJSON set}
|
||||
EOF
|
||||
(( ! $inherit_errexit_enabled )) && shopt -u inherit_errexit
|
||||
'';
|
||||
|
@ -222,9 +257,9 @@ rec {
|
|||
*/
|
||||
removePackagesByName = packages: packagesToRemove:
|
||||
let
|
||||
namesToRemove = map lib.getName packagesToRemove;
|
||||
namesToRemove = map getName packagesToRemove;
|
||||
in
|
||||
lib.filter (x: !(builtins.elem (lib.getName x) namesToRemove)) packages;
|
||||
filter (x: !(elem (getName x) namesToRemove)) packages;
|
||||
|
||||
systemdUtils = {
|
||||
lib = import ./systemd-lib.nix { inherit lib config pkgs; };
|
||||
|
|
|
@ -0,0 +1,117 @@
|
|||
{ config
|
||||
, lib
|
||||
, pkgs
|
||||
, ...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.hardware.uni-sync;
|
||||
in
|
||||
{
|
||||
meta.maintainers = with maintainers; [ yunfachi ];
|
||||
|
||||
options.hardware.uni-sync = {
|
||||
enable = mkEnableOption (mdDoc "udev rules and software for Lian Li Uni Controllers");
|
||||
package = mkPackageOption pkgs "uni-sync" { };
|
||||
|
||||
devices = mkOption {
|
||||
default = [ ];
|
||||
example = literalExpression ''
|
||||
[
|
||||
{
|
||||
device_id = "VID:1111/PID:11111/SN:1111111111";
|
||||
sync_rgb = true;
|
||||
channels = [
|
||||
{
|
||||
mode = "PWM";
|
||||
}
|
||||
{
|
||||
mode = "Manual";
|
||||
speed = 100;
|
||||
}
|
||||
{
|
||||
mode = "Manual";
|
||||
speed = 54;
|
||||
}
|
||||
{
|
||||
mode = "Manual";
|
||||
speed = 0;
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
device_id = "VID:1010/PID:10101/SN:1010101010";
|
||||
sync_rgb = false;
|
||||
channels = [
|
||||
{
|
||||
mode = "Manual";
|
||||
speed = 0;
|
||||
}
|
||||
];
|
||||
}
|
||||
]
|
||||
'';
|
||||
description = mdDoc "List of controllers with their configurations.";
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
device_id = mkOption {
|
||||
type = types.str;
|
||||
example = "VID:1111/PID:11111/SN:1111111111";
|
||||
description = mdDoc "Unique device ID displayed at each startup.";
|
||||
};
|
||||
sync_rgb = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = mdDoc "Enable ARGB header sync.";
|
||||
};
|
||||
channels = mkOption {
|
||||
default = [ ];
|
||||
example = literalExpression ''
|
||||
[
|
||||
{
|
||||
mode = "PWM";
|
||||
}
|
||||
{
|
||||
mode = "Manual";
|
||||
speed = 100;
|
||||
}
|
||||
{
|
||||
mode = "Manual";
|
||||
speed = 54;
|
||||
}
|
||||
{
|
||||
mode = "Manual";
|
||||
speed = 0;
|
||||
}
|
||||
]
|
||||
'';
|
||||
description = mdDoc "List of channels connected to the controller.";
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
mode = mkOption {
|
||||
type = types.enum [ "Manual" "PWM" ];
|
||||
default = "Manual";
|
||||
example = "PWM";
|
||||
description = mdDoc "\"PWM\" to enable PWM sync. \"Manual\" to set speed.";
|
||||
};
|
||||
speed = mkOption {
|
||||
type = types.int;
|
||||
default = "50";
|
||||
example = "100";
|
||||
description = mdDoc "Fan speed as percentage (clamped between 0 and 100).";
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.etc."uni-sync/uni-sync.json".text = mkIf (cfg.devices != [ ]) (builtins.toJSON { configs = cfg.devices; });
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
services.udev.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
|
@ -98,6 +98,7 @@
|
|||
./hardware/tuxedo-keyboard.nix
|
||||
./hardware/ubertooth.nix
|
||||
./hardware/uinput.nix
|
||||
./hardware/uni-sync.nix
|
||||
./hardware/usb-modeswitch.nix
|
||||
./hardware/usb-storage.nix
|
||||
./hardware/video/amdgpu-pro.nix
|
||||
|
@ -341,7 +342,6 @@
|
|||
./services/amqp/rabbitmq.nix
|
||||
./services/audio/alsa.nix
|
||||
./services/audio/botamusique.nix
|
||||
./services/audio/castopod.nix
|
||||
./services/audio/gmediarender.nix
|
||||
./services/audio/gonic.nix
|
||||
./services/audio/goxlr-utility.nix
|
||||
|
@ -798,7 +798,9 @@
|
|||
./services/misc/transfer-sh.nix
|
||||
./services/misc/tzupdate.nix
|
||||
./services/misc/uhub.nix
|
||||
./services/misc/wastebin.nix
|
||||
./services/misc/weechat.nix
|
||||
./services/misc/workout-tracker.nix
|
||||
./services/misc/xmr-stak.nix
|
||||
./services/misc/xmrig.nix
|
||||
./services/misc/zoneminder.nix
|
||||
|
@ -1300,12 +1302,14 @@
|
|||
./services/web-apps/bookstack.nix
|
||||
./services/web-apps/c2fmzq-server.nix
|
||||
./services/web-apps/calibre-web.nix
|
||||
./services/web-apps/castopod.nix
|
||||
./services/web-apps/coder.nix
|
||||
./services/web-apps/changedetection-io.nix
|
||||
./services/web-apps/chatgpt-retrieval-plugin.nix
|
||||
./services/web-apps/cloudlog.nix
|
||||
./services/web-apps/code-server.nix
|
||||
./services/web-apps/convos.nix
|
||||
./services/web-apps/davis.nix
|
||||
./services/web-apps/dex.nix
|
||||
./services/web-apps/discourse.nix
|
||||
./services/web-apps/documize.nix
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.programs.partition-manager;
|
||||
in {
|
||||
meta.maintainers = [ lib.maintainers.oxalica ];
|
||||
|
||||
{
|
||||
meta.maintainers = [ maintainers.oxalica ];
|
||||
|
||||
###### interface
|
||||
options = {
|
||||
programs.partition-manager.enable = mkEnableOption (lib.mdDoc "KDE Partition Manager");
|
||||
programs.partition-manager = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "KDE Partition Manager");
|
||||
|
||||
package = lib.mkPackageOption pkgs [ "libsForQt5" "partitionmanager" ] { };
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf config.programs.partition-manager.enable {
|
||||
services.dbus.packages = [ pkgs.libsForQt5.kpmcore ];
|
||||
config = lib.mkIf config.programs.partition-manager.enable {
|
||||
services.dbus.packages = [ cfg.package.kpmcore ];
|
||||
# `kpmcore` need to be installed to pull in polkit actions.
|
||||
environment.systemPackages = [ pkgs.libsForQt5.kpmcore pkgs.libsForQt5.partitionmanager ];
|
||||
environment.systemPackages = [ cfg.package.kpmcore cfg.package ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -286,6 +286,7 @@ in {
|
|||
};
|
||||
|
||||
programs.kdeconnect.package = kdePackages.kdeconnect-kde;
|
||||
programs.partition-manager.package = kdePackages.partitionmanager;
|
||||
|
||||
# FIXME: ugly hack. See #292632 for details.
|
||||
system.userActivationScripts.rebuildSycoca = activationScript;
|
||||
|
|
|
@ -1578,7 +1578,9 @@ in {
|
|||
rm "${cfg.statePath}/config/gitlab-workhorse.json"
|
||||
'';
|
||||
ExecStart =
|
||||
"${cfg.packages.gitlab-workhorse}/bin/workhorse "
|
||||
"${cfg.packages.gitlab-workhorse}/bin/${
|
||||
optionalString (lib.versionAtLeast (lib.getVersion cfg.packages.gitlab-workhorse) "16.10") "gitlab-"
|
||||
}workhorse "
|
||||
+ "-listenUmask 0 "
|
||||
+ "-listenNetwork unix "
|
||||
+ "-listenAddr /run/gitlab/gitlab-workhorse.socket "
|
||||
|
|
|
@ -47,7 +47,7 @@ in
|
|||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
ExecStart = "${cfg.package}/bin/libreddit ${args}";
|
||||
ExecStart = "${lib.getExe cfg.package} ${args}";
|
||||
AmbientCapabilities = lib.mkIf (cfg.port < 1024) [ "CAP_NET_BIND_SERVICE" ];
|
||||
Restart = "on-failure";
|
||||
RestartSec = "2s";
|
||||
|
|
|
@ -10,16 +10,22 @@ let
|
|||
format = pkgs.formats.yaml {};
|
||||
bundle = "${cfg.package}/share/redmine/bin/bundle";
|
||||
|
||||
databaseYml = pkgs.writeText "database.yml" ''
|
||||
production:
|
||||
adapter: ${cfg.database.type}
|
||||
database: ${cfg.database.name}
|
||||
host: ${if (cfg.database.type == "postgresql" && cfg.database.socket != null) then cfg.database.socket else cfg.database.host}
|
||||
port: ${toString cfg.database.port}
|
||||
username: ${cfg.database.user}
|
||||
password: #dbpass#
|
||||
${optionalString (cfg.database.type == "mysql2" && cfg.database.socket != null) "socket: ${cfg.database.socket}"}
|
||||
'';
|
||||
databaseSettings = {
|
||||
production = {
|
||||
adapter = cfg.database.type;
|
||||
database = if cfg.database.type == "sqlite3" then "${cfg.stateDir}/database.sqlite3" else cfg.database.name;
|
||||
} // optionalAttrs (cfg.database.type != "sqlite3") {
|
||||
host = if (cfg.database.type == "postgresql" && cfg.database.socket != null) then cfg.database.socket else cfg.database.host;
|
||||
port = cfg.database.port;
|
||||
username = cfg.database.user;
|
||||
} // optionalAttrs (cfg.database.type != "sqlite3" && cfg.database.passwordFile != null) {
|
||||
password = "#dbpass#";
|
||||
} // optionalAttrs (cfg.database.type == "mysql2" && cfg.database.socket != null) {
|
||||
socket = cfg.database.socket;
|
||||
};
|
||||
};
|
||||
|
||||
databaseYml = format.generate "database.yml" databaseSettings;
|
||||
|
||||
configurationYml = format.generate "configuration.yml" cfg.settings;
|
||||
additionalEnvironment = pkgs.writeText "additional_environment.rb" cfg.extraEnv;
|
||||
|
@ -145,7 +151,7 @@ in
|
|||
|
||||
database = {
|
||||
type = mkOption {
|
||||
type = types.enum [ "mysql2" "postgresql" ];
|
||||
type = types.enum [ "mysql2" "postgresql" "sqlite3" ];
|
||||
example = "postgresql";
|
||||
default = "mysql2";
|
||||
description = lib.mdDoc "Database engine to use.";
|
||||
|
@ -261,7 +267,7 @@ in
|
|||
config = mkIf cfg.enable {
|
||||
|
||||
assertions = [
|
||||
{ assertion = cfg.database.passwordFile != null || cfg.database.socket != null;
|
||||
{ assertion = cfg.database.type != "sqlite3" -> cfg.database.passwordFile != null || cfg.database.socket != null;
|
||||
message = "one of services.redmine.database.socket or services.redmine.database.passwordFile must be set";
|
||||
}
|
||||
{ assertion = cfg.database.createLocally -> cfg.database.user == cfg.user;
|
||||
|
@ -270,7 +276,7 @@ in
|
|||
{ assertion = pgsqlLocal -> cfg.database.user == cfg.database.name;
|
||||
message = "services.redmine.database.user and services.redmine.database.name must be the same when using a local postgresql database";
|
||||
}
|
||||
{ assertion = cfg.database.createLocally -> cfg.database.socket != null;
|
||||
{ assertion = cfg.database.createLocally -> cfg.database.type != "sqlite3" && cfg.database.socket != null;
|
||||
message = "services.redmine.database.socket must be set if services.redmine.database.createLocally is set to true";
|
||||
}
|
||||
{ assertion = cfg.database.createLocally -> cfg.database.host == "localhost";
|
||||
|
@ -395,9 +401,13 @@ in
|
|||
|
||||
|
||||
# handle database.passwordFile & permissions
|
||||
DBPASS=${optionalString (cfg.database.passwordFile != null) "$(head -n1 ${cfg.database.passwordFile})"}
|
||||
cp -f ${databaseYml} "${cfg.stateDir}/config/database.yml"
|
||||
sed -e "s,#dbpass#,$DBPASS,g" -i "${cfg.stateDir}/config/database.yml"
|
||||
|
||||
${optionalString ((cfg.database.type != "sqlite3") && (cfg.database.passwordFile != null)) ''
|
||||
DBPASS="$(head -n1 ${cfg.database.passwordFile})"
|
||||
sed -e "s,#dbpass#,$DBPASS,g" -i "${cfg.stateDir}/config/database.yml"
|
||||
''}
|
||||
|
||||
chmod 440 "${cfg.stateDir}/config/database.yml"
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,158 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.wastebin;
|
||||
inherit (lib)
|
||||
mkEnableOption mkPackageOption mkIf mkOption
|
||||
types mapAttrs isBool getExe boolToString optionalAttrs;
|
||||
in
|
||||
{
|
||||
|
||||
options.services.wastebin = {
|
||||
|
||||
enable = mkEnableOption "Wastenbin pastebin service";
|
||||
|
||||
package = mkPackageOption pkgs "wastebin" { };
|
||||
|
||||
stateDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/wastebin";
|
||||
description = "State directory of the daemon.";
|
||||
};
|
||||
|
||||
secretFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/run/secrets/wastebin.env";
|
||||
description = ''
|
||||
Path to file containing sensitive environment variables.
|
||||
Some variables that can be considered secrets are:
|
||||
|
||||
- WASTEBIN_PASSWORD_SALT:
|
||||
salt used to hash user passwords used for encrypting pastes.
|
||||
|
||||
- WASTEBIN_SIGNING_KEY:
|
||||
sets the key to sign cookies. If not set, a random key will be
|
||||
generated which means cookies will become invalid after restarts and
|
||||
paste creators will not be able to delete their pastes anymore.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
|
||||
description = ''
|
||||
Additional configuration for wastebin, see
|
||||
<https://github.com/matze/wastebin#usage> for supported values.
|
||||
For secrets use secretFile option instead.
|
||||
'';
|
||||
|
||||
type = types.submodule {
|
||||
|
||||
freeformType = with types; attrsOf (oneOf [ bool int str ]);
|
||||
|
||||
options = {
|
||||
|
||||
WASTEBIN_ADDRESS_PORT = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0:8088";
|
||||
description = "Address and port to bind to";
|
||||
};
|
||||
|
||||
WASTEBIN_BASE_URL = mkOption {
|
||||
default = "http://localhost";
|
||||
example = "https://myhost.tld";
|
||||
type = types.str;
|
||||
description = ''
|
||||
Base URL for the QR code display. If not set, the user agent's Host
|
||||
header field is used as an approximation.
|
||||
'';
|
||||
};
|
||||
|
||||
WASTEBIN_CACHE_SIZE = mkOption {
|
||||
default = 128;
|
||||
type = types.int;
|
||||
description = "Number of rendered syntax highlight items to cache. Can be disabled by setting to 0.";
|
||||
};
|
||||
|
||||
WASTEBIN_DATABASE_PATH = mkOption {
|
||||
default = "/var/lib/wastebin/sqlite3.db"; # TODO make this default to stateDir/sqlite3.db
|
||||
type = types.str;
|
||||
description = "Path to the sqlite3 database file. If not set, an in-memory database is used.";
|
||||
};
|
||||
|
||||
WASTEBIN_HTTP_TIMEOUT = mkOption {
|
||||
default = 5;
|
||||
type = types.int;
|
||||
description = "Maximum number of seconds a request can be processed until wastebin responds with 408";
|
||||
};
|
||||
|
||||
WASTEBIN_MAX_BODY_SIZE = mkOption {
|
||||
default = 1024;
|
||||
type = types.int;
|
||||
description = "Number of bytes to accept for POST requests";
|
||||
};
|
||||
|
||||
WASTEBIN_TITLE = mkOption {
|
||||
default = "wastebin";
|
||||
type = types.str;
|
||||
description = "Overrides the HTML page title";
|
||||
};
|
||||
|
||||
RUST_LOG = mkOption {
|
||||
default = "info";
|
||||
type = types.str;
|
||||
description =
|
||||
''
|
||||
Influences logging. Besides the typical trace, debug, info etc.
|
||||
keys, you can also set the tower_http key to some log level to get
|
||||
additional information request and response logs.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
default = { };
|
||||
|
||||
example = {
|
||||
WASTEBIN_TITLE = "My awesome pastebin";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable
|
||||
{
|
||||
systemd.services.wastebin = {
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = mapAttrs (_: v: if isBool v then boolToString v else toString v) cfg.settings;
|
||||
serviceConfig = {
|
||||
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
|
||||
DevicePolicy = "closed";
|
||||
DynamicUser = true;
|
||||
ExecStart = "${getExe cfg.package}";
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
PrivateDevices = true;
|
||||
PrivateUsers = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
SystemCallArchitectures = [ "native" ];
|
||||
SystemCallFilter = [ "@system-service" ];
|
||||
StateDirectory = baseNameOf cfg.stateDir;
|
||||
ReadWritePaths = cfg.stateDir;
|
||||
} // optionalAttrs (cfg.secretFile != null) {
|
||||
EnvironmentFile = cfg.secretFile;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ pinpox ];
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) types;
|
||||
cfg = config.services.workout-tracker;
|
||||
stateDir = "workout-tracker";
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.workout-tracker = {
|
||||
enable = lib.mkEnableOption "workout tracking web application for personal use (or family, friends), geared towards running and other GPX-based activities";
|
||||
|
||||
package = lib.mkPackageOption pkgs "workout-tracker" { };
|
||||
|
||||
address = lib.mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = "Web interface address.";
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = types.port;
|
||||
default = 8080;
|
||||
description = "Web interface port.";
|
||||
};
|
||||
|
||||
environmentFile = lib.mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/run/keys/workout-tracker.env";
|
||||
description = ''
|
||||
An environment file as defined in {manpage}`systemd.exec(5)`.
|
||||
|
||||
Secrets like `WT_JWT_ENCRYPTION_KEY` may be passed to the service without adding them
|
||||
to the world-readable Nix store.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
|
||||
default = { };
|
||||
description = ''
|
||||
Extra config options.
|
||||
'';
|
||||
example = {
|
||||
WT_LOGGING = "true";
|
||||
WT_DEBUG = "false";
|
||||
WT_DATABASE_DRIVER = "sqlite";
|
||||
WT_DSN = "./database.db";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.workout-tracker = {
|
||||
description = "A workout tracking web application for personal use (or family, friends), geared towards running and other GPX-based activities";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = {
|
||||
WT_BIND = "${cfg.address}:${toString cfg.port}";
|
||||
WT_DATABASE_DRIVER = "sqlite";
|
||||
WT_DSN = "./database.db";
|
||||
} // cfg.settings;
|
||||
serviceConfig = {
|
||||
ExecStart = lib.getExe cfg.package;
|
||||
DynamicUser = true;
|
||||
StateDirectory = stateDir;
|
||||
WorkingDirectory = "%S/${stateDir}";
|
||||
Restart = "always";
|
||||
EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ bhankas ];
|
||||
}
|
|
@ -3,14 +3,22 @@
|
|||
with lib;
|
||||
|
||||
let
|
||||
toStr = value:
|
||||
if true == value then "yes"
|
||||
else if false == value then "no"
|
||||
else toString value;
|
||||
|
||||
cfg = config.services.davfs2;
|
||||
cfgFile = pkgs.writeText "davfs2.conf" ''
|
||||
dav_user ${cfg.davUser}
|
||||
dav_group ${cfg.davGroup}
|
||||
format = pkgs.formats.toml { };
|
||||
configFile = let
|
||||
settings = mapAttrsToList (n: v: "${n} = ${toStr v}") cfg.settings;
|
||||
in pkgs.writeText "davfs2.conf" ''
|
||||
${concatStringsSep "\n" settings}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
in
|
||||
{
|
||||
|
||||
options.services.davfs2 = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
|
@ -49,13 +57,46 @@ in
|
|||
'';
|
||||
description = lib.mdDoc ''
|
||||
Extra lines appended to the configuration of davfs2.
|
||||
See {manpage}`davfs2.conf(5)` for available settings.
|
||||
|
||||
**Note**: Please pass structured settings via
|
||||
{option}`settings` instead, this option
|
||||
will get deprecated in the future.
|
||||
'' ;
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.submodule {
|
||||
freeformType = format.type;
|
||||
};
|
||||
default = {};
|
||||
example = literalExpression ''
|
||||
{
|
||||
kernel_fs = "coda";
|
||||
proxy = "foo.bar:8080";
|
||||
use_locks = 0;
|
||||
}
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
Extra settings appended to the configuration of davfs2.
|
||||
See {manpage}`davfs2.conf(5)` for available settings.
|
||||
'' ;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
warnings = lib.optional (cfg.extraConfig != null) ''
|
||||
services.davfs2.extraConfig will be deprecated in future releases, please use the settings option now.
|
||||
'';
|
||||
|
||||
environment.systemPackages = [ pkgs.davfs2 ];
|
||||
environment.etc."davfs2/davfs2.conf".source = cfgFile;
|
||||
environment.etc."davfs2/davfs2.conf".source = configFile;
|
||||
|
||||
services.davfs2.settings = {
|
||||
dav_user = cfg.davUser;
|
||||
dav_group = cfg.davGroup;
|
||||
};
|
||||
|
||||
users.groups = optionalAttrs (cfg.davGroup == "davfs2") {
|
||||
davfs2.gid = config.ids.gids.davfs2;
|
||||
|
|
|
@ -113,25 +113,6 @@ in
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.nfs.extraConfig = ''
|
||||
[nfsd]
|
||||
threads=${toString cfg.nproc}
|
||||
${optionalString (cfg.hostName != null) "host=${cfg.hostName}"}
|
||||
${cfg.extraNfsdConfig}
|
||||
|
||||
[mountd]
|
||||
${optionalString (cfg.mountdPort != null) "port=${toString cfg.mountdPort}"}
|
||||
|
||||
[statd]
|
||||
${optionalString (cfg.statdPort != null) "port=${toString cfg.statdPort}"}
|
||||
|
||||
[lockd]
|
||||
${optionalString (cfg.lockdPort != null) ''
|
||||
port=${toString cfg.lockdPort}
|
||||
udp-port=${toString cfg.lockdPort}
|
||||
''}
|
||||
'';
|
||||
|
||||
services.rpcbind.enable = true;
|
||||
|
||||
boot.supportedFilesystems = [ "nfs" ]; # needed for statd and idmapd
|
||||
|
|
|
@ -4,6 +4,7 @@ Castopod is an open-source hosting platform made for podcasters who want to enga
|
|||
|
||||
## Quickstart {#module-services-castopod-quickstart}
|
||||
|
||||
Configure ACME (https://nixos.org/manual/nixos/unstable/#module-security-acme).
|
||||
Use the following configuration to start a public instance of Castopod on `castopod.example.com` domain:
|
||||
|
||||
```nix
|
|
@ -4,7 +4,6 @@ let
|
|||
fpm = config.services.phpfpm.pools.castopod;
|
||||
|
||||
user = "castopod";
|
||||
stateDirectory = "/var/lib/castopod";
|
||||
|
||||
# https://docs.castopod.org/getting-started/install.html#requirements
|
||||
phpPackage = pkgs.php.withExtensions ({ enabled, all }: with all; [
|
||||
|
@ -29,6 +28,15 @@ in
|
|||
defaultText = lib.literalMD "pkgs.castopod";
|
||||
description = lib.mdDoc "Which Castopod package to use.";
|
||||
};
|
||||
dataDir = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "/var/lib/castopod";
|
||||
description = lib.mdDoc ''
|
||||
The path where castopod stores all data. This path must be in sync
|
||||
with the castopod package (where it is hardcoded during the build in
|
||||
accordance with its own `dataDir` argument).
|
||||
'';
|
||||
};
|
||||
database = {
|
||||
createLocally = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
|
@ -59,6 +67,8 @@ in
|
|||
description = lib.mdDoc ''
|
||||
A file containing the password corresponding to
|
||||
[](#opt-services.castopod.database.user).
|
||||
|
||||
This file is loaded using systemd LoadCredentials.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -85,6 +95,8 @@ in
|
|||
Environment file to inject e.g. secrets into the configuration.
|
||||
See [](https://code.castopod.org/adaures/castopod/-/blob/main/.env.example)
|
||||
for available environment variables.
|
||||
|
||||
This file is loaded using systemd LoadCredentials.
|
||||
'';
|
||||
};
|
||||
configureNginx = lib.mkOption {
|
||||
|
@ -111,6 +123,19 @@ in
|
|||
Options for Castopod's PHP pool. See the documentation on `php-fpm.conf` for details on configuration directives.
|
||||
'';
|
||||
};
|
||||
maxUploadSize = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "512M";
|
||||
description = lib.mdDoc ''
|
||||
Maximum supported size for a file upload in. Maximum HTTP body
|
||||
size is set to this value for nginx and PHP (because castopod doesn't
|
||||
support chunked uploads yet:
|
||||
https://code.castopod.org/adaures/castopod/-/issues/330).
|
||||
|
||||
Note, that practical upload size limit is smaller. For example, with
|
||||
512 MiB setting - around 500 MiB is possible.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -120,13 +145,13 @@ in
|
|||
sslEnabled = with config.services.nginx.virtualHosts.${cfg.localDomain}; addSSL || forceSSL || onlySSL || enableACME || useACMEHost != null;
|
||||
baseURL = "http${lib.optionalString sslEnabled "s"}://${cfg.localDomain}";
|
||||
in
|
||||
lib.mapAttrs (name: lib.mkDefault) {
|
||||
lib.mapAttrs (_: lib.mkDefault) {
|
||||
"app.forceGlobalSecureRequests" = sslEnabled;
|
||||
"app.baseURL" = baseURL;
|
||||
|
||||
"media.baseURL" = "/";
|
||||
"media.baseURL" = baseURL;
|
||||
"media.root" = "media";
|
||||
"media.storage" = stateDirectory;
|
||||
"media.storage" = cfg.dataDir;
|
||||
|
||||
"admin.gateway" = "admin";
|
||||
"auth.gateway" = "auth";
|
||||
|
@ -142,13 +167,13 @@ in
|
|||
services.phpfpm.pools.castopod = {
|
||||
inherit user;
|
||||
group = config.services.nginx.group;
|
||||
phpPackage = phpPackage;
|
||||
inherit phpPackage;
|
||||
phpOptions = ''
|
||||
# https://code.castopod.org/adaures/castopod/-/blob/main/docker/production/app/uploads.ini
|
||||
# https://code.castopod.org/adaures/castopod/-/blob/develop/docker/production/common/uploads.template.ini
|
||||
file_uploads = On
|
||||
memory_limit = 512M
|
||||
upload_max_filesize = 500M
|
||||
post_max_size = 512M
|
||||
upload_max_filesize = ${cfg.maxUploadSize}
|
||||
post_max_size = ${cfg.maxUploadSize}
|
||||
max_execution_time = 300
|
||||
max_input_time = 300
|
||||
'';
|
||||
|
@ -165,45 +190,50 @@ in
|
|||
path = [ pkgs.openssl phpPackage ];
|
||||
script =
|
||||
let
|
||||
envFile = "${stateDirectory}/.env";
|
||||
envFile = "${cfg.dataDir}/.env";
|
||||
media = "${cfg.settings."media.storage"}/${cfg.settings."media.root"}";
|
||||
in
|
||||
''
|
||||
mkdir -p ${stateDirectory}/writable/{cache,logs,session,temp,uploads}
|
||||
mkdir -p ${cfg.dataDir}/writable/{cache,logs,session,temp,uploads}
|
||||
|
||||
if [ ! -d ${lib.escapeShellArg media} ]; then
|
||||
cp --no-preserve=mode,ownership -r ${cfg.package}/share/castopod/public/media ${lib.escapeShellArg media}
|
||||
fi
|
||||
|
||||
if [ ! -f ${stateDirectory}/salt ]; then
|
||||
openssl rand -base64 33 > ${stateDirectory}/salt
|
||||
if [ ! -f ${cfg.dataDir}/salt ]; then
|
||||
openssl rand -base64 33 > ${cfg.dataDir}/salt
|
||||
fi
|
||||
|
||||
cat <<'EOF' > ${envFile}
|
||||
${lib.generators.toKeyValue { } cfg.settings}
|
||||
EOF
|
||||
|
||||
echo "analytics.salt=$(cat ${stateDirectory}/salt)" >> ${envFile}
|
||||
echo "analytics.salt=$(cat ${cfg.dataDir}/salt)" >> ${envFile}
|
||||
|
||||
${if (cfg.database.passwordFile != null) then ''
|
||||
echo "database.default.password=$(cat ${lib.escapeShellArg cfg.database.passwordFile})" >> ${envFile}
|
||||
echo "database.default.password=$(cat "$CREDENTIALS_DIRECTORY/dbpasswordfile)" >> ${envFile}
|
||||
'' else ''
|
||||
echo "database.default.password=" >> ${envFile}
|
||||
''}
|
||||
|
||||
${lib.optionalString (cfg.environmentFile != null) ''
|
||||
cat ${lib.escapeShellArg cfg.environmentFile}) >> ${envFile}
|
||||
cat "$CREDENTIALS_DIRECTORY/envfile" >> ${envFile}
|
||||
''}
|
||||
|
||||
php spark castopod:database-update
|
||||
php ${cfg.package}/share/castopod/spark castopod:database-update
|
||||
'';
|
||||
serviceConfig = {
|
||||
StateDirectory = "castopod";
|
||||
LoadCredential = lib.optional (cfg.environmentFile != null)
|
||||
"envfile:${cfg.environmentFile}"
|
||||
++ (lib.optional (cfg.database.passwordFile != null)
|
||||
"dbpasswordfile:${cfg.database.passwordFile}");
|
||||
WorkingDirectory = "${cfg.package}/share/castopod";
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
User = user;
|
||||
Group = config.services.nginx.group;
|
||||
ReadWritePaths = cfg.dataDir;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -212,9 +242,7 @@ in
|
|||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ phpPackage ];
|
||||
script = ''
|
||||
php public/index.php scheduled-activities
|
||||
php public/index.php scheduled-websub-publish
|
||||
php public/index.php scheduled-video-clips
|
||||
php ${cfg.package}/share/castopod/spark tasks:run
|
||||
'';
|
||||
serviceConfig = {
|
||||
StateDirectory = "castopod";
|
||||
|
@ -222,6 +250,8 @@ in
|
|||
Type = "oneshot";
|
||||
User = user;
|
||||
Group = config.services.nginx.group;
|
||||
ReadWritePaths = cfg.dataDir;
|
||||
LogLevelMax = "notice"; # otherwise periodic tasks flood the journal
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -251,6 +281,7 @@ in
|
|||
extraConfig = ''
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
index index.php index.html;
|
||||
client_max_body_size ${cfg.maxUploadSize};
|
||||
'';
|
||||
|
||||
locations."^~ /${cfg.settings."media.root"}/" = {
|
||||
|
@ -278,7 +309,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
users.users.${user} = lib.mapAttrs (name: lib.mkDefault) {
|
||||
users.users.${user} = lib.mapAttrs (_: lib.mkDefault) {
|
||||
description = "Castopod user";
|
||||
isSystemUser = true;
|
||||
group = config.services.nginx.group;
|
|
@ -0,0 +1,32 @@
|
|||
# Davis {#module-services-davis}
|
||||
|
||||
[Davis](https://github.com/tchapi/davis/) is a caldav and carrddav server. It
|
||||
has a simple, fully translatable admin interface for sabre/dav based on Symfony
|
||||
5 and Bootstrap 5, initially inspired by Baïkal.
|
||||
|
||||
## Basic Usage {#module-services-davis-basic-usage}
|
||||
|
||||
At first, an application secret is needed, this can be generated with:
|
||||
```ShellSession
|
||||
$ cat /dev/urandom | tr -dc a-zA-Z0-9 | fold -w 48 | head -n 1
|
||||
```
|
||||
|
||||
After that, `davis` can be deployed like this:
|
||||
```
|
||||
{
|
||||
services.davis = {
|
||||
enable = true;
|
||||
hostname = "davis.example.com";
|
||||
mail = {
|
||||
dsn = "smtp://username@example.com:25";
|
||||
inviteFromAddress = "davis@example.com";
|
||||
};
|
||||
adminLogin = "admin";
|
||||
adminPasswordFile = "/run/secrets/davis-admin-password";
|
||||
appSecretFile = "/run/secrets/davis-app-secret";
|
||||
nginx = {};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
This deploys Davis using a sqlite database running out of `/var/lib/davis`.
|
|
@ -0,0 +1,554 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.davis;
|
||||
db = cfg.database;
|
||||
mail = cfg.mail;
|
||||
|
||||
mysqlLocal = db.createLocally && db.driver == "mysql";
|
||||
pgsqlLocal = db.createLocally && db.driver == "postgresql";
|
||||
|
||||
user = cfg.user;
|
||||
group = cfg.group;
|
||||
|
||||
isSecret = v: lib.isAttrs v && v ? _secret && (lib.isString v._secret || builtins.isPath v._secret);
|
||||
davisEnvVars = lib.generators.toKeyValue {
|
||||
mkKeyValue = lib.flip lib.generators.mkKeyValueDefault "=" {
|
||||
mkValueString =
|
||||
v:
|
||||
if builtins.isInt v then
|
||||
toString v
|
||||
else if lib.isString v then
|
||||
"\"${v}\""
|
||||
else if true == v then
|
||||
"true"
|
||||
else if false == v then
|
||||
"false"
|
||||
else if null == v then
|
||||
""
|
||||
else if isSecret v then
|
||||
if (lib.isString v._secret) then
|
||||
builtins.hashString "sha256" v._secret
|
||||
else
|
||||
builtins.hashString "sha256" (builtins.readFile v._secret)
|
||||
else
|
||||
throw "unsupported type ${builtins.typeOf v}: ${(lib.generators.toPretty { }) v}";
|
||||
};
|
||||
};
|
||||
secretPaths = lib.mapAttrsToList (_: v: v._secret) (lib.filterAttrs (_: isSecret) cfg.config);
|
||||
mkSecretReplacement = file: ''
|
||||
replace-secret ${
|
||||
lib.escapeShellArgs [
|
||||
(
|
||||
if (lib.isString file) then
|
||||
builtins.hashString "sha256" file
|
||||
else
|
||||
builtins.hashString "sha256" (builtins.readFile file)
|
||||
)
|
||||
file
|
||||
"${cfg.dataDir}/.env.local"
|
||||
]
|
||||
}
|
||||
'';
|
||||
secretReplacements = lib.concatMapStrings mkSecretReplacement secretPaths;
|
||||
filteredConfig = lib.converge (lib.filterAttrsRecursive (
|
||||
_: v:
|
||||
!lib.elem v [
|
||||
{ }
|
||||
null
|
||||
]
|
||||
)) cfg.config;
|
||||
davisEnv = pkgs.writeText "davis.env" (davisEnvVars filteredConfig);
|
||||
in
|
||||
{
|
||||
options.services.davis = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Davis is a caldav and carddav server");
|
||||
|
||||
user = lib.mkOption {
|
||||
default = "davis";
|
||||
description = lib.mdDoc "User davis runs as.";
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
group = lib.mkOption {
|
||||
default = "davis";
|
||||
description = lib.mdDoc "Group davis runs as.";
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
package = lib.mkPackageOption pkgs "davis" { };
|
||||
|
||||
dataDir = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "/var/lib/davis";
|
||||
description = lib.mdDoc ''
|
||||
Davis data directory.
|
||||
'';
|
||||
};
|
||||
|
||||
hostname = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
example = "davis.yourdomain.org";
|
||||
description = lib.mdDoc ''
|
||||
Domain of the host to serve davis under. You may want to change it if you
|
||||
run Davis on a different URL than davis.yourdomain.
|
||||
'';
|
||||
};
|
||||
|
||||
config = lib.mkOption {
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.nullOr (
|
||||
lib.types.either
|
||||
(lib.types.oneOf [
|
||||
lib.types.bool
|
||||
lib.types.int
|
||||
lib.types.port
|
||||
lib.types.path
|
||||
lib.types.str
|
||||
])
|
||||
(
|
||||
lib.types.submodule {
|
||||
options = {
|
||||
_secret = lib.mkOption {
|
||||
type = lib.types.nullOr (
|
||||
lib.types.oneOf [
|
||||
lib.types.str
|
||||
lib.types.path
|
||||
]
|
||||
);
|
||||
description = lib.mdDoc ''
|
||||
The path to a file containing the value the
|
||||
option should be set to in the final
|
||||
configuration file.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
default = { };
|
||||
|
||||
example = '''';
|
||||
description = lib.mdDoc '''';
|
||||
};
|
||||
|
||||
adminLogin = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "root";
|
||||
description = lib.mdDoc ''
|
||||
Username for the admin account.
|
||||
'';
|
||||
};
|
||||
adminPasswordFile = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = lib.mdDoc ''
|
||||
The full path to a file that contains the admin's password. Must be
|
||||
readable by the user.
|
||||
'';
|
||||
example = "/run/secrets/davis-admin-pass";
|
||||
};
|
||||
|
||||
appSecretFile = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = lib.mdDoc ''
|
||||
A file containing the Symfony APP_SECRET - Its value should be a series
|
||||
of characters, numbers and symbols chosen randomly and the recommended
|
||||
length is around 32 characters. Can be generated with <code>cat
|
||||
/dev/urandom | tr -dc a-zA-Z0-9 | fold -w 48 | head -n 1</code>.
|
||||
'';
|
||||
example = "/run/secrets/davis-appsecret";
|
||||
};
|
||||
|
||||
database = {
|
||||
driver = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"sqlite"
|
||||
"postgresql"
|
||||
"mysql"
|
||||
];
|
||||
default = "sqlite";
|
||||
description = lib.mdDoc "Database type, required in all circumstances.";
|
||||
};
|
||||
urlFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
example = "/run/secrets/davis-db-url";
|
||||
description = lib.mdDoc ''
|
||||
A file containing the database connection url. If set then it
|
||||
overrides all other database settings (except driver). This is
|
||||
mandatory if you want to use an external database, that is when
|
||||
`services.davis.database.createLocally` is `false`.
|
||||
'';
|
||||
};
|
||||
name = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = "davis";
|
||||
description = lib.mdDoc "Database name, only used when the databse is created locally.";
|
||||
};
|
||||
createLocally = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc "Create the database and database user locally.";
|
||||
};
|
||||
};
|
||||
|
||||
mail = {
|
||||
dsn = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = lib.mdDoc "Mail DSN for sending emails. Mutually exclusive with `services.davis.mail.dsnFile`.";
|
||||
example = "smtp://username:password@example.com:25";
|
||||
};
|
||||
dsnFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "/run/secrets/davis-mail-dsn";
|
||||
description = lib.mdDoc "A file containing the mail DSN for sending emails. Mutually exclusive with `servies.davis.mail.dsn`.";
|
||||
};
|
||||
inviteFromAddress = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = lib.mdDoc "Email address to send invitations from.";
|
||||
example = "no-reply@dav.example.com";
|
||||
};
|
||||
};
|
||||
|
||||
nginx = lib.mkOption {
|
||||
type = lib.types.submodule (
|
||||
lib.recursiveUpdate (import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) { }
|
||||
);
|
||||
default = null;
|
||||
example = ''
|
||||
{
|
||||
serverAliases = [
|
||||
"dav.''${config.networking.domain}"
|
||||
];
|
||||
# To enable encryption and let let's encrypt take care of certificate
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
}
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
With this option, you can customize the nginx virtualHost settings.
|
||||
'';
|
||||
};
|
||||
|
||||
poolConfig = lib.mkOption {
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.oneOf [
|
||||
lib.types.str
|
||||
lib.types.int
|
||||
lib.types.bool
|
||||
]
|
||||
);
|
||||
default = {
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 32;
|
||||
"pm.start_servers" = 2;
|
||||
"pm.min_spare_servers" = 2;
|
||||
"pm.max_spare_servers" = 4;
|
||||
"pm.max_requests" = 500;
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
Options for the davis PHP pool. See the documentation on <literal>php-fpm.conf</literal>
|
||||
for details on configuration directives.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
let
|
||||
defaultServiceConfig = {
|
||||
ReadWritePaths = "${cfg.dataDir}";
|
||||
User = user;
|
||||
UMask = 77;
|
||||
DeviceAllow = "";
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateTmp = true;
|
||||
PrivateUsers = true;
|
||||
ProcSubset = "pid";
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = "strict";
|
||||
RemoveIPC = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@resources"
|
||||
"~@privileged"
|
||||
];
|
||||
WorkingDirectory = "${cfg.package}/";
|
||||
};
|
||||
in
|
||||
lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = db.createLocally -> db.urlFile == null;
|
||||
message = "services.davis.database.urlFile must be unset if services.davis.database.createLocally is set true.";
|
||||
}
|
||||
{
|
||||
assertion = db.createLocally || db.urlFile != null;
|
||||
message = "One of services.davis.database.urlFile or services.davis.database.createLocally must be set.";
|
||||
}
|
||||
{
|
||||
assertion = (mail.dsn != null) != (mail.dsnFile != null);
|
||||
message = "One of (and only one of) services.davis.mail.dsn or services.davis.mail.dsnFile must be set.";
|
||||
}
|
||||
];
|
||||
services.davis.config =
|
||||
{
|
||||
APP_ENV = "prod";
|
||||
CACHE_DIR = "${cfg.dataDir}/var/cache";
|
||||
# note: we do not need the log dir (we log to stdout/journald), by davis/symfony will try to create it, and the default value is one in the nix-store
|
||||
# so we set it to a path under dataDir to avoid something like: Unable to create the "logs" directory (/nix/store/5cfskz0ybbx37s1161gjn5klwb5si1zg-davis-4.4.1/var/log).
|
||||
LOG_DIR = "${cfg.dataDir}/var/log";
|
||||
LOG_FILE_PATH = "/dev/stdout";
|
||||
DATABASE_DRIVER = db.driver;
|
||||
INVITE_FROM_ADDRESS = mail.inviteFromAddress;
|
||||
APP_SECRET._secret = cfg.appSecretFile;
|
||||
ADMIN_LOGIN = cfg.adminLogin;
|
||||
ADMIN_PASSWORD._secret = cfg.adminPasswordFile;
|
||||
APP_TIMEZONE = config.time.timeZone;
|
||||
WEBDAV_ENABLED = false;
|
||||
CALDAV_ENABLED = true;
|
||||
CARDDAV_ENABLED = true;
|
||||
}
|
||||
// (if mail.dsn != null then { MAILER_DSN = mail.dsn; } else { MAILER_DSN._secret = mail.dsnFile; })
|
||||
// (
|
||||
if db.createLocally then
|
||||
{
|
||||
DATABASE_URL =
|
||||
if db.driver == "sqlite" then
|
||||
"sqlite:///${cfg.dataDir}/davis.db" # note: sqlite needs 4 slashes for an absolute path
|
||||
else if
|
||||
pgsqlLocal
|
||||
# note: davis expects a non-standard postgres uri (due to the underlying doctrine library)
|
||||
# specifically the charset query parameter, and the dummy hostname which is overriden by the host query parameter
|
||||
then
|
||||
"postgres://${user}@localhost/${db.name}?host=/run/postgresql&charset=UTF-8"
|
||||
else if mysqlLocal then
|
||||
"mysql://${user}@localhost/${db.name}?socket=/run/mysqld/mysqld.sock"
|
||||
else
|
||||
null;
|
||||
}
|
||||
else
|
||||
{ DATABASE_URL._secret = db.urlFile; }
|
||||
);
|
||||
|
||||
users = {
|
||||
users = lib.mkIf (user == "davis") {
|
||||
davis = {
|
||||
description = "Davis service user";
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
home = cfg.dataDir;
|
||||
};
|
||||
};
|
||||
groups = lib.mkIf (group == "davis") { davis = { }; };
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${cfg.dataDir} 0710 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/var 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/var/log 0700 ${user} ${group} - -"
|
||||
"d ${cfg.dataDir}/var/cache 0700 ${user} ${group} - -"
|
||||
];
|
||||
|
||||
services.phpfpm.pools.davis = {
|
||||
inherit user group;
|
||||
phpOptions = ''
|
||||
log_errors = on
|
||||
'';
|
||||
phpEnv = {
|
||||
ENV_DIR = "${cfg.dataDir}";
|
||||
CACHE_DIR = "${cfg.dataDir}/var/cache";
|
||||
#LOG_DIR = "${cfg.dataDir}/var/log";
|
||||
};
|
||||
settings =
|
||||
{
|
||||
"listen.mode" = "0660";
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 256;
|
||||
"pm.start_servers" = 10;
|
||||
"pm.min_spare_servers" = 5;
|
||||
"pm.max_spare_servers" = 20;
|
||||
}
|
||||
// (
|
||||
if cfg.nginx != null then
|
||||
{
|
||||
"listen.owner" = config.services.nginx.user;
|
||||
"listen.group" = config.services.nginx.group;
|
||||
}
|
||||
else
|
||||
{ }
|
||||
)
|
||||
// cfg.poolConfig;
|
||||
};
|
||||
|
||||
# Reading the user-provided secret files requires root access
|
||||
systemd.services.davis-env-setup = {
|
||||
description = "Setup davis environment";
|
||||
before = [
|
||||
"phpfpm-davis.service"
|
||||
"davis-db-migrate.service"
|
||||
];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
path = [ pkgs.replace-secret ];
|
||||
restartTriggers = [
|
||||
cfg.package
|
||||
davisEnv
|
||||
];
|
||||
script = ''
|
||||
# error handling
|
||||
set -euo pipefail
|
||||
# create .env file with the upstream values
|
||||
install -T -m 0600 -o ${user} ${cfg.package}/env-upstream "${cfg.dataDir}/.env"
|
||||
# create .env.local file with the user-provided values
|
||||
install -T -m 0600 -o ${user} ${davisEnv} "${cfg.dataDir}/.env.local"
|
||||
${secretReplacements}
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.davis-db-migrate = {
|
||||
description = "Migrate davis database";
|
||||
before = [ "phpfpm-davis.service" ];
|
||||
after =
|
||||
lib.optional mysqlLocal "mysql.service"
|
||||
++ lib.optional pgsqlLocal "postgresql.service"
|
||||
++ [ "davis-env-setup.service" ];
|
||||
requires =
|
||||
lib.optional mysqlLocal "mysql.service"
|
||||
++ lib.optional pgsqlLocal "postgresql.service"
|
||||
++ [ "davis-env-setup.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = defaultServiceConfig // {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
Environment = [
|
||||
"ENV_DIR=${cfg.dataDir}"
|
||||
"CACHE_DIR=${cfg.dataDir}/var/cache"
|
||||
"LOG_DIR=${cfg.dataDir}/var/log"
|
||||
];
|
||||
EnvironmentFile = "${cfg.dataDir}/.env.local";
|
||||
};
|
||||
restartTriggers = [
|
||||
cfg.package
|
||||
davisEnv
|
||||
];
|
||||
script = ''
|
||||
set -euo pipefail
|
||||
${cfg.package}/bin/console cache:clear --no-debug
|
||||
${cfg.package}/bin/console cache:warmup --no-debug
|
||||
${cfg.package}/bin/console doctrine:migrations:migrate
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.phpfpm-davis.after = [
|
||||
"davis-env-setup.service"
|
||||
"davis-db-migrate.service"
|
||||
];
|
||||
systemd.services.phpfpm-davis.requires = [
|
||||
"davis-env-setup.service"
|
||||
"davis-db-migrate.service"
|
||||
] ++ lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.service";
|
||||
systemd.services.phpfpm-davis.serviceConfig.ReadWritePaths = [ cfg.dataDir ];
|
||||
|
||||
services.nginx = lib.mkIf (cfg.nginx != null) {
|
||||
enable = lib.mkDefault true;
|
||||
virtualHosts = {
|
||||
"${cfg.hostname}" = lib.mkMerge [
|
||||
cfg.nginx
|
||||
{
|
||||
root = lib.mkForce "${cfg.package}/public";
|
||||
extraConfig = ''
|
||||
charset utf-8;
|
||||
index index.php;
|
||||
'';
|
||||
locations = {
|
||||
"/" = {
|
||||
extraConfig = ''
|
||||
try_files $uri $uri/ /index.php$is_args$args;
|
||||
'';
|
||||
};
|
||||
"~* ^/.well-known/(caldav|carddav)$" = {
|
||||
extraConfig = ''
|
||||
return 302 $http_x_forwarded_proto://$host/dav/;
|
||||
'';
|
||||
};
|
||||
"~ ^(.+\.php)(.*)$" = {
|
||||
extraConfig = ''
|
||||
try_files $fastcgi_script_name =404;
|
||||
include ${config.services.nginx.package}/conf/fastcgi_params;
|
||||
include ${config.services.nginx.package}/conf/fastcgi.conf;
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools.davis.socket};
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_split_path_info ^(.+\.php)(.*)$;
|
||||
fastcgi_param X-Forwarded-Proto $http_x_forwarded_proto;
|
||||
fastcgi_param X-Forwarded-Port $http_x_forwarded_port;
|
||||
'';
|
||||
};
|
||||
"~ /(\\.ht)" = {
|
||||
extraConfig = ''
|
||||
deny all;
|
||||
return 404;
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.mysql = lib.mkIf mysqlLocal {
|
||||
enable = true;
|
||||
package = lib.mkDefault pkgs.mariadb;
|
||||
ensureDatabases = [ db.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = user;
|
||||
ensurePermissions = {
|
||||
"${db.name}.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.postgresql = lib.mkIf pgsqlLocal {
|
||||
enable = true;
|
||||
ensureDatabases = [ db.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = user;
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
doc = ./davis.md;
|
||||
maintainers = pkgs.davis.meta.maintainers;
|
||||
};
|
||||
}
|
|
@ -783,6 +783,8 @@ in
|
|||
# This working directory is required to find stuff like the set of
|
||||
# onboarding files:
|
||||
WorkingDirectory = "${cfg.package}/share/outline";
|
||||
# In case this directory is not in /var/lib/outline, it needs to be made writable explicitly
|
||||
ReadWritePaths = [ cfg.storage.localRootDir ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -47,6 +47,9 @@ let
|
|||
"rescue.target"
|
||||
"rescue.service"
|
||||
|
||||
# systemd-debug-generator
|
||||
"debug-shell.service"
|
||||
|
||||
# Udev.
|
||||
"systemd-tmpfiles-setup-dev-early.service"
|
||||
"systemd-udevd-control.socket"
|
||||
|
|
|
@ -18,10 +18,10 @@ let
|
|||
|
||||
cfg = config.boot.initrd.systemd;
|
||||
|
||||
# Copied from fedora
|
||||
upstreamUnits = [
|
||||
"basic.target"
|
||||
"ctrl-alt-del.target"
|
||||
"debug-shell.service"
|
||||
"emergency.service"
|
||||
"emergency.target"
|
||||
"final.target"
|
||||
|
@ -398,7 +398,8 @@ in {
|
|||
++ lib.optional (config.boot.initrd.systemd.root == "gpt-auto") "rw";
|
||||
|
||||
boot.initrd.systemd = {
|
||||
initrdBin = [pkgs.bash pkgs.coreutils cfg.package.kmod cfg.package];
|
||||
# bashInteractive is easier to use and also required by debug-shell.service
|
||||
initrdBin = [pkgs.bashInteractive pkgs.coreutils cfg.package.kmod cfg.package];
|
||||
extraBin = {
|
||||
less = "${pkgs.less}/bin/less";
|
||||
mount = "${cfg.package.util-linux}/bin/mount";
|
||||
|
@ -472,6 +473,9 @@ in {
|
|||
"${cfg.package.util-linux}/bin/umount"
|
||||
"${cfg.package.util-linux}/bin/sulogin"
|
||||
|
||||
# required for script services
|
||||
"${pkgs.runtimeShell}"
|
||||
|
||||
# so NSS can look up usernames
|
||||
"${pkgs.glibc}/lib/libnss_files.so.2"
|
||||
] ++ optionals (cfg.package.withCryptsetup && cfg.enableTpm2) [
|
||||
|
|
|
@ -13,7 +13,46 @@ let
|
|||
format = pkgs.formats.ini {};
|
||||
|
||||
idmapdConfFile = format.generate "idmapd.conf" cfg.idmapd.settings;
|
||||
nfsConfFile = pkgs.writeText "nfs.conf" cfg.extraConfig;
|
||||
|
||||
# merge parameters from services.nfs.server
|
||||
nfsConfSettings =
|
||||
optionalAttrs (cfg.server.nproc != null) {
|
||||
nfsd.threads = cfg.server.nproc;
|
||||
} // optionalAttrs (cfg.server.hostName != null) {
|
||||
nfsd.host= cfg.hostName;
|
||||
} // optionalAttrs (cfg.server.mountdPort != null) {
|
||||
mountd.port = cfg.server.mountdPort;
|
||||
} // optionalAttrs (cfg.server.statdPort != null) {
|
||||
statd.port = cfg.server.statdPort;
|
||||
} // optionalAttrs (cfg.server.lockdPort != null) {
|
||||
lockd.port = cfg.server.lockdPort;
|
||||
lockd.udp-port = cfg.server.lockdPort;
|
||||
};
|
||||
|
||||
nfsConfDeprecated = cfg.extraConfig + ''
|
||||
[nfsd]
|
||||
threads=${toString cfg.server.nproc}
|
||||
${optionalString (cfg.server.hostName != null) "host=${cfg.server.hostName}"}
|
||||
${cfg.server.extraNfsdConfig}
|
||||
|
||||
[mountd]
|
||||
${optionalString (cfg.server.mountdPort != null) "port=${toString cfg.server.mountdPort}"}
|
||||
|
||||
[statd]
|
||||
${optionalString (cfg.server.statdPort != null) "port=${toString cfg.server.statdPort}"}
|
||||
|
||||
[lockd]
|
||||
${optionalString (cfg.server.lockdPort != null) ''
|
||||
port=${toString cfg.server.lockdPort}
|
||||
udp-port=${toString cfg.server.lockdPort}
|
||||
''}
|
||||
'';
|
||||
|
||||
nfsConfFile =
|
||||
if cfg.settings != {}
|
||||
then format.generate "nfs.conf" (recursiveUpdate nfsConfSettings cfg.settings)
|
||||
else pkgs.writeText "nfs.conf" nfsConfDeprecated;
|
||||
|
||||
requestKeyConfFile = pkgs.writeText "request-key.conf" ''
|
||||
create id_resolver * * ${pkgs.nfs-utils}/bin/nfsidmap -t 600 %k %d
|
||||
'';
|
||||
|
@ -46,6 +85,19 @@ in
|
|||
}
|
||||
'';
|
||||
};
|
||||
settings = mkOption {
|
||||
type = format.type;
|
||||
default = {};
|
||||
description = lib.mdDoc ''
|
||||
General configuration for NFS daemons and tools.
|
||||
See nfs.conf(5) and related man pages for details.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
mountd.manage-gids = true;
|
||||
}
|
||||
'';
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
|
@ -60,6 +112,17 @@ in
|
|||
|
||||
config = mkIf (config.boot.supportedFilesystems.nfs or config.boot.supportedFilesystems.nfs4 or false) {
|
||||
|
||||
warnings =
|
||||
(optional (cfg.extraConfig != "") ''
|
||||
`services.nfs.extraConfig` is deprecated. Use `services.nfs.settings` instead.
|
||||
'') ++ (optional (cfg.server.extraNfsdConfig != "") ''
|
||||
`services.nfs.server.extraNfsdConfig` is deprecated. Use `services.nfs.settings` instead.
|
||||
'');
|
||||
assertions = [{
|
||||
assertion = cfg.settings != {} -> cfg.extraConfig == "" && cfg.server.extraNfsdConfig == "";
|
||||
message = "`services.nfs.settings` cannot be used together with `services.nfs.extraConfig` and `services.nfs.server.extraNfsdConfig`.";
|
||||
}];
|
||||
|
||||
services.rpcbind.enable = true;
|
||||
|
||||
services.nfs.idmapd.settings = {
|
||||
|
|
|
@ -25,13 +25,6 @@ in
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
assert (
|
||||
"${pkgs.agdaPackages.lib.interfaceFile "Everything.agda"}" == "Everything.agdai"
|
||||
), "wrong interface file for Everything.agda"
|
||||
assert (
|
||||
"${pkgs.agdaPackages.lib.interfaceFile "tmp/Everything.agda.md"}" == "tmp/Everything.agdai"
|
||||
), "wrong interface file for tmp/Everything.agda.md"
|
||||
|
||||
# Minimal script that typechecks
|
||||
machine.succeed("touch TestEmpty.agda")
|
||||
machine.succeed("agda TestEmpty.agda")
|
||||
|
|
|
@ -233,6 +233,7 @@ in {
|
|||
croc = handleTest ./croc.nix {};
|
||||
darling = handleTest ./darling.nix {};
|
||||
dae = handleTest ./dae.nix {};
|
||||
davis = handleTest ./davis.nix {};
|
||||
dconf = handleTest ./dconf.nix {};
|
||||
deconz = handleTest ./deconz.nix {};
|
||||
deepin = handleTest ./deepin.nix {};
|
||||
|
@ -457,7 +458,7 @@ in {
|
|||
kerberos = handleTest ./kerberos/default.nix {};
|
||||
kernel-generic = handleTest ./kernel-generic.nix {};
|
||||
kernel-latest-ath-user-regd = handleTest ./kernel-latest-ath-user-regd.nix {};
|
||||
kernel-rust = handleTestOn ["x86_64-linux"] ./kernel-rust.nix {};
|
||||
kernel-rust = handleTest ./kernel-rust.nix {};
|
||||
keter = handleTest ./keter.nix {};
|
||||
kexec = handleTest ./kexec.nix {};
|
||||
keycloak = discoverTests (import ./keycloak.nix);
|
||||
|
@ -985,6 +986,7 @@ in {
|
|||
vsftpd = handleTest ./vsftpd.nix {};
|
||||
warzone2100 = handleTest ./warzone2100.nix {};
|
||||
wasabibackend = handleTest ./wasabibackend.nix {};
|
||||
wastebin = handleTest ./wastebin.nix {};
|
||||
watchdogd = handleTest ./watchdogd.nix {};
|
||||
webhook = runTest ./webhook.nix;
|
||||
wiki-js = handleTest ./wiki-js.nix {};
|
||||
|
@ -992,6 +994,7 @@ in {
|
|||
wireguard = handleTest ./wireguard {};
|
||||
without-nix = handleTest ./without-nix.nix {};
|
||||
wmderland = handleTest ./wmderland.nix {};
|
||||
workout-tracker = handleTest ./workout-tracker.nix {};
|
||||
wpa_supplicant = handleTest ./wpa_supplicant.nix {};
|
||||
wordpress = handleTest ./wordpress.nix {};
|
||||
wrappers = handleTest ./wrappers.nix {};
|
||||
|
|
|
@ -4,74 +4,218 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
|||
meta = with lib.maintainers; {
|
||||
maintainers = [ alexoundos misuzu ];
|
||||
};
|
||||
|
||||
nodes.castopod = { nodes, ... }: {
|
||||
# otherwise 500 MiB file upload fails!
|
||||
virtualisation.diskSize = 512 + 3 * 512;
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 castopod.example.com
|
||||
'';
|
||||
networking.extraHosts =
|
||||
lib.strings.concatStringsSep "\n"
|
||||
(lib.attrsets.mapAttrsToList
|
||||
(name: _: "127.0.0.1 ${name}")
|
||||
nodes.castopod.services.nginx.virtualHosts);
|
||||
|
||||
services.castopod = {
|
||||
enable = true;
|
||||
database.createLocally = true;
|
||||
localDomain = "castopod.example.com";
|
||||
maxUploadSize = "512M";
|
||||
};
|
||||
environment.systemPackages =
|
||||
let
|
||||
username = "admin";
|
||||
email = "admin@castood.example.com";
|
||||
password = "v82HmEp5";
|
||||
testRunner = pkgs.writers.writePython3Bin "test-runner"
|
||||
{
|
||||
libraries = [ pkgs.python3Packages.selenium ];
|
||||
flakeIgnore = [
|
||||
"E501"
|
||||
];
|
||||
} ''
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver import Firefox
|
||||
from selenium.webdriver.firefox.options import Options
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
||||
options = Options()
|
||||
options.add_argument('--headless')
|
||||
driver = Firefox(options=options)
|
||||
try:
|
||||
driver.implicitly_wait(20)
|
||||
driver.get('http://castopod.example.com/cp-install')
|
||||
|
||||
wait = WebDriverWait(driver, 10)
|
||||
|
||||
wait.until(EC.title_contains("installer"))
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, '#username').send_keys(
|
||||
'${username}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#email').send_keys(
|
||||
'${email}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#password').send_keys(
|
||||
'${password}'
|
||||
)
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Finish install')]").click()
|
||||
|
||||
wait.until(EC.title_contains("Auth"))
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, '#email').send_keys(
|
||||
'${email}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#password').send_keys(
|
||||
'${password}'
|
||||
)
|
||||
driver.find_element(By.XPATH, "//button[contains(., 'Login')]").click()
|
||||
|
||||
wait.until(EC.title_contains("Admin dashboard"))
|
||||
finally:
|
||||
driver.close()
|
||||
driver.quit()
|
||||
'';
|
||||
in
|
||||
[ pkgs.firefox-unwrapped pkgs.geckodriver testRunner ];
|
||||
};
|
||||
|
||||
nodes.client = { nodes, pkgs, lib, ... }:
|
||||
let
|
||||
domain = nodes.castopod.services.castopod.localDomain;
|
||||
|
||||
getIP = node:
|
||||
(builtins.head node.networking.interfaces.eth1.ipv4.addresses).address;
|
||||
|
||||
targetPodcastSize = 500 * 1024 * 1024;
|
||||
lameMp3Bitrate = 348300;
|
||||
lameMp3FileAdjust = -800;
|
||||
targetPodcastDuration = toString
|
||||
((targetPodcastSize + lameMp3FileAdjust) / (lameMp3Bitrate / 8));
|
||||
bannerWidth = 3000;
|
||||
banner = pkgs.runCommand "gen-castopod-cover.jpg" { } ''
|
||||
${pkgs.imagemagick}/bin/magick `
|
||||
`-background green -bordercolor white -gravity northwest xc:black `
|
||||
`-duplicate 99 `
|
||||
`-seed 1 -resize "%[fx:rand()*72+24]" `
|
||||
`-seed 0 -rotate "%[fx:rand()*360]" -border 6x6 -splice 16x36 `
|
||||
`-seed 0 -rotate "%[fx:floor(rand()*4)*90]" -resize "150x50!" `
|
||||
`+append -crop 10x1@ +repage -roll "+%[fx:(t%2)*72]+0" -append `
|
||||
`-resize ${toString bannerWidth} -quality 1 $out
|
||||
'';
|
||||
|
||||
coverWidth = toString 3000;
|
||||
cover = pkgs.runCommand "gen-castopod-banner.jpg" { } ''
|
||||
${pkgs.imagemagick}/bin/magick `
|
||||
`-background white -bordercolor white -gravity northwest xc:black `
|
||||
`-duplicate 99 `
|
||||
`-seed 1 -resize "%[fx:rand()*72+24]" `
|
||||
`-seed 0 -rotate "%[fx:rand()*360]" -border 6x6 -splice 36x36 `
|
||||
`-seed 0 -rotate "%[fx:floor(rand()*4)*90]" -resize "144x144!" `
|
||||
`+append -crop 10x1@ +repage -roll "+%[fx:(t%2)*72]+0" -append `
|
||||
`-resize ${coverWidth} -quality 1 $out
|
||||
'';
|
||||
in
|
||||
{
|
||||
networking.extraHosts =
|
||||
lib.strings.concatStringsSep "\n"
|
||||
(lib.attrsets.mapAttrsToList
|
||||
(name: _: "${getIP nodes.castopod} ${name}")
|
||||
nodes.castopod.services.nginx.virtualHosts);
|
||||
|
||||
environment.systemPackages =
|
||||
let
|
||||
username = "admin";
|
||||
email = "admin@${domain}";
|
||||
password = "Abcd1234";
|
||||
podcastTitle = "Some Title";
|
||||
episodeTitle = "Episode Title";
|
||||
browser-test = pkgs.writers.writePython3Bin "browser-test"
|
||||
{
|
||||
libraries = [ pkgs.python3Packages.selenium ];
|
||||
flakeIgnore = [ "E124" "E501" ];
|
||||
} ''
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver import Firefox
|
||||
from selenium.webdriver.firefox.options import Options
|
||||
from selenium.webdriver.firefox.service import Service
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from subprocess import STDOUT
|
||||
import logging
|
||||
|
||||
selenium_logger = logging.getLogger("selenium")
|
||||
selenium_logger.setLevel(logging.DEBUG)
|
||||
selenium_logger.addHandler(logging.StreamHandler())
|
||||
|
||||
options = Options()
|
||||
options.add_argument('--headless')
|
||||
service = Service(log_output=STDOUT)
|
||||
driver = Firefox(options=options, service=service)
|
||||
driver = Firefox(options=options)
|
||||
driver.implicitly_wait(30)
|
||||
|
||||
# install ##########################################################
|
||||
|
||||
driver.get('http://${domain}/cp-install')
|
||||
|
||||
wait = WebDriverWait(driver, 20)
|
||||
|
||||
wait.until(EC.title_contains("installer"))
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, '#username').send_keys(
|
||||
'${username}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#email').send_keys(
|
||||
'${email}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#password').send_keys(
|
||||
'${password}'
|
||||
)
|
||||
driver.find_element(By.XPATH,
|
||||
"//button[contains(., 'Finish install')]"
|
||||
).click()
|
||||
|
||||
wait.until(EC.title_contains("Auth"))
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, '#email').send_keys(
|
||||
'${email}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#password').send_keys(
|
||||
'${password}'
|
||||
)
|
||||
driver.find_element(By.XPATH,
|
||||
"//button[contains(., 'Login')]"
|
||||
).click()
|
||||
|
||||
wait.until(EC.title_contains("Admin dashboard"))
|
||||
|
||||
# create podcast ###################################################
|
||||
|
||||
driver.get('http://${domain}/admin/podcasts/new')
|
||||
|
||||
wait.until(EC.title_contains("Create podcast"))
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, '#cover').send_keys(
|
||||
'${cover}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#banner').send_keys(
|
||||
'${banner}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#title').send_keys(
|
||||
'${podcastTitle}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#handle').send_keys(
|
||||
'some_handle'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#description').send_keys(
|
||||
'Some description'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#owner_name').send_keys(
|
||||
'Owner Name'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#owner_email').send_keys(
|
||||
'owner@email.xyz'
|
||||
)
|
||||
driver.find_element(By.XPATH,
|
||||
"//button[contains(., 'Create podcast')]"
|
||||
).click()
|
||||
|
||||
wait.until(EC.title_contains("${podcastTitle}"))
|
||||
|
||||
driver.find_element(By.XPATH,
|
||||
"//span[contains(., 'Add an episode')]"
|
||||
).click()
|
||||
|
||||
wait.until(EC.title_contains("Add an episode"))
|
||||
|
||||
# upload podcast ###################################################
|
||||
|
||||
driver.find_element(By.CSS_SELECTOR, '#audio_file').send_keys(
|
||||
'/tmp/podcast.mp3'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#cover').send_keys(
|
||||
'${cover}'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#description').send_keys(
|
||||
'Episode description'
|
||||
)
|
||||
driver.find_element(By.CSS_SELECTOR, '#title').send_keys(
|
||||
'${episodeTitle}'
|
||||
)
|
||||
driver.find_element(By.XPATH,
|
||||
"//button[contains(., 'Create episode')]"
|
||||
).click()
|
||||
|
||||
wait.until(EC.title_contains("${episodeTitle}"))
|
||||
|
||||
driver.close()
|
||||
driver.quit()
|
||||
'';
|
||||
in
|
||||
[
|
||||
pkgs.firefox-unwrapped
|
||||
pkgs.geckodriver
|
||||
browser-test
|
||||
(pkgs.writeShellApplication {
|
||||
name = "build-mp3";
|
||||
runtimeInputs = with pkgs; [ sox lame ];
|
||||
text = ''
|
||||
out=/tmp/podcast.mp3
|
||||
sox -n -r 48000 -t wav - synth ${targetPodcastDuration} sine 440 `
|
||||
`| lame --noreplaygain -cbr -q 9 -b 320 - $out
|
||||
FILESIZE="$(stat -c%s $out)"
|
||||
[ "$FILESIZE" -gt 0 ]
|
||||
[ "$FILESIZE" -le "${toString targetPodcastSize}" ]
|
||||
'';
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
castopod.wait_for_unit("castopod-setup.service")
|
||||
|
@ -79,9 +223,11 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
|||
castopod.wait_for_unit("nginx.service")
|
||||
castopod.wait_for_open_port(80)
|
||||
castopod.wait_until_succeeds("curl -sS -f http://castopod.example.com")
|
||||
castopod.succeed("curl -s http://localhost/cp-install | grep 'Create your Super Admin account' > /dev/null")
|
||||
|
||||
with subtest("Create superadmin and log in"):
|
||||
castopod.succeed("PYTHONUNBUFFERED=1 systemd-cat -t test-runner test-runner")
|
||||
client.succeed("build-mp3")
|
||||
|
||||
with subtest("Create superadmin, log in, create and upload a podcast"):
|
||||
client.succeed(\
|
||||
"PYTHONUNBUFFERED=1 systemd-cat -t browser-test browser-test")
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
import ./make-test-python.nix (
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
name = "davis";
|
||||
|
||||
meta.maintainers = pkgs.davis.meta.maintainers;
|
||||
|
||||
nodes.machine =
|
||||
{ config, ... }:
|
||||
{
|
||||
virtualisation = {
|
||||
memorySize = 512;
|
||||
};
|
||||
|
||||
services.davis = {
|
||||
enable = true;
|
||||
hostname = "davis.example.com";
|
||||
database = {
|
||||
driver = "postgresql";
|
||||
};
|
||||
mail = {
|
||||
dsnFile = "${pkgs.writeText "davisMailDns" "smtp://username:password@example.com:25"}";
|
||||
inviteFromAddress = "dav@example.com";
|
||||
};
|
||||
adminLogin = "admin";
|
||||
appSecretFile = "${pkgs.writeText "davisAppSecret" "52882ef142066e09ab99ce816ba72522e789505caba224"}";
|
||||
adminPasswordFile = "${pkgs.writeText "davisAdminPass" "nixos"}";
|
||||
nginx = { };
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
machine.wait_for_unit("postgresql.service")
|
||||
machine.wait_for_unit("davis-env-setup.service")
|
||||
machine.wait_for_unit("davis-db-migrate.service")
|
||||
machine.wait_for_unit("nginx.service")
|
||||
machine.wait_for_unit("phpfpm-davis.service")
|
||||
|
||||
with subtest("welcome screen loads"):
|
||||
machine.succeed(
|
||||
"curl -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/ | grep '<title>Davis</title>'"
|
||||
)
|
||||
|
||||
with subtest("login works"):
|
||||
csrf_token = machine.succeed(
|
||||
"curl -c /tmp/cookies -sSfL --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login | grep '_csrf_token' | sed -E 's,.*value=\"(.*)\".*,\\1,g'"
|
||||
)
|
||||
r = machine.succeed(
|
||||
f"curl -b /tmp/cookies --resolve davis.example.com:80:127.0.0.1 http://davis.example.com/login -X POST -F username=admin -F password=nixos -F _csrf_token={csrf_token.strip()} -D headers"
|
||||
)
|
||||
print(r)
|
||||
machine.succeed(
|
||||
"[[ $(grep -i 'location: ' headers | cut -d: -f2- | xargs echo) == /dashboard* ]]"
|
||||
)
|
||||
'';
|
||||
}
|
||||
)
|
|
@ -4,7 +4,7 @@
|
|||
}:
|
||||
|
||||
let
|
||||
inherit (pkgs.lib) const filterAttrs mapAttrs;
|
||||
inherit (pkgs.lib) const filterAttrs mapAttrs meta;
|
||||
|
||||
kernelRustTest = kernelPackages: import ./make-test-python.nix ({ lib, ... }: {
|
||||
name = "kernel-rust";
|
||||
|
@ -38,6 +38,8 @@ let
|
|||
inherit (builtins.tryEval (
|
||||
x.rust-out-of-tree-module or null != null
|
||||
)) success value;
|
||||
in success && value))
|
||||
available =
|
||||
meta.availableOn pkgs.stdenv.hostPlatform x.rust-out-of-tree-module;
|
||||
in success && value && available))
|
||||
pkgs.linuxKernel.vanillaPackages;
|
||||
in mapAttrs (const kernelRustTest) kernels
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "wastebin";
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ pinpox ];
|
||||
};
|
||||
|
||||
nodes.machine = { pkgs, ... }: {
|
||||
services.wastebin = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("wastebin.service")
|
||||
machine.wait_for_open_port(8088)
|
||||
machine.succeed("curl --fail http://localhost:8088/")
|
||||
'';
|
||||
})
|
|
@ -0,0 +1,29 @@
|
|||
import ./make-test-python.nix (
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
name = "workout-tracker";
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ bhankas ];
|
||||
|
||||
nodes.machine =
|
||||
{ config, ... }:
|
||||
{
|
||||
virtualisation.memorySize = 2048;
|
||||
|
||||
services.workout-tracker.enable = true;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
machine.wait_for_unit("workout-tracker.service")
|
||||
# wait for workout-tracker to fully come up
|
||||
|
||||
with subtest("workout-tracker service starts"):
|
||||
machine.wait_until_succeeds(
|
||||
"curl -sSfL http://localhost:8080/ > /dev/null",
|
||||
timeout=30
|
||||
)
|
||||
'';
|
||||
}
|
||||
)
|
|
@ -3,7 +3,7 @@
|
|||
, ffmpeg-headless
|
||||
, lib
|
||||
, nixosTests
|
||||
, stateDirectory ? "/var/lib/castopod"
|
||||
, dataDir ? "/var/lib/castopod"
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "castopod";
|
||||
|
@ -20,13 +20,16 @@ stdenv.mkDerivation {
|
|||
postPatch = ''
|
||||
# not configurable at runtime unfortunately:
|
||||
substituteInPlace app/Config/Paths.php \
|
||||
--replace "__DIR__ . '/../../writable'" "'${stateDirectory}/writable'"
|
||||
--replace "__DIR__ . '/../../writable'" "'${dataDir}/writable'"
|
||||
|
||||
# configuration file must be writable, place it to ${stateDirectory}
|
||||
substituteInPlace modules/Admin/Controllers/DashboardController.php \
|
||||
--replace "disk_total_space('./')" "disk_total_space('${dataDir}')"
|
||||
|
||||
# configuration file must be writable, place it to ${dataDir}
|
||||
substituteInPlace modules/Install/Controllers/InstallController.php \
|
||||
--replace "ROOTPATH" "'${stateDirectory}/'"
|
||||
--replace "ROOTPATH" "'${dataDir}/'"
|
||||
substituteInPlace public/index.php spark \
|
||||
--replace "DotEnv(ROOTPATH)" "DotEnv('${stateDirectory}')"
|
||||
--replace "DotEnv(ROOTPATH)" "DotEnv('${dataDir}')"
|
||||
|
||||
# ffmpeg is required for Video Clips feature
|
||||
substituteInPlace modules/MediaClipper/VideoClipper.php \
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
{ depname
|
||||
, version
|
||||
, src
|
||||
, sourceRoot
|
||||
, stdenv
|
||||
, lib
|
||||
, patches ? []
|
||||
, extraPostPatch ? ""
|
||||
, buildInputs ? []
|
||||
}:
|
||||
|
||||
let
|
||||
rebuildscriptName = if stdenv.hostPlatform.isLinux then
|
||||
"build_linux"
|
||||
else if stdenv.hostPlatform.isDarwin then
|
||||
"build_macos"
|
||||
else throw "Don't know how to rebuild FamiStudio's vendored ${depname} for ${stdenv.hostPlatform.system}";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "famistudio-nativedep-${depname}";
|
||||
inherit version src sourceRoot patches buildInputs;
|
||||
|
||||
postPatch = let
|
||||
libnameBase = lib.optionalString stdenv.hostPlatform.isLinux "lib" + depname;
|
||||
in ''
|
||||
# Use one name for build script, eases with patching
|
||||
mv ${rebuildscriptName}.sh build.sh
|
||||
|
||||
# Scripts use hardcoded compilers and try to copy built libraries into FamiStudio's build tree
|
||||
# Not all scripts use the same compiler, so don't fail on replacing that
|
||||
substituteInPlace build.sh \
|
||||
--replace-fail '../../FamiStudio/' "$out/lib/" \
|
||||
--replace-quiet 'g++' "$CXX"
|
||||
|
||||
# Replacing gcc via sed, would break -static-libgcc otherwise
|
||||
sed -i -e "s/^gcc/$CC/g" build.sh
|
||||
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
# Darwin rebuild scripts try to make a universal2 dylib
|
||||
# - build dylib for non-hostPlatform
|
||||
# - copy built library into special directory for later packaging script
|
||||
# - join two dylibs together into a universal2 dylib
|
||||
# Remove everything we don't need
|
||||
sed -ri \
|
||||
-e '/-target ${if stdenv.hostPlatform.isx86_64 then "arm64" else "x86_64"}/d' \
|
||||
-e '/..\/..\/Setup/d' \
|
||||
build.sh
|
||||
|
||||
# Replace joining multi-arch dylibs with copying dylib for target arch
|
||||
substituteInPlace build.sh \
|
||||
--replace-fail 'lipo -create -output ${libnameBase}.dylib' 'cp ${libnameBase}_${if stdenv.hostPlatform.isx86_64 then "x86_64" else "arm64"}.dylib ${libnameBase}.dylib #'
|
||||
'' + extraPostPatch;
|
||||
|
||||
dontConfigure = true;
|
||||
dontInstall = true; # rebuild script automatically installs
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
mkdir -p $out/lib
|
||||
|
||||
# Delete all prebuilt libraries, make sure everything is rebuilt
|
||||
find . -name '*.so' -or -name '*.dylib' -or -name '*.a' -delete
|
||||
|
||||
# When calling normally, an error won't cause derivation to fail
|
||||
source ./build.sh
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
}
|
|
@ -1,59 +1,108 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchzip
|
||||
, autoPatchelfHook
|
||||
, dotnet-runtime
|
||||
{ stdenv
|
||||
, lib
|
||||
, buildDotnetModule
|
||||
, callPackage
|
||||
, fetchFromGitHub
|
||||
, ffmpeg
|
||||
, libglvnd
|
||||
, glfw
|
||||
, libogg
|
||||
, libvorbis
|
||||
, makeWrapper
|
||||
, openal
|
||||
, portaudio
|
||||
, rtmidi
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
let
|
||||
csprojName = if stdenv.hostPlatform.isLinux then
|
||||
"FamiStudio.Linux"
|
||||
else if stdenv.hostPlatform.isDarwin then
|
||||
"FamiStudio.Mac"
|
||||
else throw "Don't know how to build FamiStudio for ${stdenv.hostPlatform.system}";
|
||||
in
|
||||
buildDotnetModule rec {
|
||||
pname = "famistudio";
|
||||
version = "4.1.3";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/BleuBleu/FamiStudio/releases/download/${version}/FamiStudio${lib.strings.concatStrings (lib.splitVersion version)}-LinuxAMD64.zip";
|
||||
stripRoot = false;
|
||||
hash = "sha256-eAdv0oObczbs8QLGYbxCrdFk/gN5DOCJ1dp/tg8JWIc=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "BleuBleu";
|
||||
repo = "FamiStudio";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-bryxhminkrTVe5qhGeMStZp3NTHBREXrsUlyQkfPkao=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
postPatch = let
|
||||
libname = library: "${library}${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||
buildNativeWrapper = args: callPackage ./build-native-wrapper.nix (args // {
|
||||
inherit version src;
|
||||
sourceRoot = "${src.name}/ThirdParty/${args.depname}";
|
||||
});
|
||||
nativeWrapperToReplaceFormat = args: let
|
||||
libPrefix = lib.optionalString stdenv.hostPlatform.isLinux "lib";
|
||||
in {
|
||||
package = buildNativeWrapper args;
|
||||
expectedName = "${libPrefix}${args.depname}";
|
||||
ourName = "${libPrefix}${args.depname}";
|
||||
};
|
||||
librariesToReplace = [
|
||||
# Unmodified native libraries that we can fully substitute
|
||||
{ package = glfw; expectedName = "libglfw"; ourName = "libglfw"; }
|
||||
{ package = rtmidi; expectedName = "librtmidi"; ourName = "librtmidi"; }
|
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
{ package = openal; expectedName = "libopenal32"; ourName = "libopenal"; }
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
{ package = portaudio; expectedName = "libportaudio.2"; ourName = "libportaudio.2"; }
|
||||
] ++ [
|
||||
# Native libraries, with extra code for the C# wrapping
|
||||
(nativeWrapperToReplaceFormat { depname = "GifDec"; })
|
||||
(nativeWrapperToReplaceFormat { depname = "NesSndEmu"; })
|
||||
(nativeWrapperToReplaceFormat { depname = "NotSoFatso"; extraPostPatch = ''
|
||||
# C++17 does not allow register storage class specifier
|
||||
substituteInPlace build.sh \
|
||||
--replace-fail "$CXX" "$CXX -std=c++14"
|
||||
''; })
|
||||
(nativeWrapperToReplaceFormat { depname = "ShineMp3"; })
|
||||
(nativeWrapperToReplaceFormat { depname = "Stb"; })
|
||||
(nativeWrapperToReplaceFormat { depname = "Vorbis"; buildInputs = [ libogg libvorbis ]; })
|
||||
];
|
||||
libraryReplaceArgs = lib.strings.concatMapStringsSep " "
|
||||
(library: "--replace-fail '${libname library.expectedName}' '${lib.getLib library.package}/lib/${libname library.ourName}'")
|
||||
librariesToReplace;
|
||||
in ''
|
||||
# Don't use any prebuilt libraries
|
||||
rm FamiStudio/*.{dll,dylib,so*}
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
makeWrapper
|
||||
];
|
||||
# Replace copying of vendored prebuilt native libraries with copying of our native libraries
|
||||
substituteInPlace ${projectFile} ${libraryReplaceArgs}
|
||||
|
||||
buildInputs = [
|
||||
dotnet-runtime
|
||||
ffmpeg
|
||||
libglvnd
|
||||
openal
|
||||
];
|
||||
# Un-hardcode target platform if set
|
||||
sed -i -e '/PlatformTarget/d' ${projectFile}
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,lib/famistudio}
|
||||
mv * $out/lib/famistudio
|
||||
|
||||
makeWrapper ${lib.getExe dotnet-runtime} $out/bin/famistudio \
|
||||
--add-flags $out/lib/famistudio/FamiStudio.dll \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libglvnd ]} \
|
||||
--prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
|
||||
|
||||
# Bundled openal lib freezes the application
|
||||
rm $out/lib/famistudio/libopenal32.so
|
||||
ln -s ${openal}/lib/libopenal.so $out/lib/famistudio/libopenal32.so
|
||||
|
||||
runHook postInstall
|
||||
# Don't require a special name to be preserved, our OpenAL isn't 32-bit
|
||||
substituteInPlace FamiStudio/Source/AudioStreams/OpenALStream.cs \
|
||||
--replace-fail 'libopenal32' 'libopenal'
|
||||
'';
|
||||
|
||||
projectFile = "FamiStudio/${csprojName}.csproj";
|
||||
nugetDeps = ./deps.nix;
|
||||
|
||||
executables = [ "FamiStudio" ];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/famistudio
|
||||
for datdir in Setup/Demo\ {Instruments,Songs}; do
|
||||
cp -R "$datdir" $out/share/famistudio/
|
||||
done
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
# FFMpeg looked up from PATH
|
||||
wrapProgram $out/bin/FamiStudio \
|
||||
--prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://famistudio.org/";
|
||||
description = "NES Music Editor";
|
||||
|
@ -62,10 +111,8 @@ stdenv.mkDerivation rec {
|
|||
or Famicom. It is targeted at both chiptune artists and NES homebrewers.
|
||||
'';
|
||||
license = licenses.mit;
|
||||
# Maybe possible to build from source but I'm not too familiar with C# packaging
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
mainProgram = "famistudio";
|
||||
platforms = platforms.unix;
|
||||
mainProgram = "FamiStudio";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# This file was automatically generated by passthru.fetch-deps.
|
||||
# Please dont edit it manually, your changes might get overwritten!
|
||||
|
||||
{ fetchNuGet }: [
|
||||
]
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl jq common-updater-scripts
|
||||
set -eo pipefail
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||
|
||||
deps_file="$(realpath "./deps.nix")"
|
||||
|
||||
new_version="$(curl ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
|
||||
-s "https://api.github.com/repos/BleuBleu/FamiStudio/releases?per_page=1" | jq -r '.[0].tag_name')"
|
||||
old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
|
||||
if [[ "$new_version" == "$old_version" ]]; then
|
||||
echo "Up to date"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cd ../../../..
|
||||
|
||||
if [[ "$1" != "--deps-only" ]]; then
|
||||
update-source-version famistudio "$new_version"
|
||||
fi
|
||||
|
||||
$(nix-build . -A famistudio.fetch-deps --no-out-link) "$deps_file"
|
|
@ -9,18 +9,18 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "go-musicfox";
|
||||
version = "4.3.1";
|
||||
version = "4.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "go-musicfox";
|
||||
repo = pname;
|
||||
repo = "go-musicfox";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-QZHuQAOnthSm7Kb82i3NUWTnKk+9OMHV5vzOU72inX0=";
|
||||
hash = "sha256-J6R3T92cHFUkKwc+GKm612tVjglP2Tc/kDUmzUMhvio=";
|
||||
};
|
||||
|
||||
deleteVendor = true;
|
||||
|
||||
vendorHash = "sha256-6DeoxpjVfykBI3fJAJpMZwJ4VTooIbxGpk5+SW198hU=";
|
||||
vendorHash = "sha256-KSIdBEEvYaYcDIDmzfRO857I8FSN4Ajw6phAPQLYEqg=";
|
||||
|
||||
subPackages = [ "cmd/musicfox.go" ];
|
||||
|
||||
|
|
|
@ -4,18 +4,18 @@ version = 3
|
|||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.0.3"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c"
|
||||
checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.72"
|
||||
version = "1.0.75"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
|
||||
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
|
@ -25,11 +25,11 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|||
|
||||
[[package]]
|
||||
name = "bindgen"
|
||||
version = "0.64.0"
|
||||
version = "0.66.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4"
|
||||
checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"bitflags 2.4.0",
|
||||
"cexpr",
|
||||
"clang-sys",
|
||||
"lazy_static",
|
||||
|
@ -40,7 +40,7 @@ dependencies = [
|
|||
"regex",
|
||||
"rustc-hash",
|
||||
"shlex",
|
||||
"syn 1.0.109",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -51,9 +51,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.3.3"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
|
||||
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
|
||||
|
||||
[[package]]
|
||||
name = "bitmaps"
|
||||
|
@ -76,7 +76,7 @@ version = "0.18.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d859b656775a6b1dd078d3e5924884e6ea88aa649a7fdde03d5b2ec56ffcc10b"
|
||||
dependencies = [
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"cairo-sys-rs",
|
||||
"glib",
|
||||
"libc",
|
||||
|
@ -137,6 +137,7 @@ checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
|
|||
dependencies = [
|
||||
"glob",
|
||||
"libc",
|
||||
"libloading",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -226,7 +227,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.28",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -287,9 +288,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gdk4"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8965ed5455cbfa1eb45c14a3b971cbacb43481913a3a5b9078b2ef0d9a01bd4b"
|
||||
checksum = "6982d9815ed6ac95b0467b189e81f29dea26d08a732926ec113e65744ed3f96c"
|
||||
dependencies = [
|
||||
"cairo-rs",
|
||||
"gdk-pixbuf",
|
||||
|
@ -302,9 +303,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gdk4-sys"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aeffd4a7d68046c28666d817071bf025254aaed4df35099443f0c306ca6177f3"
|
||||
checksum = "dbab43f332a3cf1df9974da690b5bb0e26720ed09a228178ce52175372dcfef0"
|
||||
dependencies = [
|
||||
"cairo-sys-rs",
|
||||
"gdk-pixbuf-sys",
|
||||
|
@ -375,7 +376,7 @@ version = "0.18.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "331156127e8166dd815cf8d2db3a5beb492610c716c03ee6db4f2d07092af0a7"
|
||||
dependencies = [
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-executor",
|
||||
|
@ -404,7 +405,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.28",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -459,9 +460,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gsk4"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53b3b9e8090acb325d08cde84b30fc29b963a75fbac93160e9c5a30d2b335742"
|
||||
checksum = "cc25855255120f294d874acd6eaf4fbed7ce1cdc550e2d8415ea57fafbe816d5"
|
||||
dependencies = [
|
||||
"cairo-rs",
|
||||
"gdk4",
|
||||
|
@ -474,9 +475,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gsk4-sys"
|
||||
version = "0.7.0"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0770d1ede7189092748c4ef5b6921264eb945fd2318a58e8f59dc273000810f8"
|
||||
checksum = "e1ecf3a63bf1223d68f80f72cc896c4d8c80482fbce1c9a12c66d3de7290ee46"
|
||||
dependencies = [
|
||||
"cairo-sys-rs",
|
||||
"gdk4-sys",
|
||||
|
@ -490,9 +491,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gtk4"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0973f9b9ade10fc22403810b7283d47b533033715f2aaa36288cd3bf90d63efc"
|
||||
checksum = "a3b095b26f2a2df70be1805d3590eeb9d7a05ecb5be9649b82defc72dc56228c"
|
||||
dependencies = [
|
||||
"cairo-rs",
|
||||
"field-offset",
|
||||
|
@ -511,9 +512,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gtk4-macros"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae9f2c4530f3168fe506b0be7bc15f7a93ef38d020edb27d81a921a26cbca851"
|
||||
checksum = "d57ec49cf9b657f69a05bca8027cff0a8dfd0c49e812be026fc7311f2163832f"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"proc-macro-crate",
|
||||
|
@ -525,9 +526,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gtk4-sys"
|
||||
version = "0.7.0"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19fde71ef2e78ac8fb18073c345b5f29609048d4045a345613645aa1163243c1"
|
||||
checksum = "7b0bdde87c50317b4f355bcbb4a9c2c414ece1b7c824fb4ad4ba8f3bdb2c6603"
|
||||
dependencies = [
|
||||
"cairo-sys-rs",
|
||||
"gdk-pixbuf-sys",
|
||||
|
@ -629,11 +630,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
|
||||
|
||||
[[package]]
|
||||
name = "libspa"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
name = "libloading"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
|
||||
dependencies = [
|
||||
"bitflags 2.3.3",
|
||||
"cfg-if",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libspa"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcdea6b6663acf456641a4dea1b87fa6970a3e881596237713192d8f5423b542"
|
||||
dependencies = [
|
||||
"bitflags 2.4.0",
|
||||
"cc",
|
||||
"convert_case",
|
||||
"cookie-factory",
|
||||
|
@ -646,8 +658,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "libspa-sys"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e63fc701d3375e6e255765d6a6172d9af06583115e78f3dfe2c8ff1dfd0b2dab"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"cc",
|
||||
|
@ -669,9 +682,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.19"
|
||||
version = "0.4.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
|
||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||
|
||||
[[package]]
|
||||
name = "malloc_buf"
|
||||
|
@ -816,11 +829,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
|||
|
||||
[[package]]
|
||||
name = "pipewire"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "062c97c31818918b8bffdc66cfd93f3e4b4141f505c63234f9ff0a658fddedab"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bitflags 2.3.3",
|
||||
"bitflags 2.4.0",
|
||||
"libc",
|
||||
"libspa",
|
||||
"libspa-sys",
|
||||
|
@ -832,8 +846,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pipewire-sys"
|
||||
version = "0.6.0"
|
||||
source = "git+https://gitlab.freedesktop.org/saivert/pipewire-rs?branch=misc_fixes#46bfbd8bdf0ad3ff1d25d02b2e36f97333c78e23"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d558e2cffe5f97ac32c7e0b6cb6074b5271b8c2c628ac68633342ee08fdab308"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"libspa-sys",
|
||||
|
@ -908,9 +923,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.32"
|
||||
version = "1.0.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
|
||||
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
@ -1045,9 +1060,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.28"
|
||||
version = "2.0.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
|
||||
checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -1081,22 +1096,22 @@ checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab"
|
|||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.44"
|
||||
version = "1.0.47"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90"
|
||||
checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.44"
|
||||
version = "1.0.47"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96"
|
||||
checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.28",
|
||||
"syn 2.0.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1187,9 +1202,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
|||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.5.4"
|
||||
version = "0.5.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acaaa1190073b2b101e15083c38ee8ec891b5e05cbee516521e94ec008f61e64"
|
||||
checksum = "d09770118a7eb1ccaf4a594a221334119a44a814fcb0d31c5b85e83e97227a97"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
@ -1197,9 +1212,9 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "wireplumber"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/saivert/wireplumber.rs.git?branch=use_pipewire_from_git#8dbf383ce54dee7b8d578b87c13f3507a65291f8"
|
||||
source = "git+https://github.com/arcnmx/wireplumber.rs.git?rev=341b0c4e8d177f5f21c109cf88cca4f2dc1f853a#341b0c4e8d177f5f21c109cf88cca4f2dc1f853a"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"bitflags 2.4.0",
|
||||
"gio",
|
||||
"glib",
|
||||
"libc",
|
||||
|
@ -1213,7 +1228,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "wireplumber-sys"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/saivert/wireplumber.rs.git?branch=use_pipewire_from_git#8dbf383ce54dee7b8d578b87c13f3507a65291f8"
|
||||
source = "git+https://github.com/arcnmx/wireplumber.rs.git?rev=341b0c4e8d177f5f21c109cf88cca4f2dc1f853a#341b0c4e8d177f5f21c109cf88cca4f2dc1f853a"
|
||||
dependencies = [
|
||||
"gio-sys",
|
||||
"glib-sys",
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchFromGitLab
|
||||
, cargo
|
||||
, desktop-file-utils
|
||||
, meson
|
||||
|
@ -19,22 +20,33 @@
|
|||
, wireplumber
|
||||
}:
|
||||
|
||||
let
|
||||
wireplumber_0_4 = wireplumber.overrideAttrs (attrs: rec {
|
||||
version = "0.4.17";
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "pipewire";
|
||||
repo = "wireplumber";
|
||||
rev = version;
|
||||
hash = "sha256-vhpQT67+849WV1SFthQdUeFnYe/okudTQJoL3y+wXwI=";
|
||||
};
|
||||
});
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pwvucontrol";
|
||||
version = "0.2";
|
||||
version = "0.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "saivert";
|
||||
repo = "pwvucontrol";
|
||||
rev = version;
|
||||
hash = "sha256-jBvMLewBZi4LyX//YUyJQjqPvxnKqlpuLZAm9zpDMrA=";
|
||||
hash = "sha256-t4JUpKtuO1JgrdsNbl0M/SwPmoqu7WxsaD74vlJeVhY=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.importCargoLock {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"libspa-0.6.0" = "sha256-CVLQ9JXRMo78/kay1TpRgRuk5v/Z5puPVMzLA30JRk8=";
|
||||
"wireplumber-0.1.0" = "sha256-wkku9vqIMdV+HTkWCPXKH2KM1Xzf0xApC5zrVmgxhsA=";
|
||||
"wireplumber-0.1.0" = "sha256-+LZ8xKok2AOegW8WvfrfZGXuQB4xHrLNshcTOHab+xQ=";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -58,7 +70,7 @@ stdenv.mkDerivation rec {
|
|||
libadwaita
|
||||
pango
|
||||
pipewire
|
||||
wireplumber
|
||||
wireplumber_0_4
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -15,13 +15,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "youtube-music";
|
||||
version = "3.3.1";
|
||||
version = "3.3.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "th-ch";
|
||||
repo = "youtube-music";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-N6TzDTKvMyasksE0qcEGKeNjGAD08OzxpmpoQ11/ZW4=";
|
||||
hash = "sha256-JOmcfe7xrKRaxJwj2No3e99HBYbX+ROTjHl5Frc2P9Q=";
|
||||
};
|
||||
|
||||
pnpmDeps = stdenvNoCC.mkDerivation {
|
||||
|
@ -47,10 +47,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
dontFixup = true;
|
||||
outputHashMode = "recursive";
|
||||
outputHash = {
|
||||
x86_64-linux = "sha256-V6CSawxBWFbXmAPbck0xCXqRlANpqFAoqSAB4Duf8qM=";
|
||||
aarch64-linux = "sha256-cqBn35soV14CmobKt0napRELio4HKKA8Iw3QSWTxzP8=";
|
||||
x86_64-darwin = "sha256-DY9T1N8Hxr57/XisYT+u2+hQvYMIiyQ3UHeTuA6BhSY=";
|
||||
aarch64-darwin = "sha256-3Zk0SyhVKaz5QdO69/xzWFZj9ueJS6GLWhfW7odWvHc=";
|
||||
x86_64-linux = "sha256-K2yJdoi+bJpz0Xf2MHlFzQXbP+H3uVE2hYfkzoB7vBE=";
|
||||
aarch64-linux = "sha256-ZiA6XKPnkoAl9m2vEJth2wyDxj61Efye4cUk+76znnM=";
|
||||
x86_64-darwin = "sha256-wh5Y47c5qD2PctROP9AWqLDs7H5S2/8X0zxkSMkr1xQ=";
|
||||
aarch64-darwin = "sha256-e2h4bLVnSEtZcHERsfkNmawgxQHQXxgXrNlFKB+IRTw=";
|
||||
}.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
|
||||
};
|
||||
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
{ lib, fetchurl, appimageTools, }:
|
||||
|
||||
let
|
||||
pname = "ytmdesktop";
|
||||
version = "1.13.0";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ytmdesktop/ytmdesktop/releases/download/v${version}/YouTube-Music-Desktop-App-${version}.AppImage";
|
||||
sha256 = "0f5l7hra3m3q9zd0ngc9dj4mh1lk0rgicvh9idpd27wr808vy28v";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extract { inherit name src; };
|
||||
in appimageTools.wrapType2 rec {
|
||||
inherit name src;
|
||||
|
||||
extraInstallCommands = ''
|
||||
mv $out/bin/{${name},${pname}}
|
||||
|
||||
install -m 444 \
|
||||
-D ${appimageContents}/youtube-music-desktop-app.desktop \
|
||||
-t $out/share/applications
|
||||
substituteInPlace \
|
||||
$out/share/applications/youtube-music-desktop-app.desktop \
|
||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||
cp -r ${appimageContents}/usr/share/icons $out/share
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Desktop App for YouTube Music";
|
||||
homepage = "https://ytmdesktop.app/";
|
||||
license = licenses.cc0;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.lgcl ];
|
||||
mainProgram = "ytmdesktop";
|
||||
};
|
||||
}
|
|
@ -5,16 +5,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "aperture";
|
||||
version = "0.2-beta";
|
||||
version = "0.3-beta";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lightninglabs";
|
||||
repo = "aperture";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-l1fpjCAg+1PGNotKrjFLoYOMEzRNXC1mfdjRPfE0DsY=";
|
||||
hash = "sha256-PsmaNJxWkXiFDA7IGhT+Kx1GUvv23c8L8Jz21/b48oo=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-tWFFmRSDUZXijAUTgR8k4EERHwIEBOyZZZ9BGXso/tU=";
|
||||
vendorHash = "sha256-rrDLdE7c6ykhdqOfRpuxyRO4xqYp3LZvovAppzy1wVw=";
|
||||
|
||||
subPackages = [ "cmd/aperture" ];
|
||||
|
||||
|
@ -22,7 +22,7 @@ buildGoModule rec {
|
|||
description = "L402 (Lightning HTTP 402) Reverse Proxy";
|
||||
homepage = "https://github.com/lightninglabs/aperture";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ sputn1ck ];
|
||||
maintainers = with maintainers; [ sputn1ck HannahMR ];
|
||||
mainProgram = "aperture";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -27,13 +27,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "exodus";
|
||||
version = "24.11.5";
|
||||
version = "24.13.3";
|
||||
|
||||
src = fetchurl {
|
||||
name = "exodus-linux-x64-${version}.zip";
|
||||
url = "https://downloads.exodus.com/releases/${pname}-linux-x64-${version}.zip";
|
||||
curlOptsList = [ "--user-agent" "Mozilla/5.0" ];
|
||||
sha256 = "sha256-sh6Ym+Dm5UIEiESIu1cuY8XSsnJcENCzW7b4S562ax8=";
|
||||
sha256 = "sha256-hhPHWo+nQXgluB6qn57wndX1eslLv3lLpdxm+COGMO8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
|
|
@ -53,9 +53,6 @@ appimageTools.wrapType2 rec {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
# trezor-suite fails to detect a connected hardware wallet
|
||||
# ref: https://github.com/NixOS/nixpkgs/issues/281975
|
||||
broken = true;
|
||||
description = "Trezor Suite - Desktop App for managing crypto";
|
||||
homepage = "https://suite.trezor.io";
|
||||
changelog = "https://github.com/trezor/trezor-suite/releases/tag/v${version}";
|
||||
|
|
|
@ -85,6 +85,8 @@ in
|
|||
|
||||
sv-kalender = callPackage ./manual-packages/sv-kalender { };
|
||||
|
||||
texpresso = callPackage ./manual-packages/texpresso { inherit (pkgs) texpresso; };
|
||||
|
||||
tree-sitter-langs = callPackage ./manual-packages/tree-sitter-langs { final = self; };
|
||||
|
||||
treesit-grammars = callPackage ./manual-packages/treesit-grammars { };
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
{ lib
|
||||
, trivialBuild
|
||||
, texpresso
|
||||
}:
|
||||
trivialBuild {
|
||||
pname = "texpresso";
|
||||
version = texpresso.version;
|
||||
src = texpresso.src;
|
||||
|
||||
preInstall = ''
|
||||
cd emacs
|
||||
'';
|
||||
|
||||
meta = {
|
||||
inherit (texpresso.meta) homepage license;
|
||||
description = "Emacs mode for TeXpresso";
|
||||
maintainers = [ lib.maintainers.alexarice ];
|
||||
};
|
||||
}
|
|
@ -1,29 +1,18 @@
|
|||
{ fetchpatch, fetchzip, lib, rustPlatform, git, installShellFiles, makeWrapper }:
|
||||
{ fetchzip, lib, rustPlatform, git, installShellFiles, makeWrapper }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "helix";
|
||||
version = "23.10";
|
||||
version = "24.03";
|
||||
|
||||
# This release tarball includes source code for the tree-sitter grammars,
|
||||
# which is not ordinarily part of the repository.
|
||||
src = fetchzip {
|
||||
url = "https://github.com/helix-editor/helix/releases/download/${version}/helix-${version}-source.tar.xz";
|
||||
hash = "sha256-PH4n+zm5ShwOrzzQm0Sn8b8JzAW/CF8UzzKZYE3e2WA=";
|
||||
hash = "sha256-1myVGFBwdLguZDPo1jrth/q2i5rn5R2+BVKIkCCUalc=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fixes implicit int error in rescript grammar when building with clang 16.
|
||||
# https://github.com/nkrkv/tree-sitter-rescript/pull/227.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/nkrkv/tree-sitter-rescript/commit/ea93cbf7d9c52f925ed296b4714737e8088f3a19.patch";
|
||||
hash = "sha256-gpGPiy+yEs+dMJEnE5O3WC7iSB/6PLJYBYRcdTx//+o=";
|
||||
extraPrefix = "runtime/grammars/sources/rescript/";
|
||||
stripLen = 1;
|
||||
})
|
||||
];
|
||||
|
||||
cargoHash = "sha256-B8RO6BADDbPchowSfNVgviGvVgH23iF42DdhEBKBQzs=";
|
||||
cargoHash = "sha256-THzPUVcmboVJHu3rJ6rev3GrkNilZRMlitCx7M1+HBE=";
|
||||
|
||||
nativeBuildInputs = [ git installShellFiles makeWrapper ];
|
||||
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
"dataspell": {
|
||||
"update-channel": "DataSpell RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/dataspell-{version}.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "53e4efdf3388207d91f3e3767490172389cb92db449b951768af865b400ca7fe",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.4.tar.gz",
|
||||
"build_number": "233.14475.37"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "ae964f1cc71072629baae84fb32e0d822c6cb9405fe4f724078b0decefe88e41",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.5.tar.gz",
|
||||
"build_number": "233.15026.16"
|
||||
},
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
|
@ -35,26 +35,26 @@
|
|||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/go/goland-{version}.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "bf4cacb8b9f2cc2bf5661d19f1e240debd978a6e043d7e3c2a26f0ba3b409487",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.5.tar.gz",
|
||||
"build_number": "233.14808.20"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "96fb4117d4aedd32ace976f48b6618fe30480b3fbfa81adfef963eb720a442e1",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.6.tar.gz",
|
||||
"build_number": "233.15026.17"
|
||||
},
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "869e534533de1dbce095db6e3fee4a63a3c8fd654052089b83d08b7808495634",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.5.tar.gz",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "5e376677d4b9810f4171700ce9d9d3ece58f245ce8d9f2011b05966df5dd7ddd",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6.tar.gz",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "86f45fb2f171ac1394e2c238c06b9e6e6308ce7982465ae0b86ffded2c329ef8",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.5.tar.gz",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "2bf74ab0eeb8d8d998e7b59581b576786f72c6b70821eb50a2c96dcc0aa44954",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6.tar.gz",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
|
@ -67,27 +67,27 @@
|
|||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "05700ce1b36c0132ff0daf9ddc129e6f2adfbfbac01a55f5881bac8bbaecf66b",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.5.tar.gz",
|
||||
"build_number": "233.14808.18",
|
||||
"version": "2023.3.6",
|
||||
"sha256": "abf03a945460a92cfed41cc1f5cbaab0eb80799cdfbadaac15594a8ddeec1b7e",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6.tar.gz",
|
||||
"build_number": "233.15026.12",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "27546b7900c0da52baa9b14f88406c2b1244c570363e506f225bf101e65cea79",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.4.tar.gz",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "d8ffc4a20b692d506b0e4c4439b77fabca7f3a0fdb7eaddeb6c9edd7cb3febaf",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5.tar.gz",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "41367c6d92f69d33c0f375e4a058fef799be00d14437402371dc8ca3e5f1161e",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.4.tar.gz",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "7e77390d7bba42843e950b1544da718913e6bae8543ce499c01484550df39004",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5.tar.gz",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
|
@ -100,26 +100,26 @@
|
|||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "2ba00db4538fcdbe116b767666529bfe3d015592d8c41234c94cff7f17086630",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.5.tar.gz",
|
||||
"build_number": "233.14808.14"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "d431626f1207d872e708e144056bebd001e25da198e785904b0cc08112daebe8",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6.tar.gz",
|
||||
"build_number": "233.15026.14"
|
||||
},
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover EAP",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.tar.gz",
|
||||
"version": "2023.3 EAP",
|
||||
"sha256": "51b6db1563d68326bd7c8defe1f6c04b428e1a592d06579edfeb0feb60c45077",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14015.155.tar.gz",
|
||||
"build_number": "233.14015.155"
|
||||
"sha256": "489ea17a55e39ddb11e2ba5d98d69dd8353e228ff4ba618a969f0fd2ff55d730",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74.tar.gz",
|
||||
"build_number": "233.14475.74"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "236204a90d47e0dd25002078d3f032e51e03ce6bf214a78bebd28640bdd31908",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.4.tar.gz",
|
||||
"build_number": "233.14475.40"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "deb38fe0f83a616cd07a2ec1243945ec15539c3d3a2e2f27294c5922737f0b5f",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6.tar.gz",
|
||||
"build_number": "233.15026.13"
|
||||
}
|
||||
},
|
||||
"aarch64-linux": {
|
||||
|
@ -142,10 +142,10 @@
|
|||
"dataspell": {
|
||||
"update-channel": "DataSpell RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/dataspell-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "3dbc17eec909f5b4c99b08f07e15c4c5f86b30c3bbffac486bb1afcecfa47782",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.4-aarch64.tar.gz",
|
||||
"build_number": "233.14475.37"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "966b2a9f8b7fc69738388a44b8ebd59b1cd1a5cf8f76b516bfce830500723732",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.15026.16"
|
||||
},
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
|
@ -158,26 +158,26 @@
|
|||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/go/goland-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "79d2f7bca00233710546198a80eb3beb55d0524cd0015781686a2cf9bc36fce8",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.14808.20"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "b4d9159d61aafe431f83f42a7ab5d9e2748e3f3efa1ce915ff2bcf5674d02c80",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.6-aarch64.tar.gz",
|
||||
"build_number": "233.15026.17"
|
||||
},
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "9a4f532f83becaee99d9e2c57c96f016da2d1b26c73ae8e220cc02361c222a5e",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "cfc98c4a09f6740ef47a3dbc8f2e71a66a8aab2eae3fb1b901c2db5dcce5f060",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6-aarch64.tar.gz",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "620a164756338c49c4949dda24716b2269d88e92caddc7566d7fa8625c9ca5cb",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "4427884e3c9f63bad3c8b71c73f268dfc0df5963f87de915b632d14a415a6b9c",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6-aarch64.tar.gz",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
|
@ -190,27 +190,27 @@
|
|||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "bd3f4eca26332ecb1e0a62ffbeee7b0d527a17229bf9998179edb8c0b1e0c524",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.14808.18",
|
||||
"version": "2023.3.6",
|
||||
"sha256": "697ffef0d76788fa35d4911a7d96f76261feec42df3a537773d29c4714b32635",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6-aarch64.tar.gz",
|
||||
"build_number": "233.15026.12",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "9c9678921b118f90519ba73543c63657d262e6aa7a7fe6b2293dcd5f26943531",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.4-aarch64.tar.gz",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "99522aa803eb6fc1570f99286e5d710d5000378e0c116d9a62caea5c7a5ff95e",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "4800ba2575ba2b277785f9d3c9fce05d552c623b41db220f7dfdd886874b7042",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.4-aarch64.tar.gz",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "4a5aef97f10d19b3b4f9e34f244a84592bde730171e0596abcfde1baffb65be4",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
|
@ -223,26 +223,26 @@
|
|||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "91fd717d04512170e181fd77f7cd0a63ef10e4f510a81d124d67a82d5d82a5d8",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.5-aarch64.tar.gz",
|
||||
"build_number": "233.14808.14"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "038023de9fe12771043998cada293db8d1f869374cc48d276ac19c440cb25233",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6-aarch64.tar.gz",
|
||||
"build_number": "233.15026.14"
|
||||
},
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover EAP",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3 EAP",
|
||||
"sha256": "d71b4d2eb3769a3acc2ebb3b3324ca376b86eb6788bf9e85467db8ee60f006c7",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14015.155-aarch64.tar.gz",
|
||||
"build_number": "233.14015.155"
|
||||
"sha256": "e58fc90e714dd98483f10ed48588e2ce95bad049f4967193a8b0c294259ae2ab",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74-aarch64.tar.gz",
|
||||
"build_number": "233.14475.74"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.tar.gz",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "2e072ee801d07961079ef183dec13561726e2c38df68e35fe4be51d8caac585c",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.4-aarch64.tar.gz",
|
||||
"build_number": "233.14475.40"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "826ff930268394c1ffc649586c115f35a1630246ea23b3df4ba446a10b791cec",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6-aarch64.tar.gz",
|
||||
"build_number": "233.15026.13"
|
||||
}
|
||||
},
|
||||
"x86_64-darwin": {
|
||||
|
@ -265,10 +265,10 @@
|
|||
"dataspell": {
|
||||
"update-channel": "DataSpell RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/dataspell-{version}.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "8bc75545a3c502a98e6e8360ab4d0e7639979456d87ec7cb508344d7e3066955",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.4.dmg",
|
||||
"build_number": "233.14475.37"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "596ffeebc9620f5fe94ed104f601157810cc36fa20887a5a12fecb385402c304",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.5.dmg",
|
||||
"build_number": "233.15026.16"
|
||||
},
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
|
@ -281,26 +281,26 @@
|
|||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/go/goland-{version}.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "2d76043909619e7fc59d87cda6c17fac03acaafc20f7a30da0219ef57415386f",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.5.dmg",
|
||||
"build_number": "233.14808.20"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "f83484fc068791733d1411a1ec74a6cbaf5b2ecb4ca2cce462eff6b16b7718a4",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.6.dmg",
|
||||
"build_number": "233.15026.17"
|
||||
},
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "f9ac332146ea4eb01b2d3789c042d62a024c6ccedb7e15bf9b09f506ef0663ac",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.5.dmg",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "c26c884842e8a315430dcf1351255aac4385ab1abd16ccb8a8b1c407a1851355",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6.dmg",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "e31b7b572cb3e908e325707873d1cba53ccff0032c1876cfd7d1d998f247629b",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.5.dmg",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "d54bf2088981678bf4026da4927d39ad686ee25e20dcf374785306076ec98f74",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6.dmg",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
|
@ -313,27 +313,27 @@
|
|||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "536836776189c54f6ba6dc61c344758ba1bc5c8b6191d09c69cfaeaa11ef33dd",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.5.dmg",
|
||||
"build_number": "233.14808.18",
|
||||
"version": "2023.3.6",
|
||||
"sha256": "1972219f45224fd3769fd78ba313ef6379c75d8b4980e049b438a2b2ebb5a977",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6.dmg",
|
||||
"build_number": "233.15026.12",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "492268d99fec38fa81bd02772ed57b243403ecad1f5f28b3a1150502cf8b4a6c",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.4.dmg",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "413b5d5975aef0cc4e8aef3a93719b2c2c3150082944841538c284f525d015e3",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5.dmg",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "59512bbe61a9332f02e78d34b85ab2563b5dac2fa9882519ed27cfcbccef5dc2",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.4.dmg",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "315081d461086495ab07483c5ac3858f6354b1f7bc684114c0d3c511e7ab6932",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5.dmg",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
|
@ -346,26 +346,26 @@
|
|||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "bb25d2e10187c87b809c9ce06ca5d05eb3675dd33bff587b3249117f4c290d01",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.5.dmg",
|
||||
"build_number": "233.14808.14"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "50b9988942ead060eaf01b54aa8aebedf132df3a92b98018f1b78e922bff08f8",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6.dmg",
|
||||
"build_number": "233.15026.14"
|
||||
},
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover EAP",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.dmg",
|
||||
"version": "2023.3 EAP",
|
||||
"sha256": "ceb2f78f0d018b66a2f81ad0e2facc7717e4d2f0fe0a3d3ef9277269afb64dee",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14015.155.dmg",
|
||||
"build_number": "233.14015.155"
|
||||
"sha256": "7d32ac16748977a70830eafeae983138d2f18724ed8255aa6967ce7a329206ec",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74.dmg",
|
||||
"build_number": "233.14475.74"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "5c7f2b3194bf49712456466bfdc58f20bd434f00128c4964d82e9744ee114cf8",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.4.dmg",
|
||||
"build_number": "233.14475.40"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "03220e45e5308664d2c413eb1b928daf6f5b3600305526d0dd230b084bdfbb9c",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6.dmg",
|
||||
"build_number": "233.15026.13"
|
||||
}
|
||||
},
|
||||
"aarch64-darwin": {
|
||||
|
@ -388,10 +388,10 @@
|
|||
"dataspell": {
|
||||
"update-channel": "DataSpell RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/dataspell-{version}-aarch64.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "2b87177f16dc4d31ff0dcf7206e03da3ff811c88ad18711170ca263e02d6ffa5",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.4-aarch64.dmg",
|
||||
"build_number": "233.14475.37"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "b7a73513f9d463025ccd48c0c04a1621f1cda6f21eea4f9aa96a36d03032d957",
|
||||
"url": "https://download.jetbrains.com/python/dataspell-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.15026.16"
|
||||
},
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
|
@ -404,26 +404,26 @@
|
|||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/go/goland-{version}-aarch64.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "2addb56238a56fc91fe6bbbaa5d7ae1d7adc223abb1a12e2575abf85425d1e54",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.14808.20"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "dbf0131ac203ad5bf69a3fb50ded3a5088d207ba6b994d6c5b26b462708f980e",
|
||||
"url": "https://download.jetbrains.com/go/goland-2023.3.6-aarch64.dmg",
|
||||
"build_number": "233.15026.17"
|
||||
},
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "f1f3d2585e4dceff80e5e5ac5e532e5cc94bd6711167c429c3d3c7a6b3c81f09",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "501dc51bc9ac39722f3885bc6116cc426d17cd1ab9afc97e4f3f295049e2e0b3",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6-aarch64.dmg",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "a81096a8f697967df1a2c8564267df81bbee24d88a10011dc3e4340efb66461a",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.14808.21"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "e3a606e04c86d7cfeacde69d00b974a8ad6b175a30d3ea6039afd226a740db25",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6-aarch64.dmg",
|
||||
"build_number": "233.15026.9"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
|
@ -436,27 +436,27 @@
|
|||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "6b4da9083d0e4bd9725c7394981de66e9a633ad797dfb771baf65887b8d18471",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.14808.18",
|
||||
"version": "2023.3.6",
|
||||
"sha256": "892404f4e835b3248094ebf64a7de2c1311b3446e0334ddf90033dc0f226d54b",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6-aarch64.dmg",
|
||||
"build_number": "233.15026.12",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "885ed6dcb7b99147e345ce2d088e2636e8317a5e71ff67e9bc9d0f770266646e",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.4-aarch64.dmg",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "a70dfac39bcd9a049094e1f168d35bb24d37a2b44135178996c50e460ab996fe",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "58dbf1628f59950d40be4ed73199ce92ef36be6735823d9566135ddea16c1718",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.4-aarch64.dmg",
|
||||
"build_number": "233.14475.56"
|
||||
"version": "2023.3.5",
|
||||
"sha256": "6fe15528a5b0badead7f807384ffd138d648fe76f5c684c905a584e204a51138",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.15026.15"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
|
@ -469,26 +469,26 @@
|
|||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}-aarch64.dmg",
|
||||
"version": "2023.3.5",
|
||||
"sha256": "1ea4720ef6559a52901e8627dd100f25951419ab4ce592f602e5bb2359027b6b",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.5-aarch64.dmg",
|
||||
"build_number": "233.14808.14"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "3baa33194fe9f826c88f868d76ff0eea3b2fbb7d73a65a910e83daa18ccff78e",
|
||||
"url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6-aarch64.dmg",
|
||||
"build_number": "233.15026.14"
|
||||
},
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover EAP",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.dmg",
|
||||
"version": "2023.3 EAP",
|
||||
"sha256": "13c986d075c78e6a81db489247fc542014ad46da7cc7bd6fa1710be047ef0884",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14015.155-aarch64.dmg",
|
||||
"build_number": "233.14015.155"
|
||||
"sha256": "f1a11b0d241671b5afe811a76a7e43777d04a4819a3e83432508d53f319deb8f",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74-aarch64.dmg",
|
||||
"build_number": "233.14475.74"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.dmg",
|
||||
"version": "2023.3.4",
|
||||
"sha256": "e8abaf52bc68a9da2873897de4f1aa89510323d4a12dc32fa98b192bc4eae5bc",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.4-aarch64.dmg",
|
||||
"build_number": "233.14475.40"
|
||||
"version": "2023.3.6",
|
||||
"sha256": "ea8262e07318b894f0019003b2df1038d647db0335904d8996827ddaf633c39a",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6-aarch64.dmg",
|
||||
"build_number": "233.15026.13"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,17 +17,17 @@
|
|||
"webstorm"
|
||||
],
|
||||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip"
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip"
|
||||
},
|
||||
"name": "ideavim"
|
||||
},
|
||||
|
@ -36,7 +36,7 @@
|
|||
"idea-ultimate"
|
||||
],
|
||||
"builds": {
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/631/502576/python-233.14808.21.zip"
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/631/509008/python-233.15026.9.zip"
|
||||
},
|
||||
"name": "python"
|
||||
},
|
||||
|
@ -48,7 +48,7 @@
|
|||
],
|
||||
"builds": {
|
||||
"233.13135.979": null,
|
||||
"233.14808.21": null
|
||||
"233.15026.9": null
|
||||
},
|
||||
"name": "kotlin"
|
||||
},
|
||||
|
@ -71,15 +71,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": null,
|
||||
"233.14015.137": null,
|
||||
"233.14015.155": null,
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/6981/487357/ini-233.14475.38.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/6981/487357/ini-233.14475.38.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/6981/487357/ini-233.14475.38.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/6981/487357/ini-233.14475.38.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/6981/502555/ini-233.14808.20.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/6981/502555/ini-233.14808.20.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/6981/502555/ini-233.14808.20.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/6981/502555/ini-233.14808.20.zip"
|
||||
"233.14475.31": null,
|
||||
"233.14475.66": null,
|
||||
"233.14475.74": null,
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip"
|
||||
},
|
||||
"name": "ini"
|
||||
},
|
||||
|
@ -89,8 +89,8 @@
|
|||
"phpstorm"
|
||||
],
|
||||
"builds": {
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/7219/497847/Symfony_Plugin-2023.1.265.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/7219/497847/Symfony_Plugin-2023.1.265.zip"
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/7219/509039/Symfony_Plugin-2023.1.266.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/7219/509039/Symfony_Plugin-2023.1.266.zip"
|
||||
},
|
||||
"name": "symfony-support"
|
||||
},
|
||||
|
@ -100,8 +100,8 @@
|
|||
"phpstorm"
|
||||
],
|
||||
"builds": {
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/7320/346181/PHP_Annotations-9.4.0.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/7320/346181/PHP_Annotations-9.4.0.zip"
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip"
|
||||
},
|
||||
"name": "php-annotations"
|
||||
},
|
||||
|
@ -115,10 +115,10 @@
|
|||
],
|
||||
"builds": {
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/7322/474341/python-ce-233.14015.106.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/7322/474341/python-ce-233.14015.106.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/7322/484110/python-ce-233.14475.9.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/7322/484110/python-ce-233.14475.9.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip"
|
||||
},
|
||||
"name": "python-community-edition"
|
||||
},
|
||||
|
@ -141,13 +141,13 @@
|
|||
"233.13135.979": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip"
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip"
|
||||
},
|
||||
"name": "-deprecated-rust"
|
||||
},
|
||||
|
@ -170,13 +170,13 @@
|
|||
"233.13135.979": null,
|
||||
"233.14015.137": null,
|
||||
"233.14475.31": null,
|
||||
"233.14475.40": null,
|
||||
"233.14475.56": null,
|
||||
"233.14475.66": null,
|
||||
"233.14808.14": null,
|
||||
"233.14808.18": null,
|
||||
"233.14808.20": null,
|
||||
"233.14808.21": null
|
||||
"233.15026.12": null,
|
||||
"233.15026.13": null,
|
||||
"233.15026.14": null,
|
||||
"233.15026.15": null,
|
||||
"233.15026.17": null,
|
||||
"233.15026.9": null
|
||||
},
|
||||
"name": "-deprecated-rust-beta"
|
||||
},
|
||||
|
@ -190,10 +190,10 @@
|
|||
"ruby-mine"
|
||||
],
|
||||
"builds": {
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip"
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip"
|
||||
},
|
||||
"name": "ide-features-trainer"
|
||||
},
|
||||
|
@ -216,15 +216,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip"
|
||||
},
|
||||
"name": "nixidea"
|
||||
},
|
||||
|
@ -234,8 +234,8 @@
|
|||
"idea-ultimate"
|
||||
],
|
||||
"builds": {
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/9568/502583/go-plugin-233.14808.21.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/9568/502583/go-plugin-233.14808.21.zip"
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/9568/508998/go-plugin-233.15026.9.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/9568/508998/go-plugin-233.15026.9.zip"
|
||||
},
|
||||
"name": "go"
|
||||
},
|
||||
|
@ -258,15 +258,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip"
|
||||
},
|
||||
"name": "csv-editor"
|
||||
},
|
||||
|
@ -289,15 +289,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip"
|
||||
},
|
||||
"name": "vscode-keymap"
|
||||
},
|
||||
|
@ -320,15 +320,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip"
|
||||
},
|
||||
"name": "eclipse-keymap"
|
||||
},
|
||||
|
@ -351,15 +351,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip"
|
||||
},
|
||||
"name": "visual-studio-keymap"
|
||||
},
|
||||
|
@ -382,15 +382,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar"
|
||||
},
|
||||
"name": "darcula-pitch-black"
|
||||
},
|
||||
|
@ -411,17 +411,17 @@
|
|||
"webstorm"
|
||||
],
|
||||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip"
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip"
|
||||
},
|
||||
"name": "github-copilot"
|
||||
},
|
||||
|
@ -444,15 +444,15 @@
|
|||
"builds": {
|
||||
"233.13135.979": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14015.137": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14475.40": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14475.56": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14475.66": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14808.14": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14808.18": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14808.20": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip"
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.15026.12": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.15026.13": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.15026.14": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.15026.15": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.15026.17": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip"
|
||||
},
|
||||
"name": "netbeans-6-5-keymap"
|
||||
},
|
||||
|
@ -463,9 +463,9 @@
|
|||
"rust-rover"
|
||||
],
|
||||
"builds": {
|
||||
"233.14015.155": "https://plugins.jetbrains.com/files/22407/498174/intellij-rust-233.24015.155.zip",
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/22407/498174/intellij-rust-233.24015.155.zip",
|
||||
"233.14808.21": "https://plugins.jetbrains.com/files/22407/498174/intellij-rust-233.24015.155.zip"
|
||||
"233.14475.31": "https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip",
|
||||
"233.14475.74": "https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip",
|
||||
"233.15026.9": "https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip"
|
||||
},
|
||||
"name": "rust"
|
||||
}
|
||||
|
@ -476,21 +476,20 @@
|
|||
"https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip": "sha256-IsmoWuUroAp1LLuphp4F1dun4tQOOitZxoG+Nxs5pYk=",
|
||||
"https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip": "sha256-Nb2tSxL+mAY1qJ3waipgV8ep+0R/BaYnzz7zfwtLHmk=",
|
||||
"https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar": "sha256-eXInfAqY3yEZRXCAuv3KGldM1pNKEioNwPB0rIGgJFw=",
|
||||
"https://plugins.jetbrains.com/files/164/491097/IdeaVim-2.9.1-signed.zip": "sha256-cUlxDF2aYw6od+dwLC3Gtv9tOzzMKo4NGZECBodIQPA=",
|
||||
"https://plugins.jetbrains.com/files/17718/499821/github-copilot-intellij-1.5.0.5148.zip": "sha256-/JuPSqFG6VyaDj2IQAYK3Lz7/FQWppfxxXUGuGQggrY=",
|
||||
"https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip": "sha256-mztZWmQhGIuebUzj+FUOgYMMYMNRaiOi5TooNMInSdA=",
|
||||
"https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip": "sha256-lep8ZUOjbV0tsfO/yEWJiHWtwm639zxpc/7L9rCKSsU=",
|
||||
"https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip": "sha256-KrzZTKZMQqoEMw+vDUv2jjs0EX0leaPBkU8H/ecq/oI=",
|
||||
"https://plugins.jetbrains.com/files/22407/498174/intellij-rust-233.24015.155.zip": "sha256-oFg2xlR3gB1DpmhqHlugSjnrBDgAHlwvroqwAHiUAzI=",
|
||||
"https://plugins.jetbrains.com/files/631/502576/python-233.14808.21.zip": "sha256-1YN+brLdFOgcSQwLzafrjbIZ4NWBllaKulLCJ6MfdGI=",
|
||||
"https://plugins.jetbrains.com/files/6981/487357/ini-233.14475.38.zip": "sha256-++4e6qSYfqoP3/M69xyNaNmkhyeX3h8dK9cJabeB5cY=",
|
||||
"https://plugins.jetbrains.com/files/6981/502555/ini-233.14808.20.zip": "sha256-8uDtfKkWfYr2qTD4Etb/zne1IXiiVLKQGJHKIVtp5cI=",
|
||||
"https://plugins.jetbrains.com/files/7219/497847/Symfony_Plugin-2023.1.265.zip": "sha256-lAAu2NamhKjGcVTu5cBlwSX8UP8bkKf9S++CW6xzvkk=",
|
||||
"https://plugins.jetbrains.com/files/7320/346181/PHP_Annotations-9.4.0.zip": "sha256-hT5K4w4lhvNwDzDMDSvsIDGj9lyaRqglfOhlbNdqpWs=",
|
||||
"https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip": "sha256-Ftyamb+ToQNrBxWrxC68e4nyCrX9cQ8ozcauJkmenmE=",
|
||||
"https://plugins.jetbrains.com/files/631/509008/python-233.15026.9.zip": "sha256-Lb0TzM7vr8IZmahGMzdS9GXaxzrCKwG3NFspInRlOG0=",
|
||||
"https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip": "sha256-6sTD+OFO/yA7m5o0XqoJKLcQ4zAFro7Iy7WNPfA49xM=",
|
||||
"https://plugins.jetbrains.com/files/7219/509039/Symfony_Plugin-2023.1.266.zip": "sha256-p0ixoyTuZ2N5LCkraLpG2JDRQsKc1JcJaj6CElkZvOY=",
|
||||
"https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip": "sha256-JIZ6Iq3sOcAm8fBXnjRrG9dqCZuD/WajyVmn1JjYMBA=",
|
||||
"https://plugins.jetbrains.com/files/7322/474341/python-ce-233.14015.106.zip": "sha256-yd70cSA/Icn5YlH4Q79cIWGFJ6huYUBDKk6vCIYa3DU=",
|
||||
"https://plugins.jetbrains.com/files/7322/484110/python-ce-233.14475.9.zip": "sha256-YMB/ewCKE1F/JXI8iau9pKkv9D5D9a8OiTVukkzTocA=",
|
||||
"https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip": "sha256-PUBR9krJ26QrL2jTus0b+uhzkEkT+lGnBKy1f4i/U+w=",
|
||||
"https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip": "sha256-+Lc/avYBLpyIV63DlbhAJtieHDv4HdggqdGFDw9iqN0=",
|
||||
"https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip": "sha256-Hj/CsaQb1U3FN1x2+00Rq2NjC6AWrfuTJL1NiEssfJ4=",
|
||||
"https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip": "sha256-Dwitpu5yLPWx+IUilpN5iqnN8FkKgaxUNjroBEx5lkM=",
|
||||
"https://plugins.jetbrains.com/files/9568/502583/go-plugin-233.14808.21.zip": "sha256-QPZRPCCSta/q9hj0fVlmF26xebAKyUhh/dc27FgJHco="
|
||||
"https://plugins.jetbrains.com/files/9568/508998/go-plugin-233.15026.9.zip": "sha256-K/qqFSrUIf0n4Wh2JGNRuT7SuGlPlQD/pjUI/EVTtxQ="
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17046,7 +17046,7 @@ final: prev:
|
|||
};
|
||||
|
||||
jupytext-nvim = buildVimPlugin {
|
||||
pname = "jupytest-nvim";
|
||||
pname = "jupytext-nvim";
|
||||
version = "2024-01-24";
|
||||
src = fetchFromGitHub {
|
||||
owner = "GCBallesteros";
|
||||
|
@ -17057,5 +17057,41 @@ final: prev:
|
|||
meta.homepage = "https://github.com/GCBallesteros/jupytext.nvim/";
|
||||
};
|
||||
|
||||
improved-search-nvim = buildVimPlugin {
|
||||
pname = "improved-search-nvim";
|
||||
version = "2023-12-21";
|
||||
src = fetchFromGitHub {
|
||||
owner = "backdround";
|
||||
repo = "improved-search.nvim";
|
||||
rev = "9480bfb0e05f990a1658464c1d349dd2acfb9c34";
|
||||
sha256 = "sha256-k35uJZfarjRskS9MgCjSQ3gfl57d+r8vWvw0Uq16Z30=";
|
||||
};
|
||||
meta.homepage = "https://github.com/backdround/improved-search.nvim/";
|
||||
};
|
||||
|
||||
qmk-nvim = buildVimPlugin {
|
||||
pname = "qmk-nvim";
|
||||
version = "2024-02-15";
|
||||
src = fetchFromGitHub {
|
||||
owner = "codethread";
|
||||
repo = "qmk.nvim";
|
||||
rev = "67c1a94b10f7266ac01b0a2431dade70693edba9";
|
||||
sha256 = "sha256-YKp9/unDL52guKRHI50DSPV8nXyPqAHY9mEHUMHFhmc=";
|
||||
};
|
||||
meta.homepage = "https://github.com/codethread/qmk.nvim/";
|
||||
};
|
||||
|
||||
vim-godot = buildVimPlugin {
|
||||
pname = "vim-godot";
|
||||
version = "2024-02-18";
|
||||
src = fetchFromGitHub {
|
||||
owner = "habamax";
|
||||
repo = "vim-godot";
|
||||
rev = "f9c0b36b299efcc4aa4cb119a2be36a83fe10388";
|
||||
sha256 = "sha256-HKp3CQwAOs+7TL8MjWZ2EHLHMZ3Ss7AckAZ5eOjTDEg=";
|
||||
};
|
||||
meta.homepage = "https://github.com/habamax/vim-godot/";
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -395,6 +395,7 @@ https://github.com/edwinb/idris2-vim/,,
|
|||
https://github.com/3rd/image.nvim/,HEAD,
|
||||
https://github.com/samodostal/image.nvim/,HEAD,samodostal-image-nvim
|
||||
https://github.com/lewis6991/impatient.nvim/,,
|
||||
https://github.com/backdround/improved-search.nvim/,HEAD,
|
||||
https://github.com/smjonas/inc-rename.nvim/,HEAD,
|
||||
https://github.com/nishigori/increment-activator/,,
|
||||
https://github.com/haya14busa/incsearch-easymotion.vim/,,
|
||||
|
@ -760,6 +761,7 @@ https://github.com/purescript-contrib/purescript-vim/,,
|
|||
https://github.com/python-mode/python-mode/,,
|
||||
https://github.com/vim-python/python-syntax/,,
|
||||
https://github.com/AlphaTechnolog/pywal.nvim/,,
|
||||
https://github.com/codethread/qmk.nvim/,HEAD,
|
||||
https://github.com/quarto-dev/quarto-nvim/,,
|
||||
https://github.com/unblevable/quick-scope/,,
|
||||
https://github.com/stefandtw/quickfix-reflector.vim/,,
|
||||
|
@ -1098,6 +1100,7 @@ https://github.com/junegunn/vim-github-dashboard/,,
|
|||
https://github.com/tikhomirov/vim-glsl/,,
|
||||
https://github.com/jamessan/vim-gnupg/,,
|
||||
https://github.com/fatih/vim-go/,,
|
||||
https://github.com/habamax/vim-godot/,HEAD,
|
||||
https://github.com/rhysd/vim-grammarous/,,
|
||||
https://github.com/jparise/vim-graphql/,,
|
||||
https://github.com/mhinz/vim-grepper/,,
|
||||
|
|
|
@ -411,12 +411,12 @@ let
|
|||
mktplcRef = {
|
||||
name = "astro-vscode";
|
||||
publisher = "astro-build";
|
||||
version = "2.3.3";
|
||||
sha256 = "sha256-A7+7lnCPAtSWUfHLNKbYqKuTxi2Nx05Qdh5HCkT1dnM=";
|
||||
version = "2.8.3";
|
||||
sha256 = "sha256-A6m31eZMlOHF0yr9MjXmsFyXgH8zmq6WLRd/w85hGw0=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/astro-build.astro-vscode/changelog";
|
||||
description = "Astro language support for VSCode";
|
||||
description = "Astro language support for VS Code";
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode";
|
||||
homepage = "https://github.com/withastro/language-tools";
|
||||
license = lib.licenses.mit;
|
||||
|
@ -997,26 +997,26 @@ let
|
|||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
sha256 = "05kh6sf3jv3510q33chf8s5n1kfp9wcm7650va7mcrdkfr9g8ysq";
|
||||
sha256 = "1y5g8ay9sfz7r21fhwb2wr28yng7w3f2l265ljnfkz8yv8qzqpgk";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
sha256 = "0242h9kq47qvs1xynr5x8dzxkc5pwgb6km0iqpyy9kydg8ng1vp3";
|
||||
sha256 = "14v9p5k9c9s9hfb1ymmkp66kmm9pvnvvljzrrs9wmajss5mlglf5";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
sha256 = "1qm3f2lh8mi3hnyp2bmx7j2lir6fmbbxkzh6b8zf579khhbapnaz";
|
||||
sha256 = "1mngfy42crp8xs14s06rkyzv16ci12bq8y39miyy7wa3a343b0ii";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
sha256 = "18w22z1c5qgkpw2zlwmi9gs9dx1pcm51f0r8my7ynnvgl6mp12sg";
|
||||
sha256 = "1gd1kr91s52kc8ldzy78cbn6gix1b8cvd6jh4sfrhq7k8yyn7g1l";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "continue";
|
||||
publisher = "Continue";
|
||||
version = "0.8.12";
|
||||
version = "0.8.22";
|
||||
} // sources.${stdenv.system};
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
|
@ -2852,10 +2852,13 @@ let
|
|||
mktplcRef = {
|
||||
name = "vscode-docker";
|
||||
publisher = "ms-azuretools";
|
||||
version = "1.24.0";
|
||||
sha256 = "sha256-zZ34KQrRPqVbfGdpYACuLMiMj4ZIWSnJIPac1yXD87k=";
|
||||
version = "1.29.0";
|
||||
sha256 = "sha256-mVRsVsolXj31WhbWnt3Xml+NnIq7Q2uHhUUd1zgW42c=";
|
||||
};
|
||||
meta = {
|
||||
description = "Docker Extension for Visual Studio Code";
|
||||
homepage = "https://github.com/microsoft/vscode-docker";
|
||||
changelog = "https://marketplace.visualstudio.com/items/ms-azuretools.vscode-docker/changelog";
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
};
|
||||
|
@ -2948,6 +2951,23 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
ms-toolsai.datawrangler = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "datawrangler";
|
||||
publisher = "ms-toolsai";
|
||||
version = "0.29.6";
|
||||
sha256 = "sha256-9MR2+hb9YdjIGDfUkdLW41HOxhjeS/San49C8QRZ/YY=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Data viewing, cleaning and preparation for tabular datasets";
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-toolsai.datawrangler";
|
||||
homepage = "https://github.com/microsoft/vscode-data-wrangler";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.katanallama ];
|
||||
};
|
||||
};
|
||||
|
||||
ms-toolsai.jupyter = callPackage ./ms-toolsai.jupyter { };
|
||||
|
||||
ms-toolsai.jupyter-keymap = buildVscodeMarketplaceExtension {
|
||||
|
@ -4020,8 +4040,8 @@ let
|
|||
mktplcRef = {
|
||||
name = "svelte-vscode";
|
||||
publisher = "svelte";
|
||||
version = "107.12.0";
|
||||
sha256 = "036ri011fd0cf91iwv59j57m05mxliy27ms4di2y9jlk7jzmr4s2";
|
||||
version = "108.3.3";
|
||||
sha256 = "sha256-q7w8DPzBLpD+13v7RnyDdC3ocDKAihHBVt3pnwSTwio=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://github.com/sveltejs/language-tools/releases";
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
, isInsiders ? false
|
||||
# sourceExecutableName is the name of the binary in the source archive over
|
||||
# which we have no control and it is needed to run the insider version as
|
||||
# documented in https://nixos.wiki/wiki/Visual_Studio_Code#Insiders_Build
|
||||
# documented in https://wiki.nixos.org/wiki/Visual_Studio_Code#Insiders_Build
|
||||
# On MacOS the insider binary is still called code instead of code-insiders as
|
||||
# of 2023-08-06.
|
||||
, sourceExecutableName ? "code" + lib.optionalString (isInsiders && stdenv.isLinux) "-insiders"
|
||||
|
|
|
@ -38,14 +38,14 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mame";
|
||||
version = "0.263";
|
||||
version = "0.264";
|
||||
srcVersion = builtins.replaceStrings [ "." ] [ "" ] version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mamedev";
|
||||
repo = "mame";
|
||||
rev = "mame${srcVersion}";
|
||||
hash = "sha256-6MH4dMGOekiiq4yE68dIAiWWfvQvFcvqKtT/Z1SQ1aY=";
|
||||
hash = "sha256-0UWMBKM//XWm8PFl60JvTLGaDBMVZFnVrbX4omy2F4I=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "tools" ];
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "irpf";
|
||||
version = "2023-1.5";
|
||||
version = "2024-1.0";
|
||||
|
||||
# https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/download/pgd/dirpf
|
||||
# Para outros sistemas operacionais -> Multi
|
||||
|
@ -19,7 +19,7 @@ stdenvNoCC.mkDerivation rec {
|
|||
year = lib.head (lib.splitVersion version);
|
||||
in fetchzip {
|
||||
url = "https://downloadirpf.receita.fazenda.gov.br/irpf/${year}/irpf/arquivos/IRPF${version}.zip";
|
||||
hash = "sha256-L1X+xysQSJ43TO8NSdO+T4aalampd4REL+5Uv33kYUI=";
|
||||
hash = "sha256-x47Ud/aSfPuZYMZSGhJLnNFtNE62I+WjaFFatJPMPYg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip makeWrapper copyDesktopItems ];
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "f3d";
|
||||
version = "2.3.0";
|
||||
version = "2.3.1";
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
||||
|
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
|
|||
owner = "f3d-app";
|
||||
repo = "f3d";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-pr2xuCy5yoUuj2cjkTh3Xwpg3g7zBspjErEi5luRD6Y=";
|
||||
hash = "sha256-A6PD++wZZfVp/3hV7yefQPhxTpvpZHN0h0pRCxA6vkU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
stdenv.mkDerivation {
|
||||
pname = "hello-wayland";
|
||||
version = "unstable-2023-10-26";
|
||||
version = "0-unstable-2024-03-04";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "emersion";
|
||||
repo = "hello-wayland";
|
||||
rev = "b631afa4f6fd86560ccbdb8c7b6fe42851c06a57";
|
||||
sha256 = "MaBzGZ05uCoeeiglFYHC40hQlPvtDw5sQhqXgtVDySc=";
|
||||
rev = "5f3a35def81116f0a74fcaf5a421d66c6700482d";
|
||||
hash = "sha256-gcLR8gosQlPPgFrxqmRQ6/59RjAfJNX6CcsYP+L+A58=";
|
||||
};
|
||||
|
||||
separateDebugInfo = true;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "komikku";
|
||||
version = "1.38.1";
|
||||
version = "1.39.0";
|
||||
|
||||
format = "other";
|
||||
|
||||
|
@ -28,7 +28,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||
owner = "valos";
|
||||
repo = "Komikku";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-eVNW8Iuhee9WBbiXP7ijvd0K44/IpwdrdiT4RkBNcxI=";
|
||||
hash = "sha256-bAk+F81q0sPSgU8LkpniVJyKaQt6cxUaUzNSZ3f5v0Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{ mkDerivation
|
||||
, fetchurl
|
||||
, lib
|
||||
, extra-cmake-modules
|
||||
, kdoctools
|
||||
|
@ -80,6 +79,10 @@ mkDerivation {
|
|||
)
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit kpmcore;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "KDE Partition Manager";
|
||||
longDescription = ''
|
||||
|
|
|
@ -58,13 +58,13 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bambu-studio";
|
||||
version = "01.08.04.51";
|
||||
version = "01.09.00.60";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bambulab";
|
||||
repo = "BambuStudio";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-rqD1+3Q4ZUBgS57iCItuLX6ZMP7VQuedaJmgKB1szgs=";
|
||||
hash = "sha256-LJK+hGhBXCewbNIBA8CeE01vMQ/n1mO+bervN/y45P0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -74,6 +74,6 @@ stdenv.mkDerivation rec {
|
|||
homepage = "https://gitlab.com/schmiddi-on-mobile/railway";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
mainProgram = "diebahn";
|
||||
maintainers = with lib.maintainers; [ dotlambda ];
|
||||
maintainers = with lib.maintainers; [ dotlambda lilacious ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ buildGoModule rec {
|
|||
description = "Org-mode parser and static site generator in go";
|
||||
homepage = "https://niklasfasching.github.io/go-org";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ payas ];
|
||||
maintainers = with maintainers; [ bhankas ];
|
||||
mainProgram = "go-org";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
RedCloth (4.3.2)
|
||||
asciidoctor (2.0.18)
|
||||
RedCloth (4.3.4)
|
||||
asciidoctor (2.0.22)
|
||||
base64 (0.2.0)
|
||||
builder (3.2.4)
|
||||
concurrent-ruby (1.2.2)
|
||||
concurrent-ruby (1.2.3)
|
||||
crass (1.0.6)
|
||||
creole (0.5.0)
|
||||
execjs (2.8.1)
|
||||
execjs (2.9.1)
|
||||
expression_parser (0.9.0)
|
||||
ffi (1.15.5)
|
||||
ffi (1.16.3)
|
||||
gemojione (4.3.3)
|
||||
json
|
||||
github-markup (4.0.1)
|
||||
github-markup (4.0.2)
|
||||
gollum (5.3.2)
|
||||
gemojione (~> 4.1)
|
||||
gollum-lib (>= 5.2.3, < 6.0)
|
||||
|
@ -45,51 +46,51 @@ GEM
|
|||
mime-types (~> 3.4)
|
||||
rugged (~> 1.5)
|
||||
htmlentities (4.3.4)
|
||||
i18n (1.13.0)
|
||||
i18n (1.14.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
json (2.6.3)
|
||||
json (2.7.1)
|
||||
kramdown (2.4.0)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
loofah (2.20.0)
|
||||
loofah (2.22.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mime-types (3.4.1)
|
||||
nokogiri (>= 1.12.0)
|
||||
mime-types (3.5.2)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2023.0218.1)
|
||||
mini_portile2 (2.8.2)
|
||||
mime-types-data (3.2024.0305)
|
||||
mini_portile2 (2.8.5)
|
||||
multi_json (1.15.0)
|
||||
mustache (1.1.1)
|
||||
mustache-sinatra (2.0.0)
|
||||
mustache (~> 1.0)
|
||||
mustermann (2.0.2)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.14.3)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
nokogiri (1.16.3)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
octicons (12.1.0)
|
||||
nokogiri (>= 1.6.3.1)
|
||||
org-ruby (0.9.12)
|
||||
rubypants (~> 0.2)
|
||||
psych (5.1.0)
|
||||
psych (5.1.2)
|
||||
stringio
|
||||
racc (1.6.2)
|
||||
rack (2.2.7)
|
||||
racc (1.7.3)
|
||||
rack (2.2.9)
|
||||
rack-protection (2.2.4)
|
||||
rack
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rdoc (6.5.0)
|
||||
rdoc (6.6.3.1)
|
||||
psych (>= 4.0.0)
|
||||
rexml (3.2.5)
|
||||
rexml (3.2.6)
|
||||
rouge (3.30.0)
|
||||
rss (0.2.9)
|
||||
rexml
|
||||
ruby2_keywords (0.0.5)
|
||||
rubypants (0.7.1)
|
||||
rugged (1.6.3)
|
||||
rugged (1.7.2)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
|
@ -106,23 +107,24 @@ GEM
|
|||
rack-protection (= 2.2.4)
|
||||
sinatra (= 2.2.4)
|
||||
tilt (~> 2.0)
|
||||
sprockets (3.7.2)
|
||||
sprockets (3.7.3)
|
||||
base64
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-helpers (1.4.0)
|
||||
sprockets (>= 2.2)
|
||||
stringio (3.0.6)
|
||||
stringio (3.1.0)
|
||||
therubyrhino (2.1.2)
|
||||
therubyrhino_jar (>= 1.7.4, < 1.7.9)
|
||||
therubyrhino_jar (1.7.8)
|
||||
tilt (2.1.0)
|
||||
tilt (2.3.0)
|
||||
twitter-text (1.14.7)
|
||||
unf (~> 0.1.0)
|
||||
uglifier (4.2.0)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8.2)
|
||||
unf_ext (0.0.9.1)
|
||||
useragent (0.16.10)
|
||||
webrick (1.8.1)
|
||||
wikicloth (0.8.3)
|
||||
|
@ -144,4 +146,4 @@ DEPENDENCIES
|
|||
wikicloth
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.12
|
||||
2.5.6
|
||||
|
|
|
@ -4,10 +4,20 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "11z3vnd8vh3ny1vx69bjrbck5b2g8zsbj94npyadpn7fdp8y3ldv";
|
||||
sha256 = "1mnan6dxw4aqii9kcmp1s3sc91jiwaqkdpsg6g01fdisb6xz3n56";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.18";
|
||||
version = "2.0.22";
|
||||
};
|
||||
base64 = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.2.0";
|
||||
};
|
||||
builder = {
|
||||
groups = ["default"];
|
||||
|
@ -24,10 +34,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q";
|
||||
sha256 = "1qh1b14jwbbj242klkyz5fc7npd4j0mvndz62gajhvl1l3wd7zc2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.2.2";
|
||||
version = "1.2.3";
|
||||
};
|
||||
crass = {
|
||||
groups = ["default"];
|
||||
|
@ -54,10 +64,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "121h6af4i6wr3wxvv84y53jcyw2sk71j5wsncm6wq6yqrwcrk4vd";
|
||||
sha256 = "1yywajqlpjhrj1m43s3lfg3i4lkb6pxwccmwps7qw37ndmphdzg8";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.8.1";
|
||||
version = "2.9.1";
|
||||
};
|
||||
expression_parser = {
|
||||
groups = ["default"];
|
||||
|
@ -74,10 +84,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
|
||||
sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.15.5";
|
||||
version = "1.16.3";
|
||||
};
|
||||
gemojione = {
|
||||
dependencies = ["json"];
|
||||
|
@ -95,10 +105,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0p40hbrrzq9gypkx0p8wqdqa2gfmmw2cd9a0sv2dw1nnk1qbcl8y";
|
||||
sha256 = "0mv2l0h3v5g4cwqh2lgb3braafh8n3v2s84i573wi5m79f4qhw1z";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.0.1";
|
||||
version = "4.0.2";
|
||||
};
|
||||
gollum = {
|
||||
dependencies = ["gemojione" "gollum-lib" "i18n" "kramdown" "kramdown-parser-gfm" "mustache-sinatra" "octicons" "rdoc" "rss" "sass" "sinatra" "sinatra-contrib" "sprockets" "sprockets-helpers" "therubyrhino" "uglifier" "useragent" "webrick"];
|
||||
|
@ -149,20 +159,20 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x";
|
||||
sha256 = "0lbm33fpb3w06wd2231sg58dwlwgjsvym93m548ajvl6s3mfvpn7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.13.0";
|
||||
version = "1.14.4";
|
||||
};
|
||||
json = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0nalhin1gda4v8ybk6lq8f407cgfrj6qzn234yra4ipkmlbfmal6";
|
||||
sha256 = "0r9jmjhg2ly3l736flk7r2al47b5c8cayh0gqkq0yhjqzc9a6zhq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.6.3";
|
||||
version = "2.7.1";
|
||||
};
|
||||
kramdown = {
|
||||
dependencies = ["rexml"];
|
||||
|
@ -192,10 +202,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1mi4ia13fisc97fzd8xcd9wkjdki7zfbmdn1xkdzplicir68gyp8";
|
||||
sha256 = "1zkjqf37v2d7s11176cb35cl83wls5gm3adnfkn2zcc61h3nxmqh";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.20.0";
|
||||
version = "2.22.0";
|
||||
};
|
||||
mime-types = {
|
||||
dependencies = ["mime-types-data"];
|
||||
|
@ -203,30 +213,30 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb";
|
||||
sha256 = "1r64z0m5zrn4k37wabfnv43wa6yivgdfk6cf2rpmmirlz889yaf1";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.4.1";
|
||||
version = "3.5.2";
|
||||
};
|
||||
mime-types-data = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1pky3vzaxlgm9gw5wlqwwi7wsw3jrglrfflrppvvnsrlaiz043z9";
|
||||
sha256 = "00x7w5xqsj9m33v3vkmy23wipkkysafksib53ypzn27p5g81w455";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2023.0218.1";
|
||||
version = "3.2024.0305";
|
||||
};
|
||||
mini_portile2 = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6";
|
||||
sha256 = "1kl9c3kdchjabrihdqfmcplk3lq4cw1rr9f378y6q22qwy5dndvs";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.8.2";
|
||||
version = "2.8.5";
|
||||
};
|
||||
multi_json = {
|
||||
groups = ["default"];
|
||||
|
@ -276,10 +286,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0fnw0z8zl8b5k35g9m5hhc1g4s6ajzjinhyxnqjrx7l7p07fw71v";
|
||||
sha256 = "0j72sg8n8834vbw2x8glcp46y5r2dls2pj64ll7rmf6mri9s52j9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.14.3";
|
||||
version = "1.16.3";
|
||||
};
|
||||
octicons = {
|
||||
dependencies = ["nokogiri"];
|
||||
|
@ -309,30 +319,30 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1msambb54r3d1sg6smyj4k2pj9h9lz8jq4jamip7ivcyv32a85vz";
|
||||
sha256 = "0s5383m6004q76xm3lb732bp4sjzb6mxb6rbgn129gy2izsj4wrk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.1.0";
|
||||
version = "5.1.2";
|
||||
};
|
||||
racc = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "09jgz6r0f7v84a7jz9an85q8vvmp743dqcsdm3z9c8rqcqv6pljq";
|
||||
sha256 = "01b9662zd2x9bp4rdjfid07h09zxj7kvn7f5fghbqhzc625ap1dp";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.6.2";
|
||||
version = "1.7.3";
|
||||
};
|
||||
rack = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "16w217k9z02c4hqizym8dkj6bqmmzx4qdvqpnskgzf174a5pwdxk";
|
||||
sha256 = "0hj0rkw2z9r1lcg2wlrcld2n3phwrcgqcp7qd1g9a7hwgalh2qzx";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.7";
|
||||
version = "2.2.9";
|
||||
};
|
||||
rack-protection = {
|
||||
dependencies = ["rack"];
|
||||
|
@ -372,30 +382,30 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "05r2cxscapr9saqjw8dlp89as7jvc2mlz1h5kssrmkbz105qmfcm";
|
||||
sha256 = "0ib3cnf4yllvw070gr4bz94sbmqx3haqc5f846fsvdcs494vgxrr";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.5.0";
|
||||
version = "6.6.3.1";
|
||||
};
|
||||
RedCloth = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy";
|
||||
sha256 = "15r2h7rfp4bi9i0bfmvgnmvmw0kl3byyac53rcakk4qsv7yv4caj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.3.2";
|
||||
version = "4.3.4";
|
||||
};
|
||||
rexml = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
|
||||
sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2.5";
|
||||
version = "3.2.6";
|
||||
};
|
||||
rouge = {
|
||||
groups = ["default"];
|
||||
|
@ -443,10 +453,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "016bawsahkhxx7p8azxirpl7y2y7i8a027pj8910gwf6ipg329in";
|
||||
sha256 = "1sccng15h8h3mcjxfgvxy85lfpswbj0nhmzwwsqdffbzqgsb2jch";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.6.3";
|
||||
version = "1.7.2";
|
||||
};
|
||||
sass = {
|
||||
dependencies = ["sass-listen"];
|
||||
|
@ -493,15 +503,15 @@
|
|||
version = "2.2.4";
|
||||
};
|
||||
sprockets = {
|
||||
dependencies = ["concurrent-ruby" "rack"];
|
||||
dependencies = ["base64" "concurrent-ruby" "rack"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
|
||||
sha256 = "0lyc6mx4yalsnxc9yp4a5xra4nz1nwwbk5634wlfncml0ll1bnnw";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.7.2";
|
||||
version = "3.7.3";
|
||||
};
|
||||
sprockets-helpers = {
|
||||
dependencies = ["sprockets"];
|
||||
|
@ -519,10 +529,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "10w46rlh844kax248l1m3pyrj94n1qpc9691j8r5v0rzdxibpy7v";
|
||||
sha256 = "063psvsn1aq6digpznxfranhcpmi0sdv2jhra5g0459sw0x2dxn1";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.0.6";
|
||||
version = "3.1.0";
|
||||
};
|
||||
therubyrhino = {
|
||||
dependencies = ["therubyrhino_jar"];
|
||||
|
@ -550,10 +560,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1qmhi6d9przjzhsyk9g5pq2j75c656msh6xzprqd2mxgphf23jxs";
|
||||
sha256 = "0p3l7v619hwfi781l3r7ypyv1l8hivp09r18kmkn6g11c4yr1pc2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.1.0";
|
||||
version = "2.3.0";
|
||||
};
|
||||
twitter-text = {
|
||||
dependencies = ["unf"];
|
||||
|
@ -593,10 +603,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch";
|
||||
sha256 = "1sf6bxvf6x8gihv6j63iakixmdddgls58cpxpg32chckb2l18qcj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.0.8.2";
|
||||
version = "0.0.9.1";
|
||||
};
|
||||
useragent = {
|
||||
groups = ["default"];
|
||||
|
|
|
@ -14,12 +14,11 @@ GEM
|
|||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
base64 (0.2.0)
|
||||
bigdecimal (3.1.6)
|
||||
bigdecimal (3.1.7)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.2.3)
|
||||
connection_pool (2.4.1)
|
||||
drb (2.2.0)
|
||||
ruby2_keywords
|
||||
drb (2.2.1)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
|
@ -27,12 +26,13 @@ GEM
|
|||
ffi (1.16.3)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (4.1.0)
|
||||
google-protobuf (3.25.3)
|
||||
google-protobuf (4.26.1)
|
||||
rake (>= 13)
|
||||
html-pipeline (2.14.3)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.1)
|
||||
i18n (1.14.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.3.3)
|
||||
addressable (~> 2.4)
|
||||
|
@ -77,9 +77,9 @@ GEM
|
|||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
mini_portile2 (2.8.5)
|
||||
minitest (5.22.2)
|
||||
minitest (5.22.3)
|
||||
mutex_m (0.2.0)
|
||||
nokogiri (1.16.2)
|
||||
nokogiri (1.16.3)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
pathutil (0.16.2)
|
||||
|
@ -91,11 +91,10 @@ GEM
|
|||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.6)
|
||||
rouge (4.2.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rouge (4.2.1)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.71.1)
|
||||
google-protobuf (~> 3.25)
|
||||
sass-embedded (1.72.0)
|
||||
google-protobuf (>= 3.25, < 5.0)
|
||||
rake (>= 13.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
|
|
|
@ -36,10 +36,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "00db5v09k1z3539g1zrk7vkjrln9967k08adh6qx33ng97a2gg5w";
|
||||
sha256 = "0cq1c29zbkcxgdihqisirhcw76xc768z2zpd5vbccpq0l1lv76g7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.6";
|
||||
version = "3.1.7";
|
||||
};
|
||||
colorator = {
|
||||
groups = ["default"];
|
||||
|
@ -72,15 +72,14 @@
|
|||
version = "2.4.1";
|
||||
};
|
||||
drb = {
|
||||
dependencies = ["ruby2_keywords"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
|
||||
sha256 = "0h5kbj9hvg5hb3c7l425zpds0vb42phvln2knab8nmazg2zp5m79";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.0";
|
||||
version = "2.2.1";
|
||||
};
|
||||
em-websocket = {
|
||||
dependencies = ["eventmachine" "http_parser.rb"];
|
||||
|
@ -134,14 +133,15 @@
|
|||
version = "4.1.0";
|
||||
};
|
||||
google-protobuf = {
|
||||
dependencies = ["rake"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r";
|
||||
sha256 = "14s40yxj35vixx9pvpnbrkz9z7ga3m7vcy72yll1flnn3cirl1aj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.25.3";
|
||||
version = "4.26.1";
|
||||
};
|
||||
html-pipeline = {
|
||||
dependencies = ["activesupport" "nokogiri"];
|
||||
|
@ -170,10 +170,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
|
||||
sha256 = "0lbm33fpb3w06wd2231sg58dwlwgjsvym93m548ajvl6s3mfvpn7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.14.1";
|
||||
version = "1.14.4";
|
||||
};
|
||||
jekyll = {
|
||||
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table" "webrick"];
|
||||
|
@ -331,10 +331,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0667vf0zglacry87nkcl3ns8421aydvz71vfa3g3yjhiq8zh19f5";
|
||||
sha256 = "07lq26b86giy3ha3fhrywk9r1ajhc2pm2mzj657jnpnbj1i6g17a";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.22.2";
|
||||
version = "5.22.3";
|
||||
};
|
||||
mutex_m = {
|
||||
groups = ["default"];
|
||||
|
@ -352,10 +352,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "173zavvxlwyi48lfskk48wcrdbkvjlhjhvy4jpcrfx72rpjjx4k8";
|
||||
sha256 = "0j72sg8n8834vbw2x8glcp46y5r2dls2pj64ll7rmf6mri9s52j9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.16.2";
|
||||
version = "1.16.3";
|
||||
};
|
||||
pathutil = {
|
||||
dependencies = ["forwardable-extended"];
|
||||
|
@ -434,20 +434,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1fkfa0iq3r9b0zzrxpxha17avmyzci3kidzmfbf6fd1279mndpb0";
|
||||
sha256 = "1zd1pdldi6h8x27dqim7cy8m69xr01aw5c8k1zhkz497n4np6wgk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.0";
|
||||
};
|
||||
ruby2_keywords = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.0.5";
|
||||
version = "4.2.1";
|
||||
};
|
||||
safe_yaml = {
|
||||
groups = ["default"];
|
||||
|
@ -465,10 +455,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1ccqqkmicqs2nbawyknb17qfafwqq0k6jxibcm86vqd1jp185pxa";
|
||||
sha256 = "0bixk8c02dhflvhi4s5hxzjg8akzgicvjxjvxx74nah2j8qfblq5";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.71.1";
|
||||
version = "1.72.0";
|
||||
};
|
||||
terminal-table = {
|
||||
dependencies = ["unicode-display_width"];
|
||||
|
|
|
@ -14,7 +14,7 @@ GEM
|
|||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
base64 (0.2.0)
|
||||
bigdecimal (3.1.6)
|
||||
bigdecimal (3.1.7)
|
||||
classifier-reborn (2.3.0)
|
||||
fast-stemmer (~> 1.0)
|
||||
matrix (~> 0.4)
|
||||
|
@ -26,8 +26,7 @@ GEM
|
|||
colorator (1.1.0)
|
||||
concurrent-ruby (1.2.3)
|
||||
connection_pool (2.4.1)
|
||||
drb (2.2.0)
|
||||
ruby2_keywords
|
||||
drb (2.2.1)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
|
@ -41,12 +40,13 @@ GEM
|
|||
ffi (1.16.3)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (4.1.0)
|
||||
google-protobuf (3.25.3)
|
||||
google-protobuf (4.26.1)
|
||||
rake (>= 13)
|
||||
html-pipeline (2.14.3)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.1)
|
||||
i18n (1.14.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.3.3)
|
||||
addressable (~> 2.4)
|
||||
|
@ -81,7 +81,7 @@ GEM
|
|||
html-pipeline (~> 2.3)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-polyglot (1.7.0)
|
||||
jekyll-polyglot (1.8.0)
|
||||
jekyll (>= 4.0, >= 3.0)
|
||||
jekyll-redirect-from (0.16.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
|
@ -114,14 +114,14 @@ GEM
|
|||
mercenary (0.4.0)
|
||||
mime-types (3.5.2)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2024.0206)
|
||||
mime-types-data (3.2024.0305)
|
||||
mini_magick (4.12.0)
|
||||
mini_portile2 (2.8.5)
|
||||
minitest (5.22.2)
|
||||
minitest (5.22.3)
|
||||
mutex_m (0.2.0)
|
||||
net-http (0.4.1)
|
||||
uri
|
||||
nokogiri (1.16.2)
|
||||
nokogiri (1.16.3)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
octokit (4.25.1)
|
||||
|
@ -137,14 +137,13 @@ GEM
|
|||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rdoc (6.6.2)
|
||||
rdoc (6.6.3.1)
|
||||
psych (>= 4.0.0)
|
||||
rexml (3.2.6)
|
||||
rouge (4.2.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rouge (4.2.1)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.71.1)
|
||||
google-protobuf (~> 3.25)
|
||||
sass-embedded (1.72.0)
|
||||
google-protobuf (>= 3.25, < 5.0)
|
||||
rake (>= 13.0.0)
|
||||
sawyer (0.9.2)
|
||||
addressable (>= 2.3.5)
|
||||
|
|
|
@ -36,10 +36,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "00db5v09k1z3539g1zrk7vkjrln9967k08adh6qx33ng97a2gg5w";
|
||||
sha256 = "0cq1c29zbkcxgdihqisirhcw76xc768z2zpd5vbccpq0l1lv76g7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.6";
|
||||
version = "3.1.7";
|
||||
};
|
||||
classifier-reborn = {
|
||||
dependencies = ["fast-stemmer" "matrix"];
|
||||
|
@ -126,15 +126,14 @@
|
|||
version = "2.4.1";
|
||||
};
|
||||
drb = {
|
||||
dependencies = ["ruby2_keywords"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
|
||||
sha256 = "0h5kbj9hvg5hb3c7l425zpds0vb42phvln2knab8nmazg2zp5m79";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.2.0";
|
||||
version = "2.2.1";
|
||||
};
|
||||
em-websocket = {
|
||||
dependencies = ["eventmachine" "http_parser.rb"];
|
||||
|
@ -242,14 +241,15 @@
|
|||
version = "4.1.0";
|
||||
};
|
||||
google-protobuf = {
|
||||
dependencies = ["rake"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r";
|
||||
sha256 = "14s40yxj35vixx9pvpnbrkz9z7ga3m7vcy72yll1flnn3cirl1aj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.25.3";
|
||||
version = "4.26.1";
|
||||
};
|
||||
html-pipeline = {
|
||||
dependencies = ["activesupport" "nokogiri"];
|
||||
|
@ -278,10 +278,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
|
||||
sha256 = "0lbm33fpb3w06wd2231sg58dwlwgjsvym93m548ajvl6s3mfvpn7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.14.1";
|
||||
version = "1.14.4";
|
||||
};
|
||||
jekyll = {
|
||||
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table" "webrick"];
|
||||
|
@ -376,10 +376,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "189scj27hczbxp02s5v27r4civfqq2fr981jrp0xldwvcw5qfbll";
|
||||
sha256 = "0xbmsm30jgpbamqvbjvjgfq2w9ihdpqsbay9jrd5pljrbhvy02di";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.7.0";
|
||||
version = "1.8.0";
|
||||
};
|
||||
jekyll-redirect-from = {
|
||||
dependencies = ["jekyll"];
|
||||
|
@ -584,10 +584,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0zpn5brxdf5akh7ij511bkrd30fxd7697shmxxszahqj9m62zvn5";
|
||||
sha256 = "00x7w5xqsj9m33v3vkmy23wipkkysafksib53ypzn27p5g81w455";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2024.0206";
|
||||
version = "3.2024.0305";
|
||||
};
|
||||
mini_magick = {
|
||||
groups = ["default"];
|
||||
|
@ -614,10 +614,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0667vf0zglacry87nkcl3ns8421aydvz71vfa3g3yjhiq8zh19f5";
|
||||
sha256 = "07lq26b86giy3ha3fhrywk9r1ajhc2pm2mzj657jnpnbj1i6g17a";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.22.2";
|
||||
version = "5.22.3";
|
||||
};
|
||||
mutex_m = {
|
||||
groups = ["default"];
|
||||
|
@ -646,10 +646,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "173zavvxlwyi48lfskk48wcrdbkvjlhjhvy4jpcrfx72rpjjx4k8";
|
||||
sha256 = "0j72sg8n8834vbw2x8glcp46y5r2dls2pj64ll7rmf6mri9s52j9";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.16.2";
|
||||
version = "1.16.3";
|
||||
};
|
||||
octokit = {
|
||||
dependencies = ["faraday" "sawyer"];
|
||||
|
@ -741,10 +741,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "14wnrpd1kl43ynk1wwwgv9avsw84d1lrvlfyrjy3d4h7h7ndnqzp";
|
||||
sha256 = "0ib3cnf4yllvw070gr4bz94sbmqx3haqc5f846fsvdcs494vgxrr";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.6.2";
|
||||
version = "6.6.3.1";
|
||||
};
|
||||
rexml = {
|
||||
groups = ["default"];
|
||||
|
@ -761,20 +761,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1fkfa0iq3r9b0zzrxpxha17avmyzci3kidzmfbf6fd1279mndpb0";
|
||||
sha256 = "1zd1pdldi6h8x27dqim7cy8m69xr01aw5c8k1zhkz497n4np6wgk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.0";
|
||||
};
|
||||
ruby2_keywords = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.0.5";
|
||||
version = "4.2.1";
|
||||
};
|
||||
safe_yaml = {
|
||||
groups = ["default"];
|
||||
|
@ -792,10 +782,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1ccqqkmicqs2nbawyknb17qfafwqq0k6jxibcm86vqd1jp185pxa";
|
||||
sha256 = "0bixk8c02dhflvhi4s5hxzjg8akzgicvjxjvxx74nah2j8qfblq5";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.71.1";
|
||||
version = "1.72.0";
|
||||
};
|
||||
sawyer = {
|
||||
dependencies = ["addressable" "faraday"];
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "johnny-reborn-engine";
|
||||
version = "0.30";
|
||||
version = "0.34";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xesf";
|
||||
repo = "jc_reborn";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-n3ELNFvjeDzbamyQIdM9mf/A1sstuhCGzrL9NuXf90Y=";
|
||||
hash = "sha256-JXaYSHpow7Pzy+ATEinET9ffvPIkOmlylnerZJnMUjY=";
|
||||
};
|
||||
|
||||
buildInputs = [ SDL2 ];
|
||||
|
|
|
@ -14,15 +14,15 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "koreader";
|
||||
version = "2023.04";
|
||||
version = "2024.03.1";
|
||||
|
||||
|
||||
src = if stdenv.isAarch64 then fetchurl {
|
||||
url = "https://github.com/koreader/koreader/releases/download/v${version}/koreader-${version}-arm64.deb";
|
||||
sha256 = "sha256-uuspjno0750hQMIB5HEhbV63wCna2izKOHEGIg/X0bU=";
|
||||
hash = "sha256-9Bu+mWfJuPaH5nV71JMrcGipiZWfcf19KfVauCW92+I=";
|
||||
} else fetchurl {
|
||||
url = "https://github.com/koreader/koreader/releases/download/v${version}/koreader-${version}-amd64.deb";
|
||||
sha256 = "sha256-tRUeRB1+UcWT49dchN0YDvd0L5n1YRdtMSFc8yy6m5o=";
|
||||
hash = "sha256-EZ3iqp0A2BZwI343nvvp71RGQx6FPesUBy4Lha4Yz4U=";
|
||||
};
|
||||
|
||||
src_repo = fetchFromGitHub {
|
||||
|
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
|||
owner = "koreader";
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-c3j6hs0W0H2jDg6JVfU6ov7r7kucbqrQqf9PAvYBcJ0=";
|
||||
sha256 = "sha256-gHn1xqBc7M9wkek1Ja1gry8TKIuUxQP8T45x3z2S4uc=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "oxker";
|
||||
version = "0.6.1";
|
||||
version = "0.6.2";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-cUM9+6BZcsrb850fm5mFWpo7/JmxwNDh+upHeE7+DU8=";
|
||||
sha256 = "sha256-pHyIL5Jmldsa0ZNMiYpBD+9zxPv8Blg23nnWD2YmHMI=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-sFBI/+7oGjjUyr3PBkkqdgprGdcaYHtOvqFpkrF4Qx8=";
|
||||
cargoHash = "sha256-N1Cv89njL9QCIs3HclcjsqgSUSMEckis8zyVqepeW70=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A simple tui to view & control docker containers";
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
, libXdmcp
|
||||
, conf ? null
|
||||
, patches ? [ ]
|
||||
# update script dependencies
|
||||
, gitUpdater
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -36,11 +38,13 @@ stdenv.mkDerivation rec {
|
|||
|
||||
installFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
passthru.updateScript = gitUpdater {};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://tools.suckless.org/slstatus/";
|
||||
description = "status monitor for window managers that use WM_NAME like dwm";
|
||||
license = licenses.isc;
|
||||
maintainers = with maintainers; [ oxzi ];
|
||||
maintainers = with maintainers; [ oxzi qusic ];
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "slstatus";
|
||||
};
|
||||
|
|
|
@ -1,35 +1,31 @@
|
|||
{ stdenv, lib, fetchFromGitea, qmake, qttools, qtbase, qtserialport
|
||||
, qtconnectivity, qtcharts, wrapQtAppsHook }:
|
||||
, qtconnectivity, qtcharts, wrapQtAppsHook, fetchpatch }:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ubpm";
|
||||
version = "1.7.3";
|
||||
version = "1.10.0";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "codeberg.org";
|
||||
owner = "LazyT";
|
||||
repo = "ubpm";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-6lvDSU0ssfs71xrac6R6qlmE0QyVcAMTUf0xmJPVzhY=";
|
||||
hash = "sha256-BUUn1WyLT7nm4I+2SpO1ZtIf8isGDy8Za15SiO7sXL8=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace sources/mainapp/mainapp.pro \
|
||||
--replace 'INSTALLDIR = /tmp/ubpm.AppDir' "INSTALLDIR = $out" \
|
||||
--replace '/usr/bin' '/bin' \
|
||||
--replace 'INSTALLS += target translations themes devices help lin' 'INSTALLS += target translations themes devices help'
|
||||
'';
|
||||
patches = [
|
||||
# fixes qmake for nix
|
||||
(fetchpatch {
|
||||
url =
|
||||
"https://codeberg.org/LazyT/ubpm/commit/f18841d6473cab9aa2a9d4c02392b8e103245ef6.diff";
|
||||
hash = "sha256-lgXWu8PUUCt66btj6hVgOFXz3U1BJM3ataSo1MpHkfU=";
|
||||
})
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
cd ./sources/
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
install -Dm644 ../package/lin/ubpm.desktop -t $out/share/applications/
|
||||
install -Dm644 ../package/lin/de.lazyt.ubpm.appdata.xml -t $out/share/metainfo/
|
||||
install -Dm644 ../sources/mainapp/res/ico/app.png $out/share/icons/hicolor/256x256/apps/ubpm.png
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapQtApp $out/bin/ubpm
|
||||
'';
|
||||
|
@ -47,5 +43,6 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
mainProgram = "ubpm";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ kurnevsky ];
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "avalanchego";
|
||||
version = "1.11.2";
|
||||
version = "1.11.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ava-labs";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-E75lqQkaCub/WpxvVHB5YP1E1ygjUURJ1VWrjvcV96o=";
|
||||
hash = "sha256-VeszkBExveXmajnVLHDp9Fc9xngnUKBbVY55L260rds=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Xrr4QE0FN6sII4xOjPbhwBlNgEwOlogKRNStjrjH7H0=";
|
||||
vendorHash = "sha256-8K8loSdeISkA06LBkZgro+mEbQEZY1sdzplq7IKZ4kI=";
|
||||
# go mod vendor has a bug, see: https://github.com/golang/go/issues/57529
|
||||
proxyVendor = true;
|
||||
|
||||
|
|
|
@ -94,11 +94,11 @@ in
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "brave";
|
||||
version = "1.64.109";
|
||||
version = "1.64.113";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||
hash = "sha256-36igba0U3p8i7t91RxeG6PqlKYyHDDlj295ICcYmCNc=";
|
||||
hash = "sha256-T0uVq1yxDXNi6x9ot5bs3NRaOQ+RwBThvULS6EZ+Bdg=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "argocd";
|
||||
version = "2.10.4";
|
||||
version = "2.10.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "argoproj";
|
||||
repo = "argo-cd";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-D7vkVvYLImC9dtqPU3Gxe5sQO92qxnx4533ykBm7u7c=";
|
||||
hash = "sha256-koTNC6ClKgmrgrELxtGz4rKe/VV/9kPK99Cmm50aB94=";
|
||||
};
|
||||
|
||||
proxyVendor = true; # darwin/linux hash mismatch
|
||||
vendorHash = "sha256-O13zMtrXgW3SiJmAn64/QW/CJN0+d0h0MMyEWKsy9WE=";
|
||||
vendorHash = "sha256-BqXTjmeKfCCwdwJ3gSOyvKfuqkjN+0S/1xe5vM406Ig=";
|
||||
|
||||
# Set target as ./cmd per cli-local
|
||||
# https://github.com/argoproj/argo-cd/blob/master/Makefile#L227
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "cloudfoundry-cli";
|
||||
version = "8.7.8";
|
||||
version = "8.7.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cloudfoundry";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-86FY7SfVZ9aEC72VP7KWj3p+wbAyLXLYtugP+Iv0G80=";
|
||||
sha256 = "sha256-uFYeiw2hdX25mUBdudNCC4ZuFEoWyfghWmQR8IsQy+w=";
|
||||
};
|
||||
vendorHash = "sha256-Y46d8g4KoS5DjMMnX8YjgJYg6ax891vlgH9INZZflJI=";
|
||||
vendorHash = "sha256-lvSo8kl2du6Sv7zY3uheXaO6Qg+nblW0jpp2q8+1vyk=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "karmor";
|
||||
version = "1.2.0";
|
||||
version = "1.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubearmor";
|
||||
repo = "kubearmor-client";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-hul348zF81oXTcvcfRpNYiiqfocS3HPwcPdXp7Ij91Y=";
|
||||
hash = "sha256-NNCV/+Jh/tjc7SC4E9/gtiVthVmAxZBOyW3MFISbkH4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-CKOZxmUVZWFb7cc+amPwyMv5ScujWeipEqm95m63SYk=";
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kubectl-view-secret";
|
||||
version = "0.11.0";
|
||||
version = "0.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "elsesiy";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-IdbJQ3YCIPcp09/NORWGezqjbwktObN7TuQdq5uAN4A=";
|
||||
hash = "sha256-5X5rOoERx6HoG3cOBpYm12anMXXDjTtHZzQOOlJeJSs=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Q6OosaHDzq9a2Nt18LGiGJ1C2i1/BRYGaNEBeK0Ohiw=";
|
||||
vendorHash = "sha256-oQvmS05nev+ypfkKAlTN+JbzPux5iAzHsojW8SxtB70=";
|
||||
|
||||
subPackages = [ "./cmd/" ];
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kubedb-cli";
|
||||
version = "0.42.1";
|
||||
version = "0.44.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubedb";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-i+0oQaEHMu3525mJTQyL+Me2DPFSpaIK1xGaPMR2M0s=";
|
||||
sha256 = "sha256-ppsGSzgJvAHRGs6PGPNgE7nDbK8SPYBPNbAlGwocAZs=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
|
|
@ -15,17 +15,17 @@
|
|||
|
||||
buildGoModule rec {
|
||||
inherit pname;
|
||||
version = "2.6.2";
|
||||
version = "2.6.3";
|
||||
tags = lib.optionals enableGateway [ "gateway" ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kumahq";
|
||||
repo = "kuma";
|
||||
rev = version;
|
||||
hash = "sha256-BYnrDB86O2I1DliHpDU65dDbGVmzBhfus4cgb2HpPQ4=";
|
||||
hash = "sha256-m/mCnX/VFUPd3+DY+7znes55myIiJ8+T51NPcgWOiZc=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-p3r0LXqv7X7OyDIlZKfe964fD+E+5lmrToP4rqborlo=";
|
||||
vendorHash = "sha256-otrm8avM35/8WqjSO8V8hMAzsh51unyrMVDv4321xoY=";
|
||||
|
||||
# no test files
|
||||
doCheck = false;
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
{ fetchurl }:
|
||||
let
|
||||
build = "2023.5.310801-latest";
|
||||
in
|
||||
{
|
||||
pname = "lens-desktop";
|
||||
version = "6.5.2";
|
||||
sources = {
|
||||
x86_64-darwin = fetchurl {
|
||||
sha256 = "sha256-AGU1kOQEYBAGqWaxftqSNVdPEblPDujKSBjMeaVNx6M=";
|
||||
url = "https://api.k8slens.dev/binaries/Lens-${build}.dmg";
|
||||
};
|
||||
aarch64-darwin = fetchurl {
|
||||
sha256 = "sha256-Xx+6GPAfjioTrqfFS7cFh6deraR+TtqLlwLbVQxfN8g=";
|
||||
url = "https://api.k8slens.dev/binaries/Lens-${build}-arm64.dmg";
|
||||
};
|
||||
x86_64-linux = fetchurl {
|
||||
sha256 = "sha256-DPgeAhM8k6RXg1Qw2bqJFLPh5q2o7Va6EAe/InQNXLg=";
|
||||
url = "https://api.k8slens.dev/binaries/Lens-${build}.x86_64.AppImage";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,27 +1,20 @@
|
|||
{ lib, stdenv, undmg, fetchurl }:
|
||||
let
|
||||
common = import ./common.nix { inherit fetchurl; };
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
inherit (common) pname version;
|
||||
src = common.sources.${system} or (throw "Source for ${pname} is not available for ${system}");
|
||||
{ stdenv, pname, version, src, meta, undmg }:
|
||||
|
||||
appName = "Lens";
|
||||
stdenv.mkDerivation {
|
||||
inherit pname version src meta;
|
||||
|
||||
sourceRoot = "${appName}.app";
|
||||
sourceRoot = ".";
|
||||
|
||||
nativeBuildInputs = [ undmg ];
|
||||
|
||||
buildInputs = [ undmg ];
|
||||
installPhase = ''
|
||||
mkdir -p "$out/Applications/${appName}.app"
|
||||
cp -R . "$out/Applications/${appName}.app"
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p "$out/Applications"
|
||||
cp -R "Lens.app" "$out/Applications/Lens.app"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "The Kubernetes IDE";
|
||||
homepage = "https://k8slens.dev/";
|
||||
license = licenses.lens;
|
||||
maintainers = with maintainers; [ dbirks ];
|
||||
platforms = [ "x86_64-darwin" "aarch64-darwin" ];
|
||||
};
|
||||
dontFixup = true;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,41 @@
|
|||
{ stdenv, callPackage }:
|
||||
if stdenv.isDarwin then
|
||||
callPackage ./darwin.nix { }
|
||||
{ stdenv
|
||||
, callPackage
|
||||
, fetchurl
|
||||
, lib }:
|
||||
|
||||
let
|
||||
|
||||
pname = "lens-desktop";
|
||||
version = "2024.3.191333";
|
||||
|
||||
sources = {
|
||||
x86_64-linux = {
|
||||
url = "https://api.k8slens.dev/binaries/Lens-${version}-latest.x86_64.AppImage";
|
||||
hash = "sha256-OywOjXzeW/5uyt50JrutiLgem9S1CrlwPFqfK6gUc7U=";
|
||||
};
|
||||
x86_64-darwin = {
|
||||
url = "https://api.k8slens.dev/binaries/Lens-${version}-latest.dmg";
|
||||
hash = "sha256-yf+WBcOdOM3XsfiXJThVws2r84vG2jwfNV1c+sq6A4s=";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
url = "https://api.k8slens.dev/binaries/Lens-${version}-latest-arm64.dmg";
|
||||
hash = "sha256-hhd8MnwKWpvG7UebkeEoztS45SJVnpvvJ9Zy+y5swik=";
|
||||
};
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
inherit (sources.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}")) url hash;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "The Kubernetes IDE";
|
||||
homepage = "https://k8slens.dev/";
|
||||
license = licenses.lens;
|
||||
maintainers = with maintainers; [ dbirks RossComputerGuy starkca90 ];
|
||||
platforms = builtins.attrNames sources;
|
||||
};
|
||||
|
||||
in if stdenv.isDarwin then
|
||||
callPackage ./darwin.nix { inherit pname version src meta; }
|
||||
else
|
||||
callPackage ./linux.nix { }
|
||||
callPackage ./linux.nix { inherit pname version src meta; }
|
||||
|
|
|
@ -1,19 +1,16 @@
|
|||
{ lib, fetchurl, appimageTools, makeWrapper, nss_latest, stdenv }:
|
||||
{ lib, stdenv, pname, version, src, meta, appimageTools, makeWrapper, nss_latest }:
|
||||
let
|
||||
common = import ./common.nix { inherit fetchurl; };
|
||||
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
|
||||
inherit (common) pname version;
|
||||
src = common.sources.${stdenv.hostPlatform.system} or (throw "Source for ${pname} is not available for ${system}");
|
||||
name = "${pname}-${version}";
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
inherit name src;
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
appimageTools.wrapType2 {
|
||||
inherit name src;
|
||||
inherit name src meta;
|
||||
|
||||
extraInstallCommands =
|
||||
''
|
||||
|
@ -29,12 +26,4 @@ appimageTools.wrapType2 {
|
|||
'';
|
||||
|
||||
extraPkgs = _: [ nss_latest ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "The Kubernetes IDE";
|
||||
homepage = "https://k8slens.dev/";
|
||||
license = licenses.lens;
|
||||
maintainers = with maintainers; [ dbirks RossComputerGuy ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "pachyderm";
|
||||
version = "2.9.0";
|
||||
version = "2.9.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pachyderm";
|
||||
repo = "pachyderm";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-5xC0D7XB1db3mxUkzIyvmVIxOlL8XX8Vxpmtf60BQNM=";
|
||||
hash = "sha256-/9j7umcIffG5jAaUW/jmIX5CUD9dUq5/ZKhzbKx0Kw4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-EW8DURf6URPQQMakHnRuF9Xh5iKh2y4cz6XYgXQwJM4=";
|
||||
vendorHash = "sha256-6iwiepmzxZ4cGsPeHQDNFd2VuhmjTAX9kBdjaQPBMKU=";
|
||||
|
||||
subPackages = [ "src/server/cmd/pachctl" ];
|
||||
|
||||
|
|
|
@ -62,10 +62,18 @@ let
|
|||
});
|
||||
in
|
||||
{
|
||||
# A note on EOL and removing old versions:
|
||||
# According to spark's versioning policy (https://spark.apache.org/versioning-policy.html),
|
||||
# minor releases are generally maintained with bugfixes for 18 months. But it doesn't
|
||||
# make sense to remove a given minor version the moment it crosses this threshold.
|
||||
# For example, spark 3.3.0 was released on 2022-06-09. It would have to be removed on 2023-12-09 if
|
||||
# we strictly adhere to the EOL timeline, despite 3.3.4 being released one day before (2023-12-08).
|
||||
# A better policy is to keep these versions around, and clean up EOL versions just before
|
||||
# a new NixOS release.
|
||||
spark_3_5 = spark rec {
|
||||
pname = "spark";
|
||||
version = "3.5.0";
|
||||
hash = "sha256-f+a4a23aOM0GCDoZlZ7WNXs0Olzyh3yMtO8ZmEoYvZ4=";
|
||||
version = "3.5.1";
|
||||
hash = "sha256-ez6Hm8Ss3nl4mxOHyh67ugYH81/thNRMCja6MQ+9Tpg=";
|
||||
};
|
||||
spark_3_4 = spark rec {
|
||||
pname = "spark";
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "terragrunt";
|
||||
version = "0.55.19";
|
||||
version = "0.55.20";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gruntwork-io";
|
||||
repo = pname;
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-Ag5EmgX4xWbKBhXVsGTu5EtjXV3deGETPtsM9IpOr7s=";
|
||||
hash = "sha256-F1+V99MxwPmtF4QHQ6/T1d8ss33R5qZOOP0B+xnGgzI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-ijAg0Y/dfNxDS/Jov7QYjlTZ4N4/jDMH/zCV0jdVXRc=";
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
{ buildGoModule, lib, fetchFromGitHub }:
|
||||
buildGoModule rec {
|
||||
pname = "tfswitch";
|
||||
version = "0.13.1308";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "warrensbox";
|
||||
repo = "terraform-switcher";
|
||||
rev = version;
|
||||
sha256 = "sha256-EyA7LwfL3vCNzd2wpyUbrUnvkM0/f7/cQp+jcAcGZsg=";
|
||||
sha256 = "sha256-zUFnJCYh6XM0HiET45ZRa/ESS/n3XdYKkUJuLiDDRAg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-NX+vzI/Fa/n9ZQjpESes4fNVAmKlA1rqPwSKsL2GEUY=";
|
||||
vendorHash = "sha256-DsC9djgt7Er2m2TacUldpJP43jC0IBklPnu41Saf4DY=";
|
||||
|
||||
# Disable tests since it requires network access and relies on the
|
||||
# presence of release.hashicorp.com
|
||||
|
|
|
@ -10,16 +10,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "werf";
|
||||
version = "1.2.300";
|
||||
version = "1.2.301";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "werf";
|
||||
repo = "werf";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-DWSjdgLjVJHlcXa6QV2KzASFQkCpUDSrtYpx/oa+Ff4=";
|
||||
hash = "sha256-w7gHcHXvCWGzIiq4NvKjha/gs7W8fmNnZPe99lHstIg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-o/s3JZe/lO6smCXVs0ZzOTqGt7ikgTsC4Wo2O9fALe8=";
|
||||
vendorHash = "sha256-pPWX9KtWDgJrQKt9PX1gb0v/DCop8lOxJyAjFZr3RpI=";
|
||||
|
||||
proxyVendor = true;
|
||||
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "coreth";
|
||||
version = "0.13.1";
|
||||
version = "0.13.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ava-labs";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Fdc8U5dN31mfeucmYdi3R+EM5wPvm/i3O1ib3Y30Qng=";
|
||||
hash = "sha256-G3Ovu/tF7gCeddmE91nht/yyqJJtgMyIi7YbTtUFyKo=";
|
||||
};
|
||||
|
||||
# go mod vendor has a bug, see: golang/go#57529
|
||||
proxyVendor = true;
|
||||
|
||||
vendorHash = "sha256-oJ/oz3PtkzEwZw93eoZV2hoD1uOWg2qdxgsvM+nX7mk=";
|
||||
vendorHash = "sha256-IJFRtoDd0GO8mIx8mmGixaYK5JDQeSpUfk0MPPX6cX8=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue