Compare commits
732 Commits
8a3f95b79b
...
db9627d934
Author | SHA1 | Date |
---|---|---|
Mario Rodas | db9627d934 | |
Mario Rodas | 1eb9a6980d | |
Mario Rodas | 89809352ae | |
Mario Rodas | f528650a0b | |
Mario Rodas | 4fac14bbff | |
Mario Rodas | 0cdf9fb24d | |
Mario Rodas | 0cf781e7e6 | |
Pol Dellaiera | 35afb1b26b | |
Mario Rodas | 94e93ea473 | |
Mario Rodas | 5cbbb63f3f | |
Mario Rodas | 1a657ff9e0 | |
Mario Rodas | 333a92f65d | |
Gaetan Lepage | aefe71e9c2 | |
Atemu | a08357633a | |
Sandro | 212e6522de | |
R. Ryantm | 1ca46a5fb5 | |
Martin Weinelt | 8a30b52c56 | |
Pol Dellaiera | 1a536df96d | |
Robert Hensing | 9140927fb0 | |
Martin Weinelt | b03b5c193b | |
Vinny Meller | 786e4d7936 | |
Sandro | 0de7eb7502 | |
Aleksana | c51928b4cb | |
Robert Hensing | 8f805a0660 | |
lassulus | 334650ccd8 | |
Robert Hensing | 837966790c | |
nixpkgs-merge-bot[bot] | a8a74efc76 | |
Martin Weinelt | cfa475854a | |
kirillrdy | c115010a8b | |
Sandro | 6a81ca6b1c | |
Acid Bong | 1d78ac60fe | |
Sandro | 223e9ed9e0 | |
Aleksana | da6b3ea1ae | |
Aleksana | 77cc89c37a | |
Thibaut Marty | a9a456ca79 | |
Aleksana | e3097c24af | |
Stanislav Ochotnický | fc67e85160 | |
kirillrdy | 01cc82d007 | |
R. Ryantm | c9cc0803aa | |
R. Ryantm | 489ed7d208 | |
Aleksana | b6f30f1147 | |
kirillrdy | a604d927cd | |
Aleksana | ed0e28efcc | |
Aleksana | 4da334cea3 | |
R. Ryantm | 65c46489be | |
Aleksana | 367bc40c04 | |
Aleksana | fe18ccaf4e | |
R. Ryantm | 1b962550f3 | |
R. Ryantm | 74c63a1b8b | |
R. Ryantm | 4a038cd596 | |
Fabian Affolter | 57b31f541d | |
Fabian Affolter | 5707aea21d | |
Fabian Affolter | 2f9e6ce004 | |
WrenIX | d8b6b0e4f1 | |
Sandro Jäckel | 17ed00049b | |
Matthias Beyer | e720f4ba1c | |
Jon Seager | c4c9e50cee | |
Martin Weinelt | ce23c154f6 | |
Martin Weinelt | 994c15243a | |
Guillaume Girol | 35d04eadef | |
Markus Kowalewski | e9efb44aa0 | |
Thomas Gerbet | ecd2d35be0 | |
R. Ryantm | 7ff9349968 | |
Marie Ramlow | 99ec14bb44 | |
Marie Ramlow | 802b618473 | |
Marie Ramlow | 2303a0b69d | |
Marie Ramlow | 891a6eaf3a | |
Marie Ramlow | 1f4801e4ad | |
Marie Ramlow | d327c365e0 | |
Marie Ramlow | 1fc7d281e7 | |
Marie Ramlow | 9607306a27 | |
Marie Ramlow | 504920cc22 | |
Marie Ramlow | 0098af6a51 | |
Marie Ramlow | 86913e049d | |
Marie Ramlow | 6ad8088b73 | |
Marie Ramlow | 842f64a078 | |
Anderson Torres | 60f5767ce5 | |
R. Ryantm | def8887b92 | |
Fabian Affolter | 4344054675 | |
Keto | 61d95f2ee6 | |
Fabian Affolter | 9a5f1e04c1 | |
Fabian Affolter | dd1ea090a8 | |
toastal | 50934e28cd | |
nixpkgs-merge-bot[bot] | 4024254182 | |
Nikolay Korotkiy | a9040b7bf8 | |
R. Ryantm | 29eb5c3aa7 | |
R. Ryantm | b717cf8dae | |
R. Ryantm | ad110e2107 | |
Mario Rodas | 1c108068d2 | |
Silvan Mosberger | 6f94ae05d0 | |
Mario Rodas | 03e5609f33 | |
Robert Schütz | b471f1b0c8 | |
Robert Schütz | f628a3ced6 | |
Robert Schütz | 89e03a25be | |
R. Ryantm | a555f88d93 | |
Will Bush | d28fa76260 | |
Mario Rodas | 126feda420 | |
R. Ryantm | 54570becb5 | |
Lin Jian | 8c6ccd9a8f | |
R. Ryantm | 641af575db | |
R. Ryantm | 62a9880586 | |
Mario Rodas | 759b885493 | |
Mario Rodas | c581fbc92c | |
Mario Rodas | f1cf823ef5 | |
Mario Rodas | c41af36650 | |
Silvan Mosberger | b219715cd0 | |
Mario Rodas | 595998e93c | |
kirillrdy | 32fe9d54e6 | |
Mario Rodas | 980976c802 | |
David McFarland | d57d53726a | |
Mario Rodas | d771229e93 | |
Mario Rodas | 8d8fe7688b | |
Mario Rodas | 4fe2d65e9b | |
Mario Rodas | 4232d7a568 | |
R. Ryantm | 7fd37b99d2 | |
Martin Weinelt | 6146d1ef13 | |
Martin Weinelt | 991b36dcbe | |
Yt | b033be5b44 | |
Maxine Aubrey | bef82c5da1 | |
kirillrdy | ffbbdb8b9d | |
Maxine Aubrey | 9e170af5f6 | |
Gaetan Lepage | cdef83d9ed | |
r-vdp | 5df54b52dd | |
Robert Scott | 0a0027cb7c | |
kirillrdy | c8db8bd965 | |
stuebinm | 5996290676 | |
Sergei Trofimovich | 0e857f5855 | |
Yt | cffb1159fd | |
Kirill Radzikhovskyy | 2715a8ad3a | |
Kirill Radzikhovskyy | 416e7fbac8 | |
Kirill Radzikhovskyy | bee3dc5dc6 | |
Kirill Radzikhovskyy | 133bd6a536 | |
Fabian Affolter | 80ad1d77ac | |
Fabian Affolter | 6c5126194b | |
Robert Scott | 0e7e956135 | |
Austin Horstman | 228f2200c6 | |
Fabian Affolter | 2bad838967 | |
Austin Horstman | 465f3fd464 | |
Fabian Affolter | 8d4c855d97 | |
Austin Horstman | 0395ad995a | |
Austin Horstman | f157c50c14 | |
Austin Horstman | 3b0afb7ccc | |
Austin Horstman | fa2dc31242 | |
Austin Horstman | fee6b028cb | |
Austin Horstman | 77164110f2 | |
Robert Scott | 44cbc4f749 | |
Sandro | 374f26f9fb | |
R. Ryantm | 225725baee | |
Martin Weinelt | 51347f6c67 | |
Sandro | 96e0c651cf | |
Martin Weinelt | 3800886ba4 | |
Someone | 7035968845 | |
Thiago Kenji Okada | 83cbc65da6 | |
Mario Rodas | 47108dafe2 | |
Mario Rodas | e421acb18a | |
kashw2 | 041fbed981 | |
Alois Wohlschlager | aadb108adf | |
teutat3s | 867e97bdcf | |
Pol Dellaiera | 3433658c7d | |
Robert Scott | 591b76ca17 | |
Leona Maroni | a79dc90c39 | |
Robert Schütz | 3443d8c40c | |
Daniel Barter | 58169fe819 | |
Aleksana | 76e6d8b1a8 | |
R. Ryantm | 45db777023 | |
Savyasachee Jha | d11082eaeb | |
Aleksana | ca43ec7928 | |
Pascal Bach | 69a8371507 | |
Doron Behar | 4c30aa7284 | |
Aleksana | 2d3babedab | |
Aleksana | 572af610f6 | |
Aleksana | 11962b0826 | |
R. Ryantm | 059875cbaa | |
Leona Maroni | 71b4a60386 | |
Sergio Miguéns Iglesias | 30bc5085b8 | |
Maxine Aubrey | b9f6d690f5 | |
teutat3s | 3257ce1b86 | |
Maxine Aubrey | 3a814215b1 | |
R. Ryantm | e434272bd5 | |
Mauricio Collares | d685a78d51 | |
Bobby Rong | 7dbf403ed5 | |
北雁 Cryolitia | bfd8b17879 | |
Aleksana | 8b6574d6ba | |
Maxine Aubrey | 10deeda9c1 | |
Aditya Puranik | b3431dd54d | |
Jonathan Ringer | 120be13778 | |
Jonathan Ringer | e660db3233 | |
rewine | 5e39a5c112 | |
Gutyina Gergő | d804740da6 | |
novenary | 75110f8b6d | |
Fabian Affolter | b414b4f301 | |
Tom Hubrecht | c4168ca616 | |
Nick Cao | f5333d0a09 | |
Bobby Rong | 90b06e372c | |
Bobby Rong | 2b8708729a | |
Bobby Rong | 232aa8677c | |
Nick Cao | d6dee6bdfb | |
Nick Cao | ef03b5f63c | |
Nick Cao | bec8971f89 | |
K900 | d442ede2c1 | |
Weijia Wang | b357ff81bc | |
K900 | dd83f9af91 | |
Weijia Wang | 8b830844c7 | |
Mario Rodas | 43d1c1ace6 | |
Jörg Thalheim | d6e4440a98 | |
Nick Cao | 6d7edef8d2 | |
Jens Binkert | 691e7e9344 | |
Nick Cao | c54d94b666 | |
Nick Cao | a8fcf8e6e7 | |
Mario Rodas | 93c45310ce | |
Jörg Thalheim | c28b158ae1 | |
Nick Cao | 26b415ca40 | |
Nick Cao | 336ed6a869 | |
Nick Cao | 2de8c3a330 | |
Nick Cao | 4333e7044b | |
Nick Cao | e3e7fc4ad3 | |
Adam C. Stephens | d274696071 | |
Nick Cao | a8cbb7b350 | |
Elliot Cameron | a876233b9a | |
Sebastian Sellmeier | 4c4df4766a | |
Nick Cao | df41b0e624 | |
Nick Cao | 66a6159235 | |
Nick Cao | 1b7b8e94be | |
Nick Cao | e6ed91e604 | |
Nick Cao | 39700fbafd | |
Nick Cao | ab3f95ab3e | |
Nick Cao | b885240d1c | |
R. Ryantm | 489b2faaec | |
Jan Tojnar | 146fe35bbe | |
R. Ryantm | c936873398 | |
Weijia Wang | 448ecffcb4 | |
Nick Cao | e95a16df9f | |
Tom Fitzhenry | 3fd9ef4b40 | |
Weijia Wang | 0c4ac12c32 | |
Laureηt | 069df9cb6a | |
Tom Fitzhenry | 2e51a2fd03 | |
Tom Fitzhenry | 41911ed9d2 | |
Todd Brown | 41facdabeb | |
José Romildo Malaquias | 170f8fc581 | |
Peter Hoeg | 51578032dd | |
Emily Trau | 65f3d712db | |
Sandro | 52053cb756 | |
Sandro | 99608c67ad | |
R. Ryantm | b2b4e0739c | |
Weijia Wang | 4c62c9792c | |
Hamed Benazha | ee9b29d17f | |
Mario Rodas | 3b797493a8 | |
Fabian Affolter | 51dfb8a9c7 | |
Fabian Affolter | f505639614 | |
Fabian Affolter | 3928dfdd28 | |
Fabian Affolter | 422b69f54c | |
Fabian Affolter | be93d8e172 | |
Fabian Affolter | 04822468a6 | |
Adam C. Stephens | b53ce73d70 | |
Jörg Thalheim | 42af289ca0 | |
Florian Klink | 3d92f49c0c | |
Rafael Fernández López | de3ce5ffa7 | |
R. Ryantm | e84bb298e0 | |
Rafael Fernández López | 471ff2c33c | |
Jörg Thalheim | 62731445bd | |
Jörg Thalheim | 0b4cb020ff | |
lucidph3nx | 7264d7e5f8 | |
Martin Weinelt | 8541ec6d85 | |
R. Ryantm | 7810d89664 | |
R. Ryantm | d1ba45bfb5 | |
Florian Klink | 5a2d4496d3 | |
R. Ryantm | 0219cfd0ae | |
7c6f434c | f48462535c | |
7c6f434c | 58f072f4a8 | |
Gaetan Lepage | b0bfbeb4e0 | |
Thiago Kenji Okada | cfad7aa496 | |
Thiago Kenji Okada | b58121a511 | |
Leona Maroni | 79641887c2 | |
Leona Maroni | 4233c635ac | |
R. Ryantm | 4112852702 | |
superherointj | 123edd97fa | |
R. Ryantm | 1cd36a7b6c | |
R. Ryantm | 037f1875b1 | |
Kyle Carberry | 68a917dc64 | |
superherointj | 4a2b6151ad | |
北雁 Cryolitia | 83b4b6129a | |
superherointj | fabeab48c7 | |
Jörg Thalheim | c6d4afecd0 | |
Jörg Thalheim | 48a69f0fb3 | |
Jörg Thalheim | 2d22ed278a | |
Aleksana | c11f3bdd81 | |
kilianar | 75d3b62efc | |
Martin Weinelt | 4e3c385388 | |
Owen Lynch | 8420bae610 | |
nikstur | f74d0ada12 | |
Aleksana | 815ed9b1df | |
Aleksana | 76d00658a4 | |
Fabian Affolter | 5639d22cf7 | |
Fabian Affolter | 3d27edc7ae | |
kirillrdy | e68f2a3779 | |
Fabian Affolter | f747fb3923 | |
Fabian Affolter | 9e9aa732af | |
Fabian Affolter | e456543c9f | |
Fabian Affolter | 9384740b92 | |
Fabian Affolter | 75b1b20fab | |
Fabian Affolter | 29c2f01d9d | |
Rafael Fernández López | db9700fdf0 | |
Fabian Affolter | d7a720efca | |
Weijia Wang | 6ce2c5d6a7 | |
Weijia Wang | bfdb21a463 | |
Fabian Affolter | 738e666505 | |
Fabian Affolter | 722c517b1d | |
Fabian Affolter | 8748ff8ae8 | |
Fabian Affolter | b0cfbcb159 | |
Fabian Affolter | 7a4f45d7cf | |
Fabian Affolter | c5010efa1f | |
R. Ryantm | cf9948c3f6 | |
Fabian Affolter | f3d0985a08 | |
Fabian Affolter | 31748b91a2 | |
Fabian Affolter | b34f126470 | |
Fabian Affolter | 10cf59f9a1 | |
Fabian Affolter | eca2e5722b | |
R. Ryantm | 8be3014c36 | |
R. Ryantm | 569e775391 | |
Weijia Wang | 738918a009 | |
Weijia Wang | e092ac31c2 | |
Weijia Wang | 1bea807aff | |
Fabian Affolter | 33dc1f9e57 | |
Fabian Affolter | d94f14c3b9 | |
Fabian Affolter | c2cd826e23 | |
Fabian Affolter | 7ce7e29051 | |
Gaetan Lepage | 3f5b73f977 | |
Gaetan Lepage | 659817a532 | |
Fabian Affolter | 2be8a17165 | |
Fabian Affolter | 85848f30b8 | |
Fabian Affolter | 8c5f9e4984 | |
Fabian Affolter | c79a45d1d3 | |
Fabian Affolter | 230d7c3f2e | |
Fabian Affolter | 2fc74e541d | |
Fabian Affolter | 4945c0d385 | |
K900 | f7672530de | |
Fabian Affolter | ccc521756c | |
R. Ryantm | 4bcd6b5ad3 | |
Pol Dellaiera | f32b6cf3a9 | |
Gaetan Lepage | db92283eff | |
Gaetan Lepage | f8d3ea2062 | |
K900 | e309661586 | |
R. Ryantm | 9a16d24b10 | |
R. Ryantm | 03cef041d7 | |
Mario Rodas | 72bc2ea5d1 | |
daru | 9e5f017ecc | |
daru | 6f257b6d5a | |
K900 | 6a456955a2 | |
R. Ryantm | a4d4799fbd | |
R. Ryantm | 118f9bd2bd | |
Mario Rodas | ea37601ad4 | |
Mario Rodas | 5773fb4be3 | |
Mario Rodas | 3105f53d4c | |
éclairevoyant | 3941255d59 | |
R. Ryantm | f17136e4b2 | |
R. Ryantm | cb4a3e62f7 | |
Mario Rodas | f2677c36a1 | |
Mario Rodas | a83833c44b | |
Mario Rodas | d5bc930f59 | |
R. Ryantm | 265ed46b85 | |
Kira Bruneau | 093698a9fa | |
Mario Rodas | 2eee5fcc2a | |
Mario Rodas | c1f5835e6b | |
Mario Rodas | d69a2737c4 | |
Anderson Torres | 616be9785f | |
Anderson Torres | 95642f474c | |
Anderson Torres | 2502dd75bd | |
Anderson Torres | a630b7d254 | |
Anderson Torres | 37d8b499a0 | |
Anderson Torres | 03d84869b0 | |
R. Ryantm | cabaa9bada | |
rewine | 3a82632c9b | |
rewine | 6a035997bd | |
Emily | 0e9e20dfe8 | |
R. Ryantm | efc395b921 | |
Lily Foster | 5909e4b51e | |
Alex Mason | 8fd173c977 | |
R. Ryantm | 5226b3d29c | |
R. Ryantm | dcc2d8569f | |
R. Ryantm | ba79f5dfb3 | |
R. Ryantm | 2ebdbcf974 | |
R. Ryantm | 6554f4939c | |
R. Ryantm | cd5dd83807 | |
R. Ryantm | 60ef683c62 | |
R. Ryantm | 473b052240 | |
Franz Pletz | 16da38cd4f | |
fly | c34da84261 | |
R. Ryantm | f685a63133 | |
Felix Buehler | 01494761f6 | |
Paul Meyer | ceead2d7e4 | |
Peder Bergebakken Sundt | 40311becbb | |
OTABI Tomoya | 0bc0740fa3 | |
Nick Cao | bd7bcaddfb | |
R. Ryantm | 90653e46d2 | |
Rafael Fernández López | a71a9aea0c | |
R. Ryantm | 140d47dacc | |
Peder Bergebakken Sundt | a3a1f7ed58 | |
Nikolay Korotkiy | 72c88109de | |
Aaron Andersen | 2f14ab579a | |
Pavol Rusnak | 7a26ee781d | |
Yt | 8b1e612c62 | |
R. Ryantm | 734bf5136c | |
Kira Bruneau | a9bc168a6a | |
Peder Bergebakken Sundt | 52359fe80a | |
Martin Weinelt | 7eec994e13 | |
Peder Bergebakken Sundt | 48633752f2 | |
Jamie Magee | 210f7a618a | |
Jamie Magee | 5a1d3940b8 | |
Fabian Affolter | 10d9c681d0 | |
Fabian Affolter | dd159fd21a | |
Fabian Affolter | 29a7aae02b | |
Fabian Affolter | c50d0c558f | |
Fabian Affolter | 5a6bca9537 | |
Fabian Affolter | af04d1af2e | |
Fabian Affolter | f2059c619d | |
Fabian Affolter | d2213b78e8 | |
Fabian Affolter | 4fc2a318a7 | |
Fabian Affolter | 1f0f9be46f | |
Martin Weinelt | 2a7a80ac27 | |
Peder Bergebakken Sundt | 60158aae64 | |
Fabian Affolter | 5549846d18 | |
Peder Bergebakken Sundt | 088cdb337b | |
Peder Bergebakken Sundt | d7d8ffeaa2 | |
K900 | ee6b0bdaa0 | |
Peder Bergebakken Sundt | 9f3d24eccd | |
R. Ryantm | 1b8a657cc0 | |
R. Ryantm | e9608f00dc | |
Thomas Gerbet | d916daacb1 | |
Silvan Mosberger | 24af4c04ee | |
Matthias Beyer | e41ca779ed | |
R. Ryantm | ed91464081 | |
Maxine Aubrey | ecccf9b8fe | |
K900 | 4a0c2fa837 | |
Zebreus | 7b67f66039 | |
K900 | 513c54588f | |
K900 | 5106caae70 | |
Matthias Beyer | f1efdfc2c8 | |
Matthias Beyer | 38714e4e85 | |
Walter Huf | 100a740c0f | |
Christian Kögler | d1c6f0e1ab | |
Malo Bourgon | d90d1b703c | |
Peder Bergebakken Sundt | 66f5baa891 | |
Nick Cao | 8c38a749cc | |
Gutyina Gergő | 07f3a13157 | |
Peder Bergebakken Sundt | e9007839c2 | |
Nick Cao | 4d6d546e27 | |
Nick Cao | 784dd5330c | |
Nick Cao | bfdc835d7f | |
Nick Cao | 5836b76dc3 | |
Nick Cao | bf3614f341 | |
Artturi | fe5fe245af | |
Nick Cao | 658d24bf1f | |
Nick Cao | 7b0fd2091c | |
Nick Cao | e900b57fc6 | |
Nick Cao | 4ce6107de0 | |
Nick Cao | 7f98be5257 | |
Nick Cao | f20de7f2d6 | |
Matthias Beyer | b45dd74111 | |
Nick Cao | 96d17eb015 | |
Nick Cao | c981f37cf1 | |
Nick Cao | c7ed18535d | |
Nick Cao | 44c0c60d54 | |
Nick Cao | d0fbae86cc | |
Nick Cao | 8571ae539b | |
Nick Cao | 54be68ef1c | |
Nick Cao | 07f7637a69 | |
Nick Cao | 241451973e | |
Nick Cao | bbbd5fdc51 | |
Thomas Gerbet | f0eba8dc51 | |
Nick Cao | ec9c850780 | |
Nick Cao | 84e667372f | |
Jacek Generowicz | e683bf0c60 | |
Nick Cao | c0d278b0f6 | |
Nick Cao | bfcad3988d | |
Nick Cao | 46cbb7276a | |
Ulrik Strid | 51da29234d | |
R. Ryantm | facce1b815 | |
éclairevoyant | 06fa7d16c1 | |
Marcelo Giles | ac259c3a59 | |
Will Bush | 75600cde6b | |
Paul Meyer | 80368c5bef | |
Silvan Mosberger | 3d56b38108 | |
Tobias | 0eae1a3a35 | |
networkException | cbe2cb9d6f | |
R. Ryantm | e4285fcc4d | |
Tobias | f150dbaf81 | |
R. Ryantm | 07a93da00d | |
Robert Schütz | 1e1dc66fe6 | |
Adam C. Stephens | d940860493 | |
Rick van Schijndel | 999dc38f52 | |
José Romildo Malaquias | e35e653b2a | |
Thomas Gerbet | 766a94e0d1 | |
Thomas Gerbet | d6c7fa914e | |
R. Ryantm | 80586b330b | |
R. Ryantm | fc3e60b935 | |
Silvan Mosberger | 6861ef7707 | |
K900 | f98e5d632f | |
Pavol Rusnak | 502200bdc9 | |
chayleaf | 374cc16ac8 | |
chayleaf | 3a30f5e9a5 | |
Daniel Kilimnik | ed9b67d4de | |
Sandro | ab3fc0538d | |
Kira Bruneau | 4872b42921 | |
Nick Cao | 824c003f33 | |
Nick Cao | 2a58fe7ed1 | |
Nick Cao | 2f7984e1c4 | |
Adam Stephens | 8bd1de6d7f | |
Nick Cao | 840969a73f | |
Nick Cao | ccbb553511 | |
Lily Foster | ada481d696 | |
Nick Cao | 1da38179a3 | |
Kira Bruneau | 45d3fe12bb | |
Nick Cao | bd88f76299 | |
Nick Cao | 8b192cd48a | |
Nick Cao | e54da811f3 | |
R. Ryantm | 9260d293d0 | |
Nick Cao | 6a4604660d | |
John Ericson | da831a4b42 | |
Nick Cao | 3afcb00f90 | |
Artturin | 3239171fe6 | |
Nick Cao | 854dabd0de | |
Kira Bruneau | 16986ab608 | |
K900 | 36cfd24c12 | |
Ali Abrar | f0b2aa7354 | |
daru | 67239c4d4a | |
Janne Heß | 0a79256e0d | |
Markus Kowalewski | e5ae0630fd | |
Martin Weinelt | adb839a9ac | |
Martin Weinelt | 21498067f7 | |
R. Ryantm | cd7bb6126c | |
Peder Bergebakken Sundt | 06fc875337 | |
R. Ryantm | 6a28bf7572 | |
R. Ryantm | c5bdaa8253 | |
nixpkgs-merge-bot[bot] | d1b037e02b | |
Maximilian Bosch | e8e9c5c3b1 | |
Paul Meyer | 6debc2123a | |
Hamed Benazha | 44744035ff | |
R. Ryantm | 1cddc002f4 | |
Lily Foster | ddb94deafa | |
Lily Foster | c588edaf25 | |
R. Ryantm | 5b0e42429a | |
Sandro Jäckel | 8db512dae8 | |
Artturi | 826abd26e9 | |
R. Ryantm | b702f1e69a | |
R. Ryantm | 657ad0f3c7 | |
Martin Wimpress | 6c309c37ab | |
Simon Struck | b81e02613c | |
Simon Struck | e8b6d29b6d | |
Thiago Kenji Okada | bd509c2fec | |
R. Ryantm | 38ea017d79 | |
dependabot[bot] | 8533a6f3f8 | |
dependabot[bot] | 6bc4e63f5f | |
Thiago Kenji Okada | ee1428c654 | |
Pascal Wittmann | f5ebad1a80 | |
R. Ryantm | cda9faf00a | |
Matthias Beyer | 207dcfac62 | |
Matthias Beyer | e4f39d4cd8 | |
Matthias Beyer | d9fad944dd | |
Matthias Beyer | 37e78013e8 | |
Matthias Beyer | 91d07442f6 | |
R. Ryantm | 9b1a0cadd9 | |
R. Ryantm | cba6664c24 | |
R. Ryantm | 700546b2c1 | |
Arjan Schrijver | 476a7bfaa3 | |
Stanisław Pitucha | 8e54038847 | |
Pavel Roskin | 2456bfc6c3 | |
Fabian Affolter | f1b7d78325 | |
Fabian Affolter | d0302a298c | |
Jakuzure Nonon | 9bf5100f71 | |
R. Ryantm | cbf36308a5 | |
Fabian Affolter | 1cd9327dc4 | |
Fabian Affolter | 3e97b42b82 | |
Fabian Affolter | 03cf072bfa | |
Alexis Hildebrandt | 01f8eb1383 | |
Gaetan Lepage | 383249860e | |
Fabian Affolter | 75b43a467e | |
Fabian Affolter | 161c71f5b7 | |
Fabian Affolter | 4f63d0846f | |
Fabian Affolter | a933217c14 | |
Fabian Affolter | b87173a6ad | |
R. Ryantm | 35e2279be6 | |
R. Ryantm | 2a7974fe9b | |
R. Ryantm | 1ba8ecf069 | |
R. Ryantm | 25ee61a4b4 | |
R. Ryantm | a60104eaf7 | |
R. Ryantm | 011fdb05da | |
R. Ryantm | f576198e98 | |
R. Ryantm | 9328673773 | |
Robert Schütz | 6a57711408 | |
R. Ryantm | e1c38d17a0 | |
R. Ryantm | 157b2441a7 | |
Ryan Horiguchi | 78b6890438 | |
Gaetan Lepage | ec6c7d7c90 | |
Gaetan Lepage | 6b8cec207b | |
Gaetan Lepage | c7294aaf81 | |
Gaetan Lepage | caa3289d46 | |
Gaetan Lepage | 8347d265bf | |
R. Ryantm | c7841bef95 | |
Maximilian Bosch | 7bb471b3e8 | |
superherointj | 824ba81943 | |
superherointj | 1912515d37 | |
superherointj | e53463627c | |
superherointj | 2af4510ed2 | |
superherointj | aa3a280b8d | |
TomaSajt | 07fcd33b93 | |
Weijia Wang | cf93020709 | |
birkb | e475ed648e | |
Peder Bergebakken Sundt | 18e3728274 | |
vytskalt | 75b5cf2710 | |
Vincenzo Mantova | e1835b5011 | |
Vincenzo Mantova | 4be0d11e2e | |
Felix Buehler | acfd21135b | |
R. Ryantm | 07f3dbf22d | |
Tony Narlock | f90ad8afb5 | |
R. Ryantm | 9f7cb709c1 | |
Artturin | eb11fbdab7 | |
Artturin | 38876bf2d7 | |
Artturin | a324761827 | |
Artturin | 9e35527f8d | |
Artturin | 89b8f2e298 | |
Artturin | 08cf70ce5a | |
José Romildo | b5ed51215e | |
Robert Hensing | 33e02424d2 | |
R. Ryantm | 5d571400e4 | |
DontEatOreo | 34604d4149 | |
kilianar | 0dd89bbdc6 | |
R. Ryantm | fdcc5233d8 | |
R. Ryantm | e4ff4ccc0c | |
R. Ryantm | e5b83af91b | |
Mario Rodas | d1d5568d94 | |
Mario Rodas | 8fcdec4243 | |
Mario Rodas | 779ba6696b | |
Mario Rodas | 30de194f80 | |
R. Ryantm | a92a4878ab | |
Robert Schütz | 4ab4ab0e2a | |
R. Ryantm | cf2633cdb6 | |
Enric Morales | 72c2b8bc87 | |
Robert Schütz | 8cb6569074 | |
matthewcroughan | 27843dd410 | |
matthewcroughan | 8463dad6c8 | |
Donovan Glover | cd5f77b5a8 | |
R. Ryantm | 7daa782ef3 | |
R. Ryantm | 2e123b6f6d | |
daru | e7f04d8cb9 | |
R. Ryantm | f284c34780 | |
R. Ryantm | 72b5564c4d | |
natsukium | 8902f1bfd0 | |
natsukium | 18a4e0830c | |
R. Ryantm | 96a74aa982 | |
Anderson Torres | 2a6bc86a37 | |
Malo Bourgon | bf047fe5d9 | |
R. Ryantm | 1fb5e20587 | |
R. Ryantm | cc7c76e1f4 | |
Atemu | 51a865e8e4 | |
Atemu | 2dc85cf8c0 | |
R. Ryantm | 4884f67df1 | |
R. Ryantm | d4558d707a | |
R. Ryantm | 6834a0d260 | |
R. Ryantm | 0cb12b719b | |
R. Ryantm | 82468379d3 | |
R. Ryantm | fdb56277ab | |
Sergei Trofimovich | 16c31e6a1e | |
R. Ryantm | 5ed50acd51 | |
chiroptical | 6e6181d1d8 | |
R. Ryantm | 53036eeac1 | |
R. Ryantm | 2e89eb4605 | |
R. Ryantm | 05410eafea | |
R. Ryantm | 6a121887fa | |
Rexiel Scarlet | ce6fec6586 | |
R. Ryantm | a162b35b1d | |
R. Ryantm | 2747deeb49 | |
R. Ryantm | 0107e9e6d7 | |
Vaci | db894a928a | |
R. Ryantm | c2d6f57960 | |
R. Ryantm | 959b906d04 | |
David McFarland | 57d6e5bda6 | |
R. Ryantm | 283a281585 | |
R. Ryantm | a673115e96 | |
R. Ryantm | 41033c8438 | |
R. Ryantm | 1aae1c31e8 | |
R. Ryantm | fa78a15eb3 | |
R. Ryantm | 4883fc4008 | |
R. Ryantm | 39f864ddfb | |
R. Ryantm | 85f37b0dbb | |
R. Ryantm | ec4f269ddd | |
R. Ryantm | 4d7f8d9e71 | |
David McFarland | bd934093f4 | |
David McFarland | 81693c96ba | |
David McFarland | 7150d7e203 | |
David McFarland | 767d892193 | |
Moritz Sanft | 5005f0f0b2 | |
Charlotte Van Petegem | 7a3dbe9ad8 | |
Gaetan Lepage | c8e7f71b44 | |
R. Ryantm | 03e73b1151 | |
Qyriad | 14ef362b0f | |
Qyriad | fb41c8c622 | |
Robert Scott | 2666e17d3f | |
R. Ryantm | 447f80a66f | |
r-vdp | 9258f57625 | |
R. Ryantm | b6ed076fc3 | |
Tony Zorman | cd384ccef3 | |
Tony Zorman | abd1c832fd | |
Tony Zorman | 855607aa20 | |
Tony Zorman | f3d864521b | |
TomaSajt | d1daaeb128 | |
imad.nyc | 7dc39246a0 | |
qubitnano | 3d00195259 | |
Philipp Arras | b556b8b378 | |
Sergio Miguéns Iglesias | ac7cf00591 | |
Cole Mickens | 5e264e2d13 | |
Yueh-Shun Li | 751e9b6c7f | |
Sergio Miguéns Iglesias | 03339517ec | |
TomaSajt | 971f75d50d | |
Hunter Haugen | acd985cdae | |
Shogo Takata | 9dcacf5377 | |
Robert Schütz | 7e2aa854bf | |
TomaSajt | 6ab1bed5eb | |
Robert Schütz | 160997c793 | |
TomaSajt | d36c0cca7f | |
TomaSajt | 287d631ab3 | |
TomaSajt | 1c2d9d6f45 | |
Robert Schütz | da10634406 | |
Robert Schütz | 39c11f587e | |
Philip Hayes | bf15997e3d | |
Philip Hayes | 9dd20575b3 | |
Philip Hayes | fd3978c164 | |
Philip Hayes | 418b770aab | |
Philip Hayes | 6721126b85 | |
Philip Hayes | 422a893019 | |
Philip Hayes | 25955eed5c | |
Philip Hayes | 3a38edd589 | |
Gabriel Arazas | 6944778bdb |
|
@ -20,7 +20,7 @@ jobs:
|
||||||
if: github.repository_owner == 'NixOS' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
|
if: github.repository_owner == 'NixOS' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
- name: Create backport PRs
|
- name: Create backport PRs
|
||||||
|
|
|
@ -18,7 +18,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
|
# we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
- uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26
|
- uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26
|
||||||
- uses: cachix/cachix-action@18cf96c7c98e048e10a83abd92116114cd8504be # v14
|
- uses: cachix/cachix-action@18cf96c7c98e048e10a83abd92116114cd8504be # v14
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -84,7 +84,7 @@ jobs:
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "mergedSha=$mergedSha" >> "$GITHUB_ENV"
|
echo "mergedSha=$mergedSha" >> "$GITHUB_ENV"
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
# pull_request_target checks out the base branch by default
|
# pull_request_target checks out the base branch by default
|
||||||
ref: ${{ env.mergedSha }}
|
ref: ${{ env.mergedSha }}
|
||||||
|
|
|
@ -12,7 +12,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.repository_owner == 'NixOS'
|
if: github.repository_owner == 'NixOS'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
filter: blob:none
|
filter: blob:none
|
||||||
|
|
|
@ -12,7 +12,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.repository_owner == 'NixOS'
|
if: github.repository_owner == 'NixOS'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
# pull_request_target checks out the base branch by default
|
# pull_request_target checks out the base branch by default
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
|
|
@ -15,7 +15,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.repository_owner == 'NixOS'
|
if: github.repository_owner == 'NixOS'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
# pull_request_target checks out the base branch by default
|
# pull_request_target checks out the base branch by default
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
|
|
@ -24,7 +24,7 @@ jobs:
|
||||||
- name: print list of changed files
|
- name: print list of changed files
|
||||||
run: |
|
run: |
|
||||||
cat "$HOME/changed_files"
|
cat "$HOME/changed_files"
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
# pull_request_target checks out the base branch by default
|
# pull_request_target checks out the base branch by default
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
|
|
@ -14,7 +14,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.repository_owner == 'NixOS'
|
if: github.repository_owner == 'NixOS'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
# pull_request_target checks out the base branch by default
|
# pull_request_target checks out the base branch by default
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.repository_owner == 'NixOS'
|
if: github.repository_owner == 'NixOS'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
# pull_request_target checks out the base branch by default
|
# pull_request_target checks out the base branch by default
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
|
|
@ -24,7 +24,7 @@ jobs:
|
||||||
if [[ -s "$HOME/changed_files" ]]; then
|
if [[ -s "$HOME/changed_files" ]]; then
|
||||||
echo "CHANGED_FILES=$HOME/changed_files" > "$GITHUB_ENV"
|
echo "CHANGED_FILES=$HOME/changed_files" > "$GITHUB_ENV"
|
||||||
fi
|
fi
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
with:
|
with:
|
||||||
# pull_request_target checks out the base branch by default
|
# pull_request_target checks out the base branch by default
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
|
|
@ -41,7 +41,7 @@ jobs:
|
||||||
into: staging-23.11
|
into: staging-23.11
|
||||||
name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
|
|
||||||
- name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
- name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||||
uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f # 1.4.0
|
uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f # 1.4.0
|
||||||
|
|
|
@ -39,7 +39,7 @@ jobs:
|
||||||
into: staging
|
into: staging
|
||||||
name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
|
|
||||||
- name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
- name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
|
||||||
uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f # 1.4.0
|
uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f # 1.4.0
|
||||||
|
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
if: github.repository_owner == 'NixOS' && github.ref == 'refs/heads/master' # ensure workflow_dispatch only runs on master
|
if: github.repository_owner == 'NixOS' && github.ref == 'refs/heads/master' # ensure workflow_dispatch only runs on master
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
|
- uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||||
- uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26
|
- uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26
|
||||||
with:
|
with:
|
||||||
nix_path: nixpkgs=channel:nixpkgs-unstable
|
nix_path: nixpkgs=channel:nixpkgs-unstable
|
||||||
|
@ -46,7 +46,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
git clean -f
|
git clean -f
|
||||||
- name: create PR
|
- name: create PR
|
||||||
uses: peter-evans/create-pull-request@70a41aba780001da0a30141984ae2a0c95d8704e # v6.0.2
|
uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 # v6.0.4
|
||||||
with:
|
with:
|
||||||
body: |
|
body: |
|
||||||
Automatic update by [update-terraform-providers](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/update-terraform-providers.yml) action.
|
Automatic update by [update-terraform-providers](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/update-terraform-providers.yml) action.
|
||||||
|
|
|
@ -148,4 +148,4 @@ All new projects should use the CUDA redistributables available in [`cudaPackage
|
||||||
| Find libraries | `configurePhase` | Missing dependency on a `dev` output | Add the missing dependency | The `dev` output typically contain CMake configuration files |
|
| Find libraries | `configurePhase` | Missing dependency on a `dev` output | Add the missing dependency | The `dev` output typically contain CMake configuration files |
|
||||||
| Find libraries | `buildPhase` or `patchelf` | Missing dependency on a `lib` or `static` output | Add the missing dependency | The `lib` or `static` output typically contain the libraries |
|
| Find libraries | `buildPhase` or `patchelf` | Missing dependency on a `lib` or `static` output | Add the missing dependency | The `lib` or `static` output typically contain the libraries |
|
||||||
|
|
||||||
In the scenario you are unable to run the resulting binary: this is arguably the most complicated as it could be any combination of the previous reasons. This type of failure typically occurs when a library attempts to load or open a library it depends on that it does not declare in its `DT_NEEDED` section. As a first step, ensure that dependencies are patched with [`cudaPackages.autoAddDriverRunpath`](https://search.nixos.org/packages?channel=unstable&type=packages&query=cudaPackages.autoAddDriverRunpath). Failing that, try running the application with [`nixGL`](https://github.com/guibou/nixGL) or a similar wrapper tool. If that works, it likely means that the application is attempting to load a library that is not in the `RPATH` or `RUNPATH` of the binary.
|
In the scenario you are unable to run the resulting binary: this is arguably the most complicated as it could be any combination of the previous reasons. This type of failure typically occurs when a library attempts to load or open a library it depends on that it does not declare in its `DT_NEEDED` section. As a first step, ensure that dependencies are patched with [`autoAddDriverRunpath`](https://search.nixos.org/packages?channel=unstable&type=packages&query=autoAddDriverRunpath). Failing that, try running the application with [`nixGL`](https://github.com/guibou/nixGL) or a similar wrapper tool. If that works, it likely means that the application is attempting to load a library that is not in the `RPATH` or `RUNPATH` of the binary.
|
||||||
|
|
|
@ -47,7 +47,7 @@ let
|
||||||
# misc
|
# misc
|
||||||
asserts = callLibs ./asserts.nix;
|
asserts = callLibs ./asserts.nix;
|
||||||
debug = callLibs ./debug.nix;
|
debug = callLibs ./debug.nix;
|
||||||
misc = callLibs ./deprecated.nix;
|
misc = callLibs ./deprecated/misc.nix;
|
||||||
|
|
||||||
# domain-specific
|
# domain-specific
|
||||||
fetchers = callLibs ./fetchers.nix;
|
fetchers = callLibs ./fetchers.nix;
|
||||||
|
@ -89,7 +89,7 @@ let
|
||||||
recurseIntoAttrs dontRecurseIntoAttrs cartesianProduct cartesianProductOfSets
|
recurseIntoAttrs dontRecurseIntoAttrs cartesianProduct cartesianProductOfSets
|
||||||
mapCartesianProduct updateManyAttrsByPath;
|
mapCartesianProduct updateManyAttrsByPath;
|
||||||
inherit (self.lists) singleton forEach foldr fold foldl foldl' imap0 imap1
|
inherit (self.lists) singleton forEach foldr fold foldl foldl' imap0 imap1
|
||||||
concatMap flatten remove findSingle findFirst any all count
|
ifilter0 concatMap flatten remove findSingle findFirst any all count
|
||||||
optional optionals toList range replicate partition zipListsWith zipLists
|
optional optionals toList range replicate partition zipListsWith zipLists
|
||||||
reverseList listDfs toposort sort sortOn naturalSort compareLists take
|
reverseList listDfs toposort sort sortOn naturalSort compareLists take
|
||||||
drop sublist last init crossLists unique allUnique intersectLists
|
drop sublist last init crossLists unique allUnique intersectLists
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
# lib/deprecated
|
||||||
|
|
||||||
|
Do not add any new functions to this directory.
|
||||||
|
|
||||||
|
This directory contains the `lib.misc` sublibrary, which - as a location - is deprecated.
|
||||||
|
Furthermore, some of the functions inside are of *dubious* utility, and should perhaps be avoided,
|
||||||
|
while some functions *may still be needed*.
|
||||||
|
|
||||||
|
This directory does not play a role in the deprecation process for library functions.
|
||||||
|
They should be deprecated in place, by putting a `lib.warn` or `lib.warnIf` call around the function.
|
|
@ -4,7 +4,7 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
let
|
let
|
||||||
inherit (lib.strings) toInt;
|
inherit (lib.strings) toInt;
|
||||||
inherit (lib.trivial) compare min id warn;
|
inherit (lib.trivial) compare min id warn pipe;
|
||||||
inherit (lib.attrsets) mapAttrs;
|
inherit (lib.attrsets) mapAttrs;
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
|
@ -333,6 +333,54 @@ rec {
|
||||||
*/
|
*/
|
||||||
imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list);
|
imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Filter a list for elements that satisfy a predicate function.
|
||||||
|
The predicate function is called with both the index and value for each element.
|
||||||
|
It must return `true`/`false` to include/exclude a given element in the result.
|
||||||
|
This function is strict in the result of the predicate function for each element.
|
||||||
|
This function has O(n) complexity.
|
||||||
|
|
||||||
|
Also see [`builtins.filter`](https://nixos.org/manual/nix/stable/language/builtins.html#builtins-filter) (available as `lib.lists.filter`),
|
||||||
|
which can be used instead when the index isn't needed.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`ipred`
|
||||||
|
|
||||||
|
: The predicate function, it takes two arguments:
|
||||||
|
- 1. (int): the index of the element.
|
||||||
|
- 2. (a): the value of the element.
|
||||||
|
|
||||||
|
It must return `true`/`false` to include/exclude a given element from the result.
|
||||||
|
|
||||||
|
`list`
|
||||||
|
|
||||||
|
: The list to filter using the predicate.
|
||||||
|
|
||||||
|
# Type
|
||||||
|
```
|
||||||
|
ifilter0 :: (int -> a -> bool) -> [a] -> [a]
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.lists.ifilter0` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
ifilter0 (i: v: i == 0 || v > 2) [ 1 2 3 ]
|
||||||
|
=> [ 1 3 ]
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
*/
|
||||||
|
ifilter0 =
|
||||||
|
ipred:
|
||||||
|
input:
|
||||||
|
map (idx: elemAt input idx) (
|
||||||
|
filter (idx: ipred idx (elemAt input idx)) (
|
||||||
|
genList (x: x) (length input)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Map and concatenate the result.
|
Map and concatenate the result.
|
||||||
|
|
||||||
|
|
|
@ -63,8 +63,10 @@ let
|
||||||
hasAttrByPath
|
hasAttrByPath
|
||||||
hasInfix
|
hasInfix
|
||||||
id
|
id
|
||||||
|
ifilter0
|
||||||
isStorePath
|
isStorePath
|
||||||
lazyDerivation
|
lazyDerivation
|
||||||
|
length
|
||||||
lists
|
lists
|
||||||
listToAttrs
|
listToAttrs
|
||||||
makeExtensible
|
makeExtensible
|
||||||
|
@ -651,6 +653,31 @@ runTests {
|
||||||
expected = ["b" "c"];
|
expected = ["b" "c"];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
testIfilter0Example = {
|
||||||
|
expr = ifilter0 (i: v: i == 0 || v > 2) [ 1 2 3 ];
|
||||||
|
expected = [ 1 3 ];
|
||||||
|
};
|
||||||
|
testIfilter0Empty = {
|
||||||
|
expr = ifilter0 (i: v: abort "shouldn't be evaluated!") [ ];
|
||||||
|
expected = [ ];
|
||||||
|
};
|
||||||
|
testIfilter0IndexOnly = {
|
||||||
|
expr = length (ifilter0 (i: v: mod i 2 == 0) [ (throw "0") (throw "1") (throw "2") (throw "3")]);
|
||||||
|
expected = 2;
|
||||||
|
};
|
||||||
|
testIfilter0All = {
|
||||||
|
expr = ifilter0 (i: v: true) [ 10 11 12 13 14 15 ];
|
||||||
|
expected = [ 10 11 12 13 14 15 ];
|
||||||
|
};
|
||||||
|
testIfilter0First = {
|
||||||
|
expr = ifilter0 (i: v: i == 0) [ 10 11 12 13 14 15 ];
|
||||||
|
expected = [ 10 ];
|
||||||
|
};
|
||||||
|
testIfilter0Last = {
|
||||||
|
expr = ifilter0 (i: v: i == 5) [ 10 11 12 13 14 15 ];
|
||||||
|
expected = [ 15 ];
|
||||||
|
};
|
||||||
|
|
||||||
testFold =
|
testFold =
|
||||||
let
|
let
|
||||||
f = op: fold: fold op 0 (range 0 100);
|
f = op: fold: fold op 0 (range 0 100);
|
||||||
|
|
|
@ -1448,6 +1448,12 @@
|
||||||
githubId = 4194320;
|
githubId = 4194320;
|
||||||
name = "Anton Schirg";
|
name = "Anton Schirg";
|
||||||
};
|
};
|
||||||
|
anytimetraveler = {
|
||||||
|
email = "simon@simonscode.org";
|
||||||
|
github = "AnyTimeTraveler";
|
||||||
|
githubId = 19378309;
|
||||||
|
name = "Simon Struck";
|
||||||
|
};
|
||||||
aorith = {
|
aorith = {
|
||||||
email = "aomanu+nixpkgs@gmail.com";
|
email = "aomanu+nixpkgs@gmail.com";
|
||||||
github = "aorith";
|
github = "aorith";
|
||||||
|
@ -4442,6 +4448,12 @@
|
||||||
github = "DarkOnion0";
|
github = "DarkOnion0";
|
||||||
githubId = 68606322;
|
githubId = 68606322;
|
||||||
};
|
};
|
||||||
|
daru-san = {
|
||||||
|
name = "Daru";
|
||||||
|
email = "zadarumaka@proton.me";
|
||||||
|
github = "Daru-san";
|
||||||
|
githubId = 135046711;
|
||||||
|
};
|
||||||
das-g = {
|
das-g = {
|
||||||
email = "nixpkgs@raphael.dasgupta.ch";
|
email = "nixpkgs@raphael.dasgupta.ch";
|
||||||
github = "das-g";
|
github = "das-g";
|
||||||
|
@ -11656,6 +11668,12 @@
|
||||||
github = "LongerHV";
|
github = "LongerHV";
|
||||||
githubId = 46924944;
|
githubId = 46924944;
|
||||||
};
|
};
|
||||||
|
lonyelon = {
|
||||||
|
email = "sergio@lony.xyz";
|
||||||
|
name = "Sergio Miguéns Iglesias";
|
||||||
|
github = "lonyelon";
|
||||||
|
githubId = 18664655;
|
||||||
|
};
|
||||||
lopsided98 = {
|
lopsided98 = {
|
||||||
email = "benwolsieffer@gmail.com";
|
email = "benwolsieffer@gmail.com";
|
||||||
github = "lopsided98";
|
github = "lopsided98";
|
||||||
|
@ -16509,6 +16527,13 @@
|
||||||
fingerprint = "7573 56D7 79BB B888 773E 415E 736C CDF9 EF51 BD97";
|
fingerprint = "7573 56D7 79BB B888 773E 415E 736C CDF9 EF51 BD97";
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
qyriad = {
|
||||||
|
email = "qyriad@qyriad.me";
|
||||||
|
github = "Qyriad";
|
||||||
|
githubId = 1542224;
|
||||||
|
matrix = "@qyriad:katesiria.org";
|
||||||
|
name = "Qyriad";
|
||||||
|
};
|
||||||
r3dl3g = {
|
r3dl3g = {
|
||||||
email = "redleg@rothfuss-web.de";
|
email = "redleg@rothfuss-web.de";
|
||||||
github = "r3dl3g";
|
github = "r3dl3g";
|
||||||
|
|
|
@ -5,7 +5,7 @@ let
|
||||||
|
|
||||||
trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
|
trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
|
||||||
|
|
||||||
rel = removeAttrs (import ../../pkgs/top-level/release.nix { }) [ "tarball" "unstable" "xbursttools" ];
|
rel = removeAttrs (import ../../pkgs/top-level/release.nix { }) [ "tarball" "unstable" ];
|
||||||
|
|
||||||
# Add the ‘recurseForDerivations’ attribute to ensure that
|
# Add the ‘recurseForDerivations’ attribute to ensure that
|
||||||
# nix-instantiate recurses into nested attribute sets.
|
# nix-instantiate recurses into nested attribute sets.
|
||||||
|
|
|
@ -46,11 +46,9 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
|
||||||
|
|
||||||
- The default dbus implementation has transitioned to dbus-broker from the classic dbus daemon for better performance and reliability. Users can revert to the classic dbus daemon by setting `services.dbus.implementation = "dbus";`. For detailed deviations, refer to [dbus-broker's deviations page](https://github.com/bus1/dbus-broker/wiki/Deviations).
|
- The default dbus implementation has transitioned to dbus-broker from the classic dbus daemon for better performance and reliability. Users can revert to the classic dbus daemon by setting `services.dbus.implementation = "dbus";`. For detailed deviations, refer to [dbus-broker's deviations page](https://github.com/bus1/dbus-broker/wiki/Deviations).
|
||||||
|
|
||||||
- A new option `virtualisation.containers.cdi` was added. It contains `static` and `dynamic` attributes (corresponding to `/etc/cdi` and `/run/cdi` respectively) to configure the Container Device Interface (CDI).
|
- `virtualisation.docker.enableNvidia` and `virtualisation.podman.enableNvidia` options are deprecated. `hardware.nvidia-container-toolkit.enable` should be used instead. This option will expose GPUs on containers with the `--device` CLI option. This is supported by Docker 25, Podman 3.2.0 and Singularity 4. Any container runtime that supports the CDI specification will take advantage of this feature.
|
||||||
|
|
||||||
- `virtualisation.docker.enableNvidia` and `virtualisation.podman.enableNvidia` options are deprecated. `virtualisation.containers.cdi.dynamic.nvidia.enable` should be used instead. This option will expose GPUs on containers with the `--device` CLI option. This is supported by Docker 25, Podman 3.2.0 and Singularity 4. Any container runtime that supports the CDI specification will take advantage of this feature.
|
- `system.etc.overlay.enable` option was added. If enabled, `/etc` is
|
||||||
|
|
||||||
- A new option `system.etc.overlay.enable` was added. If enabled, `/etc` is
|
|
||||||
mounted via an overlayfs instead of being created by a custom perl script.
|
mounted via an overlayfs instead of being created by a custom perl script.
|
||||||
|
|
||||||
- NixOS AMIs are now uploaded regularly to a new AWS Account.
|
- NixOS AMIs are now uploaded regularly to a new AWS Account.
|
||||||
|
@ -237,7 +235,7 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- `nvtop` family of packages was reorganized into nested attrset. `nvtop` has been renamed to `nvtopPackages.full`, and all `nvtop-{amd,nvidia,intel,msm}` packages are now named as `nvtopPackages.{amd,nvidia,intel,msm}`
|
- `nvtop` family of packages was reorganized into nested attrset. `nvtop` has been renamed to `nvtopPackages.full`, and all `nvtop-{amd,nvidia,intel,msm}` packages are now named as `nvtopPackages.{amd,nvidia,intel,msm}`
|
||||||
|
|
||||||
- `neo4j` has been updated to 5, you may want to read the [release notes for Neo4j 5](https://neo4j.com/release-notes/database/neo4j-5/)
|
- `neo4j` has been updated to version 5, you may want to read the [release notes for Neo4j 5](https://neo4j.com/release-notes/database/neo4j-5/)
|
||||||
|
|
||||||
- `services.neo4j.allowUpgrade` was removed and no longer has any effect. Neo4j 5 supports automatic rolling upgrades.
|
- `services.neo4j.allowUpgrade` was removed and no longer has any effect. Neo4j 5 supports automatic rolling upgrades.
|
||||||
|
|
||||||
|
@ -251,37 +249,37 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- `services.aria2.rpcSecret` has been replaced with `services.aria2.rpcSecretFile`.
|
- `services.aria2.rpcSecret` has been replaced with `services.aria2.rpcSecretFile`.
|
||||||
This was done so that secrets aren't stored in the world-readable nix store.
|
This was done so that secrets aren't stored in the world-readable nix store.
|
||||||
To migrate, you will have create a file with the same exact string, and change
|
To migrate, you will have to create a file with the same exact string, and change
|
||||||
your module options to point to that file. For example, `services.aria2.rpcSecret =
|
your module options to point to that file. For example, `services.aria2.rpcSecret =
|
||||||
"mysecret"` becomes `services.aria2.rpcSecretFile = "/path/to/secret_file"`
|
"mysecret"` becomes `services.aria2.rpcSecretFile = "/path/to/secret_file"`
|
||||||
where the file `secret_file` contains the string `mysecret`.
|
where the file `secret_file` contains the string `mysecret`.
|
||||||
|
|
||||||
- `openssh`, `openssh_hpn` and `openssh_gssapi` are now compiled without support for the DSA signature algorithm as it is being deprecated upstream. Users still relying on DSA keys should consider upgrading
|
- `openssh`, `openssh_hpn` and `openssh_gssapi` are now compiled without support for the DSA signature algorithm as it is being deprecated upstream. Users still relying on DSA keys should consider upgrading
|
||||||
to another signature algorithm. It is however possible, for the time being, to restore the DSA keys support using `override` to set `dsaKeysSupport = true`.
|
to another signature algorithm. However, for the time being it is possible to restore DSA key support using `override` to set `dsaKeysSupport = true`.
|
||||||
|
|
||||||
- `buildGoModule` now throws error when `vendorHash` is not specified. `vendorSha256`, deprecated in Nixpkgs 23.11, is now ignored and is no longer a `vendorHash` alias.
|
- `buildGoModule` now throws an error when `vendorHash` is not specified. `vendorSha256`, deprecated in Nixpkgs 23.11, is now ignored and is no longer a `vendorHash` alias.
|
||||||
|
|
||||||
- Invidious has changed its default database username from `kemal` to `invidious`. Setups involving an externally provisioned database (i.e. `services.invidious.database.createLocally == false`) should adjust their configuration accordingly. The old `kemal` user will not be removed automatically even when the database is provisioned automatically.(https://github.com/NixOS/nixpkgs/pull/265857)
|
- `services.invidious.settings.db.user`, the default database username, has changed from `kemal` to `invidious`. Setups involving an externally-provisioned database (i.e. `services.invidious.database.createLocally == false`) should adjust their configuration accordingly. The old `kemal` user will not be removed automatically even when the database is provisioned automatically.(https://github.com/NixOS/nixpkgs/pull/265857)
|
||||||
|
|
||||||
- `writeReferencesToFile` is deprecated in favour of the new trivial build helper `writeClosure`. The latter accepts a list of paths and has an unambiguous name and cleaner implementation.
|
- `writeReferencesToFile` is deprecated in favour of the new trivial build helper `writeClosure`. The latter accepts a list of paths and has an unambiguous name and cleaner implementation.
|
||||||
|
|
||||||
- `inetutils` now has a lower priority to avoid shadowing the commonly used `util-linux`. If one wishes to restore the default priority, simply use `lib.setPrio 5 inetutils` or override with `meta.priority = 5`.
|
- `inetutils` now has a lower priority to avoid shadowing the commonly used `util-linux`. If one wishes to restore the default priority, simply use `lib.setPrio 5 inetutils` or override with `meta.priority = 5`.
|
||||||
|
|
||||||
- `paperless`' `services.paperless.extraConfig` setting has been removed and converted to the freeform type and option named `services.paperless.settings`.
|
- `paperless`' `services.paperless.extraConfig` setting has been removed and converted to the free-form 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.
|
- `davfs2`' `services.davfs2.extraConfig` setting has been deprecated and converted to the free-form 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.
|
- `services.homepage-dashboard` now takes its 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`.
|
- `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`.
|
||||||
|
|
||||||
- The legacy and long deprecated systemd target `network-interfaces.target` has been removed. Use `network.target` instead.
|
- `network-interfaces.target` system target was removed as it has been deprecated for a long time. Use `network.target` instead.
|
||||||
|
|
||||||
- `azure-cli` now has extension support. For example, to install the `aks-preview` extension, use
|
- `azure-cli` now has extension support. For example, to install the `aks-preview` extension, use
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
(azure-cli.withExtensions [ azure-cli.extensions.aks-preview ]);
|
(azure-cli.withExtensions [ azure-cli.extensions.aks-preview ])
|
||||||
];
|
];
|
||||||
```
|
```
|
||||||
To make the `azure-cli` immutable and prevent clashes in case `azure-cli` is also installed via other package managers, some configuration files were moved into the derivation.
|
To make the `azure-cli` immutable and prevent clashes in case `azure-cli` is also installed via other package managers, some configuration files were moved into the derivation.
|
||||||
|
@ -401,7 +399,11 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
upgrade NetBox by changing `services.netbox.package`. Database migrations
|
upgrade NetBox by changing `services.netbox.package`. Database migrations
|
||||||
will be run automatically.
|
will be run automatically.
|
||||||
|
|
||||||
- The executable file names for `firefox-devedition`, `firefox-beta`, `firefox-esr` now matches their package names, which is consistent with the `firefox-*-bin` packages. The desktop entries are also updated so that you can have multiple editions of firefox in your app launcher.
|
- `gauge` now supports installing plugins using nix. For the old imperative approach, switch to `gauge-unwrapped`.
|
||||||
|
You can load plugins from an existing gauge manifest file using `gauge.fromManifest ./path/to/manifest.json` or
|
||||||
|
specify plugins in nix using `gauge.withPlugins (p: with p; [ js html-report xml-report ])`.
|
||||||
|
|
||||||
|
- `firefox-devedition`, `firefox-beta`, `firefox-esr` executable file names for now match their package names, which is consistent with the `firefox-*-bin` packages. The desktop entries are also updated so that you can have multiple editions of firefox in your app launcher.
|
||||||
|
|
||||||
- switch-to-configuration does not directly call systemd-tmpfiles anymore.
|
- switch-to-configuration does not directly call systemd-tmpfiles anymore.
|
||||||
Instead, the new artificial sysinit-reactivation.target is introduced which
|
Instead, the new artificial sysinit-reactivation.target is introduced which
|
||||||
|
@ -472,14 +474,14 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- `addDriverRunpath` has been added to facilitate the deprecation of the old `addOpenGLRunpath` setuphook. This change is motivated by the evolution of the setuphook to include all hardware acceleration.
|
- `addDriverRunpath` has been added to facilitate the deprecation of the old `addOpenGLRunpath` setuphook. This change is motivated by the evolution of the setuphook to include all hardware acceleration.
|
||||||
|
|
||||||
- Cinnamon has been updated to 6.0. Please beware that the [Wayland session](https://blog.linuxmint.com/?p=4591) is still experimental in this release and could potentially [affect Xorg sessions](https://blog.linuxmint.com/?p=4639). We suggest a reboot when switching between sessions.
|
- (TODO awaiting feedback on code-casing package names) Cinnamon has been updated to 6.0. Please beware that the [Wayland session](https://blog.linuxmint.com/?p=4591) is still experimental in this release and could potentially [affect Xorg sessions](https://blog.linuxmint.com/?p=4639). We suggest a reboot when switching between sessions.
|
||||||
|
|
||||||
- MATE has been updated to 1.28.
|
- (TODO awaiting feedback on code-casing package names) MATE has been updated to 1.28.
|
||||||
- To properly support panel plugins built with Wayland (in-process) support, we are introducing `services.xserver.desktopManager.mate.extraPanelApplets` option, please use that for installing panel applets.
|
- To properly support panel plugins built with Wayland (in-process) support, we are introducing `services.xserver.desktopManager.mate.extraPanelApplets` option, please use that for installing panel applets.
|
||||||
- Similarly, please use `services.xserver.desktopManager.mate.extraCajaExtensions` option for installing Caja extensions.
|
- Similarly, please use `services.xserver.desktopManager.mate.extraCajaExtensions` option for installing Caja extensions.
|
||||||
- To use the Wayland session, enable `services.xserver.desktopManager.mate.enableWaylandSession`. This is opt-in for now as it is in early stage and introduces a new set of Wayfire closure. Due to [known issues with LightDM](https://github.com/canonical/lightdm/issues/63), we suggest using SDDM for display manager.
|
- To use the Wayland session, enable `services.xserver.desktopManager.mate.enableWaylandSession`. This is opt-in for now as it is in early stage and introduces a new set of Wayfire closure. Due to [known issues with LightDM](https://github.com/canonical/lightdm/issues/63), we suggest using SDDM for display manager.
|
||||||
|
|
||||||
- The Budgie module installs gnome-terminal by default (instead of mate-terminal).
|
- The (TODO awaiting feedback on code-casing package names) Budgie module installs gnome-terminal by default (instead of mate-terminal).
|
||||||
|
|
||||||
- New `boot.loader.systemd-boot.xbootldrMountPoint` allows setting up a separate [XBOOTLDR partition](https://uapi-group.org/specifications/specs/boot_loader_specification/) to store boot files. Useful on systems with a small EFI System partition that cannot be easily repartitioned.
|
- New `boot.loader.systemd-boot.xbootldrMountPoint` allows setting up a separate [XBOOTLDR partition](https://uapi-group.org/specifications/specs/boot_loader_specification/) to store boot files. Useful on systems with a small EFI System partition that cannot be easily repartitioned.
|
||||||
|
|
||||||
|
@ -491,7 +493,7 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
- The Matrix homeserver [Synapse](https://element-hq.github.io/synapse/) module now supports configuring UNIX domain socket [listeners](#opt-services.matrix-synapse.settings.listeners) through the `path` option.
|
- The Matrix homeserver [Synapse](https://element-hq.github.io/synapse/) module now supports configuring UNIX domain socket [listeners](#opt-services.matrix-synapse.settings.listeners) through the `path` option.
|
||||||
The default replication worker on the main instance has been migrated away from TCP sockets to UNIX domain sockets.
|
The default replication worker on the main instance has been migrated away from TCP sockets to UNIX domain sockets.
|
||||||
|
|
||||||
- The initrd ssh daemon module got a new option to add authorized keys via a list of files using `boot.initrd.network.ssh.authorizedKeyFiles`.
|
- `boot.initrd.network.ssh.authorizedKeyFiles` is a new option in the initrd ssh daemon module, for adding authorized keys via list of files.
|
||||||
|
|
||||||
- Programs written in [Nim](https://nim-lang.org/) are built with libraries selected by lockfiles.
|
- Programs written in [Nim](https://nim-lang.org/) are built with libraries selected by lockfiles.
|
||||||
The `nimPackages` and `nim2Packages` sets have been removed.
|
The `nimPackages` and `nim2Packages` sets have been removed.
|
||||||
|
@ -509,9 +511,9 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- `libass` now uses the native CoreText backend on Darwin, which may fix subtitle rendering issues with `mpv`, `ffmpeg`, etc.
|
- `libass` now uses the native CoreText backend on Darwin, which may fix subtitle rendering issues with `mpv`, `ffmpeg`, etc.
|
||||||
|
|
||||||
- [Lilypond](https://lilypond.org/index.html) and [Denemo](https://www.denemo.org) are now compiled with Guile 3.0.
|
- (TODO awaiting feedback on code-casing package names) [Lilypond](https://lilypond.org/index.html) and [Denemo](https://www.denemo.org) are now compiled with Guile 3.0.
|
||||||
|
|
||||||
- Garage has been updated to v1.x.x. Users should read the [upstream release notes](https://git.deuxfleurs.fr/Deuxfleurs/garage/releases/tag/v1.0.0) and follow the documentation when changing over their `services.garage.package` and performing this manual upgrade.
|
- (TODO awaiting feedback on code-casing package names) Garage has been updated to v1.x.x. Users should read the [upstream release notes](https://git.deuxfleurs.fr/Deuxfleurs/garage/releases/tag/v1.0.0) and follow the documentation when changing over their `services.garage.package` and performing this manual upgrade.
|
||||||
|
|
||||||
- The EC2 image module now enables the [Amazon SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) by default.
|
- The EC2 image module now enables the [Amazon SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) by default.
|
||||||
|
|
||||||
|
@ -546,7 +548,7 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
- New options were added to the dnsdist module to enable and configure a DNSCrypt endpoint (see `services.dnsdist.dnscrypt.enable`, etc.).
|
- New options were added to the dnsdist module to enable and configure a DNSCrypt endpoint (see `services.dnsdist.dnscrypt.enable`, etc.).
|
||||||
The module can generate the DNSCrypt provider key pair, certificates and also performs their rotation automatically with no downtime.
|
The module can generate the DNSCrypt provider key pair, certificates and also performs their rotation automatically with no downtime.
|
||||||
|
|
||||||
- With a bump to `sonarr` v4, existing config database files will be upgraded automatically, but note that some old apparently-working configs [might actually be corrupt and fail to upgrade cleanly](https://forums.sonarr.tv/t/sonarr-v4-released/33089).
|
- `sonarr` bumped to v4. Consequently existing config database files will be upgraded automatically, but note that some old apparently-working configs [might actually be corrupt and fail to upgrade cleanly](https://forums.sonarr.tv/t/sonarr-v4-released/33089).
|
||||||
|
|
||||||
- The Yama LSM is now enabled by default in the kernel, which prevents ptracing
|
- The Yama LSM is now enabled by default in the kernel, which prevents ptracing
|
||||||
non-child processes. This means you will not be able to attach gdb to an
|
non-child processes. This means you will not be able to attach gdb to an
|
||||||
|
@ -556,15 +558,13 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
- The netbird module now allows running multiple tunnels in parallel through [`services.netbird.tunnels`](#opt-services.netbird.tunnels).
|
- The netbird module now allows running multiple tunnels in parallel through [`services.netbird.tunnels`](#opt-services.netbird.tunnels).
|
||||||
|
|
||||||
- [Nginx virtual hosts](#opt-services.nginx.virtualHosts) using `forceSSL` or
|
- [Nginx virtual hosts](#opt-services.nginx.virtualHosts) using `forceSSL` or
|
||||||
`globalRedirect` can now have redirect codes other than 301 through
|
`globalRedirect` can now have redirect codes other than 301 through `redirectCode`.
|
||||||
|
|
||||||
- `bacula` now allows to configure `TLS` for encrypted communication.
|
- `bacula` now allows to configure `TLS` for encrypted communication.
|
||||||
|
|
||||||
`redirectCode`.
|
|
||||||
|
|
||||||
- `libjxl` 0.9.0 [dropped support for the butteraugli API](https://github.com/libjxl/libjxl/pull/2576). You will no longer be able to set `enableButteraugli` on `libaom`.
|
- `libjxl` 0.9.0 [dropped support for the butteraugli API](https://github.com/libjxl/libjxl/pull/2576). You will no longer be able to set `enableButteraugli` on `libaom`.
|
||||||
|
|
||||||
- The source of the `mockgen` package has changed to the [go.uber.org/mock](https://github.com/uber-go/mock) fork because [the original repository is no longer maintained](https://github.com/golang/mock#gomock).
|
- `mockgen` package source has changed to the [go.uber.org/mock](https://github.com/uber-go/mock) fork because [the original repository is no longer maintained](https://github.com/golang/mock#gomock).
|
||||||
|
|
||||||
- `security.pam.enableSSHAgentAuth` was renamed to `security.pam.sshAgentAuth.enable` and an `authorizedKeysFiles`
|
- `security.pam.enableSSHAgentAuth` was renamed to `security.pam.sshAgentAuth.enable` and an `authorizedKeysFiles`
|
||||||
option was added, to control which `authorized_keys` files are trusted. It defaults to the previous behaviour,
|
option was added, to control which `authorized_keys` files are trusted. It defaults to the previous behaviour,
|
||||||
|
@ -581,7 +581,7 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- `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.
|
- `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.
|
- `services.kavita` now uses the free-form option `services.kavita.settings` for the application settings file.
|
||||||
The options `services.kavita.ipAdresses` and `services.kavita.port` now exist at `services.kavita.settings.IpAddresses`
|
The options `services.kavita.ipAdresses` and `services.kavita.port` now exist at `services.kavita.settings.IpAddresses`
|
||||||
and `services.kavita.settings.IpAddresses`. The file at `services.kavita.tokenKeyFile` now needs to contain a secret with
|
and `services.kavita.settings.IpAddresses`. The file at `services.kavita.tokenKeyFile` now needs to contain a secret with
|
||||||
512+ bits instead of 128+ bits.
|
512+ bits instead of 128+ bits.
|
||||||
|
@ -592,7 +592,7 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- `services.soju` now has a wrapper for the `sojuctl` command, pointed at the service config file. It also has the new option `adminSocket.enable`, which creates a unix admin socket at `/run/soju/admin`.
|
- `services.soju` now has a wrapper for the `sojuctl` command, pointed at the service config file. It also has the new option `adminSocket.enable`, which creates a unix admin socket at `/run/soju/admin`.
|
||||||
|
|
||||||
- Gitea 1.21 upgrade has several breaking changes, including:
|
- `gitea` upgrade to 1.21 has several breaking changes, including:
|
||||||
- Custom themes and other assets that were previously stored in `custom/public/*` now belong in `custom/public/assets/*`
|
- Custom themes and other assets that were previously stored in `custom/public/*` now belong in `custom/public/assets/*`
|
||||||
- New instances of Gitea using MySQL now ignore the `[database].CHARSET` config option and always use the `utf8mb4` charset, existing instances should migrate via the `gitea doctor convert` CLI command.
|
- New instances of Gitea using MySQL now ignore the `[database].CHARSET` config option and always use the `utf8mb4` charset, existing instances should migrate via the `gitea doctor convert` CLI command.
|
||||||
|
|
||||||
|
@ -604,10 +604,10 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
|
|
||||||
- The `services.networkmanager.extraConfig` was renamed to `services.networkmanager.settings` and was changed to use the ini type instead of using a multiline string.
|
- The `services.networkmanager.extraConfig` was renamed to `services.networkmanager.settings` and was changed to use the ini type instead of using a multiline string.
|
||||||
|
|
||||||
- The module `services.github-runner` has been removed. To configure a single GitHub Actions Runner refer to `services.github-runners.*`. Note that this will trigger a new runner registration.
|
- `services.github-runner` module has been removed. To configure a single GitHub Actions Runner refer to `services.github-runners.*`. Note that this will trigger a new runner registration.
|
||||||
|
|
||||||
- The `services.slskd` has been refactored to include more configuation options in
|
- The `services.slskd` has been refactored to include more configuation options in
|
||||||
the freeform `services.slskd.settings` option, and some defaults (including listen ports)
|
the free-form `services.slskd.settings` option, and some defaults (including listen ports)
|
||||||
have been changed to match the upstream defaults. Additionally, disk logging is now
|
have been changed to match the upstream defaults. Additionally, disk logging is now
|
||||||
disabled by default, and the log rotation timer has been removed.
|
disabled by default, and the log rotation timer has been removed.
|
||||||
The nginx virtualhost option is now of the `vhost-options` type.
|
The nginx virtualhost option is now of the `vhost-options` type.
|
||||||
|
@ -629,7 +629,7 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||||
- QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS).
|
- QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS).
|
||||||
The previous native backends remain available but are now minimally maintained. Refer to [upstream documentation](https://doc.qt.io/qt-6/qtmultimedia-index.html#ffmpeg-as-the-default-backend) for further details about each platform.
|
The previous native backends remain available but are now minimally maintained. Refer to [upstream documentation](https://doc.qt.io/qt-6/qtmultimedia-index.html#ffmpeg-as-the-default-backend) for further details about each platform.
|
||||||
|
|
||||||
- The `drbd` out-of-tree Linux kernel driver has been added in version `9.2.7`. With it the DRBD 9.x features can be used instead of the 8.x features provided by the `8.4.11` in-tree driver.
|
- The `drbd` out-of-tree Linux kernel driver has been added in version `9.2`. With it the DRBD 9.x features can be used instead of the 8.x features provided by the `8.4.11` in-tree driver.
|
||||||
|
|
||||||
- The oil shell's c++ version is now available as `oils-for-unix`. The python version is still available as `oil`
|
- The oil shell's c++ version is now available as `oils-for-unix`. The python version is still available as `oil`
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, pkgs }:
|
{ config, lib, pkgs, utils }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
|
@ -396,8 +396,41 @@ in rec {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
serviceConfig = { config, ... }: {
|
serviceConfig = { name, config, ... }: {
|
||||||
config.environment.PATH = mkIf (config.path != []) "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
|
config = {
|
||||||
|
name = "${name}.service";
|
||||||
|
environment.PATH = mkIf (config.path != []) "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pathConfig = { name, config, ... }: {
|
||||||
|
config = {
|
||||||
|
name = "${name}.path";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
socketConfig = { name, config, ... }: {
|
||||||
|
config = {
|
||||||
|
name = "${name}.socket";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
sliceConfig = { name, config, ... }: {
|
||||||
|
config = {
|
||||||
|
name = "${name}.slice";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
targetConfig = { name, config, ... }: {
|
||||||
|
config = {
|
||||||
|
name = "${name}.target";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
timerConfig = { name, config, ... }: {
|
||||||
|
config = {
|
||||||
|
name = "${name}.timer";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
stage2ServiceConfig = {
|
stage2ServiceConfig = {
|
||||||
|
@ -416,6 +449,7 @@ in rec {
|
||||||
|
|
||||||
mountConfig = { config, ... }: {
|
mountConfig = { config, ... }: {
|
||||||
config = {
|
config = {
|
||||||
|
name = "${utils.escapeSystemdPath config.where}.mount";
|
||||||
mountConfig =
|
mountConfig =
|
||||||
{ What = config.what;
|
{ What = config.what;
|
||||||
Where = config.where;
|
Where = config.where;
|
||||||
|
@ -429,6 +463,7 @@ in rec {
|
||||||
|
|
||||||
automountConfig = { config, ... }: {
|
automountConfig = { config, ... }: {
|
||||||
config = {
|
config = {
|
||||||
|
name = "${utils.escapeSystemdPath config.where}.automount";
|
||||||
automountConfig =
|
automountConfig =
|
||||||
{ Where = config.where;
|
{ Where = config.where;
|
||||||
};
|
};
|
||||||
|
@ -444,8 +479,8 @@ in rec {
|
||||||
WantedBy=${concatStringsSep " " def.wantedBy}
|
WantedBy=${concatStringsSep " " def.wantedBy}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
targetToUnit = name: def:
|
targetToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text =
|
text =
|
||||||
''
|
''
|
||||||
[Unit]
|
[Unit]
|
||||||
|
@ -453,8 +488,8 @@ in rec {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
serviceToUnit = name: def:
|
serviceToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text = commonUnitText def (''
|
text = commonUnitText def (''
|
||||||
[Service]
|
[Service]
|
||||||
'' + (let env = cfg.globalEnvironment // def.environment;
|
'' + (let env = cfg.globalEnvironment // def.environment;
|
||||||
|
@ -463,7 +498,7 @@ in rec {
|
||||||
"Environment=${toJSON "${n}=${env.${n}}"}\n";
|
"Environment=${toJSON "${n}=${env.${n}}"}\n";
|
||||||
# systemd max line length is now 1MiB
|
# systemd max line length is now 1MiB
|
||||||
# https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
|
# 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))
|
in if stringLength s >= 1048576 then throw "The value of the environment variable ‘${n}’ in systemd service ‘${def.name}.service’ is too long." else s) (attrNames env))
|
||||||
+ (if def ? reloadIfChanged && def.reloadIfChanged then ''
|
+ (if def ? reloadIfChanged && def.reloadIfChanged then ''
|
||||||
X-ReloadIfChanged=true
|
X-ReloadIfChanged=true
|
||||||
'' else if (def ? restartIfChanged && !def.restartIfChanged) then ''
|
'' else if (def ? restartIfChanged && !def.restartIfChanged) then ''
|
||||||
|
@ -474,8 +509,8 @@ in rec {
|
||||||
'' + attrsToSection def.serviceConfig);
|
'' + attrsToSection def.serviceConfig);
|
||||||
};
|
};
|
||||||
|
|
||||||
socketToUnit = name: def:
|
socketToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text = commonUnitText def ''
|
text = commonUnitText def ''
|
||||||
[Socket]
|
[Socket]
|
||||||
${attrsToSection def.socketConfig}
|
${attrsToSection def.socketConfig}
|
||||||
|
@ -484,40 +519,40 @@ in rec {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
timerToUnit = name: def:
|
timerToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text = commonUnitText def ''
|
text = commonUnitText def ''
|
||||||
[Timer]
|
[Timer]
|
||||||
${attrsToSection def.timerConfig}
|
${attrsToSection def.timerConfig}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
pathToUnit = name: def:
|
pathToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text = commonUnitText def ''
|
text = commonUnitText def ''
|
||||||
[Path]
|
[Path]
|
||||||
${attrsToSection def.pathConfig}
|
${attrsToSection def.pathConfig}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
mountToUnit = name: def:
|
mountToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text = commonUnitText def ''
|
text = commonUnitText def ''
|
||||||
[Mount]
|
[Mount]
|
||||||
${attrsToSection def.mountConfig}
|
${attrsToSection def.mountConfig}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
automountToUnit = name: def:
|
automountToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text = commonUnitText def ''
|
text = commonUnitText def ''
|
||||||
[Automount]
|
[Automount]
|
||||||
${attrsToSection def.automountConfig}
|
${attrsToSection def.automountConfig}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
sliceToUnit = name: def:
|
sliceToUnit = def:
|
||||||
{ inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
{ inherit (def) name aliases wantedBy requiredBy upheldBy enable overrideStrategy;
|
||||||
text = commonUnitText def ''
|
text = commonUnitText def ''
|
||||||
[Slice]
|
[Slice]
|
||||||
${attrsToSection def.sliceConfig}
|
${attrsToSection def.sliceConfig}
|
||||||
|
|
|
@ -5,8 +5,13 @@ let
|
||||||
automountConfig
|
automountConfig
|
||||||
makeUnit
|
makeUnit
|
||||||
mountConfig
|
mountConfig
|
||||||
|
pathConfig
|
||||||
|
sliceConfig
|
||||||
|
socketConfig
|
||||||
stage1ServiceConfig
|
stage1ServiceConfig
|
||||||
stage2ServiceConfig
|
stage2ServiceConfig
|
||||||
|
targetConfig
|
||||||
|
timerConfig
|
||||||
unitConfig
|
unitConfig
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -48,29 +53,32 @@ let
|
||||||
;
|
;
|
||||||
in
|
in
|
||||||
|
|
||||||
rec {
|
{
|
||||||
units = attrsOf (submodule ({ name, config, ... }: {
|
units = attrsOf (submodule ({ name, config, ... }: {
|
||||||
options = concreteUnitOptions;
|
options = concreteUnitOptions;
|
||||||
config = { unit = mkDefault (makeUnit name config); };
|
config = {
|
||||||
|
name = mkDefault name;
|
||||||
|
unit = mkDefault (makeUnit name config);
|
||||||
|
};
|
||||||
}));
|
}));
|
||||||
|
|
||||||
services = attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
|
services = attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
|
||||||
initrdServices = attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
|
initrdServices = attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
|
||||||
|
|
||||||
targets = attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
|
targets = attrsOf (submodule [ stage2CommonUnitOptions unitConfig targetConfig ]);
|
||||||
initrdTargets = attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
|
initrdTargets = attrsOf (submodule [ stage1CommonUnitOptions unitConfig targetConfig ]);
|
||||||
|
|
||||||
sockets = attrsOf (submodule [ stage2SocketOptions unitConfig ]);
|
sockets = attrsOf (submodule [ stage2SocketOptions unitConfig socketConfig]);
|
||||||
initrdSockets = attrsOf (submodule [ stage1SocketOptions unitConfig ]);
|
initrdSockets = attrsOf (submodule [ stage1SocketOptions unitConfig socketConfig ]);
|
||||||
|
|
||||||
timers = attrsOf (submodule [ stage2TimerOptions unitConfig ]);
|
timers = attrsOf (submodule [ stage2TimerOptions unitConfig timerConfig ]);
|
||||||
initrdTimers = attrsOf (submodule [ stage1TimerOptions unitConfig ]);
|
initrdTimers = attrsOf (submodule [ stage1TimerOptions unitConfig timerConfig ]);
|
||||||
|
|
||||||
paths = attrsOf (submodule [ stage2PathOptions unitConfig ]);
|
paths = attrsOf (submodule [ stage2PathOptions unitConfig pathConfig ]);
|
||||||
initrdPaths = attrsOf (submodule [ stage1PathOptions unitConfig ]);
|
initrdPaths = attrsOf (submodule [ stage1PathOptions unitConfig pathConfig ]);
|
||||||
|
|
||||||
slices = attrsOf (submodule [ stage2SliceOptions unitConfig ]);
|
slices = attrsOf (submodule [ stage2SliceOptions unitConfig sliceConfig ]);
|
||||||
initrdSlices = attrsOf (submodule [ stage1SliceOptions unitConfig ]);
|
initrdSlices = attrsOf (submodule [ stage1SliceOptions unitConfig sliceConfig ]);
|
||||||
|
|
||||||
mounts = listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
|
mounts = listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
|
||||||
initrdMounts = listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
|
initrdMounts = listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
|
||||||
|
|
|
@ -65,6 +65,14 @@ in rec {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
The name of this systemd unit, including its extension.
|
||||||
|
This can be used to refer to this unit from other systemd units.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
overrideStrategy = mkOption {
|
overrideStrategy = mkOption {
|
||||||
default = "asDropinIfExists";
|
default = "asDropinIfExists";
|
||||||
type = types.enum [ "asDropinIfExists" "asDropin" ];
|
type = types.enum [ "asDropinIfExists" "asDropin" ];
|
||||||
|
|
|
@ -35,7 +35,8 @@ let
|
||||||
inherit (lib.strings) toJSON normalizePath escapeC;
|
inherit (lib.strings) toJSON normalizePath escapeC;
|
||||||
in
|
in
|
||||||
|
|
||||||
rec {
|
let
|
||||||
|
utils = rec {
|
||||||
|
|
||||||
# Copy configuration files to avoid having the entire sources in the system closure
|
# Copy configuration files to avoid having the entire sources in the system closure
|
||||||
copyFile = filePath: pkgs.runCommand (builtins.unsafeDiscardStringContext (baseNameOf filePath)) {} ''
|
copyFile = filePath: pkgs.runCommand (builtins.unsafeDiscardStringContext (baseNameOf filePath)) {} ''
|
||||||
|
@ -262,11 +263,12 @@ rec {
|
||||||
filter (x: !(elem (getName x) namesToRemove)) packages;
|
filter (x: !(elem (getName x) namesToRemove)) packages;
|
||||||
|
|
||||||
systemdUtils = {
|
systemdUtils = {
|
||||||
lib = import ./systemd-lib.nix { inherit lib config pkgs; };
|
lib = import ./systemd-lib.nix { inherit lib config pkgs utils; };
|
||||||
unitOptions = import ./systemd-unit-options.nix { inherit lib systemdUtils; };
|
unitOptions = import ./systemd-unit-options.nix { inherit lib systemdUtils; };
|
||||||
types = import ./systemd-types.nix { inherit lib systemdUtils pkgs; };
|
types = import ./systemd-types.nix { inherit lib systemdUtils pkgs; };
|
||||||
network = {
|
network = {
|
||||||
units = import ./systemd-network-units.nix { inherit lib systemdUtils; };
|
units = import ./systemd-network-units.nix { inherit lib systemdUtils; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
in utils
|
||||||
|
|
|
@ -559,7 +559,7 @@
|
||||||
./services/hardware/kanata.nix
|
./services/hardware/kanata.nix
|
||||||
./services/hardware/lcd.nix
|
./services/hardware/lcd.nix
|
||||||
./services/hardware/lirc.nix
|
./services/hardware/lirc.nix
|
||||||
./services/hardware/nvidia-container-toolkit-cdi-generator
|
./services/hardware/nvidia-container-toolkit
|
||||||
./services/hardware/monado.nix
|
./services/hardware/monado.nix
|
||||||
./services/hardware/nvidia-optimus.nix
|
./services/hardware/nvidia-optimus.nix
|
||||||
./services/hardware/openrgb.nix
|
./services/hardware/openrgb.nix
|
||||||
|
|
|
@ -366,44 +366,3 @@ convenient if you regularly edit Nix files.
|
||||||
You can use `woman` to get completion of all available
|
You can use `woman` to get completion of all available
|
||||||
man pages. For example, type `M-x woman <RET> nixos-rebuild <RET>.`
|
man pages. For example, type `M-x woman <RET> nixos-rebuild <RET>.`
|
||||||
|
|
||||||
### Editing DocBook 5 XML Documents {#sec-emacs-docbook-xml}
|
|
||||||
|
|
||||||
Emacs includes
|
|
||||||
[nXML](https://www.gnu.org/software/emacs/manual/html_node/nxml-mode/Introduction.html),
|
|
||||||
a major-mode for validating and editing XML documents. When editing DocBook
|
|
||||||
5.0 documents, such as [this one](#book-nixos-manual),
|
|
||||||
nXML needs to be configured with the relevant schema, which is not
|
|
||||||
included.
|
|
||||||
|
|
||||||
To install the DocBook 5.0 schemas, either add
|
|
||||||
{var}`pkgs.docbook5` to [](#opt-environment.systemPackages)
|
|
||||||
([NixOS](#sec-declarative-package-mgmt)), or run
|
|
||||||
`nix-env -f '<nixpkgs>' -iA docbook5`
|
|
||||||
([Nix](#sec-ad-hoc-packages)).
|
|
||||||
|
|
||||||
Then customize the variable {var}`rng-schema-locating-files` to
|
|
||||||
include {file}`~/.emacs.d/schemas.xml` and put the following
|
|
||||||
text into that file:
|
|
||||||
::: {.example #ex-emacs-docbook-xml}
|
|
||||||
### nXML Schema Configuration (`~/.emacs.d/schemas.xml`)
|
|
||||||
|
|
||||||
```xml
|
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!--
|
|
||||||
To let emacs find this file, evaluate:
|
|
||||||
(add-to-list 'rng-schema-locating-files "~/.emacs.d/schemas.xml")
|
|
||||||
-->
|
|
||||||
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
|
|
||||||
<!--
|
|
||||||
Use this variation if pkgs.docbook5 is added to environment.systemPackages
|
|
||||||
-->
|
|
||||||
<namespace ns="http://docbook.org/ns/docbook"
|
|
||||||
uri="/run/current-system/sw/share/xml/docbook-5.0/rng/docbookxi.rnc"/>
|
|
||||||
<!--
|
|
||||||
Use this variation if installing schema with "nix-env -iA pkgs.docbook5".
|
|
||||||
<namespace ns="http://docbook.org/ns/docbook"
|
|
||||||
uri="../.nix-profile/share/xml/docbook-5.0/rng/docbookxi.rnc"/>
|
|
||||||
-->
|
|
||||||
</locatingRules>
|
|
||||||
```
|
|
||||||
:::
|
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
{
|
|
||||||
addDriverRunpath,
|
|
||||||
glibc,
|
|
||||||
jq,
|
|
||||||
lib,
|
|
||||||
nvidia-container-toolkit,
|
|
||||||
nvidia-driver,
|
|
||||||
runtimeShell,
|
|
||||||
writeScriptBin,
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
mountOptions = { options = ["ro" "nosuid" "nodev" "bind"]; };
|
|
||||||
mounts = [
|
|
||||||
# FIXME: Making /usr mounts optional
|
|
||||||
{ hostPath = lib.getExe' nvidia-driver "nvidia-cuda-mps-control";
|
|
||||||
containerPath = "/usr/bin/nvidia-cuda-mps-control"; }
|
|
||||||
{ hostPath = lib.getExe' nvidia-driver "nvidia-cuda-mps-server";
|
|
||||||
containerPath = "/usr/bin/nvidia-cuda-mps-server"; }
|
|
||||||
{ hostPath = lib.getExe' nvidia-driver "nvidia-debugdump";
|
|
||||||
containerPath = "/usr/bin/nvidia-debugdump"; }
|
|
||||||
{ hostPath = lib.getExe' nvidia-driver "nvidia-powerd";
|
|
||||||
containerPath = "/usr/bin/nvidia-powerd"; }
|
|
||||||
{ hostPath = lib.getExe' nvidia-driver "nvidia-smi";
|
|
||||||
containerPath = "/usr/bin/nvidia-smi"; }
|
|
||||||
{ hostPath = lib.getExe' nvidia-container-toolkit "nvidia-ctk";
|
|
||||||
containerPath = "/usr/bin/nvidia-ctk"; }
|
|
||||||
{ hostPath = "${lib.getLib glibc}/lib";
|
|
||||||
containerPath = "${lib.getLib glibc}/lib"; }
|
|
||||||
|
|
||||||
# FIXME: use closureinfo
|
|
||||||
{
|
|
||||||
hostPath = addDriverRunpath.driverLink;
|
|
||||||
containerPath = addDriverRunpath.driverLink;
|
|
||||||
}
|
|
||||||
{ hostPath = "${lib.getLib glibc}/lib";
|
|
||||||
containerPath = "${lib.getLib glibc}/lib"; }
|
|
||||||
{ hostPath = "${lib.getLib glibc}/lib64";
|
|
||||||
containerPath = "${lib.getLib glibc}/lib64"; }
|
|
||||||
];
|
|
||||||
jqAddMountExpression = ".containerEdits.mounts[.containerEdits.mounts | length] |= . +";
|
|
||||||
mountsToJq = lib.concatMap
|
|
||||||
(mount:
|
|
||||||
["${lib.getExe jq} '${jqAddMountExpression} ${builtins.toJSON (mount // mountOptions)}'"])
|
|
||||||
mounts;
|
|
||||||
in
|
|
||||||
writeScriptBin "nvidia-cdi-generator"
|
|
||||||
''
|
|
||||||
#! ${runtimeShell}
|
|
||||||
|
|
||||||
function cdiGenerate {
|
|
||||||
${lib.getExe' nvidia-container-toolkit "nvidia-ctk"} cdi generate \
|
|
||||||
--format json \
|
|
||||||
--ldconfig-path ${lib.getExe' glibc "ldconfig"} \
|
|
||||||
--library-search-path ${lib.getLib nvidia-driver}/lib \
|
|
||||||
--nvidia-ctk-path ${lib.getExe' nvidia-container-toolkit "nvidia-ctk"}
|
|
||||||
}
|
|
||||||
|
|
||||||
cdiGenerate | \
|
|
||||||
${lib.concatStringsSep " | " mountsToJq} > $RUNTIME_DIRECTORY/nvidia-container-toolkit.json
|
|
||||||
''
|
|
|
@ -1,40 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options = {
|
|
||||||
|
|
||||||
hardware.nvidia-container-toolkit-cdi-generator.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
internal = true;
|
|
||||||
visible = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enable dynamic CDI configuration for NVidia devices by running
|
|
||||||
nvidia-container-toolkit on boot.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
|
|
||||||
systemd.services.nvidia-container-toolkit-cdi-generator = lib.mkIf config.hardware.nvidia-container-toolkit-cdi-generator.enable {
|
|
||||||
description = "Container Device Interface (CDI) for Nvidia generator";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
after = [ "systemd-udev-settle.service" ];
|
|
||||||
serviceConfig = {
|
|
||||||
RuntimeDirectory = "cdi";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStart =
|
|
||||||
let
|
|
||||||
script = pkgs.callPackage ./cdi-generate.nix { nvidia-driver = config.hardware.nvidia.package; };
|
|
||||||
in
|
|
||||||
lib.getExe script;
|
|
||||||
Type = "oneshot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
glibc,
|
||||||
|
jq,
|
||||||
|
lib,
|
||||||
|
mounts,
|
||||||
|
nvidia-container-toolkit,
|
||||||
|
nvidia-driver,
|
||||||
|
runtimeShell,
|
||||||
|
writeScriptBin,
|
||||||
|
}: let
|
||||||
|
mkMount = {hostPath, containerPath, mountOptions}: {
|
||||||
|
inherit hostPath containerPath;
|
||||||
|
options = mountOptions;
|
||||||
|
};
|
||||||
|
jqAddMountExpression = ".containerEdits.mounts[.containerEdits.mounts | length] |= . +";
|
||||||
|
allJqMounts = lib.concatMap
|
||||||
|
(mount:
|
||||||
|
["${lib.getExe jq} '${jqAddMountExpression} ${builtins.toJSON (mkMount mount)}'"])
|
||||||
|
mounts;
|
||||||
|
in
|
||||||
|
writeScriptBin "nvidia-cdi-generator"
|
||||||
|
''
|
||||||
|
#! ${runtimeShell}
|
||||||
|
|
||||||
|
function cdiGenerate {
|
||||||
|
${lib.getExe' nvidia-container-toolkit "nvidia-ctk"} cdi generate \
|
||||||
|
--format json \
|
||||||
|
--ldconfig-path ${lib.getExe' glibc "ldconfig"} \
|
||||||
|
--library-search-path ${lib.getLib nvidia-driver}/lib \
|
||||||
|
--nvidia-ctk-path ${lib.getExe' nvidia-container-toolkit "nvidia-ctk"}
|
||||||
|
}
|
||||||
|
|
||||||
|
cdiGenerate | \
|
||||||
|
${lib.concatStringsSep " | " allJqMounts} > $RUNTIME_DIRECTORY/nvidia-container-toolkit.json
|
||||||
|
''
|
|
@ -0,0 +1,121 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(lib.mkRenamedOptionModule
|
||||||
|
[ "virtualisation" "containers" "cdi" "dynamic" "nvidia" "enable" ]
|
||||||
|
[ "hardware" "nvidia-container-toolkit" "enable" ])
|
||||||
|
];
|
||||||
|
|
||||||
|
options = let
|
||||||
|
mountType = {
|
||||||
|
options = {
|
||||||
|
hostPath = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Host path.";
|
||||||
|
};
|
||||||
|
containerPath = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Container path.";
|
||||||
|
};
|
||||||
|
mountOptions = lib.mkOption {
|
||||||
|
default = [ "ro" "nosuid" "nodev" "bind" ];
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
description = "Mount options.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
|
||||||
|
hardware.nvidia-container-toolkit = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enable dynamic CDI configuration for NVidia devices by running
|
||||||
|
nvidia-container-toolkit on boot.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
mounts = lib.mkOption {
|
||||||
|
type = lib.types.listOf (lib.types.submodule mountType);
|
||||||
|
default = [];
|
||||||
|
description = "Mounts to be added to every container under the Nvidia CDI profile.";
|
||||||
|
};
|
||||||
|
|
||||||
|
mount-nvidia-executables = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Mount executables nvidia-smi, nvidia-cuda-mps-control, nvidia-cuda-mps-server,
|
||||||
|
nvidia-debugdump, nvidia-powerd and nvidia-ctk on containers.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
mount-nvidia-docker-1-directories = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Mount nvidia-docker-1 directories on containers: /usr/local/nvidia/lib and
|
||||||
|
/usr/local/nvidia/lib64.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
|
||||||
|
hardware.nvidia-container-toolkit.mounts = let
|
||||||
|
nvidia-driver = config.hardware.nvidia.package;
|
||||||
|
in (lib.mkMerge [
|
||||||
|
[{ hostPath = pkgs.addDriverRunpath.driverLink;
|
||||||
|
containerPath = pkgs.addDriverRunpath.driverLink; }
|
||||||
|
{ hostPath = "${lib.getLib pkgs.glibc}/lib";
|
||||||
|
containerPath = "${lib.getLib pkgs.glibc}/lib"; }
|
||||||
|
{ hostPath = "${lib.getLib pkgs.glibc}/lib64";
|
||||||
|
containerPath = "${lib.getLib pkgs.glibc}/lib64"; }]
|
||||||
|
(lib.mkIf config.hardware.nvidia-container-toolkit.mount-nvidia-executables
|
||||||
|
[{ hostPath = lib.getExe' nvidia-driver "nvidia-cuda-mps-control";
|
||||||
|
containerPath = "/usr/bin/nvidia-cuda-mps-control"; }
|
||||||
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-cuda-mps-server";
|
||||||
|
containerPath = "/usr/bin/nvidia-cuda-mps-server"; }
|
||||||
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-debugdump";
|
||||||
|
containerPath = "/usr/bin/nvidia-debugdump"; }
|
||||||
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-powerd";
|
||||||
|
containerPath = "/usr/bin/nvidia-powerd"; }
|
||||||
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-smi";
|
||||||
|
containerPath = "/usr/bin/nvidia-smi"; }])
|
||||||
|
# nvidia-docker 1.0 uses /usr/local/nvidia/lib{,64}
|
||||||
|
# e.g.
|
||||||
|
# - https://gitlab.com/nvidia/container-images/cuda/-/blob/e3ff10eab3a1424fe394899df0e0f8ca5a410f0f/dist/12.3.1/ubi9/base/Dockerfile#L44
|
||||||
|
# - https://github.com/NVIDIA/nvidia-docker/blob/01d2c9436620d7dde4672e414698afe6da4a282f/src/nvidia/volumes.go#L104-L173
|
||||||
|
(lib.mkIf config.hardware.nvidia-container-toolkit.mount-nvidia-docker-1-directories
|
||||||
|
[{ hostPath = "${lib.getLib nvidia-driver}/lib";
|
||||||
|
containerPath = "/usr/local/nvidia/lib"; }
|
||||||
|
{ hostPath = "${lib.getLib nvidia-driver}/lib";
|
||||||
|
containerPath = "/usr/local/nvidia/lib64"; }])
|
||||||
|
]);
|
||||||
|
|
||||||
|
systemd.services.nvidia-container-toolkit-cdi-generator = lib.mkIf config.hardware.nvidia-container-toolkit.enable {
|
||||||
|
description = "Container Device Interface (CDI) for Nvidia generator";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "systemd-udev-settle.service" ];
|
||||||
|
serviceConfig = {
|
||||||
|
RuntimeDirectory = "cdi";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart =
|
||||||
|
let
|
||||||
|
script = pkgs.callPackage ./cdi-generate.nix {
|
||||||
|
inherit (config.hardware.nvidia-container-toolkit) mounts;
|
||||||
|
nvidia-driver = config.hardware.nvidia.package;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.getExe script;
|
||||||
|
Type = "oneshot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -63,6 +63,7 @@ in
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
LockPersonality = true;
|
LockPersonality = true;
|
||||||
MemoryDenyWriteExecute = true;
|
MemoryDenyWriteExecute = true;
|
||||||
|
Restart = "on-failure";
|
||||||
RestrictAddressFamilies = [
|
RestrictAddressFamilies = [
|
||||||
"AF_INET"
|
"AF_INET"
|
||||||
"AF_INET6"
|
"AF_INET6"
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
fpm = config.services.phpfpm.pools.roundcube;
|
fpm = config.services.phpfpm.pools.roundcube;
|
||||||
localDB = cfg.database.host == "localhost";
|
localDB = cfg.database.host == "localhost";
|
||||||
user = cfg.database.username;
|
user = cfg.database.username;
|
||||||
phpWithPspell = pkgs.php81.withExtensions ({ enabled, all }: [ all.pspell ] ++ enabled);
|
phpWithPspell = pkgs.php83.withExtensions ({ enabled, all }: [ all.pspell ] ++ enabled);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.services.roundcube = {
|
options.services.roundcube = {
|
||||||
|
|
|
@ -346,6 +346,7 @@ in
|
||||||
violates the privacy of users and is not recommended.
|
violates the privacy of users and is not recommended.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
UsePAM = mkEnableOption "PAM authentication" // { default = true; };
|
||||||
UseDns = mkOption {
|
UseDns = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
# apply if cfg.useDns then "yes" else "no"
|
# apply if cfg.useDns then "yes" else "no"
|
||||||
|
@ -489,6 +490,8 @@ in
|
||||||
{manpage}`sshd_config(5)` for details.
|
{manpage}`sshd_config(5)` for details.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
# Disabled by default, since pam_motd handles this.
|
||||||
|
PrintMotd = mkEnableOption "printing /etc/motd when a user logs in interactively";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -622,7 +625,7 @@ in
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = optionals cfg.openFirewall cfg.ports;
|
networking.firewall.allowedTCPPorts = optionals cfg.openFirewall cfg.ports;
|
||||||
|
|
||||||
security.pam.services.sshd =
|
security.pam.services.sshd = lib.mkIf cfg.settings.UsePAM
|
||||||
{ startSession = true;
|
{ startSession = true;
|
||||||
showMotd = true;
|
showMotd = true;
|
||||||
unixAuth = cfg.settings.PasswordAuthentication;
|
unixAuth = cfg.settings.PasswordAuthentication;
|
||||||
|
@ -638,8 +641,6 @@ in
|
||||||
|
|
||||||
services.openssh.extraConfig = mkOrder 0
|
services.openssh.extraConfig = mkOrder 0
|
||||||
''
|
''
|
||||||
UsePAM yes
|
|
||||||
|
|
||||||
Banner ${if cfg.banner == null then "none" else pkgs.writeText "ssh_banner" cfg.banner}
|
Banner ${if cfg.banner == null then "none" else pkgs.writeText "ssh_banner" cfg.banner}
|
||||||
|
|
||||||
AddressFamily ${if config.networking.enableIPv6 then "any" else "inet"}
|
AddressFamily ${if config.networking.enableIPv6 then "any" else "inet"}
|
||||||
|
@ -657,7 +658,6 @@ in
|
||||||
${optionalString cfg.allowSFTP ''
|
${optionalString cfg.allowSFTP ''
|
||||||
Subsystem sftp ${cfg.sftpServerExecutable} ${concatStringsSep " " cfg.sftpFlags}
|
Subsystem sftp ${cfg.sftpServerExecutable} ${concatStringsSep " " cfg.sftpFlags}
|
||||||
''}
|
''}
|
||||||
PrintMotd no # handled by pam_motd
|
|
||||||
AuthorizedKeysFile ${toString cfg.authorizedKeysFiles}
|
AuthorizedKeysFile ${toString cfg.authorizedKeysFiles}
|
||||||
${optionalString (cfg.authorizedKeysCommand != "none") ''
|
${optionalString (cfg.authorizedKeysCommand != "none") ''
|
||||||
AuthorizedKeysCommand ${cfg.authorizedKeysCommand}
|
AuthorizedKeysCommand ${cfg.authorizedKeysCommand}
|
||||||
|
|
|
@ -169,7 +169,7 @@ in {
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
environment = config.environment.extra // {
|
environment = cfg.environment.extra // {
|
||||||
CODER_ACCESS_URL = cfg.accessUrl;
|
CODER_ACCESS_URL = cfg.accessUrl;
|
||||||
CODER_WILDCARD_ACCESS_URL = cfg.wildcardAccessUrl;
|
CODER_WILDCARD_ACCESS_URL = cfg.wildcardAccessUrl;
|
||||||
CODER_PG_CONNECTION_URL = "user=${cfg.database.username} ${optionalString (cfg.database.password != null) "password=${cfg.database.password}"} database=${cfg.database.database} host=${cfg.database.host} ${optionalString (cfg.database.sslmode != null) "sslmode=${cfg.database.sslmode}"}";
|
CODER_PG_CONNECTION_URL = "user=${cfg.database.username} ${optionalString (cfg.database.password != null) "password=${cfg.database.password}"} database=${cfg.database.database} host=${cfg.database.host} ${optionalString (cfg.database.sslmode != null) "sslmode=${cfg.database.sslmode}"}";
|
||||||
|
|
|
@ -246,7 +246,9 @@ in
|
||||||
|
|
||||||
passwordFile = mkOption {
|
passwordFile = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = "A file containing the initial password for the admin user.";
|
description = ''
|
||||||
|
A file containing the initial password for the administrator account "admin".
|
||||||
|
'';
|
||||||
example = "/run/keys/mediawiki-password";
|
example = "/run/keys/mediawiki-password";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -829,7 +829,7 @@ in
|
||||||
sslCiphers = mkOption {
|
sslCiphers = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
# Keep in sync with https://ssl-config.mozilla.org/#server=nginx&config=intermediate
|
# Keep in sync with https://ssl-config.mozilla.org/#server=nginx&config=intermediate
|
||||||
default = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
|
default = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305";
|
||||||
description = "Ciphers to choose from when negotiating TLS handshakes.";
|
description = "Ciphers to choose from when negotiating TLS handshakes.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -595,18 +595,17 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.units =
|
systemd.units =
|
||||||
mapAttrs' (n: v: nameValuePair "${n}.path" (pathToUnit n v)) cfg.paths
|
let
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.services
|
withName = cfgToUnit: cfg: lib.nameValuePair cfg.name (cfgToUnit cfg);
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.slice" (sliceToUnit n v)) cfg.slices
|
in
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.socket" (socketToUnit n v)) cfg.sockets
|
mapAttrs' (_: withName pathToUnit) cfg.paths
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets
|
// mapAttrs' (_: withName serviceToUnit) cfg.services
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.timer" (timerToUnit n v)) cfg.timers
|
// mapAttrs' (_: withName sliceToUnit) cfg.slices
|
||||||
// listToAttrs (map
|
// mapAttrs' (_: withName socketToUnit) cfg.sockets
|
||||||
(v: let n = escapeSystemdPath v.where;
|
// mapAttrs' (_: withName targetToUnit) cfg.targets
|
||||||
in nameValuePair "${n}.mount" (mountToUnit n v)) cfg.mounts)
|
// mapAttrs' (_: withName timerToUnit) cfg.timers
|
||||||
// listToAttrs (map
|
// listToAttrs (map (withName mountToUnit) cfg.mounts)
|
||||||
(v: let n = escapeSystemdPath v.where;
|
// listToAttrs (map (withName automountToUnit) cfg.automounts);
|
||||||
in nameValuePair "${n}.automount" (automountToUnit n v)) cfg.automounts);
|
|
||||||
|
|
||||||
# Environment of PID 1
|
# Environment of PID 1
|
||||||
systemd.managerEnvironment = {
|
systemd.managerEnvironment = {
|
||||||
|
|
|
@ -490,18 +490,18 @@ in {
|
||||||
|
|
||||||
targets.initrd.aliases = ["default.target"];
|
targets.initrd.aliases = ["default.target"];
|
||||||
units =
|
units =
|
||||||
mapAttrs' (n: v: nameValuePair "${n}.path" (pathToUnit n v)) cfg.paths
|
mapAttrs' (n: v: nameValuePair "${n}.path" (pathToUnit v)) cfg.paths
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.services
|
// mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit v)) cfg.services
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.slice" (sliceToUnit n v)) cfg.slices
|
// mapAttrs' (n: v: nameValuePair "${n}.slice" (sliceToUnit v)) cfg.slices
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.socket" (socketToUnit n v)) cfg.sockets
|
// mapAttrs' (n: v: nameValuePair "${n}.socket" (socketToUnit v)) cfg.sockets
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets
|
// mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit v)) cfg.targets
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.timer" (timerToUnit n v)) cfg.timers
|
// mapAttrs' (n: v: nameValuePair "${n}.timer" (timerToUnit v)) cfg.timers
|
||||||
// listToAttrs (map
|
// listToAttrs (map
|
||||||
(v: let n = escapeSystemdPath v.where;
|
(v: let n = escapeSystemdPath v.where;
|
||||||
in nameValuePair "${n}.mount" (mountToUnit n v)) cfg.mounts)
|
in nameValuePair "${n}.mount" (mountToUnit v)) cfg.mounts)
|
||||||
// listToAttrs (map
|
// listToAttrs (map
|
||||||
(v: let n = escapeSystemdPath v.where;
|
(v: let n = escapeSystemdPath v.where;
|
||||||
in nameValuePair "${n}.automount" (automountToUnit n v)) cfg.automounts);
|
in nameValuePair "${n}.automount" (automountToUnit v)) cfg.automounts);
|
||||||
|
|
||||||
# make sure all the /dev nodes are set up
|
# make sure all the /dev nodes are set up
|
||||||
services.systemd-tmpfiles-setup-dev.wantedBy = ["sysinit.target"];
|
services.systemd-tmpfiles-setup-dev.wantedBy = ["sysinit.target"];
|
||||||
|
|
|
@ -175,12 +175,12 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.units =
|
systemd.user.units =
|
||||||
mapAttrs' (n: v: nameValuePair "${n}.path" (pathToUnit n v)) cfg.paths
|
mapAttrs' (n: v: nameValuePair "${n}.path" (pathToUnit v)) cfg.paths
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.services
|
// mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit v)) cfg.services
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.slice" (sliceToUnit n v)) cfg.slices
|
// mapAttrs' (n: v: nameValuePair "${n}.slice" (sliceToUnit v)) cfg.slices
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.socket" (socketToUnit n v)) cfg.sockets
|
// mapAttrs' (n: v: nameValuePair "${n}.socket" (socketToUnit v)) cfg.sockets
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets
|
// mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit v)) cfg.targets
|
||||||
// mapAttrs' (n: v: nameValuePair "${n}.timer" (timerToUnit n v)) cfg.timers;
|
// mapAttrs' (n: v: nameValuePair "${n}.timer" (timerToUnit v)) cfg.timers;
|
||||||
|
|
||||||
# Generate timer units for all services that have a ‘startAt’ value.
|
# Generate timer units for all services that have a ‘startAt’ value.
|
||||||
systemd.user.timers =
|
systemd.user.timers =
|
||||||
|
|
|
@ -28,43 +28,6 @@ in
|
||||||
description = "Enable the OCI seccomp BPF hook";
|
description = "Enable the OCI seccomp BPF hook";
|
||||||
};
|
};
|
||||||
|
|
||||||
cdi = {
|
|
||||||
dynamic.nvidia.enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Enable dynamic CDI configuration for NVidia devices by running nvidia-container-toolkit on boot.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
static = mkOption {
|
|
||||||
type = types.attrs;
|
|
||||||
default = { };
|
|
||||||
description = ''
|
|
||||||
Declarative CDI specification. Each key of the attribute set
|
|
||||||
will be mapped to a file in /etc/cdi. It is required for every
|
|
||||||
key to be provided in JSON format.
|
|
||||||
'';
|
|
||||||
example = {
|
|
||||||
some-vendor = builtins.fromJSON ''
|
|
||||||
{
|
|
||||||
"cdiVersion": "0.5.0",
|
|
||||||
"kind": "some-vendor.com/foo",
|
|
||||||
"devices": [],
|
|
||||||
"containerEdits": []
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
some-other-vendor = {
|
|
||||||
cdiVersion = "0.5.0";
|
|
||||||
kind = "some-other-vendor.com/bar";
|
|
||||||
devices = [];
|
|
||||||
containerEdits = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
containersConf.settings = mkOption {
|
containersConf.settings = mkOption {
|
||||||
type = toml.type;
|
type = toml.type;
|
||||||
default = { };
|
default = { };
|
||||||
|
@ -150,8 +113,6 @@ in
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
hardware.nvidia-container-toolkit-cdi-generator.enable = lib.mkIf cfg.cdi.dynamic.nvidia.enable true;
|
|
||||||
|
|
||||||
virtualisation.containers.containersConf.cniPlugins = [ pkgs.cni-plugins ];
|
virtualisation.containers.containersConf.cniPlugins = [ pkgs.cni-plugins ];
|
||||||
|
|
||||||
virtualisation.containers.containersConf.settings = {
|
virtualisation.containers.containersConf.settings = {
|
||||||
|
@ -163,13 +124,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc = let
|
environment.etc = {
|
||||||
cdiStaticConfigurationFiles = (lib.attrsets.mapAttrs'
|
|
||||||
(name: value:
|
|
||||||
lib.attrsets.nameValuePair "cdi/${name}.json"
|
|
||||||
{ text = builtins.toJSON value; })
|
|
||||||
cfg.cdi.static);
|
|
||||||
in {
|
|
||||||
"containers/containers.conf".source =
|
"containers/containers.conf".source =
|
||||||
toml.generate "containers.conf" cfg.containersConf.settings;
|
toml.generate "containers.conf" cfg.containersConf.settings;
|
||||||
|
|
||||||
|
@ -183,7 +138,7 @@ in
|
||||||
"containers/policy.json".source =
|
"containers/policy.json".source =
|
||||||
if cfg.policy != { } then pkgs.writeText "policy.json" (builtins.toJSON cfg.policy)
|
if cfg.policy != { } then pkgs.writeText "policy.json" (builtins.toJSON cfg.policy)
|
||||||
else "${pkgs.skopeo.policy}/default-policy.json";
|
else "${pkgs.skopeo.policy}/default-policy.json";
|
||||||
} // cdiStaticConfigurationFiles;
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ let
|
||||||
qemu-utils
|
qemu-utils
|
||||||
rsync
|
rsync
|
||||||
squashfsTools
|
squashfsTools
|
||||||
|
swtpm
|
||||||
systemd
|
systemd
|
||||||
thin-provisioning-tools
|
thin-provisioning-tools
|
||||||
util-linux
|
util-linux
|
||||||
|
|
|
@ -30,6 +30,9 @@ in
|
||||||
memorySize = 1024;
|
memorySize = 1024;
|
||||||
diskSize = 4096;
|
diskSize = 4096;
|
||||||
|
|
||||||
|
# Provide a TPM to test vTPM support for guests
|
||||||
|
tpm.enable = true;
|
||||||
|
|
||||||
incus.enable = true;
|
incus.enable = true;
|
||||||
};
|
};
|
||||||
networking.nftables.enable = true;
|
networking.nftables.enable = true;
|
||||||
|
@ -47,8 +50,14 @@ in
|
||||||
with subtest("virtual-machine image can be imported"):
|
with subtest("virtual-machine image can be imported"):
|
||||||
machine.succeed("incus image import ${vm-image-metadata}/*/*.tar.xz ${vm-image-disk}/nixos.qcow2 --alias nixos")
|
machine.succeed("incus image import ${vm-image-metadata}/*/*.tar.xz ${vm-image-disk}/nixos.qcow2 --alias nixos")
|
||||||
|
|
||||||
|
with subtest("virtual-machine can be created"):
|
||||||
|
machine.succeed("incus create nixos ${instance-name} --vm --config limits.memory=512MB --config security.secureboot=false")
|
||||||
|
|
||||||
|
with subtest("virtual tpm can be configured"):
|
||||||
|
machine.succeed("incus config device add ${instance-name} vtpm tpm path=/dev/tpm0")
|
||||||
|
|
||||||
with subtest("virtual-machine can be launched and become available"):
|
with subtest("virtual-machine can be launched and become available"):
|
||||||
machine.succeed("incus launch nixos ${instance-name} --vm --config limits.memory=512MB --config security.secureboot=false")
|
machine.succeed("incus start ${instance-name}")
|
||||||
with machine.nested("Waiting for instance to start and be usable"):
|
with machine.nested("Waiting for instance to start and be usable"):
|
||||||
retry(instance_is_up)
|
retry(instance_is_up)
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,19 @@ in {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
server-allowed-users =
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.openssh = { enable = true; settings.AllowUsers = [ "alice" "bob" ]; };
|
||||||
|
users.groups = { alice = { }; bob = { }; carol = { }; };
|
||||||
|
users.users = {
|
||||||
|
alice = { isNormalUser = true; group = "alice"; openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; };
|
||||||
|
bob = { isNormalUser = true; group = "bob"; openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; };
|
||||||
|
carol = { isNormalUser = true; group = "carol"; openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
server-lazy =
|
server-lazy =
|
||||||
{ ... }:
|
{ ... }:
|
||||||
|
|
||||||
|
@ -95,17 +108,21 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
server_allowedusers =
|
server-no-pam =
|
||||||
{ ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
services.openssh = { enable = true; settings.AllowUsers = [ "alice" "bob" ]; };
|
programs.ssh.package = pkgs.opensshPackages.openssh.override {
|
||||||
users.groups = { alice = { }; bob = { }; carol = { }; };
|
withPAM = false;
|
||||||
users.users = {
|
|
||||||
alice = { isNormalUser = true; group = "alice"; openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; };
|
|
||||||
bob = { isNormalUser = true; group = "bob"; openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; };
|
|
||||||
carol = { isNormalUser = true; group = "carol"; openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; };
|
|
||||||
};
|
};
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
UsePAM = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users.users.root.openssh.authorizedKeys.keys = [
|
||||||
|
snakeOilPublicKey
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
client =
|
client =
|
||||||
|
@ -119,8 +136,10 @@ in {
|
||||||
start_all()
|
start_all()
|
||||||
|
|
||||||
server.wait_for_unit("sshd", timeout=30)
|
server.wait_for_unit("sshd", timeout=30)
|
||||||
|
server_allowed_users.wait_for_unit("sshd", timeout=30)
|
||||||
server_localhost_only.wait_for_unit("sshd", timeout=30)
|
server_localhost_only.wait_for_unit("sshd", timeout=30)
|
||||||
server_match_rule.wait_for_unit("sshd", timeout=30)
|
server_match_rule.wait_for_unit("sshd", timeout=30)
|
||||||
|
server_no_pam.wait_for_unit("sshd", timeout=30)
|
||||||
|
|
||||||
server_lazy.wait_for_unit("sshd.socket", timeout=30)
|
server_lazy.wait_for_unit("sshd.socket", timeout=30)
|
||||||
server_localhost_only_lazy.wait_for_unit("sshd.socket", timeout=30)
|
server_localhost_only_lazy.wait_for_unit("sshd.socket", timeout=30)
|
||||||
|
@ -166,8 +185,9 @@ in {
|
||||||
"cat ${snakeOilPrivateKey} > privkey.snakeoil"
|
"cat ${snakeOilPrivateKey} > privkey.snakeoil"
|
||||||
)
|
)
|
||||||
client.succeed("chmod 600 privkey.snakeoil")
|
client.succeed("chmod 600 privkey.snakeoil")
|
||||||
|
# The final segment in this IP is allocated according to the alphabetical order of machines in this test.
|
||||||
client.succeed(
|
client.succeed(
|
||||||
"ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil root@192.168.2.4 true",
|
"ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil root@192.168.2.5 true",
|
||||||
timeout=30
|
timeout=30
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -198,15 +218,25 @@ in {
|
||||||
)
|
)
|
||||||
client.succeed("chmod 600 privkey.snakeoil")
|
client.succeed("chmod 600 privkey.snakeoil")
|
||||||
client.succeed(
|
client.succeed(
|
||||||
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil alice@server_allowedusers true",
|
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil alice@server-allowed-users true",
|
||||||
timeout=30
|
timeout=30
|
||||||
)
|
)
|
||||||
client.succeed(
|
client.succeed(
|
||||||
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil bob@server_allowedusers true",
|
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil bob@server-allowed-users true",
|
||||||
timeout=30
|
timeout=30
|
||||||
)
|
)
|
||||||
client.fail(
|
client.fail(
|
||||||
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil carol@server_allowedusers true",
|
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil carol@server-allowed-users true",
|
||||||
|
timeout=30
|
||||||
|
)
|
||||||
|
|
||||||
|
with subtest("no-pam"):
|
||||||
|
client.succeed(
|
||||||
|
"cat ${snakeOilPrivateKey} > privkey.snakeoil"
|
||||||
|
)
|
||||||
|
client.succeed("chmod 600 privkey.snakeoil")
|
||||||
|
client.succeed(
|
||||||
|
"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil server-no-pam true",
|
||||||
timeout=30
|
timeout=30
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
name = "systemd";
|
name = "systemd";
|
||||||
|
|
||||||
nodes.machine = { lib, ... }: {
|
nodes.machine = { config, lib, ... }: {
|
||||||
imports = [ common/user-account.nix common/x11.nix ];
|
imports = [ common/user-account.nix common/x11.nix ];
|
||||||
|
|
||||||
virtualisation.emptyDiskImages = [ 512 512 ];
|
virtualisation.emptyDiskImages = [ 512 512 ];
|
||||||
|
@ -38,9 +38,18 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
script = "true";
|
script = "true";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.testDependency1 = {
|
||||||
|
description = "Test Dependency 1";
|
||||||
|
wantedBy = [ config.systemd.services."testservice1".name ];
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
script = ''
|
||||||
|
true
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.testservice1 = {
|
systemd.services.testservice1 = {
|
||||||
description = "Test Service 1";
|
description = "Test Service 1";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ config.systemd.targets.multi-user.name ];
|
||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
script = ''
|
script = ''
|
||||||
if [ "$XXX_SYSTEM" = foo ]; then
|
if [ "$XXX_SYSTEM" = foo ]; then
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
, qtmultimedia
|
, qtmultimedia
|
||||||
, qtx11extras
|
, qtx11extras
|
||||||
, soxr
|
, soxr
|
||||||
|
, vgmstream
|
||||||
, wavpack
|
, wavpack
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
@ -109,6 +110,10 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
dontWrapQtApps = true;
|
dontWrapQtApps = true;
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
ln -s ${vgmstream.override { buildAudaciousPlugin = true; }}/lib/audacious/Input/* $out/lib/audacious/Input
|
||||||
|
'';
|
||||||
|
|
||||||
meta = audacious.meta // {
|
meta = audacious.meta // {
|
||||||
description = "Plugins for Audacious music player";
|
description = "Plugins for Audacious music player";
|
||||||
};
|
};
|
||||||
|
|
|
@ -62,13 +62,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "audacity";
|
pname = "audacity";
|
||||||
version = "3.4.2";
|
version = "3.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "audacity";
|
owner = "audacity";
|
||||||
repo = "audacity";
|
repo = "audacity";
|
||||||
rev = "Audacity-${version}";
|
rev = "Audacity-${version}";
|
||||||
hash = "sha256-YlRWCu6kQYdzast7Mf29p4FvpXJHQLG7vqqo/5SNQCQ=";
|
hash = "sha256-vJhCONoEC4Bdd1ZOLLobjNgLb/DT6auuMGk8L9lj6TU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
, stdenv
|
, stdenv
|
||||||
, buildDotnetModule
|
, buildDotnetModule
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, autoPatchelfHook
|
|
||||||
, fontconfig
|
, fontconfig
|
||||||
, xorg
|
, xorg
|
||||||
, libglvnd
|
, libglvnd
|
||||||
|
@ -27,7 +26,6 @@ buildDotnetModule rec {
|
||||||
dotnetFlags = [ "-p:Runtimeidentifier=linux-x64" ];
|
dotnetFlags = [ "-p:Runtimeidentifier=linux-x64" ];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoPatchelfHook
|
|
||||||
copyDesktopItems
|
copyDesktopItems
|
||||||
graphicsmagick
|
graphicsmagick
|
||||||
];
|
];
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "pt2-clone";
|
pname = "pt2-clone";
|
||||||
version = "1.67";
|
version = "1.68";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "8bitbubsy";
|
owner = "8bitbubsy";
|
||||||
repo = "pt2-clone";
|
repo = "pt2-clone";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
sha256 = "sha256-fTUTXwS6A72zhKkANlSljQVvPeN5rOTyuyb8vLxYfdk=";
|
sha256 = "sha256-xlXwOxmJ5cL1ouTOnFwTvx959IDQIvJ0ZRk+G9p0HbA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "pyradio";
|
pname = "pyradio";
|
||||||
version = "0.9.3.2";
|
version = "0.9.3.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "coderholic";
|
owner = "coderholic";
|
||||||
repo = "pyradio";
|
repo = "pyradio";
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
hash = "sha256-aIWU68bdPUsIh8QRNnF0NcK7FemmYyUHbJg9KcUALBk=";
|
hash = "sha256-QifBzQsvYU5kP5mnidOgWGBh3h2MvJm8Wo0i1v6j/cU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -28,13 +28,13 @@ let
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "reaper";
|
pname = "reaper";
|
||||||
version = "7.14";
|
version = "7.15";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = url_for_platform version stdenv.hostPlatform.qemuArch;
|
url = url_for_platform version stdenv.hostPlatform.qemuArch;
|
||||||
hash = if stdenv.isDarwin then "sha256-cPxHriUNIG1EUmvOoW00V2Y0j+7BuxSIEbPy+qy5ZEM=" else {
|
hash = if stdenv.isDarwin then "sha256-7tWgbHIkARgsPi0buvbQb4qTqndyPwRRqut1Gj4WNZE=" else {
|
||||||
x86_64-linux = "sha256-RgKteq157r4r088mr9wvPPa/rhmX88/lmVJ7mS17px4=";
|
x86_64-linux = "sha256-O1xh+DKwPKTcQrNhWMX5ErKa1hXq0yeyt/XJMQav11c=";
|
||||||
aarch64-linux = "sha256-Qnb6ZoDIkfRct6dvqXKeYHgXyyEFLSj9R0hwa2bUiXo=";
|
aarch64-linux = "sha256-rQE8Aa+iFWpA18udCXm4JW8BPTEDeEQAupy353Sbcl8=";
|
||||||
}.${stdenv.hostPlatform.system};
|
}.${stdenv.hostPlatform.system};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config
|
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, gtk3
|
||||||
, mpg123, ffmpeg, libvorbis, libao, jansson, speex
|
, audacious, mpg123, ffmpeg, libvorbis, libao, jansson, speex
|
||||||
, nix-update-script
|
, nix-update-script
|
||||||
|
, buildAudaciousPlugin ? false # only build cli by default, pkgs.audacious-plugins sets this to enable plugin support
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -19,16 +20,29 @@ stdenv.mkDerivation rec {
|
||||||
extraArgs = [ "--version-regex" "r(.*)" ];
|
extraArgs = [ "--version-regex" "r(.*)" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkg-config ];
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
] ++ lib.optional buildAudaciousPlugin gtk3;
|
||||||
|
|
||||||
buildInputs = [ mpg123 ffmpeg libvorbis libao jansson speex ];
|
buildInputs = [
|
||||||
|
mpg123
|
||||||
|
ffmpeg
|
||||||
|
libvorbis
|
||||||
|
libao
|
||||||
|
jansson
|
||||||
|
speex
|
||||||
|
] ++ lib.optional buildAudaciousPlugin (audacious.override { audacious-plugins = null; });
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
substituteInPlace cmake/dependencies/audacious.cmake \
|
||||||
|
--replace "pkg_get_variable(AUDACIOUS_PLUGIN_DIR audacious plugin_dir)" "set(AUDACIOUS_PLUGIN_DIR \"$out/lib/audacious\")"
|
||||||
|
'';
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
# There's no nice way to build the audacious plugin without a circular dependency
|
|
||||||
"-DBUILD_AUDACIOUS=OFF"
|
|
||||||
# It always tries to download it, no option to use the system one
|
# It always tries to download it, no option to use the system one
|
||||||
"-DUSE_CELT=OFF"
|
"-DUSE_CELT=OFF"
|
||||||
];
|
] ++ lib.optional (! buildAudaciousPlugin) "-DBUILD_AUDACIOUS=OFF";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A library for playback of various streamed audio formats used in video games";
|
description = "A library for playback of various streamed audio formats used in video games";
|
||||||
|
|
|
@ -21,20 +21,20 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "pika-backup";
|
pname = "pika-backup";
|
||||||
version = "0.7.0";
|
version = "0.7.1";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
domain = "gitlab.gnome.org";
|
domain = "gitlab.gnome.org";
|
||||||
owner = "World";
|
owner = "World";
|
||||||
repo = "pika-backup";
|
repo = "pika-backup";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-WeFc/4TEIxw6uzLroJX1D/rEA419sghkjBt1nsPv2Ho=";
|
hash = "sha256-yxr98CJuu15TGiIXCBhU2bOgvct6jQ5xAraD9Z0sL2Q=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
inherit src;
|
inherit src;
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
hash = "sha256-fgPgUZxye9YUyX9/+hTye3cUypgRAegZMUTKfPxVH4s=";
|
hash = "sha256-ce8SdBvRdFp1BU9OPcByoJjCiSrAkQqtmfCeJ3B+Piw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
, miniupnpc
|
, miniupnpc
|
||||||
, zeromq
|
, zeromq
|
||||||
, zlib
|
, zlib
|
||||||
, db48
|
|
||||||
, sqlite
|
, sqlite
|
||||||
, qrencode
|
, qrencode
|
||||||
, qtbase ? null
|
, qtbase ? null
|
||||||
|
@ -51,7 +50,7 @@ stdenv.mkDerivation rec {
|
||||||
++ lib.optionals withGui [ wrapQtAppsHook ];
|
++ lib.optionals withGui [ wrapQtAppsHook ];
|
||||||
|
|
||||||
buildInputs = [ boost libevent miniupnpc zeromq zlib ]
|
buildInputs = [ boost libevent miniupnpc zeromq zlib ]
|
||||||
++ lib.optionals withWallet [ db48 sqlite ]
|
++ lib.optionals withWallet [ sqlite ]
|
||||||
++ lib.optionals withGui [ qrencode qtbase qttools ];
|
++ lib.optionals withGui [ qrencode qtbase qttools ];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
buildDotnetModule,
|
buildDotnetModule,
|
||||||
dotnetCorePackages,
|
dotnetCorePackages,
|
||||||
autoPatchelfHook,
|
|
||||||
zlib,
|
zlib,
|
||||||
openssl,
|
openssl,
|
||||||
}:
|
}:
|
||||||
|
@ -25,7 +24,6 @@ buildDotnetModule rec {
|
||||||
dotnet-sdk = dotnetCorePackages.sdk_7_0;
|
dotnet-sdk = dotnetCorePackages.sdk_7_0;
|
||||||
dotnet-runtime = dotnetCorePackages.aspnetcore_7_0;
|
dotnet-runtime = dotnetCorePackages.aspnetcore_7_0;
|
||||||
|
|
||||||
nativeBuildInputs = [autoPatchelfHook];
|
|
||||||
buildInputs = [stdenv.cc.cc.lib zlib];
|
buildInputs = [stdenv.cc.cc.lib zlib];
|
||||||
|
|
||||||
runtimeDeps = [openssl zlib];
|
runtimeDeps = [openssl zlib];
|
||||||
|
|
|
@ -1,21 +1,26 @@
|
||||||
{ lib, melpaBuild, fetchurl, writeText }:
|
{
|
||||||
|
lib,
|
||||||
|
melpaBuild,
|
||||||
|
fetchzip,
|
||||||
|
writeText,
|
||||||
|
}:
|
||||||
|
|
||||||
melpaBuild rec {
|
melpaBuild rec {
|
||||||
pname = "ebuild-mode";
|
pname = "ebuild-mode";
|
||||||
version = "1.67";
|
version = "1.70";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchzip {
|
||||||
url = "https://dev.gentoo.org/~ulm/emacs/ebuild-mode-${version}.tar.xz";
|
url = "https://gitweb.gentoo.org/proj/ebuild-mode.git/snapshot/ebuild-mode-${version}.tar.bz2";
|
||||||
hash = "sha256-5qxHpu1BLtI8LFnL/sAoqmo80zeyElxIdFtAsfMefUE=";
|
hash = "sha256-dOm3xJMFLelwcImIwckeQHx1GqV9PB+I45QA9UT1nCM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# not used but needs to be set; why?
|
# not used but needs to be set; why?
|
||||||
commit = "e7b45096283ac8836f208babddfd1ea1c1d1d1d";
|
commit = "a643f177b58aa8869f2f24814e990320aa4f0f96";
|
||||||
|
|
||||||
recipe = writeText "recipe" ''
|
recipe = writeText "recipe" ''
|
||||||
(ebuild-mode
|
(ebuild-mode
|
||||||
:url "https://anongit.gentoo.org/git/proj/ebuild-mode.git"
|
:url "https://gitweb.gentoo.org/proj/ebuild-mode.git"
|
||||||
:fetcher git)
|
:fetcher git)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -11,12 +11,12 @@
|
||||||
, pyright
|
, pyright
|
||||||
, ruff
|
, ruff
|
||||||
, tempel
|
, tempel
|
||||||
|
, writeScript
|
||||||
, writeText
|
, writeText
|
||||||
, unstableGitUpdater
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
rev = "0b30d95c6de95b150d93ecee325b95e04ff09e46";
|
rev = "4d18701bdef13f6bdc0ad58d26896dff0548dbab";
|
||||||
python = python3.withPackages (ps: with ps; [
|
python = python3.withPackages (ps: with ps; [
|
||||||
epc
|
epc
|
||||||
orjson
|
orjson
|
||||||
|
@ -28,13 +28,13 @@ let
|
||||||
in
|
in
|
||||||
melpaBuild {
|
melpaBuild {
|
||||||
pname = "lsp-bridge";
|
pname = "lsp-bridge";
|
||||||
version = "20231021.309"; # 3:09 UTC
|
version = "20240423.38";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "manateelazycat";
|
owner = "manateelazycat";
|
||||||
repo = "lsp-bridge";
|
repo = "lsp-bridge";
|
||||||
inherit rev;
|
inherit rev;
|
||||||
hash = "sha256-hR7bZh0ElJ8F9ToJ4dkazF19T8PE01MTcxKrjeaEp4o=";
|
hash = "sha256-6taxbsu5v/mQBwl0CPt/fsTQpclNhi2alp/xIh5omJA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
commit = rev;
|
commit = rev;
|
||||||
|
@ -88,7 +88,22 @@ melpaBuild {
|
||||||
runHook postCheck
|
runHook postCheck
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.updateScript = unstableGitUpdater { };
|
passthru.updateScript = writeScript "update.sh" ''
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p common-updater-scripts coreutils git gnused
|
||||||
|
set -eu -o pipefail
|
||||||
|
|
||||||
|
tmpdir="$(mktemp -d)"
|
||||||
|
git clone --depth=1 https://github.com/manateelazycat/lsp-bridge.git "$tmpdir"
|
||||||
|
|
||||||
|
pushd "$tmpdir"
|
||||||
|
commit=$(git show -s --pretty='format:%H')
|
||||||
|
# Based on: https://github.com/melpa/melpa/blob/2d8716906a0c9e18d6c979d8450bf1d15dd785eb/package-build/package-build.el#L523-L533
|
||||||
|
version=$(TZ=UTC git show -s --pretty='format:%cd' --date='format-local:%Y%m%d.%H%M' | sed 's|\.0*|.|')
|
||||||
|
popd
|
||||||
|
|
||||||
|
update-source-version emacsPackages.lsp-bridge $version --rev="$commit"
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A blazingly fast LSP client for Emacs";
|
description = "A blazingly fast LSP client for Emacs";
|
||||||
|
|
|
@ -1,37 +1,35 @@
|
||||||
{ lib
|
{ lib
|
||||||
, stdenv
|
, stdenv
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, gettext
|
|
||||||
, help2man
|
, help2man
|
||||||
, pkg-config
|
, pkg-config
|
||||||
, texinfo
|
, texinfo
|
||||||
, boehmgc
|
, boehmgc
|
||||||
, readline
|
, readline
|
||||||
, guiSupport ? false, makeWrapper, tcl, tcllib, tk
|
|
||||||
, miSupport ? true, json_c
|
|
||||||
, nbdSupport ? !stdenv.isDarwin, libnbd
|
, nbdSupport ? !stdenv.isDarwin, libnbd
|
||||||
, textStylingSupport ? true
|
, textStylingSupport ? true, gettext
|
||||||
, dejagnu
|
, dejagnu
|
||||||
|
|
||||||
# update script only
|
# update script only
|
||||||
, writeScript
|
, writeScript
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
isCross = stdenv.hostPlatform != stdenv.buildPlatform;
|
isCross = stdenv.hostPlatform != stdenv.buildPlatform;
|
||||||
in stdenv.mkDerivation rec {
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "poke";
|
pname = "poke";
|
||||||
version = "3.2";
|
version = "4.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnu/${pname}/${pname}-${version}.tar.gz";
|
url = "mirror://gnu/poke/poke-${finalAttrs.version}.tar.gz";
|
||||||
hash = "sha256-dY5VHdU6bM5U7JTY/CH6TWtSon0cJmcgbVmezcdPDZc=";
|
hash = "sha256-ArqyLLH6YVOhtqknyLs81Y1QhUPBRIQqbX7nTxmXOnc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "out" "dev" "info" "lib" ]
|
outputs = [ "out" "dev" "info" "lib" ]
|
||||||
# help2man can't cross compile because it runs `poke --help` to
|
# help2man can't cross compile because it runs `poke --help` to
|
||||||
# generate the man page
|
# generate the man page
|
||||||
++ lib.optional (!isCross) "man";
|
++ lib.optional (!isCross) "man";
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs .
|
patchShebangs .
|
||||||
|
@ -40,53 +38,33 @@ in stdenv.mkDerivation rec {
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
gettext
|
|
||||||
pkg-config
|
pkg-config
|
||||||
texinfo
|
texinfo
|
||||||
] ++ lib.optionals (!isCross) [
|
] ++ lib.optionals (!isCross) [
|
||||||
help2man
|
help2man
|
||||||
] ++ lib.optionals guiSupport [
|
|
||||||
makeWrapper
|
|
||||||
tcl.tclPackageHook
|
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [ boehmgc readline ]
|
buildInputs = [ boehmgc readline ]
|
||||||
++ lib.optionals guiSupport [ tcl tcllib tk ]
|
++ lib.optional nbdSupport libnbd
|
||||||
++ lib.optional miSupport json_c
|
++ lib.optional textStylingSupport gettext
|
||||||
++ lib.optional nbdSupport libnbd
|
++ lib.optional finalAttrs.finalPackage.doCheck dejagnu;
|
||||||
++ lib.optional textStylingSupport gettext
|
|
||||||
++ lib.optional (!isCross) dejagnu;
|
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
# libpoke depends on $datadir/poke, so we specify the datadir in
|
# libpoke depends on $datadir/poke, so we specify the datadir in
|
||||||
# $lib, and later move anything else it doesn't depend on to $out
|
# $lib, and later move anything else it doesn't depend on to $out
|
||||||
"--datadir=${placeholder "lib"}/share"
|
"--datadir=${placeholder "lib"}/share"
|
||||||
] ++ lib.optionals guiSupport [
|
|
||||||
"--enable-gui"
|
|
||||||
"--with-tcl=${tcl}/lib"
|
|
||||||
"--with-tk=${tk}/lib"
|
|
||||||
"--with-tkinclude=${tk.dev}/include"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
doCheck = !isCross;
|
doCheck = true;
|
||||||
nativeCheckInputs = lib.optionals (!isCross) [ dejagnu ];
|
nativeCheckInputs = [ dejagnu ];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
moveToOutput share/emacs "$out"
|
moveToOutput share/emacs "$out"
|
||||||
moveToOutput share/vim "$out"
|
moveToOutput share/vim "$out"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Prevent tclPackageHook from auto-wrapping all binaries, we only
|
|
||||||
# need to wrap poke-gui
|
|
||||||
dontWrapTclBinaries = true;
|
|
||||||
|
|
||||||
postFixup = lib.optionalString guiSupport ''
|
|
||||||
wrapProgram "$out/bin/poke-gui" \
|
|
||||||
--prefix TCLLIBPATH ' ' "$TCLLIBPATH"
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
updateScript = writeScript "update-poke" ''
|
updateScript = writeScript "update-poke" ''
|
||||||
#!/usr/bin/env nix-shell
|
#!/usr/bin/env nix-shell
|
||||||
|
@ -97,18 +75,17 @@ in stdenv.mkDerivation rec {
|
||||||
# Expect the text in format of '<a href="...">poke 2.0</a>'
|
# Expect the text in format of '<a href="...">poke 2.0</a>'
|
||||||
new_version="$(curl -s https://www.jemarch.net/poke |
|
new_version="$(curl -s https://www.jemarch.net/poke |
|
||||||
pcregrep -o1 '>poke ([0-9.]+)</a>')"
|
pcregrep -o1 '>poke ([0-9.]+)</a>')"
|
||||||
update-source-version ${pname} "$new_version"
|
update-source-version poke "$new_version"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
description = "Interactive, extensible editor for binary data";
|
description = "Interactive, extensible editor for binary data";
|
||||||
homepage = "http://www.jemarch.net/poke";
|
homepage = "http://www.jemarch.net/poke";
|
||||||
changelog = "https://git.savannah.gnu.org/cgit/poke.git/plain/ChangeLog?h=releases/poke-${version}";
|
changelog = "https://git.savannah.gnu.org/cgit/poke.git/plain/ChangeLog?h=releases/poke-${finalAttrs.version}";
|
||||||
license = licenses.gpl3Plus;
|
license = lib.licenses.gpl3Plus;
|
||||||
maintainers = with maintainers; [ AndersonTorres kira-bruneau ];
|
maintainers = with lib.maintainers; [ AndersonTorres kira-bruneau ];
|
||||||
platforms = platforms.unix;
|
platforms = lib.platforms.unix;
|
||||||
|
broken = stdenv.isDarwin && stdenv.isAarch64;
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
|
||||||
# TODO: Enable guiSupport by default once it's more than just a stub
|
|
||||||
|
|
|
@ -4715,14 +4715,14 @@ final: prev:
|
||||||
|
|
||||||
hydra-nvim = buildVimPlugin {
|
hydra-nvim = buildVimPlugin {
|
||||||
pname = "hydra.nvim";
|
pname = "hydra.nvim";
|
||||||
version = "2023-02-06";
|
version = "2024-03-15";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "anuvyklack";
|
owner = "nvimtools";
|
||||||
repo = "hydra.nvim";
|
repo = "hydra.nvim";
|
||||||
rev = "3ced42c0b6a6c85583ff0f221635a7f4c1ab0dd0";
|
rev = "8578056a2226ed49fc608167edc143a87f75d809";
|
||||||
sha256 = "1dwhi2543drbncrqx80nsi5hw48d6my4wbsp71gx6m0clkp4469h";
|
sha256 = "sha256-Qxp2FigXlupAw/ZwZRVJ+hRKzVRtupV6L4a6jOslwI0=";
|
||||||
};
|
};
|
||||||
meta.homepage = "https://github.com/anuvyklack/hydra.nvim/";
|
meta.homepage = "https://github.com/nvimtools/hydra.nvim/";
|
||||||
};
|
};
|
||||||
|
|
||||||
i3config-vim = buildVimPlugin {
|
i3config-vim = buildVimPlugin {
|
||||||
|
@ -8184,6 +8184,18 @@ final: prev:
|
||||||
meta.homepage = "https://github.com/ishan9299/nvim-solarized-lua/";
|
meta.homepage = "https://github.com/ishan9299/nvim-solarized-lua/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nvim-sops = buildVimPlugin {
|
||||||
|
pname = "nvim-sops";
|
||||||
|
version = "2023-07-31";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "lucidph3nx";
|
||||||
|
repo = "nvim-sops";
|
||||||
|
rev = "cb2209562d00ef8c6c88bdec836d9edb8fbb96ef";
|
||||||
|
sha256 = "0fvxnx5ji3d4kgsxl2ssqs7s567ibk4h38mz70m3nhs3sxk696lj";
|
||||||
|
};
|
||||||
|
meta.homepage = "https://github.com/lucidph3nx/nvim-sops/";
|
||||||
|
};
|
||||||
|
|
||||||
nvim-spectre = buildVimPlugin {
|
nvim-spectre = buildVimPlugin {
|
||||||
pname = "nvim-spectre";
|
pname = "nvim-spectre";
|
||||||
version = "2024-04-17";
|
version = "2024-04-17";
|
||||||
|
|
|
@ -394,7 +394,7 @@ https://github.com/smoka7/hop.nvim/,,
|
||||||
https://github.com/rktjmp/hotpot.nvim/,,
|
https://github.com/rktjmp/hotpot.nvim/,,
|
||||||
https://github.com/lewis6991/hover.nvim/,HEAD,
|
https://github.com/lewis6991/hover.nvim/,HEAD,
|
||||||
https://github.com/othree/html5.vim/,HEAD,
|
https://github.com/othree/html5.vim/,HEAD,
|
||||||
https://github.com/anuvyklack/hydra.nvim/,HEAD,
|
https://github.com/nvimtools/hydra.nvim/,HEAD,
|
||||||
https://github.com/mboughaba/i3config.vim/,,
|
https://github.com/mboughaba/i3config.vim/,,
|
||||||
https://github.com/cocopon/iceberg.vim/,,
|
https://github.com/cocopon/iceberg.vim/,,
|
||||||
https://github.com/idris-hackers/idris-vim/,,
|
https://github.com/idris-hackers/idris-vim/,,
|
||||||
|
@ -688,6 +688,7 @@ https://github.com/dstein64/nvim-scrollview/,,
|
||||||
https://github.com/s1n7ax/nvim-search-and-replace/,HEAD,
|
https://github.com/s1n7ax/nvim-search-and-replace/,HEAD,
|
||||||
https://github.com/dcampos/nvim-snippy/,HEAD,
|
https://github.com/dcampos/nvim-snippy/,HEAD,
|
||||||
https://github.com/ishan9299/nvim-solarized-lua/,,
|
https://github.com/ishan9299/nvim-solarized-lua/,,
|
||||||
|
https://github.com/lucidph3nx/nvim-sops/,HEAD,
|
||||||
https://github.com/nvim-pack/nvim-spectre/,,
|
https://github.com/nvim-pack/nvim-spectre/,,
|
||||||
https://github.com/chrisgrieser/nvim-spider/,HEAD,
|
https://github.com/chrisgrieser/nvim-spider/,HEAD,
|
||||||
https://github.com/kylechui/nvim-surround/,main,
|
https://github.com/kylechui/nvim-surround/,main,
|
||||||
|
|
|
@ -1793,8 +1793,8 @@ let
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
publisher = "github";
|
publisher = "github";
|
||||||
name = "copilot";
|
name = "copilot";
|
||||||
version = "1.172.758";
|
version = "1.180.827";
|
||||||
hash = "sha256-sK3IiA4mQ6Hse+UpZ81Zb5iBSREzTrs7ypsfGbJiXm4=";
|
hash = "sha256-HA1na9FoExIiAay+tEjxWKqpG2+wq4Oww77Gl2Bhciw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1810,8 +1810,8 @@ let
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
publisher = "github";
|
publisher = "github";
|
||||||
name = "copilot-chat";
|
name = "copilot-chat";
|
||||||
version = "0.13.2024022301"; # compatible with vscode >= 1.87
|
version = "0.14.2024032901"; # compatible with vscode 1.88.1
|
||||||
hash = "sha256-WdojLEdrg6iqTH/cNPEWb6VEfk+gIHh2M5GHrAURjy8=";
|
hash = "sha256-+6N7IGO5j0wP5Zg8CwapHeKGWiZzc43VM4jCtqJDJIQ=";
|
||||||
};
|
};
|
||||||
meta = {
|
meta = {
|
||||||
description = "GitHub Copilot Chat is a companion extension to GitHub Copilot that houses experimental chat features";
|
description = "GitHub Copilot Chat is a companion extension to GitHub Copilot that houses experimental chat features";
|
||||||
|
@ -2073,6 +2073,22 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hiukky.flate = buildVscodeMarketplaceExtension {
|
||||||
|
mktplcRef = {
|
||||||
|
name = "flate";
|
||||||
|
publisher = "hiukky";
|
||||||
|
version = "0.7.0";
|
||||||
|
hash = "sha256-6ouYQk7mHCJdGrcutM1EXolJAT7/Sp1hi+Bu0983GKw=";
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
description = "Colorful dark themes for VS Code";
|
||||||
|
downloadPage = "https://marketplace.visualstudio.com/items?itemName=hiukky.flate";
|
||||||
|
homepage = "https://github.com/hiukky/flate";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
maintainers = [ lib.maintainers.stunkymonkey ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
hookyqr.beautify = buildVscodeMarketplaceExtension {
|
hookyqr.beautify = buildVscodeMarketplaceExtension {
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
name = "beautify";
|
name = "beautify";
|
||||||
|
|
|
@ -8,8 +8,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
name = "vscode-pylance";
|
name = "vscode-pylance";
|
||||||
publisher = "MS-python";
|
publisher = "MS-python";
|
||||||
version = "2023.8.50";
|
version = "2024.4.1";
|
||||||
hash = "sha256-xJU/j5r/Idp/0VorEfciT4SFKRBpMCv9Z0LKO/++1Gk=";
|
hash = "sha256-huKu6yefGXOay5Az4vksopRt8heoLxvKUrg/J1NlQFo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ pyright ];
|
buildInputs = [ pyright ];
|
||||||
|
|
|
@ -12,8 +12,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||||
publisher = "nvarner";
|
publisher = "nvarner";
|
||||||
# Please update the corresponding binary (typst-lsp) when updating
|
# Please update the corresponding binary (typst-lsp) when updating
|
||||||
# this extension.
|
# this extension.
|
||||||
version = "0.12.1";
|
version = "0.13.0";
|
||||||
hash = "sha256-JcfFaR1wU5XwapH8vnfVy7Cb7DfUWVeoLfBV3wEtCpE=";
|
hash = "sha256-xiFUJymZOTEqlGvCHvLiI0pVg7NLgIXhZ7x8yx+a5mY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -46,13 +46,13 @@ let
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "cemu";
|
pname = "cemu";
|
||||||
version = "2.0-78";
|
version = "2.0-79";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cemu-project";
|
owner = "cemu-project";
|
||||||
repo = "Cemu";
|
repo = "Cemu";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-ivdqO44+8sDgOshUDFc+4eTgzcEDSiPPIawyktYpob4=";
|
hash = "sha256-vSZLiRzOOJJMgycjI5xpgJcUAj5WCz241mAABgNuECw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|
|
@ -693,10 +693,10 @@
|
||||||
"src": {
|
"src": {
|
||||||
"owner": "libretro",
|
"owner": "libretro",
|
||||||
"repo": "libretro-uae",
|
"repo": "libretro-uae",
|
||||||
"rev": "3c4f02622bd9ab4bbfc5e90cea9c7e60cf410073",
|
"rev": "4806716da70cf1f030788b43190d71aae61e2041",
|
||||||
"hash": "sha256-UMbD1RcgQmilBwwzvakUIWWWwg78sl1YT9EOE3Rhyao="
|
"hash": "sha256-MNqk8ItSC//82HsRfXVYCH+Xd2GV8OA/2heZprx89PY="
|
||||||
},
|
},
|
||||||
"version": "unstable-2024-04-12"
|
"version": "unstable-2024-04-19"
|
||||||
},
|
},
|
||||||
"quicknes": {
|
"quicknes": {
|
||||||
"fetcher": "fetchFromGitHub",
|
"fetcher": "fetchFromGitHub",
|
||||||
|
|
|
@ -69,9 +69,9 @@ in rec {
|
||||||
|
|
||||||
unstable = fetchurl rec {
|
unstable = fetchurl rec {
|
||||||
# NOTE: Don't forget to change the hash for staging as well.
|
# NOTE: Don't forget to change the hash for staging as well.
|
||||||
version = "9.6";
|
version = "9.7";
|
||||||
url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz";
|
url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz";
|
||||||
hash = "sha256-Dglg7YK2AX6ILtozOLrRJwoRd7bPBfA6wfqxVavoIEg=";
|
hash = "sha256-2fPDM2VuiL1M71Mx80sci2nJZKUnWe73RdjdrlGhU1M=";
|
||||||
inherit (stable) patches;
|
inherit (stable) patches;
|
||||||
|
|
||||||
## see http://wiki.winehq.org/Gecko
|
## see http://wiki.winehq.org/Gecko
|
||||||
|
@ -88,9 +88,9 @@ in rec {
|
||||||
|
|
||||||
## see http://wiki.winehq.org/Mono
|
## see http://wiki.winehq.org/Mono
|
||||||
mono = fetchurl rec {
|
mono = fetchurl rec {
|
||||||
version = "9.0.0";
|
version = "9.1.0";
|
||||||
url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}-x86.msi";
|
url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}-x86.msi";
|
||||||
hash = "sha256-efbEMQBnVWbBEvQZm56nuUTTOBZLNL2R+hGwsKQU4cQ=";
|
hash = "sha256-igoeaDe0lN9Jkn5ddZscaQjom4ovjjrQJeHCiBiCR24=";
|
||||||
};
|
};
|
||||||
|
|
||||||
updateScript = writeShellScript "update-wine-unstable" ''
|
updateScript = writeShellScript "update-wine-unstable" ''
|
||||||
|
@ -117,7 +117,7 @@ in rec {
|
||||||
staging = fetchFromGitLab rec {
|
staging = fetchFromGitLab rec {
|
||||||
# https://gitlab.winehq.org/wine/wine-staging
|
# https://gitlab.winehq.org/wine/wine-staging
|
||||||
inherit (unstable) version;
|
inherit (unstable) version;
|
||||||
hash = "sha256-6AKN/KpmsTw9qxErhTTzqWuglgFdOAhtaoBlVRcs71Q=";
|
hash = "sha256-KU6i1P81Fr+4aZH/SJ+YibaIfX88SZMPdPcGS2mT2CE=";
|
||||||
domain = "gitlab.winehq.org";
|
domain = "gitlab.winehq.org";
|
||||||
owner = "wine";
|
owner = "wine";
|
||||||
repo = "wine-staging";
|
repo = "wine-staging";
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{ lib, fetchFromGitHub, python3Packages, file, less, highlight, w3m, ranger, testers
|
{ lib, fetchFromGitHub, python3Packages, file, less, highlight, w3m, ranger, imagemagick, testers
|
||||||
, imagePreviewSupport ? true
|
, imagePreviewSupport ? true
|
||||||
|
, sixelPreviewSupport ? true
|
||||||
, neoVimSupport ? true
|
, neoVimSupport ? true
|
||||||
, improvedEncodingDetection ? true
|
, improvedEncodingDetection ? true
|
||||||
, rightToLeftTextSupport ? false
|
, rightToLeftTextSupport ? false
|
||||||
|
@ -7,22 +8,23 @@
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "ranger";
|
pname = "ranger";
|
||||||
version = "1.9.3";
|
version = "1.9.3-unstable-2023-08-23";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ranger";
|
owner = "ranger";
|
||||||
repo = "ranger";
|
repo = "ranger";
|
||||||
rev = "v${version}";
|
rev = "38bb8901004b75a407ffee4b9e176bc0a436cb15";
|
||||||
sha256= "1rygfryczanvqxn43lmlkgs04sbqznbvbb9hlbm3h5qgdcl0xlw8";
|
hash = "sha256-NpsrABk95xHNvhlRjKFh326IW83mYj1cmK3aE9JQSRo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
LC_ALL = "en_US.UTF-8";
|
LC_ALL = "en_US.UTF-8";
|
||||||
|
|
||||||
nativeCheckInputs = with python3Packages; [ pytestCheckHook ];
|
nativeCheckInputs = with python3Packages; [ pytestCheckHook astroid pylint ];
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
less
|
less
|
||||||
file
|
file
|
||||||
] ++ lib.optionals imagePreviewSupport [ python3Packages.pillow ]
|
] ++ lib.optionals imagePreviewSupport [ python3Packages.pillow ]
|
||||||
|
++ lib.optionals sixelPreviewSupport [ imagemagick ]
|
||||||
++ lib.optionals neoVimSupport [ python3Packages.pynvim ]
|
++ lib.optionals neoVimSupport [ python3Packages.pynvim ]
|
||||||
++ lib.optionals improvedEncodingDetection [ python3Packages.chardet ]
|
++ lib.optionals improvedEncodingDetection [ python3Packages.chardet ]
|
||||||
++ lib.optionals rightToLeftTextSupport [ python3Packages.python-bidi ];
|
++ lib.optionals rightToLeftTextSupport [ python3Packages.python-bidi ];
|
||||||
|
@ -49,10 +51,6 @@ python3Packages.buildPythonApplication rec {
|
||||||
--replace "set preview_images false" "set preview_images true"
|
--replace "set preview_images false" "set preview_images true"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru.tests.version = testers.testVersion {
|
|
||||||
package = ranger;
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "File manager with minimalistic curses interface";
|
description = "File manager with minimalistic curses interface";
|
||||||
homepage = "https://ranger.github.io/";
|
homepage = "https://ranger.github.io/";
|
||||||
|
|
|
@ -63,6 +63,8 @@ stdenv.mkDerivation {
|
||||||
$out/bin/${mainProgram} --version
|
$out/bin/${mainProgram} --version
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = ./update.sh;
|
||||||
|
|
||||||
passthru.tests.version = testers.testVersion {
|
passthru.tests.version = testers.testVersion {
|
||||||
package = _1password;
|
package = _1password;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p curl gnused nurl xq-xml
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
ROOT="$(dirname "$(readlink -f "$0")")"
|
||||||
|
NIX_DRV="$ROOT/default.nix"
|
||||||
|
if [ ! -f "$NIX_DRV" ]; then
|
||||||
|
echo "ERROR: cannot find default.nix in $ROOT"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fetch_linux() {
|
||||||
|
VER="$1"
|
||||||
|
ARCH="$2"
|
||||||
|
URL="https://cache.agilebits.com/dist/1P/op2/pkg/v${VER}/op_${ARCH}_v${VER}.zip"
|
||||||
|
nurl --hash --expr "(import <nixpkgs> { }).fetchzip { url = \"$URL\"; stripRoot = false; }"
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch_darwin() {
|
||||||
|
VER="$1"
|
||||||
|
URL="https://cache.agilebits.com/dist/1P/op2/pkg/v${VER}/op_apple_universal_v${VER}.pkg"
|
||||||
|
nurl --hash --expr "(import <nixpkgs> { }).fetchurl { url = \"$URL\"; }"
|
||||||
|
}
|
||||||
|
|
||||||
|
replace_sha() {
|
||||||
|
sed -i "s|\"$1\" \"sha256-.\{44\}\"|\"$1\" \"$2\"|" "$NIX_DRV"
|
||||||
|
}
|
||||||
|
|
||||||
|
CLI_VERSION="$(curl -Ls https://app-updates.agilebits.com/product_history/CLI2 | xq -q 'h3' | head -n1)"
|
||||||
|
|
||||||
|
CLI_LINUX_AARCH64_SHA256=$(fetch_linux "$CLI_VERSION" "linux_arm64")
|
||||||
|
CLI_LINUX_I686_SHA256=$(fetch_linux "$CLI_VERSION" "linux_386")
|
||||||
|
CLI_LINUX_X64_SHA256=$(fetch_linux "$CLI_VERSION" "linux_amd64")
|
||||||
|
CLI_DARWIN_UNIVERSAL_SHA256=$(fetch_darwin "$CLI_VERSION")
|
||||||
|
|
||||||
|
sed -i "s/version = \".*\"/version = \"$CLI_VERSION\"/" "$NIX_DRV"
|
||||||
|
|
||||||
|
replace_sha "linux_arm64" "$CLI_LINUX_AARCH64_SHA256"
|
||||||
|
replace_sha "linux_386" "$CLI_LINUX_I686_SHA256"
|
||||||
|
replace_sha "linux_amd64" "$CLI_LINUX_X64_SHA256"
|
||||||
|
replace_sha "apple_universal" "$CLI_DARWIN_UNIVERSAL_SHA256"
|
|
@ -15,7 +15,6 @@
|
||||||
, makeDesktopItem
|
, makeDesktopItem
|
||||||
, copyDesktopItems
|
, copyDesktopItems
|
||||||
, icoutils
|
, icoutils
|
||||||
, autoPatchelfHook
|
|
||||||
, bintools
|
, bintools
|
||||||
, fixDarwinDylibNames
|
, fixDarwinDylibNames
|
||||||
, autoSignDarwinBinariesHook
|
, autoSignDarwinBinariesHook
|
||||||
|
@ -40,8 +39,7 @@ buildDotnetModule rec {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
copyDesktopItems
|
copyDesktopItems
|
||||||
icoutils
|
icoutils
|
||||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]
|
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ bintools fixDarwinDylibNames ]
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ bintools fixDarwinDylibNames ]
|
|
||||||
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [ autoSignDarwinBinariesHook ];
|
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [ autoSignDarwinBinariesHook ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
|
@ -1,49 +1,50 @@
|
||||||
{ stdenv
|
{
|
||||||
, lib
|
stdenv,
|
||||||
, openexr
|
lib,
|
||||||
, jemalloc
|
openexr,
|
||||||
, c-blosc
|
jemalloc,
|
||||||
, binutils
|
c-blosc,
|
||||||
, fetchFromGitHub
|
binutils,
|
||||||
, cmake
|
fetchFromGitHub,
|
||||||
, pkg-config
|
cmake,
|
||||||
, wrapGAppsHook
|
pkg-config,
|
||||||
, boost179
|
wrapGAppsHook,
|
||||||
, cereal
|
boost179,
|
||||||
, cgal_5
|
cereal,
|
||||||
, curl
|
cgal_5,
|
||||||
, dbus
|
curl,
|
||||||
, eigen
|
dbus,
|
||||||
, expat
|
eigen,
|
||||||
, gcc-unwrapped
|
expat,
|
||||||
, glew
|
gcc-unwrapped,
|
||||||
, glfw
|
glew,
|
||||||
, glib
|
glfw,
|
||||||
, glib-networking
|
glib,
|
||||||
, gmp
|
glib-networking,
|
||||||
, gstreamer
|
gmp,
|
||||||
, gst-plugins-base
|
gstreamer,
|
||||||
, gst-plugins-bad
|
gst-plugins-base,
|
||||||
, gst-plugins-good
|
gst-plugins-bad,
|
||||||
, gtest
|
gst-plugins-good,
|
||||||
, gtk3
|
gtest,
|
||||||
, hicolor-icon-theme
|
gtk3,
|
||||||
, ilmbase
|
hicolor-icon-theme,
|
||||||
, libpng
|
ilmbase,
|
||||||
, mesa
|
libpng,
|
||||||
, mpfr
|
mesa,
|
||||||
, nlopt
|
mpfr,
|
||||||
, opencascade-occt
|
nlopt,
|
||||||
, openvdb
|
opencascade-occt,
|
||||||
, pcre
|
openvdb,
|
||||||
, qhull
|
pcre,
|
||||||
, systemd
|
qhull,
|
||||||
, tbb_2021_11
|
systemd,
|
||||||
, webkitgtk
|
tbb_2021_11,
|
||||||
, wxGTK31
|
webkitgtk,
|
||||||
, xorg
|
wxGTK31,
|
||||||
, fetchpatch
|
xorg,
|
||||||
, withSystemd ? stdenv.isLinux
|
fetchpatch,
|
||||||
|
withSystemd ? stdenv.isLinux,
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
wxGTK31' = wxGTK31.overrideAttrs (old: {
|
wxGTK31' = wxGTK31.overrideAttrs (old: {
|
||||||
|
@ -53,7 +54,14 @@ let
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
openvdb_tbb_2021_8 = openvdb.overrideAttrs (old: rec {
|
openvdb_tbb_2021_8 = openvdb.overrideAttrs (old: rec {
|
||||||
buildInputs = [ openexr boost179 tbb_2021_11 jemalloc c-blosc ilmbase ];
|
buildInputs = [
|
||||||
|
openexr
|
||||||
|
boost179
|
||||||
|
tbb_2021_11
|
||||||
|
jemalloc
|
||||||
|
c-blosc
|
||||||
|
ilmbase
|
||||||
|
];
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -106,9 +114,7 @@ stdenv.mkDerivation rec {
|
||||||
webkitgtk
|
webkitgtk
|
||||||
wxGTK31'
|
wxGTK31'
|
||||||
xorg.libX11
|
xorg.libX11
|
||||||
] ++ lib.optionals withSystemd [
|
] ++ lib.optionals withSystemd [ systemd ] ++ checkInputs;
|
||||||
systemd
|
|
||||||
] ++ checkInputs;
|
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
# Fix for webkitgtk linking
|
# Fix for webkitgtk linking
|
||||||
|
@ -169,11 +175,8 @@ stdenv.mkDerivation rec {
|
||||||
# needed to prevent collisions between the LICENSE.txt files of
|
# needed to prevent collisions between the LICENSE.txt files of
|
||||||
# bambu-studio and orca-slicer.
|
# bambu-studio and orca-slicer.
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/share/doc
|
mv $out/LICENSE.txt $out/share/BambuStudio/LICENSE.txt
|
||||||
mv $out/LICENSE.txt $out/share/doc/LICENSE.txt
|
mv $out/README.md $out/share/BambuStudio/README.md
|
||||||
if [ -f $out/README.md ]; then
|
|
||||||
mv $out/README.md $out/share/doc/README.md
|
|
||||||
fi
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -1,27 +1,41 @@
|
||||||
{ lib, fetchFromGitHub, makeDesktopItem, bambu-studio }:
|
{
|
||||||
|
lib,
|
||||||
|
fetchFromGitHub,
|
||||||
|
bambu-studio,
|
||||||
|
}:
|
||||||
|
|
||||||
bambu-studio.overrideAttrs (finalAttrs: previousAttrs: {
|
bambu-studio.overrideAttrs (
|
||||||
version = "2.0.0";
|
finalAttrs: previousAttrs: {
|
||||||
pname = "orca-slicer";
|
version = "2.0.0";
|
||||||
|
pname = "orca-slicer";
|
||||||
|
|
||||||
# Don't inherit patches from bambu-studio
|
# Don't inherit patches from bambu-studio
|
||||||
patches = [
|
patches = [ ./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch ];
|
||||||
./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "SoftFever";
|
owner = "SoftFever";
|
||||||
repo = "OrcaSlicer";
|
repo = "OrcaSlicer";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-YlLDUH3ODIfax5QwnsVJi1JjZ9WtxP3ssqRP1C4d4bw=";
|
hash = "sha256-YlLDUH3ODIfax5QwnsVJi1JjZ9WtxP3ssqRP1C4d4bw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
# needed to prevent collisions between the LICENSE.txt files of
|
||||||
description = "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc";
|
# bambu-studio and orca-slicer.
|
||||||
homepage = "https://github.com/SoftFever/OrcaSlicer";
|
postInstall = ''
|
||||||
license = licenses.agpl3Only;
|
mv $out/LICENSE.txt $out/share/OrcaSlicer/LICENSE.txt
|
||||||
maintainers = with maintainers; [ zhaofengli ovlach pinpox ];
|
'';
|
||||||
mainProgram = "orca-slicer";
|
|
||||||
platforms = platforms.linux;
|
meta = with lib; {
|
||||||
};
|
description = "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc";
|
||||||
})
|
homepage = "https://github.com/SoftFever/OrcaSlicer";
|
||||||
|
license = licenses.agpl3Only;
|
||||||
|
maintainers = with maintainers; [
|
||||||
|
zhaofengli
|
||||||
|
ovlach
|
||||||
|
pinpox
|
||||||
|
];
|
||||||
|
mainProgram = "orca-slicer";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
|
@ -32,11 +32,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "calibre";
|
pname = "calibre";
|
||||||
version = "7.8.0";
|
version = "7.9.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.calibre-ebook.com/${finalAttrs.version}/calibre-${finalAttrs.version}.tar.xz";
|
url = "https://download.calibre-ebook.com/${finalAttrs.version}/calibre-${finalAttrs.version}.tar.xz";
|
||||||
hash = "sha256-FxYuQzzuaWZihSsmeJc6ssG3VBr2YNEi3TkXyyymLUQ=";
|
hash = "sha256-Ilzv4HXW6ZmEVNUWQm04cHZ71FEgjfWVX9IvrfYCHIk=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
@ -44,7 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
name = "0001-only-plugin-update.patch";
|
name = "0001-only-plugin-update.patch";
|
||||||
url = "https://raw.githubusercontent.com/debian-calibre/calibre/debian/${finalAttrs.version}+ds-1/debian/patches/0001-only-plugin-update.patch";
|
url = "https://raw.githubusercontent.com/debian-calibre/calibre/debian/${finalAttrs.version}+ds-1/debian/patches/0001-only-plugin-update.patch";
|
||||||
hash = "sha256-uL1mSjgCl5ZRLbSuKxJM6XTfvVwog70F7vgKtQzQNEQ=";
|
hash = "sha256-mHZkUoVcoVi9XBOSvM5jyvpOTCcM91g9+Pa/lY6L5p8=";
|
||||||
})
|
})
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
name = "0007-Hardening-Qt-code.patch";
|
name = "0007-Hardening-Qt-code.patch";
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec {
|
python3Packages.buildPythonApplication rec {
|
||||||
pname = "gnome-frog";
|
pname = "gnome-frog";
|
||||||
version = "1.4.2";
|
version = "1.5.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "TenderOwl";
|
owner = "TenderOwl";
|
||||||
repo = "Frog";
|
repo = "Frog";
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
sha256 = "sha256-w/ENUhJt7bYy5htBLolb/HysK8/scRaPQX5qEezQcXY=";
|
sha256 = "sha256-zL6zuqHF1pTXT3l1mAFx2EL+0ThzjXfst/nEyNVorZg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
format = "other";
|
format = "other";
|
||||||
|
@ -70,7 +70,11 @@ python3Packages.buildPythonApplication rec {
|
||||||
];
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = with python3Packages; [
|
propagatedBuildInputs = with python3Packages; [
|
||||||
|
loguru
|
||||||
|
nanoid
|
||||||
|
posthog
|
||||||
pygobject3
|
pygobject3
|
||||||
|
python-dateutil
|
||||||
pillow
|
pillow
|
||||||
pytesseract
|
pytesseract
|
||||||
pyzbar
|
pyzbar
|
||||||
|
|
|
@ -1,28 +1,8 @@
|
||||||
diff --git a/frog/config.py b/frog/config.py
|
|
||||||
index 9837755..b73e4e3 100644
|
|
||||||
--- a/frog/config.py
|
|
||||||
+++ b/frog/config.py
|
|
||||||
@@ -30,10 +30,14 @@ import os
|
|
||||||
APP_ID = "com.github.tenderowl.frog"
|
|
||||||
RESOURCE_PREFIX = "/com/github/tenderowl/frog"
|
|
||||||
|
|
||||||
+# This is based from the XDG Base Directory specification.
|
|
||||||
+if not os.getenv('XDG_DATA_HOME'):
|
|
||||||
+ os.environ['XDG_DATA_HOME'] = os.path.expanduser("~/.local/share")
|
|
||||||
+
|
|
||||||
if not os.path.exists(os.path.join(os.environ['XDG_DATA_HOME'], 'tessdata')):
|
|
||||||
os.mkdir(os.path.join(os.environ['XDG_DATA_HOME'], 'tessdata'))
|
|
||||||
|
|
||||||
tessdata_url = "https://github.com/tesseract-ocr/tessdata/raw/main/"
|
|
||||||
tessdata_best_url = "https://github.com/tesseract-ocr/tessdata_best/raw/main/"
|
|
||||||
tessdata_dir = os.path.join(os.environ['XDG_DATA_HOME'], 'tessdata')
|
|
||||||
-tessdata_config = f'--tessdata-dir {tessdata_dir} –psm 6'
|
|
||||||
+tessdata_config = f'–-psm 6 --tessdata-dir {tessdata_dir}'
|
|
||||||
diff --git a/frog/language_manager.py b/frog/language_manager.py
|
diff --git a/frog/language_manager.py b/frog/language_manager.py
|
||||||
index 5752be6..4f6a908 100644
|
index d822c44..bc289db 100644
|
||||||
--- a/frog/language_manager.py
|
--- a/frog/language_manager.py
|
||||||
+++ b/frog/language_manager.py
|
+++ b/frog/language_manager.py
|
||||||
@@ -156,7 +156,7 @@ class LanguageManager(GObject.GObject):
|
@@ -193,7 +193,7 @@ class LanguageManager(GObject.GObject):
|
||||||
os.mkdir(tessdata_dir)
|
os.mkdir(tessdata_dir)
|
||||||
|
|
||||||
dest_path = os.path.join(tessdata_dir, 'eng.traineddata')
|
dest_path = os.path.join(tessdata_dir, 'eng.traineddata')
|
||||||
|
|
|
@ -1,46 +1,68 @@
|
||||||
{ lib, stdenv, fetchgit, ant, jdk, makeWrapper, jre, coreutils, which }:
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchgit
|
||||||
|
, ant
|
||||||
|
, jdk
|
||||||
|
, stripJavaArchivesHook
|
||||||
|
, makeWrapper
|
||||||
|
, jre
|
||||||
|
, coreutils
|
||||||
|
, which
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation {
|
||||||
pname = "projectlibre";
|
pname = "projectlibre";
|
||||||
version = "1.7.0";
|
version = "1.7.0";
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://git.code.sf.net/p/projectlibre/code";
|
url = "https://git.code.sf.net/p/projectlibre/code";
|
||||||
rev = "0c939507cc63e9eaeb855437189cdec79e9386c2"; # version 1.7.0 was not tagged
|
rev = "0c939507cc63e9eaeb855437189cdec79e9386c2"; # version 1.7.0 was not tagged
|
||||||
sha256 = "0vy5vgbp45ai957gaby2dj1hvmbxfdlfnwcanwqm9f8q16qipdbq";
|
hash = "sha256-eLUbsQkYuVQxt4px62hzfdUNg2zCL/VOSVEVctfbxW8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [
|
||||||
buildInputs = [ ant jdk ];
|
ant
|
||||||
buildPhase = ''
|
jdk
|
||||||
export ANT_OPTS=-Dbuild.sysclasspath=ignore
|
stripJavaArchivesHook
|
||||||
${ant}/bin/ant -f openproj_build/build.xml
|
makeWrapper
|
||||||
'';
|
];
|
||||||
|
|
||||||
resourcesPath = "openproj_build/resources";
|
buildPhase = ''
|
||||||
desktopItem = "${resourcesPath}/projectlibre.desktop";
|
runHook preBuild
|
||||||
|
ant -f openproj_build/build.xml
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/share/{applications,projectlibre/samples,pixmaps,doc/projectlibre} $out/bin
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/share/{projectlibre/samples,doc/projectlibre}
|
||||||
|
|
||||||
|
pushd openproj_build
|
||||||
|
cp -R dist/* $out/share/projectlibre
|
||||||
|
cp -R license $out/share/doc/projectlibre
|
||||||
|
cp -R resources/samples/* $out/share/projectlibre/samples
|
||||||
|
install -Dm644 resources/projectlibre.desktop -t $out/share/applications
|
||||||
|
install -Dm644 resources/projectlibre.png -t $out/share/pixmaps
|
||||||
|
install -Dm755 resources/projectlibre -t $out/bin
|
||||||
|
popd
|
||||||
|
|
||||||
|
substituteInPlace $out/bin/projectlibre \
|
||||||
|
--replace-fail "/usr/share/projectlibre" "$out/share/projectlibre"
|
||||||
|
|
||||||
substitute $resourcesPath/projectlibre $out/bin/projectlibre \
|
|
||||||
--replace "\"/usr/share/projectlibre\"" "\"$out/share/projectlibre\""
|
|
||||||
chmod +x $out/bin/projectlibre
|
|
||||||
wrapProgram $out/bin/projectlibre \
|
wrapProgram $out/bin/projectlibre \
|
||||||
--prefix PATH : "${jre}/bin:${coreutils}/bin:${which}/bin"
|
--prefix PATH : ${lib.makeBinPath [ jre coreutils which ]}
|
||||||
|
|
||||||
cp -R openproj_build/dist/* $out/share/projectlibre
|
runHook postInstall
|
||||||
cp -R openproj_build/license $out/share/doc/projectlibre
|
|
||||||
cp $desktopItem $out/share/applications
|
|
||||||
cp $resourcesPath/projectlibre.png $out/share/pixmaps
|
|
||||||
cp -R $resourcesPath/samples/* $out/share/projectlibre/samples
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
homepage = "https://www.projectlibre.com/";
|
|
||||||
description = "Project-Management Software similar to MS-Project";
|
description = "Project-Management Software similar to MS-Project";
|
||||||
|
homepage = "https://www.projectlibre.com/";
|
||||||
|
license = lib.licenses.cpal10;
|
||||||
mainProgram = "projectlibre";
|
mainProgram = "projectlibre";
|
||||||
maintainers = [ maintainers.Mogria ];
|
maintainers = with lib.maintainers; [ Mogria tomasajt ];
|
||||||
license = licenses.cpal10;
|
platforms = jre.meta.platforms;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
{ lib, stdenv, fetchurl, cmake, stormlib }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "smpq";
|
|
||||||
version = "1.6";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://launchpad.net/smpq/trunk/${version}/+download/${pname}_${version}.orig.tar.gz";
|
|
||||||
sha256 = "1jqq5x3b17jy66x3kkf5hs5l322dx2v14djxxrqrnqp8bn5drlmm";
|
|
||||||
};
|
|
||||||
|
|
||||||
cmakeFlags = [
|
|
||||||
"-DWITH_KDE=OFF"
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
|
||||||
buildInputs = [ stormlib ];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "StormLib MPQ archiving utility";
|
|
||||||
homepage = "https://launchpad.net/smpq";
|
|
||||||
license = licenses.gpl3Only;
|
|
||||||
platforms = platforms.all;
|
|
||||||
maintainers = with maintainers; [ aanderse karolchmist ];
|
|
||||||
mainProgram = "smpq";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
buildNpmPackage rec {
|
buildNpmPackage rec {
|
||||||
pname = "terminal-stocks";
|
pname = "terminal-stocks";
|
||||||
version = "1.0.16";
|
version = "1.0.17";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "shweshi";
|
owner = "shweshi";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-tu6SKeTVEqIqDJXimoSkMK9+l0uGqWSrlIO0KHoROSQ=";
|
hash = "sha256-hCKUUISn/TIr2o3ZtG2kSTgmUCut4NVzIzfIrg84PYI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
npmDepsHash = "sha256-13RiEBLhmKW04Tesg1s7c9rCYtRGOd/prnVARb6jpGQ=";
|
npmDepsHash = "sha256-t71SfoPYVFLWcrjv2ErWazDeaVTO4W46g4lFler86Sc=";
|
||||||
dontNpmBuild = true;
|
dontNpmBuild = true;
|
||||||
|
|
||||||
passthru.updateScript = nix-update-script {};
|
passthru.updateScript = nix-update-script {};
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
, pango
|
, pango
|
||||||
, wayland
|
, wayland
|
||||||
, wayland-protocols
|
, wayland-protocols
|
||||||
|
, wayland-scanner
|
||||||
, libxkbcommon
|
, libxkbcommon
|
||||||
, scdoc
|
, scdoc
|
||||||
}:
|
}:
|
||||||
|
@ -34,7 +35,7 @@ stdenv.mkDerivation rec {
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config meson ninja ];
|
nativeBuildInputs = [ pkg-config meson ninja wayland-scanner ];
|
||||||
buildInputs = [ cairo pango wayland libxkbcommon wayland-protocols scdoc ];
|
buildInputs = [ cairo pango wayland libxkbcommon wayland-protocols scdoc ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -6,17 +6,17 @@ callPackage ./make-brave.nix (removeAttrs args [ "callPackage" ])
|
||||||
if stdenv.isAarch64 then
|
if stdenv.isAarch64 then
|
||||||
{
|
{
|
||||||
pname = "brave";
|
pname = "brave";
|
||||||
version = "1.64.122";
|
version = "1.65.114";
|
||||||
url = "https://github.com/brave/brave-browser/releases/download/v1.64.122/brave-browser_1.64.122_arm64.deb";
|
url = "https://github.com/brave/brave-browser/releases/download/v1.65.114/brave-browser_1.65.114_arm64.deb";
|
||||||
hash = "sha256-PBYiCTy/QaPfxvWAzUnXLEzBELISNSKX0kG/mYTDDEA=";
|
hash = "sha256-E5IqMmkgnwn1eyKcPQ3SZX4QpGor2W8JH+rmERuUonA=";
|
||||||
platform = "aarch64-linux";
|
platform = "aarch64-linux";
|
||||||
}
|
}
|
||||||
else if stdenv.isx86_64 then
|
else if stdenv.isx86_64 then
|
||||||
{
|
{
|
||||||
pname = "brave";
|
pname = "brave";
|
||||||
version = "1.64.122";
|
version = "1.65.114";
|
||||||
url = "https://github.com/brave/brave-browser/releases/download/v1.64.122/brave-browser_1.64.122_amd64.deb";
|
url = "https://github.com/brave/brave-browser/releases/download/v1.65.114/brave-browser_1.65.114_amd64.deb";
|
||||||
hash = "sha256-9tSoOn9XGbX/b8n9vD9Hmpi26jzmUVJomoCFdSJoaoU=";
|
hash = "sha256-Dn6havSLcf6KCxI1hd8Ad4FsLIOYBH2KO2oCJJQHJm8=";
|
||||||
platform = "x86_64-linux";
|
platform = "x86_64-linux";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -22,18 +22,18 @@
|
||||||
ungoogled-chromium = {
|
ungoogled-chromium = {
|
||||||
deps = {
|
deps = {
|
||||||
gn = {
|
gn = {
|
||||||
hash = "sha256-JvilCnnb4laqwq69fay+IdAujYC1EHD7uWpkF/C8tBw=";
|
hash = "sha256-aEL1kIhgPAFqdb174dG093HoLhCJ07O1Kpqfu7r14wQ=";
|
||||||
rev = "d4f94f9a6c25497b2ce0356bb99a8d202c8c1d32";
|
rev = "22581fb46c0c0c9530caa67149ee4dd8811063cf";
|
||||||
url = "https://gn.googlesource.com/gn";
|
url = "https://gn.googlesource.com/gn";
|
||||||
version = "2024-02-19";
|
version = "2024-03-14";
|
||||||
};
|
};
|
||||||
ungoogled-patches = {
|
ungoogled-patches = {
|
||||||
hash = "sha256-ojKIAkJB/gfg6scCxUYNAGx4lsquAaCySBDcUCFLqSU=";
|
hash = "sha256-zgkt0stU/H5Mji429tigVbjOq27Op8UppHTjG6neoeA=";
|
||||||
rev = "d5773b0fb696ef107cc6df6a94cbe732c9e905f9";
|
rev = "124.0.6367.60-1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
hash = "sha256-7H7h621AHPyhFYbaVFO892TtS+SP3Qu7cYUVk3ICL14=";
|
hash = "sha256-apEniFKhIxPo4nhp9gCU+WpiV/EB40qif4RfE7Uniog=";
|
||||||
hash_deb_amd64 = "sha256-tNkO1mPZg1xltBfoWeNhLekITtZV/WNgu//i2DJb17c=";
|
hash_deb_amd64 = "sha256-rSbigG5/xbL32d1ntOn6gnZyxSpgrg1h7lb/RD4YROI=";
|
||||||
version = "123.0.6312.122";
|
version = "124.0.6367.60";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3,10 +3,10 @@
|
||||||
{
|
{
|
||||||
firefox = buildMozillaMach rec {
|
firefox = buildMozillaMach rec {
|
||||||
pname = "firefox";
|
pname = "firefox";
|
||||||
version = "125.0.1";
|
version = "125.0.2";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||||
sha512 = "6f2f336de8b0ec9cb19ba20c909407b7b88c0319ee3b2f1f3429133516b0c45b4c7846f287985a0cdb9f34acc7d5378ed14fb48e26bef113c8ac360501a30c4d";
|
sha512 = "f6d5fff7c5c532d2e41a246d0403bdd746981cfcb7c43f9d3d8ec85a7acc3310a52043d1e18848475cef1b63c24769e81b2b06d68ae007b68016ee51436032f1";
|
||||||
};
|
};
|
||||||
|
|
||||||
extraPatches = [
|
extraPatches = [
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
beta = import ./browser.nix {
|
beta = import ./browser.nix {
|
||||||
channel = "beta";
|
channel = "beta";
|
||||||
version = "124.0.2478.39";
|
version = "124.0.2478.51";
|
||||||
revision = "1";
|
revision = "1";
|
||||||
hash = "sha256-0KQU/JS6hlv2SLMB8RKyITUiodByBUstrhcwIefn3Yw=";
|
hash = "sha256-qQTRPkQBLRZhOqBT8U0PGcmmR2zNRxJiFl3N2UPwoSo=";
|
||||||
};
|
};
|
||||||
dev = import ./browser.nix {
|
dev = import ./browser.nix {
|
||||||
channel = "dev";
|
channel = "dev";
|
||||||
|
@ -13,8 +13,8 @@
|
||||||
};
|
};
|
||||||
stable = import ./browser.nix {
|
stable = import ./browser.nix {
|
||||||
channel = "stable";
|
channel = "stable";
|
||||||
version = "123.0.2420.97";
|
version = "124.0.2478.51";
|
||||||
revision = "1";
|
revision = "1";
|
||||||
hash = "sha256-q7Pcbi0JQr/wvKIrgueD9f2Z6v1DMoD2bcRJKGqDYjs=";
|
hash = "sha256-dAiTS+KvKVwL6tNp4YsQfH4wdNIJoBJngcLBXgHArjE=";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "hubble";
|
pname = "hubble";
|
||||||
version = "0.13.2";
|
version = "0.13.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cilium";
|
owner = "cilium";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-0SCuQzRwluowF48lzyLxY+0rvTOyDbpkMI7Iwb6GHJo=";
|
sha256 = "sha256-tHkLUoccOUcUjODecy1QyeuDb/aXv67sK8JHJ1IspC8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = null;
|
vendorHash = null;
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "istioctl";
|
pname = "istioctl";
|
||||||
version = "1.21.1";
|
version = "1.21.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "istio";
|
owner = "istio";
|
||||||
repo = "istio";
|
repo = "istio";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-zWg0UK9RHq/25GWpsvb/U5YJPkgd7aUC/Dva8jGFwfo=";
|
hash = "sha256-U0SCjozy968pcXMGyUgM47VGYYNwPq8wOzTnKp49ZY4=";
|
||||||
};
|
};
|
||||||
vendorHash = "sha256-23t1xJPRip0ojXmUl1qlk6QJsYHT+9EAS080m6c0d6U=";
|
vendorHash = "sha256-23t1xJPRip0ojXmUl1qlk6QJsYHT+9EAS080m6c0d6U=";
|
||||||
|
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "kubecolor";
|
pname = "kubecolor";
|
||||||
version = "0.2.2";
|
version = "0.3.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = pname;
|
owner = pname;
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-zXglsfPsJi9DVxlRPniSBsdF1xEMYqqGr46ThpQj3gQ=";
|
sha256 = "sha256-1gEEmF9RRMwFAvmhLwidkVh+lnibs6x5ZHy/nJRum9E=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-uf7nBnS1wmbz4xcVA5qF82QMPsLdSucje1NNaPyheCw=";
|
vendorHash = "sha256-Gzz+mCEMQCcLwTiGMB8/nXk7HDAEGkEapC/VOyXrn/Q=";
|
||||||
|
|
||||||
ldflags = [ "-s" "-w" "-X main.Version=${version}" ];
|
ldflags = [ "-s" "-w" "-X main.Version=${version}" ];
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "kubectl-klock";
|
pname = "kubectl-klock";
|
||||||
version = "0.5.1";
|
version = "0.6.1";
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
@ -10,10 +10,10 @@ buildGoModule rec {
|
||||||
owner = "applejag";
|
owner = "applejag";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-q7Wq1mTjOB7tT66+LWIwwqltQcQSHD/VHLO7nCTZTQ0=";
|
hash = "sha256-QzleoHRQ/A5ImMl43kze5ppUdiLa4n/VT02lMnaXVkg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-3CJ/tmFFkmq6wHxbqk8u+GxxbSrUpB/JD5s/S7hegB8=";
|
vendorHash = "sha256-smE8mdyZ8xJOevgHs4+ozS6VOlko+Whhs/37B+hIbxo=";
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
makeWrapper $out/bin/kubectl-klock $out/bin/kubectl_complete-klock --add-flags __complete
|
makeWrapper $out/bin/kubectl-klock $out/bin/kubectl_complete-klock --add-flags __complete
|
||||||
|
|
|
@ -20,13 +20,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "kubernetes";
|
pname = "kubernetes";
|
||||||
version = "1.29.4";
|
version = "1.30.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kubernetes";
|
owner = "kubernetes";
|
||||||
repo = "kubernetes";
|
repo = "kubernetes";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-7Rxbcsl77iFiHkU/ovyn74aXs/i5G/m5h5Ii0y1CRho=";
|
hash = "sha256-7xRRpchjwtV3dGbZ2hN9qj6soAuiF/K7vTY0LzE6Z5w=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = null;
|
vendorHash = null;
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "pachyderm";
|
pname = "pachyderm";
|
||||||
version = "2.9.3";
|
version = "2.9.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "pachyderm";
|
owner = "pachyderm";
|
||||||
repo = "pachyderm";
|
repo = "pachyderm";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-4ER0kjp3H5B2TrR4pI3XMvmtGrUv5ZuSM8dbDeufm2s=";
|
hash = "sha256-RF8JEmZpvUf8w89wRa+d3ItMFnInEoxxQzLJvrx1mZE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-+0Df3pelty9mE1E8V+4L99/SrGK5msWn68LeB0nmAIA=";
|
vendorHash = "sha256-bAB2vMPHIcJaMobPukQyKiCq0Af0n4b5mjImTswGFTo=";
|
||||||
|
|
||||||
subPackages = [ "src/server/cmd/pachctl" ];
|
subPackages = [ "src/server/cmd/pachctl" ];
|
||||||
|
|
||||||
|
|
|
@ -2,18 +2,18 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "pv-migrate";
|
pname = "pv-migrate";
|
||||||
version = "1.7.1";
|
version = "1.8.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "utkuozdemir";
|
owner = "utkuozdemir";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-xbg32ckxAUQkkN/yumHz4v1U4FvUcmx5ftd3+4zc3/c=";
|
sha256 = "sha256-HeK8/IZTqkrJxfmNIYOm8/jY3Fbof8t7/emdHONvMZo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
subPackages = [ "cmd/pv-migrate" ];
|
subPackages = [ "cmd/pv-migrate" ];
|
||||||
|
|
||||||
vendorHash = "sha256-AqR9Gy8sAX4wrKGPnQUj33juBOfhUn0BR8OyJPiDrO0=";
|
vendorHash = "sha256-q8/Rb26ZY/Rn3FnESnAvPr+LrIvFFlSJnN6c0k8+sHg=";
|
||||||
|
|
||||||
ldflags = [
|
ldflags = [
|
||||||
"-s"
|
"-s"
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "velero";
|
pname = "velero";
|
||||||
version = "1.13.1";
|
version = "1.13.2";
|
||||||
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "vmware-tanzu";
|
owner = "vmware-tanzu";
|
||||||
repo = "velero";
|
repo = "velero";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-Fz3FqNj2NbqU9CvtdjM8cjkZh5xLCA+AAIF/QgLJ7UA=";
|
sha256 = "sha256-Dqz8UFoGb5uG5f8mrIUIRWJUYH/ZuFavhRy2wie75/Q=";
|
||||||
};
|
};
|
||||||
|
|
||||||
ldflags = [
|
ldflags = [
|
||||||
|
@ -20,7 +20,7 @@ buildGoModule rec {
|
||||||
"-X github.com/vmware-tanzu/velero/pkg/buildinfo.GitSHA=none"
|
"-X github.com/vmware-tanzu/velero/pkg/buildinfo.GitSHA=none"
|
||||||
];
|
];
|
||||||
|
|
||||||
vendorHash = "sha256-Fu4T2VEW5s/KCdgJLk3bf0wIUhKULK6QuNEmL99MUCI=";
|
vendorHash = "sha256-L1QTqw0L/aE4bFlLWg4/mmdHL7Sb5EsT3eL0jZIpBsA=";
|
||||||
|
|
||||||
excludedPackages = [ "issue-template-gen" "release-tools" "v1" "velero-restic-restore-helper" ];
|
excludedPackages = [ "issue-template-gen" "release-tools" "v1" "velero-restic-restore-helper" ];
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "chatterino2";
|
pname = "chatterino2";
|
||||||
version = "2.4.6";
|
version = "2.5.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Chatterino";
|
owner = "Chatterino";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-CQviw5Fw6v5EwjCldAQoJfAIZMWKBfBzUIQZEgW34k0=";
|
sha256 = "sha256-uR2X0NNSLyOx5n3mZcp6+wW/7L7rHHH2MlOF+c0Uzm0=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
nativeBuildInputs = [ cmake pkg-config qt6.wrapQtAppsHook ];
|
nativeBuildInputs = [ cmake pkg-config qt6.wrapQtAppsHook ];
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ lib
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, darwin
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
|
, rust
|
||||||
, rustPlatform
|
, rustPlatform
|
||||||
|
, cargo-tauri
|
||||||
, cinny
|
, cinny
|
||||||
, copyDesktopItems
|
, copyDesktopItems
|
||||||
, wrapGAppsHook
|
, wrapGAppsHook
|
||||||
|
@ -16,6 +20,7 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "cinny-desktop";
|
pname = "cinny-desktop";
|
||||||
|
# We have to be using the same version as cinny-web or this isn't going to work.
|
||||||
version = "3.1.0";
|
version = "3.1.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
|
@ -37,33 +42,48 @@ rustPlatform.buildRustPackage rec {
|
||||||
in ''
|
in ''
|
||||||
substituteInPlace tauri.conf.json \
|
substituteInPlace tauri.conf.json \
|
||||||
--replace '"distDir": "../cinny/dist",' '"distDir": "${cinny'}",'
|
--replace '"distDir": "../cinny/dist",' '"distDir": "${cinny'}",'
|
||||||
|
substituteInPlace tauri.conf.json \
|
||||||
|
--replace '"cd cinny && npm run build"' '""'
|
||||||
|
'' + lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
|
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
|
||||||
--replace "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
|
--replace "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postBuild = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||||
|
cargo tauri build --bundles app --target "${rust.envVars.rustHostPlatform}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
install -DT icons/128x128@2x.png $out/share/icons/hicolor/256x256@2/apps/cinny.png
|
install -DT icons/128x128@2x.png $out/share/icons/hicolor/256x256@2/apps/cinny.png
|
||||||
install -DT icons/128x128.png $out/share/icons/hicolor/128x128/apps/cinny.png
|
install -DT icons/128x128.png $out/share/icons/hicolor/128x128/apps/cinny.png
|
||||||
install -DT icons/32x32.png $out/share/icons/hicolor/32x32/apps/cinny.png
|
install -DT icons/32x32.png $out/share/icons/hicolor/32x32/apps/cinny.png
|
||||||
|
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||||
|
mkdir -p "$out/Applications/"
|
||||||
|
cp -r "target/${rust.envVars.rustHostPlatform}/release/bundle/macos/Cinny.app" "$out/Applications/"
|
||||||
|
ln -sf "$out/Applications/Cinny.app/Contents/MacOS/Cinny" "$out/bin/cinny"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
copyDesktopItems
|
copyDesktopItems
|
||||||
wrapGAppsHook
|
wrapGAppsHook
|
||||||
pkg-config
|
pkg-config
|
||||||
|
cargo-tauri
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
openssl
|
openssl
|
||||||
dbus
|
dbus
|
||||||
glib
|
glib
|
||||||
|
] ++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||||
glib-networking
|
glib-networking
|
||||||
libayatana-appindicator
|
libayatana-appindicator
|
||||||
webkitgtk
|
webkitgtk
|
||||||
|
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
|
darwin.DarwinTools
|
||||||
|
darwin.apple_sdk.frameworks.WebKit
|
||||||
];
|
];
|
||||||
|
|
||||||
desktopItems = [
|
desktopItems = lib.optionals stdenv.hostPlatform.isLinux [
|
||||||
(makeDesktopItem {
|
(makeDesktopItem {
|
||||||
name = "cinny";
|
name = "cinny";
|
||||||
exec = "cinny";
|
exec = "cinny";
|
||||||
|
@ -77,9 +97,9 @@ rustPlatform.buildRustPackage rec {
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Yet another matrix client for desktop";
|
description = "Yet another matrix client for desktop";
|
||||||
homepage = "https://github.com/cinnyapp/cinny-desktop";
|
homepage = "https://github.com/cinnyapp/cinny-desktop";
|
||||||
maintainers = [ ];
|
maintainers = with maintainers; [ qyriad ];
|
||||||
license = licenses.agpl3Only;
|
license = licenses.agpl3Only;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux ++ platforms.darwin;
|
||||||
mainProgram = "cinny";
|
mainProgram = "cinny";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
let
|
let
|
||||||
versions =
|
versions =
|
||||||
if stdenv.isLinux then {
|
if stdenv.isLinux then {
|
||||||
stable = "0.0.49";
|
stable = "0.0.50";
|
||||||
ptb = "0.0.78";
|
ptb = "0.0.80";
|
||||||
canary = "0.0.346";
|
canary = "0.0.357";
|
||||||
development = "0.0.17";
|
development = "0.0.17";
|
||||||
} else {
|
} else {
|
||||||
stable = "0.0.300";
|
stable = "0.0.301";
|
||||||
ptb = "0.0.107";
|
ptb = "0.0.109";
|
||||||
canary = "0.0.468";
|
canary = "0.0.477";
|
||||||
development = "0.0.39";
|
development = "0.0.39";
|
||||||
};
|
};
|
||||||
version = versions.${branch};
|
version = versions.${branch};
|
||||||
|
@ -17,15 +17,15 @@ let
|
||||||
x86_64-linux = {
|
x86_64-linux = {
|
||||||
stable = fetchurl {
|
stable = fetchurl {
|
||||||
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
||||||
hash = "sha256-rVSYAkTZTlurnbUeYJFCgsPcsCqjJ1bJneQQiyhmvwQ=";
|
hash = "sha256-6VXdVLk7Z8NGQMiSdgBRd8NIueUktkId6BXYKNABb+4=";
|
||||||
};
|
};
|
||||||
ptb = fetchurl {
|
ptb = fetchurl {
|
||||||
url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
||||||
hash = "sha256-Fp94BsR6Fzy4tV+c5ToP9GKg6GC/TryGvHWLupew4Z8=";
|
hash = "sha256-y/ntnHIYcY35Jszh0PrFy395eJ5dBWwLNpzHMoSZuNA=";
|
||||||
};
|
};
|
||||||
canary = fetchurl {
|
canary = fetchurl {
|
||||||
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
||||||
hash = "sha256-/FBVo3ptZk2YQPoq+VpyxMlSWYlVb8ChpKW5YH/BM7U=";
|
hash = "sha256-sDwC5kPzAfvQmsrq6M/GPFtUaT9pNAEB4uGI5Mn3oXs=";
|
||||||
};
|
};
|
||||||
development = fetchurl {
|
development = fetchurl {
|
||||||
url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
|
url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
|
||||||
|
@ -35,15 +35,15 @@ let
|
||||||
x86_64-darwin = {
|
x86_64-darwin = {
|
||||||
stable = fetchurl {
|
stable = fetchurl {
|
||||||
url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg";
|
url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg";
|
||||||
hash = "sha256-f9YIlzRESzzxtD9/us1DY5acu2HYo+UrwS7GWk9RwCk=";
|
hash = "sha256-h7C1wCKtUGcMFUhoKVdD7Vq9TGUaXfmjlVhwmRdhqYw=";
|
||||||
};
|
};
|
||||||
ptb = fetchurl {
|
ptb = fetchurl {
|
||||||
url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
|
url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
|
||||||
hash = "sha256-etxXrO9Ksacbdes3DT1Tm4kKD/t40jGUeSAegdexRqc=";
|
hash = "sha256-xxLnzELuI0X2r/weP1K2Bb51uRh1JjR72p7cXzy12Kc=";
|
||||||
};
|
};
|
||||||
canary = fetchurl {
|
canary = fetchurl {
|
||||||
url = "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
|
url = "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
|
||||||
hash = "sha256-UOoXDwAa5pFukqTCmUfM89QVK5jB13id8ek/gwWajMM=";
|
hash = "sha256-xEDtEtZNhOTtz+zRLLQBSeLbntlVAVQsocAGyAaVePM=";
|
||||||
};
|
};
|
||||||
development = fetchurl {
|
development = fetchurl {
|
||||||
url = "https://dl-development.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
|
url = "https://dl-development.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
|
||||||
|
|
|
@ -120,6 +120,8 @@ in stdenv.mkDerivation rec {
|
||||||
libappindicator-gtk3
|
libappindicator-gtk3
|
||||||
libnotify
|
libnotify
|
||||||
libdbusmenu
|
libdbusmenu
|
||||||
|
pipewire
|
||||||
|
stdenv.cc.cc
|
||||||
xdg-utils
|
xdg-utils
|
||||||
wayland
|
wayland
|
||||||
];
|
];
|
||||||
|
@ -158,7 +160,6 @@ in stdenv.mkDerivation rec {
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
gappsWrapperArgs+=(
|
gappsWrapperArgs+=(
|
||||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc pipewire ] }"
|
|
||||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
||||||
--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}
|
--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "storj-uplink";
|
pname = "storj-uplink";
|
||||||
version = "1.102.2";
|
version = "1.102.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "storj";
|
owner = "storj";
|
||||||
repo = "storj";
|
repo = "storj";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-GpHX34iHKeoT7AuEf76QTpTIrATLZyAoUxMoIouhvyA=";
|
hash = "sha256-ryOWnVcJOUs9kToXtwjUTk7nwuAW0NCDn5Npn27hKXU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
subPackages = [ "cmd/uplink" ];
|
subPackages = [ "cmd/uplink" ];
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{ buildPythonPackage
|
{ buildPythonPackage
|
||||||
, lib
|
, lib
|
||||||
, fetchFromGitLab
|
, fetchFromGitLab
|
||||||
|
, fetchpatch
|
||||||
, pyenchant
|
, pyenchant
|
||||||
, scikit-learn
|
, scikit-learn
|
||||||
, pypillowfight
|
, pypillowfight
|
||||||
|
@ -33,6 +34,13 @@ buildPythonPackage rec {
|
||||||
sourceRoot = "${src.name}/paperwork-backend";
|
sourceRoot = "${src.name}/paperwork-backend";
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
# fixes building with recent scipy
|
||||||
|
# remove on next release
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/commit/abcebfe9714644d4e259e53b10e0e9417b5b864f.patch";
|
||||||
|
hash = "sha256-YjVpphThW5Livs+PZJZDSgJvhLSXhZ1bnlWMwfY4HTg=";
|
||||||
|
})
|
||||||
|
|
||||||
# disables a flaky test https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/1035#note_1493700
|
# disables a flaky test https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/1035#note_1493700
|
||||||
./flaky_test.patch
|
./flaky_test.patch
|
||||||
];
|
];
|
||||||
|
|
|
@ -2,27 +2,34 @@
|
||||||
, stdenv
|
, stdenv
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, fetchpatch
|
, fetchpatch
|
||||||
, openjdk8
|
|
||||||
, ant
|
, ant
|
||||||
|
, jdk8
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, makeDesktopItem
|
, makeDesktopItem
|
||||||
, copyDesktopItems
|
, copyDesktopItems
|
||||||
|
, strip-nondeterminism
|
||||||
|
, stripJavaArchivesHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "brmodelo";
|
pname = "brmodelo";
|
||||||
version = "3.31";
|
version = "3.31";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "chcandido";
|
owner = "chcandido";
|
||||||
repo = pname;
|
repo = "brmodelo";
|
||||||
rev = version;
|
rev = finalAttrs.version;
|
||||||
sha256 = "09qrhqhv264x8phnf3pnb0cwq75l7xdsj9xkwlvhry81nxz0d5v0";
|
hash = "sha256-YJcGfrcB+Qw35bMnqVs/tBzMGVj2DmfhRZ0YsSGGGSc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ ant makeWrapper copyDesktopItems ];
|
nativeBuildInputs = [
|
||||||
|
ant
|
||||||
buildInputs = [ openjdk8 ];
|
jdk8
|
||||||
|
makeWrapper
|
||||||
|
copyDesktopItems
|
||||||
|
strip-nondeterminism
|
||||||
|
stripJavaArchivesHook
|
||||||
|
];
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
# Fixes for building with Ant.
|
# Fixes for building with Ant.
|
||||||
|
@ -30,22 +37,22 @@ stdenv.mkDerivation rec {
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
name = "fix-self-closing-element-not-allowed.patch";
|
name = "fix-self-closing-element-not-allowed.patch";
|
||||||
url = "https://github.com/yuuyins/brModelo/commit/0d712b74fd5d29d67be07480ed196da28a77893b.patch";
|
url = "https://github.com/yuuyins/brModelo/commit/0d712b74fd5d29d67be07480ed196da28a77893b.patch";
|
||||||
sha256 = "sha256-yy03arE6xetotzyvpToi9o9crg3KnMRn1J70jDUvSXE=";
|
hash = "sha256-yy03arE6xetotzyvpToi9o9crg3KnMRn1J70jDUvSXE=";
|
||||||
})
|
})
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
name = "fix-tag-closing.patch";
|
name = "fix-tag-closing.patch";
|
||||||
url = "https://github.com/yuuyins/brModelo/commit/e8530ff75f024cf6effe0408ed69985405e9709c.patch";
|
url = "https://github.com/yuuyins/brModelo/commit/e8530ff75f024cf6effe0408ed69985405e9709c.patch";
|
||||||
sha256 = "sha256-MNuh/ORbaAkB5qDSlA/nPrXN+tqzz4oOglVyEtSangI=";
|
hash = "sha256-MNuh/ORbaAkB5qDSlA/nPrXN+tqzz4oOglVyEtSangI=";
|
||||||
})
|
})
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
name = "fix-bad-use-greater-than.patch";
|
name = "fix-bad-use-greater-than.patch";
|
||||||
url = "https://github.com/yuuyins/brModelo/commit/498a6ef8129daff5a472b318f93c8f7f2897fc7f.patch";
|
url = "https://github.com/yuuyins/brModelo/commit/498a6ef8129daff5a472b318f93c8f7f2897fc7f.patch";
|
||||||
sha256 = "sha256-MmAwYUmx38DGRsiSxCWCObtpqxk0ykUQiDSC76bCpFc=";
|
hash = "sha256-MmAwYUmx38DGRsiSxCWCObtpqxk0ykUQiDSC76bCpFc=";
|
||||||
})
|
})
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
name = "fix-param-errors.patch";
|
name = "fix-param-errors.patch";
|
||||||
url = "https://github.com/yuuyins/brModelo/commit/8a508aaba0bcffe13a3f95cff495230beea36bc4.patch";
|
url = "https://github.com/yuuyins/brModelo/commit/8a508aaba0bcffe13a3f95cff495230beea36bc4.patch";
|
||||||
sha256 = "sha256-qME9gZChSMzu1vs9HaosD+snb+jlOrQLY97meNoA8oU=";
|
hash = "sha256-qME9gZChSMzu1vs9HaosD+snb+jlOrQLY97meNoA8oU=";
|
||||||
})
|
})
|
||||||
|
|
||||||
# Add SVG icons.
|
# Add SVG icons.
|
||||||
|
@ -53,12 +60,14 @@ stdenv.mkDerivation rec {
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
name = "add-brmodelo-logo-icons-svg.patch";
|
name = "add-brmodelo-logo-icons-svg.patch";
|
||||||
url = "https://github.com/yuuyins/brModelo/commit/f260b82b664fad3325bbf3ebd7a15488d496946b.patch";
|
url = "https://github.com/yuuyins/brModelo/commit/f260b82b664fad3325bbf3ebd7a15488d496946b.patch";
|
||||||
sha256 = "sha256-UhgcWxsHkNFS1GgaRnmlZohjDR8JwHof2cIb3SBetYs=";
|
hash = "sha256-UhgcWxsHkNFS1GgaRnmlZohjDR8JwHof2cIb3SBetYs=";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
runHook postBuild
|
||||||
ant
|
ant
|
||||||
|
runHook preBuild
|
||||||
'';
|
'';
|
||||||
|
|
||||||
desktopItems = [
|
desktopItems = [
|
||||||
|
@ -68,15 +77,16 @@ stdenv.mkDerivation rec {
|
||||||
genericName = "Entity-relationship diagramming tool";
|
genericName = "Entity-relationship diagramming tool";
|
||||||
exec = "brmodelo";
|
exec = "brmodelo";
|
||||||
icon = "brmodelo";
|
icon = "brmodelo";
|
||||||
comment = meta.description;
|
comment = finalAttrs.meta.description;
|
||||||
categories = [ "Development" "Education" "Database" "2DGraphics" "ComputerScience" "DataVisualization" "Engineering" "Java" ];
|
categories = [ "Development" "Education" "Database" "2DGraphics" "ComputerScience" "DataVisualization" "Engineering" "Java" ];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
install -d $out/bin $out/share/doc/${pname} $out/share/java
|
runHook preInstall
|
||||||
|
|
||||||
cp -rv ./dist/javadoc $out/share/doc/${pname}/
|
mkdir -p $out/share/doc/brmodelo
|
||||||
|
cp -rv ./dist/javadoc $out/share/doc/brmodelo/
|
||||||
|
|
||||||
install -Dm755 ./dist/brModelo.jar -t $out/share/java/
|
install -Dm755 ./dist/brModelo.jar -t $out/share/java/
|
||||||
# NOTE: The standard Java GUI toolkit has a
|
# NOTE: The standard Java GUI toolkit has a
|
||||||
|
@ -85,26 +95,28 @@ stdenv.mkDerivation rec {
|
||||||
# in WMs that are not in that list (e.g. XMonad).
|
# in WMs that are not in that list (e.g. XMonad).
|
||||||
# Solution/Workaround: set the environment variable
|
# Solution/Workaround: set the environment variable
|
||||||
# _JAVA_AWT_WM_NONREPARENTING=1.
|
# _JAVA_AWT_WM_NONREPARENTING=1.
|
||||||
makeWrapper ${openjdk8}/bin/java $out/bin/brmodelo \
|
makeWrapper ${jdk8}/bin/java $out/bin/brmodelo \
|
||||||
--prefix _JAVA_AWT_WM_NONREPARENTING : 1 \
|
--prefix _JAVA_AWT_WM_NONREPARENTING : 1 \
|
||||||
--prefix _JAVA_OPTIONS : "-Dawt.useSystemAAFontSettings=on" \
|
--prefix _JAVA_OPTIONS : "-Dawt.useSystemAAFontSettings=on" \
|
||||||
--add-flags "-jar $out/share/java/brModelo.jar"
|
--add-flags "-jar $out/share/java/brModelo.jar"
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
for size in 16 24 32 48 64 128 256; do
|
for size in 16 24 32 48 64 128 256; do
|
||||||
install -Dm644 ./src/imagens/icone_"$size"x"$size".svg \
|
install -Dm644 ./src/imagens/icone_"$size"x"$size".svg \
|
||||||
$out/share/icons/hicolor/"$size"x"$size"/apps/brmodelo.svg
|
$out/share/icons/hicolor/"$size"x"$size"/apps/brmodelo.svg
|
||||||
done
|
done
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
preFixup = ''
|
||||||
|
find $out/share/doc/brmodelo/javadoc -name "*.html" -exec strip-nondeterminism --type javadoc {} +
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Entity-relationship diagram tool for making conceptual and logical database models";
|
description = "Entity-relationship diagram tool for making conceptual and logical database models";
|
||||||
mainProgram = "brmodelo";
|
|
||||||
homepage = "https://github.com/chcandido/brModelo";
|
homepage = "https://github.com/chcandido/brModelo";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
|
mainProgram = "brmodelo";
|
||||||
maintainers = with maintainers; [ yuu ];
|
maintainers = with maintainers; [ yuu ];
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue