Compare commits
492 Commits
ab2ef75bc4
...
0b1fa3a2a1
Author | SHA1 | Date |
---|---|---|
K900 | 0b1fa3a2a1 | |
Sandro | 833eb78046 | |
Pascal Wittmann | a63151a4a9 | |
Sandro | a8dd632c26 | |
Pascal Wittmann | 5e2c0c089c | |
Marc Jakobi | 7ab5913164 | |
Emery Hemingway | 33d05c1c55 | |
Felix Buehler | 43f956227e | |
Jörg Thalheim | 656a024f91 | |
Fabian Affolter | 1f8a8a5acb | |
Gaetan Lepage | f43061fd5f | |
rewine | 4775f45619 | |
Fabian Affolter | 1095de3415 | |
rewine | 756da4a39a | |
Fabian Affolter | fc9891b6d4 | |
Fabian Affolter | d4b40706f6 | |
Fabian Affolter | 27963b73bd | |
Fabian Affolter | d69933e0e0 | |
Jon Seager | 3494439b4f | |
Fabian Affolter | 6619849f93 | |
Fabian Affolter | 85f22fecc2 | |
Fabian Affolter | 06bca34549 | |
Mario Rodas | 49e8d06da2 | |
Mario Rodas | 2499f78eea | |
Fabian Affolter | 133d57ae8e | |
Fabian Affolter | a3f4b45ece | |
Fabian Affolter | 47d6cc5e40 | |
Fabian Affolter | 5b76057bc4 | |
Mario Rodas | 3cbd0fc9d5 | |
Mario Rodas | cb1f3bcd8b | |
Mario Rodas | 4622541499 | |
Yureka | cfbde8ec8d | |
Yaya | dcd0f499c6 | |
Mario Rodas | c5550f4f34 | |
Pol Dellaiera | c392daacac | |
R. Ryantm | 43f594a64f | |
R. Ryantm | c90648d197 | |
Aidan Gauland | cdecd96afb | |
R. Ryantm | fe2d0b11f9 | |
Aleksana | 1ae6aeea7e | |
Mario Rodas | 7158289d9e | |
R. Ryantm | 5ea02227c9 | |
Weijia Wang | 11916b9c0c | |
R. Ryantm | 3d9a630ee3 | |
Alex James | 47d9ce462b | |
R. Ryantm | cf76b2d179 | |
R. Ryantm | db902cab97 | |
R. Ryantm | d8da91dc96 | |
Florentin Labelle | 080a4a27f2 | |
Nick Cao | c22277a79e | |
R. Ryantm | 00d86cf61a | |
Someone | 4c2f2f1a53 | |
R. Ryantm | e993fc0a7d | |
Philip Taron | ebde306504 | |
Hraban | abe7e2fa57 | |
thomasjm | 3101b0857d | |
Weijia Wang | 7104ed6a1d | |
Maxine Aubrey | 55a068bf31 | |
R. Ryantm | 807ecb95eb | |
Mario Rodas | 5b3704b4d3 | |
Weijia Wang | 6452682bf3 | |
Nick Cao | f9975d761c | |
Nick Cao | 39caef59fa | |
Philip Taron | 273a1531d2 | |
Emily Trau | f12b900550 | |
Weijia Wang | dca627c9d4 | |
Weijia Wang | dd3a5833b2 | |
Weijia Wang | 86aee6eafd | |
Gaetan Lepage | fb7f0dad50 | |
Gaetan Lepage | 39db04baf0 | |
Gaetan Lepage | e80aaa92db | |
Gaetan Lepage | 03cfe274f8 | |
R. Ryantm | 0389e2c757 | |
Weijia Wang | 178b87c2e6 | |
Weijia Wang | f229a40eb4 | |
Philip Taron | 91feb4b6f3 | |
Mario Rodas | bc736298ed | |
Mario Rodas | 664dae9da5 | |
Mario Rodas | a6fbe00cd0 | |
Weijia Wang | 5a44334dd5 | |
Weijia Wang | 12375393fb | |
Weijia Wang | a4fa04425e | |
Weijia Wang | 4af4bf4521 | |
Weijia Wang | 1d274ffc52 | |
Weijia Wang | 8bb85e47ed | |
Weijia Wang | 6e7dd30906 | |
R. RyanTM | ac2b58c459 | |
Weijia Wang | dc24012401 | |
nixpkgs-merge-bot[bot] | 46e005901b | |
Fabian Affolter | da1d632f99 | |
Fabian Affolter | 88e28deddb | |
Markus Kowalewski | 8b1d5260c4 | |
Fabian Affolter | 8c8a91ddd1 | |
Fabian Affolter | fd0f17ff17 | |
Fabian Affolter | 127c068036 | |
Fabian Affolter | 8b73e6e82b | |
Fabian Affolter | 1daa557629 | |
Fabian Affolter | 61778c1157 | |
Fabian Affolter | f32f8a5b96 | |
Fabian Affolter | 5b695dc30a | |
Fabian Affolter | 1374f1b1ea | |
Fabian Affolter | 0989bbe69f | |
Fabian Affolter | b495944cc6 | |
Mario Rodas | fc3f4c11b0 | |
Mario Rodas | 965b693ec9 | |
Mario Rodas | 7a56385f78 | |
Mario Rodas | 6439ef1c20 | |
Mario Rodas | 3dc5d258e4 | |
Vladimír Čunát | 5476cea489 | |
Kiskae | 03caf08d76 | |
R. Ryantm | 1847067c39 | |
Robert Scott | 0333eeba32 | |
Martin Weinelt | 2373d86b7c | |
Vladimír Čunát | 11fd36353e | |
Maxime Brunet | fcd692ed4a | |
R. Ryantm | 3ed0e09928 | |
Martin Weinelt | dc9aaedc99 | |
Martin Weinelt | 8c820d24f8 | |
Martin Weinelt | 5f3893140b | |
Fabian Affolter | d5e77a5187 | |
Fabian Affolter | 9d2281c810 | |
Fabian Affolter | 76a7969fbd | |
Fabian Affolter | e9bcd7ca78 | |
Fabian Affolter | f310b9feab | |
Fabian Affolter | 0309aeaf23 | |
Fabian Affolter | f2e2c0cdf8 | |
Fabian Affolter | d9e1aa9a7e | |
Fabian Affolter | 53b703a345 | |
superherointj | 83ea7cf15b | |
Vladimír Čunát | 4cad0502db | |
github-actions[bot] | ef44d46775 | |
Weijia Wang | 9655bfc721 | |
Gaetan Lepage | 938c3646b8 | |
Weijia Wang | 47be91f8d3 | |
Weijia Wang | 7b9dc63ae0 | |
aleksana | eb373d0539 | |
aleksana | c81631a41b | |
Jonathan Ringer | 89a0e10340 | |
Jonathan Ringer | 47bd04c9d8 | |
Jonathan Ringer | f47f68a7fb | |
Jonathan Ringer | 0df9f80d63 | |
Jonathan Ringer | b251520084 | |
Weijia Wang | e073e4923d | |
Weijia Wang | d1b80fcfdf | |
Weijia Wang | 361b4e2364 | |
R. Ryantm | 2d7c7457fa | |
linsui | d25514add1 | |
R. Ryantm | a9ec17a259 | |
R. Ryantm | 3af1ddeef8 | |
R. Ryantm | 699b06c3da | |
R. Ryantm | 6a3b34f81c | |
R. Ryantm | ca3558c2db | |
R. Ryantm | 86e364dfc0 | |
R. Ryantm | 607ab8d9f1 | |
github-actions[bot] | 2f73b699a3 | |
Martin Weinelt | f8b4e287b9 | |
Vladimír Čunát | 4caf1e3b18 | |
Vladimír Čunát | e7df8051fb | |
Vladimír Čunát | 64cdda4b5f | |
github-actions[bot] | 409234ba0c | |
Muhammad Falak R Wani | 03085b8b96 | |
Mario Rodas | d38f000ba1 | |
aleksana | 6bad74edaf | |
R. Ryantm | a7a4d75e6b | |
github-actions[bot] | e4dc8790bf | |
R. Ryantm | 843f1557b3 | |
Weijia Wang | 4cdc85f7bc | |
Fabian Affolter | 46844b146a | |
Fabian Affolter | 5135d6aba3 | |
R. Ryantm | d29b0ef97d | |
github-actions[bot] | 07f01fb40f | |
github-actions[bot] | b4bf622e46 | |
Fabian Affolter | 331e45496e | |
github-actions[bot] | 6b7b5776be | |
R. Ryantm | 4f28f331a3 | |
github-actions[bot] | ba060bffac | |
Weijia Wang | fe34b95595 | |
Weijia Wang | 07950a598e | |
github-actions[bot] | 50812f5204 | |
Fabian Affolter | 72ea5561d6 | |
Fabian Affolter | 73cb5278cb | |
Fabian Affolter | c75e9c601d | |
Fabian Affolter | 1ee02d4fc5 | |
Maximilian Bosch | 5142b7afa8 | |
Fabian Affolter | d8b3f3fb46 | |
Fabian Affolter | 8cf2cf33ec | |
github-actions[bot] | 48d06167c6 | |
github-actions[bot] | 459f861224 | |
Vladimír Čunát | 6aa50d0808 | |
R. Ryantm | 302eec2650 | |
github-actions[bot] | 04a895835e | |
R. Ryantm | 3030b58d8a | |
github-actions[bot] | 1149e1edb7 | |
Pierre Bourdon | d6dc19adbd | |
Martin Weinelt | f721231589 | |
Martin Weinelt | 699ac3316c | |
github-actions[bot] | 29d12c9448 | |
Vladimír Čunát | c2b0bf3dd5 | |
github-actions[bot] | c9c063bd3c | |
github-actions[bot] | 20c720272e | |
github-actions[bot] | edf05b9f79 | |
Martin Weinelt | 5d44454602 | |
Martin Weinelt | d55fb2ae4d | |
Martin Weinelt | 1a8fea04dc | |
Martin Weinelt | b17785e4bb | |
Martin Weinelt | bac08d89a6 | |
Martin Weinelt | 9a1204cdf5 | |
Martin Weinelt | 26bd025b2e | |
Martin Weinelt | d4e7139346 | |
Martin Weinelt | b49e22fdc8 | |
Martin Weinelt | 91aab1d015 | |
Martin Weinelt | 4067f4cb18 | |
Martin Weinelt | 41c5e6c575 | |
Martin Weinelt | d80c3e8652 | |
Martin Weinelt | faf432ed57 | |
Martin Weinelt | c50477a625 | |
Weijia Wang | be1bcdc890 | |
github-actions[bot] | 69de1e1beb | |
Vladimír Čunát | 6ee3a444b9 | |
Vladimír Čunát | d7d6471a69 | |
Vladimír Čunát | 3a374151fe | |
Alyssa Ross | 525f8d9433 | |
github-actions[bot] | 8c43dad0e9 | |
Martin Weinelt | da37a0f357 | |
github-actions[bot] | 944103e875 | |
Mauricio Collares | a834e06680 | |
github-actions[bot] | 410019beb5 | |
Anderson Torres | 7f7f6aa8f1 | |
Anderson Torres | 1f5deed770 | |
Anderson Torres | fa77468444 | |
Anderson Torres | 647c2aa286 | |
Vladimír Čunát | 503801f540 | |
Lin Jian | 3cb77cecea | |
github-actions[bot] | 14abde4e89 | |
github-actions[bot] | 26128332c3 | |
Alex Martens | 1dacec9bb9 | |
R. Ryantm | aee2b5bda6 | |
Daniel Silva | f7fdda79d3 | |
github-actions[bot] | b289464fb6 | |
Robert Scott | 404317c270 | |
Robert Scott | d3112aaaa0 | |
github-actions[bot] | 607cdcc471 | |
R. Ryantm | 0a8bbd48dc | |
github-actions[bot] | e6f06c8dc6 | |
github-actions[bot] | 40938cc5ef | |
github-actions[bot] | c904e6bf24 | |
annalee | 7541ec60b6 | |
github-actions[bot] | 90e2c2cda5 | |
R. Ryantm | 72f2352214 | |
K900 | d41ca9785a | |
K900 | 229b4d208a | |
K900 | 304768b6ea | |
github-actions[bot] | df8426f141 | |
github-actions[bot] | 8794d573a4 | |
github-actions[bot] | e3eacb46bc | |
Fabian Affolter | e6a5b5f924 | |
github-actions[bot] | 363196bdee | |
Vladimír Čunát | 1604f45773 | |
Vladimír Čunát | b232662c9a | |
Vladimír Čunát | 448e50e8eb | |
github-actions[bot] | 3aff9fcdda | |
github-actions[bot] | a935d7605a | |
Vladimír Čunát | ddc361cfca | |
Martin Weinelt | 42024d5692 | |
Mario Rodas | 67d25591a0 | |
github-actions[bot] | f0ed26755a | |
github-actions[bot] | 3f0438cea5 | |
Maciej Krüger | 628282de10 | |
Martin Weinelt | 8093909854 | |
github-actions[bot] | 144656e6ee | |
github-actions[bot] | f4a0cee923 | |
Weijia Wang | e2fe50e495 | |
github-actions[bot] | 97f05fe383 | |
github-actions[bot] | bdc39d2059 | |
github-actions[bot] | 4dcc3c7ed5 | |
github-actions[bot] | 865f19d6f6 | |
github-actions[bot] | 5e808ed203 | |
github-actions[bot] | 12b3e738ec | |
Alyssa Ross | 180b5c1c8c | |
Maximilian Bosch | 91d85fb0e6 | |
Maximilian Bosch | 02e833b2dc | |
github-actions[bot] | 64852c04d3 | |
github-actions[bot] | 5132e88bc7 | |
Martin Weinelt | 7c63b00262 | |
K900 | fc5619bb25 | |
Ivan Mincik | 23c5b0de72 | |
Martin Weinelt | 2c68d6b029 | |
Martin Weinelt | bcd6e799e0 | |
Domen Kožar | fb884172ab | |
github-actions[bot] | 350f0a9a66 | |
github-actions[bot] | 4c0506290c | |
rewine | 79129b7cd2 | |
Sandro | 1b7cac3525 | |
Victor Engmark | ad60aa50e2 | |
github-actions[bot] | 8c5e10ca32 | |
github-actions[bot] | fd272c4af4 | |
K900 | 3fbc0885d4 | |
K900 | c0e45491bf | |
K900 | 84d16ce84b | |
K900 | 9939e9dd82 | |
K900 | 8b60fc9737 | |
K900 | 5897219a92 | |
K900 | ad61d5c9d7 | |
K900 | ba7516ae83 | |
K900 | 3787eff1ec | |
K900 | 28975c7385 | |
K900 | 545de24791 | |
Randy Eckenrode | b7d77e743c | |
Colin Putney | 96118850f3 | |
Colin Putney | 234bb31f61 | |
github-actions[bot] | dce2b692f1 | |
github-actions[bot] | 86b5ff8306 | |
Sandro | 3c4676684d | |
github-actions[bot] | d28bcc2044 | |
github-actions[bot] | 4d744db118 | |
Mario Rodas | 085645f003 | |
github-actions[bot] | 4fd286e707 | |
github-actions[bot] | 33cddc79aa | |
Florian Klink | e9de367378 | |
R. Ryantm | 98685bbb5c | |
Vladimír Čunát | f5487165d6 | |
Vladimír Čunát | b6d2a4294e | |
Pratham Patel | 911c1a8eca | |
Pratham Patel | 8da44aaa89 | |
github-actions[bot] | 5a2110cb61 | |
Sergei Trofimovich | 72cfa3ac54 | |
Weijia Wang | 2ef849500f | |
Sean Link | 32dd56f420 | |
github-actions[bot] | 7f8db6f00d | |
github-actions[bot] | fbb579e773 | |
Florian Klink | 24ff2807a6 | |
Doron Behar | b5f2de75ae | |
github-actions[bot] | 4cc513ce77 | |
Pratham Patel | d245844528 | |
Pratham Patel | 95d1f9499a | |
Pratham Patel | 070737c9b7 | |
Pratham Patel | cf38d08863 | |
github-actions[bot] | ffc1886a16 | |
Philip Taron | efb603b277 | |
Philip Taron | c4d420345d | |
Philip Taron | 102a33d30e | |
Philip Taron | f36441dbd8 | |
Philip Taron | 7c4a71081c | |
Philip Taron | b7bcfbaeeb | |
Philip Taron | 997e54a4fb | |
Philip Taron | 869e556606 | |
Philip Taron | aa32ce526a | |
Philip Taron | 4fc5d50549 | |
Philip Taron | 03962f077c | |
Philip Taron | a14127aa64 | |
Philip Taron | e0611b7ba7 | |
Philip Taron | 8c4a1e8d66 | |
Florian Klink | f41fbee73a | |
Matthieu Coudron | 2bf7196dd4 | |
Matthieu Coudron | cf53c81a2d | |
github-actions[bot] | cc3ebacb50 | |
Will Fancher | 5e938f3f92 | |
github-actions[bot] | c293380058 | |
github-actions[bot] | 66eeab8faf | |
Ben Darwin | 0f8f7d097a | |
Siddhartha | efab38f765 | |
github-actions[bot] | b727e4cb21 | |
Felix Buehler | feb4af11ee | |
Felix Buehler | 5007c8b574 | |
Sergei Trofimovich | 9106d1ee46 | |
github-actions[bot] | 871a7b4f28 | |
Artturi | 23edd8a5fd | |
Artturin | d084853edd | |
Artturi | 3e00d41b22 | |
github-actions[bot] | 7ca9ebd637 | |
Guillaume Maudoux | fb1539a8c8 | |
github-actions[bot] | b92edd0054 | |
Weijia Wang | 551ec2e099 | |
github-actions[bot] | f24ba8a7ce | |
Weijia Wang | 23b2d5400f | |
Weijia Wang | 084b781e76 | |
Weijia Wang | 4dd915c15e | |
Weijia Wang | 3b68d95fc7 | |
Randy Eckenrode | 07451425e7 | |
Weijia Wang | 42b1ed91ca | |
Weijia Wang | 7e5e6e2098 | |
Weijia Wang | 476a65d594 | |
annalee | f1166afe59 | |
Jan Tojnar | 89a6254acc | |
Qyriad | 2ad2295bb3 | |
Weijia Wang | 38953e60a9 | |
github-actions[bot] | 83409a8a66 | |
Randy Eckenrode | d8c7cd0119 | |
Sandro | 24fd994fc4 | |
Sergei Trofimovich | 01c7143580 | |
maxine | b222061964 | |
Randy Eckenrode | 25af398f88 | |
Randy Eckenrode | 55505c558f | |
Randy Eckenrode | b552612217 | |
Martin Weinelt | b54e2bc7fd | |
Robert Scott | 080c3f233f | |
github-actions[bot] | b74fe245b8 | |
Randy Eckenrode | 0fb285678d | |
Maxine Aubrey | 1e6a3c8115 | |
Matthieu Coudron | 0c20124901 | |
github-actions[bot] | 8800b39c2b | |
Robert Scott | 557e24c4d3 | |
Weijia Wang | f732067b8a | |
Atemu | 4ff161d64a | |
Connor Baker | c7293f7e6e | |
Jan Tojnar | 3886fc9297 | |
Matthieu Coudron | 99bb198cdd | |
Matthieu Coudron | 545c14d5e4 | |
Matthieu Coudron | 0c9417100f | |
Matthieu Coudron | 815d3683f7 | |
Matthieu Coudron | 640cdcb814 | |
Luflosi | 28248506ae | |
github-actions[bot] | b00700a4e4 | |
github-actions[bot] | 8e730f6e02 | |
Randy Eckenrode | 912752b5b9 | |
annalee | 7963fc94f0 | |
annalee | 636ed70ab3 | |
Jan Tojnar | defa6665ee | |
Sergei Trofimovich | d2b365806e | |
Adam Joseph | b81284ec71 | |
R. Ryantm | ecdf55e091 | |
Sandro Jäckel | 61baca011c | |
Sandro | 4dd9a3526c | |
github-actions[bot] | 655a011eb5 | |
Sandro Jäckel | be51056b85 | |
github-actions[bot] | f842b83fe8 | |
Robert Scott | 81b559946f | |
Mario Rodas | a35733eb93 | |
github-actions[bot] | 241984a941 | |
Sergey Vinokurov | 8b2816a1b0 | |
Sergey Vinokurov | cff0adfc1b | |
Siddhartha | 45c549b98c | |
Siddhartha | 7c0f63e276 | |
Siddhartha | ba2a898fe3 | |
Siddhartha | 722f0b0554 | |
Siddhartha | 6c1a293376 | |
Siddhartha | 5ba9ce0e36 | |
maxine | acefd0f368 | |
Jeremy Baxter | f075bf7e05 | |
Jeremy Baxter | af3101e90a | |
Sergei Trofimovich | ae14246d19 | |
Maxine Aubrey | 0c9c3b70b2 | |
github-actions[bot] | 9f5148f1e0 | |
Martin Weinelt | 9ef1ef5e19 | |
github-actions[bot] | 8ac30f8fc0 | |
github-actions[bot] | 7f4495da2a | |
R. Ryantm | 3bea2b1f5e | |
Atemu | cd48c48a87 | |
github-actions[bot] | 8f1e313142 | |
Fabián Heredia Montiel | b190eb9f14 | |
Martin Weinelt | 6d041a94b0 | |
Felix Buehler | 19fee24f51 | |
Artem Leshchev | 235f36ee5a | |
lassulus | 7154ccbbd5 | |
github-actions[bot] | 59dd321acd | |
Siddhartha | bfc2be2896 | |
Siddhartha | f3401920dd | |
Sandro | 86a9125076 | |
Sandro | 42fdd0867f | |
Sandro | 46e8d68318 | |
Sandro | fc603bd7bf | |
github-actions[bot] | 27cba83225 | |
Sandro | 4c1d25abbe | |
Sergei Trofimovich | c627cf3a86 | |
github-actions[bot] | 779982da7a | |
R. Ryantm | 54e99a96fd | |
github-actions[bot] | fc976c1186 | |
Maxine Aubrey | 8fecf8f411 | |
Maxine Aubrey | 0e6fcbc70d | |
Maxine Aubrey | ebadd512ec | |
R. Ryantm | bcb2393ebd | |
R. Ryantm | 0f884c719b | |
Felix Buehler | 06263797cb | |
Felix Buehler | d061d19858 | |
Felix Buehler | 70a1313337 | |
Felix Buehler | f8106f1cf4 | |
Felix Buehler | 25a9bf0fe6 | |
R. Ryantm | 994232c034 | |
R. Ryantm | bcb2eaea45 | |
Philipp Jungkamp | 88add7e28e | |
Evan Richter | 3c91e92068 | |
R. Ryantm | 07bc5cd3fe | |
R. Ryantm | 40c9679c8b | |
DavHau | 9a5b86c189 | |
R. Ryantm | 899a9d82ca | |
Maximilian Bosch | 2dcdf60272 | |
Maximilian Bosch | 1c003da73c | |
Maximilian Bosch | 8b24908a76 | |
R. Ryantm | 3056904cb3 | |
John Garcia | b26b1ed739 | |
Cale Black | ad61414046 | |
Cale Black | 70093e0f2c |
|
@ -95,6 +95,14 @@
|
|||
- pkgs/top-level/haskell-packages.nix
|
||||
- pkgs/top-level/release-haskell.nix
|
||||
|
||||
"6.topic: julia":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/julia.section.md
|
||||
- pkgs/development/compilers/julia/**/*
|
||||
- pkgs/development/julia-modules/**/*
|
||||
|
||||
"6.topic: jupyter":
|
||||
- any:
|
||||
- changed-files:
|
||||
|
@ -122,6 +130,7 @@
|
|||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/tools/misc/luarocks/*
|
||||
- pkgs/development/interpreters/lua-5/**/*
|
||||
- pkgs/development/interpreters/luajit/**/*
|
||||
- pkgs/development/lua-modules/**/*
|
||||
|
|
|
@ -17,6 +17,9 @@ The main package set contains aliases to these package sets, e.g.
|
|||
`luaPackages` refers to `lua5_1.pkgs` and `lua52Packages` to
|
||||
`lua5_2.pkgs`.
|
||||
|
||||
Note that nixpkgs patches the non-luajit interpreters to avoid referring to
|
||||
`/usr` and have `;;` (a [placeholder](https://www.lua.org/manual/5.1/manual.html#pdf-package.path) replaced with the default LUA_PATH) work correctly.
|
||||
|
||||
### Installing Lua and packages {#installing-lua-and-packages}
|
||||
|
||||
#### Lua environment defined in separate `.nix` file {#lua-environment-defined-in-separate-.nix-file}
|
||||
|
|
|
@ -15774,6 +15774,12 @@
|
|||
githubId = 4201956;
|
||||
name = "pongo1231";
|
||||
};
|
||||
poptart = {
|
||||
email = "poptart@hosakacorp.net";
|
||||
github = "terrorbyte";
|
||||
githubId = 1601039;
|
||||
name = "Cale Black";
|
||||
};
|
||||
portothree = {
|
||||
name = "Gustavo Porto";
|
||||
email = "gus@p8s.co";
|
||||
|
|
|
@ -8,6 +8,7 @@ busted,,,,,,
|
|||
cassowary,,,,,,marsam alerque
|
||||
cldr,,,,,,alerque
|
||||
compat53,,,,,,vcunat
|
||||
commons.nvim,,,,,,mrcjkb
|
||||
cosmo,,,,,,marsam
|
||||
coxpcall,,,,1.17.0-1,,
|
||||
cqueues,,,,,,vcunat
|
||||
|
@ -18,6 +19,8 @@ fennel,,,,,,misterio77
|
|||
fidget.nvim,,,,,,mrcjkb
|
||||
fifo,,,,,,
|
||||
fluent,,,,,,alerque
|
||||
funnyfiles.nvim,,,,,,mrcjkb
|
||||
fzf-lua,,,,,,mrcjkb
|
||||
fzy,,,,,,mrcjkb
|
||||
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,5.1,
|
||||
haskell-tools.nvim,,,,,,
|
||||
|
@ -85,6 +88,7 @@ luaunbound,,,,,,
|
|||
luaunit,,,,,,lockejan
|
||||
luautf8,,,,,,pstn
|
||||
luazip,,,,,,
|
||||
lua-utils.nvim,,,,,,mrcjkb
|
||||
lua-yajl,,,,,,pstn
|
||||
lua-iconv,,,,7.0.0,,
|
||||
luuid,,,,20120509-2,,
|
||||
|
@ -98,6 +102,7 @@ middleclass,,,,,,
|
|||
mimetypes,,,,,,
|
||||
mpack,,,,,,
|
||||
moonscript,https://github.com/leafo/moonscript.git,dev-1,,,,arobyn
|
||||
neotest,,,,,,mrcjkb
|
||||
nlua,,,,,,teto
|
||||
nui.nvim,,,,,,mrcjkb
|
||||
nvim-cmp,https://github.com/hrsh7th/nvim-cmp,,,,,
|
||||
|
@ -107,6 +112,10 @@ plenary.nvim,https://github.com/nvim-lua/plenary.nvim.git,,,,5.1,
|
|||
rapidjson,https://github.com/xpol/lua-rapidjson.git,,,,,
|
||||
rocks.nvim,,,,,5.1,teto mrcjkb
|
||||
rest.nvim,,,,,5.1,teto
|
||||
rocks.nvim,,,,,,mrcjkb
|
||||
rocks-git.nvim,,,,,,mrcjkb
|
||||
rocks-config.nvim,,,,,,mrcjkb
|
||||
rocks-dev.nvim,,,,,,mrcjkb
|
||||
rustaceanvim,,,,,,mrcjkb
|
||||
say,https://github.com/Olivine-Labs/say.git,,,,,
|
||||
serpent,,,,,,lockejan
|
||||
|
|
|
|
@ -12,7 +12,7 @@ looks like this:
|
|||
type = type specification;
|
||||
default = default value;
|
||||
example = example value;
|
||||
description = lib.mdDoc "Description for use in the NixOS manual.";
|
||||
description = "Description for use in the NixOS manual.";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -58,12 +58,9 @@ The function `mkOption` accepts the following arguments.
|
|||
|
||||
`description`
|
||||
|
||||
: A textual description of the option, in [Nixpkgs-flavored Markdown](
|
||||
https://nixos.org/nixpkgs/manual/#sec-contributing-markup) format, that will be
|
||||
included in the NixOS manual. During the migration process from DocBook
|
||||
it is necessary to mark descriptions written in CommonMark with `lib.mdDoc`.
|
||||
The description may still be written in DocBook (without any marker), but this
|
||||
is discouraged and will be deprecated in the future.
|
||||
: A textual description of the option in [Nixpkgs-flavored Markdown](
|
||||
https://nixos.org/nixpkgs/manual/#sec-contributing-markup) format that will be
|
||||
included in the NixOS manual.
|
||||
|
||||
## Utility functions for common option patterns {#sec-option-declarations-util}
|
||||
|
||||
|
@ -81,13 +78,13 @@ For example:
|
|||
::: {#ex-options-declarations-util-mkEnableOption-magic .example}
|
||||
### `mkEnableOption` usage
|
||||
```nix
|
||||
lib.mkEnableOption (lib.mdDoc "magic")
|
||||
lib.mkEnableOption "magic"
|
||||
# is like
|
||||
lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = lib.mdDoc "Whether to enable magic.";
|
||||
description = "Whether to enable magic.";
|
||||
}
|
||||
```
|
||||
:::
|
||||
|
@ -135,7 +132,7 @@ lib.mkOption {
|
|||
type = lib.types.package;
|
||||
default = pkgs.hello;
|
||||
defaultText = lib.literalExpression "pkgs.hello";
|
||||
description = lib.mdDoc "The hello package to use.";
|
||||
description = "The hello package to use.";
|
||||
}
|
||||
```
|
||||
:::
|
||||
|
@ -153,7 +150,7 @@ lib.mkOption {
|
|||
default = pkgs.ghc;
|
||||
defaultText = lib.literalExpression "pkgs.ghc";
|
||||
example = lib.literalExpression "pkgs.haskell.packages.ghc92.ghc.withPackages (hkgs: [ hkgs.primes ])";
|
||||
description = lib.mdDoc "The GHC package to use.";
|
||||
description = "The GHC package to use.";
|
||||
}
|
||||
```
|
||||
:::
|
||||
|
|
|
@ -63,6 +63,9 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
|
|||
}
|
||||
```
|
||||
|
||||
- lua interpreters default LUA_PATH and LUA_CPATH are not overriden by nixpkgs
|
||||
anymore, we patch LUA_ROOT instead which is more respectful to upstream.
|
||||
|
||||
- Plasma 6 is now available and can be installed with `services.xserver.desktopManager.plasma6.enable = true;`. Plasma 5 will likely be deprecated in the next release (24.11). Note that Plasma 6 runs as Wayland by default, and the X11 session needs to be explicitly selected if necessary.
|
||||
|
||||
## New Services {#sec-release-24.05-new-services}
|
||||
|
|
|
@ -117,9 +117,7 @@
|
|||
# deprecated since 23.11.
|
||||
# TODO remove in a while.
|
||||
, allowDocBook ? false
|
||||
# whether lib.mdDoc is required for descriptions to be read as markdown.
|
||||
# deprecated since 23.11.
|
||||
# TODO remove in a while.
|
||||
# TODO remove in a while (see https://github.com/NixOS/nixpkgs/issues/300735)
|
||||
, markdownByDefault ? true
|
||||
}:
|
||||
|
||||
|
|
|
@ -31,7 +31,6 @@ let
|
|||
;
|
||||
|
||||
inherit (lib)
|
||||
mdDoc
|
||||
mkDefault
|
||||
mkDerivedConfig
|
||||
mkEnableOption
|
||||
|
@ -81,11 +80,11 @@ rec {
|
|||
|
||||
initrdContents = attrsOf (submodule ({ config, options, name, ... }: {
|
||||
options = {
|
||||
enable = mkEnableOption (mdDoc "copying of this file and symlinking it") // { default = true; };
|
||||
enable = (mkEnableOption "copying of this file and symlinking it") // { default = true; };
|
||||
|
||||
target = mkOption {
|
||||
type = path;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Path of the symlink.
|
||||
'';
|
||||
default = name;
|
||||
|
@ -94,12 +93,12 @@ rec {
|
|||
text = mkOption {
|
||||
default = null;
|
||||
type = nullOr lines;
|
||||
description = mdDoc "Text of the file.";
|
||||
description = "Text of the file.";
|
||||
};
|
||||
|
||||
source = mkOption {
|
||||
type = path;
|
||||
description = mdDoc "Path of the source file.";
|
||||
description = "Path of the source file.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@ let
|
|||
concatMap
|
||||
filterOverrides
|
||||
isList
|
||||
mdDoc
|
||||
mergeEqualOption
|
||||
mkIf
|
||||
mkMerge
|
||||
|
@ -55,7 +54,7 @@ in rec {
|
|||
enable = mkOption {
|
||||
default = true;
|
||||
type = types.bool;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If set to false, this unit will be a symlink to
|
||||
/dev/null. This is primarily useful to prevent specific
|
||||
template instances
|
||||
|
@ -69,7 +68,7 @@ in rec {
|
|||
overrideStrategy = mkOption {
|
||||
default = "asDropinIfExists";
|
||||
type = types.enum [ "asDropinIfExists" "asDropin" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Defines how unit configuration is provided for systemd:
|
||||
|
||||
`asDropinIfExists` creates a unit file when no unit file is provided by the package
|
||||
|
@ -85,7 +84,7 @@ in rec {
|
|||
requiredBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Units that require (i.e. depend on and need to go down with) this unit.
|
||||
As discussed in the `wantedBy` option description this also creates
|
||||
`.requires` symlinks automatically.
|
||||
|
@ -95,7 +94,7 @@ in rec {
|
|||
upheldBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Keep this unit running as long as the listed units are running. This is a continuously
|
||||
enforced version of wantedBy.
|
||||
'';
|
||||
|
@ -104,7 +103,7 @@ in rec {
|
|||
wantedBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Units that want (i.e. depend on) this unit. The default method for
|
||||
starting a unit by default at boot time is to set this option to
|
||||
`["multi-user.target"]` for system services. Likewise for user units
|
||||
|
@ -122,7 +121,7 @@ in rec {
|
|||
aliases = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc "Aliases of that unit.";
|
||||
description = "Aliases of that unit.";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -132,12 +131,12 @@ in rec {
|
|||
text = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = mdDoc "Text of this systemd unit.";
|
||||
description = "Text of this systemd unit.";
|
||||
};
|
||||
|
||||
unit = mkOption {
|
||||
internal = true;
|
||||
description = mdDoc "The generated unit.";
|
||||
description = "The generated unit.";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -148,19 +147,19 @@ in rec {
|
|||
description = mkOption {
|
||||
default = "";
|
||||
type = types.singleLineStr;
|
||||
description = mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||
description = "Description of this unit used in systemd messages and progress indicators.";
|
||||
};
|
||||
|
||||
documentation = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
description = mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
description = "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
};
|
||||
|
||||
requires = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Start the specified units when this unit is started, and stop
|
||||
this unit when the specified units are stopped or fail.
|
||||
'';
|
||||
|
@ -169,7 +168,7 @@ in rec {
|
|||
wants = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Start the specified units when this unit is started.
|
||||
'';
|
||||
};
|
||||
|
@ -177,7 +176,7 @@ in rec {
|
|||
upholds = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Keeps the specified running while this unit is running. A continuous version of `wants`.
|
||||
'';
|
||||
};
|
||||
|
@ -185,7 +184,7 @@ in rec {
|
|||
after = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay this unit until they have started.
|
||||
'';
|
||||
|
@ -194,7 +193,7 @@ in rec {
|
|||
before = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay them until this unit has started.
|
||||
'';
|
||||
|
@ -203,7 +202,7 @@ in rec {
|
|||
bindsTo = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Like ‘requires’, but in addition, if the specified units
|
||||
unexpectedly disappear, this unit will be stopped as well.
|
||||
'';
|
||||
|
@ -212,7 +211,7 @@ in rec {
|
|||
partOf = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If the specified units are stopped or restarted, then this
|
||||
unit is stopped or restarted as well.
|
||||
'';
|
||||
|
@ -221,7 +220,7 @@ in rec {
|
|||
conflicts = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If the specified units are started, then this unit is stopped
|
||||
and vice versa.
|
||||
'';
|
||||
|
@ -230,7 +229,7 @@ in rec {
|
|||
requisite = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Similar to requires. However if the units listed are not started,
|
||||
they will not be started and the transaction will fail.
|
||||
'';
|
||||
|
@ -240,7 +239,7 @@ in rec {
|
|||
default = {};
|
||||
example = { RequiresMountsFor = "/data"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Unit]` section of the unit. See
|
||||
{manpage}`systemd.unit(5)` for details.
|
||||
|
@ -250,7 +249,7 @@ in rec {
|
|||
onFailure = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "failed" state.
|
||||
'';
|
||||
|
@ -259,7 +258,7 @@ in rec {
|
|||
onSuccess = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "inactive" state.
|
||||
'';
|
||||
|
@ -267,7 +266,7 @@ in rec {
|
|||
|
||||
startLimitBurst = mkOption {
|
||||
type = types.int;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Configure unit start rate limiting. Units which are started
|
||||
more than startLimitBurst times within an interval time
|
||||
interval are not permitted to start any more.
|
||||
|
@ -276,7 +275,7 @@ in rec {
|
|||
|
||||
startLimitIntervalSec = mkOption {
|
||||
type = types.int;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Configure unit start rate limiting. Units which are started
|
||||
more than startLimitBurst times within an interval time
|
||||
interval are not permitted to start any more.
|
||||
|
@ -295,7 +294,7 @@ in rec {
|
|||
restartTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.unspecified;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
An arbitrary list of items such as derivations. If any item
|
||||
in the list changes between reconfigurations, the service will
|
||||
be restarted.
|
||||
|
@ -305,7 +304,7 @@ in rec {
|
|||
reloadTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
An arbitrary list of items such as derivations. If any item
|
||||
in the list changes between reconfigurations, the service will
|
||||
be reloaded. If anything but a reload trigger changes in the
|
||||
|
@ -323,13 +322,13 @@ in rec {
|
|||
default = {};
|
||||
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
|
||||
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
|
||||
description = mdDoc "Environment variables passed to the service's processes.";
|
||||
description = "Environment variables passed to the service's processes.";
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
default = [];
|
||||
type = with types; listOf (oneOf [ package str ]);
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Packages added to the service's {env}`PATH`
|
||||
environment variable. Both the {file}`bin`
|
||||
and {file}`sbin` subdirectories of each
|
||||
|
@ -343,7 +342,7 @@ in rec {
|
|||
{ RestartSec = 5;
|
||||
};
|
||||
type = types.addCheck (types.attrsOf unitOption) checkService;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Service]` section of the unit. See
|
||||
{manpage}`systemd.service(5)` for details.
|
||||
|
@ -353,14 +352,14 @@ in rec {
|
|||
script = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = mdDoc "Shell commands executed as the service's main process.";
|
||||
description = "Shell commands executed as the service's main process.";
|
||||
};
|
||||
|
||||
scriptArgs = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "%i";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Arguments passed to the main process script.
|
||||
Can contain specifiers (`%` placeholders expanded by systemd, see {manpage}`systemd.unit(5)`).
|
||||
'';
|
||||
|
@ -369,7 +368,7 @@ in rec {
|
|||
preStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Shell commands executed before the service's main process
|
||||
is started.
|
||||
'';
|
||||
|
@ -378,7 +377,7 @@ in rec {
|
|||
postStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Shell commands executed after the service's main process
|
||||
is started.
|
||||
'';
|
||||
|
@ -387,7 +386,7 @@ in rec {
|
|||
reload = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Shell commands executed when the service's main process
|
||||
is reloaded.
|
||||
'';
|
||||
|
@ -396,7 +395,7 @@ in rec {
|
|||
preStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Shell commands executed to stop the service.
|
||||
'';
|
||||
};
|
||||
|
@ -404,7 +403,7 @@ in rec {
|
|||
postStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Shell commands executed after the service's main process
|
||||
has exited.
|
||||
'';
|
||||
|
@ -413,7 +412,7 @@ in rec {
|
|||
jobScripts = mkOption {
|
||||
type = with types; coercedTo path singleton (listOf path);
|
||||
internal = true;
|
||||
description = mdDoc "A list of all job script derivations of this unit.";
|
||||
description = "A list of all job script derivations of this unit.";
|
||||
default = [];
|
||||
};
|
||||
|
||||
|
@ -458,7 +457,7 @@ in rec {
|
|||
restartIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether the service should be restarted during a NixOS
|
||||
configuration switch if its definition has changed.
|
||||
'';
|
||||
|
@ -467,7 +466,7 @@ in rec {
|
|||
reloadIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether the service should be reloaded during a NixOS
|
||||
configuration switch if its definition has changed. If
|
||||
enabled, the value of {option}`restartIfChanged` is
|
||||
|
@ -483,7 +482,7 @@ in rec {
|
|||
stopIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
If set, a changed unit is restarted by calling
|
||||
{command}`systemctl stop` in the old configuration,
|
||||
then {command}`systemctl start` in the new one.
|
||||
|
@ -499,7 +498,7 @@ in rec {
|
|||
type = with types; either str (listOf str);
|
||||
default = [];
|
||||
example = "Sun 14:00:00";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Automatically start this unit at the given date/time, which
|
||||
must be in the format described in
|
||||
{manpage}`systemd.time(7)`. This is equivalent
|
||||
|
@ -526,7 +525,7 @@ in rec {
|
|||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
For each item in this list, a `ListenStream`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
|
@ -536,7 +535,7 @@ in rec {
|
|||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
For each item in this list, a `ListenDatagram`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
|
@ -546,7 +545,7 @@ in rec {
|
|||
default = {};
|
||||
example = { ListenStream = "/run/my-socket"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Socket]` section of the unit. See
|
||||
{manpage}`systemd.socket(5)` for details.
|
||||
|
@ -578,7 +577,7 @@ in rec {
|
|||
default = {};
|
||||
example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Timer]` section of the unit. See
|
||||
{manpage}`systemd.timer(5)` and
|
||||
|
@ -611,7 +610,7 @@ in rec {
|
|||
default = {};
|
||||
example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Path]` section of the unit. See
|
||||
{manpage}`systemd.path(5)` for details.
|
||||
|
@ -642,13 +641,13 @@ in rec {
|
|||
what = mkOption {
|
||||
example = "/dev/sda1";
|
||||
type = types.str;
|
||||
description = mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
description = "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
};
|
||||
|
||||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
|
@ -658,21 +657,21 @@ in rec {
|
|||
default = "";
|
||||
example = "ext4";
|
||||
type = types.str;
|
||||
description = mdDoc "File system type.";
|
||||
description = "File system type.";
|
||||
};
|
||||
|
||||
options = mkOption {
|
||||
default = "";
|
||||
example = "noatime";
|
||||
type = types.commas;
|
||||
description = mdDoc "Options used to mount the file system.";
|
||||
description = "Options used to mount the file system.";
|
||||
};
|
||||
|
||||
mountConfig = mkOption {
|
||||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Mount]` section of the unit. See
|
||||
{manpage}`systemd.mount(5)` for details.
|
||||
|
@ -702,7 +701,7 @@ in rec {
|
|||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
|
@ -712,7 +711,7 @@ in rec {
|
|||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Automount]` section of the unit. See
|
||||
{manpage}`systemd.automount(5)` for details.
|
||||
|
@ -743,7 +742,7 @@ in rec {
|
|||
default = {};
|
||||
example = { MemoryMax = "2G"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Slice]` section of the unit. See
|
||||
{manpage}`systemd.slice(5)` for details.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ config, lib, hostPkgs, ... }:
|
||||
let
|
||||
inherit (lib) mkOption types literalMD mdDoc;
|
||||
inherit (lib) mkOption types literalMD;
|
||||
|
||||
# Reifies and correctly wraps the python test driver for
|
||||
# the respective qemu version and with or without ocr support
|
||||
|
@ -104,13 +104,13 @@ in
|
|||
options = {
|
||||
|
||||
driver = mkOption {
|
||||
description = mdDoc "Package containing a script that runs the test.";
|
||||
description = "Package containing a script that runs the test.";
|
||||
type = types.package;
|
||||
defaultText = literalMD "set by the test framework";
|
||||
};
|
||||
|
||||
hostPkgs = mkOption {
|
||||
description = mdDoc "Nixpkgs attrset used outside the nodes.";
|
||||
description = "Nixpkgs attrset used outside the nodes.";
|
||||
type = types.raw;
|
||||
example = lib.literalExpression ''
|
||||
import nixpkgs { inherit system config overlays; }
|
||||
|
@ -118,14 +118,14 @@ in
|
|||
};
|
||||
|
||||
qemu.package = mkOption {
|
||||
description = mdDoc "Which qemu package to use for the virtualisation of [{option}`nodes`](#test-opt-nodes).";
|
||||
description = "Which qemu package to use for the virtualisation of [{option}`nodes`](#test-opt-nodes).";
|
||||
type = types.package;
|
||||
default = hostPkgs.qemu_test;
|
||||
defaultText = "hostPkgs.qemu_test";
|
||||
};
|
||||
|
||||
globalTimeout = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A global timeout for the complete test, expressed in seconds.
|
||||
Beyond that timeout, every resource will be killed and released and the test will fail.
|
||||
|
||||
|
@ -137,7 +137,7 @@ in
|
|||
};
|
||||
|
||||
enableOCR = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether to enable Optical Character Recognition functionality for
|
||||
testing graphical programs. See [Machine objects](`ssec-machine-objects`).
|
||||
'';
|
||||
|
@ -146,7 +146,7 @@ in
|
|||
};
|
||||
|
||||
extraPythonPackages = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Python packages to add to the test driver.
|
||||
|
||||
The argument is a Python package set, similar to `pkgs.pythonPackages`.
|
||||
|
@ -159,7 +159,7 @@ in
|
|||
};
|
||||
|
||||
extraDriverArgs = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Extra arguments to pass to the test driver.
|
||||
|
||||
They become part of [{option}`driver`](#test-opt-driver) via `wrapProgram`.
|
||||
|
@ -171,7 +171,7 @@ in
|
|||
skipLint = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Do not run the linters. This may speed up your iteration cycle, but it is not something you should commit.
|
||||
'';
|
||||
};
|
||||
|
@ -179,7 +179,7 @@ in
|
|||
skipTypeCheck = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Disable type checking. This must not be enabled for new NixOS tests.
|
||||
|
||||
This may speed up your iteration cycle, unless you're working on the [{option}`testScript`](#test-opt-testScript).
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{ config, lib, moduleType, hostPkgs, ... }:
|
||||
let
|
||||
inherit (lib) mkOption types mdDoc;
|
||||
inherit (lib) mkOption types;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
interactive = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Tests [can be run interactively](#sec-running-nixos-tests-interactively)
|
||||
using the program in the test derivation's `.driverInteractive` attribute.
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib) types mkOption mdDoc;
|
||||
inherit (lib) types mkOption;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
meta = lib.mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The [`meta`](https://nixos.org/manual/nixpkgs/stable/#chap-meta) attributes that will be set on the returned derivations.
|
||||
|
||||
Not all [`meta`](https://nixos.org/manual/nixpkgs/stable/#chap-meta) attributes are supported, but more can be added as desired.
|
||||
|
@ -16,21 +16,21 @@ in
|
|||
maintainers = lib.mkOption {
|
||||
type = types.listOf types.raw;
|
||||
default = [];
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The [list of maintainers](https://nixos.org/manual/nixpkgs/stable/#var-meta-maintainers) for this test.
|
||||
'';
|
||||
};
|
||||
timeout = lib.mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = 3600; # 1 hour
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The [{option}`test`](#test-opt-test)'s [`meta.timeout`](https://nixos.org/manual/nixpkgs/stable/#var-meta-timeout) in seconds.
|
||||
'';
|
||||
};
|
||||
broken = lib.mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Sets the [`meta.broken`](https://nixos.org/manual/nixpkgs/stable/#var-meta-broken) attribute on the [{option}`test`](#test-opt-test) derivation.
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib) mkOption types mdDoc;
|
||||
inherit (lib) mkOption types;
|
||||
in
|
||||
{
|
||||
options.name = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The name of the test.
|
||||
|
||||
This is used in the derivation names of the [{option}`driver`](#test-opt-driver) and [{option}`test`](#test-opt-test) runner.
|
||||
|
|
|
@ -5,7 +5,6 @@ let
|
|||
attrNames concatMap concatMapStrings flip forEach head
|
||||
listToAttrs mkDefault mkOption nameValuePair optionalString
|
||||
range toLower types zipListsWith zipLists
|
||||
mdDoc
|
||||
;
|
||||
|
||||
nodeNumbers =
|
||||
|
@ -89,7 +88,7 @@ let
|
|||
default = name;
|
||||
# We need to force this in specilisations, otherwise it'd be
|
||||
# readOnly = true;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The `name` in `nodes.<name>`; stable across `specialisations`.
|
||||
'';
|
||||
};
|
||||
|
@ -98,7 +97,7 @@ let
|
|||
type = types.int;
|
||||
readOnly = true;
|
||||
default = nodeNumbers.${config.virtualisation.test.nodeName};
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A unique number assigned for each node in `nodes`.
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -5,7 +5,6 @@ let
|
|||
literalExpression
|
||||
literalMD
|
||||
mapAttrs
|
||||
mdDoc
|
||||
mkDefault
|
||||
mkIf
|
||||
mkOption mkForce
|
||||
|
@ -76,7 +75,7 @@ in
|
|||
nodes = mkOption {
|
||||
type = types.lazyAttrsOf config.node.type;
|
||||
visible = "shallow";
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
An attribute set of NixOS configuration modules.
|
||||
|
||||
The configurations are augmented by the [`defaults`](#test-opt-defaults) option.
|
||||
|
@ -88,7 +87,7 @@ in
|
|||
};
|
||||
|
||||
defaults = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
NixOS configuration that is applied to all [{option}`nodes`](#test-opt-nodes).
|
||||
'';
|
||||
type = types.deferredModule;
|
||||
|
@ -96,7 +95,7 @@ in
|
|||
};
|
||||
|
||||
extraBaseModules = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
NixOS configuration that, like [{option}`defaults`](#test-opt-defaults), is applied to all [{option}`nodes`](#test-opt-nodes) and can not be undone with [`specialisation.<name>.inheritParentConfig`](https://search.nixos.org/options?show=specialisation.%3Cname%3E.inheritParentConfig&from=0&size=50&sort=relevance&type=packages&query=specialisation).
|
||||
'';
|
||||
type = types.deferredModule;
|
||||
|
@ -104,7 +103,7 @@ in
|
|||
};
|
||||
|
||||
node.pkgs = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
The Nixpkgs to use for the nodes.
|
||||
|
||||
Setting this will make the `nixpkgs.*` options read-only, to avoid mistakenly testing with a Nixpkgs configuration that diverges from regular use.
|
||||
|
@ -117,7 +116,7 @@ in
|
|||
};
|
||||
|
||||
node.pkgsReadOnly = mkOption {
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Whether to make the `nixpkgs.*` options read-only. This is only relevant when [`node.pkgs`](#test-opt-node.pkgs) is set.
|
||||
|
||||
Set this to `false` when any of the [`nodes`](#test-opt-nodes) needs to configure any of the `nixpkgs.*` options. This will slow down evaluation of your test a bit.
|
||||
|
@ -130,7 +129,7 @@ in
|
|||
node.specialArgs = mkOption {
|
||||
type = types.lazyAttrsOf types.raw;
|
||||
default = { };
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
An attribute set of arbitrary values that will be made available as module arguments during the resolution of module `imports`.
|
||||
|
||||
Note that it is not possible to override these from within the NixOS configurations. If you argument is not relevant to `imports`, consider setting {option}`defaults._module.args.<name>` instead.
|
||||
|
@ -139,7 +138,7 @@ in
|
|||
|
||||
nodesCompat = mkOption {
|
||||
internal = true;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Basically `_module.args.nodes`, but with backcompat and warnings added.
|
||||
|
||||
This will go away.
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{ config, hostPkgs, lib, ... }:
|
||||
let
|
||||
inherit (lib) types mkOption mdDoc;
|
||||
inherit (lib) types mkOption;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
passthru = mkOption {
|
||||
type = types.lazyAttrsOf types.raw;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Attributes to add to the returned derivations,
|
||||
which are not necessarily part of the build.
|
||||
|
||||
|
@ -18,7 +18,7 @@ in
|
|||
|
||||
rawTestDerivation = mkOption {
|
||||
type = types.package;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Unfiltered version of `test`, for troubleshooting the test framework and `testBuildFailure` in the test framework's test suite.
|
||||
This is not intended for general use. Use `test` instead.
|
||||
'';
|
||||
|
@ -28,7 +28,7 @@ in
|
|||
test = mkOption {
|
||||
type = types.package;
|
||||
# TODO: can the interactive driver be configured to access the network?
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
Derivation that runs the test as its "build" process.
|
||||
|
||||
This implies that NixOS tests run isolated from the network, making them
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
testModuleArgs@{ config, lib, hostPkgs, nodes, moduleType, ... }:
|
||||
let
|
||||
inherit (lib) mkOption types mdDoc;
|
||||
inherit (lib) mkOption types;
|
||||
inherit (types) either str functionTo;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
testScript = mkOption {
|
||||
type = either str (functionTo str);
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A series of python declarations and statements that you write to perform
|
||||
the test.
|
||||
'';
|
||||
|
@ -25,7 +25,7 @@ in
|
|||
};
|
||||
withoutTestScriptReferences = mkOption {
|
||||
type = moduleType;
|
||||
description = mdDoc ''
|
||||
description = ''
|
||||
A parallel universe where the testScript is invalid and has no references.
|
||||
'';
|
||||
internal = true;
|
||||
|
|
|
@ -118,7 +118,7 @@ are already created.
|
|||
before = "service1.service";
|
||||
after = "postgresql.service";
|
||||
serviceConfig.User = "postgres";
|
||||
environment.PSQL = "psql --port=${toString services.postgresql.port}";
|
||||
environment.PSQL = "psql --port=${toString services.postgresql.settings.port}";
|
||||
path = [ postgresql ];
|
||||
script = ''
|
||||
$PSQL service1 -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
||||
|
@ -139,7 +139,7 @@ are already created.
|
|||
|
||||
```nix
|
||||
{
|
||||
environment.PSQL = "psql --port=${toString services.postgresql.port}";
|
||||
environment.PSQL = "psql --port=${toString services.postgresql.settings.port}";
|
||||
path = [ postgresql ];
|
||||
systemd.services."service1".preStart = ''
|
||||
$PSQL -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
||||
|
@ -159,7 +159,7 @@ are already created.
|
|||
before = "service1.service";
|
||||
after = "postgresql.service";
|
||||
serviceConfig.User = "service1";
|
||||
environment.PSQL = "psql --port=${toString services.postgresql.port}";
|
||||
environment.PSQL = "psql --port=${toString services.postgresql.settings.port}";
|
||||
path = [ postgresql ];
|
||||
script = ''
|
||||
$PSQL -c 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO "extraUser1"'
|
||||
|
|
|
@ -27,7 +27,7 @@ let
|
|||
else toString value;
|
||||
|
||||
# The main PostgreSQL configuration file.
|
||||
configFile = pkgs.writeTextDir "postgresql.conf" (concatStringsSep "\n" (mapAttrsToList (n: v: "${n} = ${toStr v}") cfg.settings));
|
||||
configFile = pkgs.writeTextDir "postgresql.conf" (concatStringsSep "\n" (mapAttrsToList (n: v: "${n} = ${toStr v}") (filterAttrs (const (x: x != null)) cfg.settings)));
|
||||
|
||||
configFileCheck = pkgs.runCommand "postgresql-configfile-check" {} ''
|
||||
${cfg.package}/bin/postgres -D${configFile} -C config_file >/dev/null
|
||||
|
@ -41,6 +41,9 @@ in
|
|||
{
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "postgresql" "extraConfig" ] "Use services.postgresql.settings instead.")
|
||||
|
||||
(mkRenamedOptionModule [ "services" "postgresql" "logLinePrefix" ] [ "services" "postgresql" "settings" "log_line_prefix" ])
|
||||
(mkRenamedOptionModule [ "services" "postgresql" "port" ] [ "services" "postgresql" "settings" "port" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
@ -57,14 +60,6 @@ in
|
|||
example = "postgresql_15";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 5432;
|
||||
description = lib.mdDoc ''
|
||||
The port on which PostgreSQL listens.
|
||||
'';
|
||||
};
|
||||
|
||||
checkConfig = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
|
@ -352,17 +347,6 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
logLinePrefix = mkOption {
|
||||
type = types.str;
|
||||
default = "[%p] ";
|
||||
example = "%m [%p] ";
|
||||
description = lib.mdDoc ''
|
||||
A printf-style string that is output at the beginning of each log line.
|
||||
Upstream default is `'%m [%p] '`, i.e. it includes the timestamp. We do
|
||||
not include the timestamp, because journal has it anyway.
|
||||
'';
|
||||
};
|
||||
|
||||
extraPlugins = mkOption {
|
||||
type = with types; coercedTo (listOf path) (path: _ignorePg: path) (functionTo (listOf path));
|
||||
default = _: [];
|
||||
|
@ -373,7 +357,38 @@ in
|
|||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = with types; attrsOf (oneOf [ bool float int str ]);
|
||||
type = with types; submodule {
|
||||
freeformType = attrsOf (oneOf [ bool float int str ]);
|
||||
options = {
|
||||
shared_preload_libraries = mkOption {
|
||||
type = nullOr (coercedTo (listOf str) (concatStringsSep ", ") str);
|
||||
default = null;
|
||||
example = literalExpression ''[ "auto_explain" "anon" ]'';
|
||||
description = mdDoc ''
|
||||
List of libraries to be preloaded.
|
||||
'';
|
||||
};
|
||||
|
||||
log_line_prefix = mkOption {
|
||||
type = types.str;
|
||||
default = "[%p] ";
|
||||
example = "%m [%p] ";
|
||||
description = lib.mdDoc ''
|
||||
A printf-style string that is output at the beginning of each log line.
|
||||
Upstream default is `'%m [%p] '`, i.e. it includes the timestamp. We do
|
||||
not include the timestamp, because journal has it anyway.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 5432;
|
||||
description = lib.mdDoc ''
|
||||
The port on which PostgreSQL listens.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
default = {};
|
||||
description = lib.mdDoc ''
|
||||
PostgreSQL configuration. Refer to
|
||||
|
@ -439,9 +454,7 @@ in
|
|||
hba_file = "${pkgs.writeText "pg_hba.conf" cfg.authentication}";
|
||||
ident_file = "${pkgs.writeText "pg_ident.conf" cfg.identMap}";
|
||||
log_destination = "stderr";
|
||||
log_line_prefix = cfg.logLinePrefix;
|
||||
listen_addresses = if cfg.enableTCPIP then "*" else "localhost";
|
||||
port = cfg.port;
|
||||
jit = mkDefault (if cfg.enableJIT then "on" else "off");
|
||||
};
|
||||
|
||||
|
@ -524,7 +537,7 @@ in
|
|||
# Wait for PostgreSQL to be ready to accept connections.
|
||||
postStart =
|
||||
''
|
||||
PSQL="psql --port=${toString cfg.port}"
|
||||
PSQL="psql --port=${toString cfg.settings.port}"
|
||||
|
||||
while ! $PSQL -d postgres -c "" 2> /dev/null; do
|
||||
if ! kill -0 "$MAINPID"; then exit 1; fi
|
||||
|
|
|
@ -114,11 +114,11 @@ in
|
|||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = if !usePostgresql then 3306 else pg.port;
|
||||
default = if usePostgresql then pg.settings.port else 3306;
|
||||
defaultText = literalExpression ''
|
||||
if config.${opt.database.type} != "postgresql"
|
||||
then 3306
|
||||
else config.${options.services.postgresql.port}
|
||||
else 5432
|
||||
'';
|
||||
description = mdDoc "Database host port.";
|
||||
};
|
||||
|
|
|
@ -100,11 +100,11 @@ in
|
|||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = if !usePostgresql then 3306 else pg.port;
|
||||
default = if usePostgresql then pg.settings.port else 3306;
|
||||
defaultText = literalExpression ''
|
||||
if config.${opt.database.type} != "postgresql"
|
||||
then 3306
|
||||
else config.${options.services.postgresql.port}
|
||||
else 5432
|
||||
'';
|
||||
description = lib.mdDoc "Database host port.";
|
||||
};
|
||||
|
|
|
@ -901,6 +901,16 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
sidekiq.concurrency = mkOption {
|
||||
type = with types; nullOr int;
|
||||
default = null;
|
||||
description = lib.mdDoc ''
|
||||
How many processor threads to use for processing sidekiq background job queues. When null, the GitLab default is used.
|
||||
|
||||
See <https://docs.gitlab.com/ee/administration/sidekiq/extra_sidekiq_processes.html#manage-thread-counts-explicitly> for details.
|
||||
'';
|
||||
};
|
||||
|
||||
sidekiq.memoryKiller.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
|
@ -1454,12 +1464,17 @@ in {
|
|||
TimeoutSec = "infinity";
|
||||
Restart = "always";
|
||||
WorkingDirectory = "${cfg.packages.gitlab}/share/gitlab";
|
||||
ExecStart = utils.escapeSystemdExecArgs [
|
||||
"${cfg.packages.gitlab}/share/gitlab/bin/sidekiq-cluster"
|
||||
"-e" "production"
|
||||
"-r" "."
|
||||
"*" # all queue groups
|
||||
];
|
||||
ExecStart = utils.escapeSystemdExecArgs (
|
||||
[
|
||||
"${cfg.packages.gitlab}/share/gitlab/bin/sidekiq-cluster"
|
||||
"*" # all queue groups
|
||||
] ++ lib.optionals (cfg.sidekiq.concurrency != null) [
|
||||
"--concurrency" (toString cfg.sidekiq.concurrency)
|
||||
] ++ [
|
||||
"--environment" "production"
|
||||
"--require" "."
|
||||
]
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ in {
|
|||
extraFlags = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Extra flags passed to llama-cpp-server.";
|
||||
example = ["-c" "4096" "-ngl" "32" "--numa"];
|
||||
example = ["-c" "4096" "-ngl" "32" "--numa" "numactl"];
|
||||
default = [];
|
||||
};
|
||||
|
||||
|
|
|
@ -103,11 +103,11 @@ in
|
|||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = if cfg.database.type == "mysql" then mysql.port else pgsql.port;
|
||||
default = if cfg.database.type == "mysql" then mysql.port else pgsql.services.port;
|
||||
defaultText = literalExpression ''
|
||||
if config.${opt.database.type} == "mysql"
|
||||
then config.${options.services.mysql.port}
|
||||
else config.${options.services.postgresql.port}
|
||||
else config.services.postgresql.settings.port
|
||||
'';
|
||||
description = lib.mdDoc "Database host port.";
|
||||
};
|
||||
|
|
|
@ -95,11 +95,11 @@ in
|
|||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = if cfg.database.type == "mysql" then mysql.port else pgsql.port;
|
||||
default = if cfg.database.type == "mysql" then mysql.port else pgsql.settings.port;
|
||||
defaultText = literalExpression ''
|
||||
if config.${opt.database.type} == "mysql"
|
||||
then config.${options.services.mysql.port}
|
||||
else config.${options.services.postgresql.port}
|
||||
else config.services.postgresql.settings.port
|
||||
'';
|
||||
description = lib.mdDoc "Database host port.";
|
||||
};
|
||||
|
|
|
@ -246,12 +246,8 @@ in
|
|||
shopt -s lastpipe
|
||||
${pkg}/bin/makekeys | { read private ipv6 public; }
|
||||
|
||||
umask 0077
|
||||
echo "CJDNS_PRIVATE_KEY=$private" >> /etc/cjdns.keys
|
||||
echo -e "CJDNS_IPV6=$ipv6\nCJDNS_PUBLIC_KEY=$public" > /etc/cjdns.public
|
||||
|
||||
chmod 600 /etc/cjdns.keys
|
||||
chmod 444 /etc/cjdns.public
|
||||
install -m 600 <(echo "CJDNS_PRIVATE_KEY=$private") /etc/cjdns.keys
|
||||
install -m 444 <(echo -e "CJDNS_IPV6=$ipv6\nCJDNS_PUBLIC_KEY=$public") /etc/cjdns.public
|
||||
fi
|
||||
|
||||
if [ -z "$CJDNS_ADMIN_PASSWORD" ]; then
|
||||
|
|
|
@ -346,8 +346,8 @@ in
|
|||
|
||||
port = lib.mkOption {
|
||||
type = types.port;
|
||||
default = options.services.postgresql.port.default;
|
||||
defaultText = lib.literalExpression "options.services.postgresql.port.default";
|
||||
default = config.services.postgresql.settings.port;
|
||||
defaultText = lib.literalExpression "config.services.postgresql.settings.port";
|
||||
description = lib.mdDoc ''
|
||||
The port of the database Invidious should use.
|
||||
|
||||
|
|
|
@ -76,11 +76,11 @@ in
|
|||
type = types.port;
|
||||
default =
|
||||
if cfg.database.type == "mysql" then config.services.mysql.port
|
||||
else if cfg.database.type == "pgsql" then config.services.postgresql.port
|
||||
else if cfg.database.type == "pgsql" then config.services.postgresql.settings.port
|
||||
else 1521;
|
||||
defaultText = literalExpression ''
|
||||
if config.${opt.database.type} == "mysql" then config.${options.services.mysql.port}
|
||||
else if config.${opt.database.type} == "pgsql" then config.${options.services.postgresql.port}
|
||||
else if config.${opt.database.type} == "pgsql" then config.services.postgresql.settings.port
|
||||
else 1521
|
||||
'';
|
||||
description = lib.mdDoc "Database host port.";
|
||||
|
|
|
@ -89,6 +89,10 @@ in {
|
|||
dbFile = pkgs.writeText "dbsecret" "we2quaeZ";
|
||||
jwsFile = pkgs.runCommand "oidcKeyBase" {} "${pkgs.openssl}/bin/openssl genrsa 2048 > $out";
|
||||
};
|
||||
|
||||
# reduce memory usage
|
||||
sidekiq.concurrency = 1;
|
||||
puma.workers = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -18,7 +18,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||
host invidious invidious samenet scram-sha-256
|
||||
'';
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ config.services.postgresql.port ];
|
||||
networking.firewall.allowedTCPPorts = [ config.services.postgresql.settings.port ];
|
||||
};
|
||||
machine = { config, lib, pkgs, ... }: {
|
||||
services.invidious = {
|
||||
|
|
|
@ -76,7 +76,7 @@ in
|
|||
systemd.services.postgresql.postStart = lib.mkAfter ''
|
||||
$PSQL -tAd miniflux -c 'CREATE EXTENSION hstore;'
|
||||
'';
|
||||
networking.firewall.allowedTCPPorts = [ config.services.postgresql.port ];
|
||||
networking.firewall.allowedTCPPorts = [ config.services.postgresql.settings.port ];
|
||||
};
|
||||
externalDb = { ... }: {
|
||||
security.apparmor.enable = true;
|
||||
|
|
|
@ -7,7 +7,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|||
services.postgresql = {
|
||||
enable = true;
|
||||
extraPlugins = ps: [ ps.anonymizer ];
|
||||
settings.shared_preload_libraries = "anon";
|
||||
settings.shared_preload_libraries = [ "anon" ];
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ in
|
|||
pgmanage = {
|
||||
enable = true;
|
||||
connections = {
|
||||
${conn} = "hostaddr=127.0.0.1 port=${toString config.services.postgresql.port} dbname=postgres";
|
||||
${conn} = "hostaddr=127.0.0.1 port=${toString config.services.postgresql.settings.port} dbname=postgres";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -33,7 +33,7 @@ in
|
|||
extraHosts = hosts;
|
||||
firewall.allowedTCPPorts = [
|
||||
config.services.redis.servers.mastodon.port
|
||||
config.services.postgresql.port
|
||||
config.services.postgresql.settings.port
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, wrapQtAppsHook
|
||||
, pkg-config
|
||||
|
@ -129,7 +128,7 @@ in stdenv'.mkDerivation (finalAttrs: {
|
|||
mkdir -p "$out/Applications"
|
||||
mv "$out/mscore.app" "$out/Applications/mscore.app"
|
||||
mkdir -p $out/bin
|
||||
ln -s $out/Applications/mscore.app/Contents/MacOS/mscore $out/bin/mscore.
|
||||
ln -s $out/Applications/mscore.app/Contents/MacOS/mscore $out/bin/mscore
|
||||
'';
|
||||
|
||||
# Don't run bundled upstreams tests, as they require a running X window system.
|
||||
|
@ -143,5 +142,6 @@ in stdenv'.mkDerivation (finalAttrs: {
|
|||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ vandenoever doronbehar ];
|
||||
mainProgram = "mscore";
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ergo";
|
||||
version = "5.0.20";
|
||||
version = "5.0.21";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ergoplatform/ergo/releases/download/v${version}/ergo-${version}.jar";
|
||||
sha256 = "sha256-wC3KnuKHsUw1jt7EXVAgPhB6Sk8630sVaM3yn6CGPqs=";
|
||||
sha256 = "sha256-WtBsChSHnYbRBojxRUGdMnXlG+45hp4ZSd8GLx5n/88=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -34,10 +34,10 @@
|
|||
elpaBuild {
|
||||
pname = "activities";
|
||||
ename = "activities";
|
||||
version = "0.5.1";
|
||||
version = "0.7";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/activities-0.5.1.tar";
|
||||
sha256 = "0ng9sgajcpal881s3kavkmz0fc38f2h207hpqj62cf14z7bsk0zk";
|
||||
url = "https://elpa.gnu.org/packages/activities-0.7.tar";
|
||||
sha256 = "17vwbblcwayf1lqfvc64s606cyv1pyh094i3d8fz0k5ivgfp6ybi";
|
||||
};
|
||||
packageRequires = [ emacs persist ];
|
||||
meta = {
|
||||
|
@ -261,6 +261,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
assess = callPackage ({ elpaBuild, emacs, fetchurl, lib, m-buffer }:
|
||||
elpaBuild {
|
||||
pname = "assess";
|
||||
ename = "assess";
|
||||
version = "0.7";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/assess-0.7.tar";
|
||||
sha256 = "0ixs6ab5j12q69bn9h423a6c7mpc7r5spf6m039x3rl14yc04cy4";
|
||||
};
|
||||
packageRequires = [ emacs m-buffer ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/assess.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
async = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "async";
|
||||
|
@ -280,10 +295,10 @@
|
|||
elpaBuild {
|
||||
pname = "auctex";
|
||||
ename = "auctex";
|
||||
version = "14.0.3";
|
||||
version = "14.0.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/auctex-14.0.3.tar";
|
||||
sha256 = "1xk29nk3r7ilxk2vag3diacamqvlws7mbjk5a0iivz5y6fy7hmjc";
|
||||
url = "https://elpa.gnu.org/packages/auctex-14.0.4.tar";
|
||||
sha256 = "03w6qs4f0ksb8f54zsx189775w3wdyfaqg3dwn20a77y5cvisk52";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -550,10 +565,10 @@
|
|||
elpaBuild {
|
||||
pname = "brief";
|
||||
ename = "brief";
|
||||
version = "5.88.22.2";
|
||||
version = "5.90";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/brief-5.88.22.2.tar";
|
||||
sha256 = "1i4sdm8kcrazzp22gb4hi1gd4lfq6hdh6pnldmi1zjjyhl1gbzn3";
|
||||
url = "https://elpa.gnu.org/packages/brief-5.90.tar";
|
||||
sha256 = "18v0qf3aj14sh6njrrjdahzaghsqy50hdjrwl3k1m7x2jqvzxd1z";
|
||||
};
|
||||
packageRequires = [ cl-lib nadvice ];
|
||||
meta = {
|
||||
|
@ -565,10 +580,10 @@
|
|||
elpaBuild {
|
||||
pname = "buffer-env";
|
||||
ename = "buffer-env";
|
||||
version = "0.5";
|
||||
version = "0.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/buffer-env-0.5.tar";
|
||||
sha256 = "17q0flxp0rp52ksyh5ijcamvvm003icbyzv28r6vknrw3qsphb3p";
|
||||
url = "https://elpa.gnu.org/packages/buffer-env-0.6.tar";
|
||||
sha256 = "08li070s2s64lifgzns0z6xjk1qyaik56d6sbdp3gsyghc1sx7rn";
|
||||
};
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
|
@ -659,10 +674,10 @@
|
|||
elpaBuild {
|
||||
pname = "cape";
|
||||
ename = "cape";
|
||||
version = "1.3";
|
||||
version = "1.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/cape-1.3.tar";
|
||||
sha256 = "1178f6js821zcmsc3zrlclnaf4sswgvzs2qazzi975dkcfqcn3vq";
|
||||
url = "https://elpa.gnu.org/packages/cape-1.4.tar";
|
||||
sha256 = "1y0b0lx6qb27x3d0yn3gxykfir07cw4w5jkkw3ff8x1ak6wrf4zv";
|
||||
};
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
|
@ -809,10 +824,10 @@
|
|||
elpaBuild {
|
||||
pname = "comint-mime";
|
||||
ename = "comint-mime";
|
||||
version = "0.3";
|
||||
version = "0.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/comint-mime-0.3.tar";
|
||||
sha256 = "0dlzwzmiwq9z8riq6h1gpq1g713x09kxgaz2m4anxkbmgb95r7hf";
|
||||
url = "https://elpa.gnu.org/packages/comint-mime-0.4.tar";
|
||||
sha256 = "1wgr1dq3qdnsvziylcqaiwhjafdqph4jrnq4cp0lcr1j796vp1dz";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -907,10 +922,10 @@
|
|||
elpaBuild {
|
||||
pname = "compat";
|
||||
ename = "compat";
|
||||
version = "29.1.4.4";
|
||||
version = "29.1.4.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/compat-29.1.4.4.tar";
|
||||
sha256 = "0710g552b1nznnfx2774gmg6yizs27s0bakqm95nsjrp6kgznbfr";
|
||||
url = "https://elpa.gnu.org/packages/compat-29.1.4.5.tar";
|
||||
sha256 = "191cjzrw9xm5bvcf8s1yr9hdcn9i02789xfd8pz33lk65s0rq413";
|
||||
};
|
||||
packageRequires = [ emacs seq ];
|
||||
meta = {
|
||||
|
@ -922,10 +937,10 @@
|
|||
elpaBuild {
|
||||
pname = "consult";
|
||||
ename = "consult";
|
||||
version = "1.3";
|
||||
version = "1.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/consult-1.3.tar";
|
||||
sha256 = "1qyqvc4rp0287lidpzhvi669ygjnqmlw8wq0hc0nks2703p283c8";
|
||||
url = "https://elpa.gnu.org/packages/consult-1.4.tar";
|
||||
sha256 = "1vxc9i4jwnq4q8svgqjzn6nqqjzh3b6gp81iyfcr5n2122y0aq1y";
|
||||
};
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
|
@ -933,8 +948,7 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
consult-hoogle = callPackage ({ consult
|
||||
, elpaBuild
|
||||
consult-hoogle = callPackage ({ elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
, haskell-mode
|
||||
|
@ -942,12 +956,12 @@
|
|||
elpaBuild {
|
||||
pname = "consult-hoogle";
|
||||
ename = "consult-hoogle";
|
||||
version = "0.1.1";
|
||||
version = "0.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/consult-hoogle-0.1.1.tar";
|
||||
sha256 = "1bcl7h5ykcgrsfj27wkv9l9jvbj2bbkh0w9d60663m1bkp0p3y2r";
|
||||
url = "https://elpa.gnu.org/packages/consult-hoogle-0.2.0.tar";
|
||||
sha256 = "1wzd7i7sfd1l8fkfgfaj5vyc9nx9aycfr4yp5yxg1mr6fz8m2rmz";
|
||||
};
|
||||
packageRequires = [ consult emacs haskell-mode ];
|
||||
packageRequires = [ emacs haskell-mode ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/consult-hoogle.html";
|
||||
license = lib.licenses.free;
|
||||
|
@ -1152,10 +1166,10 @@
|
|||
elpaBuild {
|
||||
pname = "dape";
|
||||
ename = "dape";
|
||||
version = "0.7.0";
|
||||
version = "0.9.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/dape-0.7.0.tar";
|
||||
sha256 = "0fbafwmrs9dlv875vcg1c9gh0hqs1zpnyqxgkdvbrazww7ffn60g";
|
||||
url = "https://elpa.gnu.org/packages/dape-0.9.0.tar";
|
||||
sha256 = "13xvl24l8lr64ndc8rk1dxdgsbvwxhn90844xkdzl7qs8i3hyw1l";
|
||||
};
|
||||
packageRequires = [ emacs jsonrpc ];
|
||||
meta = {
|
||||
|
@ -1242,10 +1256,10 @@
|
|||
elpaBuild {
|
||||
pname = "denote";
|
||||
ename = "denote";
|
||||
version = "2.2.4";
|
||||
version = "2.3.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/denote-2.2.4.tar";
|
||||
sha256 = "0a0f4s715nfb7kly82m1gb2ady69z089wlay5i53n9bxzi61x3j7";
|
||||
url = "https://elpa.gnu.org/packages/denote-2.3.0.tar";
|
||||
sha256 = "0h6pdn9w1ggyrmfniqvy307wnlf49n05asa2z5wqxvj6mnvjza1y";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1287,10 +1301,10 @@
|
|||
elpaBuild {
|
||||
pname = "devdocs";
|
||||
ename = "devdocs";
|
||||
version = "0.5";
|
||||
version = "0.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/devdocs-0.5.tar";
|
||||
sha256 = "0qyp8lhf76yv2ym7cryvygvf2m9jah5nsl1g79gqjrsin6vlhqka";
|
||||
url = "https://elpa.gnu.org/packages/devdocs-0.6.tar";
|
||||
sha256 = "17av2l61mr4y8la4cqiq1dnaznni4xirr5k3wdix1jzl3q1apypy";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1653,10 +1667,10 @@
|
|||
elpaBuild {
|
||||
pname = "eev";
|
||||
ename = "eev";
|
||||
version = "20240205";
|
||||
version = "20240309";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/eev-20240205.tar";
|
||||
sha256 = "06psmcf3yi7pincsbhjrcrml0wzwgmlv6xy2fbpg1sg8vlibbgi3";
|
||||
url = "https://elpa.gnu.org/packages/eev-20240309.tar";
|
||||
sha256 = "0j9hz5raxrk3d2ashbsp9yvi04d5ap0chb4lpljr4pbh2lnyjr4h";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1668,10 +1682,10 @@
|
|||
elpaBuild {
|
||||
pname = "ef-themes";
|
||||
ename = "ef-themes";
|
||||
version = "1.5.1";
|
||||
version = "1.6.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/ef-themes-1.5.1.tar";
|
||||
sha256 = "00qh5b7kx0dlms7drnzj95mvgwfzg5h5m9prkbr8qi4ssx939gdw";
|
||||
url = "https://elpa.gnu.org/packages/ef-themes-1.6.1.tar";
|
||||
sha256 = "1ms0rqivxdsbx7jv6d5h1khvm4ghml152ab831chg4z77apmq1ga";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1778,22 +1792,16 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
ellama = callPackage ({ dash
|
||||
, elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
, lib
|
||||
, llm
|
||||
, spinner }:
|
||||
ellama = callPackage ({ elpaBuild, emacs, fetchurl, lib, llm, spinner }:
|
||||
elpaBuild {
|
||||
pname = "ellama";
|
||||
ename = "ellama";
|
||||
version = "0.8.7";
|
||||
version = "0.8.13";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/ellama-0.8.7.tar";
|
||||
sha256 = "0qmd7zrh026rjic26bdp9zinb7vkppdm14inwpwaashqxa5brwi5";
|
||||
url = "https://elpa.gnu.org/packages/ellama-0.8.13.tar";
|
||||
sha256 = "012j3rnvwj8ajyjdlgdx6nrs773i71dyl5brs0jgx010jibzmafi";
|
||||
};
|
||||
packageRequires = [ dash emacs llm spinner ];
|
||||
packageRequires = [ emacs llm spinner ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/ellama.html";
|
||||
license = lib.licenses.free;
|
||||
|
@ -1893,10 +1901,10 @@
|
|||
elpaBuild {
|
||||
pname = "emms";
|
||||
ename = "emms";
|
||||
version = "18";
|
||||
version = "19";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/emms-18.tar";
|
||||
sha256 = "1jslk37kx7yzvwy4hq1a6b71kp4a3bgfzzp8bpplv7z6vcmwrmgq";
|
||||
url = "https://elpa.gnu.org/packages/emms-19.tar";
|
||||
sha256 = "13c884s92ddn52psgkaz3zvb94g23gq41dbidpx7x4gzdhd9qqxm";
|
||||
};
|
||||
packageRequires = [ cl-lib nadvice seq ];
|
||||
meta = {
|
||||
|
@ -2125,10 +2133,10 @@
|
|||
elpaBuild {
|
||||
pname = "filechooser";
|
||||
ename = "filechooser";
|
||||
version = "0.1.2";
|
||||
version = "0.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/filechooser-0.1.2.tar";
|
||||
sha256 = "0s0mdc851zd2hy8hfpbamiimbh7c788cyz8mxnwzkpmf6jlj6xdw";
|
||||
url = "https://elpa.gnu.org/packages/filechooser-0.2.0.tar";
|
||||
sha256 = "1pl6n6d6gymdm0gx0nz96hwps8v1s2zpqph41d0h5hdvsvxacx6w";
|
||||
};
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
|
@ -2554,10 +2562,10 @@
|
|||
elpaBuild {
|
||||
pname = "greader";
|
||||
ename = "greader";
|
||||
version = "0.9.7";
|
||||
version = "0.9.19";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/greader-0.9.7.tar";
|
||||
sha256 = "08q2qfcwyxrnmjbzblgk16xhshhn2314swjs0kr5jrdijdgpfghh";
|
||||
url = "https://elpa.gnu.org/packages/greader-0.9.19.tar";
|
||||
sha256 = "1d04d1shzb505qs2mf7387dvl56pwlwh4b349s5fq2prwqrq71l7";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2584,10 +2592,10 @@
|
|||
elpaBuild {
|
||||
pname = "gtags-mode";
|
||||
ename = "gtags-mode";
|
||||
version = "1.0";
|
||||
version = "1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/gtags-mode-1.0.tar";
|
||||
sha256 = "0nyzsr3fnds931ihw2dp5xlgv151kzph7qv1n751r1cajimzlp7n";
|
||||
url = "https://elpa.gnu.org/packages/gtags-mode-1.1.tar";
|
||||
sha256 = "0fgs6iqrivmyxfkjl6hxxs3zfjkkdas61z34q08qfjgw0ixz188h";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2726,10 +2734,10 @@
|
|||
elpaBuild {
|
||||
pname = "hyperbole";
|
||||
ename = "hyperbole";
|
||||
version = "9.0.0";
|
||||
version = "9.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/hyperbole-9.0.0.tar";
|
||||
sha256 = "07kpyp3ggf4knakn18niy819l184apx4d9vbcwv57j8zyqgn4c3l";
|
||||
url = "https://elpa.gnu.org/packages/hyperbole-9.0.1.tar";
|
||||
sha256 = "0a7py2dvszh0rf2smbmm8msjrc8vbbvlqnsqw0m2l12v8vllmxnb";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2786,10 +2794,10 @@
|
|||
elpaBuild {
|
||||
pname = "isearch-mb";
|
||||
ename = "isearch-mb";
|
||||
version = "0.7";
|
||||
version = "0.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/isearch-mb-0.7.tar";
|
||||
sha256 = "1dfjh4ya9515vx0q2dv1brddw350gxd40h1g1vsa783ivvm0hm75";
|
||||
url = "https://elpa.gnu.org/packages/isearch-mb-0.8.tar";
|
||||
sha256 = "06241rwz01z4ysgmizczq12zl0cc6xvfyds48glzk1jp82zp4adp";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2956,10 +2964,10 @@
|
|||
elpaBuild {
|
||||
pname = "jinx";
|
||||
ename = "jinx";
|
||||
version = "1.3";
|
||||
version = "1.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/jinx-1.3.tar";
|
||||
sha256 = "0xlfw1sw92qf8bwpw9qnjhkz4ax6n7kcl72ypqm3swmj92jbgsg7";
|
||||
url = "https://elpa.gnu.org/packages/jinx-1.4.tar";
|
||||
sha256 = "1vv85pbhcpwjvd3iwnr8ksjpbydrsk7m3zm34hcbybg703yk2nl7";
|
||||
};
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
|
@ -2971,10 +2979,10 @@
|
|||
elpaBuild {
|
||||
pname = "jit-spell";
|
||||
ename = "jit-spell";
|
||||
version = "0.3";
|
||||
version = "0.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/jit-spell-0.3.tar";
|
||||
sha256 = "0q8wd9phd0zcjhc92j633vz82fr0ji8zc9vir7kcn1msrf6jspwz";
|
||||
url = "https://elpa.gnu.org/packages/jit-spell-0.4.tar";
|
||||
sha256 = "1p83spcq52l7k63p56y3w5r3kl49wbrs4abynwn25ikhkd4wl8x3";
|
||||
};
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
|
@ -3016,10 +3024,10 @@
|
|||
elpaBuild {
|
||||
pname = "jsonrpc";
|
||||
ename = "jsonrpc";
|
||||
version = "1.0.24";
|
||||
version = "1.0.25";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.24.tar";
|
||||
sha256 = "05nwxfybczxx7pmflq762dq3wypm3pmcfljqs5kh81icxvdqvk8s";
|
||||
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.25.tar";
|
||||
sha256 = "0hlc70xlm3a53il7k24s6s25dhnd09l2454r5qkpfnjdz9p5ih6f";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3137,6 +3145,40 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
lentic = callPackage ({ dash, elpaBuild, emacs, fetchurl, lib, m-buffer }:
|
||||
elpaBuild {
|
||||
pname = "lentic";
|
||||
ename = "lentic";
|
||||
version = "0.12";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/lentic-0.12.tar";
|
||||
sha256 = "15sb126sq5aw3n09vqydmsl1l5svfar70iz42hnqi783cpw1lh0m";
|
||||
};
|
||||
packageRequires = [ dash emacs m-buffer ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/lentic.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
lentic-server = callPackage ({ elpaBuild
|
||||
, fetchurl
|
||||
, lentic
|
||||
, lib
|
||||
, web-server }:
|
||||
elpaBuild {
|
||||
pname = "lentic-server";
|
||||
ename = "lentic-server";
|
||||
version = "0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/lentic-server-0.2.tar";
|
||||
sha256 = "1vifs91r4rm57rka8by50f8zg5pr2hjqwbdz28mbbxhkj3war6s5";
|
||||
};
|
||||
packageRequires = [ lentic web-server ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/lentic-server.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
let-alist = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "let-alist";
|
||||
|
@ -3182,14 +3224,36 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
listen = callPackage ({ elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
, lib
|
||||
, persist
|
||||
, taxy
|
||||
, taxy-magit-section
|
||||
, transient }:
|
||||
elpaBuild {
|
||||
pname = "listen";
|
||||
ename = "listen";
|
||||
version = "0.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/listen-0.8.tar";
|
||||
sha256 = "1vj9fsyp5v1qh87asj23k625080x6c8mgkas4933lrz7l2g7h1y2";
|
||||
};
|
||||
packageRequires = [ emacs persist taxy taxy-magit-section transient ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/listen.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
llm = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "llm";
|
||||
ename = "llm";
|
||||
version = "0.9.1";
|
||||
version = "0.12.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/llm-0.9.1.tar";
|
||||
sha256 = "0vib0zl41fsacc5d79f1l52j2vxnbqc37471b86cxw9rha0clr8m";
|
||||
url = "https://elpa.gnu.org/packages/llm-0.12.1.tar";
|
||||
sha256 = "11z56fqp0y13jmvm2611xyqsz41k01rsqdjvrzvbf33n56vsw713";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3317,6 +3381,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
m-buffer = callPackage ({ elpaBuild, fetchurl, lib, seq }:
|
||||
elpaBuild {
|
||||
pname = "m-buffer";
|
||||
ename = "m-buffer";
|
||||
version = "0.16";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/m-buffer-0.16.tar";
|
||||
sha256 = "1mb03hrszxxsk61yvh70rnkn7iiwx1vx6n1br02clkpn2q2c0mq5";
|
||||
};
|
||||
packageRequires = [ seq ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/m-buffer.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
map = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "map";
|
||||
|
@ -3516,10 +3595,10 @@
|
|||
elpaBuild {
|
||||
pname = "modus-themes";
|
||||
ename = "modus-themes";
|
||||
version = "4.3.0";
|
||||
version = "4.4.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/modus-themes-4.3.0.tar";
|
||||
sha256 = "0zsglzqc36bw9r7fgvxjdcrdjar6xwad29kwyqd2k36bq3pivzq3";
|
||||
url = "https://elpa.gnu.org/packages/modus-themes-4.4.0.tar";
|
||||
sha256 = "1n6fmgj2kpdy2mmwg5hh6dic30zy0gd3ap6hlipl9qn08lawbbgq";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3527,6 +3606,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
mpdired = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "mpdired";
|
||||
ename = "mpdired";
|
||||
version = "1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/mpdired-1.tar";
|
||||
sha256 = "1b7xsdgsrwy7qkshkk83bizz9r78g4pdfnavwl6riyb947gk6zkx";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/mpdired.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
multi-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "multi-mode";
|
||||
|
@ -3900,10 +3994,10 @@
|
|||
elpaBuild {
|
||||
pname = "orderless";
|
||||
ename = "orderless";
|
||||
version = "1.0";
|
||||
version = "1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/orderless-1.0.tar";
|
||||
sha256 = "0kslgrs857h3mm837hcb8v52ankbv0hm2pz0q136imckzj32m43s";
|
||||
url = "https://elpa.gnu.org/packages/orderless-1.1.tar";
|
||||
sha256 = "19iy0ps8h1qjh16mdybayd9i25bn27sa2slqsa6nslh251pxc0rk";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3915,10 +4009,10 @@
|
|||
elpaBuild {
|
||||
pname = "org";
|
||||
ename = "org";
|
||||
version = "9.6.19";
|
||||
version = "9.6.23";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-9.6.19.tar";
|
||||
sha256 = "0ibgw0i7nsn589k0ynifwdp1f3ia6p8369myhjqgmwy392cwrcxg";
|
||||
url = "https://elpa.gnu.org/packages/org-9.6.23.tar";
|
||||
sha256 = "0yqn3kag4anzm8ahfgjxrxjndzq6rbs6kayfq93gx4rn0qxa334q";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3975,10 +4069,10 @@
|
|||
elpaBuild {
|
||||
pname = "org-modern";
|
||||
ename = "org-modern";
|
||||
version = "1.1";
|
||||
version = "1.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-modern-1.1.tar";
|
||||
sha256 = "1aclips7y3dasjh6rjdcx1b6fkaripjam6120b7wm487qpjcrzc8";
|
||||
url = "https://elpa.gnu.org/packages/org-modern-1.2.tar";
|
||||
sha256 = "1kgvrsmbgadbr7wk48sgx1prlgpbp31nih9bl9div35d496njcnw";
|
||||
};
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
|
@ -4376,6 +4470,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
pq = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "pq";
|
||||
ename = "pq";
|
||||
version = "0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/pq-0.2.tar";
|
||||
sha256 = "0gy3i2l1fxwpav6l57yf3mml15lhwh9xp8sm40hlpgyn15nyz4c6";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/pq.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
project = callPackage ({ elpaBuild, emacs, fetchurl, lib, xref }:
|
||||
elpaBuild {
|
||||
pname = "project";
|
||||
|
@ -4575,10 +4684,10 @@
|
|||
elpaBuild {
|
||||
pname = "rcirc-sqlite";
|
||||
ename = "rcirc-sqlite";
|
||||
version = "0.1.3";
|
||||
version = "0.1.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/rcirc-sqlite-0.1.3.tar";
|
||||
sha256 = "1pwxkw6dzwbg5g3rxilpp6iy3mzxgpn0mw59i3dcx25hdyizqhip";
|
||||
url = "https://elpa.gnu.org/packages/rcirc-sqlite-0.1.4.tar";
|
||||
sha256 = "0hz0nm35jq6fg9pr4j725r2awxbf1q23bzn85nhcbpafzb8mmajl";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -4845,10 +4954,10 @@
|
|||
elpaBuild {
|
||||
pname = "rt-liberation";
|
||||
ename = "rt-liberation";
|
||||
version = "6";
|
||||
version = "7";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/rt-liberation-6.tar";
|
||||
sha256 = "1l87q2h1hqm5zpg1fz835gmbf5fgl9fvcqg42c17v6kim4has8zd";
|
||||
url = "https://elpa.gnu.org/packages/rt-liberation-7.tar";
|
||||
sha256 = "0gb1an3a68ib27jrc8x8grq5z3xya4b1gl8ii82a1clzf87n7k63";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -5215,10 +5324,10 @@
|
|||
elpaBuild {
|
||||
pname = "spacious-padding";
|
||||
ename = "spacious-padding";
|
||||
version = "0.3.0";
|
||||
version = "0.4.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/spacious-padding-0.3.0.tar";
|
||||
sha256 = "1iiaxgl18k8hkwwyz3qnargv6q8kwzyh39ai46k5xbpmyrsj4b16";
|
||||
url = "https://elpa.gnu.org/packages/spacious-padding-0.4.1.tar";
|
||||
sha256 = "02bc0r20b4mgnlzryq26q0jq45wfgpvv7y3zhvnaaqj11rw7779f";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -5689,10 +5798,10 @@
|
|||
elpaBuild {
|
||||
pname = "tramp";
|
||||
ename = "tramp";
|
||||
version = "2.6.2.1";
|
||||
version = "2.6.2.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.6.2.1.tar";
|
||||
sha256 = "145riknpdvw7rvpz20m766yci3w012f241mw38pbbb9cb8pn2rbf";
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.6.2.2.tar";
|
||||
sha256 = "0bbsff2qr71f70nxhdi19b3jzpv6bgfb7x7qkrccsygvsvgyrb2h";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -5749,10 +5858,10 @@
|
|||
elpaBuild {
|
||||
pname = "transient";
|
||||
ename = "transient";
|
||||
version = "0.5.3";
|
||||
version = "0.6.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/transient-0.5.3.tar";
|
||||
sha256 = "12ak6rykg627rkwwiga5d9g9pzcrq2sliynqbr3lm8rvlwbdhkhx";
|
||||
url = "https://elpa.gnu.org/packages/transient-0.6.0.tar";
|
||||
sha256 = "1lsh8cvg1kspa8gl9fml0x7r61fbhjajmjqjf4r2s7qz102z66xb";
|
||||
};
|
||||
packageRequires = [ compat emacs seq ];
|
||||
meta = {
|
||||
|
@ -5899,10 +6008,10 @@
|
|||
elpaBuild {
|
||||
pname = "urgrep";
|
||||
ename = "urgrep";
|
||||
version = "0.4.0";
|
||||
version = "0.4.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/urgrep-0.4.0.tar";
|
||||
sha256 = "0l0gswml6hkna48gfljj3hajhcx3bbc1rqwb2v01hvqab05an7zs";
|
||||
url = "https://elpa.gnu.org/packages/urgrep-0.4.1.tar";
|
||||
sha256 = "1kwcb7xxk9lcby5s8gpd5dchya7qq063j217rxsjyn8vv9z91lfc";
|
||||
};
|
||||
packageRequires = [ compat emacs project ];
|
||||
meta = {
|
||||
|
@ -6106,10 +6215,10 @@
|
|||
elpaBuild {
|
||||
pname = "verilog-mode";
|
||||
ename = "verilog-mode";
|
||||
version = "2023.6.6.141322628";
|
||||
version = "2024.3.1.121933719";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/verilog-mode-2023.6.6.141322628.tar";
|
||||
sha256 = "14qls4v5yxrgyiimvvggimw5ddlx0ll387a1r6awm274rj4p3d19";
|
||||
url = "https://elpa.gnu.org/packages/verilog-mode-2024.3.1.121933719.tar";
|
||||
sha256 = "047kna2j1mbsibw1psxdp8qmg91dnjrdrskdzhys9pmaqggfl5ry";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
|
|
@ -64,10 +64,10 @@
|
|||
elpaBuild {
|
||||
pname = "annotate";
|
||||
ename = "annotate";
|
||||
version = "2.1.0";
|
||||
version = "2.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/annotate-2.1.0.tar";
|
||||
sha256 = "07q8s3qi3lm8g01ypvqqq0cn5jx5jrgyv74fbfam3mmz5l3mqp6q";
|
||||
url = "https://elpa.nongnu.org/nongnu/annotate-2.2.0.tar";
|
||||
sha256 = "1h1whavdrwfsc79kcvh2vbvjzqd7n01xzjb1acgyiy9wkyl79p7b";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -306,10 +306,10 @@
|
|||
elpaBuild {
|
||||
pname = "buttercup";
|
||||
ename = "buttercup";
|
||||
version = "1.33";
|
||||
version = "1.34";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/buttercup-1.33.tar";
|
||||
sha256 = "0245fq4iny1jnm440dzkq0fadw10ncnhkj28mayqs9iyyzj9g5h4";
|
||||
url = "https://elpa.nongnu.org/nongnu/buttercup-1.34.tar";
|
||||
sha256 = "0bdlky9d5fzc9x9wpjxyvrclz1rmzsnvc89lf0m5fhyp4r8jvxy4";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -459,6 +459,26 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
consult-flycheck = callPackage ({ consult
|
||||
, elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
, flycheck
|
||||
, lib }:
|
||||
elpaBuild {
|
||||
pname = "consult-flycheck";
|
||||
ename = "consult-flycheck";
|
||||
version = "1.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/consult-flycheck-1.0.tar";
|
||||
sha256 = "0901wliqdzj5dmam1kkbq0nxhywqf11182q7yxjxh98czy5w3xh8";
|
||||
};
|
||||
packageRequires = [ consult emacs flycheck ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/consult-flycheck.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
corfu-terminal = callPackage ({ corfu
|
||||
, elpaBuild
|
||||
, emacs
|
||||
|
@ -479,16 +499,16 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
crux = callPackage ({ elpaBuild, fetchurl, lib, seq }:
|
||||
crux = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "crux";
|
||||
ename = "crux";
|
||||
version = "0.4.0";
|
||||
version = "0.5.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/crux-0.4.0.tar";
|
||||
sha256 = "01yg54s2l3zr4h7h3nw408bqzrr4yds9rfgc575b76006v5d3ciy";
|
||||
url = "https://elpa.nongnu.org/nongnu/crux-0.5.0.tar";
|
||||
sha256 = "0zdzfglzvhkzyvnkk2d217c6f8gnbcxlp8adimwrxgqh7c6gwihp";
|
||||
};
|
||||
packageRequires = [ seq ];
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/crux.html";
|
||||
license = lib.licenses.free;
|
||||
|
@ -742,10 +762,10 @@
|
|||
elpaBuild {
|
||||
pname = "elpher";
|
||||
ename = "elpher";
|
||||
version = "3.5.1";
|
||||
version = "3.6.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/elpher-3.5.1.tar";
|
||||
sha256 = "0687npypihavghz9bjs8f6h10awjgjv5fdd11dmh43p1krhrga2w";
|
||||
url = "https://elpa.nongnu.org/nongnu/elpher-3.6.0.tar";
|
||||
sha256 = "0pa8y3zc768wdgp43546qvwr6ly2q9gznfrl6qmm90gkv5wrc5ln";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2682,10 +2702,10 @@
|
|||
elpaBuild {
|
||||
pname = "racket-mode";
|
||||
ename = "racket-mode";
|
||||
version = "1.0.20240219.135847";
|
||||
version = "1.0.20240319.160226";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20240219.135847.tar";
|
||||
sha256 = "06g1ci7kq8fxjh65qwwnh530xvvh6pr9ha52f7xmbjf56iifn1da";
|
||||
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20240319.160226.tar";
|
||||
sha256 = "1alqiagpkbxqi8nyrn1qzfx23fagpn1ml9hqpyj897jwf5f03zsh";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3382,10 +3402,10 @@
|
|||
elpaBuild {
|
||||
pname = "visual-fill-column";
|
||||
ename = "visual-fill-column";
|
||||
version = "2.6.0";
|
||||
version = "2.6.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/visual-fill-column-2.6.0.tar";
|
||||
sha256 = "1gpjby6g9wq8p25q1a35hr56nfb4sbcdrf0bjxidh1diw5g5saw4";
|
||||
url = "https://elpa.nongnu.org/nongnu/visual-fill-column-2.6.2.tar";
|
||||
sha256 = "13z87xyzldllvga8iygb33qaqvrrc2qnc315zalvbmydw174cq1i";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3397,10 +3417,10 @@
|
|||
elpaBuild {
|
||||
pname = "web-mode";
|
||||
ename = "web-mode";
|
||||
version = "17.3.18";
|
||||
version = "17.3.19";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/web-mode-17.3.18.tar";
|
||||
sha256 = "18ylzq12gsayp3cmd8qjdqsnyiymjd95ffqs3xcyva6sl8d41hmy";
|
||||
url = "https://elpa.nongnu.org/nongnu/web-mode-17.3.19.tar";
|
||||
sha256 = "1z33y7p1dilwpwydb9q14n55q48n80mynm7fjr7ih91wvk8zz5di";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3560,10 +3580,10 @@
|
|||
elpaBuild {
|
||||
pname = "xah-fly-keys";
|
||||
ename = "xah-fly-keys";
|
||||
version = "24.21.20240220095736";
|
||||
version = "24.24.20240324101507";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-24.21.20240220095736.tar";
|
||||
sha256 = "04ra1m9mwhz3zh0776gbzfn4kn0yxgbfbh1hq78r2zxggvpjfikv";
|
||||
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-24.24.20240324101507.tar";
|
||||
sha256 = "1lqrrs5j523q33vvs85j3dlnd56bmnzglfkc8jilv6yq44dmv7v7";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -98,10 +98,10 @@ in
|
|||
|
||||
emacs29 = import ./make-emacs.nix (mkArgs {
|
||||
pname = "emacs";
|
||||
version = "29.2";
|
||||
version = "29.3";
|
||||
variant = "mainline";
|
||||
rev = "29.2";
|
||||
hash = "sha256-qSQmQzVyEGSr4GAI6rqnEwBvhl09D2D8MNasHqZQPL8=";
|
||||
rev = "29.3";
|
||||
hash = "sha256-4yN81djeKb9Hlr6MvaDdXqf4XOl0oolXEYGqkA+KUO0=";
|
||||
});
|
||||
|
||||
emacs28-macport = import ./make-emacs.nix (mkArgs {
|
||||
|
|
|
@ -10,7 +10,7 @@ neovimRequireCheckHook () {
|
|||
# editorconfig-checker-disable
|
||||
export HOME="$TMPDIR"
|
||||
@nvimBinary@ -es --headless -n -u NONE -i NONE --clean -V1 \
|
||||
--cmd "set rtp+=$out" \
|
||||
--cmd "set rtp+=$out,${dependencies/ /,}" \
|
||||
--cmd "lua require('$nvimRequireCheck')"
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -670,6 +670,9 @@
|
|||
|
||||
hardhat-nvim = super.hardhat-nvim.overrideAttrs {
|
||||
dependencies = with self; [ overseer-nvim plenary-nvim ];
|
||||
|
||||
doInstallCheck = true;
|
||||
nvimRequireCheck = "hardhat";
|
||||
};
|
||||
|
||||
harpoon = super.harpoon.overrideAttrs {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, pkg-config
|
||||
, wrapQtAppsHook
|
||||
|
@ -71,6 +72,12 @@ stdenv.mkDerivation rec {
|
|||
patches = [
|
||||
# Remove when merged https://github.com/dolphin-emu/dolphin/pull/12070
|
||||
./find-minizip-ng.patch
|
||||
|
||||
# fix buidl w/ glibc-2.39
|
||||
(fetchpatch {
|
||||
url = "https://github.com/dolphin-emu/dolphin/commit/3da2e15e6b95f02f66df461e87c8b896e450fdab.patch";
|
||||
hash = "sha256-+8yGF412wQUYbyEuYWd41pgOgEbhCaezexxcI5CNehc=";
|
||||
})
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cherrytree";
|
||||
version = "1.0.4";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "giuspen";
|
||||
repo = "cherrytree";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-SMx3a0pzhNahRzmenZwPQPCBgqoBGo9n3RcNcimNGBE=";
|
||||
hash = "sha256-YoHaWc/olJrbV1A4hqDgYOLVlpHBrgI0x2TFr9oeqh4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -66,5 +66,6 @@ stdenv.mkDerivation rec {
|
|||
changelog = "https://raw.githubusercontent.com/giuspen/cherrytree/${version}/changelog.txt";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,39 +1,49 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchgit
|
||||
, ninja
|
||||
, pkg-config
|
||||
, ed
|
||||
, wrapGAppsHook
|
||||
, webkitgtk
|
||||
, libxml2
|
||||
, glib
|
||||
, glib-networking
|
||||
, gettext
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "badwolf";
|
||||
version = "1.2.2";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://hacktivis.me/git/badwolf.git";
|
||||
url = "https://hacktivis.me/git/badwolf.git";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-HfAsq6z+1kqMAsNxJjWJx9nd2cbv0XN4KRS8cYuhOsQ=";
|
||||
hash = "sha256-feWSxK9TJ5MWxUKutuTcdmMk5IbLjNseUAvfm20kQ1U=";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
export PREFIX=$out
|
||||
'';
|
||||
# configure script not accepting '--prefix'
|
||||
prefixKey = "PREFIX=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config wrapGAppsHook ];
|
||||
nativeBuildInputs = [
|
||||
ninja
|
||||
pkg-config
|
||||
ed
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [ webkitgtk libxml2 gettext glib glib-networking ];
|
||||
buildInputs = [
|
||||
webkitgtk
|
||||
libxml2
|
||||
gettext
|
||||
glib-networking
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Minimalist and privacy-oriented WebKitGTK+ browser";
|
||||
mainProgram = "badwolf";
|
||||
homepage = "https://hacktivis.me/projects/badwolf";
|
||||
license = licenses.bsd3;
|
||||
license = with licenses; [ bsd3 cc-by-sa-40 ];
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ laalsaas ];
|
||||
maintainers = with maintainers; [ laalsaas aleksana ];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
stdenv.mkDerivation {
|
||||
pname = "litebrowser";
|
||||
version = "unstable-2022-10-31";
|
||||
version = "unstable-2024-02-25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "litehtml";
|
||||
repo = "litebrowser-linux";
|
||||
rev = "4654f8fb2d5e2deba7ac6223b6639341bd3b7eba";
|
||||
hash = "sha256-SvW1AOxLBLKqa+/2u2Zn+/t33ZzQHmqlcLRl6z0rK9U=";
|
||||
rev = "8130cf50af90e07d201d43b934b5a57f7ed4e68d";
|
||||
hash = "sha256-L/pd4VypDfjLKfh+HLpc4um+POWGzGa4OOttudwJxyk=";
|
||||
fetchSubmodules = true; # litehtml submodule
|
||||
};
|
||||
|
||||
|
@ -46,6 +46,7 @@ stdenv.mkDerivation {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
broken = stdenv.cc.isClang; # https://github.com/litehtml/litebrowser-linux/issues/19
|
||||
description = "A simple browser based on the litehtml engine";
|
||||
mainProgram = "litebrowser";
|
||||
homepage = "https://github.com/litehtml/litebrowser-linux";
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
, expat
|
||||
, libdrm
|
||||
, libxkbcommon
|
||||
, pipewire
|
||||
, gtk3
|
||||
, pango
|
||||
, cairo
|
||||
|
@ -81,7 +82,7 @@ stdenv.mkDerivation rec {
|
|||
xorg.libxcb cups.lib dbus.lib expat libdrm
|
||||
xorg.libXcomposite xorg.libXdamage xorg.libXext
|
||||
xorg.libXfixes xorg.libXrandr libxkbcommon
|
||||
gtk3 pango cairo gdk-pixbuf mesa
|
||||
pipewire gtk3 pango cairo gdk-pixbuf mesa
|
||||
alsa-lib at-spi2-core xorg.libxshmfence systemd wayland
|
||||
];
|
||||
naclHelper = lib.makeLibraryPath [
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "cilium-cli";
|
||||
version = "0.16.3";
|
||||
version = "0.16.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cilium";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-WD0CUPl9Qkalhog2IbefMkiLiVZFW59X21sYH4hUqZs=";
|
||||
hash = "sha256-fhTjYhRCtJu18AGYF6hiTdRMEdlNO+DmDwh2hZBXzPk=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
@ -37,11 +37,12 @@ buildGoModule rec {
|
|||
--zsh <($out/bin/cilium completion zsh)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
changelog = "https://github.com/cilium/cilium-cli/releases/tag/v${version}";
|
||||
description = "CLI to install, manage & troubleshoot Kubernetes clusters running Cilium";
|
||||
license = licenses.asl20;
|
||||
license = lib.licenses.asl20;
|
||||
homepage = "https://www.cilium.io/";
|
||||
maintainers = with maintainers; [ humancalico bryanasdev000 qjoly ];
|
||||
maintainers = with lib.maintainers; [ bryanasdev000 humancalico qjoly superherointj ];
|
||||
mainProgram = "cilium";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "fn";
|
||||
version = "0.6.30";
|
||||
version = "0.6.31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fnproject";
|
||||
repo = "cli";
|
||||
rev = version;
|
||||
hash = "sha256-1j0Hd/SYoBhelCIFUFxkByczWSYFXjTE9TVH9E3Km+Y=";
|
||||
hash = "sha256-tL5mygomRdxHdWUAp6umMOhyKq/ZFcjn+5wZcqD2mVA=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
|
|
@ -12,16 +12,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "kubebuilder";
|
||||
version = "3.14.0";
|
||||
version = "3.14.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubernetes-sigs";
|
||||
repo = "kubebuilder";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-em+I2YICcqljaaNQ+zOAnOZ552elmV6Ywbfla8buwaY=";
|
||||
hash = "sha256-TMKixwZonYGPXIqOtgnuilbH7BaIRyqJU6uKtp9ANKM=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-iBwhpVs9u5AQAvmzb69SaewdYHmmaV19Bstd0Tux9CA=";
|
||||
vendorHash = "sha256-Hl01dFSffYv59zensKTjXWLXxwfkQYAO5xadlc5iBJY=";
|
||||
|
||||
subPackages = ["cmd"];
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "flexget";
|
||||
version = "3.11.25";
|
||||
version = "3.11.27";
|
||||
pyproject = true;
|
||||
|
||||
# Fetch from GitHub in order to use `requirements.in`
|
||||
|
@ -14,7 +14,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||
owner = "Flexget";
|
||||
repo = "Flexget";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-bvCogSBB990LIkk273EMTlqNN303JKr5WCI8g7hLU9Q=";
|
||||
hash = "sha256-0ENBUOH+/pe4OsVQ6cu1xLTPPHtUMNARQGVyxOk60X0=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "signalbackup-tools";
|
||||
version = "20240320";
|
||||
version = "20240328-1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bepaald";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-2H+VGVPnSHdsx62hPygWc5uz5vH6DS7AfmYSlBZuB4A=";
|
||||
hash = "sha256-oEwWbTs8Orpo+qRCKVvkeJYEob8O/qkKmv/iA5JUpfQ=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -45,14 +45,14 @@ let
|
|||
|
||||
pname = "slack";
|
||||
|
||||
x86_64-darwin-version = "4.36.140";
|
||||
x86_64-darwin-sha256 = "0w1fxza3aglh7513znv190gsha12rk7k1ybdp4ml2pffwmm8diad";
|
||||
x86_64-darwin-version = "4.37.94";
|
||||
x86_64-darwin-sha256 = "01v7v977fq8mfsl0lipdc7ig55p2sknxzr1jmh8qxiq4f4y0rj5g";
|
||||
|
||||
x86_64-linux-version = "4.36.140";
|
||||
x86_64-linux-sha256 = "0zahhhpcb1dxdhfmam32iqr5w3pspzbmcdv53ciqfnbkmwzkc3xr";
|
||||
x86_64-linux-version = "4.37.94";
|
||||
x86_64-linux-sha256 = "1f1spl767ldrarvpxrayry2d0nyr22b8xacxl4g1r8raryvnyz0x";
|
||||
|
||||
aarch64-darwin-version = "4.36.140";
|
||||
aarch64-darwin-sha256 = "118mzkpk431dcm61gkbj5m4sdxkwnk6fvmxg9f96xiv6n22n7pnx";
|
||||
aarch64-darwin-version = "4.37.94";
|
||||
aarch64-darwin-sha256 = "0gh45gvlbjzxh0fn24z15glxqih5lggam8w6kpawsxgivkw6rjcc";
|
||||
|
||||
version = {
|
||||
x86_64-darwin = x86_64-darwin-version;
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
{ mkDerivation, lib, fetchFromGitHub, cmake, boost179, ceres-solver, eigen,
|
||||
freeimage, glog, libGLU, glew, qtbase,
|
||||
autoAddDriverRunpath,
|
||||
config,
|
||||
cudaSupport ? config.cudaSupport, cudaPackages }:
|
||||
cudaSupport ? config.cudaSupport, cudaPackages
|
||||
}:
|
||||
|
||||
assert cudaSupport -> cudaPackages != { };
|
||||
|
||||
|
@ -37,7 +39,7 @@ mkDerivation rec {
|
|||
nativeBuildInputs = [
|
||||
cmake
|
||||
] ++ lib.optionals cudaSupport [
|
||||
cudaPackages.autoAddDriverRunpath
|
||||
autoAddDriverRunpath
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "tart";
|
||||
version = "2.6.0";
|
||||
version = "2.7.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/cirruslabs/tart/releases/download/${finalAttrs.version}/tart-arm64.tar.gz";
|
||||
hash = "sha256-QtVqgmjYpLAhFibW1DIVWNYiOjHB1X/YY6zRVB+1soA=";
|
||||
hash = "sha256-Z/LZ8g1/FYT7Jh943tFxN8L5HeNf0CVz1VEJj+2fCd8=";
|
||||
};
|
||||
sourceRoot = ".";
|
||||
|
||||
|
|
|
@ -2,14 +2,28 @@
|
|||
|
||||
{ stdenv, lib, self, Agda, runCommand, makeWrapper, writeText, ghcWithPackages, nixosTests }:
|
||||
|
||||
with lib.strings;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
attrValues
|
||||
elem
|
||||
filter
|
||||
filterAttrs
|
||||
isAttrs
|
||||
isList
|
||||
platforms
|
||||
;
|
||||
|
||||
inherit (lib.strings)
|
||||
concatMapStrings
|
||||
concatMapStringsSep
|
||||
optionalString
|
||||
;
|
||||
|
||||
withPackages' = {
|
||||
pkgs,
|
||||
ghc ? ghcWithPackages (p: with p; [ ieee754 ])
|
||||
}: let
|
||||
pkgs' = if builtins.isList pkgs then pkgs else pkgs self;
|
||||
pkgs' = if isList pkgs then pkgs else pkgs self;
|
||||
library-file = writeText "libraries" ''
|
||||
${(concatMapStringsSep "\n" (p: "${p}/${p.libraryFile}") pkgs')}
|
||||
'';
|
||||
|
@ -23,7 +37,7 @@ let
|
|||
inherit withPackages;
|
||||
tests = {
|
||||
inherit (nixosTests) agda;
|
||||
allPackages = withPackages (lib.filter self.lib.isUnbrokenAgdaPackage (lib.attrValues self));
|
||||
allPackages = withPackages (filter self.lib.isUnbrokenAgdaPackage (attrValues self));
|
||||
};
|
||||
};
|
||||
inherit (Agda) meta;
|
||||
|
@ -35,7 +49,7 @@ let
|
|||
ln -s ${Agda}/bin/agda-mode $out/bin/agda-mode
|
||||
'';
|
||||
|
||||
withPackages = arg: if builtins.isAttrs arg then withPackages' arg else withPackages' { pkgs = arg; };
|
||||
withPackages = arg: if isAttrs arg then withPackages' arg else withPackages' { pkgs = arg; };
|
||||
|
||||
extensions = [
|
||||
"agda"
|
||||
|
@ -62,7 +76,7 @@ let
|
|||
, extraExtensions ? []
|
||||
, ...
|
||||
}: let
|
||||
agdaWithArgs = withPackages (builtins.filter (p: p ? isAgdaDerivation) buildInputs);
|
||||
agdaWithArgs = withPackages (filter (p: p ? isAgdaDerivation) buildInputs);
|
||||
includePathArgs = concatMapStrings (path: "-i" + path + " ") (includePaths ++ [(dirOf everythingFile)]);
|
||||
in
|
||||
{
|
||||
|
@ -91,13 +105,13 @@ let
|
|||
# darwin, it seems that there is no standard such locale; luckily,
|
||||
# the referenced issue doesn't seem to surface on darwin. Hence let's
|
||||
# set this only on non-darwin.
|
||||
LC_ALL = lib.optionalString (!stdenv.isDarwin) "C.UTF-8";
|
||||
LC_ALL = optionalString (!stdenv.isDarwin) "C.UTF-8";
|
||||
|
||||
meta = if meta.broken or false then meta // { hydraPlatforms = lib.platforms.none; } else meta;
|
||||
meta = if meta.broken or false then meta // { hydraPlatforms = platforms.none; } else meta;
|
||||
|
||||
# Retrieve all packages from the finished package set that have the current package as a dependency and build them
|
||||
passthru.tests = with builtins;
|
||||
lib.filterAttrs (name: pkg: self.lib.isUnbrokenAgdaPackage pkg && elem pname (map (pkg: pkg.pname) pkg.buildInputs)) self;
|
||||
passthru.tests =
|
||||
filterAttrs (name: pkg: self.lib.isUnbrokenAgdaPackage pkg && elem pname (map (pkg: pkg.pname) pkg.buildInputs)) self;
|
||||
};
|
||||
in
|
||||
{
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# Note: the hardening flags are part of the bintools-wrapper, rather than
|
||||
# the cc-wrapper, because a few of them are handled by the linker.
|
||||
, defaultHardeningFlags ? with stdenvNoCC; [
|
||||
, defaultHardeningFlags ? [
|
||||
"bindnow"
|
||||
"format"
|
||||
"fortify"
|
||||
|
@ -44,7 +44,7 @@
|
|||
"relro"
|
||||
"stackprotector"
|
||||
"strictoverflow"
|
||||
] ++ lib.optional (
|
||||
] ++ lib.optional (with stdenvNoCC;
|
||||
# Musl-based platforms will keep "pie", other platforms will not.
|
||||
# If you change this, make sure to update section `{#sec-hardening-in-nixpkgs}`
|
||||
# in the nixpkgs manual to inform users about the defaults.
|
||||
|
@ -59,15 +59,30 @@
|
|||
, postLinkSignHook ? null, signingUtils ? null
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
assert nativeTools -> !propagateDoc && nativePrefix != "";
|
||||
assert !nativeTools ->
|
||||
bintools != null && coreutils != null && gnugrep != null;
|
||||
assert !nativeTools -> bintools != null && coreutils != null && gnugrep != null;
|
||||
assert !(nativeLibc && noLibc);
|
||||
assert (noLibc || nativeLibc) == (libc == null);
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
attrByPath
|
||||
concatStringsSep
|
||||
getBin
|
||||
getDev
|
||||
getLib
|
||||
getName
|
||||
getVersion
|
||||
hasSuffix
|
||||
optional
|
||||
optionalAttrs
|
||||
optionals
|
||||
optionalString
|
||||
platforms
|
||||
removePrefix
|
||||
replaceStrings
|
||||
;
|
||||
|
||||
stdenv = stdenvNoCC;
|
||||
inherit (stdenv) hostPlatform targetPlatform;
|
||||
|
||||
|
@ -75,18 +90,18 @@ let
|
|||
#
|
||||
# TODO(@Ericson2314) Make unconditional, or optional but always true by
|
||||
# default.
|
||||
targetPrefix = lib.optionalString (targetPlatform != hostPlatform)
|
||||
targetPrefix = optionalString (targetPlatform != hostPlatform)
|
||||
(targetPlatform.config + "-");
|
||||
|
||||
bintoolsVersion = lib.getVersion bintools;
|
||||
bintoolsName = lib.removePrefix targetPrefix (lib.getName bintools);
|
||||
bintoolsVersion = getVersion bintools;
|
||||
bintoolsName = removePrefix targetPrefix (getName bintools);
|
||||
|
||||
libc_bin = lib.optionalString (libc != null) (getBin libc);
|
||||
libc_dev = lib.optionalString (libc != null) (getDev libc);
|
||||
libc_lib = lib.optionalString (libc != null) (getLib libc);
|
||||
bintools_bin = lib.optionalString (!nativeTools) (getBin bintools);
|
||||
libc_bin = optionalString (libc != null) (getBin libc);
|
||||
libc_dev = optionalString (libc != null) (getDev libc);
|
||||
libc_lib = optionalString (libc != null) (getLib libc);
|
||||
bintools_bin = optionalString (!nativeTools) (getBin bintools);
|
||||
# The wrapper scripts use 'cat' and 'grep', so we may need coreutils.
|
||||
coreutils_bin = lib.optionalString (!nativeTools) (getBin coreutils);
|
||||
coreutils_bin = optionalString (!nativeTools) (getBin coreutils);
|
||||
|
||||
# See description in cc-wrapper.
|
||||
suffixSalt = replaceStrings ["-" "."] ["_" "_"] targetPlatform.config;
|
||||
|
@ -114,11 +129,11 @@ let
|
|||
else if targetPlatform.isLoongArch64 then "${sharedLibraryLoader}/lib/ld-linux-loongarch*.so.1"
|
||||
else if targetPlatform.isDarwin then "/usr/lib/dyld"
|
||||
else if targetPlatform.isFreeBSD then "/libexec/ld-elf.so.1"
|
||||
else if lib.hasSuffix "pc-gnu" targetPlatform.config then "ld.so.1"
|
||||
else if hasSuffix "pc-gnu" targetPlatform.config then "ld.so.1"
|
||||
else "";
|
||||
|
||||
expand-response-params =
|
||||
lib.optionalString (buildPackages ? stdenv && buildPackages.stdenv.hasCC && buildPackages.stdenv.cc != "/dev/null")
|
||||
optionalString (buildPackages ? stdenv && buildPackages.stdenv.hasCC && buildPackages.stdenv.cc != "/dev/null")
|
||||
(import ../expand-response-params { inherit (buildPackages) stdenv; });
|
||||
|
||||
in
|
||||
|
@ -126,7 +141,7 @@ in
|
|||
stdenv.mkDerivation {
|
||||
pname = targetPrefix
|
||||
+ (if name != "" then name else "${bintoolsName}-wrapper");
|
||||
version = lib.optionalString (bintools != null) bintoolsVersion;
|
||||
version = optionalString (bintools != null) bintoolsVersion;
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
||||
|
@ -196,7 +211,7 @@ stdenv.mkDerivation {
|
|||
# as it must have both the GNU assembler from cctools (installed as `gas`)
|
||||
# and the Clang integrated assembler (installed as `as`).
|
||||
# See pkgs/os-specific/darwin/binutils/default.nix for details.
|
||||
+ lib.optionalString wrapGas ''
|
||||
+ optionalString wrapGas ''
|
||||
if [ -e $ldPath/${targetPrefix}gas ]; then
|
||||
ln -s $ldPath/${targetPrefix}gas $out/bin/${targetPrefix}gas
|
||||
fi
|
||||
|
@ -273,7 +288,7 @@ stdenv.mkDerivation {
|
|||
|
||||
${if targetPlatform.isDarwin then ''
|
||||
printf "export LD_DYLD_PATH=%q\n" "$dynamicLinker" >> $out/nix-support/setup-hook
|
||||
'' else lib.optionalString (sharedLibraryLoader != null) ''
|
||||
'' else optionalString (sharedLibraryLoader != null) ''
|
||||
if [ -e ${sharedLibraryLoader}/lib/32/ld-linux.so.2 ]; then
|
||||
echo ${sharedLibraryLoader}/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32
|
||||
fi
|
||||
|
@ -290,7 +305,7 @@ stdenv.mkDerivation {
|
|||
# install the wrapper, you get tools like objdump (same for any
|
||||
# binaries of libc).
|
||||
+ optionalString (!nativeTools) ''
|
||||
printWords ${bintools_bin} ${lib.optionalString (libc != null) libc_bin} > $out/nix-support/propagated-user-env-packages
|
||||
printWords ${bintools_bin} ${optionalString (libc != null) libc_bin} > $out/nix-support/propagated-user-env-packages
|
||||
''
|
||||
|
||||
##
|
||||
|
@ -406,7 +421,7 @@ stdenv.mkDerivation {
|
|||
# for substitution in utils.bash
|
||||
expandResponseParams = "${expand-response-params}/bin/expand-response-params";
|
||||
shell = getBin shell + shell.shellPath or "";
|
||||
gnugrep_bin = lib.optionalString (!nativeTools) gnugrep;
|
||||
gnugrep_bin = optionalString (!nativeTools) gnugrep;
|
||||
wrapperName = "BINTOOLS_WRAPPER";
|
||||
inherit dynamicLinker targetPrefix suffixSalt coreutils_bin;
|
||||
inherit bintools_bin libc_bin libc_dev libc_lib;
|
||||
|
@ -414,13 +429,13 @@ stdenv.mkDerivation {
|
|||
};
|
||||
|
||||
meta =
|
||||
let bintools_ = lib.optionalAttrs (bintools != null) bintools; in
|
||||
(lib.optionalAttrs (bintools_ ? meta) (removeAttrs bintools.meta ["priority"])) //
|
||||
let bintools_ = optionalAttrs (bintools != null) bintools; in
|
||||
(optionalAttrs (bintools_ ? meta) (removeAttrs bintools.meta ["priority"])) //
|
||||
{ description =
|
||||
lib.attrByPath ["meta" "description"] "System binary utilities" bintools_
|
||||
attrByPath ["meta" "description"] "System binary utilities" bintools_
|
||||
+ " (wrapper script)";
|
||||
priority = 10;
|
||||
} // optionalAttrs useMacosReexportHack {
|
||||
platforms = lib.platforms.darwin;
|
||||
platforms = platforms.darwin;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -31,10 +31,20 @@
|
|||
|
||||
assert (pname != null || version != null) -> (name == null && pname != null); # You must declare either a name or pname + version (preferred).
|
||||
|
||||
with builtins;
|
||||
let
|
||||
inherit (lib)
|
||||
concatLines
|
||||
concatStringsSep
|
||||
escapeShellArgs
|
||||
filter
|
||||
optionalString
|
||||
splitString
|
||||
;
|
||||
|
||||
inherit (lib.attrsets) removeAttrs;
|
||||
|
||||
pname = if args ? name && args.name != null then args.name else args.pname;
|
||||
versionStr = lib.optionalString (version != null) ("-" + version);
|
||||
versionStr = optionalString (version != null) ("-" + version);
|
||||
name = pname + versionStr;
|
||||
|
||||
buildFHSEnv = callPackage ./buildFHSEnv.nix { };
|
||||
|
@ -116,10 +126,10 @@ let
|
|||
exec ${run} "$@"
|
||||
'';
|
||||
|
||||
indentLines = str: lib.concatLines (map (s: " " + s) (filter (s: s != "") (lib.splitString "\n" str)));
|
||||
indentLines = str: concatLines (map (s: " " + s) (filter (s: s != "") (splitString "\n" str)));
|
||||
bwrapCmd = { initArgs ? "" }: ''
|
||||
${extraPreBwrapCmds}
|
||||
ignored=(/nix /dev /proc /etc ${lib.optionalString privateTmp "/tmp"})
|
||||
ignored=(/nix /dev /proc /etc ${optionalString privateTmp "/tmp"})
|
||||
ro_mounts=()
|
||||
symlinks=()
|
||||
etc_ignored=()
|
||||
|
@ -164,7 +174,7 @@ let
|
|||
fi
|
||||
|
||||
# link selected etc entries from the actual root
|
||||
for i in ${lib.escapeShellArgs etcBindEntries}; do
|
||||
for i in ${escapeShellArgs etcBindEntries}; do
|
||||
if [[ "''${etc_ignored[@]}" =~ "$i" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
@ -195,7 +205,7 @@ let
|
|||
x11_args+=(--ro-bind-try "$local_socket" "$local_socket")
|
||||
fi
|
||||
|
||||
${lib.optionalString privateTmp ''
|
||||
${optionalString privateTmp ''
|
||||
# sddm places XAUTHORITY in /tmp
|
||||
if [[ "$XAUTHORITY" == /tmp/* ]]; then
|
||||
x11_args+=(--ro-bind-try "$XAUTHORITY" "$XAUTHORITY")
|
||||
|
@ -220,15 +230,15 @@ let
|
|||
--dev-bind /dev /dev
|
||||
--proc /proc
|
||||
--chdir "$(pwd)"
|
||||
${lib.optionalString unshareUser "--unshare-user"}
|
||||
${lib.optionalString unshareIpc "--unshare-ipc"}
|
||||
${lib.optionalString unsharePid "--unshare-pid"}
|
||||
${lib.optionalString unshareNet "--unshare-net"}
|
||||
${lib.optionalString unshareUts "--unshare-uts"}
|
||||
${lib.optionalString unshareCgroup "--unshare-cgroup"}
|
||||
${lib.optionalString dieWithParent "--die-with-parent"}
|
||||
${optionalString unshareUser "--unshare-user"}
|
||||
${optionalString unshareIpc "--unshare-ipc"}
|
||||
${optionalString unsharePid "--unshare-pid"}
|
||||
${optionalString unshareNet "--unshare-net"}
|
||||
${optionalString unshareUts "--unshare-uts"}
|
||||
${optionalString unshareCgroup "--unshare-cgroup"}
|
||||
${optionalString dieWithParent "--die-with-parent"}
|
||||
--ro-bind /nix /nix
|
||||
${lib.optionalString privateTmp "--tmpfs /tmp"}
|
||||
${optionalString privateTmp "--tmpfs /tmp"}
|
||||
# Our glibc will look for the cache in its own path in `/nix/store`.
|
||||
# As such, we need a cache to exist there, because pressure-vessel
|
||||
# depends on the existence of an ld cache. However, adding one
|
||||
|
@ -242,7 +252,7 @@ let
|
|||
--symlink /etc/ld.so.cache ${glibc}/etc/ld.so.cache \
|
||||
--ro-bind ${glibc}/etc/rpc ${glibc}/etc/rpc \
|
||||
--remount-ro ${glibc}/etc \
|
||||
'' + lib.optionalString (stdenv.isx86_64 && stdenv.isLinux) (indentLines ''
|
||||
'' + optionalString (stdenv.isx86_64 && stdenv.isLinux) (indentLines ''
|
||||
--tmpfs ${pkgsi686Linux.glibc}/etc \
|
||||
--symlink /etc/ld.so.conf ${pkgsi686Linux.glibc}/etc/ld.so.conf \
|
||||
--symlink /etc/ld.so.cache ${pkgsi686Linux.glibc}/etc/ld.so.cache \
|
||||
|
|
|
@ -1,10 +1,33 @@
|
|||
{ lib, stdenv, coqPackages, coq, which, fetchzip }@args:
|
||||
let lib = import ./extra-lib.nix {inherit (args) lib;}; in
|
||||
with builtins; with lib;
|
||||
|
||||
let
|
||||
lib = import ./extra-lib.nix {
|
||||
inherit (args) lib;
|
||||
};
|
||||
|
||||
inherit (lib)
|
||||
concatStringsSep
|
||||
flip
|
||||
foldl
|
||||
isFunction
|
||||
isString
|
||||
optional
|
||||
optionalAttrs
|
||||
optionals
|
||||
optionalString
|
||||
pred
|
||||
remove
|
||||
switch
|
||||
versions
|
||||
;
|
||||
|
||||
inherit (lib.attrsets) removeAttrs;
|
||||
inherit (lib.strings) match;
|
||||
|
||||
isGitHubDomain = d: match "^github.*" d != null;
|
||||
isGitLabDomain = d: match "^gitlab.*" d != null;
|
||||
in
|
||||
|
||||
{ pname,
|
||||
version ? null,
|
||||
fetcher ? null,
|
||||
|
|
|
@ -1,5 +1,25 @@
|
|||
{ lib }:
|
||||
with builtins; with lib; recursiveUpdate lib (rec {
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
all
|
||||
concatStringsSep
|
||||
findFirst
|
||||
flip
|
||||
getAttr
|
||||
head
|
||||
isFunction
|
||||
length
|
||||
recursiveUpdate
|
||||
splitVersion
|
||||
tail
|
||||
take
|
||||
versionAtLeast
|
||||
versionOlder
|
||||
zipListsWith
|
||||
;
|
||||
in
|
||||
recursiveUpdate lib (rec {
|
||||
|
||||
versions =
|
||||
let
|
||||
|
|
|
@ -1,8 +1,33 @@
|
|||
{ lib, stdenv, fetchzip }@args:
|
||||
let lib' = lib; in
|
||||
let lib = import ../extra-lib.nix {lib = lib';}; in
|
||||
with builtins; with lib;
|
||||
|
||||
let
|
||||
lib = import ../extra-lib.nix {
|
||||
inherit (args) lib;
|
||||
};
|
||||
|
||||
inherit (lib)
|
||||
attrNames
|
||||
fakeSha256
|
||||
filter
|
||||
findFirst
|
||||
head
|
||||
isAttrs
|
||||
isPath
|
||||
isString
|
||||
last
|
||||
length
|
||||
optionalAttrs
|
||||
pathExists
|
||||
pred
|
||||
sort
|
||||
switch
|
||||
switch-if
|
||||
versionAtLeast
|
||||
versions
|
||||
;
|
||||
|
||||
inherit (lib.strings) match split;
|
||||
|
||||
default-fetcher = {domain ? "github.com", owner ? "", repo, rev, name ? "source", sha256 ? null, ...}@args:
|
||||
let ext = if args?sha256 then "zip" else "tar.gz";
|
||||
fmt = if args?sha256 then "zip" else "tarball";
|
||||
|
@ -17,7 +42,7 @@ let
|
|||
{ cond = (match "(www.)?mpi-sws.org" domain) != null;
|
||||
out = "https://www.mpi-sws.org/~${owner}/${repo}/download/${repo}-${rev}.${ext}";}
|
||||
] (throw "meta-fetch: no fetcher found for domain ${domain} on ${rev}");
|
||||
fetch = x: if args?sha256 then fetchzip (x // { inherit sha256; }) else fetchTarball x;
|
||||
fetch = x: if args?sha256 then fetchzip (x // { inherit sha256; }) else builtins.fetchTarball x;
|
||||
in fetch { inherit url ; };
|
||||
in
|
||||
{
|
||||
|
@ -38,11 +63,12 @@ switch arg [
|
|||
{ case = isNull; out = { version = "broken"; src = ""; broken = true; }; }
|
||||
{ case = isPathString; out = { version = "dev"; src = arg; }; }
|
||||
{ case = pred.union isVersion isShortVersion;
|
||||
out = let v = if isVersion arg then arg else shortVersion arg; in
|
||||
let
|
||||
given-sha256 = release.${v}.sha256 or "";
|
||||
sha256 = if given-sha256 == "" then lib.fakeSha256 else given-sha256;
|
||||
rv = release.${v} // { inherit sha256; }; in
|
||||
out = let
|
||||
v = if isVersion arg then arg else shortVersion arg;
|
||||
given-sha256 = release.${v}.sha256 or "";
|
||||
sha256 = if given-sha256 == "" then fakeSha256 else given-sha256;
|
||||
rv = release.${v} // { inherit sha256; };
|
||||
in
|
||||
{
|
||||
version = rv.version or v;
|
||||
src = rv.src or fetcher (location // { rev = releaseRev v; } // rv);
|
||||
|
|
|
@ -9,9 +9,14 @@
|
|||
assert repoRepoRev != "" -> repoRepoURL != "";
|
||||
assert createMirror -> !useArchive;
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
concatMapStringsSep
|
||||
concatStringsSep
|
||||
fetchers
|
||||
optionalString
|
||||
;
|
||||
|
||||
extraRepoInitFlags = [
|
||||
(optionalString (repoRepoURL != "") "--repo-url=${repoRepoURL}")
|
||||
(optionalString (repoRepoRev != "") "--repo-branch=${repoRepoRev}")
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
{ fetchgit, fetchhg, fetchzip, lib }:
|
||||
|
||||
lib.makeOverridable (
|
||||
let
|
||||
inherit (lib)
|
||||
assertOneOf
|
||||
makeOverridable
|
||||
optionalString
|
||||
;
|
||||
in
|
||||
|
||||
makeOverridable (
|
||||
{ owner
|
||||
, repo, rev
|
||||
, domain ? "sr.ht"
|
||||
|
@ -10,9 +18,7 @@ lib.makeOverridable (
|
|||
, ... # For hash agility
|
||||
} @ args:
|
||||
|
||||
with lib;
|
||||
|
||||
assert (lib.assertOneOf "vc" vc [ "hg" "git" ]);
|
||||
assert (assertOneOf "vc" vc [ "hg" "git" ]);
|
||||
|
||||
let
|
||||
urlFor = resource: "https://${resource}.${domain}/${owner}/${repo}";
|
||||
|
|
|
@ -7,9 +7,32 @@
|
|||
# - zero or more directories. For example, "a/**/b" matches "a/b",
|
||||
# - "a/x/b", "a/x/y/b" and so on.
|
||||
|
||||
with builtins;
|
||||
|
||||
let
|
||||
inherit (builtins) filterSource;
|
||||
|
||||
inherit (lib)
|
||||
concatStringsSep
|
||||
elemAt
|
||||
filter
|
||||
head
|
||||
isList
|
||||
length
|
||||
optionals
|
||||
optionalString
|
||||
pathExists
|
||||
readFile
|
||||
removePrefix
|
||||
replaceStrings
|
||||
stringLength
|
||||
sub
|
||||
substring
|
||||
toList
|
||||
trace
|
||||
;
|
||||
|
||||
|
||||
inherit (lib.strings) match split typeOf;
|
||||
|
||||
debug = a: trace a a;
|
||||
last = l: elemAt l ((length l) - 1);
|
||||
in rec {
|
||||
|
@ -17,7 +40,7 @@ in rec {
|
|||
filterPattern = patterns: root:
|
||||
(name: _type:
|
||||
let
|
||||
relPath = lib.removePrefix ((toString root) + "/") name;
|
||||
relPath = removePrefix ((toString root) + "/") name;
|
||||
matches = pair: (match (head pair) relPath) != null;
|
||||
matched = map (pair: [(matches pair) (last pair)]) patterns;
|
||||
in
|
||||
|
@ -45,7 +68,7 @@ in rec {
|
|||
escs = "\\*?";
|
||||
splitString =
|
||||
let recurse = str : [(substring 0 1 str)] ++
|
||||
(lib.optionals (str != "") (recurse (substring 1 (stringLength(str)) str) ));
|
||||
(optionals (str != "") (recurse (substring 1 (stringLength(str)) str) ));
|
||||
in str : recurse str;
|
||||
chars = s: filter (c: c != "" && !isList c) (splitString s);
|
||||
escape = s: map (c: "\\" + c) (chars s);
|
||||
|
@ -66,7 +89,7 @@ in rec {
|
|||
handleSlashPrefix = l:
|
||||
let
|
||||
split = (match "^(/?)(.*)" l);
|
||||
findSlash = l: lib.optionalString ((match ".+/.+" l) == null) l;
|
||||
findSlash = l: optionalString ((match ".+/.+" l) == null) l;
|
||||
hasSlash = mapAroundCharclass findSlash l != l;
|
||||
in
|
||||
(if (elemAt split 0) == "/" || hasSlash
|
||||
|
@ -94,12 +117,12 @@ in rec {
|
|||
gitignoreCompileIgnore = file_str_patterns: root:
|
||||
let
|
||||
onPath = f: a: if typeOf a == "path" then f a else a;
|
||||
str_patterns = map (onPath readFile) (lib.toList file_str_patterns);
|
||||
str_patterns = map (onPath readFile) (toList file_str_patterns);
|
||||
in concatStringsSep "\n" str_patterns;
|
||||
|
||||
gitignoreFilterPure = filter: patterns: root: name: type:
|
||||
gitignoreFilterPure = predicate: patterns: root: name: type:
|
||||
gitignoreFilter (gitignoreCompileIgnore patterns root) root name type
|
||||
&& filter name type;
|
||||
&& predicate name type;
|
||||
|
||||
# This is a very hacky way of programming this!
|
||||
# A better way would be to reuse existing filtering by making multiple gitignore functions per each root.
|
||||
|
@ -145,23 +168,23 @@ in rec {
|
|||
'');
|
||||
|
||||
withGitignoreFile = patterns: root:
|
||||
lib.toList patterns ++ [ ".git" ] ++ [(root + "/.gitignore")];
|
||||
toList patterns ++ [ ".git" ] ++ [(root + "/.gitignore")];
|
||||
|
||||
withRecursiveGitignoreFile = patterns: root:
|
||||
lib.toList patterns ++ [ ".git" ] ++ [(compileRecursiveGitignore root)];
|
||||
toList patterns ++ [ ".git" ] ++ [(compileRecursiveGitignore root)];
|
||||
|
||||
# filterSource derivatives
|
||||
|
||||
gitignoreFilterSourcePure = filter: patterns: root:
|
||||
filterSource (gitignoreFilterPure filter patterns root) root;
|
||||
gitignoreFilterSourcePure = predicate: patterns: root:
|
||||
filterSource (gitignoreFilterPure predicate patterns root) root;
|
||||
|
||||
gitignoreFilterSource = filter: patterns: root:
|
||||
gitignoreFilterSourcePure filter (withGitignoreFile patterns root) root;
|
||||
gitignoreFilterSource = predicate: patterns: root:
|
||||
gitignoreFilterSourcePure predicate (withGitignoreFile patterns root) root;
|
||||
|
||||
gitignoreFilterRecursiveSource = filter: patterns: root:
|
||||
gitignoreFilterSourcePure filter (withRecursiveGitignoreFile patterns root) root;
|
||||
gitignoreFilterRecursiveSource = predicate: patterns: root:
|
||||
gitignoreFilterSourcePure predicate (withRecursiveGitignoreFile patterns root) root;
|
||||
|
||||
# "Filter"-less alternatives
|
||||
# "Predicate"-less alternatives
|
||||
|
||||
gitignoreSourcePure = gitignoreFilterSourcePure (_: _: true);
|
||||
gitignoreSource = patterns: let type = typeOf patterns; in
|
||||
|
|
|
@ -10,9 +10,17 @@
|
|||
, extraPackages ? [], extraBuildCommands ? ""
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
attrByPath
|
||||
getBin
|
||||
optional
|
||||
optionalAttrs
|
||||
optionals
|
||||
optionalString
|
||||
replaceStrings
|
||||
;
|
||||
|
||||
stdenv = stdenvNoCC;
|
||||
inherit (stdenv) hostPlatform targetPlatform;
|
||||
|
||||
|
@ -20,7 +28,7 @@ let
|
|||
#
|
||||
# TODO(@Ericson2314) Make unconditional, or optional but always true by
|
||||
# default.
|
||||
targetPrefix = lib.optionalString (targetPlatform != hostPlatform)
|
||||
targetPrefix = optionalString (targetPlatform != hostPlatform)
|
||||
(targetPlatform.config + "-");
|
||||
|
||||
# See description in cc-wrapper.
|
||||
|
@ -49,7 +57,7 @@ stdenv.mkDerivation {
|
|||
dontUnpack = true;
|
||||
|
||||
# Additional flags passed to pkg-config.
|
||||
addFlags = lib.optional stdenv.targetPlatform.isStatic "--static";
|
||||
addFlags = optional stdenv.targetPlatform.isStatic "--static";
|
||||
|
||||
installPhase =
|
||||
''
|
||||
|
@ -119,10 +127,10 @@ stdenv.mkDerivation {
|
|||
};
|
||||
|
||||
meta =
|
||||
let pkg-config_ = lib.optionalAttrs (pkg-config != null) pkg-config; in
|
||||
(lib.optionalAttrs (pkg-config_ ? meta) (removeAttrs pkg-config.meta ["priority"])) //
|
||||
let pkg-config_ = optionalAttrs (pkg-config != null) pkg-config; in
|
||||
(optionalAttrs (pkg-config_ ? meta) (removeAttrs pkg-config.meta ["priority"])) //
|
||||
{ description =
|
||||
lib.attrByPath ["meta" "description"] "pkg-config" pkg-config_
|
||||
attrByPath ["meta" "description"] "pkg-config" pkg-config_
|
||||
+ " (wrapper script)";
|
||||
priority = 10;
|
||||
};
|
||||
|
|
|
@ -1,6 +1,24 @@
|
|||
{ lib, pkgs }:
|
||||
|
||||
with pkgs;
|
||||
let
|
||||
inherit (lib) optionalString;
|
||||
|
||||
inherit (pkgs)
|
||||
autoconf
|
||||
automake
|
||||
checkinstall
|
||||
clang-analyzer
|
||||
cov-build
|
||||
enableGCOVInstrumentation
|
||||
lcov
|
||||
libtool
|
||||
makeGCOVReport
|
||||
runCommand
|
||||
stdenv
|
||||
vmTools
|
||||
xz
|
||||
;
|
||||
in
|
||||
|
||||
rec {
|
||||
|
||||
|
@ -91,7 +109,7 @@ rec {
|
|||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
patchPhase = lib.optionalString isNixOS ''
|
||||
patchPhase = optionalString isNixOS ''
|
||||
touch .update-on-nixos-rebuild
|
||||
'';
|
||||
|
||||
|
|
|
@ -19,9 +19,20 @@
|
|||
# (and all of its dependencies) without rebuilding further.
|
||||
{ drv, oldDependency, newDependency, verbose ? true }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
any
|
||||
attrNames
|
||||
concatStringsSep
|
||||
elem
|
||||
filter
|
||||
filterAttrs
|
||||
listToAttrs
|
||||
mapAttrsToList
|
||||
stringLength
|
||||
substring
|
||||
;
|
||||
|
||||
warn = if verbose then builtins.trace else (x: y: y);
|
||||
references = import (runCommandLocal "references.nix" { exportReferencesGraph = [ "graph" drv ]; } ''
|
||||
(echo {
|
||||
|
@ -54,7 +65,7 @@ let
|
|||
(drv: { name = discard (toString drv);
|
||||
value = elem oldStorepath (referencesOf drv) ||
|
||||
any dependsOnOld (referencesOf drv);
|
||||
}) (builtins.attrNames references));
|
||||
}) (attrNames references));
|
||||
|
||||
dependsOnOld = drv: dependsOnOldMemo.${discard (toString drv)};
|
||||
|
||||
|
@ -74,9 +85,9 @@ let
|
|||
rewriteMemo = listToAttrs (map
|
||||
(drv: { name = discard (toString drv);
|
||||
value = rewriteHashes (builtins.storePath drv)
|
||||
(filterAttrs (n: v: builtins.elem (builtins.storePath (discard (toString n))) (referencesOf drv)) rewriteMemo);
|
||||
(filterAttrs (n: v: elem (builtins.storePath (discard (toString n))) (referencesOf drv)) rewriteMemo);
|
||||
})
|
||||
(filter dependsOnOld (builtins.attrNames references))) // rewrittenDeps;
|
||||
(filter dependsOnOld (attrNames references))) // rewrittenDeps;
|
||||
|
||||
drvHash = discard (toString drv);
|
||||
in assert (stringLength (drvName (toString oldDependency)) == stringLength (drvName (toString newDependency)));
|
||||
|
|
|
@ -88,22 +88,21 @@ autoPatchelf() {
|
|||
--extra-args "${patchelfFlagsArray[@]}"
|
||||
}
|
||||
|
||||
# XXX: This should ultimately use fixupOutputHooks but we currently don't have
|
||||
# a way to enforce the order. If we have $runtimeDependencies set, the setup
|
||||
# hook of patchelf is going to ruin everything and strip out those additional
|
||||
# RPATHs.
|
||||
#
|
||||
# So what we do here is basically run in postFixup and emulate the same
|
||||
# behaviour as fixupOutputHooks because the setup hook for patchelf is run in
|
||||
# fixupOutput and the postFixup hook runs later.
|
||||
#
|
||||
# shellcheck disable=SC2016
|
||||
# (Expressions don't expand in single quotes, use double quotes for that.)
|
||||
postFixupHooks+=('
|
||||
if [ -z "${dontAutoPatchelf-}" ]; then
|
||||
autoPatchelfPostFixup() {
|
||||
# XXX: This should ultimately use fixupOutputHooks but we currently don't have
|
||||
# a way to enforce the order. If we have $runtimeDependencies set, the setup
|
||||
# hook of patchelf is going to ruin everything and strip out those additional
|
||||
# RPATHs.
|
||||
#
|
||||
# So what we do here is basically run in postFixup and emulate the same
|
||||
# behaviour as fixupOutputHooks because the setup hook for patchelf is run in
|
||||
# fixupOutput and the postFixup hook runs later.
|
||||
if [[ -z "${dontAutoPatchelf-}" ]]; then
|
||||
autoPatchelf -- $(for output in $(getAllOutputNames); do
|
||||
[ -e "${!output}" ] || continue
|
||||
echo "${!output}"
|
||||
done)
|
||||
fi
|
||||
')
|
||||
}
|
||||
|
||||
postFixupHooks+=(autoPatchelfPostFixup)
|
||||
|
|
|
@ -19,6 +19,7 @@ assertExecutable() {
|
|||
# (if unset or empty, defaults to EXECUTABLE)
|
||||
# --inherit-argv0 : the executable inherits argv0 from the wrapper.
|
||||
# (use instead of --argv0 '$0')
|
||||
# --resolve-argv0 : if argv0 doesn't include a / character, resolve it against PATH
|
||||
# --set VAR VAL : add VAR with value VAL to the executable's environment
|
||||
# --set-default VAR VAL : like --set, but only adds VAR if not already set in
|
||||
# the environment
|
||||
|
@ -87,6 +88,7 @@ makeDocumentedCWrapper() {
|
|||
makeCWrapper() {
|
||||
local argv0 inherit_argv0 n params cmd main flagsBefore flagsAfter flags executable length
|
||||
local uses_prefix uses_suffix uses_assert uses_assert_success uses_stdio uses_asprintf
|
||||
local resolve_path
|
||||
executable=$(escapeStringLiteral "$1")
|
||||
params=("$@")
|
||||
length=${#params[*]}
|
||||
|
@ -169,6 +171,12 @@ makeCWrapper() {
|
|||
# Whichever comes last of --argv0 and --inherit-argv0 wins
|
||||
inherit_argv0=1
|
||||
;;
|
||||
--resolve-argv0)
|
||||
# this gets processed after other argv0 flags
|
||||
uses_stdio=1
|
||||
uses_string=1
|
||||
resolve_argv0=1
|
||||
;;
|
||||
*) # Using an error macro, we will make sure the compiler gives an understandable error message
|
||||
main="$main#error makeCWrapper: Unknown argument ${p}"$'\n'
|
||||
;;
|
||||
|
@ -176,6 +184,7 @@ makeCWrapper() {
|
|||
done
|
||||
[[ -z "$flagsBefore" && -z "$flagsAfter" ]] || main="$main"${main:+$'\n'}$(addFlags "$flagsBefore" "$flagsAfter")$'\n'$'\n'
|
||||
[ -z "$inherit_argv0" ] && main="${main}argv[0] = \"${argv0:-${executable}}\";"$'\n'
|
||||
[ -z "$resolve_argv0" ] || main="${main}argv[0] = resolve_argv0(argv[0]);"$'\n'
|
||||
main="${main}return execv(\"${executable}\", argv);"$'\n'
|
||||
|
||||
[ -z "$uses_asprintf" ] || printf '%s\n' "#define _GNU_SOURCE /* See feature_test_macros(7) */"
|
||||
|
@ -183,9 +192,11 @@ makeCWrapper() {
|
|||
printf '%s\n' "#include <stdlib.h>"
|
||||
[ -z "$uses_assert" ] || printf '%s\n' "#include <assert.h>"
|
||||
[ -z "$uses_stdio" ] || printf '%s\n' "#include <stdio.h>"
|
||||
[ -z "$uses_string" ] || printf '%s\n' "#include <string.h>"
|
||||
[ -z "$uses_assert_success" ] || printf '\n%s\n' "#define assert_success(e) do { if ((e) < 0) { perror(#e); abort(); } } while (0)"
|
||||
[ -z "$uses_prefix" ] || printf '\n%s\n' "$(setEnvPrefixFn)"
|
||||
[ -z "$uses_suffix" ] || printf '\n%s\n' "$(setEnvSuffixFn)"
|
||||
[ -z "$resolve_argv0" ] || printf '\n%s\n' "$(resolveArgv0Fn)"
|
||||
printf '\n%s' "int main(int argc, char **argv) {"
|
||||
printf '\n%s' "$(indent4 "$main")"
|
||||
printf '\n%s\n' "}"
|
||||
|
@ -338,6 +349,41 @@ void set_env_suffix(char *env, char *sep, char *suffix) {
|
|||
"
|
||||
}
|
||||
|
||||
resolveArgv0Fn() {
|
||||
printf '%s' "\
|
||||
char *resolve_argv0(char *argv0) {
|
||||
if (strchr(argv0, '/') != NULL) {
|
||||
return argv0;
|
||||
}
|
||||
char *path = getenv(\"PATH\");
|
||||
if (path == NULL) {
|
||||
return argv0;
|
||||
}
|
||||
char *path_copy = strdup(path);
|
||||
if (path_copy == NULL) {
|
||||
return argv0;
|
||||
}
|
||||
char *dir = strtok(path_copy, \":\");
|
||||
while (dir != NULL) {
|
||||
char *candidate = malloc(strlen(dir) + strlen(argv0) + 2);
|
||||
if (candidate == NULL) {
|
||||
free(path_copy);
|
||||
return argv0;
|
||||
}
|
||||
sprintf(candidate, \"%s/%s\", dir, argv0);
|
||||
if (access(candidate, X_OK) == 0) {
|
||||
free(path_copy);
|
||||
return candidate;
|
||||
}
|
||||
free(candidate);
|
||||
dir = strtok(NULL, \":\");
|
||||
}
|
||||
free(path_copy);
|
||||
return argv0;
|
||||
}
|
||||
"
|
||||
}
|
||||
|
||||
# Embed a C string which shows up as readable text in the compiled binary wrapper,
|
||||
# giving instructions for recreating the wrapper.
|
||||
# Keep in sync with makeBinaryWrapper.extractCmd
|
||||
|
|
|
@ -15,6 +15,7 @@ assertExecutable() {
|
|||
# (if unset or empty, defaults to EXECUTABLE)
|
||||
# --inherit-argv0 : the executable inherits argv0 from the wrapper.
|
||||
# (use instead of --argv0 '$0')
|
||||
# --resolve-argv0 : if argv0 doesn't include a / character, resolve it against PATH
|
||||
# --set VAR VAL : add VAR with value VAL to the executable's environment
|
||||
# --set-default VAR VAL : like --set, but only adds VAR if not already set in
|
||||
# the environment
|
||||
|
@ -177,6 +178,9 @@ makeShellWrapper() {
|
|||
elif [[ "$p" == "--inherit-argv0" ]]; then
|
||||
# Whichever comes last of --argv0 and --inherit-argv0 wins
|
||||
argv0='$0'
|
||||
elif [[ "$p" == "--resolve-argv0" ]]; then
|
||||
# this is noop in shell wrappers, since bash will always resolve $0
|
||||
resolve_argv0=1
|
||||
else
|
||||
die "makeWrapper doesn't understand the arg $p"
|
||||
fi
|
||||
|
|
|
@ -1,5 +1,21 @@
|
|||
with import ../../.. { };
|
||||
with vmTools;
|
||||
let
|
||||
pkgs = import ../../.. { };
|
||||
|
||||
inherit (pkgs)
|
||||
hello
|
||||
patchelf
|
||||
pcmanfm
|
||||
stdenv
|
||||
;
|
||||
|
||||
inherit (pkgs.vmTools)
|
||||
buildRPM
|
||||
diskImages
|
||||
makeImageTestScript
|
||||
runInLinuxImage
|
||||
runInLinuxVM
|
||||
;
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
|
|
|
@ -1,4 +1,14 @@
|
|||
{ pkgs, buildPackages, lib, stdenv, libiconv, mkNugetDeps, mkNugetSource, gixy }:
|
||||
{
|
||||
buildPackages,
|
||||
gixy,
|
||||
lib,
|
||||
libiconv,
|
||||
makeBinaryWrapper,
|
||||
mkNugetDeps,
|
||||
mkNugetSource,
|
||||
pkgs,
|
||||
stdenv,
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
concatMapStringsSep
|
||||
|
@ -6,7 +16,6 @@ let
|
|||
escapeShellArg
|
||||
last
|
||||
optionalString
|
||||
stringLength
|
||||
strings
|
||||
types
|
||||
;
|
||||
|
@ -18,137 +27,285 @@ rec {
|
|||
# Examples:
|
||||
# writeBash = makeScriptWriter { interpreter = "${pkgs.bash}/bin/bash"; }
|
||||
# makeScriptWriter { interpreter = "${pkgs.dash}/bin/dash"; } "hello" "echo hello world"
|
||||
makeScriptWriter = { interpreter, check ? "" }: nameOrPath: content:
|
||||
makeScriptWriter = { interpreter, check ? "", makeWrapperArgs ? [], }: nameOrPath: content:
|
||||
assert (types.path.check nameOrPath) || (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
|
||||
assert (types.path.check content) || (types.str.check content);
|
||||
let
|
||||
nameIsPath = types.path.check nameOrPath;
|
||||
name = last (builtins.split "/" nameOrPath);
|
||||
in
|
||||
path = if nameIsPath then nameOrPath else "/bin/${name}";
|
||||
# The inner derivation which creates the executable under $out/bin (never at $out directly)
|
||||
# This is required in order to support wrapping, as wrapped programs consist of at least two files: the executable and the wrapper.
|
||||
inner =
|
||||
pkgs.runCommandLocal name (
|
||||
{
|
||||
inherit makeWrapperArgs;
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
];
|
||||
meta.mainProgram = name;
|
||||
}
|
||||
// (
|
||||
if (types.str.check content) then {
|
||||
inherit content interpreter;
|
||||
passAsFile = [ "content" ];
|
||||
} else {
|
||||
inherit interpreter;
|
||||
contentPath = content;
|
||||
}
|
||||
)
|
||||
)
|
||||
''
|
||||
# On darwin a script cannot be used as an interpreter in a shebang but
|
||||
# there doesn't seem to be a limit to the size of shebang and multiple
|
||||
# arguments to the interpreter are allowed.
|
||||
if [[ -n "${toString pkgs.stdenvNoCC.isDarwin}" ]] && isScript $interpreter
|
||||
then
|
||||
wrapperInterpreterLine=$(head -1 "$interpreter" | tail -c+3)
|
||||
# Get first word from the line (note: xargs echo remove leading spaces)
|
||||
wrapperInterpreter=$(echo "$wrapperInterpreterLine" | xargs echo | cut -d " " -f1)
|
||||
|
||||
pkgs.runCommandLocal name (
|
||||
lib.optionalAttrs (nameOrPath == "/bin/${name}") {
|
||||
meta.mainProgram = name;
|
||||
}
|
||||
// (
|
||||
if (types.str.check content) then {
|
||||
inherit content interpreter;
|
||||
passAsFile = [ "content" ];
|
||||
} else {
|
||||
inherit interpreter;
|
||||
contentPath = content;
|
||||
}
|
||||
)
|
||||
)
|
||||
''
|
||||
# On darwin a script cannot be used as an interpreter in a shebang but
|
||||
# there doesn't seem to be a limit to the size of shebang and multiple
|
||||
# arguments to the interpreter are allowed.
|
||||
if [[ -n "${toString pkgs.stdenvNoCC.isDarwin}" ]] && isScript $interpreter
|
||||
then
|
||||
wrapperInterpreterLine=$(head -1 "$interpreter" | tail -c+3)
|
||||
# Get first word from the line (note: xargs echo remove leading spaces)
|
||||
wrapperInterpreter=$(echo "$wrapperInterpreterLine" | xargs echo | cut -d " " -f1)
|
||||
if isScript $wrapperInterpreter
|
||||
then
|
||||
echo "error: passed interpreter ($interpreter) is a script which has another script ($wrapperInterpreter) as an interpreter, which is not supported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if isScript $wrapperInterpreter
|
||||
then
|
||||
echo "error: passed interpreter ($interpreter) is a script which has another script ($wrapperInterpreter) as an interpreter, which is not supported."
|
||||
exit 1
|
||||
fi
|
||||
# This should work as long as wrapperInterpreter is a shell, which is
|
||||
# the case for programs wrapped with makeWrapper, like
|
||||
# python3.withPackages etc.
|
||||
interpreterLine="$wrapperInterpreterLine $interpreter"
|
||||
else
|
||||
interpreterLine=$interpreter
|
||||
fi
|
||||
|
||||
# This should work as long as wrapperInterpreter is a shell, which is
|
||||
# the case for programs wrapped with makeWrapper, like
|
||||
# python3.withPackages etc.
|
||||
interpreterLine="$wrapperInterpreterLine $interpreter"
|
||||
else
|
||||
interpreterLine=$interpreter
|
||||
fi
|
||||
echo "#! $interpreterLine" > $out
|
||||
cat "$contentPath" >> $out
|
||||
${optionalString (check != "") ''
|
||||
${check} $out
|
||||
''}
|
||||
chmod +x $out
|
||||
|
||||
# Relocate executable
|
||||
# Wrap it if makeWrapperArgs are specified
|
||||
mv $out tmp
|
||||
mkdir -p $out/$(dirname "${path}")
|
||||
mv tmp $out/${path}
|
||||
if [ -n "''${makeWrapperArgs+''${makeWrapperArgs[@]}}" ]; then
|
||||
wrapProgram $out/${path} ''${makeWrapperArgs[@]}
|
||||
fi
|
||||
'';
|
||||
in
|
||||
if nameIsPath
|
||||
then inner
|
||||
# In case nameOrPath is a name, the user intends the executable to be located at $out.
|
||||
# This is achieved by creating a separate derivation containing a symlink at $out linking to ${inner}/bin/${name}.
|
||||
# This breaks the override pattern.
|
||||
# In case this turns out to be a problem, we can still add more magic
|
||||
else pkgs.runCommandLocal name {} ''
|
||||
ln -s ${inner}/bin/${name} $out
|
||||
'';
|
||||
|
||||
echo "#! $interpreterLine" > $out
|
||||
cat "$contentPath" >> $out
|
||||
${optionalString (check != "") ''
|
||||
${check} $out
|
||||
''}
|
||||
chmod +x $out
|
||||
${optionalString (types.path.check nameOrPath) ''
|
||||
mv $out tmp
|
||||
mkdir -p $out/$(dirname "${nameOrPath}")
|
||||
mv tmp $out/${nameOrPath}
|
||||
''}
|
||||
'';
|
||||
|
||||
# Base implementation for compiled executables.
|
||||
# Takes a compile script, which in turn takes the name as an argument.
|
||||
#
|
||||
# Examples:
|
||||
# writeSimpleC = makeBinWriter { compileScript = name: "gcc -o $out $contentPath"; }
|
||||
makeBinWriter = { compileScript, strip ? true }: nameOrPath: content:
|
||||
makeBinWriter = { compileScript, strip ? true, makeWrapperArgs ? [] }: nameOrPath: content:
|
||||
assert (types.path.check nameOrPath) || (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
|
||||
assert (types.path.check content) || (types.str.check content);
|
||||
let
|
||||
nameIsPath = types.path.check nameOrPath;
|
||||
name = last (builtins.split "/" nameOrPath);
|
||||
path = if nameIsPath then nameOrPath else "/bin/${name}";
|
||||
# The inner derivation which creates the executable under $out/bin (never at $out directly)
|
||||
# This is required in order to support wrapping, as wrapped programs consist of at least two files: the executable and the wrapper.
|
||||
inner =
|
||||
pkgs.runCommandLocal name (
|
||||
{
|
||||
inherit makeWrapperArgs;
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
];
|
||||
meta.mainProgram = name;
|
||||
}
|
||||
// (
|
||||
if (types.str.check content) then {
|
||||
inherit content;
|
||||
passAsFile = [ "content" ];
|
||||
} else {
|
||||
contentPath = content;
|
||||
}
|
||||
)
|
||||
)
|
||||
''
|
||||
${compileScript}
|
||||
${lib.optionalString strip
|
||||
"${lib.getBin buildPackages.bintools-unwrapped}/bin/${buildPackages.bintools-unwrapped.targetPrefix}strip -S $out"}
|
||||
# Sometimes binaries produced for darwin (e. g. by GHC) won't be valid
|
||||
# mach-o executables from the get-go, but need to be corrected somehow
|
||||
# which is done by fixupPhase.
|
||||
${lib.optionalString pkgs.stdenvNoCC.hostPlatform.isDarwin "fixupPhase"}
|
||||
mv $out tmp
|
||||
mkdir -p $out/$(dirname "${path}")
|
||||
mv tmp $out/${path}
|
||||
if [ -n "''${makeWrapperArgs+''${makeWrapperArgs[@]}}" ]; then
|
||||
wrapProgram $out/${path} ''${makeWrapperArgs[@]}
|
||||
fi
|
||||
'';
|
||||
in
|
||||
pkgs.runCommand name ((if (types.str.check content) then {
|
||||
inherit content;
|
||||
passAsFile = [ "content" ];
|
||||
} else {
|
||||
contentPath = content;
|
||||
}) // lib.optionalAttrs (nameOrPath == "/bin/${name}") {
|
||||
meta.mainProgram = name;
|
||||
}) ''
|
||||
${compileScript}
|
||||
${lib.optionalString strip
|
||||
"${lib.getBin buildPackages.bintools-unwrapped}/bin/${buildPackages.bintools-unwrapped.targetPrefix}strip -S $out"}
|
||||
# Sometimes binaries produced for darwin (e. g. by GHC) won't be valid
|
||||
# mach-o executables from the get-go, but need to be corrected somehow
|
||||
# which is done by fixupPhase.
|
||||
${lib.optionalString pkgs.stdenvNoCC.hostPlatform.isDarwin "fixupPhase"}
|
||||
${optionalString (types.path.check nameOrPath) ''
|
||||
mv $out tmp
|
||||
mkdir -p $out/$(dirname "${nameOrPath}")
|
||||
mv tmp $out/${nameOrPath}
|
||||
''}
|
||||
'';
|
||||
if nameIsPath
|
||||
then inner
|
||||
# In case nameOrPath is a name, the user intends the executable to be located at $out.
|
||||
# This is achieved by creating a separate derivation containing a symlink at $out linking to ${inner}/bin/${name}.
|
||||
# This breaks the override pattern.
|
||||
# In case this turns out to be a problem, we can still add more magic
|
||||
else pkgs.runCommandLocal name {} ''
|
||||
ln -s ${inner}/bin/${name} $out
|
||||
'';
|
||||
|
||||
# Like writeScript but the first line is a shebang to bash
|
||||
#
|
||||
# Example:
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeBash "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
writeBash = makeScriptWriter {
|
||||
interpreter = "${lib.getExe pkgs.bash}";
|
||||
};
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeBash "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix" "PATH" ":" "${pkgs.hello}/bin"
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeBash = name: argsOrScript:
|
||||
if lib.isAttrs argsOrScript && ! lib.isDerivation argsOrScript
|
||||
then makeScriptWriter (argsOrScript // { interpreter = "${lib.getExe pkgs.bash}"; }) name
|
||||
else makeScriptWriter { interpreter = "${lib.getExe pkgs.bash}"; } name argsOrScript;
|
||||
|
||||
# Like writeScriptBin but the first line is a shebang to bash
|
||||
#
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeBashBin "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeBashBin "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix", "PATH", ":", "${pkgs.hello}/bin",
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeBashBin = name:
|
||||
writeBash "/bin/${name}";
|
||||
|
||||
# Like writeScript but the first line is a shebang to dash
|
||||
#
|
||||
# Example:
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeDash "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
writeDash = makeScriptWriter {
|
||||
interpreter = "${lib.getExe pkgs.dash}";
|
||||
};
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeDash "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix", "PATH", ":", "${pkgs.hello}/bin",
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeDash = name: argsOrScript:
|
||||
if lib.isAttrs argsOrScript && ! lib.isDerivation argsOrScript
|
||||
then makeScriptWriter (argsOrScript // { interpreter = "${lib.getExe pkgs.dash}"; }) name
|
||||
else makeScriptWriter { interpreter = "${lib.getExe pkgs.dash}"; } name argsOrScript;
|
||||
|
||||
# Like writeScriptBin but the first line is a shebang to dash
|
||||
#
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeDashBin "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeDashBin "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix", "PATH", ":", "${pkgs.hello}/bin",
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeDashBin = name:
|
||||
writeDash "/bin/${name}";
|
||||
|
||||
# Like writeScript but the first line is a shebang to fish
|
||||
#
|
||||
# Example:
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeFish "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
writeFish = makeScriptWriter {
|
||||
interpreter = "${lib.getExe pkgs.fish} --no-config";
|
||||
check = "${lib.getExe pkgs.fish} --no-config --no-execute"; # syntax check only
|
||||
};
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeFish "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix", "PATH", ":", "${pkgs.hello}/bin",
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeFish = name: argsOrScript:
|
||||
if lib.isAttrs argsOrScript && ! lib.isDerivation argsOrScript
|
||||
then makeScriptWriter (argsOrScript // {
|
||||
interpreter = "${lib.getExe pkgs.fish} --no-config";
|
||||
check = "${lib.getExe pkgs.fish} --no-config --no-execute"; # syntax check only
|
||||
}) name
|
||||
else makeScriptWriter {
|
||||
interpreter = "${lib.getExe pkgs.fish} --no-config";
|
||||
check = "${lib.getExe pkgs.fish} --no-config --no-execute"; # syntax check only
|
||||
} name argsOrScript;
|
||||
|
||||
# Like writeScriptBin but the first line is a shebang to fish
|
||||
#
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeFishBin "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeFishBin "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix", "PATH", ":", "${pkgs.hello}/bin",
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeFishBin = name:
|
||||
writeFish "/bin/${name}";
|
||||
|
||||
|
@ -162,11 +319,12 @@ rec {
|
|||
# main = launchMissiles
|
||||
# '';
|
||||
writeHaskell = name: {
|
||||
libraries ? [],
|
||||
ghc ? pkgs.ghc,
|
||||
ghcArgs ? [],
|
||||
libraries ? [],
|
||||
makeWrapperArgs ? [],
|
||||
strip ? true,
|
||||
threadedRuntime ? true,
|
||||
strip ? true
|
||||
}:
|
||||
let
|
||||
appendIfNotSet = el: list: if elem el list then list else list ++ [ el ];
|
||||
|
@ -178,7 +336,7 @@ rec {
|
|||
${(ghc.withPackages (_: libraries ))}/bin/ghc ${lib.escapeShellArgs ghcArgs'} tmp.hs
|
||||
mv tmp $out
|
||||
'';
|
||||
inherit strip;
|
||||
inherit makeWrapperArgs strip;
|
||||
} name;
|
||||
|
||||
# writeHaskellBin takes the same arguments as writeHaskell but outputs a directory (like writeScriptBin)
|
||||
|
@ -187,36 +345,72 @@ rec {
|
|||
|
||||
# Like writeScript but the first line is a shebang to nu
|
||||
#
|
||||
# Example:
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeNu "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
writeNu = makeScriptWriter {
|
||||
interpreter = "${lib.getExe pkgs.nushell} --no-config-file";
|
||||
};
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeNu "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix", "PATH", ":", "${pkgs.hello}/bin",
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeNu = name: argsOrScript:
|
||||
if lib.isAttrs argsOrScript && ! lib.isDerivation argsOrScript
|
||||
then makeScriptWriter (argsOrScript // { interpreter = "${lib.getExe pkgs.nushell} --no-config-file"; }) name
|
||||
else makeScriptWriter { interpreter = "${lib.getExe pkgs.nushell} --no-config-file"; } name argsOrScript;
|
||||
|
||||
|
||||
# Like writeScriptBin but the first line is a shebang to nu
|
||||
#
|
||||
# Can be called with or without extra arguments.
|
||||
#
|
||||
# Example without arguments:
|
||||
# writeNuBin "example" ''
|
||||
# echo hello world
|
||||
# ''
|
||||
#
|
||||
# Example with arguments:
|
||||
# writeNuBin "example"
|
||||
# {
|
||||
# makeWrapperArgs = [
|
||||
# "--prefix", "PATH", ":", "${pkgs.hello}/bin",
|
||||
# ];
|
||||
# }
|
||||
# ''
|
||||
# hello
|
||||
# ''
|
||||
writeNuBin = name:
|
||||
writeNu "/bin/${name}";
|
||||
|
||||
# makeRubyWriter takes ruby and compatible rubyPackages and produces ruby script writer,
|
||||
# If any libraries are specified, ruby.withPackages is used as interpreter, otherwise the "bare" ruby is used.
|
||||
makeRubyWriter = ruby: rubyPackages: buildRubyPackages: name: { libraries ? [], }:
|
||||
makeScriptWriter {
|
||||
interpreter =
|
||||
if libraries == []
|
||||
then "${ruby}/bin/ruby"
|
||||
else "${(ruby.withPackages (ps: libraries))}/bin/ruby";
|
||||
# Rubocop doesnt seem to like running in this fashion.
|
||||
#check = (writeDash "rubocop.sh" ''
|
||||
# exec ${lib.getExe buildRubyPackages.rubocop} "$1"
|
||||
#'');
|
||||
} name;
|
||||
makeRubyWriter = ruby: rubyPackages: buildRubyPackages: name: { libraries ? [], ... } @ args:
|
||||
makeScriptWriter (
|
||||
(builtins.removeAttrs args ["libraries"])
|
||||
// {
|
||||
interpreter =
|
||||
if libraries == []
|
||||
then "${ruby}/bin/ruby"
|
||||
else "${(ruby.withPackages (ps: libraries))}/bin/ruby";
|
||||
# Rubocop doesn't seem to like running in this fashion.
|
||||
#check = (writeDash "rubocop.sh" ''
|
||||
# exec ${lib.getExe buildRubyPackages.rubocop} "$1"
|
||||
#'');
|
||||
}
|
||||
) name;
|
||||
|
||||
# Like writeScript but the first line is a shebang to ruby
|
||||
#
|
||||
# Example:
|
||||
# writeRuby "example" ''
|
||||
# writeRuby "example" { libraries = [ pkgs.rubyPackages.git ]; } ''
|
||||
# puts "hello world"
|
||||
# ''
|
||||
writeRuby = makeRubyWriter pkgs.ruby pkgs.rubyPackages buildPackages.rubyPackages;
|
||||
|
@ -227,17 +421,20 @@ rec {
|
|||
# makeLuaWriter takes lua and compatible luaPackages and produces lua script writer,
|
||||
# which validates the script with luacheck at build time. If any libraries are specified,
|
||||
# lua.withPackages is used as interpreter, otherwise the "bare" lua is used.
|
||||
makeLuaWriter = lua: luaPackages: buildLuaPackages: name: { libraries ? [], }:
|
||||
makeScriptWriter {
|
||||
interpreter = lua.interpreter;
|
||||
# if libraries == []
|
||||
# then lua.interpreter
|
||||
# else (lua.withPackages (ps: libraries)).interpreter
|
||||
# This should support packages! I just cant figure out why some dependency collision happens whenever I try to run this.
|
||||
check = (writeDash "luacheck.sh" ''
|
||||
exec ${buildLuaPackages.luacheck}/bin/luacheck "$1"
|
||||
'');
|
||||
} name;
|
||||
makeLuaWriter = lua: luaPackages: buildLuaPackages: name: { libraries ? [], ... } @ args:
|
||||
makeScriptWriter (
|
||||
(builtins.removeAttrs args ["libraries"])
|
||||
// {
|
||||
interpreter = lua.interpreter;
|
||||
# if libraries == []
|
||||
# then lua.interpreter
|
||||
# else (lua.withPackages (ps: libraries)).interpreter
|
||||
# This should support packages! I just cant figure out why some dependency collision happens whenever I try to run this.
|
||||
check = (writeDash "luacheck.sh" ''
|
||||
exec ${buildLuaPackages.luacheck}/bin/luacheck "$1"
|
||||
'');
|
||||
}
|
||||
) name;
|
||||
|
||||
# writeLua takes a name an attributeset with libraries and some lua source code and
|
||||
# returns an executable (should also work with luajit)
|
||||
|
@ -265,9 +462,10 @@ rec {
|
|||
writeLua "/bin/${name}";
|
||||
|
||||
writeRust = name: {
|
||||
rustc ? pkgs.rustc,
|
||||
rustcArgs ? [],
|
||||
strip ? true
|
||||
makeWrapperArgs ? [],
|
||||
rustc ? pkgs.rustc,
|
||||
rustcArgs ? [],
|
||||
strip ? true,
|
||||
}:
|
||||
let
|
||||
darwinArgs = lib.optionals stdenv.isDarwin [ "-L${lib.getLib libiconv}/lib" ];
|
||||
|
@ -277,7 +475,7 @@ rec {
|
|||
cp "$contentPath" tmp.rs
|
||||
PATH=${lib.makeBinPath [pkgs.gcc]} ${rustc}/bin/rustc ${lib.escapeShellArgs rustcArgs} ${lib.escapeShellArgs darwinArgs} -o "$out" tmp.rs
|
||||
'';
|
||||
inherit strip;
|
||||
inherit makeWrapperArgs strip;
|
||||
} name;
|
||||
|
||||
writeRustBin = name:
|
||||
|
@ -337,10 +535,13 @@ rec {
|
|||
# use boolean;
|
||||
# print "Howdy!\n" if true;
|
||||
# ''
|
||||
writePerl = name: { libraries ? [] }:
|
||||
makeScriptWriter {
|
||||
interpreter = "${lib.getExe (pkgs.perl.withPackages (p: libraries))}";
|
||||
} name;
|
||||
writePerl = name: { libraries ? [], ... } @ args:
|
||||
makeScriptWriter (
|
||||
(builtins.removeAttrs args ["libraries"])
|
||||
// {
|
||||
interpreter = "${lib.getExe (pkgs.perl.withPackages (p: libraries))}";
|
||||
}
|
||||
) name;
|
||||
|
||||
# writePerlBin takes the same arguments as writePerl but outputs a directory (like writeScriptBin)
|
||||
writePerlBin = name:
|
||||
|
@ -349,22 +550,27 @@ rec {
|
|||
# makePythonWriter takes python and compatible pythonPackages and produces python script writer,
|
||||
# which validates the script with flake8 at build time. If any libraries are specified,
|
||||
# python.withPackages is used as interpreter, otherwise the "bare" python is used.
|
||||
makePythonWriter = python: pythonPackages: buildPythonPackages: name: { libraries ? [], flakeIgnore ? [] }:
|
||||
makePythonWriter = python: pythonPackages: buildPythonPackages: name: { libraries ? [], flakeIgnore ? [], ... } @ args:
|
||||
let
|
||||
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}";
|
||||
in
|
||||
makeScriptWriter {
|
||||
interpreter =
|
||||
if pythonPackages != pkgs.pypy2Packages || pythonPackages != pkgs.pypy3Packages then
|
||||
if libraries == []
|
||||
then python.interpreter
|
||||
else (python.withPackages (ps: libraries)).interpreter
|
||||
else python.interpreter
|
||||
;
|
||||
check = optionalString python.isPy3k (writeDash "pythoncheck.sh" ''
|
||||
exec ${buildPythonPackages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1"
|
||||
'');
|
||||
} name;
|
||||
makeScriptWriter
|
||||
(
|
||||
(builtins.removeAttrs args ["libraries" "flakeIgnore"])
|
||||
// {
|
||||
interpreter =
|
||||
if pythonPackages != pkgs.pypy2Packages || pythonPackages != pkgs.pypy3Packages then
|
||||
if libraries == []
|
||||
then python.interpreter
|
||||
else (python.withPackages (ps: libraries)).interpreter
|
||||
else python.interpreter
|
||||
;
|
||||
check = optionalString python.isPy3k (writeDash "pythoncheck.sh" ''
|
||||
exec ${buildPythonPackages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1"
|
||||
'');
|
||||
}
|
||||
)
|
||||
name;
|
||||
|
||||
# writePyPy2 takes a name an attributeset with libraries and some pypy2 sourcecode and
|
||||
# returns an executable
|
||||
|
@ -421,7 +627,7 @@ rec {
|
|||
writePyPy3 "/bin/${name}";
|
||||
|
||||
|
||||
makeFSharpWriter = { dotnet-sdk ? pkgs.dotnet-sdk, fsi-flags ? "", libraries ? _: [] }: nameOrPath:
|
||||
makeFSharpWriter = { dotnet-sdk ? pkgs.dotnet-sdk, fsi-flags ? "", libraries ? _: [], ... } @ args: nameOrPath:
|
||||
let
|
||||
fname = last (builtins.split "/" nameOrPath);
|
||||
path = if strings.hasSuffix ".fsx" nameOrPath then nameOrPath else "${nameOrPath}.fsx";
|
||||
|
@ -442,9 +648,12 @@ rec {
|
|||
${lib.getExe dotnet-sdk} fsi --quiet --nologo --readline- ${fsi-flags} "$@" < "$script"
|
||||
'';
|
||||
|
||||
in content: makeScriptWriter {
|
||||
interpreter = fsi;
|
||||
} path
|
||||
in content: makeScriptWriter (
|
||||
(builtins.removeAttrs args ["dotnet-sdk" "fsi-flags" "libraries"])
|
||||
// {
|
||||
interpreter = fsi;
|
||||
}
|
||||
) path
|
||||
''
|
||||
#i "nuget: ${nuget-source}/lib"
|
||||
${ content }
|
||||
|
@ -456,5 +665,4 @@ rec {
|
|||
|
||||
writeFSharpBin = name:
|
||||
writeFSharp "/bin/${name}";
|
||||
|
||||
}
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
{ glib
|
||||
, haskellPackages
|
||||
{ haskellPackages
|
||||
, lib
|
||||
, nodePackages
|
||||
, perlPackages
|
||||
, pypy2Packages
|
||||
, python3Packages
|
||||
, pypy3Packages
|
||||
, luaPackages
|
||||
, rubyPackages
|
||||
, runCommand
|
||||
, testers
|
||||
, writers
|
||||
|
@ -16,8 +11,38 @@
|
|||
|
||||
# If you are reading this, you can test these writers by running: nix-build . -A tests.writers
|
||||
|
||||
with writers;
|
||||
let
|
||||
inherit (lib) getExe recurseIntoAttrs;
|
||||
|
||||
inherit (writers)
|
||||
makeFSharpWriter
|
||||
writeBash
|
||||
writeBashBin
|
||||
writeDash
|
||||
writeDashBin
|
||||
writeFish
|
||||
writeFishBin
|
||||
writeFSharp
|
||||
writeHaskell
|
||||
writeHaskellBin
|
||||
writeJS
|
||||
writeJSBin
|
||||
writeJSON
|
||||
writeLua
|
||||
writeNu
|
||||
writePerl
|
||||
writePerlBin
|
||||
writePyPy3
|
||||
writePython3
|
||||
writePython3Bin
|
||||
writeRuby
|
||||
writeRust
|
||||
writeRustBin
|
||||
writeText
|
||||
writeTOML
|
||||
writeYAML
|
||||
;
|
||||
|
||||
expectSuccess = test:
|
||||
runCommand "run-${test.name}" {} ''
|
||||
if [[ "$(${test})" != success ]]; then
|
||||
|
@ -30,7 +55,7 @@ let
|
|||
|
||||
expectSuccessBin = test:
|
||||
runCommand "run-${test.name}" {} ''
|
||||
if [[ "$(${lib.getExe test})" != success ]]; then
|
||||
if [[ "$(${getExe test})" != success ]]; then
|
||||
echo 'test ${test.name} failed'
|
||||
exit 1
|
||||
fi
|
||||
|
@ -44,8 +69,8 @@ let
|
|||
in
|
||||
testers.testEqualContents { expected = expectedFile; actual = file; assertion = "${file.name} matches"; };
|
||||
in
|
||||
lib.recurseIntoAttrs {
|
||||
bin = lib.recurseIntoAttrs {
|
||||
recurseIntoAttrs {
|
||||
bin = recurseIntoAttrs {
|
||||
bash = expectSuccessBin (writeBashBin "test-writers-bash-bin" ''
|
||||
if [[ "test" == "test" ]]; then echo "success"; fi
|
||||
'');
|
||||
|
@ -145,7 +170,7 @@ lib.recurseIntoAttrs {
|
|||
#'');
|
||||
};
|
||||
|
||||
simple = lib.recurseIntoAttrs {
|
||||
simple = recurseIntoAttrs {
|
||||
bash = expectSuccess (writeBash "test-writers-bash" ''
|
||||
if [[ "test" == "test" ]]; then echo "success"; fi
|
||||
'');
|
||||
|
@ -270,7 +295,7 @@ lib.recurseIntoAttrs {
|
|||
'');
|
||||
};
|
||||
|
||||
path = lib.recurseIntoAttrs {
|
||||
path = recurseIntoAttrs {
|
||||
bash = expectSuccess (writeBash "test-writers-bash-path" (writeText "test" ''
|
||||
if [[ "test" == "test" ]]; then echo "success"; fi
|
||||
''));
|
||||
|
@ -310,4 +335,85 @@ lib.recurseIntoAttrs {
|
|||
expected = "hello: world\n";
|
||||
};
|
||||
};
|
||||
|
||||
wrapping = recurseIntoAttrs {
|
||||
bash-bin = expectSuccessBin (
|
||||
writeBashBin "test-writers-wrapping-bash-bin"
|
||||
{
|
||||
makeWrapperArgs = [
|
||||
"--set"
|
||||
"ThaigerSprint"
|
||||
"Thailand"
|
||||
];
|
||||
}
|
||||
''
|
||||
if [[ "$ThaigerSprint" == "Thailand" ]]; then
|
||||
echo "success"
|
||||
fi
|
||||
''
|
||||
);
|
||||
|
||||
bash = expectSuccess (
|
||||
writeBash "test-writers-wrapping-bash"
|
||||
{
|
||||
makeWrapperArgs = [
|
||||
"--set"
|
||||
"ThaigerSprint"
|
||||
"Thailand"
|
||||
];
|
||||
}
|
||||
''
|
||||
if [[ "$ThaigerSprint" == "Thailand" ]]; then
|
||||
echo "success"
|
||||
fi
|
||||
''
|
||||
);
|
||||
|
||||
python = expectSuccess (
|
||||
writePython3 "test-writers-wrapping-python"
|
||||
{
|
||||
makeWrapperArgs = [
|
||||
"--set"
|
||||
"ThaigerSprint"
|
||||
"Thailand"
|
||||
];
|
||||
}
|
||||
''
|
||||
import os
|
||||
|
||||
if os.environ.get("ThaigerSprint") == "Thailand":
|
||||
print("success")
|
||||
''
|
||||
);
|
||||
|
||||
rust = expectSuccess (
|
||||
writeRust "test-writers-wrapping-rust"
|
||||
{
|
||||
makeWrapperArgs = [
|
||||
"--set"
|
||||
"ThaigerSprint"
|
||||
"Thailand"
|
||||
];
|
||||
}
|
||||
''
|
||||
fn main(){
|
||||
if std::env::var("ThaigerSprint").unwrap() == "Thailand" {
|
||||
println!("success")
|
||||
}
|
||||
}
|
||||
''
|
||||
);
|
||||
|
||||
no-empty-wrapper = let
|
||||
bin = writeBashBin "bin" { makeWrapperArgs = []; } ''true'';
|
||||
in runCommand "run-test-writers-wrapping-no-empty-wrapper" {} ''
|
||||
ls -A ${bin}/bin
|
||||
if [ $(ls -A ${bin}/bin | wc -l) -eq 1 ]; then
|
||||
touch $out
|
||||
else
|
||||
echo "Error: Empty wrapper was created" >&2
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -52,6 +52,8 @@ rustPlatform.buildRustPackage rec {
|
|||
"--skip=pager_more"
|
||||
"--skip=pager_most"
|
||||
"--skip=pager_overwrite"
|
||||
# Fails if the filesystem performs UTF-8 validation (such as ZFS with utf8only=on)
|
||||
"--skip=file_with_invalid_utf8_filename"
|
||||
];
|
||||
|
||||
doInstallCheck = true;
|
||||
|
|
|
@ -5,27 +5,27 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "bee";
|
||||
version = "1.18.2";
|
||||
version = "2.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ethersphere";
|
||||
repo = "bee";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-LUOKF1073GmQWG2q4w0cTErSHw7ok5N6PQZ45xpjYx4=";
|
||||
sha256 = "sha256-gZDmFufk/zBftQe7Ju4rDpZqw0hm2nf9YQg1Oa8540s=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-UdsF/otjXqS1NY3PkCimRiD93hGntHG3Xhw6avFtHog=";
|
||||
vendorHash = "sha256-GpazHMQ8xZ6P7mADvsG3bXxDxEWnCJRIsBwDnL/McZA=";
|
||||
|
||||
subPackages = [ "cmd/bee" ];
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X github.com/ethersphere/bee.version=${version}"
|
||||
"-X github.com/ethersphere/bee/pkg/api.Version=5.2.0"
|
||||
"-X github.com/ethersphere/bee/pkg/api.DebugVersion=4.1.0"
|
||||
"-X github.com/ethersphere/bee/pkg/p2p/libp2p.reachabilityOverridePublic=false"
|
||||
"-X github.com/ethersphere/bee/pkg/postage/listener.batchFactorOverridePublic=5"
|
||||
"-X github.com/ethersphere/bee/v2.version=${version}"
|
||||
"-X github.com/ethersphere/bee/v2/pkg/api.Version=5.2.0"
|
||||
"-X github.com/ethersphere/bee/v2/pkg/api.DebugVersion=4.1.1"
|
||||
"-X github.com/ethersphere/bee/v2/pkg/p2p/libp2p.reachabilityOverridePublic=false"
|
||||
"-X github.com/ethersphere/bee/v2/pkg/postage/listener.batchFactorOverridePublic=5"
|
||||
];
|
||||
|
||||
CGO_ENABLED = 0;
|
|
@ -9,16 +9,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "boxbuddy";
|
||||
version = "2.1.5";
|
||||
version = "2.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Dvlv";
|
||||
repo = "BoxBuddyRS";
|
||||
rev = version;
|
||||
hash = "sha256-XMLgUYOv2ObHqYxqPch5i0Q1/BvfDuC1Lti5FYAVmnk=";
|
||||
hash = "sha256-Fb3Df+P2ovSVQhtDxhed/hH06UKnJY/iugt3Pi9/Jp0=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-zbhdGpF3TonGlvRXCWF00PhIc0k1ZO2xIMXuwYD90mY=";
|
||||
cargoHash = "sha256-dmBQdE4rsL8ygXOGupjtZrWuXjVAy5m1p/xJlUdUwkY=";
|
||||
|
||||
# The software assumes it is installed either in flatpak or in the home directory
|
||||
# so the xdg data path needs to be patched here
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
{ buildGoModule, fetchFromSourcehut, lib }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "go-bare";
|
||||
version = "0-unstable-2021-04-06";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~sircmpwn";
|
||||
repo = "go-bare";
|
||||
rev = "ab86bc2846d997bc8760fdb0d06d4a55e746b1db";
|
||||
hash = "sha256-SKTYDKidB1Ia3Jg4EBg5rPAtqlXAa19RY5qieS82A34=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-OhJb/q1XJ/U/AvCcCXw2Ll86UKlkHGuURHS5J6aXNTs=";
|
||||
|
||||
subPackages = [ "cmd/gen" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "An implementation of the BARE message format for Go";
|
||||
mainProgram = "gen";
|
||||
homepage = "https://git.sr.ht/~sircmpwn/go-bare";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ poptart ];
|
||||
};
|
||||
}
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "lxgw-neoxihei";
|
||||
version = "1.120.1";
|
||||
version = "1.120.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf";
|
||||
hash = "sha256-shzJ5y2mjvodtSHct9gm+09CludxUpR38qi9zvewjaQ=";
|
||||
hash = "sha256-RN0OmNS3aSRMK19nNiqXYJ4PIAQh6u5W/+L8DCeqMcE=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
|
@ -5,12 +5,12 @@
|
|||
|
||||
appimageTools.wrapType2 rec {
|
||||
pname = "miru";
|
||||
version = "5.0.0";
|
||||
version = "5.0.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ThaUnknown/miru/releases/download/v${version}/linux-Miru-${version}.AppImage";
|
||||
name = "${pname}-${version}.AppImage";
|
||||
sha256 = "sha256-Gp3pP973+peSr0pfUDqKQWZFiY4jdOp4tsn1336wcwY=";
|
||||
sha256 = "sha256-vKV1Scd+YiJMIV8EWx4udoOxTXW9NA7k/CxRVNRqrjk=";
|
||||
};
|
||||
|
||||
extraInstallCommands =
|
||||
|
@ -29,7 +29,7 @@ appimageTools.wrapType2 rec {
|
|||
|
||||
meta = with lib; {
|
||||
description = "Stream anime torrents, real-time with no waiting for downloads";
|
||||
homepage = "https://github.com/ThaUnknown/miru#readme";
|
||||
homepage = "https://miru.watch";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = [ maintainers.d4ilyrun ];
|
||||
mainProgram = "miru";
|
||||
|
|
|
@ -1,12 +1,33 @@
|
|||
{
|
||||
"depends": [
|
||||
{
|
||||
"method": "fetchzip",
|
||||
"packages": [
|
||||
"atlas"
|
||||
],
|
||||
"path": "/nix/store/v015scfifr10ialyimn7xxm0rdg4dha2-source",
|
||||
"rev": "60681b93af4c8914afbd8eae9fc9820ba4d198a0",
|
||||
"sha256": "1kc47w20ipbdh31s1gcblcikzlvlagmmha1qw3by70fc7mgazrxf",
|
||||
"srcDir": "src",
|
||||
"url": "https://github.com/nim-lang/atlas/archive/60681b93af4c8914afbd8eae9fc9820ba4d198a0.tar.gz"
|
||||
},
|
||||
{
|
||||
"method": "fetchzip",
|
||||
"packages": [
|
||||
"bigints"
|
||||
],
|
||||
"path": "/nix/store/jvrm392g8adfsgf36prgwkbyd7vh5jsw-source",
|
||||
"rev": "86ea14d31eea9275e1408ca34e6bfe9c99989a96",
|
||||
"sha256": "15pcpmnk1bnw3k8769rjzcpg00nahyrypwbxs88jnwr4aczp99j4",
|
||||
"srcDir": "src",
|
||||
"url": "https://github.com/ehmry/nim-bigints/archive/86ea14d31eea9275e1408ca34e6bfe9c99989a96.tar.gz"
|
||||
},
|
||||
{
|
||||
"method": "fetchzip",
|
||||
"packages": [
|
||||
"npeg"
|
||||
],
|
||||
"path": "/nix/store/ffkxmjmigfs7zhhiiqm0iw2c34smyciy-source",
|
||||
"ref": "1.2.1",
|
||||
"rev": "26d62fdc40feb84c6533956dc11d5ee9ea9b6c09",
|
||||
"sha256": "0xpzifjkfp49w76qmaylan8q181bs45anmp46l4bwr3lkrr7bpwh",
|
||||
"srcDir": "src",
|
||||
|
@ -17,12 +38,11 @@
|
|||
"packages": [
|
||||
"preserves"
|
||||
],
|
||||
"path": "/nix/store/nrcpzf9hx70kry3gwhrdzcs3qicjncjh-source",
|
||||
"ref": "20231021",
|
||||
"rev": "edece399be70818208bf2263c30cb2bcf435bbff",
|
||||
"sha256": "0xmw35wmw3a4lja9q4qvlvpxv3xk0hnkjg4fwfw6f3inh6zfiqki",
|
||||
"path": "/nix/store/6nnn5di5vip1vladlb7z56rbw18d1y7j-source",
|
||||
"rev": "2825bceecf33a15b9b7942db5331a32cbc39b281",
|
||||
"sha256": "145vf46fy3wc52j6vs509fm9bi5lx7c53gskbkpcfbkv82l86dgk",
|
||||
"srcDir": "src",
|
||||
"url": "https://git.syndicate-lang.org/ehmry/preserves-nim/archive/edece399be70818208bf2263c30cb2bcf435bbff.tar.gz"
|
||||
"url": "https://git.syndicate-lang.org/ehmry/preserves-nim/archive/2825bceecf33a15b9b7942db5331a32cbc39b281.tar.gz"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -8,25 +8,28 @@
|
|||
, makeWrapper
|
||||
}:
|
||||
|
||||
buildNimPackage (finalAttrs: {
|
||||
let nim' = nim.passthru.nim;
|
||||
in buildNimPackage (finalAttrs: {
|
||||
pname = "nim_lk";
|
||||
version = "20231031";
|
||||
version = "20240210";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~ehmry";
|
||||
repo = "nim_lk";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-dXm3dfXAxgucek19f1KdRShOsJyELPTB32qgGSKId6A=";
|
||||
hash = "sha256-LLOf8HNee0Mol+e7/dvu9hQUCmpaVBNggTxaAl/wV6Y=";
|
||||
};
|
||||
|
||||
lockFile = ./lock.json;
|
||||
|
||||
buildInputs = [ openssl ];
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
lockFile = ./lock.json;
|
||||
nimFlags = [ "--path:${nim'}/nim" ];
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/nim_lk \
|
||||
--suffix PATH : ${lib.makeBinPath [ nim nix-prefetch nix-prefetch-git ]}
|
||||
--suffix PATH : ${lib.makeBinPath [ nim' nix-prefetch nix-prefetch-git ]}
|
||||
'';
|
||||
|
||||
meta = finalAttrs.src.meta // {
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
{ lib
|
||||
, stdenvNoCC
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "nuclei-templates";
|
||||
version = "9.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "projectdiscovery";
|
||||
repo = "nuclei-templates";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-1aLy8wNWMFouZRjhCSiwSq1uo20C9wN7LPxyBqK6K0k=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/nuclei-templates
|
||||
cp -R cloud code config dns file headless helpers http javascript network ssl \
|
||||
$out/share/nuclei-templates/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Templates for the nuclei engine to find security vulnerabilities";
|
||||
homepage = "https://github.com/projectdiscovery/nuclei-templates";
|
||||
changelog = "https://github.com/projectdiscovery/nuclei-templates/releases/tag/v${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ fab ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, python3
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "offat";
|
||||
version = "0.16.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OWASP";
|
||||
repo = "OFFAT";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-ald+hanICvY0jTgL7GtIMiArLWazykaJAJSfzPKE4/I=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/src";
|
||||
|
||||
build-system = with python3.pkgs; [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
dependencies = with python3.pkgs; [
|
||||
aiohttp
|
||||
aiolimiter
|
||||
fastapi
|
||||
openapi-spec-validator
|
||||
requests
|
||||
rich
|
||||
setuptools
|
||||
tenacity
|
||||
];
|
||||
|
||||
passthru.optional-dependencies = {
|
||||
api = with python3.pkgs; [
|
||||
fastapi
|
||||
uvicorn
|
||||
redis
|
||||
rq
|
||||
python-dotenv
|
||||
];
|
||||
};
|
||||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [
|
||||
"offat"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tool to test APIs for prevalent vulnerabilities";
|
||||
homepage = "https://github.com/OWASP/OFFAT/";
|
||||
changelog = "https://github.com/OWASP/OFFAT/releases/tag/v${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ fab ];
|
||||
mainProgram = "offat";
|
||||
};
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkg-config
|
||||
, libdrm
|
||||
, libva
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "onevpl-intel-gpu";
|
||||
version = "23.4.3";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "oneapi-src";
|
||||
repo = "oneVPL-intel-gpu";
|
||||
rev = "intel-onevpl-${version}";
|
||||
sha256 = "sha256-oDwDMUq6JpRJH5nbANb7TJLW7HRYA9y0xZxEsoepx/U=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
buildInputs = [ libdrm libva ];
|
||||
|
||||
meta = {
|
||||
description = "oneAPI Video Processing Library Intel GPU implementation";
|
||||
homepage = "https://github.com/oneapi-src/oneVPL-intel-gpu";
|
||||
changelog = "https://github.com/oneapi-src/oneVPL-intel-gpu/releases/tag/${src.rev}";
|
||||
license = [ lib.licenses.mit ];
|
||||
platforms = lib.platforms.linux;
|
||||
# CMake adds x86 specific compiler flags in <source>/builder/FindGlobals.cmake
|
||||
# NOTE: https://github.com/oneapi-src/oneVPL-intel-gpu/issues/303
|
||||
broken = !stdenv.hostPlatform.isx86;
|
||||
maintainers = [ lib.maintainers.evanrichter ];
|
||||
};
|
||||
}
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "simdutf";
|
||||
version = "5.0.0";
|
||||
version = "5.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "simdutf";
|
||||
repo = "simdutf";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-ZCpLSMmgZSLAlVKzXFsaENnZwQAeKbNfKkj241PM26c=";
|
||||
hash = "sha256-4yo962iiwSPW1JeQq5mLse5DJUub7AWqMDA+AdpsRBo=";
|
||||
};
|
||||
|
||||
# Fix build on darwin
|
||||
|
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "uxn";
|
||||
version = "unstable-2024-03-18";
|
||||
version = "unstable-2024-03-30";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~rabbits";
|
||||
repo = "uxn";
|
||||
rev = "250aecc920a6f12d2d5479a5230a31630dac2a1e";
|
||||
hash = "sha256-nhKlcuhXkrhecRwVIuSf+jOmFbX0NMhmmc5pj6MCNdQ=";
|
||||
rev = "fc6ec0b387723940868133fade8854ad37648881";
|
||||
hash = "sha256-Ver8oI3IzxwF6KeZ85d3mmiCwARVoH+RZoFNCxhGFDc=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "projects" ];
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "volk";
|
||||
version = "1.3.275.0";
|
||||
version = "1.3.280.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zeux";
|
||||
repo = "volk";
|
||||
rev = "vulkan-sdk-${finalAttrs.version}";
|
||||
hash = "sha256-uTjLgJMGN8nOVhVIl/GNhO2jXe9ebhc9vzAwCDwfuf4=";
|
||||
hash = "sha256-e4TLGRqn0taYeiRVxc9WevURjO5dsVq3RpOwZBGDknQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "waf";
|
||||
version = "2.0.26";
|
||||
version = "2.0.27";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "ita1024";
|
||||
repo = "waf";
|
||||
rev = "waf-${finalAttrs.version}";
|
||||
hash = "sha256-AXDMWlwivJ0Xot6iwuIIlbV2Anz6ieghyOI9jA4yrko=";
|
||||
hash = "sha256-GeEoD5CHubwR4ndGk7J7czEf0hWtPQr88TqJDPqeK0s=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -38,6 +38,7 @@ buildGoModule {
|
|||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm644 geosite.db $out/share/sing-box/geosite.db
|
||||
install -Dm644 rule-set/* -t $out/share/sing-box/rule-set
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
|
|
@ -16,4 +16,37 @@ func main() {
|
|||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
ruleSetOutput := "rule-set"
|
||||
err = os.MkdirAll(ruleSetOutput, 0o755)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
for code, domains := range domainMap {
|
||||
var headlessRule option.DefaultHeadlessRule
|
||||
defaultRule := geosite.Compile(domains)
|
||||
headlessRule.Domain = defaultRule.Domain
|
||||
headlessRule.DomainSuffix = defaultRule.DomainSuffix
|
||||
headlessRule.DomainKeyword = defaultRule.DomainKeyword
|
||||
headlessRule.DomainRegex = defaultRule.DomainRegex
|
||||
var plainRuleSet option.PlainRuleSet
|
||||
plainRuleSet.Rules = []option.HeadlessRule{
|
||||
{
|
||||
Type: C.RuleTypeDefault,
|
||||
DefaultOptions: headlessRule,
|
||||
},
|
||||
}
|
||||
srsPath, _ := filepath.Abs(filepath.Join(ruleSetOutput, "geosite-"+code+".srs"))
|
||||
os.Stderr.WriteString("write " + srsPath + "\n")
|
||||
outputRuleSet, err := os.Create(srsPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
err = srs.Write(outputRuleSet, plainRuleSet)
|
||||
if err != nil {
|
||||
outputRuleSet.Close()
|
||||
panic(err)
|
||||
}
|
||||
outputRuleSet.Close()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
let
|
||||
generator = pkgsBuildBuild.buildGoModule rec {
|
||||
pname = "v2ray-domain-list-community";
|
||||
version = "20240324094850";
|
||||
version = "20240402003241";
|
||||
src = fetchFromGitHub {
|
||||
owner = "v2fly";
|
||||
repo = "domain-list-community";
|
||||
rev = version;
|
||||
hash = "sha256-Fdb0Bk0dk0SkBmUdeBjMH8/++fDvw1GtiKCYXdVAfCc=";
|
||||
hash = "sha256-tIQqTvrQUGjLeZL1aQiqaViZSAysUfX+QlTkhH7N3Iw=";
|
||||
};
|
||||
vendorHash = "sha256-azvMUi8eLNoNofRa2X4SKTTiMd6aOyO6H/rOiKjkpIY=";
|
||||
meta = with lib; {
|
||||
|
|
|
@ -26,13 +26,13 @@ lib.checkListOfEnum "${pname}: theme tweaks" validTweaks tweaks
|
|||
stdenvNoCC.mkDerivation
|
||||
rec {
|
||||
inherit pname;
|
||||
version = "2023-10-20";
|
||||
version = "2024-04-01";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
repo = "Orchis-theme";
|
||||
owner = "vinceliuice";
|
||||
rev = version;
|
||||
hash = "sha256-GhSzTtbuvbAuXxKNm29sJX5kXE2s2jMDB6Ww6Q7GNSo=";
|
||||
hash = "sha256-gszyUZGWlgrBTQnaz6Ws7jzfTN5KAfX5SjVwmVrP9QE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gtk3 sassc ];
|
||||
|
|
|
@ -33,6 +33,7 @@ buildPythonApplication rec {
|
|||
|
||||
pythonRelaxDeps = [
|
||||
"more-itertools"
|
||||
"packaging"
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -4,11 +4,22 @@
|
|||
otherRids,
|
||||
pkgs ? import ../../../.. {}
|
||||
}:
|
||||
with pkgs.lib;
|
||||
let
|
||||
inherit (pkgs) writeText;
|
||||
|
||||
inherit (pkgs.lib)
|
||||
concatMap
|
||||
concatMapStringsSep
|
||||
generators
|
||||
optionals
|
||||
replaceStrings
|
||||
sortOn
|
||||
strings
|
||||
unique
|
||||
;
|
||||
|
||||
fns = map (file: import file) list;
|
||||
|
||||
packages = unique
|
||||
(concatMap (fn: fn { fetchNuGet = package: package; }) fns);
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, enableMultilib
|
||||
, targetConfig
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -196,6 +197,13 @@ originalAttrs: (stdenv.mkDerivation (finalAttrs: originalAttrs // {
|
|||
mkdir -p "$out/''${targetConfig}/lib"
|
||||
mkdir -p "''${!outputLib}/''${targetConfig}/lib"
|
||||
'' +
|
||||
# if cross-compiling, link from $lib/lib to $lib/${targetConfig}.
|
||||
# since native-compiles have $lib/lib as a directory (not a
|
||||
# symlink), this ensures that in every case we can assume that
|
||||
# $lib/lib contains the .so files
|
||||
lib.optionalString (with stdenv; targetPlatform.config != hostPlatform.config) ''
|
||||
ln -Ts "''${!outputLib}/''${targetConfig}/lib" $lib/lib
|
||||
'' +
|
||||
# Make `lib64` symlinks to `lib`.
|
||||
lib.optionalString (!enableMultilib && stdenv.hostPlatform.is64bit && !stdenv.hostPlatform.isMips64n32) ''
|
||||
ln -s lib "$out/''${targetConfig}/lib64"
|
||||
|
|
|
@ -83,10 +83,6 @@ in
|
|||
lib.optionalString (!langC) ''
|
||||
rm -f $out/lib/libgcc_s.so*
|
||||
''
|
||||
+ lib.optionalString (hostPlatform != targetPlatform) ''
|
||||
mkdir -p $lib/lib/
|
||||
ln -s ${targetPlatformSlash}lib $lib/lib
|
||||
''
|
||||
|
||||
# TODO(amjoseph): remove the `libgcc_s.so` symlinks below and replace them
|
||||
# with a `-L${gccForLibs.libgcc}/lib` in cc-wrapper's
|
||||
|
|
|
@ -103,6 +103,7 @@ let inherit version;
|
|||
disableBootstrap = atLeast11 && !stdenv.hostPlatform.isDarwin && (atLeast12 -> !profiledCompiler);
|
||||
|
||||
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
|
||||
targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
|
||||
|
||||
patches = callFile ./patches {};
|
||||
|
||||
|
@ -124,6 +125,7 @@ let inherit version;
|
|||
buildPlatform
|
||||
hostPlatform
|
||||
targetPlatform
|
||||
targetConfig
|
||||
patches
|
||||
crossMingw
|
||||
stageNameAddon
|
||||
|
@ -329,7 +331,7 @@ lib.pipe ((callFile ./common/builder.nix {}) ({
|
|||
++ optional (is7 && targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419"
|
||||
++ optional (is7 && targetPlatform.isNetBSD) "--disable-libcilkrts";
|
||||
|
||||
targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
|
||||
inherit targetConfig;
|
||||
|
||||
buildFlags =
|
||||
# we do not yet have Nix-driven profiling
|
||||
|
|
|
@ -1,11 +1,52 @@
|
|||
{ pkgs, lib, callPackage, ... }:
|
||||
|
||||
with pkgs.gerbil-support; {
|
||||
let
|
||||
inherit (builtins) filterSource;
|
||||
|
||||
pppToName = ppp: lib.removeSuffix ".nix" (baseNameOf ppp); # from pre-package path to name
|
||||
inherit (lib)
|
||||
commitIdFromGitRepo
|
||||
concatStringsSep
|
||||
elem
|
||||
elemAt
|
||||
hasSuffix
|
||||
listToAttrs
|
||||
mapAttrs
|
||||
optionalString
|
||||
pathExists
|
||||
readFile
|
||||
removeSuffix
|
||||
substring
|
||||
traceSeqN
|
||||
;
|
||||
|
||||
inherit (lib.strings) match;
|
||||
|
||||
# Implicitly calls through to this file, similar to `let .. in` or `rec`.
|
||||
inherit (pkgs.gerbil-support)
|
||||
callPpp
|
||||
gerbilLoadPath
|
||||
gerbilPackage
|
||||
gerbilPackages-unstable
|
||||
gerbilSkippableFiles
|
||||
gerbilSourceFilter
|
||||
overrideSrcIfShaDiff
|
||||
ppaToPl
|
||||
pppToKV
|
||||
pppToName
|
||||
ppplToPpa
|
||||
prePackage-defaults
|
||||
prePackages-unstable
|
||||
resolve-pre-src
|
||||
sha256-of-pre-src
|
||||
view
|
||||
;
|
||||
in
|
||||
|
||||
{
|
||||
pppToName = ppp: removeSuffix ".nix" (baseNameOf ppp); # from pre-package path to name
|
||||
callPpp = ppp: callPackage ppp prePackage-defaults; # from pre-package path to pre-package
|
||||
pppToKV = ppp: { name = pppToName ppp; value = callPpp ppp; }; # from pre-package path to name
|
||||
ppplToPpa = ppps: builtins.listToAttrs (map pppToKV ppps); # from pre-package path list to name/pre-package attr
|
||||
ppplToPpa = ppps: listToAttrs (map pppToKV ppps); # from pre-package path list to name/pre-package attr
|
||||
|
||||
prePackages-unstable =
|
||||
ppplToPpa
|
||||
|
@ -32,37 +73,37 @@ with pkgs.gerbil-support; {
|
|||
softwareName = "";
|
||||
};
|
||||
|
||||
ppaToPl = builtins.mapAttrs (_: gerbilPackage);
|
||||
ppaToPl = mapAttrs (_: gerbilPackage);
|
||||
gerbilPackages-unstable = ppaToPl prePackages-unstable;
|
||||
|
||||
resolve-pre-src = pre-src: pre-src.fun (removeAttrs pre-src ["fun"]);
|
||||
|
||||
gerbilVersionFromGit = srcDir: version-path:
|
||||
let version-file = "${srcDir}/${version-path}.ss"; in
|
||||
if builtins.pathExists version-file then
|
||||
if pathExists version-file then
|
||||
let m =
|
||||
builtins.match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n"
|
||||
(builtins.readFile version-file); in
|
||||
{ version = "${builtins.elemAt m 2}-git"; git-version = builtins.elemAt m 1; }
|
||||
match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n"
|
||||
(readFile version-file); in
|
||||
{ version = "${elemAt m 2}-git"; git-version = elemAt m 1; }
|
||||
else { version = "0.0-git";
|
||||
git-version = let gitpath = "${srcDir}/.git"; in
|
||||
if builtins.pathExists gitpath then lib.commitIdFromGitRepo gitpath else "0"; };
|
||||
if pathExists gitpath then commitIdFromGitRepo gitpath else "0"; };
|
||||
|
||||
gerbilSkippableFiles = [".git" ".build" ".build_outputs" "run" "result" "dep" "BLAH" "tmp.nix"];
|
||||
|
||||
gerbilSourceFilter = path: type:
|
||||
let baseName = baseNameOf path; in
|
||||
! (builtins.elem baseName gerbilSkippableFiles || lib.hasSuffix "~" baseName);
|
||||
! (elem baseName gerbilSkippableFiles || hasSuffix "~" baseName);
|
||||
|
||||
gerbilFilterSource = builtins.filterSource gerbilSourceFilter;
|
||||
gerbilFilterSource = filterSource gerbilSourceFilter;
|
||||
|
||||
# Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH.
|
||||
gerbilLoadPath =
|
||||
gerbilInputs: builtins.concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs);
|
||||
gerbilInputs: concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs);
|
||||
|
||||
path-src = path: { fun = _: path; };
|
||||
|
||||
view = lib.debug.traceSeqN 4;
|
||||
view = traceSeqN 4;
|
||||
|
||||
sha256-of-pre-src = pre-src: if pre-src ? sha256 then pre-src.sha256 else "none";
|
||||
|
||||
|
@ -75,7 +116,7 @@ with pkgs.gerbil-support; {
|
|||
pre-src = new-pre-src;
|
||||
version = "override";
|
||||
git-version = if new-pre-src ? rev
|
||||
then lib.substring 0 7 new-pre-src.rev
|
||||
then substring 0 7 new-pre-src.rev
|
||||
else "unknown";};
|
||||
};
|
||||
|
||||
|
@ -102,10 +143,10 @@ with pkgs.gerbil-support; {
|
|||
|
||||
postPatch = ''
|
||||
set -e ;
|
||||
${lib.optionalString (version-path != "")
|
||||
''echo -e '(import :clan/versioning${builtins.concatStringsSep ""
|
||||
${optionalString (version-path != "")
|
||||
''echo -e '(import :clan/versioning${concatStringsSep ""
|
||||
(map (x: let px = x.passthru.pre-pkg; in
|
||||
lib.optionalString (px.version-path != "")
|
||||
optionalString (px.version-path != "")
|
||||
" :${px.gerbil-package}/${px.version-path}")
|
||||
gerbilInputs)
|
||||
})\n(register-software "${softwareName}" "v${git-version}")\n' > "${version-path}.ss"''}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, fetchpatch
|
||||
, pkg-config
|
||||
, swift
|
||||
, swiftpm
|
||||
|
@ -41,7 +42,11 @@ stdenv.mkDerivation {
|
|||
patch -p1 -d .build/checkouts/indexstore-db -i ${./patches/indexstore-db-macos-target.patch}
|
||||
|
||||
swiftpmMakeMutable swift-tools-support-core
|
||||
patch -p1 -d .build/checkouts/swift-tools-support-core -i ${./patches/force-unwrap-file-handles.patch}
|
||||
patch -p1 -d .build/checkouts/swift-tools-support-core -i ${fetchpatch {
|
||||
url = "https://github.com/apple/swift-tools-support-core/commit/990afca47e75cce136d2f59e464577e68a164035.patch";
|
||||
hash = "sha256-PLzWsp+syiUBHhEFS8+WyUcSae5p0Lhk7SSRdNvfouE=";
|
||||
includes = [ "Sources/TSCBasic/FileSystem.swift" ];
|
||||
}}
|
||||
|
||||
# This toggles a section specific to Xcode XCTest, which doesn't work on
|
||||
# Darwin, where we also use swift-corelibs-xctest.
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue