Compare commits
1170 Commits
23.1.12
...
codex/2025
| Author | SHA1 | Date | |
|---|---|---|---|
| 191488c081 | |||
| cc47614280 | |||
| 91cde60dba | |||
| 5dea757707 | |||
| f8833fca73 | |||
| 9cd99dbc88 | |||
| 14f67cb5ca | |||
|
|
4ce76fbd70 | ||
|
|
ca68803fb9 | ||
| fb97f10f64 | |||
| 6dbbc439b3 | |||
| 368fbfc7c8 | |||
| d6d5a8ca36 | |||
|
|
d65c25819f | ||
|
|
62c620efad | ||
| 07fe18af75 | |||
|
|
29d3676b38 | ||
| 0b9e1803d4 | |||
|
|
c45ad9710d | ||
| cf7ca2109f | |||
| 1531647e01 | |||
|
|
15aff17f03 | ||
|
|
42a5b79048 | ||
| a72c8ff33a | |||
| 19d9035214 | |||
| 7ca077c852 | |||
| 48604d81d6 | |||
|
|
405e68f895 | ||
| 6d62352127 | |||
| 017d82abc5 | |||
|
|
24ad4bf5b7 | ||
| 07264c594f | |||
|
|
7b58f660ac | ||
|
|
b000f2b0c4 | ||
| 4d548687e1 | |||
| 519d8398de | |||
| 2203bb3957 | |||
|
|
ddafdfe3c9 | ||
| a3f35b2d18 | |||
| 90020a4998 | |||
| 0f806c172d | |||
|
|
e8eb9b98b2 | ||
| 7e0a88cf8f | |||
| f72f57ebf0 | |||
| b5e56e2cbb | |||
|
|
179938132c | ||
|
|
bae84c176c | ||
| be8a6761af | |||
| c348f3625f | |||
| 094f19c99c | |||
| 5a23ae8f01 | |||
|
|
ee47821089 | ||
|
|
b834ce04f7 | ||
|
|
6a62d73d7f | ||
|
|
440842ed34 | ||
|
|
d0563e4a29 | ||
|
|
bc404bfbea | ||
| 923f881725 | |||
| ccc5903290 | |||
|
|
786efc48fa | ||
| 2a11a28422 | |||
| 812a27ea61 | |||
| e73e61f01b | |||
| 314679b4fc | |||
|
|
516b27384a | ||
|
|
9e1af3053d | ||
|
|
9e4f8741b3 | ||
| c0995c1b49 | |||
| c9f1e824c3 | |||
| 3d301daeb1 | |||
| 8b4198dc90 | |||
| 66461f9b1b | |||
| 80851d1efd | |||
|
|
c457c0f3ab | ||
| 9936e4bd76 | |||
| c3a45e2653 | |||
| 506360a027 | |||
|
|
00074ec3ff | ||
|
|
7c7daf89ea | ||
|
|
267c54aa56 | ||
|
|
d72409efc0 | ||
| 3d9e0477b0 | |||
| cfab48eee0 | |||
| 624920b2ab | |||
|
|
fd82f1e36c | ||
|
|
48ec8cd7a7 | ||
|
|
3a61bd2b72 | ||
| 895b0ad353 | |||
| 3c733ec7eb | |||
| 5321ad7bd7 | |||
| 196077bea9 | |||
|
|
75147c7dd6 | ||
| f28ad41f67 | |||
| 61b66d3114 | |||
| 282f760a4f | |||
| 4a9c9b4cb9 | |||
| 16311ee5b4 | |||
| 2fddfa82c0 | |||
| 8f5f44db2d | |||
| 8ad1f5c4d0 | |||
| ac0aa1fbc0 | |||
| e8c6794ff6 | |||
| 4de9a649f0 | |||
|
|
e7f115680e | ||
| f3b4551d0c | |||
| 64725c57dc | |||
| b32ee414e3 | |||
|
|
6ea7807718 | ||
| 6a776bd3dd | |||
| 6ffe581326 | |||
| 5d476e8eed | |||
|
|
bf84c67f08 | ||
| 9cb400dd3f | |||
| fce649619a | |||
| 8b0148e468 | |||
| 9cb27eb9dc | |||
| f1ed88a98e | |||
| ec35f1cb1e | |||
| dab8504cfd | |||
| 0f9a76e36f | |||
|
|
97244d5287 | ||
| 50ea9bea89 | |||
| 688469ad8b | |||
|
|
af32914d71 | ||
|
|
840bd85232 | ||
| c81ee240bf | |||
| e215fe0a2f | |||
| 38e340ac8d | |||
| c9383f955c | |||
| 8eeaea802a | |||
| d626731736 | |||
| e459cd99e7 | |||
| 3e4391adda | |||
| a6400943d2 | |||
| 5ec8e89641 | |||
|
|
115dac4fb4 | ||
|
|
405e2d5c77 | ||
| 535925aeaf | |||
|
|
7fa29ae3d6 | ||
|
|
b1a01b6717 | ||
|
|
b9d2ee01ed | ||
| e81938a04d | |||
| 3bbcb248ba | |||
| 17194755e6 | |||
| 45f95422ef | |||
| b8f0bb570e | |||
| a0d8069455 | |||
|
|
8b1eb0a582 | ||
|
|
9cb10250c5 | ||
| 2836ed19cf | |||
| 21eb5086a9 | |||
| 56f49ab314 | |||
| 5e1a2d0dd0 | |||
| 5fdd26bf80 | |||
| 0c93dd9ad8 | |||
| 9deb613b5b | |||
|
|
bf4031c238 | ||
| 087b33cc97 | |||
|
|
361657cdec | ||
| 4855e56f3c | |||
| c119d4c20b | |||
| 4815e8678b | |||
| 31a45fed19 | |||
| 5aae400c92 | |||
| 26e11047ce | |||
| 1f0826c7e7 | |||
| 9f71f3c8aa | |||
| 5d929c6466 | |||
| afc04db93a | |||
|
|
eca0321e21 | ||
| def3372b9a | |||
|
|
5aaa177756 | ||
| 31a6ea351d | |||
| 333995c7f4 | |||
| d6b24c27a1 | |||
| 89ae4003f9 | |||
| 7a008c3ae8 | |||
| a6f89e80bd | |||
| 3d987e491e | |||
| e1729fd925 | |||
| 4e5dae4161 | |||
| 6b30ebfddb | |||
|
|
0aafae5d97 | ||
| 32cc561d20 | |||
| 784fddea64 | |||
| 0a058aaf22 | |||
| ff6876a56d | |||
| ccbd29fc40 | |||
| 9251225d3e | |||
| 241eed66f5 | |||
| 6de8e92968 | |||
| 2cdda605ef | |||
| 87a4ec8ecf | |||
| 87613d10ec | |||
| f6dc193f6a | |||
| 4adbbdb47a | |||
| bdbe10f612 | |||
| 531488001f | |||
| 4f2b47d5c3 | |||
|
|
dfbdb89aca | ||
|
|
c9489ae50f | ||
| 9fdb4cdfb0 | |||
| f4da515120 | |||
| fae9665671 | |||
| d5e34d168b | |||
| e8b43d76dc | |||
| 4f9757ad2b | |||
| 611a3bfa72 | |||
| 10da4ea372 | |||
| 68525d5ae4 | |||
|
|
7311f2576e | ||
| 721d3c0d15 | |||
| c82e183ff9 | |||
| 1b6a93650b | |||
| aa85bb0c72 | |||
| ceb452aa68 | |||
| 467a1c2ff9 | |||
| f73cd32309 | |||
| 0be2a5b879 | |||
| 8c015ac251 | |||
| 894ec12fd8 | |||
| 8cf3602de1 | |||
| 57c4f0438e | |||
|
|
02907d6a6b | ||
|
|
127edd1b2c | ||
|
|
76dc53b50a | ||
| f88a5298b2 | |||
| b436472bbb | |||
| 4e4a2eaab1 | |||
| d59204f25f | |||
| b299e3df1e | |||
| 5bcc06d53b | |||
|
|
7c09a7ff74 | ||
| 88efedf26b | |||
|
|
cdd68748e0 | ||
|
|
f8ff2699e6 | ||
| c5e06888b8 | |||
|
|
4f138eee73 | ||
|
|
90258e5105 | ||
| efc53fc9bf | |||
|
|
f62c17d940 | ||
|
|
fb15b93887 | ||
|
|
222276486a | ||
|
|
4446d59e73 | ||
| a22709a0f0 | |||
| 76598ad33b | |||
| 56ccb7c136 | |||
|
|
b6d933d018 | ||
| f9856a27b9 | |||
| b36b52ad57 | |||
| 1e60ccf49b | |||
|
|
9ca9439b9a | ||
| 6d30ae7e84 | |||
| 031e124663 | |||
| bb50c9fe18 | |||
| 8e608de501 | |||
|
|
8917b7736b | ||
| 18ff879f1d | |||
| c5a258d7be | |||
| 7525f1f71d | |||
| 3b665bdba0 | |||
| 99477364bd | |||
|
|
629fdf6d4c | ||
| 1288599b1f | |||
| be3a68fecb | |||
| 101e4da1d6 | |||
| 23430a609a | |||
| bb0d56e403 | |||
| d3b08bdf4f | |||
| e1ec501c55 | |||
| f92c3407f0 | |||
| b5971439b6 | |||
| 8ea8a2797a | |||
| b0f9222482 | |||
| 825ccc1031 | |||
| dab7a8a38a | |||
| 1dbc7ae5cd | |||
| 7038da568e | |||
| bfcaa26070 | |||
| f6488aecce | |||
| ad166e8012 | |||
| 2a76a414a0 | |||
| bb8ddf0bba | |||
| bf3e746010 | |||
|
|
b9957e4f0e | ||
| e1deba4ccf | |||
| 36e4de3035 | |||
| 3eab1faeab | |||
| 1eb4098646 | |||
| f7db8cae15 | |||
| 97dd3dc21d | |||
| 6da6797f1b | |||
|
|
88356f1392 | ||
| 174bb842e9 | |||
| f6e7590118 | |||
| 498996a6e2 | |||
| 0961985fb4 | |||
| 293452604d | |||
|
|
9582f18c7d | ||
| 051e3604ee | |||
| 09d62dd159 | |||
| 8a3763e168 | |||
| c37793f649 | |||
| 7bc7230990 | |||
| 067df4e34b | |||
| 4d28499423 | |||
| b685af82fb | |||
|
|
b8a4b82431 | ||
| 0b03acebd8 | |||
| d172b86cb8 | |||
| f910dfb9ac | |||
| ee95d57ba0 | |||
| f8a317f3c7 | |||
| 3762e10932 | |||
| afda96902b | |||
| 3060b6ad66 | |||
|
|
4f154cf509 | ||
| 863d803483 | |||
| 07bb2b56d1 | |||
| 84a753100e | |||
| c8b01f3fda | |||
| 8e6a110aac | |||
| a8baa1671f | |||
| 2ccdd042f6 | |||
|
|
8cf43ed555 | ||
| e22094e0da | |||
| 6186c5cba4 | |||
| c453dcbf84 | |||
| 4daaa62aed | |||
| f56d5682d1 | |||
| 439638b686 | |||
| a8a473a46d | |||
| eb91a43bbd | |||
|
|
193fae662e | ||
|
|
117ca1a944 | ||
| 1f1a6d42ad | |||
| cca265cd99 | |||
| cc6abb53ba | |||
| ab34c148a6 | |||
|
|
910b29ed9f | ||
| 3fb0a75a62 | |||
|
|
f73abb508b | ||
|
|
1dd3d952cf | ||
| 1ffd6e1569 | |||
| a76033a48a | |||
| 34dc18883e | |||
| 832d8b94f3 | |||
| c40eb765f8 | |||
|
|
1bb7e9076b | ||
|
|
17821dfefa | ||
| 19327947ed | |||
| 2356fc4c61 | |||
| 45219deccb | |||
| 5471aba1a4 | |||
|
|
6f6ee3611c | ||
|
|
d8f9cdf265 | ||
| abb6de05be | |||
| 60ef48e918 | |||
| e58c79a3c3 | |||
| d47f21286d | |||
| 3f108c9353 | |||
|
|
4a68146786 | ||
|
|
cf79e61943 | ||
| 43dcb303a0 | |||
| 1b03f0bbd6 | |||
| 8a52c9a97e | |||
| 8e84c3aef7 | |||
| acd2f7fc6d | |||
| 1e4aa1558a | |||
| b314c0ba76 | |||
| ece46561c4 | |||
| 196d217c34 | |||
| 7d2fc55791 | |||
| 74fb12f093 | |||
|
|
d7988bcad7 | ||
| 320ae35dcd | |||
| 0964253be5 | |||
|
|
f3f7ecc522 | ||
|
|
b88de0c3ae | ||
| c5e6860595 | |||
| b5a3c34fc3 | |||
| 87c89cf828 | |||
|
|
8d57c9425e | ||
|
|
cfe97d81a7 | ||
| 2f13ad324a | |||
|
|
d203fc9d51 | ||
| bf279b6def | |||
| 87926f8d9b | |||
| 6b056f6072 | |||
| 823cdbc07f | |||
| 0f6157eb04 | |||
| 721fe614a7 | |||
| 5ea16d4653 | |||
| 900e6a8f85 | |||
| 16673de789 | |||
| c732a75184 | |||
|
|
96280e6e9b | ||
| 5ab0f89765 | |||
| d585d61537 | |||
| 746646ae55 | |||
|
|
6e69ec6410 | ||
| af123e5138 | |||
| 3879289559 | |||
| 392628e733 | |||
| aa70eab5fb | |||
| e5311ca285 | |||
| d5618c9b5f | |||
| d091f5a88f | |||
| cb9195e3ad | |||
| c91cc387b6 | |||
| 083091ea46 | |||
| 7ff74f0e15 | |||
| 9d1f62fcca | |||
| a563e82e33 | |||
| 62ff7836e7 | |||
| 88cb573027 | |||
| 82772d8208 | |||
|
|
240035569c | ||
|
|
9697c200f9 | ||
| fd11f9966b | |||
| 722b3c0cde | |||
| 4fcb9d9741 | |||
| fc232f26f7 | |||
| 8b078309cf | |||
| 5a8f990e52 | |||
| c76c5d08b0 | |||
| b2857e226c | |||
| dfbac0c736 | |||
| fdd713908c | |||
| 60210c9bec | |||
| eaf8d2bdca | |||
| cc00055626 | |||
|
|
567de68844 | ||
|
|
ed0b229757 | ||
| c8b6243c0b | |||
|
|
21a92eb145 | ||
| 8ec317f582 | |||
|
|
42201d8b68 | ||
|
|
0c003ae5b9 | ||
| d383031ec8 | |||
|
|
fa5e5f16da | ||
| f82396236e | |||
| b127c2514d | |||
|
|
b06ac3bc0f | ||
|
|
7e4ea90a05 | ||
|
|
d264a33d21 | ||
| 224ee56461 | |||
|
|
8147490c65 | ||
|
|
c6d501347a | ||
|
|
d8044f2b6a | ||
|
|
1b3fe6d12e | ||
| 76b66d8c61 | |||
| 9c8644de17 | |||
| 120345b562 | |||
| 8accd4a60b | |||
| 8fb03660ad | |||
| 8b2dc74f2a | |||
| 8fa63e63bb | |||
| 4ca5b63b75 | |||
| 5a59872377 | |||
| 38419eda28 | |||
| fc85dbaa6c | |||
| 250e7f5666 | |||
| 8f96922033 | |||
| 4c4de2dc26 | |||
| b8c163e028 | |||
| 0a974c2a17 | |||
| fd8d72ab38 | |||
| 0908a23231 | |||
| 2e070eed83 | |||
| e22762255d | |||
| 093f58f129 | |||
| 9b6e39b4af | |||
|
|
6f1e1a0416 | ||
| 36e0f36e06 | |||
| e2c37d29e8 | |||
| 78716fa8ce | |||
| 81e9b20eb6 | |||
|
|
94e58b307b | ||
| 98aca096a9 | |||
| 121e31c7d4 | |||
| f6bcd10ac5 | |||
| 619c772fcc | |||
| 746d44151c | |||
| b9585209be | |||
| 930dcf00c4 | |||
| bb8e3bba56 | |||
| 6431c2e6dc | |||
| 248eca1ae6 | |||
| 4b1ab2e1b8 | |||
| c0f537439b | |||
| 9ab132d37c | |||
| 2b9ddc232b | |||
| 1a244ce0b1 | |||
| fdc0f45b23 | |||
| 3fa90eef3b | |||
| 7ea7c12f0b | |||
| f76492b942 | |||
| 7947340663 | |||
| 300c48b1e9 | |||
| 772527cc66 | |||
|
|
370fdcbcbe | ||
| b32c86bac2 | |||
| 8d85809b1c | |||
| 7fc40e3eab | |||
|
|
1aca769ebf | ||
| 57df4edf6c | |||
| 240ac35aa8 | |||
| ad0ba59b67 | |||
| bbc26e66dd | |||
| 1803d41969 | |||
| 34d547433f | |||
| dff4b9a9c5 | |||
| c33404eb27 | |||
| 99e7578d60 | |||
| d8011728c7 | |||
| 2f67d4a2e2 | |||
|
|
ef37681087 | ||
|
|
0c014033d1 | ||
|
|
14635009d2 | ||
| 70118fee52 | |||
|
|
0dce28ea6a | ||
| ba15f82302 | |||
| d4972ea30d | |||
| ed7263dfee | |||
| 4cda063305 | |||
| d251ea9cdc | |||
| bc4e906ff6 | |||
| 75c36bacf9 | |||
| e7cda5ac0c | |||
| 41024b1eb5 | |||
| 74afeb61c8 | |||
| 104bc369bc | |||
| 57e63847ce | |||
| 2dc08e5e51 | |||
| 989b5b5111 | |||
| 24a5dd1ff6 | |||
| 5826e35853 | |||
| e329868568 | |||
| dc76fa8914 | |||
| 3413365d41 | |||
| 37299f4893 | |||
| 71a78c6e0c | |||
| 3f8a4deb05 | |||
| ffe288aba3 | |||
| 28a1fc2831 | |||
| 28aae89f70 | |||
| e8fe5c570b | |||
| 26f6024292 | |||
| 4e4692321b | |||
| 3ea221ccf9 | |||
| e7774c4ab1 | |||
| 1f2ca90ca5 | |||
| adecceda7a | |||
| 8a3b2e703c | |||
| 1ee726e30c | |||
| 9857c8eb00 | |||
| a919d9544e | |||
| 7bc7921a17 | |||
| 735807f245 | |||
| 6d531e2d40 | |||
| 77f89c0f48 | |||
| 7f3c7b7e1c | |||
| fc16b8231e | |||
| 64a626d5c4 | |||
| 54816c2ce9 | |||
| 3acaea5611 | |||
| e4a313abe7 | |||
| 0b1c75cbdd | |||
| cab0f4da49 | |||
| cef15eddce | |||
| f8987818b8 | |||
|
|
15d1f6a59a | ||
| ba586fca7d | |||
|
|
d93bc7aae3 | ||
| 77b0428cec | |||
| 387432b27b | |||
| 88fa706b75 | |||
| 96ce9fec0c | |||
| 66d5fbc8ac | |||
| cc3ceb4176 | |||
| 0f9c69bb65 | |||
| c754746b9f | |||
| df5cab6a88 | |||
| b9ddba4666 | |||
| 77e92ef15e | |||
| 383bc2b052 | |||
| 0e109c3da3 | |||
| 50abd5aa30 | |||
| 082e27fb0a | |||
| e05e68f5d1 | |||
| 074c169e3c | |||
| 636ea749ac | |||
| da2a2e0f81 | |||
| 0ef12b61ac | |||
| c6fc3db52f | |||
| 1bde81a673 | |||
| d60248f356 | |||
| 40e8b9443b | |||
| 8a032a2804 | |||
| 367be373c4 | |||
| cf2f98d5c0 | |||
| a3704f7db9 | |||
| 7c359ffea0 | |||
| 9542624323 | |||
|
|
b0d74bad1a | ||
| fcade15933 | |||
| 6860909d39 | |||
| 493ad17c15 | |||
|
|
0495ac1ea8 | ||
| 9b5d372a74 | |||
| 9d04343a26 | |||
|
|
4aa0fba682 | ||
| ad6482b34a | |||
| 113e27734a | |||
| 378abfe896 | |||
| eadf1e5c84 | |||
| ea4d185fb4 | |||
| 22bd8ca870 | |||
| 7ee81b005c | |||
| 3faf8224e8 | |||
| d028f37c00 | |||
| 1df05ac0ba | |||
| e54e202281 | |||
| c226943aa9 | |||
| dda4b65458 | |||
| 7d564d0b4d | |||
| bc30e5f7a6 | |||
| 9e2f7e8f1b | |||
| 7b47e49804 | |||
| 1be7649122 | |||
| 453d54bc7f | |||
| 7ede7b9ac1 | |||
| a90743a09c | |||
| 185d28e587 | |||
|
|
37f023351d | ||
| 39523e9234 | |||
|
|
1f8fc0d289 | ||
| c083d2a20a | |||
| 75c6a0bccd | |||
| 5ce86b3229 | |||
| 885189e4ff | |||
| 8f3f4d7ed9 | |||
| 03a1b5fb85 | |||
| 7b83f6e943 | |||
| 261ff41e28 | |||
| 36ad2a2ad9 | |||
|
|
a4d5b87272 | ||
| f953bff183 | |||
| aba33a20a4 | |||
| a20e1e1419 | |||
| 8328f4cd19 | |||
| 4383b130a9 | |||
| 8143999f2a | |||
| 523bec769f | |||
| dee215a29e | |||
| 755ac0fa2c | |||
| a69f1f9f9c | |||
| 934ecb2335 | |||
| 4b6b887ca8 | |||
| fb0b9044eb | |||
| 74ca882192 | |||
| b904f0b60e | |||
| 13764775ca | |||
| 1f7b92285b | |||
| 1f22aee5e3 | |||
| 7dddf3ed75 | |||
| 62cd8cbda4 | |||
| 7dcebc8615 | |||
| 2e6a1582bf | |||
| c316a8eb2f | |||
| 4a493abedf | |||
| a395397a02 | |||
| 33f839c842 | |||
| 8b55ac1bba | |||
| 856ca00f1b | |||
| c5bbe4add5 | |||
| d2904274cb | |||
| 7ce8c78920 | |||
| 71301a6436 | |||
| e4f925e5b0 | |||
| 63ebd6df47 | |||
| d598aade16 | |||
| 1b49de9645 | |||
| d56338e233 | |||
| ef6ccb92c0 | |||
| 16bb91dd81 | |||
| e7f078fe96 | |||
| 49778fe936 | |||
| 6a718a41b1 | |||
| f392938e9e | |||
| 7fb38fe8f3 | |||
| 639cbe4939 | |||
| 1dc84a9cc5 | |||
| 6ae753d257 | |||
| b7c9d4851a | |||
| 4699233d46 | |||
| a5895abfa0 | |||
| fae34d10ef | |||
| c0448b5e7f | |||
| 4d7cc568af | |||
| 01a2815a68 | |||
| 39e896f331 | |||
| 622c8f991a | |||
| 88894a33a5 | |||
| acbfd34e7d | |||
| bac03a0b7b | |||
| a96bf921a2 | |||
| b5df60851f | |||
| 2e682c58fa | |||
| cb28e274ca | |||
| 4572c42eea | |||
| cec1edb269 | |||
| bfe7e93b60 | |||
| 1b80c8b7ed | |||
| c7c3493259 | |||
| 0e797d36ae | |||
|
|
0beb386f4a | ||
|
|
cc0e668cd9 | ||
|
|
d6f7aecf6c | ||
|
|
5253b69e37 | ||
| 12080f59e1 | |||
| 614827a877 | |||
| 09343033ec | |||
| c24f51adb9 | |||
| 1a74cf78c1 | |||
| e31948dcc5 | |||
| 25acc678d8 | |||
| 8c3796b433 | |||
| 048c9ac64f | |||
| 4ef3369c0e | |||
| b9c343dc27 | |||
| cfb41b8a03 | |||
| e42edc2dcf | |||
| 5a95484c58 | |||
| 988cb9cd18 | |||
|
|
681396383a | ||
|
|
f1aaf65e93 | ||
| 83bdfbf6a2 | |||
| 08c2be6f97 | |||
|
|
acf0bbe659 | ||
| e4bae620fa | |||
| b81c8f05b5 | |||
| 56427a08a8 | |||
| f2e7864583 | |||
| 9f96d553f0 | |||
| 1dee09759a | |||
| e2f6db9208 | |||
| 14270093c2 | |||
| 5015a8cd5a | |||
| 266c18e195 | |||
| 9c432ed2a0 | |||
| e6f3aae287 | |||
| a73c54a5a6 | |||
| 39ecd0495c | |||
| 4b45c89a90 | |||
| dfb7a51786 | |||
| 56ae0e1e1c | |||
| 3d753fe08c | |||
| 540054d4bb | |||
| b1a7932b72 | |||
| ced09160ab | |||
| 594ee0d03c | |||
| 68ec53e29b | |||
| 0c8b075689 | |||
| 0242bbbd73 | |||
| 31423c30b9 | |||
| fbdd2c7448 | |||
| 0aff4784b1 | |||
| 10b18e8bcc | |||
| dc0a349139 | |||
| 3ac1fac444 | |||
| 5bf4ea462b | |||
| 1d056988f4 | |||
| 2415dff0e2 | |||
| d891d5a3c5 | |||
| f48813ff85 | |||
| a87b33b8c2 | |||
| 6f854ddbfd | |||
| 748e5bb561 | |||
| 67867b57cd | |||
| 91734ffa15 | |||
| 5364bef678 | |||
| 50b4f5c60f | |||
| 7cd508a727 | |||
| bf2c665433 | |||
| f5b1bf0915 | |||
| e0c6d7e4f4 | |||
| 1937e72f17 | |||
| 228ba78341 | |||
| c8c34dcc81 | |||
| 3d65fdee43 | |||
| 1897f49906 | |||
| d86785ad47 | |||
| 1c3c04a6f3 | |||
| debb79ee09 | |||
| c1dda8a230 | |||
| 5c74383dda | |||
| da1473547a | |||
| 43df368ec1 | |||
| 6f3f977100 | |||
| ab8e654c2a | |||
| 1a4113e3cd | |||
| b3445d7e7a | |||
| 50fc1ea279 | |||
| d61f53196d | |||
| 7769af68b5 | |||
| 05aa4ba092 | |||
| a26f160326 | |||
| 00de4a7b83 | |||
| 020012eb60 | |||
| cf92bc9a69 | |||
| 1c17ee28cb | |||
| 0919a9732e | |||
| 52a941f0fa | |||
| e661f6d942 | |||
| b5160bbbfa | |||
| 2df27d2a0e | |||
|
|
0c0f3823e4 | ||
|
|
5fb433f7ac | ||
| 0fc08678a2 | |||
| ff83bc9ef1 | |||
| 492cb4dbd8 | |||
| bc608cd578 | |||
| acae4fec73 | |||
| 446d8971e7 | |||
| 2f917c9285 | |||
| 1d851708eb | |||
|
|
c3d4b51927 | ||
| 6d8c04977c | |||
| 64fc8a13d3 | |||
| 73e6f8a321 | |||
| 68727e4869 | |||
| c10654c50a | |||
| 4de181e3b2 | |||
| 8eb0d2bcab | |||
| 3154fabe26 | |||
| fb9301c095 | |||
| 906487f939 | |||
| 11c0a05c84 | |||
| 1ced69d3d7 | |||
| 168194aa74 | |||
| 51afab44ef | |||
| 31e04ce865 | |||
| 6b76bc825c | |||
| 10994347aa | |||
| 76b2236c63 | |||
| 288e63c9d9 | |||
| eb7267736e | |||
| b1c9032c7d | |||
| 2a805cf3e3 | |||
| 32566d0004 | |||
| 9fb925b38c | |||
| 3af8d8b638 | |||
| 4bb434b795 | |||
| b38b887098 | |||
| a81c8e56a8 | |||
|
|
1ffa9dfc9d | ||
|
|
d45d1107fa | ||
| edd0c4cba0 | |||
| 103aa08664 | |||
|
|
b8ba7a0681 | ||
|
|
e1db55f113 | ||
|
|
d519af562a | ||
| 7493fd6401 | |||
| 217664ffc2 | |||
| 7998705d3b | |||
| 2f043d8b37 | |||
| a103fbddbe | |||
| b583b0be83 | |||
| 52323803dc | |||
| 2026b6adfe | |||
| bb4eb1f8c7 | |||
| daff9f957a | |||
| 91c8410eb0 | |||
| 68bb53435d | |||
|
|
cd5cea172a | ||
| e3f5bbad00 | |||
| 1185524e97 | |||
| ac18c73f53 | |||
| bf4730a1f3 | |||
| 3ea0ba687c | |||
| b5df810075 | |||
| fab40dae96 | |||
| c6567f4f98 | |||
| 2ecbefecf7 | |||
| 90bc744d51 | |||
|
|
e46dadb128 | ||
| 3368217108 | |||
| 85fbc8684b | |||
| a3acd654f2 | |||
| 49362fcc9d | |||
| 742b4af0e8 | |||
| aebb0dadbd | |||
|
|
a7e68f1224 | ||
| 42706adf0b | |||
| fef9398a86 | |||
| c37df72f12 | |||
|
|
45a2330425 | ||
| 0596c51a0e | |||
| 8f4ad21ed8 | |||
| 491f733221 | |||
| 6eefbdc965 | |||
| 558b6500d3 | |||
|
|
23a34c1447 | ||
| 816ff7cd17 | |||
| fd3ba99ffc | |||
| c5454a36f3 | |||
| d32b43d7a0 | |||
| 9e3cc80694 | |||
| cd0fff756e | |||
| f8bde72337 | |||
|
|
afd28f8469 | ||
| 26ba1ac2a7 | |||
| 5d520d3f3f | |||
| 1d3ed5bfd0 | |||
| c80b577a5a | |||
| 4e2ee377f2 | |||
| d7106ae28f | |||
| a864d31e84 | |||
| b462ae20bf | |||
| 2cd1e7e0dd | |||
| c951dde930 | |||
|
|
a570cef49b | ||
| 441ba01455 | |||
| 73a00fcdf0 | |||
| 205ea28e16 | |||
| ade8162660 | |||
| 1745a15acf | |||
| ad08a2956e | |||
| 8d2083be4c | |||
| 87281a436f | |||
| 4ec9444e29 | |||
|
|
95d358ae3d | ||
|
|
cea61a5719 | ||
|
|
28c29d94f2 | ||
|
|
1028d3847c | ||
| 3498c6b739 | |||
| 83eb7d861e | |||
| 22090129ec | |||
|
|
5b0ca2a63b | ||
|
|
c5fa136a1f | ||
|
|
9a63aaff74 | ||
| 5e68077ac2 | |||
| 72b9acd710 | |||
|
|
469044bb2a | ||
|
|
96a362474c | ||
|
|
1b9dfac671 | ||
|
|
7dbaf8204b | ||
|
|
415d7d9026 | ||
|
|
6734d3c1ab | ||
|
|
b20d08aa69 | ||
|
|
e4da7534f8 | ||
| b39f7ec598 | |||
|
|
0f8c1ef457 | ||
|
|
4b31ad9a7b | ||
| 4d60d15831 | |||
|
|
90125c7278 | ||
| 0035575f8b | |||
|
|
865c0aa33b | ||
|
|
5fe7bc3527 | ||
| 0d1b35ef09 | |||
|
|
bee0340493 | ||
| fbdc9c741a | |||
| 0ac0d05db6 | |||
| 1c432da880 | |||
|
|
7e0cc9ec43 | ||
|
|
8c4b6d2983 | ||
|
|
5b4cf1bb2f | ||
| c9edd4bf84 | |||
| 1023228ddc | |||
| 8f8851d08f | |||
| 2b06642e4b | |||
|
|
52cbebc0b3 | ||
| 2b64164f2b | |||
| 7c8fb993a2 | |||
|
|
e745583f07 | ||
| 5762d57eb1 | |||
|
|
4b1d860cb5 | ||
|
|
288580c150 | ||
|
|
e535301139 | ||
| 58ba14aa47 | |||
|
|
a4a0d2e0f1 | ||
| c953f902ca | |||
| 3d917454a0 | |||
| 5b34ecfb97 | |||
| 1817cf6962 | |||
| bc914a1c5f | |||
| 48b9df95ab | |||
| 2799e80b2d | |||
|
|
5bbc241ec9 | ||
| 5e00422a28 | |||
|
|
44eacf9261 | ||
| 4f2c1f0b9b | |||
| 0fdc9fd08a | |||
| 65aaa4bec2 | |||
| a8835daede | |||
| 39ddc2ae00 | |||
| 06c2686815 | |||
| b259e4b992 | |||
|
|
47703cd182 | ||
| 6d31371af4 | |||
| c2250ee80c | |||
| a1d075fc0d | |||
| a3cc12aae1 | |||
| 808748a050 | |||
|
|
e29507ee61 | ||
| bd6408b024 | |||
| 45cf9ef2a5 | |||
| 5cc78e14e4 | |||
| 5683809e18 | |||
| 723d40a704 | |||
|
|
55ce79d9d1 | ||
|
|
fdd3845cf5 | ||
| 3e911755d2 | |||
| f3dff521f7 | |||
| cf1ccd6f39 | |||
| 2e963fa29e | |||
|
|
f595d437c9 | ||
| e7d0b4167a | |||
| f20fe04ed8 | |||
| 2b78d648c2 | |||
| ae2deef5fa | |||
| 8fc60ade75 | |||
| 34160d34dc | |||
| 5fab8e1cab | |||
| 1a612fef62 | |||
| ce5e9681fd | |||
| cab855380f | |||
| e7578e4905 | |||
| 3fce0ac4dc | |||
| b89213ffb5 | |||
| 823e9cc381 | |||
| 8be55a7c76 | |||
| f4fb53abaa | |||
| 66c31c3d3f | |||
| 1a8c32bf4c | |||
| 864fbc18da | |||
| b688ee7503 | |||
| 9dfb7a3c4a | |||
| 192ca6d26c | |||
| b5dd8c3eab | |||
| d2a84e6d20 | |||
| e29bd04c7d | |||
| 2b6fa42f17 | |||
| 8de487250d | |||
| e5fe49834d | |||
| edd56c80eb | |||
| eaedd40e06 | |||
| 06a53759ac | |||
| 3c98117c05 | |||
| c3aa6b77e5 | |||
| 66739fa765 | |||
| ff01a27b3c | |||
| 383855f23a | |||
| a5db6a465e | |||
| 293b847f79 | |||
| df14c71c17 | |||
| 29d46c5790 | |||
| d6565761ab | |||
| 0feb7a47ae | |||
| 161d0b8875 | |||
| d7f7240348 | |||
| 7de714161c | |||
| 263fca5839 | |||
| 02577547ce | |||
| 7f11a7073e | |||
| af38f7aa45 | |||
| 74df61ed1d | |||
| 6126827503 | |||
| fb48a86b27 | |||
| f84d70ea61 | |||
| 14f02a2b93 | |||
| 9f60efee33 | |||
| a834a9138a | |||
| 3a9ca6edab | |||
| d8292ca033 | |||
| e929b85669 | |||
| 775d2abf13 | |||
| 740ad17207 | |||
| c9d0284c91 | |||
| ac8b7beb9b | |||
| 2fa6c69e4a | |||
| c1287c4ea8 | |||
| 7b63afd4f5 | |||
| e5d6cb37fd | |||
| 4492c386b6 | |||
| 5f5f79d270 | |||
| dcd042262f | |||
| 268fd35bdb | |||
| 38a6f6f8e4 | |||
| d504fc5f2b | |||
| 4b1feb16fc | |||
| 9331b2b643 | |||
| 5ce9906ff1 | |||
| dbadcc3b6c | |||
|
|
4f2fd3cfd6 | ||
| 9621c67866 | |||
| 5e59893281 | |||
| ea292de853 | |||
| d2cedd0fee | |||
| 995cc569e7 | |||
| cceeba3f8e | |||
| dd3640586e | |||
|
|
11969bf791 | ||
|
|
bb3f4a8f6c | ||
|
|
6395895beb | ||
|
|
fa3dc531a0 | ||
| bb7ba3c919 | |||
| 53d91f8248 | |||
| 745fc9b737 | |||
| dbe5ea3ce0 | |||
| 761671e7f7 | |||
| f4df8623b0 | |||
| 03aacb0639 | |||
| 04c85245cc | |||
| 2ccb74422c | |||
| 3c87ed4d2b | |||
| 4e4ff92ae5 | |||
| ef9bf3864b | |||
| cfb9aa696e | |||
| 1c75e7a53f | |||
| 6e8875e734 | |||
| 70a9237166 | |||
| 59b08f8d1f | |||
| c9bc6e597a | |||
| 5cd720cc4d | |||
| e618f64cf5 | |||
| fed9769640 | |||
|
|
95e213d407 | ||
|
|
29a289bc7b | ||
| 9f133469e0 | |||
| ba90a2e6eb | |||
|
|
af32dd6bf3 | ||
|
|
e519d98a68 | ||
| cde571de69 | |||
| b563ba5cd0 | |||
| f357d23559 | |||
|
|
b183fcbdb2 | ||
| 17ce1c6ee6 | |||
| 66de4b3323 | |||
| b55c1a17ba | |||
|
|
3d708861cf | ||
| 9dc647c4af | |||
|
|
3bd73bbbfb | ||
|
|
0a7d331a57 | ||
|
|
40b399a467 | ||
|
|
65dab98c3e | ||
|
|
64f1d7354e | ||
|
|
0d93f2dbb2 | ||
|
|
9dc1ed8b38 | ||
|
|
75b99dd117 | ||
|
|
305355beaf | ||
| 33a7de2dfc | |||
| f5f4f47655 | |||
|
|
4d8d70d390 | ||
|
|
cacc98a7d3 | ||
|
|
9c05733b5d | ||
| d4e02bbb89 | |||
| 32dbec6476 | |||
|
|
980fc9aa7d | ||
|
|
a2c3de1b3b | ||
|
|
16d455a262 | ||
|
|
9ba66c7734 | ||
|
|
86824d8c45 | ||
| 38d853aa8a | |||
|
|
34a0d7d8c4 | ||
|
|
65bf470c5b | ||
|
|
965c47efef | ||
| 410f5ac2b5 |
3
.actrc
Normal file
@@ -0,0 +1,3 @@
|
||||
--container-architecture linux/amd64
|
||||
--env-file .env
|
||||
--secret-file .env
|
||||
1
.browserslistrc
Normal file
@@ -0,0 +1 @@
|
||||
extends @ivuorinen/browserslist-config
|
||||
3
.commitlintrc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@ivuorinen/commitlint-config"]
|
||||
}
|
||||
19
.ecrc
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"Version": "2.7.0",
|
||||
"Verbose": false,
|
||||
"Debug": false,
|
||||
"IgnoreDefaults": false,
|
||||
"SpacesAftertabs": false,
|
||||
"NoColor": false,
|
||||
"Exclude": [],
|
||||
"AllowedContentTypes": [],
|
||||
"PassedFiles": [],
|
||||
"Disable": {
|
||||
"EndOfLine": false,
|
||||
"Indentation": false,
|
||||
"InsertFinalNewline": false,
|
||||
"TrimTrailingWhitespace": false,
|
||||
"IndentSize": false,
|
||||
"MaxLineLength": false
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,39 @@ indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[local/bin/antigen.zsh]
|
||||
[*.fish]
|
||||
max_line_length = 80
|
||||
|
||||
[*.md]
|
||||
max_line_length = 100
|
||||
|
||||
[*.lua]
|
||||
max_line_length = 90
|
||||
|
||||
[*.{php,fish}]
|
||||
indent_size = 4
|
||||
|
||||
[.git{ignore,modules}]
|
||||
indent_style = tab
|
||||
indent_size = 1
|
||||
|
||||
[*.plist]
|
||||
indent_size = 1
|
||||
indent_style = tab
|
||||
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
|
||||
indent_size = 2
|
||||
tab_width = 2
|
||||
shell_variant = bash # --language-variant
|
||||
binary_next_line = true
|
||||
switch_case_indent = true # --case-indent
|
||||
space_redirects = true
|
||||
keep_padding = false
|
||||
function_next_line = true # --func-next-line
|
||||
|
||||
# Ignore the entire "third_party" directory when calling shfmt on directories,
|
||||
# such as "shfmt -l -w .". When formatting files directly,
|
||||
# like "shfmt -w third_party/foo.sh" or "shfmt --filename=third_party/foo.sh",
|
||||
# the ignore logic is applied only when the --apply-ignore flag is given.
|
||||
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**,config/tmux/plugins/**}]
|
||||
ignore = true
|
||||
|
||||
3
.eslintrc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@ivuorinen"]
|
||||
}
|
||||
53
.gitattributes
vendored
@@ -1,4 +1,4 @@
|
||||
## GITATTRIBUTES FOR WEB PROJECTS
|
||||
## GITATTRIBUTES
|
||||
#
|
||||
# These settings are for any web project.
|
||||
#
|
||||
@@ -13,27 +13,30 @@
|
||||
## Handle line endings automatically for files detected as
|
||||
## text and leave all files detected as binary untouched.
|
||||
## This will handle all files NOT defined below.
|
||||
* text=auto
|
||||
* text=auto oel=lf
|
||||
|
||||
# Source code
|
||||
*.bash text eol=lf
|
||||
*.bat text eol=crlf
|
||||
*.cmd text eol=crlf
|
||||
*.coffee text
|
||||
*.css text diff=css
|
||||
*.htm text diff=html
|
||||
*.html text diff=html
|
||||
*.css text diff=css eol=lf
|
||||
*.fish text diff=shell eol=lf
|
||||
*.htm text diff=html eol=lf
|
||||
*.html text diff=html eol=lf
|
||||
*.inc text
|
||||
*.ini text
|
||||
*.js text
|
||||
*.json text
|
||||
*.jsx text
|
||||
*.less text
|
||||
*.lua text diff=lua eol=lf
|
||||
*.ls text
|
||||
*.map text -diff
|
||||
*.od text
|
||||
*.onlydata text
|
||||
*.php text diff=php
|
||||
*.plist text eol=lf
|
||||
*.pl text
|
||||
*.ps1 text eol=crlf
|
||||
*.py text diff=python
|
||||
@@ -41,15 +44,18 @@
|
||||
*.sass text
|
||||
*.scm text
|
||||
*.scss text diff=css
|
||||
*.sh text eol=lf
|
||||
*.sh text eol=lf diff=shell
|
||||
.husky/* text eol=lf
|
||||
*.sql text
|
||||
*.styl text
|
||||
*.tag text
|
||||
*.tmux text eol=lf diff=tmux
|
||||
*.ts text
|
||||
*.tsx text
|
||||
*.vim text eol=lf
|
||||
*.xml text
|
||||
*.xhtml text diff=html
|
||||
*.zsh text diff=zsh eol=lf
|
||||
|
||||
# Docker
|
||||
Dockerfile text
|
||||
@@ -68,6 +74,7 @@ Dockerfile text
|
||||
AUTHORS text
|
||||
CHANGELOG text
|
||||
CHANGES text
|
||||
CODEOWNERS text
|
||||
CONTRIBUTING text
|
||||
COPYING text
|
||||
copyright text
|
||||
@@ -78,6 +85,7 @@ LICENSE text
|
||||
NEWS text
|
||||
readme text
|
||||
*README* text
|
||||
# Files literally named "TODO", not a todo list item
|
||||
TODO text
|
||||
|
||||
# Templates
|
||||
@@ -105,6 +113,8 @@ TODO text
|
||||
*.config text
|
||||
.editorconfig text
|
||||
.env text
|
||||
*.env text
|
||||
*.env.* text
|
||||
.gitattributes text
|
||||
.gitconfig text
|
||||
.htaccess text
|
||||
@@ -113,7 +123,8 @@ package.json text eol=lf
|
||||
package-lock.json text eol=lf -diff
|
||||
pnpm-lock.yaml text eol=lf -diff
|
||||
.prettierrc text
|
||||
yarn.lock text -diff
|
||||
# Ensure yarn.lock shows textual diffs
|
||||
yarn.lock text eol=lf
|
||||
*.toml text
|
||||
*.yaml text
|
||||
*.yml text
|
||||
@@ -208,14 +219,38 @@ Procfile text
|
||||
|
||||
*.gitignore text
|
||||
*.gitkeep text
|
||||
.gitattributes export-ignore
|
||||
.gitattributes text export-ignore
|
||||
*.gitattributes text export-ignore
|
||||
.gitmodules text export-ignore
|
||||
*.gitmodules text export-ignore
|
||||
**/.gitignore export-ignore
|
||||
**/.gitkeep export-ignore
|
||||
|
||||
# Repo specials
|
||||
local/bin/* text eol=lf
|
||||
local/bin/* text eol=lf diff=shell
|
||||
local/bin/*.md text eol=lf diff=markdown
|
||||
config/antigen.zsh text
|
||||
git/* text
|
||||
**/git/* text
|
||||
**/alias text
|
||||
ssh/* text
|
||||
ssh/shared.d/* text
|
||||
ssh/local.d/* text
|
||||
|
||||
# Auto-generated rules - 2025-04-16 10:28:04
|
||||
# Shell scripts detected by content
|
||||
install text eol=lf diff=shell
|
||||
|
||||
# File extension-based rules
|
||||
*.1 text eol=lf
|
||||
*.applescript text eol=lf
|
||||
*.d/work-git text eol=lf
|
||||
*.dirs text eol=lf
|
||||
*.example text eol=lf
|
||||
*.itermcolors text eol=lf
|
||||
*.locale text eol=lf
|
||||
*.python-version text eol=lf
|
||||
*.snippets text eol=lf
|
||||
*.theme text eol=lf
|
||||
*.yamlfmt text eol=lf
|
||||
*.bats text eol=lf diff=shell
|
||||
|
||||
30
.github/AGENTS.md
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# Guidelines for AI contributors
|
||||
|
||||
These instructions help language models work with this repository.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Run `yarn install` to get linting tools and the Bats test framework.
|
||||
|
||||
## Formatting
|
||||
|
||||
- Format code and docs with Prettier and markdownlint:
|
||||
|
||||
```bash
|
||||
yarn fix:prettier
|
||||
yarn fix:markdown
|
||||
```
|
||||
|
||||
- Shell scripts should pass `shellcheck`.
|
||||
|
||||
## Testing
|
||||
|
||||
- When code changes, run `yarn test` to execute Bats tests.
|
||||
- If only comments or documentation change, tests may be skipped.
|
||||
|
||||
## Commits and PRs
|
||||
|
||||
- Use Semantic Commit messages: `type(scope): summary`.
|
||||
- Keep PR titles in the same format.
|
||||
|
||||
<!-- vim: set ft=markdown spell spelllang=en_us cc=80 : -->
|
||||
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* @ivuorinen
|
||||
128
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
- The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
<ismo@ivuorinen.net>.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
<https://www.contributor-covenant.org/faq>. Translations are available at
|
||||
<https://www.contributor-covenant.org/translations>.
|
||||
124
.github/README.md
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
# .dotfiles
|
||||
|
||||
Welcome to [ivuorinen](https://github.com/ivuorinen)'s .dotfiles repository.
|
||||
It's a hodgepodge of scripts and configurations, tests and mistakes I'm not
|
||||
aware of yet. As I find more interesting tools, configs and other stuff,
|
||||
this repository will live accordingly.
|
||||
|
||||
Please for the love of everything good do not use these 1:1 as your own dotfiles,
|
||||
fork or download the repository as a zip and go from there with your own configs.
|
||||
|
||||
It would be nice if you'd add an issue linking to your fork or repo so I can
|
||||
see what interesting stuff you've done with it. Sharing is caring.
|
||||
|
||||
## Setup
|
||||
|
||||
### First time setup
|
||||
|
||||
1. Clone this repository to `$HOME/.dotfiles`
|
||||
2. `./install`
|
||||
3. ???
|
||||
4. Profit
|
||||
|
||||
### Updates
|
||||
|
||||
`cd $HOME/.dotfiles && git pull && ./install`
|
||||
|
||||
## The looks
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Interesting files and locations
|
||||
|
||||
### Interesting folders
|
||||
|
||||
| Path | Description |
|
||||
| ------------------- | -------------------------------------------- |
|
||||
| `.github` | GitHub Repository configuration files, meta. |
|
||||
| `hosts/{hostname}/` | Configs that should apply to that host only. |
|
||||
| `local/bin` | Helper scripts that I've collected or wrote. |
|
||||
| `scripts` | Setup scripts. |
|
||||
|
||||
### Host specific configuration
|
||||
|
||||
Configurations under `hosts/<hostname>` are applied only when running on the
|
||||
matching machine. Each host folder contains its own `install.conf.yaml` that
|
||||
is processed by Dotbot during installation.
|
||||
|
||||
### dotfile folders
|
||||
|
||||
| Repo | Destination | Description |
|
||||
| --------- | ----------- | ------------------------------------------- |
|
||||
| `base/` | `.*` | `$HOME` level files. |
|
||||
| `config/` | `.config/` | Configurations for applications. |
|
||||
| `local/` | `.local/` | XDG Base folder: `bin`, `share` and `state` |
|
||||
| `ssh/` | `.ssh/` | SSH Configurations. |
|
||||
|
||||
### `dfm` - the dotfiles manager
|
||||
|
||||
[`.local/bin/dfm`][dfm] is a shell script that has some tools that help with dotfiles management.
|
||||
|
||||
Running `dfm` gives you a list of available commands.
|
||||
|
||||
#### Documentation generation
|
||||
|
||||
`dfm docs` generates Markdown documentation under the `docs/` directory. The
|
||||
subcommands are:
|
||||
|
||||
```bash
|
||||
dfm docs alias # regenerate alias table
|
||||
dfm docs folders # document interesting folders
|
||||
dfm docs keybindings # update keybinding docs for tmux, nvim and others
|
||||
dfm docs all # run every docs task
|
||||
```
|
||||
|
||||
The `docs/` folder contains generated cheat sheets, keybindings and other
|
||||
reference files. New documentation can be added without modifying this README.
|
||||
|
||||
## Configuration
|
||||
|
||||
The folder structure follows [XDG Base Directory Specification][xdg] where possible.
|
||||
|
||||
### XDG Variables
|
||||
|
||||
| Env | Default | Short description |
|
||||
| ------------------ | -------------------- | ---------------------------------------------- |
|
||||
| `$XDG_BIN_HOME` | `$HOME/.local/bin` | Local binaries |
|
||||
| `$XDG_CONFIG_HOME` | `$HOME/.config` | User-specific configs |
|
||||
| `$XDG_DATA_HOME` | `$HOME/.local/share` | User-specific data files |
|
||||
| `$XDG_STATE_HOME` | `$HOME/.local/state` | App state that should persist between restarts |
|
||||
|
||||
Please see [docs/folders.md][docs-folders] for more information.
|
||||
|
||||
## Managing submodules
|
||||
|
||||
This repository uses Git submodules for external dependencies. After cloning,
|
||||
run:
|
||||
|
||||
```bash
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
To pull submodule updates later use:
|
||||
|
||||
```bash
|
||||
git submodule update --remote --merge
|
||||
```
|
||||
|
||||
The helper script `add-submodules.sh` documents how each submodule is added and
|
||||
configured. Submodules are automatically updated by the
|
||||
[update-submodules.yml](.github/workflows/update-submodules.yml) workflow.
|
||||
|
||||
## Testing
|
||||
|
||||
Shell scripts under `local/bin` are validated with [Bats](https://github.com/bats-core/bats-core).
|
||||
Run `yarn test` to execute every test file. Bats is installed as a development
|
||||
dependency, so run `yarn install` first if needed.
|
||||
|
||||
[dfm]: https://github.com/ivuorinen/dotfiles/blob/main/local/bin/dfm
|
||||
[docs-folders]: https://github.com/ivuorinen/dotfiles/blob/main/docs/folders.md
|
||||
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
12
.github/SECURITY.md
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Usually only the latest daily tag is supported at all,
|
||||
because that's the current I'm using.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please send me email directly to the email in my profile.
|
||||
I'd appreciate link to the release the vulnerability was
|
||||
found in, and what is the vulnerable code/dependency.
|
||||
7
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
version: 2
|
||||
updates:
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: 'github-actions'
|
||||
directory: '/'
|
||||
schedule:
|
||||
interval: 'weekly'
|
||||
4
.github/renovate.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["local>ivuorinen/renovate-config"]
|
||||
}
|
||||
BIN
.github/screenshots/oh-my-posh.png
vendored
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
.github/screenshots/tmux-astronvim-130x40.png
vendored
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
.github/screenshots/tmux-nvim-astronvim.png
vendored
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-dark.png
vendored
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-light.png
vendored
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
.github/screenshots/tmux-nvim.png
vendored
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
.github/screenshots/tmux-powerlevel10k-130x20.png
vendored
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
.github/screenshots/tmux-starship.png
vendored
Normal file
|
After Width: | Height: | Size: 62 KiB |
36
.github/tag-changelog-config.js
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
module.exports = {
|
||||
types: [
|
||||
{ types: ['feat', 'feature', 'Feat'], label: '🎉 New Features' },
|
||||
{ types: ['fix', 'bugfix', 'Fix'], label: '🐛 Bugfixes' },
|
||||
{ types: ['improvements', 'enhancement'], label: '🔨 Improvements' },
|
||||
{ types: ['perf'], label: '🏎️ Performance Improvements' },
|
||||
{ types: ['build', 'ci'], label: '🏗️ Build System' },
|
||||
{ types: ['refactor'], label: '🪚 Refactors' },
|
||||
{ types: ['doc', 'docs'], label: '📚 Documentation Changes' },
|
||||
{ types: ['config'], label: '🪛 Configuration Changes' },
|
||||
{ types: ['test', 'tests'], label: '🔍 Tests' },
|
||||
{ types: ['style', 'codestyle', 'lint'], label: '💅 Code Style Changes' },
|
||||
{ types: ['chore', 'Chore', 'deps', 'Deps'], label: '🧹 Chores' },
|
||||
{ types: ['other', 'Other'], label: 'Other Changes' },
|
||||
],
|
||||
|
||||
excludeTypes: [],
|
||||
|
||||
renderTypeSection: function (label, commits) {
|
||||
let text = `\n## ${label}\n\n`
|
||||
|
||||
commits.forEach(commit => {
|
||||
const scope = commit.scope ? `**${commit.scope}:** ` : ''
|
||||
text += `- ${scope}${commit.subject}\n`
|
||||
})
|
||||
|
||||
return text
|
||||
},
|
||||
|
||||
renderChangelog: function (release, changes) {
|
||||
const now = new Date()
|
||||
const d = now.toISOString().substring(0, 10)
|
||||
const header = `# ${release} - ${d}\n`
|
||||
return header + changes + '\n\n'
|
||||
},
|
||||
}
|
||||
33
.github/workflows/changelog.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Debug Changelog # Workflow name displayed on GitHub
|
||||
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
debug-changelog:
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Create changelog text
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: 'Echo results'
|
||||
id: output-changelog
|
||||
run: |
|
||||
echo "${{ steps.changelog.outputs.changes }}"
|
||||
67
.github/workflows/linters.yml
vendored
@@ -1,43 +1,36 @@
|
||||
name: reviewdog
|
||||
on: [ push ]
|
||||
---
|
||||
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
|
||||
name: Lint Code Base
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master, main]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
linters:
|
||||
name: Linters
|
||||
Linter:
|
||||
name: PR Lint
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
statuses: write
|
||||
contents: read
|
||||
packages: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: GitHub Actions
|
||||
uses: reviewdog/action-actionlint@v1
|
||||
- name: Yarn Lock Changes
|
||||
uses: Simek/yarn-lock-changes@34017425198654c20162a4dfd4f238fbece9636f # v0.12.1
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: detect-secrets
|
||||
uses: reviewdog/action-detect-secrets@master
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
|
||||
- name: markdownlint
|
||||
uses: reviewdog/action-markdownlint@v0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
|
||||
- name: shfmt
|
||||
uses: reviewdog/action-shfmt@v1
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
shfmt_flags: |
|
||||
--find
|
||||
--list
|
||||
--write
|
||||
--diff
|
||||
--simplify
|
||||
--language-dialect bash
|
||||
--indent 2
|
||||
--binary-next-line
|
||||
--case-indent
|
||||
--space-redirects
|
||||
--func-next-line
|
||||
- name: Run PR Lint
|
||||
# https://github.com/ivuorinen/actions
|
||||
uses: ivuorinen/actions/pr-lint@625c37446b1c7e219755a40807f825c9283f6e05 # 25.7.7
|
||||
|
||||
48
.github/workflows/new-release.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Release Daily State
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
new-daily-release:
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions: write-all
|
||||
|
||||
outputs:
|
||||
created: ${{ steps.daily-version.outputs.created }}
|
||||
version: ${{ steps.daily-version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Create tag if necessary
|
||||
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
|
||||
id: daily-version
|
||||
|
||||
- name: Create changelog text
|
||||
if: steps.daily-version.outputs.created
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: Create release
|
||||
if: steps.daily-version.outputs.created
|
||||
uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||
name: Release ${{ steps.daily-version.outputs.version }}
|
||||
body: ${{ steps.changelog.outputs.changes }}
|
||||
38
.github/workflows/pre-commit-autoupdate.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Pre-commit autoupdate
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# At 04:00 on Monday and Thursday.
|
||||
- cron: '0 4 * * 1,4'
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
auto-update:
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
||||
|
||||
- run: pip install pre-commit && pre-commit autoupdate
|
||||
|
||||
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: update/pre-commit-hooks
|
||||
title: 'chore: update pre-commit hooks'
|
||||
commit-message: 'chore: update pre-commit hooks'
|
||||
body: Update versions of pre-commit hooks to latest version.
|
||||
27
.github/workflows/semantic-pr.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Semantic PR
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- edited
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
semantic-pr:
|
||||
runs-on: self-hosted
|
||||
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
validateSingleCommit: true
|
||||
32
.github/workflows/sync-labels.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Sync labels
|
||||
|
||||
# yamllint disable-line rule:truthy
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- .github/workflows/sync-labels.yml
|
||||
- .github/labels.yml
|
||||
schedule:
|
||||
- cron: '34 5 * * *'
|
||||
workflow_call:
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
SyncLabels:
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
steps:
|
||||
- uses: ivuorinen/actions/sync-labels@625c37446b1c7e219755a40807f825c9283f6e05 # 25.7.7
|
||||
54
.github/workflows/update-submodules.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Update submodules
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# At 04:00 on Monday and Thursday.
|
||||
- cron: '0 4 * * 1'
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
update-submodules:
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 2
|
||||
token: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
- name: Config Git User
|
||||
run: |
|
||||
git config --global user.name "${{ github.actor }}"
|
||||
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
|
||||
|
||||
- name: Update submodules
|
||||
run: |
|
||||
git submodule sync
|
||||
git submodule foreach --quiet '
|
||||
tag="$(git describe --tags --abbrev=0 origin/HEAD)"
|
||||
if [ "$(git describe --tags)" != "$tag" ]; then
|
||||
git checkout --quiet "$tag"
|
||||
echo "$name updated to $tag"
|
||||
fi
|
||||
'
|
||||
|
||||
if git diff --quiet; then
|
||||
echo "No updates for submodules."
|
||||
else
|
||||
git add .
|
||||
git commit -m "chore(git): Update submodules (automated)"
|
||||
git show --raw
|
||||
git push
|
||||
fi
|
||||
50
.gitignore
vendored
@@ -1 +1,51 @@
|
||||
!.gitkeep
|
||||
*-secret
|
||||
*.bak
|
||||
*.log
|
||||
*.socket
|
||||
*.swp
|
||||
*.old
|
||||
*cache
|
||||
.env
|
||||
.idea
|
||||
.nfs*
|
||||
.vscode
|
||||
Brewfile.lock.json
|
||||
antidote_plugins.zsh
|
||||
config/alacritty/theme-active.toml
|
||||
config/cheat/cheatsheets/pure-bash-bible/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/git/credentials
|
||||
config/gnupg/S.*
|
||||
config/gnupg/private-keys-v1.d
|
||||
config/gnupg/s
|
||||
config/iterm2/AppSupport
|
||||
config/npm/npmrc
|
||||
config/nvim/lazy-lock.json
|
||||
config/nvim/spell/*
|
||||
!config/nvim/spell/.gitkeep
|
||||
config/git/local.d/*
|
||||
!config/git/local.d/.gitkeep
|
||||
config/vim/fzf
|
||||
config/vim/plugged/*
|
||||
config/zed/*
|
||||
!config/zed/settings.json
|
||||
config/zsh/.zcompdump
|
||||
iTermServer-*
|
||||
lazy-lock.json
|
||||
local/share/fonts/*
|
||||
local/bin/asdf/plugins/*
|
||||
lock
|
||||
node_modules
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
config/fish/fish_variables
|
||||
**/exports.secret.fish
|
||||
**/exports-secret.fish
|
||||
config/fish/completions/asdf.fish
|
||||
config/vim/.netrwhist
|
||||
config/vim/extra/*
|
||||
config/gh/hosts.yml
|
||||
dependency-check-report.html
|
||||
local/bin/yabai
|
||||
local/man/yabai.1
|
||||
|
||||
85
.gitmodules
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
# vim: noexpandtab filetype=gitconfig
|
||||
[submodule "dotbot"]
|
||||
path = tools/dotbot
|
||||
url = https://github.com/anishathalye/dotbot.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "dotbot-brew"]
|
||||
path = tools/dotbot-brew
|
||||
url = https://github.com/wren/dotbot-brew.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "dotbot-include"]
|
||||
path = tools/dotbot-include
|
||||
url = https://gitlab.com/gnfzdz/dotbot-include.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "cheat-community"]
|
||||
path = config/cheat/cheatsheets/community
|
||||
url = https://github.com/cheat/cheatsheets.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-continuum"]
|
||||
path = config/tmux/plugins/tmux-continuum
|
||||
url = https://github.com/tmux-plugins/tmux-continuum
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-sensible"]
|
||||
path = config/tmux/plugins/tmux-sensible
|
||||
url = https://github.com/tmux-plugins/tmux-sensible.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-sessionist"]
|
||||
path = config/tmux/plugins/tmux-sessionist
|
||||
url = https://github.com/tmux-plugins/tmux-sessionist.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-yank"]
|
||||
path = config/tmux/plugins/tmux-yank
|
||||
url = https://github.com/tmux-plugins/tmux-yank.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-window-name"]
|
||||
path = config/tmux/plugins/tmux-window-name
|
||||
url = https://github.com/ivuorinen/tmux-window-name.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "dotbot-pip"]
|
||||
path = tools/dotbot-pip
|
||||
url = https://github.com/sobolevn/dotbot-pip.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-suspend"]
|
||||
path = config/tmux/plugins/tmux-suspend
|
||||
url = https://github.com/MunifTanjim/tmux-suspend.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-mode-indicator"]
|
||||
path = config/tmux/plugins/tmux-mode-indicator
|
||||
url = https://github.com/MunifTanjim/tmux-mode-indicator.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-current-pane-hostname"]
|
||||
path = config/tmux/plugins/tmux-current-pane-hostname
|
||||
url = https://github.com/soyuka/tmux-current-pane-hostname.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "cheat-tldr"]
|
||||
path = config/cheat/cheatsheets/tldr
|
||||
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-dark-notify"]
|
||||
path = config/tmux/plugins/tmux-dark-notify
|
||||
url = https://github.com/erikw/tmux-dark-notify.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "antidote"]
|
||||
path = tools/antidote
|
||||
url = https://github.com/mattmc3/antidote.git
|
||||
shallow = true
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-resurrect"]
|
||||
path = config/tmux/plugins/tmux-resurrect
|
||||
url = https://github.com/tmux-plugins/tmux-resurrect.git
|
||||
10
.ignore
Normal file
@@ -0,0 +1,10 @@
|
||||
**/__pycache__/**
|
||||
.git/**
|
||||
config/cheat/cheatsheets/community/**
|
||||
config/tmux/plugins/**
|
||||
node_modules
|
||||
tools/antidote/**
|
||||
tools/dotbot-brew/**
|
||||
tools/dotbot-include/**
|
||||
tools/dotbot/**
|
||||
*.pyc
|
||||
3
.luarc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"diagnostics.globals": ["vim"]
|
||||
}
|
||||
19
.markdownlint.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"extends": "@ivuorinen/markdownlint-config",
|
||||
"code-block-style": {
|
||||
"style": "fenced"
|
||||
},
|
||||
"code-fence-style": {
|
||||
"style": "backtick"
|
||||
},
|
||||
"heading-style": {
|
||||
"style": "atx"
|
||||
},
|
||||
"no-duplicate-heading": {
|
||||
"siblings_only": true
|
||||
},
|
||||
"required-headings": false,
|
||||
"ul-style": {
|
||||
"style": "dash"
|
||||
}
|
||||
}
|
||||
9
.markdownlintignore
Normal file
@@ -0,0 +1,9 @@
|
||||
# only care about files that are directly under our control
|
||||
config/cheat/cheatsheets/community/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/op/plugins/used_plugins/*
|
||||
config/tmux/plugins/*
|
||||
local/bin/asdf/*
|
||||
tools/*
|
||||
node_modules/*
|
||||
|
||||
29
.mega-linter.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
# Configuration file for MegaLinter
|
||||
# See all available variables at
|
||||
# https://megalinter.io/configuration/ and in linters documentation
|
||||
|
||||
APPLY_FIXES: all
|
||||
SHOW_ELAPSED_TIME: false # Show elapsed time at the end of MegaLinter run
|
||||
PARALLEL: true
|
||||
VALIDATE_ALL_CODEBASE: true
|
||||
FILEIO_REPORTER: false # Generate file.io report
|
||||
GITHUB_STATUS_REPORTER: true # Generate GitHub status report
|
||||
IGNORE_GENERATED_FILES: true # Ignore generated files
|
||||
JAVASCRIPT_DEFAULT_STYLE: prettier # Default style for JavaScript
|
||||
PRINT_ALPACA: false # Print Alpaca logo in console
|
||||
SARIF_REPORTER: true # Generate SARIF report
|
||||
SHOW_SKIPPED_LINTERS: false # Show skipped linters in MegaLinter log
|
||||
TYPESCRIPT_DEFAULT_STYLE: prettier # Default style for TypeScript
|
||||
|
||||
DISABLE_LINTERS:
|
||||
- REPOSITORY_DEVSKIM
|
||||
|
||||
YAML_YAMLLINT_CONFIG_FILE: .yamllint.yml
|
||||
MARKDOWN_MARKDOWNLINT_CONFIG_FILE: .markdownlint.json
|
||||
JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.json
|
||||
TYPESCRIPT_ES_CONFIG_FILE: .eslintrc.json
|
||||
|
||||
FILTER_REGEX_EXCLUDE: >
|
||||
(node_modules|tools|config/cheat/cheatsheets/community|config/cheat/cheatsheets/tldr|config/fzf|config/zsh|config/tmux/plugins)
|
||||
|
||||
65
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,65 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: requirements-txt-fixer
|
||||
- id: detect-aws-credentials
|
||||
- id: detect-private-key
|
||||
- id: trailing-whitespace
|
||||
args: [--markdown-linebreak-ext=md]
|
||||
- id: check-case-conflict
|
||||
- id: check-merge-conflict
|
||||
- id: check-executables-have-shebangs
|
||||
- id: check-shebang-scripts-are-executable
|
||||
- id: check-symlinks
|
||||
- id: check-toml
|
||||
- id: check-xml
|
||||
- id: check-yaml
|
||||
args: [--allow-multiple-documents]
|
||||
- id: end-of-file-fixer
|
||||
- id: mixed-line-ending
|
||||
args: [--fix=auto]
|
||||
- id: pretty-format-json
|
||||
args: [--autofix, --no-sort-keys]
|
||||
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.45.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
args: [-c, .markdownlint.json, --fix]
|
||||
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.37.1
|
||||
hooks:
|
||||
- id: yamllint
|
||||
|
||||
- repo: https://github.com/koalaman/shellcheck-precommit
|
||||
rev: v0.10.0
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
|
||||
- repo: https://github.com/scop/pre-commit-shfmt
|
||||
rev: v3.12.0-1
|
||||
hooks:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.7
|
||||
hooks:
|
||||
- id: actionlint
|
||||
|
||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||
rev: 41.23.5
|
||||
hooks:
|
||||
- id: renovate-config-validator
|
||||
|
||||
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||
rev: v2.1.0
|
||||
hooks:
|
||||
- id: stylua # or stylua-system / stylua-github
|
||||
|
||||
- repo: https://github.com/hugoh/pre-commit-fish.git
|
||||
rev: v1.2
|
||||
hooks:
|
||||
- id: fish_syntax
|
||||
- id: fish_indent
|
||||
15
.prettierignore
Normal file
@@ -0,0 +1,15 @@
|
||||
# vim: ft=gitignore
|
||||
.mypy_cache/*
|
||||
Brewfile.lock.json
|
||||
config/cheat/cheatsheets/community
|
||||
config/cheat/cheatsheets/tldr
|
||||
config/fzf/*
|
||||
config/nvim/*
|
||||
config/op/plugins/used_plugins/*
|
||||
config/tmux/plugins/*
|
||||
config/zsh/*
|
||||
lazy-lock.json
|
||||
local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools/antidote/*
|
||||
tools/dotbot*
|
||||
14
.prettierrc.js
Normal file
@@ -0,0 +1,14 @@
|
||||
module.exports = {
|
||||
...require('@ivuorinen/prettier-config'),
|
||||
trailingComma: 'all',
|
||||
// Add custom options below:
|
||||
overrides: [
|
||||
{
|
||||
files: '*.md',
|
||||
options: {
|
||||
printWidth: 120,
|
||||
proseWrap: 'preserve',
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
1
.python-version
Normal file
@@ -0,0 +1 @@
|
||||
3.13.5
|
||||
3
.releaserc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@ivuorinen/semantic-release-config"]
|
||||
}
|
||||
30
.shellcheckrc
Normal file
@@ -0,0 +1,30 @@
|
||||
# This is shellcheck configuration file.
|
||||
|
||||
# Set whether or not to follow arbitrary file
|
||||
# paths in source statements (since 0.8.0).
|
||||
external-sources=true
|
||||
includeAllWorkspaceSymbols=true
|
||||
|
||||
# SC2039: In POSIX sh, 'local' is undefined.
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC2039
|
||||
disable=SC2039
|
||||
|
||||
# SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC2166
|
||||
disable=SC2166
|
||||
|
||||
# SC2154: Variable is referenced but not assigned
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC2154
|
||||
disable=SC2154
|
||||
|
||||
# SC1091: Not following <file>
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC1091
|
||||
disable=SC1091
|
||||
|
||||
# SC2174: When used with -p, -m only applies to the deepest directory.
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC2174
|
||||
disable=SC2174
|
||||
|
||||
# SC2016: Expressions don't expand in single quotes, use double quotes for that.
|
||||
# https://www.shellcheck.net/wiki/SC2016
|
||||
disable=SC2016
|
||||
34
AGENTS.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Project guidelines
|
||||
|
||||
This repository contains configuration files and helper scripts for managing a development environment. Dotbot drives the installation and host specific folders under `hosts/` include extra configs.
|
||||
|
||||
## Keeping the repository up to date
|
||||
|
||||
1. Update submodules with `git submodule update --remote --merge`.
|
||||
2. Pull the latest changes and run `./install`.
|
||||
3. Run `yarn install` whenever `package.json` changes.
|
||||
|
||||
## Linting and tests
|
||||
|
||||
- Format files with:
|
||||
|
||||
```bash
|
||||
yarn fix:prettier
|
||||
yarn fix:markdown
|
||||
```
|
||||
|
||||
- Shell scripts must pass `shellcheck`. Run:
|
||||
|
||||
```bash
|
||||
find . -path ./node_modules -prune -o -name '*.sh' -print0 | xargs -0 shellcheck
|
||||
```
|
||||
|
||||
- Execute tests with `yarn test`.
|
||||
|
||||
## Debugging lint issues
|
||||
|
||||
- `yarn lint:prettier` and `yarn lint:markdown` show formatting errors.
|
||||
- Ensure shell scripts have a shebang or `# shellcheck shell=bash` directive.
|
||||
- Consult `.shellcheckrc` for project specific checks.
|
||||
|
||||
Scripts rely on helpers in `config/shared.sh` so they run under Bash, Zsh and Fish by default.
|
||||
278
Brewfile
@@ -1,278 +0,0 @@
|
||||
tap "1password/tap"
|
||||
tap "anchore/grype"
|
||||
tap "ddosify/tap"
|
||||
tap "dm3ch/tap"
|
||||
tap "gesquive/tap"
|
||||
tap "github/gh"
|
||||
tap "homebrew/autoupdate"
|
||||
tap "homebrew/bundle"
|
||||
tap "homebrew/cask"
|
||||
tap "homebrew/cask-fonts"
|
||||
tap "homebrew/core"
|
||||
tap "homebrew/services"
|
||||
tap "mongodb/brew"
|
||||
tap "shivammathur/extensions"
|
||||
tap "shivammathur/php"
|
||||
tap "teamookla/speedtest"
|
||||
# Automate deployment, configuration, and upgrading
|
||||
brew "ansible"
|
||||
# Zstandard is a real-time compression algorithm
|
||||
brew "zstd"
|
||||
# Spell checker with better logic than ispell
|
||||
brew "aspell"
|
||||
# Automatic configure script builder
|
||||
brew "autoconf"
|
||||
# Official Amazon AWS command-line interface
|
||||
brew "awscli"
|
||||
# Terminal bandwidth utilization tool
|
||||
brew "bandwhich"
|
||||
# Switch Apache / Valet / CLI configs between PHP versions
|
||||
brew "brew-php-switcher"
|
||||
# Core application library for C
|
||||
brew "glib"
|
||||
# Manage compile and link flags for libraries
|
||||
brew "pkg-config"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# Get a file from an HTTP, HTTPS or FTP server
|
||||
brew "curl"
|
||||
# Libraries to talk to Microsoft SQL Server and Sybase databases
|
||||
brew "freetds"
|
||||
# C/C++ and Java libraries for Unicode and globalization
|
||||
brew "icu4c"
|
||||
# Postgres C API library
|
||||
brew "libpq"
|
||||
# General-purpose scripting language
|
||||
brew "php"
|
||||
# Dependency Manager for PHP
|
||||
brew "composer"
|
||||
# GNU File, Shell, and Text utilities
|
||||
brew "coreutils"
|
||||
# Get, unpack, build, and install modules from CPAN
|
||||
brew "cpanminus"
|
||||
# Diff that understands syntax
|
||||
brew "difftastic"
|
||||
# Tool for exploring each layer in a docker image
|
||||
brew "dive"
|
||||
# Command-line DNS client
|
||||
brew "dog"
|
||||
# Useful examples at the command-line
|
||||
brew "eg-examples"
|
||||
# CLI for templating and/or deploying FaaS functions
|
||||
brew "faas-cli"
|
||||
# Simple, fast and user-friendly alternative to find
|
||||
brew "fd"
|
||||
# Monitor a directory for changes and run a shell command
|
||||
brew "fswatch"
|
||||
# GitHub command-line tool
|
||||
brew "gh"
|
||||
# Distributed revision control system
|
||||
brew "git"
|
||||
# Small git utilities
|
||||
brew "git-extras"
|
||||
# AVH edition of git-flow
|
||||
brew "git-flow-avh"
|
||||
# See your latest local git branches, formatted real fancy
|
||||
brew "git-recent"
|
||||
# Open-source GitLab command-line tool
|
||||
brew "glab"
|
||||
# GNU implementation of the famous stream editor
|
||||
brew "gnu-sed"
|
||||
# Validating, recursive, caching DNS resolver
|
||||
brew "unbound"
|
||||
# GNU Transport Layer Security (TLS) Library
|
||||
brew "gnutls"
|
||||
# GNU Pretty Good Privacy (PGP) package
|
||||
brew "gnupg"
|
||||
# Open source programming language to build simple/reliable/efficient software
|
||||
brew "go"
|
||||
# Image manipulation
|
||||
brew "netpbm"
|
||||
# OpenType text shaping engine
|
||||
brew "harfbuzz"
|
||||
# Library to render SVG files using Cairo
|
||||
brew "librsvg"
|
||||
# Graph visualization software from AT&T and Bell Labs
|
||||
brew "graphviz"
|
||||
# GNU grep, egrep and fgrep
|
||||
brew "grep"
|
||||
# Popular GNU data compression program
|
||||
brew "gzip"
|
||||
# Smarter Dockerfile linter to validate best practices
|
||||
brew "hadolint"
|
||||
# Improved top (interactive process viewer)
|
||||
brew "htop"
|
||||
# Website copier/offline browser
|
||||
brew "httrack"
|
||||
# Tools and libraries to manipulate images in many formats
|
||||
brew "imagemagick"
|
||||
# Lightweight and flexible command-line JSON processor
|
||||
brew "jq"
|
||||
# Lazier way to manage everything docker
|
||||
brew "lazydocker"
|
||||
# Linguistic software and Finnish dictionary
|
||||
brew "libvoikko"
|
||||
# Swiss Army Knife for macOS
|
||||
brew "m-cli"
|
||||
# Mac App Store command-line interface
|
||||
brew "mas"
|
||||
# Terminal-based visual file manager
|
||||
brew "midnight-commander"
|
||||
# Ambitious Vim-fork focused on extensibility and agility
|
||||
brew "neovim"
|
||||
# Port scanning utility for large networks
|
||||
brew "nmap"
|
||||
# Manage multiple Node.js versions
|
||||
brew "nvm"
|
||||
# Development kit for the Java programming language
|
||||
brew "openjdk"
|
||||
# Generate clients, server & docs from an OpenAPI spec (v2, v3)
|
||||
brew "openapi-generator"
|
||||
# Highly capable, feature-rich programming language
|
||||
brew "perl"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.10"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.8"
|
||||
# RC file (dotfile) management
|
||||
brew "rcm"
|
||||
# Search tool like grep and The Silver Searcher
|
||||
brew "ripgrep"
|
||||
# Powerful, clean, object-oriented scripting language
|
||||
brew "ruby"
|
||||
# Static analysis and lint tool, for (ba)sh scripts
|
||||
brew "shellcheck"
|
||||
# Autoformat shell script source code
|
||||
brew "shfmt"
|
||||
# Version control system designed to be a better CVS
|
||||
brew "subversion"
|
||||
# Send macOS User Notifications from the command-line
|
||||
brew "terminal-notifier", link: false
|
||||
# Tool to build, change, and version infrastructure
|
||||
brew "terraform", link: false
|
||||
# Thin wrapper for Terraform e.g. for locking state
|
||||
brew "terragrunt"
|
||||
# Tool which checks for the support of TLS/SSL ciphers and flaws
|
||||
brew "testssl"
|
||||
# Terraform version manager inspired by rbenv
|
||||
brew "tfenv"
|
||||
# Programmatically correct mistyped console commands
|
||||
brew "thefuck"
|
||||
# Simplified and community-driven man pages
|
||||
brew "tldr"
|
||||
# Terminal multiplexer
|
||||
brew "tmux"
|
||||
# Display directories as trees (with optional color/HTML output)
|
||||
brew "tree"
|
||||
# Modern watch command
|
||||
brew "viddy"
|
||||
# Executes a program periodically, showing output fullscreen
|
||||
brew "watch"
|
||||
# Internet file retriever
|
||||
brew "wget"
|
||||
# Personal information dashboard for your terminal
|
||||
brew "wtfutil"
|
||||
# JavaScript package manager
|
||||
brew "yarn"
|
||||
# Tracks most-used directories to make cd smarter
|
||||
brew "z"
|
||||
# A vulnerability scanner for container images and filesystems
|
||||
brew "anchore/grype/grype"
|
||||
# High-performance load testing tool, written in Golang.
|
||||
brew "ddosify/tap/ddosify"
|
||||
# lets you quickly switch between multiple git user profiles
|
||||
brew "gesquive/tap/git-user"
|
||||
# High-performance, schema-free, document-oriented database
|
||||
brew "mongodb/brew/mongodb-community"
|
||||
# Xdebug PHP extension
|
||||
brew "shivammathur/extensions/xdebug@7.4"
|
||||
# Xdebug PHP extension
|
||||
brew "shivammathur/extensions/xdebug@8.0"
|
||||
# Xdebug PHP extension
|
||||
brew "shivammathur/extensions/xdebug@8.1"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php@7.4"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php@8.0"
|
||||
# Ookla Speedtest
|
||||
brew "teamookla/speedtest/speedtest"
|
||||
# Command-line helper for the 1Password password manager
|
||||
cask "1password-cli"
|
||||
# Text editor
|
||||
cask "coda"
|
||||
# App to build and share containerized applications and microservices
|
||||
cask "docker"
|
||||
# Reimagine your terminal
|
||||
cask "fig"
|
||||
# Unofficial overcast.fm podcast app
|
||||
cask "fog"
|
||||
# Typeface made for developers
|
||||
cask "font-jetbrains-mono"
|
||||
# Developer targeted fonts with a high number of glyphs
|
||||
cask "font-jetbrains-mono-nerd-font"
|
||||
cask "font-lato"
|
||||
cask "font-open-sans"
|
||||
# Font with a mechanical skeleton and the forms are largely geometric
|
||||
cask "font-roboto"
|
||||
cask "font-source-code-pro"
|
||||
cask "font-source-code-pro-for-powerline"
|
||||
cask "font-source-sans-pro"
|
||||
cask "font-source-serif-pro"
|
||||
# Open Source Webfont Converter
|
||||
cask "fontplop"
|
||||
# GIT client
|
||||
cask "fork"
|
||||
# Set of tools to manage resources and applications hosted on Google Cloud
|
||||
cask "google-cloud-sdk"
|
||||
# HTTP and GraphQL Client
|
||||
cask "insomnia"
|
||||
# JetBrains tools manager
|
||||
cask "jetbrains-toolbox"
|
||||
# Kubernetes IDE
|
||||
cask "lens"
|
||||
# Neovim Client
|
||||
cask "neovide"
|
||||
# Reverse proxy, secure introspectable tunnels to localhost
|
||||
cask "ngrok"
|
||||
# Collaboration platform for API development
|
||||
cask "postman"
|
||||
# Display image info and preview unsupported formats in QuickLook
|
||||
cask "qlimagesize"
|
||||
# QuickLook generator for Markdown files
|
||||
cask "qlmarkdown"
|
||||
# QuickLook plugin for plaintext files without an extension
|
||||
cask "qlstephen"
|
||||
# QuickLook plugin for JSON files
|
||||
cask "quicklook-json"
|
||||
# QuickLook generator for Adobe Swatch Exchange files
|
||||
cask "quicklookase"
|
||||
# Move and resize windows using keyboard shortcuts or snap areas
|
||||
cask "rectangle"
|
||||
# MySQL/MariaDB database management
|
||||
cask "sequel-ace"
|
||||
# Collection of apps available by subscription
|
||||
cask "setapp"
|
||||
# Team communication and collaboration software
|
||||
cask "slack"
|
||||
# Sound and audio controller
|
||||
cask "soundsource"
|
||||
# Application for inspecting installer packages
|
||||
cask "suspicious-package"
|
||||
# Quicklook extension for source files
|
||||
cask "syntax-highlight"
|
||||
# Open-source code editor
|
||||
cask "visual-studio-code"
|
||||
# Multimedia player
|
||||
cask "vlc"
|
||||
# Rust-based terminal
|
||||
cask "warp"
|
||||
mas "1Password for Safari", id: 1569813296
|
||||
mas "Flow", id: 1423210932
|
||||
mas "GarageBand", id: 682658836
|
||||
mas "iMovie", id: 408981434
|
||||
mas "Keynote", id: 409183694
|
||||
mas "Numbers", id: 409203825
|
||||
mas "Pages", id: 409201541
|
||||
mas "Tailscale", id: 1475387142
|
||||
96
README.md
@@ -1,96 +0,0 @@
|
||||
# .dotfiles
|
||||
|
||||
Welcome to [ivuorinen](https://github.com/ivuorinen)'s .dotfiles repository. It's a hodgepodge of scripts
|
||||
and configurations, tests and mistakes I'm not aware of yet. As I find more interesting tools, configs and
|
||||
other stuff, this repository will live accordingly.
|
||||
|
||||
Please for the love of everything good do not use these 1:1 as your own dotfiles,
|
||||
fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
## Setup
|
||||
|
||||
### First time setup
|
||||
|
||||
1. Clone this repository to `$HOME/.dotfiles`
|
||||
2. `bash $HOME/.dotfiles/scripts/settler.sh`
|
||||
3. ???
|
||||
4. Profit
|
||||
|
||||
Note: there's a bit chicken/egg situation, because settler assumes you don't have git,
|
||||
and you need git to clone the repo. This will change soon™.
|
||||
|
||||
## Interesting files and locations
|
||||
|
||||
### Special folders
|
||||
|
||||
| Path | Description |
|
||||
|--------------------|-------------------------------------------------------------------------------------|
|
||||
| `.github` | GitHub Repository configuration files. Not part of the dotfiles per se. |
|
||||
| `host-{hostname}/` | Host specific dotfiles. Configurations that should apply to that host only. |
|
||||
| `local/bin` | Helper scripts that I've collected or wrote to make life easier. |
|
||||
| `scripts` | Setup scripts. Some can be run many times, some are meant only for the first round. |
|
||||
|
||||
### dotfile folders
|
||||
|
||||
| Repo | Destination | Description |
|
||||
|-----------|-------------|------------------------------------------------------------------|
|
||||
| `config/` | `.config/` | Configurations for applications. |
|
||||
| `local/` | `.local/` | XDG Base folder, contains `bin`, `share` and `state` for example |
|
||||
| `ssh/` | `.ssh/` | SSH Configurations. |
|
||||
|
||||
### dfm - the dotfiles manager
|
||||
|
||||
`.local/bin/dfm` is a shell script that has some tools that help with dotfiles management.
|
||||
|
||||
### `scripts/install-dotfiles.sh` - dotfiles linker
|
||||
|
||||
The `scripts/install-dotfiles.sh` is a `rcm` generated shell script that does all the necessary linking.
|
||||
|
||||
To refresh the file, you can run `dfm dotfiles update`
|
||||
|
||||
## Configuration
|
||||
|
||||
The folder structure follows [XDG Base Directory Specification][xdg] where possible.
|
||||
|
||||
### XDG Variables
|
||||
|
||||
| Var | Default |
|
||||
|--------------------|----------------------|
|
||||
| Executables | `$HOME/.local/bin` |
|
||||
| `$XDG_DATA_HOME` | `$HOME/.local/share` |
|
||||
| `$XDG_STATE_HOME` | `$HOME/.local/state` |
|
||||
| `$XDG_CONFIG_HOME` | `$HOME/.config` |
|
||||
|
||||
- `$XDG_DATA_HOME` defines the base directory relative to which user-specific data
|
||||
files should be stored. If `$XDG_DATA_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.local/share` should be used.
|
||||
- `$XDG_CONFIG_HOME` defines the base directory relative to which user-specific configuration
|
||||
files should be stored. If `$XDG_CONFIG_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.config` should be used.
|
||||
- `$XDG_STATE_HOME` defines the base directory relative to which user-specific state files should be stored.
|
||||
If `$XDG_STATE_HOME` is either not set or empty, a default equal to `$HOME/.local/state` should be used.
|
||||
- The `$XDG_STATE_HOME` contains state data that should persist between (application) restarts,
|
||||
but that is not important or portable enough to the user that it should be stored in `$XDG_DATA_HOME`.
|
||||
It may contain:
|
||||
- actions history (logs, history, recently used files, …)
|
||||
- current state of the application that can be reused on a restart (view, layout, open files, undo history, …)
|
||||
- User-specific executable files may be stored in `$HOME/.local/bin`. Distributions should ensure this
|
||||
directory shows up in the UNIX `$PATH` environment variable, at an appropriate place.
|
||||
- `$XDG_DATA_DIRS` defines the preference-ordered set of base directories to search for data files in addition
|
||||
to the `$XDG_DATA_HOME` base directory. The directories in `$XDG_DATA_DIRS` should be seperated with a colon ':'.
|
||||
|
||||
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
|
||||
## Interesting links
|
||||
|
||||
### Interesting dotfiles repos
|
||||
|
||||
- https://dotfiles.github.io/inspiration/
|
||||
- https://github.com/frdmn/dotfiles - Ansible-based dotfile setup for macOS
|
||||
- https://github.com/mvdan/dotfiles - Here be dragons
|
||||
- https://github.com/vsouza/dotfiles - 🏡 My dotfiles
|
||||
- https://github.com/freekmurze/dotfiles - My personal dotfiles
|
||||
|
||||
### Interesting dotfiles tools
|
||||
|
||||
- https://github.com/zero-sh/zero.sh - Radically simple personal bootstrapping tool for macOS.
|
||||
72
add-submodules.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
git submodule sync --recursive
|
||||
|
||||
# dotbot and plugins
|
||||
git submodule add --name dotbot \
|
||||
-f https://github.com/anishathalye/dotbot.git tools/dotbot
|
||||
git submodule add --name dotbot-brew \
|
||||
-f https://github.com/wren/dotbot-brew.git tools/dotbot-brew
|
||||
git submodule add --name dotbot-include \
|
||||
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
|
||||
git submodule add --name dotbot-pip \
|
||||
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
|
||||
|
||||
# other repos
|
||||
git submodule add --name cheat-community \
|
||||
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
||||
git submodule add --name cheat-tldr \
|
||||
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
|
||||
git submodule add --name antidote \
|
||||
--depth 1 \
|
||||
-f https://github.com/mattmc3/antidote.git tools/antidote
|
||||
|
||||
# tmux plugin manager and plugins
|
||||
git submodule add --name tmux/tmux-continuum \
|
||||
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
|
||||
git submodule add --name tmux/tmux-mode-indicator \
|
||||
-f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator
|
||||
git submodule add --name tmux/tmux-resurrect \
|
||||
-f https://github.com/tmux-plugins/tmux-resurrect.git config/tmux/plugins/tmux-resurrect
|
||||
git submodule add --name tmux/tmux-sensible \
|
||||
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
|
||||
git submodule add --name tmux/tmux-sessionist \
|
||||
-f https://github.com/tmux-plugins/tmux-sessionist.git config/tmux/plugins/tmux-sessionist
|
||||
git submodule add --name tmux/tmux-suspend \
|
||||
-f https://github.com/MunifTanjim/tmux-suspend.git config/tmux/plugins/tmux-suspend
|
||||
git submodule add --name tmux/tmux-window-name \
|
||||
-f https://github.com/ivuorinen/tmux-window-name.git config/tmux/plugins/tmux-window-name
|
||||
git submodule add --name tmux/tmux-yank \
|
||||
-f https://github.com/tmux-plugins/tmux-yank.git config/tmux/plugins/tmux-yank
|
||||
git submodule add --name tmux/tmux-current-pane-hostname \
|
||||
-f https://github.com/soyuka/tmux-current-pane-hostname.git config/tmux/plugins/tmux-current-pane-hostname
|
||||
git submodule add --name tmux/tmux-dark-notify \
|
||||
-f https://github.com/erikw/tmux-dark-notify.git config/tmux/plugins/tmux-dark-notify
|
||||
|
||||
# Takes submodules and sets them to ignore all changes
|
||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||
echo "Ignoring submodule changes for submodule.${MODULE}..."
|
||||
git config "submodule.${MODULE}.ignore" "dirty"
|
||||
done
|
||||
|
||||
# Mark certain repositories shallow
|
||||
git config -f .gitmodules submodule.antidote.shallow true
|
||||
|
||||
# remove old submodules
|
||||
folders=(
|
||||
"config/tmux/plugins/tpm"
|
||||
"config/tmux/plugins/tmux"
|
||||
"config/tmux/plugins/tmux-menus"
|
||||
"tools/dotbot-crontab"
|
||||
"tools/dotbot-snap"
|
||||
"config/nvim-kickstart"
|
||||
"local/bin/asdf"
|
||||
"local/asdf"
|
||||
"tools/dotbot-asdf"
|
||||
)
|
||||
|
||||
for folder in "${folders[@]}"; do
|
||||
[ -d "$folder" ] \
|
||||
&& rm -rf "$folder" \
|
||||
&& msgr run_done "Removed old submodule $folder"
|
||||
done
|
||||
30
base/bashrc
Normal file
@@ -0,0 +1,30 @@
|
||||
# this is my bashrc config. there are many like it, but this one is mine.
|
||||
# shellcheck shell=bash
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$PATH"
|
||||
export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
|
||||
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
|
||||
fi
|
||||
|
||||
# shellcheck source=../config/fzf/fzf.bash
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
||||
source "${DOTFILES}/config/fzf/fzf.bash"
|
||||
|
||||
# Import ssh keys in keychain
|
||||
ssh-add -A 2>/dev/null
|
||||
|
||||
x-have antidot && {
|
||||
eval "$(antidot init)"
|
||||
}
|
||||
|
||||
PROMPT_DIRTRIM=3
|
||||
PROMPT_COMMAND='PS1_CMD1=$(git branch --show-current 2>/dev/null)'
|
||||
PS1='\[\e[95m\]\u\[\e[0m\]@\[\e[38;5;22;2m\]\h\[\e[0m\] \[\e[38;5;33m\]\w\[\e[0m\] \[\e[92;2m\]${PS1_CMD1}\n\[\e[39m\]➜\[\e[0m\] '
|
||||
|
||||
# Added by LM Studio CLI (lms)
|
||||
export PATH="$PATH:$HOME/.lmstudio/bin"
|
||||
19
base/ecrc
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"Version": "2.7.0",
|
||||
"Verbose": false,
|
||||
"Debug": false,
|
||||
"IgnoreDefaults": false,
|
||||
"SpacesAftertabs": false,
|
||||
"NoColor": false,
|
||||
"Exclude": [],
|
||||
"AllowedContentTypes": [],
|
||||
"PassedFiles": [],
|
||||
"Disable": {
|
||||
"EndOfLine": false,
|
||||
"Indentation": false,
|
||||
"InsertFinalNewline": false,
|
||||
"TrimTrailingWhitespace": false,
|
||||
"IndentSize": false,
|
||||
"MaxLineLength": false
|
||||
}
|
||||
}
|
||||
1
base/envrc
Normal file
@@ -0,0 +1 @@
|
||||
use node
|
||||
44
base/gitprofile
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"profiles": {
|
||||
"github": [
|
||||
{
|
||||
"key": "user.name",
|
||||
"value": "Ismo Vuorinen"
|
||||
},
|
||||
{
|
||||
"key": "user.email",
|
||||
"value": "ivuorinen@users.noreply.github.com"
|
||||
}
|
||||
],
|
||||
"home": [
|
||||
{
|
||||
"key": "user.email",
|
||||
"value": "ismo@ivuorinen.net"
|
||||
},
|
||||
{
|
||||
"key": "user.name",
|
||||
"value": "Ismo Vuorinen"
|
||||
}
|
||||
],
|
||||
"masf": [
|
||||
{
|
||||
"key": "user.email",
|
||||
"value": "ismo@masf.fi"
|
||||
},
|
||||
{
|
||||
"key": "user.name",
|
||||
"value": "Ismo Vuorinen"
|
||||
}
|
||||
],
|
||||
"work": [
|
||||
{
|
||||
"key": "user.email",
|
||||
"value": "ismo.vuorinen@svea.com"
|
||||
},
|
||||
{
|
||||
"key": "user.name",
|
||||
"value": "Ismo Vuorinen"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
4
base/huskyrc
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/env bash
|
||||
|
||||
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.config/nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
6
base/ignore
Normal file
@@ -0,0 +1,6 @@
|
||||
Applications/
|
||||
Library/
|
||||
Movies/
|
||||
Music/
|
||||
Pictures/
|
||||
Google Drive/
|
||||
1
base/nvmrc
Normal file
@@ -0,0 +1 @@
|
||||
v22.14.0
|
||||
16
base/plan
Normal file
@@ -0,0 +1,16 @@
|
||||
. .
|
||||
/ `. .' \
|
||||
.---. < > < > .---.
|
||||
| \ \ - ~ ~ - / / |
|
||||
~-..-~ ~-..-~
|
||||
\~~~\.' `./~~~/
|
||||
.-~~^-. \__/ \__/
|
||||
.' O \ / / \ \
|
||||
(_____, `._.' | } \/~~~/
|
||||
`----. / } | / \__/
|
||||
`-. | / | / `. ,~~|
|
||||
~-.__| /_ - ~ ^| /- _ `..-' f: f:
|
||||
| / | / ~-. `-. _||_||_
|
||||
|_____| |_____| ~ - . _ _ _ _ _>
|
||||
|
||||
|
||||
7
base/shellcheckrc
Normal file
@@ -0,0 +1,7 @@
|
||||
# This is shellcheck configuration file.
|
||||
|
||||
# Set whether or not to follow arbitrary file
|
||||
# paths in source statements (since 0.8.0).
|
||||
external-sources=true
|
||||
includeAllWorkspaceSymbols=true
|
||||
|
||||
65
base/zshrc
Normal file
@@ -0,0 +1,65 @@
|
||||
# this is my zsh config. there are many like it, but this one is mine.
|
||||
# https://zsh.sourceforge.io/Intro/intro_3.html
|
||||
# shellcheck shell=bash
|
||||
|
||||
# export VERBOSE=1
|
||||
# export DEBUG=1
|
||||
autoload -U promptinit; promptinit
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
LOCAL_SHARE="$HOME/.local/share"
|
||||
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim/mason/bin:$LOCAL_SHARE/bob/nvim-bin:$LOCAL_SHARE/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
# zsh completions directory
|
||||
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
|
||||
|
||||
# Add zsh completions to FPATH, compinit will be called later
|
||||
FPATH="$ZSH_COMPLETIONS:$FPATH"
|
||||
|
||||
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||
|
||||
source "$DOTFILES/config/zsh/antidote.zsh"
|
||||
|
||||
# Function to source FZF configuration
|
||||
source_fzf_config()
|
||||
{
|
||||
local fzf_config="${DOTFILES}/config/fzf/fzf.zsh"
|
||||
if [[ -f "$fzf_config" ]]; then
|
||||
# shellcheck source=config/fzf/fzf.zsh
|
||||
source "$fzf_config"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to set up tmux window name plugin if tmux is active
|
||||
setup_tmux_window_name_plugin()
|
||||
{
|
||||
if [[ -n "$TMUX" ]]; then
|
||||
local tmux_window_name_plugin="$TMUX_PLUGINS/tmux-window-name/scripts/rename_session_windows.py"
|
||||
if [[ -f "$tmux_window_name_plugin" ]]; then
|
||||
tmux_window_name()
|
||||
{
|
||||
($tmux_window_name_plugin &)
|
||||
}
|
||||
add-zsh-hook chpwd tmux_window_name
|
||||
tmux_window_name
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
source_fzf_config
|
||||
setup_tmux_window_name_plugin
|
||||
x-have antidot && eval "$(antidot init)"
|
||||
|
||||
autoload -Uz compinit bashcompinit
|
||||
compinit -d $ZSH_COMPDUMP
|
||||
bashcompinit
|
||||
|
||||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||
export P10K_CONFIG="$DOTFILES/config/zsh/p10k.zsh"
|
||||
[[ ! -f "$P10K_CONFIG" ]] || source "$P10K_CONFIG"
|
||||
|
||||
# Added by LM Studio CLI (lms)
|
||||
export PATH="$PATH:$HOME/.lmstudio/bin"
|
||||
@@ -1,8 +0,0 @@
|
||||
# Fig pre block. Keep at the top of this file.
|
||||
[[ -f "$HOME/.fig/shell/bash_profile.pre.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.pre.bash"
|
||||
# shellcheck shell=bash
|
||||
|
||||
export PATH="$HOME/.local/bin:/usr/local/sbin:$PATH"
|
||||
|
||||
# Fig post block. Keep at the bottom of this file.
|
||||
[[ -f "$HOME/.fig/shell/bash_profile.post.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.post.bash"
|
||||
14
bashrc
@@ -1,14 +0,0 @@
|
||||
# Fig pre block. Keep at the top of this file.
|
||||
[[ -f "$HOME/.fig/shell/bashrc.pre.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.pre.bash"
|
||||
# shellcheck shell=bash
|
||||
|
||||
PHP_PATH=$(brew --prefix php)/bin
|
||||
|
||||
export PATH="$PHP_PATH:$HOME/.composer/vendor/bin/:/usr/local/opt/ruby/bin:/usr/local/sbin:$PATH"
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm
|
||||
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
|
||||
|
||||
# Fig post block. Keep at the bottom of this file.
|
||||
[[ -f "$HOME/.fig/shell/bashrc.post.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.post.bash"
|
||||
5
config/act/actrc
Normal file
@@ -0,0 +1,5 @@
|
||||
--container-architecture linux/amd64
|
||||
-P ubuntu-latest=catthehacker/ubuntu:act-latest
|
||||
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
|
||||
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
|
||||
-P ubuntu-18.04=catthehacker/ubuntu:act-18.04
|
||||
251
config/aerospace/aerospace.toml
Normal file
@@ -0,0 +1,251 @@
|
||||
# Start AeroSpace at login
|
||||
start-at-login = false
|
||||
|
||||
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
|
||||
enable-normalization-flatten-containers = true
|
||||
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
|
||||
# The 'accordion-padding' specifies the size of accordion padding
|
||||
# You can set 0 to disable the padding feature
|
||||
accordion-padding = 10
|
||||
|
||||
# Possible values: tiles|accordion
|
||||
default-root-container-layout = 'tiles'
|
||||
|
||||
# Possible values: horizontal|vertical|auto
|
||||
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
|
||||
# tall monitor (anything higher than wide) gets vertical orientation
|
||||
default-root-container-orientation = 'auto'
|
||||
|
||||
# Mouse follows focus when focused monitor changes
|
||||
# Drop it from your config, if you don't like this behavior
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
|
||||
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
|
||||
# Fallback value (if you omit the key): on-focused-monitor-changed = []
|
||||
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||
|
||||
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
|
||||
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
|
||||
# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app
|
||||
automatically-unhide-macos-hidden-apps = true
|
||||
|
||||
# [[on-window-detected]]
|
||||
# if.app-id = 'com.apple.systempreferences'
|
||||
# if.app-name-regex-substring = 'settings'
|
||||
# if.window-title-regex-substring = 'substring'
|
||||
# if.workspace = 'workspace-name'
|
||||
# if.during-aerospace-startup = true
|
||||
# check-further-callbacks = true
|
||||
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-name-regex-substring = 'settings' # All settings
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.systempreferences' # macOS System Preferences
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.1password.1password' # 1Password
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.jetbrains.PhpStorm' # PhpStorm
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.finder' # Finder
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.Preview' # Preview
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.mail' # Mail
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.DanPristupov.Fork' # Fork
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'org.whispersystems.signal-desktop' # Signal
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.tidal.desktop' # TIDAL
|
||||
run = ['layout floating', 'move-node-to-workspace 2'] # Float and move to workspace 2
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.TV' # Apple TV app
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.setapp.DesktopClient' # Setapp
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.electron.dockerdesktop' # Docker Desktop
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'md.obsidia' # Obsidian
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.todoist.mac.Todoist' # Todoist
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.backup.launcher' # TimeMachine
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.philipyoungg.session-setapp' # Session app (Setapp)
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.microsoft.rdc.macos' # Remote Desktop
|
||||
run = ['layout floating']
|
||||
|
||||
# Possible values: (qwerty|dvorak)
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||
[key-mapping]
|
||||
preset = 'qwerty'
|
||||
|
||||
# Gaps between windows (inner-*) and between monitor edges (outer-*).
|
||||
# Possible values:
|
||||
# - Constant: gaps.outer.top = 8
|
||||
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
|
||||
# In this example, 24 is a default value when there is no match.
|
||||
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
|
||||
[gaps]
|
||||
inner.horizontal = 5
|
||||
inner.vertical = 5
|
||||
outer.top = [{ monitor.'^built-in retina display$' = 0 }, 0]
|
||||
outer.right = 0
|
||||
outer.bottom = 0
|
||||
outer.left = 0
|
||||
|
||||
# 'main' binding mode declaration
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
# 'main' binding mode must be always presented
|
||||
# Fallback value (if you omit the key): mode.main.binding = {}
|
||||
[mode.main.binding]
|
||||
|
||||
cmd-h = [] # Disable "hide application"
|
||||
cmd-alt-h = [] # Disable "hide others"
|
||||
|
||||
# All possible keys:
|
||||
# - Letters. a, b, c, ..., z
|
||||
# - Numbers. 0, 1, 2, ..., 9
|
||||
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
|
||||
# - F-keys. f1, f2, ..., f20
|
||||
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
|
||||
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
|
||||
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
|
||||
# keypadMinus, keypadMultiply, keypadPlus
|
||||
# - Arrows. left, down, up, right
|
||||
|
||||
# All possible modifiers: cmd, alt, ctrl, shift
|
||||
|
||||
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
|
||||
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
|
||||
# alt-enter = '''exec-and-forget osascript -e '
|
||||
# tell application "Terminal"
|
||||
# do script
|
||||
# activate
|
||||
# end tell'
|
||||
# '''
|
||||
|
||||
# alt-cmd-shift-f = 'fullscreen'
|
||||
# alt-shift-f = 'layout floating'
|
||||
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
||||
alt-h = 'focus left'
|
||||
alt-j = 'focus down'
|
||||
alt-k = 'focus up'
|
||||
alt-l = 'focus right'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||
alt-shift-1 = 'workspace 1' # Main
|
||||
alt-shift-2 = 'workspace 2' # Media
|
||||
ctrl-shift-1 = 'move-node-to-workspace 1' # Move node to Main
|
||||
ctrl-shift-2 = 'move-node-to-workspace 2' # Move node to Media
|
||||
|
||||
alt-shift-tab = 'workspace-back-and-forth' # Switch between workspaces
|
||||
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
alt-a = 'mode apps'
|
||||
alt-s = 'mode service'
|
||||
alt-m = 'mode move'
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-m │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.move.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
||||
1 = ['move-node-to-workspace 1 --focus-follows-window']
|
||||
2 = ['move-node-to-workspace 2 --focus-follows-window']
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move
|
||||
h = 'move left'
|
||||
j = 'move down'
|
||||
k = 'move up'
|
||||
l = 'move right'
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#join-with
|
||||
shift-h = 'join-with left'
|
||||
shift-j = 'join-with down'
|
||||
shift-k = 'join-with up'
|
||||
shift-l = 'join-with right'
|
||||
# https://nikitabobko.github.io/AeroSpace/commands#resize
|
||||
ctrl-h = 'resize smart -70'
|
||||
ctrl-l = 'resize smart +70'
|
||||
shift-left = 'resize smart +70'
|
||||
shift-right = 'resize smart -70'
|
||||
# https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-a │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.apps.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main'] # Browser
|
||||
c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main'] # Chat
|
||||
g = ['exec-and-forget open -a /Applications/Ghostty.app', 'mode main'] # Ghostty
|
||||
o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main'] # Obsidian
|
||||
s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main'] # Slack
|
||||
t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main'] # Tidal
|
||||
w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main'] # WezTerm
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-s │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.service.binding]
|
||||
esc = ['reload-config', 'mode main'] # reload config
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
||||
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
||||
backspace = ['close-all-windows-but-current', 'mode main']
|
||||
52
config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,52 @@
|
||||
import = [
|
||||
# Default to night if the copied one doesn't exist.
|
||||
"~/.dotfiles/config/alacritty/theme-night.toml",
|
||||
"~/.config/alacritty/theme-active.toml"
|
||||
]
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
|
||||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
|
||||
[font]
|
||||
size = 14.0
|
||||
|
||||
[font.glyph_offset]
|
||||
x = 0
|
||||
y = 0
|
||||
|
||||
[font.normal]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "ExtraLight"
|
||||
|
||||
[font.italic]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "Italic"
|
||||
|
||||
[font.bold]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "Bold"
|
||||
|
||||
[font.offset]
|
||||
x = 0
|
||||
y = 0
|
||||
|
||||
[selection]
|
||||
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
|
||||
save_to_clipboard = true
|
||||
|
||||
[window]
|
||||
decorations = "Full"
|
||||
dynamic_title = true
|
||||
opacity = 0.98
|
||||
blur = true
|
||||
|
||||
[window.dimensions]
|
||||
columns = 200
|
||||
lines = 75
|
||||
|
||||
[window.padding]
|
||||
x = 5
|
||||
y = 5
|
||||
40
config/alacritty/theme-day.toml
Normal file
@@ -0,0 +1,40 @@
|
||||
# TokyoNight Alacritty Colors: Day
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
background = '#e1e2e7'
|
||||
foreground = '#3760bf'
|
||||
|
||||
#[colors.cursor]
|
||||
#cursor = '#3760bf'
|
||||
#text = '#e1e2e7'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#e9e9ed'
|
||||
red = '#f52a65'
|
||||
green = '#587539'
|
||||
yellow = '#8c6c3e'
|
||||
blue = '#2e7de9'
|
||||
magenta = '#9854f1'
|
||||
cyan = '#007197'
|
||||
white = '#6172b0'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#a1a6c5'
|
||||
red = '#f52a65'
|
||||
green = '#587539'
|
||||
yellow = '#8c6c3e'
|
||||
blue = '#2e7de9'
|
||||
magenta = '#9854f1'
|
||||
cyan = '#007197'
|
||||
white = '#3760bf'
|
||||
|
||||
# Indexed Colors
|
||||
[[colors.indexed_colors]]
|
||||
index = 16
|
||||
color = '#b15c00'
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 17
|
||||
color = '#c64343'
|
||||
40
config/alacritty/theme-night.toml
Normal file
@@ -0,0 +1,40 @@
|
||||
# TokyoNight Alacritty Colors: Storm
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
background = '#24283b'
|
||||
foreground = '#c0caf5'
|
||||
|
||||
#[colors.cursor]
|
||||
#cursor = '#c0caf5'
|
||||
#text = '#24283b'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#1d202f'
|
||||
red = '#f7768e'
|
||||
green = '#9ece6a'
|
||||
yellow = '#e0af68'
|
||||
blue = '#7aa2f7'
|
||||
magenta = '#bb9af7'
|
||||
cyan = '#7dcfff'
|
||||
white = '#a9b1d6'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#414868'
|
||||
red = '#f7768e'
|
||||
green = '#9ece6a'
|
||||
yellow = '#e0af68'
|
||||
blue = '#7aa2f7'
|
||||
magenta = '#bb9af7'
|
||||
cyan = '#7dcfff'
|
||||
white = '#c0caf5'
|
||||
|
||||
# Indexed Colors
|
||||
[[colors.indexed_colors]]
|
||||
index = 16
|
||||
color = '#ff9e64'
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 17
|
||||
color = '#db4b4b'
|
||||
187
config/alias
Normal file → Executable file
@@ -1,47 +1,121 @@
|
||||
# shellcheck shell=bash
|
||||
# macOS specific
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Get installed php versions from brew and setup aliases
|
||||
function x-set-php-aliases
|
||||
{
|
||||
local php_versions=()
|
||||
while IFS="" read -r line; do php_versions+=("$line"); done < <(brew list | grep '^php')
|
||||
# Color the grep output
|
||||
alias grep="grep --color"
|
||||
|
||||
php_error_reporting='-d error_reporting=22527'
|
||||
|
||||
for version in "${php_versions[@]}"; do
|
||||
# drop the dot from version (8.0 -> 80)
|
||||
local php_abbr="${version//\./}"
|
||||
# replace "php@" with "p" so "php@80" becomes "p80"
|
||||
local php_alias="${php_abbr//php@/p}"
|
||||
|
||||
# Skip php = php aliasing
|
||||
# if [[ "$php_abbr" == "$php_alias" ]]; then continue; fi;
|
||||
|
||||
# Fetch the exec path once
|
||||
php_exec="$(brew --prefix "$version")/bin/php"
|
||||
|
||||
# Raw PHP without error_reporting flag.
|
||||
# shellcheck disable=SC2139
|
||||
alias ${php_alias}r="$php_exec"
|
||||
# PHP with error_reporting flag.
|
||||
# shellcheck disable=SC2139
|
||||
alias $php_alias="$php_exec $php_error_reporting"
|
||||
# Local PHP Server.
|
||||
# shellcheck disable=SC2139
|
||||
alias ${php_alias}s="$php_exec -S localhost:9000"
|
||||
# Use composer with specific PHP and error_reporting flag on.
|
||||
# shellcheck disable=SC2139
|
||||
alias ${php_alias}c="$php_exec $php_error_reporting $(which composer)"
|
||||
done
|
||||
x-have eza && {
|
||||
alias ls="eza -h -s=type --git --icons --group-directories-first"
|
||||
}
|
||||
|
||||
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
|
||||
|
||||
# Easier navigation: .., ..., ....
|
||||
alias ..="cd .."
|
||||
alias ...="cd ../.."
|
||||
alias ....="cd ../../.."
|
||||
|
||||
# Get git repository root path
|
||||
get_git_root()
|
||||
{
|
||||
# check that we are in a git repository
|
||||
if git rev-parse --is-inside-work-tree &> /dev/null; then
|
||||
git rev-parse --show-toplevel
|
||||
else
|
||||
>&2 msgr err "Not in a git repository"
|
||||
fi
|
||||
}
|
||||
|
||||
# cd to git root directory
|
||||
alias cdgr='cd "$(get_git_root)"'
|
||||
|
||||
# interesting folders, and shortcuts
|
||||
alias .='cd $HOME'
|
||||
alias .b='cd $XDG_BIN_HOME'
|
||||
alias .c='cd $HOME/Code'
|
||||
alias .d='cd $DOTFILES'
|
||||
alias .l='cd $HOME/.local'
|
||||
alias .o='cd $HOME/Code/ivuorinen/obsidian/'
|
||||
|
||||
# Shortcuts for listing
|
||||
alias ll="ls -la"
|
||||
alias l="ls -a"
|
||||
|
||||
# Prevent common typos
|
||||
alias cd..="cd .."
|
||||
alias sl="ls"
|
||||
|
||||
# IP addresses
|
||||
alias x-ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
||||
alias localip="ipconfig getifaddr en1"
|
||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //' | sort"
|
||||
|
||||
# Show/hide hidden files in Finder
|
||||
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder"
|
||||
alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false; killall Finder"
|
||||
|
||||
# Pipe public key to clipboard.
|
||||
alias pubkey="more ~/.ssh/id_rsa.pub | pbcopy | echo '=> Public key copied to pasteboard.'"
|
||||
|
||||
# Flush Directory Service cache
|
||||
alias flush="dscacheutil -flushcache"
|
||||
|
||||
# Update locatedb
|
||||
alias updatedb="sudo /usr/libexec/locate.updatedb"
|
||||
|
||||
# Date helpers
|
||||
alias isodate="date +'%Y-%m-%d'"
|
||||
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
||||
alias x-timestamp="date +'%s'"
|
||||
|
||||
# nvim aliases
|
||||
alias vi='nvim'
|
||||
alias vim='nvim'
|
||||
|
||||
# xdg-ninja aliases for better experience
|
||||
alias xdg='xdg-ninja --skip-ok --skip-unsupported'
|
||||
|
||||
# watch with: differences, precise, beep and color
|
||||
alias watchx='watch -dpbc'
|
||||
# delete .DS_Store files
|
||||
alias zapds='find . -name ".DS_Store" -print -delete'
|
||||
# Recursively delete `.pyc` files
|
||||
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
|
||||
# Run all zaps
|
||||
alias zapall="zapds && zappyc"
|
||||
# directory usage, return only the total
|
||||
alias dn='du -chd1'
|
||||
# Mirror site with wget
|
||||
alias mirror_site='wget -m -k -K -E -e robots=off'
|
||||
# Mirror stdout to stderr, useful for seeing data going through a pipe
|
||||
alias peek='tee >(cat 1>&2)'
|
||||
|
||||
# Runs Gitlab code quality scanner
|
||||
alias code_scanner='docker run
|
||||
--env SOURCE_CODE="$PWD"
|
||||
--volume "${PWD}":/code
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock
|
||||
registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}"
|
||||
/code'
|
||||
|
||||
# Runs trivy container image scanner
|
||||
alias trivy_scan='docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy'
|
||||
# Opens dotfiles with $EDITOR
|
||||
alias zedit='$EDITOR ~/.dotfiles'
|
||||
# Open irssi with my configurations
|
||||
alias irssi='irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi'
|
||||
# Configures wget to use correct wget-hsts file
|
||||
alias wget='wget --hsts-file=$XDG_DATA_HOME/wget-hsts'
|
||||
# Configures svn to use correct config directory
|
||||
alias svn='svn --config-dir $XDG_CONFIG_HOME/subversion'
|
||||
|
||||
# Laravel artisan shortcut
|
||||
alias art='[ -f artisan ] && php artisan || php vendor/bin/artisan'
|
||||
|
||||
# Laravel Sail shortcut
|
||||
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
||||
|
||||
if [[ $(uname) == 'Darwin' ]]; then
|
||||
|
||||
x-set-php-aliases
|
||||
|
||||
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
||||
|
||||
# Flush Directory Service cache
|
||||
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
||||
|
||||
@@ -49,29 +123,20 @@ if [[ $(uname) == 'Darwin' ]]; then
|
||||
alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"
|
||||
|
||||
# Empty the Trash on all mounted volumes and the main HDD
|
||||
# Also, clear Apple’s System Logs to improve shell startup speed
|
||||
# Also, clear Apple's System Logs to improve shell startup speed
|
||||
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
|
||||
|
||||
# Using herd for php now, so this is not needed anymore
|
||||
# x-set-php-aliases
|
||||
fi
|
||||
|
||||
alias watchx='watch -dpbc' # watch with: differences, precise, beep and color
|
||||
alias zapds='find . -name ".DS_Store" -print -delete'
|
||||
alias t='tail -f' # tail with follow flag on
|
||||
alias dn='du -chd1' # directory usage, return only the total
|
||||
|
||||
alias code_scanner="docker run \
|
||||
--env SOURCE_CODE='${PWD}' \
|
||||
--volume '${PWD}':/code \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
registry.gitlab.com/gitlab-org/ci-cd/codequality:${CODEQUALITY_VERSION:-latest} \
|
||||
/code"
|
||||
|
||||
alias composerUp='composer global update'
|
||||
alias npmUp='npm -g up'
|
||||
|
||||
alias zedit='$EDITOR ~/.dotfiles'
|
||||
|
||||
if [[ -f "$HOME/.aliases.local" ]]; then
|
||||
# shellcheck disable=SC1091
|
||||
source "$HOME/.aliases.local"
|
||||
fi
|
||||
|
||||
X_ALIAS_FILES=(
|
||||
"$HOME/.config/alias-secret"
|
||||
"$HOME/.config/alias-$(hostname)"
|
||||
"$HOME/.config/alias-$(hostname)-secret"
|
||||
)
|
||||
for aliasFile in "${X_ALIAS_FILES[@]}"; do
|
||||
# shellcheck source=$HOME/.config/alias-secret
|
||||
[ -f "$aliasFile" ] && source "$aliasFile" && msgr ok "Sourced $aliasFile"
|
||||
done
|
||||
unset X_ALIAS_FILES
|
||||
|
||||
364
config/amethyst/amethyst.yml
Normal file
@@ -0,0 +1,364 @@
|
||||
---
|
||||
# Default settings for amethyst
|
||||
# Repo: `https://github.com/ianyh/Amethyst`
|
||||
#
|
||||
# Note due to issue 1419 (https://github.com/ianyh/Amethyst/issues/1419) some
|
||||
# config values may conflict and not work if they are the same as the default
|
||||
# values for amathyst. You can see these values on GitHub at
|
||||
# https://github.com/ianyh/Amethyst/blob/development/Amethyst/default.amethyst
|
||||
# If you're experiencing conflicts and the settings are the same as the default,
|
||||
# comment out the commands in this file.
|
||||
#
|
||||
# Move this file to: `~/.amethyst.yml`
|
||||
# In order to register changes restart Amethyst.
|
||||
# If you experience issues pulling in the changes you can also
|
||||
# quit Amethyst and run: `defaults delete com.amethyst.Amethyst.plist`
|
||||
# This removes the current preferences and causes Amethyst to restart
|
||||
# with default preferences and pull configs from this file.
|
||||
|
||||
# layouts - Ordered list of layouts to use by layout key
|
||||
# (default tall, wide, fullscreen, and column).
|
||||
layouts:
|
||||
- bsp
|
||||
- tall
|
||||
# - fullscreen
|
||||
# - tall-right
|
||||
# - wide
|
||||
# - two-pane
|
||||
# - middle-wide
|
||||
- 3column-left
|
||||
# - 3column-middle
|
||||
# - 3column-right
|
||||
# - 4column-left
|
||||
# - 4column-right
|
||||
# - column
|
||||
# - row
|
||||
# - floating
|
||||
- widescreen-tall
|
||||
# - widescreen-tall-right
|
||||
# - bsp
|
||||
|
||||
# First mod (default option + shift).
|
||||
mod1:
|
||||
- option
|
||||
- shift
|
||||
# - control
|
||||
# - command
|
||||
|
||||
# Second mod (default option + shift + control).
|
||||
mod2:
|
||||
- option
|
||||
- shift
|
||||
- control
|
||||
# - command
|
||||
|
||||
# Commands:
|
||||
# special key values
|
||||
# space
|
||||
# enter
|
||||
# up
|
||||
# right
|
||||
# down
|
||||
# left
|
||||
|
||||
# special characters require quotes
|
||||
# '.'
|
||||
# ','
|
||||
|
||||
# Move to the next layout in the list.
|
||||
cycle-layout:
|
||||
mod: mod1
|
||||
key: space
|
||||
|
||||
# Move to the previous layout in the list.
|
||||
cycle-layout-backward:
|
||||
mod: mod2
|
||||
key: space
|
||||
|
||||
# Shrink the main pane by a percentage of the screen
|
||||
# dimension as defined by window-resize-step.
|
||||
# Note that not all layouts respond to this command.
|
||||
shrink-main:
|
||||
mod: mod1
|
||||
key: h
|
||||
|
||||
# Expand the main pane by a percentage of the screen dimension
|
||||
# as defined by window-resize-step. Note that not all layouts
|
||||
# respond to this command.
|
||||
expand-main:
|
||||
mod: mod1
|
||||
key: l
|
||||
|
||||
# Increase the number of windows in the main pane.
|
||||
# Note that not all layouts respond to this command.
|
||||
increase-main:
|
||||
mod: mod1
|
||||
key: ','
|
||||
|
||||
# Decrease the number of windows in the main pane.
|
||||
# Note that not all layouts respond to this command.
|
||||
decrease-main:
|
||||
mod: mod1
|
||||
key: '.'
|
||||
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command1:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command2:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command3:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command4:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
|
||||
# Focus the next window in the list going counter-clockwise.
|
||||
focus-ccw:
|
||||
mod: mod1
|
||||
key: j
|
||||
|
||||
# Focus the next window in the list going clockwise.
|
||||
focus-cw:
|
||||
mod: mod1
|
||||
key: k
|
||||
|
||||
# Focus the main window in the list.
|
||||
focus-main:
|
||||
mod: mod1
|
||||
key: m
|
||||
|
||||
# Focus the next screen in the list going counter-clockwise.
|
||||
focus-screen-ccw:
|
||||
mod: mod1
|
||||
key: p
|
||||
|
||||
# Focus the next screen in the list going clockwise.
|
||||
focus-screen-cw:
|
||||
mod: mod1
|
||||
key: n
|
||||
|
||||
# Move the currently focused window onto the next
|
||||
# screen in the list going counter-clockwise.
|
||||
swap-screen-ccw:
|
||||
mod: mod2
|
||||
key: h
|
||||
|
||||
# Move the currently focused window onto the next
|
||||
# screen in the list going clockwise.
|
||||
swap-screen-cw:
|
||||
mod: mod2
|
||||
key: l
|
||||
|
||||
# Swap the position of the currently focused window with
|
||||
# the next window in the list going counter-clockwise.
|
||||
swap-ccw:
|
||||
mod: mod2
|
||||
key: j
|
||||
|
||||
# Swap the position of the currently focused window with
|
||||
# the next window in the list going clockwise.
|
||||
swap-cw:
|
||||
mod: mod2
|
||||
key: k
|
||||
|
||||
# Swap the position of the currently focused window
|
||||
# with the main window in the list.
|
||||
swap-main:
|
||||
mod: mod1
|
||||
key: enter
|
||||
|
||||
# Move focus to the n-th screen in the list; e.g.,
|
||||
# focus-screen-3 will move mouse focus to the 3rd screen.
|
||||
# Note that the main window in the given screen will be focused.
|
||||
#focus-screen-n:
|
||||
# focus-screen-<screen-number>:
|
||||
# mod: mod1
|
||||
# key: y
|
||||
# Move the currently focused window to the n-th screen;
|
||||
# e.g., throw-screen-3 will move the window to the 3rd screen.
|
||||
# throw-screen-n:
|
||||
# throw-screen-<screen-number>:
|
||||
# mod: mod1
|
||||
# key: u
|
||||
# Move the currently focused window to the n-th space;
|
||||
# e.g., throw-space-3 will move the window to the 3rd space.
|
||||
# throw-space-<screen-number>:
|
||||
# mod: mod1
|
||||
# key: i
|
||||
|
||||
# Select tall layout
|
||||
#select-tall-layout:
|
||||
# mod: mod1
|
||||
# key: a
|
||||
|
||||
# Select wide layout
|
||||
#select-wide-layout:
|
||||
# mod: mod1
|
||||
# key: s
|
||||
|
||||
# Select fullscreen layout
|
||||
select-fullscreen-layout:
|
||||
mod: mod1
|
||||
key: d
|
||||
|
||||
# Select column layout
|
||||
select-column-layout:
|
||||
mod: mod1
|
||||
key: f
|
||||
|
||||
# Move the currently focused window to the space to the left.
|
||||
throw-space-left:
|
||||
mod: mod2
|
||||
key: left
|
||||
|
||||
# Move currently the focused window to the space to the right.
|
||||
throw-space-right:
|
||||
mod: mod2
|
||||
key: right
|
||||
|
||||
# Toggle the floating state of the currently focused window;
|
||||
# i.e., if it was floating make it tiled and if it was
|
||||
# tiled make it floating.
|
||||
toggle-float:
|
||||
mod: mod1
|
||||
key: t
|
||||
|
||||
# Display the layout HUD with the current layout on each screen.
|
||||
display-current-layout:
|
||||
mod: mod1
|
||||
key: i
|
||||
|
||||
# Turn on or off tiling entirely.
|
||||
toggle-tiling:
|
||||
mod: mod1
|
||||
key: t
|
||||
|
||||
# Rerun the current layout's algorithm.
|
||||
reevaluate-windows:
|
||||
mod: mod1
|
||||
key: z
|
||||
|
||||
# Turn on or off focus-follows-mouse.
|
||||
toggle-focus-follows-mouse:
|
||||
mod: mod2
|
||||
key: x
|
||||
|
||||
# Automatically quit and reopen Amethyst.
|
||||
relaunch-amethyst:
|
||||
mod: mod2
|
||||
key: z
|
||||
|
||||
# disable screen padding on builtin display
|
||||
disable-padding-on-builtin-display: false
|
||||
|
||||
# Boolean flag for whether to add margins between
|
||||
# windows (default false).
|
||||
window-margins: false
|
||||
|
||||
# Boolean flag for whether to set window margins if there is
|
||||
# only one window on the screen, assuming window margins
|
||||
# are enabled (default false).
|
||||
smart-window-margins: true
|
||||
|
||||
# # Add 10px margin between windows
|
||||
# window-margins: true
|
||||
# window-margin-size: 5
|
||||
# The size of the margins between windows (in px, default 0).
|
||||
window-margin-size: 0
|
||||
|
||||
# The max number of windows that may be visible on a screen
|
||||
# at one time before additional windows are minimized.
|
||||
# A value of 0 disables the feature.
|
||||
window-max-count: 0
|
||||
|
||||
# The smallest height that a window can be sized to
|
||||
# regardless of its layout frame (in px, default 0).
|
||||
window-minimum-height: 0
|
||||
|
||||
# The smallest width that a window can be sized to
|
||||
# regardless of its layout frame (in px, default 0)
|
||||
window-minimum-width: 0
|
||||
|
||||
# List of bundle identifiers for applications to either be automatically
|
||||
# floating or automatically tiled based on floating-is-blacklist (default []).
|
||||
floating: []
|
||||
|
||||
# Boolean flag determining behavior of the floating list.
|
||||
# true if the applications should be floating and all others tiled.
|
||||
# false if the applications should be tiled and all others floating (default true).
|
||||
floating-is-blacklist: false
|
||||
|
||||
# true if screen frames should exclude the status bar.
|
||||
# false if the screen frames should include the status bar (default false).
|
||||
ignore-menu-bar: false
|
||||
|
||||
# true if windows smaller than a 500px square should
|
||||
# be floating by default (default true)
|
||||
float-small-windows: true
|
||||
|
||||
# true if the mouse should move position to the center of a window
|
||||
# when it becomes focused (default false).
|
||||
# Note that this is largely incompatible with focus-follows-mouse.
|
||||
mouse-follows-focus: false
|
||||
|
||||
# true if the windows underneath the mouse should become focused as
|
||||
# the mouse moves (default false). Note that this is largely
|
||||
# incompatible with mouse-follows-focus
|
||||
focus-follows-mouse: false
|
||||
|
||||
# true if dragging and dropping windows on to each other
|
||||
# should swap their positions (default false).
|
||||
mouse-swaps-windows: true
|
||||
|
||||
# true if changing the frame of a window with the mouse should update the
|
||||
# layout to accommodate the change (default false).
|
||||
# Note that not all layouts will be able to respond to the change.
|
||||
mouse-resizes-windows: true
|
||||
|
||||
# true to display the name of the layout when a new layout is selected (default true).
|
||||
enables-layout-hud: true
|
||||
|
||||
# true to display the name of the layout when moving to a new space (default true).
|
||||
enables-layout-hud-on-space-change: true
|
||||
|
||||
# true to get updates to beta versions of the software (default false).
|
||||
use-canary-build: false
|
||||
|
||||
# true to insert new windows into the first position and
|
||||
# false to insert new windows into the last position (default false).
|
||||
new-windows-to-main: false
|
||||
|
||||
# true to automatically move to a space when throwing a window to it (default true).
|
||||
follow-space-thrown-windows: true
|
||||
|
||||
# The integer percentage of the screen dimension to increment
|
||||
# and decrement main pane ratios by (default 5).
|
||||
window-resize-step: 5
|
||||
|
||||
# Padding to apply between windows and the left edge of the screen (in px, default 0).
|
||||
screen-padding-left: 0
|
||||
|
||||
# Padding to apply between windows and the right edge of the screen (in px, default 0).
|
||||
screen-padding-right: 0
|
||||
|
||||
# Padding to apply between windows and the top edge of the screen (in px, default 0).
|
||||
screen-padding-top: 0
|
||||
|
||||
# Padding to apply between windows and the bottom edge of the screen (in px, default 0).
|
||||
screen-padding-bottom: 0
|
||||
|
||||
# true to maintain layout state across application executions (default true).
|
||||
restore-layouts-on-launch: true
|
||||
|
||||
# true to display some optional debug information in the layout HUD (default false).
|
||||
debug-layout-info: true
|
||||
35
config/amethyst/layouts/almost-maximize.js
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Almost Maximize
|
||||
* Almost maximizes the window to the screen, leaving a small margin.
|
||||
*
|
||||
* @author Ville Viklund <https://github.com/ville6000>
|
||||
*
|
||||
* @param {Object} windows - All windows in the current space.
|
||||
* @param {Object} screenFrame - The frame of the current screen.
|
||||
* @param {Object} state - The state of the current space.
|
||||
* @param {Object} extendedFrames - The frames of the windows in the current space.
|
||||
* @return {Object} - The frames for the windows in the current space.
|
||||
*/
|
||||
function layout() {
|
||||
return {
|
||||
name: 'Almost Maximize',
|
||||
getFrameAssignments: (windows, screenFrame, state, extendedFrames) => {
|
||||
const width = screenFrame.width * 0.95
|
||||
const height = screenFrame.height * 0.95
|
||||
const x = (screenFrame.width - width) / 2
|
||||
const y = (screenFrame.height - height) / 2
|
||||
const windowFrames = {}
|
||||
|
||||
windows.forEach(window => {
|
||||
windowFrames[window.id] = {
|
||||
Y: screenFrame.y + y,
|
||||
x: screenFrame.x + x,
|
||||
width,
|
||||
height,
|
||||
}
|
||||
})
|
||||
|
||||
return windowFrames
|
||||
},
|
||||
}
|
||||
}
|
||||
15
config/aqua/aqua.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/aqua-yaml.json
|
||||
# aqua - Declarative CLI Version Manager
|
||||
# https://aquaproj.github.io/
|
||||
# checksum:
|
||||
# enabled: true
|
||||
# require_checksum: true
|
||||
# supported_envs:
|
||||
# - all
|
||||
registries:
|
||||
- type: standard
|
||||
ref: v4.346.0 # renovate: depName=aquaproj/aqua-registry
|
||||
packages:
|
||||
- name: cli/cli
|
||||
version: 'v2.69.0'
|
||||
5
config/asdf/asdfrc
Normal file
@@ -0,0 +1,5 @@
|
||||
# See the docs for explanations: https://asdf-vm.com/manage/configuration.html
|
||||
|
||||
legacy_version_file=yes
|
||||
use_release_candidates=no
|
||||
concurrency=auto
|
||||
25
config/asdf/cargo-packages
Normal file
@@ -0,0 +1,25 @@
|
||||
// A cargo subcommand for checking and applying
|
||||
// updates to installed executables
|
||||
cargo-update
|
||||
// Cargo cache management utility
|
||||
cargo-cache
|
||||
// An incremental parsing system for programming tools
|
||||
tree-sitter-cli
|
||||
// a subprocess caching utility
|
||||
bkt
|
||||
// a structural diff that understands syntax
|
||||
difftastic
|
||||
// A simple, fast and user-friendly alternative to 'find'
|
||||
fd-find
|
||||
// recursively searches directories for a
|
||||
// regex pattern while respecting your gitignore
|
||||
ripgrep
|
||||
// A version manager for neovim
|
||||
bob-nvim
|
||||
// bottom, btm - A cross-platform graphical process/system monitor with
|
||||
// a customizable interface and a multitude of features.
|
||||
bottom
|
||||
// A modern alternative to ls
|
||||
eza
|
||||
// Tmux Sessionizer: A tool for opening git repositories as tmux sessions
|
||||
tmux-sessionizer
|
||||
1
config/asdf/gem-packages
Normal file
@@ -0,0 +1 @@
|
||||
bundler
|
||||
26
config/asdf/golang-packages
Normal file
@@ -0,0 +1,26 @@
|
||||
// These are golang packages I use,
|
||||
// so they should be available with all versions
|
||||
|
||||
// Git Profile allows you to switch between user profiles in git repos
|
||||
github.com/dotzero/git-profile@v1.4.0
|
||||
// An extensible command line tool or library to format yaml files.
|
||||
github.com/google/yamlfmt/cmd/yamlfmt@v0.13.0
|
||||
// Parsing HTML at the command line
|
||||
github.com/ericchiang/pup@v0.4.0
|
||||
// HTML to Markdown converter
|
||||
github.com/suntong/html2md@v1.5.0
|
||||
// cheat allows you to create and view interactive cheatsheets on the cli.
|
||||
github.com/cheat/cheat/cmd/cheat@4.4.2
|
||||
// Render markdown on the CLI, with pizzazz! 💅
|
||||
github.com/charmbracelet/glow@v1.5.1
|
||||
// Static checker for GitHub Actions workflow files
|
||||
github.com/rhysd/actionlint/cmd/actionlint@v1.7.1
|
||||
// Cleans up your $HOME from those pesky dotfiles
|
||||
github.com/doron-cohen/antidot@v0.6.3
|
||||
// FZF is a general-purpose command-line fuzzy finder.
|
||||
github.com/junegunn/fzf@latest
|
||||
// gopls, the Go language server
|
||||
golang.org/x/tools/gopls@latest
|
||||
// A language for writing HTML user interfaces in Go.
|
||||
github.com/a-h/templ/cmd/templ@latest
|
||||
|
||||
7
config/asdf/npm-packages
Normal file
@@ -0,0 +1,7 @@
|
||||
blade-formatter
|
||||
corepack
|
||||
editorconfig-checker
|
||||
github-release-notes
|
||||
neovim
|
||||
npm
|
||||
stylelint-lsp
|
||||
20
config/asdf/plugin-versions
Normal file
@@ -0,0 +1,20 @@
|
||||
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
||||
age https://github.com/threkk/asdf-age.git 396bdf6
|
||||
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git b5862c1
|
||||
direnv https://github.com/asdf-community/asdf-direnv.git 6ff3dbe
|
||||
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
||||
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
||||
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
||||
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
||||
golang https://github.com/asdf-community/asdf-golang.git e2527a3
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git c8eb88b
|
||||
kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
|
||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 66200ff
|
||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||
terragrunt https://github.com/ohmer/asdf-terragrunt.git 29f2935
|
||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git e4cfb17
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
4
config/asdf/python-packages
Normal file
@@ -0,0 +1,4 @@
|
||||
ansible
|
||||
pipenv
|
||||
neovim
|
||||
libtmux
|
||||
1
config/cheat/cheatsheets/community
Submodule
43
config/cheat/cheatsheets/personal/git-alias
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
tags: [ vcs, alias ]
|
||||
---
|
||||
|
||||
# git branchbydate
|
||||
|
||||
List repository branches by date when last updated and extra information.
|
||||
|
||||
# git branchcolor
|
||||
|
||||
List repository branches sorted by when they were last updated.
|
||||
|
||||
# git llog
|
||||
|
||||
Show log with fuller information.
|
||||
|
||||
# git logs
|
||||
|
||||
Git logs with detailed information and git tree.
|
||||
|
||||
# git nah
|
||||
|
||||
Reset all changes.
|
||||
|
||||
# git reset-origin
|
||||
|
||||
Reset to origin.
|
||||
|
||||
# git reset-upstream
|
||||
|
||||
Hard reset to upstream master.
|
||||
|
||||
# git rl
|
||||
|
||||
Colored reflog.
|
||||
|
||||
# git tagdate
|
||||
|
||||
List tags in date order and with graph.
|
||||
|
||||
# git undo-commit
|
||||
|
||||
Undoes last commit.
|
||||
73
config/cheat/cheatsheets/personal/printf
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
tags: [printf, bash, zsh]
|
||||
---
|
||||
|
||||
# printf
|
||||
|
||||
The printf command accepts the following syntax:
|
||||
|
||||
`printf [-v var] [format specifiers] [arguments]`
|
||||
|
||||
- [-v var]
|
||||
The optional -v flag assigns the output to the [var]
|
||||
variable instead of printing it in standard output.
|
||||
|
||||
- [format specifiers]
|
||||
Format specifiers are strings that determine the methods of
|
||||
formatting specifiers. The following section includes a
|
||||
list of accepted specifiers.
|
||||
|
||||
- [arguments]
|
||||
Arguments can be any value or variable, and the [format specifiers]
|
||||
point to the [arguments]. If there are more arguments than format
|
||||
specifiers, the format string is reused until it interprets
|
||||
the last argument.
|
||||
|
||||
If there are fewer format specifiers than arguments, number formats
|
||||
are set to zero (0), while string formats are set to null (empty).
|
||||
|
||||
## printf Specifiers
|
||||
|
||||
Format Description
|
||||
------ -----------
|
||||
%c Treat the arguments as a single character.
|
||||
%d Treat the input as a decimal (integer) number (base 10).
|
||||
%e Treats the input as an exponential floating-point number.
|
||||
%f Treat the input as a floating-point number.
|
||||
%i Treat the input as an integer number (base 10).
|
||||
%o Treats the input as an octal number (base 8).
|
||||
%s Treat the input as a string of characters.
|
||||
%u Treat the input as an unsigned decimal (integer) number.
|
||||
%x Treats the input as a hexadecimal number (base 16).
|
||||
%% Print a percent sign.
|
||||
%Wd Print the W integer X digits wide.
|
||||
%(format)T Outputs a date-time string resulting from using format as a
|
||||
format string for strftime. The corresponding argument can
|
||||
be the number of seconds since Epoch (January 1, 1970, 00:00),
|
||||
-1 (the current time), or -2 (shell startup time).
|
||||
Not specifying an argument uses the current time as the default value.
|
||||
\% Print a percent sign.
|
||||
\n Prints a newline character.
|
||||
\t Print a tab character.
|
||||
|
||||
Some format specifiers accept format modifiers that modify their actions.
|
||||
Enter the modifiers between the % character and the character that
|
||||
specifies the format.
|
||||
|
||||
Available format modifiers are:
|
||||
|
||||
<N>. Enter a number that specifies a minimum field width.
|
||||
If the output text is shorter, it's padded with spaces.
|
||||
If the text is longer, the field expands.
|
||||
. (dot). When used with a field width modifier, the field doesn't
|
||||
expand for longer text. Instead, the text is truncated.
|
||||
-. Left-aligns the printed text. The default alignment is right.
|
||||
0. Pads the numbers with zeros instead of spaces.
|
||||
<space>. Pads a positive number with a space, and a negative
|
||||
number with a minus (-).
|
||||
+. Prints all numbers signed (+ for positive, - for negative).
|
||||
'. For decimal conversions, applies the thousands grouping
|
||||
separator to the integer portion of the output according
|
||||
to the current LC_NUMERIC file.
|
||||
|
||||
|
||||
0
config/cheat/cheatsheets/pure-bash-bible/.gitkeep
Normal file
1
config/cheat/cheatsheets/tldr
Submodule
86
config/cheat/conf.yml
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
# The editor to use with 'cheat -e <sheet>'. Defaults to $EDITOR or $VISUAL.
|
||||
# editor: $EDITOR
|
||||
|
||||
# Should 'cheat' always colorize output?
|
||||
colorize: false
|
||||
# Which 'chroma' colorscheme should be applied to the output?
|
||||
# Options are available here:
|
||||
# https://github.com/alecthomas/chroma/tree/master/styles
|
||||
# style: 'tokyonight-day'
|
||||
# Which 'chroma' "formatter" should be applied?
|
||||
# One of: "terminal", "terminal256", "terminal16m"
|
||||
formatter: terminal256
|
||||
# Through which pager should output be piped?
|
||||
# 'less -FRX' is recommended on Unix systems
|
||||
# 'more' is recommended on Windows
|
||||
pager: less -FRX
|
||||
# Cheatpaths are paths at which cheatsheets are available on your local
|
||||
# filesystem.
|
||||
#
|
||||
# It is useful to sort cheatsheets into different cheatpaths for organizational
|
||||
# purposes. For example, you might want one cheatpath for community
|
||||
# cheatsheets, one for personal cheatsheets, one for cheatsheets pertaining to
|
||||
# your day job, one for code snippets, etc.
|
||||
#
|
||||
# Cheatpaths are scoped, such that more "local" cheatpaths take priority over
|
||||
# more "global" cheatpaths. (The most global cheatpath is listed first in this
|
||||
# file; the most local is listed last.) For example, if there is a 'tar'
|
||||
# cheatsheet on both global and local paths, you'll be presented with the local
|
||||
# one by default. ('cheat -p' can be used to view cheatsheets from alternative
|
||||
# cheatpaths.)
|
||||
#
|
||||
# Cheatpaths can also be tagged as "read only". This instructs cheat not to
|
||||
# automatically create cheatsheets on a read-only cheatpath. Instead, when you
|
||||
# would like to edit a read-only cheatsheet using 'cheat -e', cheat will
|
||||
# perform a copy-on-write of that cheatsheet from a read-only cheatpath to a
|
||||
# writeable cheatpath.
|
||||
#
|
||||
# This is very useful when you would like to maintain, for example, a
|
||||
# "pristine" repository of community cheatsheets on one cheatpath, and an
|
||||
# editable personal repository of cheatsheets on another cheatpath.
|
||||
#
|
||||
# Cheatpaths can be also configured to automatically apply tags to cheatsheets
|
||||
# on certain paths, which can be useful for querying purposes.
|
||||
# Example: 'cheat -t work jenkins'.
|
||||
#
|
||||
# Community cheatsheets must be installed separately, though you may have
|
||||
# downloaded them automatically when installing 'cheat'. If not, you may
|
||||
# download them here:
|
||||
#
|
||||
# https://github.com/cheat/cheatsheets
|
||||
cheatpaths:
|
||||
# Cheatpath properties mean the following:
|
||||
# 'name': the name of the cheatpath
|
||||
# (view with 'cheat -d', filter with 'cheat -p')
|
||||
# 'path': the filesystem path of the cheatsheet directory
|
||||
# (view with 'cheat -d')
|
||||
# 'tags': tags that should be automatically applied to sheets on this path
|
||||
# 'readonly': shall user-created ('cheat -e') cheatsheets be saved here?
|
||||
- name: community
|
||||
path: ~/.config/cheat/cheatsheets/community
|
||||
tags: [community]
|
||||
readonly: true
|
||||
- name: pure-bash-bible
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
||||
tags: [pure-bash-bible]
|
||||
readonly: true
|
||||
- name: tldr
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/tldr/tldr
|
||||
tags: [tldr]
|
||||
readonly: true
|
||||
# If you have personalized cheatsheets, list them last. They will take
|
||||
# precedence over the more global cheatsheets.
|
||||
- name: personal
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
||||
tags: [personal]
|
||||
readonly: false
|
||||
# While it requires no configuration here, it's also worth noting that
|
||||
# cheat will automatically append directories named '.cheat' within the
|
||||
# current working directory to the 'cheatpath'. This can be very useful if
|
||||
# you'd like to closely associate cheatsheets with, for example, a directory
|
||||
# containing source code.
|
||||
#
|
||||
# Such "directory-scoped" cheatsheets will be treated as the most "local"
|
||||
# cheatsheets, and will override less "local" cheatsheets. Similarly,
|
||||
# directory-scoped cheatsheets will always be editable ('readonly: false').
|
||||
233
config/dircolors
Normal file
@@ -0,0 +1,233 @@
|
||||
# Configuration file for dircolors, a utility to help you set the
|
||||
# LS_COLORS environment variable used by GNU ls with the --color option.
|
||||
# Copyright (C) 1996-2023 Free Software Foundation, Inc.
|
||||
# Copying and distribution of this file, with or without modification,
|
||||
# are permitted provided the copyright notice and this notice are preserved.
|
||||
#
|
||||
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
|
||||
# slackware version of dircolors) are recognized but ignored.
|
||||
# Global config options can be specified before TERM or COLORTERM entries
|
||||
# ===================================================================
|
||||
# Terminal filters
|
||||
# ===================================================================
|
||||
# Below are TERM or COLORTERM entries, which can be glob patterns, which
|
||||
# restrict following config to systems with matching environment variables.
|
||||
COLORTERM ?*
|
||||
TERM Eterm
|
||||
TERM ansi
|
||||
TERM *color*
|
||||
TERM con[0-9]*x[0-9]*
|
||||
TERM cons25
|
||||
TERM console
|
||||
TERM cygwin
|
||||
TERM *direct*
|
||||
TERM dtterm
|
||||
TERM gnome
|
||||
TERM hurd
|
||||
TERM jfbterm
|
||||
TERM konsole
|
||||
TERM kterm
|
||||
TERM linux
|
||||
TERM linux-c
|
||||
TERM mlterm
|
||||
TERM putty
|
||||
TERM rxvt*
|
||||
TERM screen*
|
||||
TERM st
|
||||
TERM terminator
|
||||
TERM tmux*
|
||||
TERM vt100
|
||||
TERM xterm*
|
||||
# ===================================================================
|
||||
# Basic file attributes
|
||||
# ===================================================================
|
||||
# Below are the color init strings for the basic file types.
|
||||
# One can use codes for 256 or more colors supported by modern terminals.
|
||||
# The default color codes use the capabilities of an 8 color terminal
|
||||
# with some additional attributes as per the following codes:
|
||||
# Attribute codes:
|
||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
||||
# Text color codes:
|
||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
||||
# Background color codes:
|
||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
||||
#NORMAL 00 # no color code at all
|
||||
#FILE 00 # regular file: use no color at all
|
||||
RESET 0 # reset to "normal" color
|
||||
DIR 01;34 # directory
|
||||
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
|
||||
# numerical value, the color is as for the file pointed to.)
|
||||
MULTIHARDLINK 00 # regular file with more than one link
|
||||
FIFO 40;33 # pipe
|
||||
SOCK 01;35 # socket
|
||||
DOOR 01;35 # door
|
||||
BLK 40;33;01 # block device driver
|
||||
CHR 40;33;01 # character device driver
|
||||
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
|
||||
MISSING 00 # ... and the files they point to
|
||||
SETUID 37;41 # file that is setuid (u+s)
|
||||
SETGID 30;43 # file that is setgid (g+s)
|
||||
CAPABILITY 00 # file with capability (very expensive to lookup)
|
||||
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
|
||||
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
|
||||
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
|
||||
# This is for files with execute permission:
|
||||
EXEC 01;32
|
||||
# ===================================================================
|
||||
# File extension attributes
|
||||
# ===================================================================
|
||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
||||
# to color below. Put the suffix, a space, and the color init string.
|
||||
# (and any comments you want to add after a '#').
|
||||
# Suffixes are matched case insensitively, but if you define different
|
||||
# init strings for separate cases, those will be honored.
|
||||
#
|
||||
# If you use DOS-style suffixes, you may want to uncomment the following:
|
||||
#.cmd 01;32 # executables (bright green)
|
||||
#.exe 01;32
|
||||
#.com 01;32
|
||||
#.btm 01;32
|
||||
#.bat 01;32
|
||||
# Or if you want to color scripts even if they do not have the
|
||||
# executable bit actually set.
|
||||
#.sh 01;32
|
||||
#.csh 01;32
|
||||
# archives or compressed (bright red)
|
||||
.tar 01;31
|
||||
.tgz 01;31
|
||||
.arc 01;31
|
||||
.arj 01;31
|
||||
.taz 01;31
|
||||
.lha 01;31
|
||||
.lz4 01;31
|
||||
.lzh 01;31
|
||||
.lzma 01;31
|
||||
.tlz 01;31
|
||||
.txz 01;31
|
||||
.tzo 01;31
|
||||
.t7z 01;31
|
||||
.zip 01;31
|
||||
.z 01;31
|
||||
.dz 01;31
|
||||
.gz 01;31
|
||||
.lrz 01;31
|
||||
.lz 01;31
|
||||
.lzo 01;31
|
||||
.xz 01;31
|
||||
.zst 01;31
|
||||
.tzst 01;31
|
||||
.bz2 01;31
|
||||
.bz 01;31
|
||||
.tbz 01;31
|
||||
.tbz2 01;31
|
||||
.tz 01;31
|
||||
.deb 01;31
|
||||
.rpm 01;31
|
||||
.jar 01;31
|
||||
.war 01;31
|
||||
.ear 01;31
|
||||
.sar 01;31
|
||||
.rar 01;31
|
||||
.alz 01;31
|
||||
.ace 01;31
|
||||
.zoo 01;31
|
||||
.cpio 01;31
|
||||
.7z 01;31
|
||||
.rz 01;31
|
||||
.cab 01;31
|
||||
.wim 01;31
|
||||
.swm 01;31
|
||||
.dwm 01;31
|
||||
.esd 01;31
|
||||
# image formats
|
||||
.avif 01;35
|
||||
.jpg 01;35
|
||||
.jpeg 01;35
|
||||
.mjpg 01;35
|
||||
.mjpeg 01;35
|
||||
.gif 01;35
|
||||
.bmp 01;35
|
||||
.pbm 01;35
|
||||
.pgm 01;35
|
||||
.ppm 01;35
|
||||
.tga 01;35
|
||||
.xbm 01;35
|
||||
.xpm 01;35
|
||||
.tif 01;35
|
||||
.tiff 01;35
|
||||
.png 01;35
|
||||
.svg 01;35
|
||||
.svgz 01;35
|
||||
.mng 01;35
|
||||
.pcx 01;35
|
||||
.mov 01;35
|
||||
.mpg 01;35
|
||||
.mpeg 01;35
|
||||
.m2v 01;35
|
||||
.mkv 01;35
|
||||
.webm 01;35
|
||||
.webp 01;35
|
||||
.ogm 01;35
|
||||
.mp4 01;35
|
||||
.m4v 01;35
|
||||
.mp4v 01;35
|
||||
.vob 01;35
|
||||
.qt 01;35
|
||||
.nuv 01;35
|
||||
.wmv 01;35
|
||||
.asf 01;35
|
||||
.rm 01;35
|
||||
.rmvb 01;35
|
||||
.flc 01;35
|
||||
.avi 01;35
|
||||
.fli 01;35
|
||||
.flv 01;35
|
||||
.gl 01;35
|
||||
.dl 01;35
|
||||
.xcf 01;35
|
||||
.xwd 01;35
|
||||
.yuv 01;35
|
||||
.cgm 01;35
|
||||
.emf 01;35
|
||||
# https://wiki.xiph.org/MIME_Types_and_File_Extensions
|
||||
.ogv 01;35
|
||||
.ogx 01;35
|
||||
# audio formats
|
||||
.aac 00;36
|
||||
.au 00;36
|
||||
.flac 00;36
|
||||
.m4a 00;36
|
||||
.mid 00;36
|
||||
.midi 00;36
|
||||
.mka 00;36
|
||||
.mp3 00;36
|
||||
.mpc 00;36
|
||||
.ogg 00;36
|
||||
.ra 00;36
|
||||
.wav 00;36
|
||||
# https://wiki.xiph.org/MIME_Types_and_File_Extensions
|
||||
.oga 00;36
|
||||
.opus 00;36
|
||||
.spx 00;36
|
||||
.xspf 00;36
|
||||
# backup files
|
||||
*~ 00;90
|
||||
*# 00;90
|
||||
.bak 00;90
|
||||
.old 00;90
|
||||
.orig 00;90
|
||||
.part 00;90
|
||||
.rej 00;90
|
||||
.swp 00;90
|
||||
.tmp 00;90
|
||||
.dpkg-dist 00;90
|
||||
.dpkg-old 00;90
|
||||
.ucf-dist 00;90
|
||||
.ucf-new 00;90
|
||||
.ucf-old 00;90
|
||||
.rpmnew 00;90
|
||||
.rpmorig 00;90
|
||||
.rpmsave 00;90
|
||||
#
|
||||
# Subsequent TERM or COLORTERM entries, can be used to add / override
|
||||
# config specific to those matching environment variables.
|
||||
13
config/direnv/direnv.toml
Normal file
@@ -0,0 +1,13 @@
|
||||
[global]
|
||||
disable_stdin = false
|
||||
load_dotenv = true
|
||||
hide_env_diff = false
|
||||
|
||||
[whitelist]
|
||||
prefix = [
|
||||
"~/Code/"
|
||||
]
|
||||
exact = [
|
||||
"~/.dotfiles/.envrc"
|
||||
]
|
||||
|
||||
5
config/direnv/lib/use_asdf.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
|
||||
# shellcheck shell=bash
|
||||
use_asdf() {
|
||||
source_env "$(asdf direnv envrc "$@")"
|
||||
}
|
||||
453
config/exports
Normal file → Executable file
@@ -1,23 +1,462 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# vim: filetype=zsh
|
||||
|
||||
# Set XDG directories if not already set
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
|
||||
[ -z "$XDG_DATA_HOME" ] && export XDG_DATA_HOME="$HOME/.local/share"
|
||||
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
|
||||
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
|
||||
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
# if DOTFILES is not set, set it to the default location
|
||||
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
|
||||
if ! command -v msg &> /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ $VERBOSE -eq 1 ]] && msgr msg "-> $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
# Cache commands using bkt if installed
|
||||
if command -v bkt &> /dev/null; then
|
||||
bkt()
|
||||
{
|
||||
command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
|
||||
}
|
||||
else
|
||||
# If bkt isn't installed, skip its arguments and just execute directly.
|
||||
# Optionally write a msg to stderr suggesting users install bkt.
|
||||
bkt()
|
||||
{
|
||||
while [[ $1 == --* ]]; do shift; done
|
||||
"$@"
|
||||
}
|
||||
fi
|
||||
|
||||
# Shorthand for checking if the system has the bin in path,
|
||||
# this version does not use caching.
|
||||
# Usage: have_command php && php -v
|
||||
have_command()
|
||||
{
|
||||
[ -z "$1" ] && {
|
||||
echo "Usage: have_command <command>"
|
||||
return 1
|
||||
}
|
||||
|
||||
command -v "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Shorthand for checking if the system has the bin in path,
|
||||
# this version uses caching.
|
||||
# Usage: have php && php -v
|
||||
have()
|
||||
{
|
||||
bkt -- which "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Function to run dark-notify and change alacritty theme
|
||||
# It uses flock to prevent running multiple instances.
|
||||
# Install flock with `brew install flock` on macOS.
|
||||
darknotify_alacritty()
|
||||
{
|
||||
x-have flock && [[ -f /tmp/dark-notify-alacritty.lock ]] && return
|
||||
x-have dark-notify && {
|
||||
# subprocess is used to prevent the command from showing it was backgrounded
|
||||
(
|
||||
flock /tmp/dark-notify-alacritty.lock dark-notify \
|
||||
-c "$HOME/.dotfiles/local/bin/x-change-alacritty-theme" &
|
||||
) &> /dev/null
|
||||
}
|
||||
return 0
|
||||
}
|
||||
# darknotify_alacritty
|
||||
|
||||
# Function to list installed Homebrew packages using bkt caching
|
||||
brew_installed()
|
||||
{
|
||||
bkt -- brew list
|
||||
}
|
||||
|
||||
# Shorthand for checking if a Homebrew package is installed
|
||||
# Usage: have_brew php && php -v
|
||||
have_brew()
|
||||
{
|
||||
! have brew && return 125
|
||||
|
||||
if bkt -- brew list "$1" &> /dev/null; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Alacritty preexec hook to update dynamic title
|
||||
preexec()
|
||||
{
|
||||
print -n -P "\e]0;$1%~\a"
|
||||
}
|
||||
|
||||
# Update dotfiles
|
||||
dfu()
|
||||
{
|
||||
(
|
||||
cd "$DOTFILES" && git rebase --ff --autostash && ./install
|
||||
)
|
||||
}
|
||||
|
||||
# Weather in Tampere, or other city
|
||||
weather()
|
||||
{
|
||||
# https://github.com/chubin/wttr.in#usage
|
||||
local city="${1:-Tampere}"
|
||||
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
|
||||
}
|
||||
|
||||
# Docker
|
||||
ssh_docker()
|
||||
{
|
||||
docker exec -it "$@" bash
|
||||
}
|
||||
|
||||
# Rector project to php version 8.2 by default.
|
||||
rector()
|
||||
{
|
||||
local php="${1:-82}"
|
||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||
"/project/" \
|
||||
--set "php${php}" \
|
||||
--autoload-file /project/vendor/autoload.php
|
||||
}
|
||||
|
||||
# Commit everything
|
||||
commit()
|
||||
{
|
||||
local commitMessage="$*"
|
||||
|
||||
if [ -z "$commitMessage" ]; then
|
||||
commitMessage="Automated commit"
|
||||
fi
|
||||
|
||||
git add .
|
||||
git commit -a -m "$commitMessage"
|
||||
}
|
||||
|
||||
scheduler()
|
||||
{
|
||||
while :; do
|
||||
php artisan schedule:run
|
||||
echo "Sleeping 60 seconds..."
|
||||
sleep 60
|
||||
done
|
||||
}
|
||||
|
||||
# Run command silently
|
||||
# Usage: silent uptime
|
||||
silent()
|
||||
{
|
||||
"$@" >&/dev/null
|
||||
}
|
||||
|
||||
# Check if a file contains non-ascii characters
|
||||
nonascii()
|
||||
{
|
||||
LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
|
||||
}
|
||||
|
||||
# Remove non-ascii characters from string
|
||||
# Usage: strip_nonascii "string"
|
||||
strip_nonascii()
|
||||
{
|
||||
# shellcheck disable=SC2001
|
||||
echo "$1" | LC_ALL=C sed 's/[^[:print:][:space:]]//g'
|
||||
}
|
||||
|
||||
# Slugify a string
|
||||
# Usage: slugify "string"
|
||||
slugify()
|
||||
{
|
||||
echo "$1" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr '[:upper:]' '[:lower:]'
|
||||
}
|
||||
|
||||
# https://stackoverflow.com/a/85932
|
||||
fn_exists()
|
||||
{
|
||||
declare -f -F "$1" > /dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
# Creates a random string
|
||||
rnd()
|
||||
{
|
||||
echo $RANDOM | md5sum | head -c 20
|
||||
}
|
||||
|
||||
# return sha256sum for file
|
||||
# $1 - filename (string)
|
||||
get_sha256sum()
|
||||
{
|
||||
sha256sum "$1" | head -c 64
|
||||
}
|
||||
|
||||
# Replaceable file
|
||||
#
|
||||
# $1 - filename (string)
|
||||
# $2 - filename (string)
|
||||
#
|
||||
# Returns 1 when replaceable, 0 when not replaceable.
|
||||
replaceable()
|
||||
{
|
||||
FILE1="$1"
|
||||
FILE2="$2"
|
||||
|
||||
[[ ! -r $FILE1 ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "File 1 ($FILE1) does not exist"
|
||||
return 0
|
||||
}
|
||||
[[ ! -r $FILE2 ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "File 2 ($FILE2) does not exist, replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
FILE1_HASH=$(get_sha256sum "$FILE1")
|
||||
FILE2_HASH=$(get_sha256sum "$FILE2")
|
||||
|
||||
[[ $FILE1_HASH == "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 1 ($FILE1)"
|
||||
return 0
|
||||
}
|
||||
[[ $FILE2_HASH == "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 2 ($FILE2), replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
[[ $FILE1_HASH == "$FILE2_HASH" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr ok "Files match, not replaceable: $FILE1"
|
||||
return 0
|
||||
}
|
||||
|
||||
[[ $VERBOSE -eq 1 ]] && msgr warn "Files do not match ($FILE1_HASH != $FILE2_HASH), replaceable"
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
export COMPLETION_WAITING_DOTS=true
|
||||
|
||||
# Bash completion file location
|
||||
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
|
||||
|
||||
# History env variables
|
||||
export HIST_STAMPS="yyyy-mm-dd"
|
||||
|
||||
export HISTFILE="${XDG_STATE_HOME}/zsh/history"
|
||||
# Larger bash history (allow 32³ entries; default is 500)
|
||||
export HISTSIZE=32768
|
||||
export HISTFILESIZE=$HISTSIZE
|
||||
export HISTCONTROL=ignoredups
|
||||
|
||||
# don't put duplicate lines or lines starting with space in the history.
|
||||
# See bash(1) for more options
|
||||
export HISTCONTROL=ignoreboth
|
||||
# Make some commands not show up in history
|
||||
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
|
||||
|
||||
# And include the parameter for ZSH
|
||||
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
|
||||
|
||||
# Highlight section titles in manual pages
|
||||
export LESS_TERMCAP_md="$ORANGE"
|
||||
# Less history location
|
||||
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
|
||||
|
||||
# Don’t clear the screen after quitting a manual page
|
||||
# Highlight section titles in manual pages
|
||||
# export LESS_TERMCAP_md="$ORANGE"
|
||||
|
||||
# zsh autoloaded terminfo
|
||||
# export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
||||
# export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
||||
|
||||
# Don't clear the screen after quitting a manual page
|
||||
export MANPAGER="less -X"
|
||||
|
||||
# Always enable colored `grep` output
|
||||
export GREP_OPTIONS="--color=auto"
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
hash shopt 2> /dev/null && shopt -s checkwinsize
|
||||
|
||||
# shellcheck disable=SC2155
|
||||
export SHORT_HOST=$(hostname -s)
|
||||
|
||||
# Antidote configuration
|
||||
# https://getantidote.github.io/
|
||||
msg "Setting up Antidote configuration"
|
||||
export ANTIDOTE_DIR="$DOTFILES/tools/antidote"
|
||||
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
||||
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
||||
|
||||
# Ansible configuration
|
||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||
msg "Setting up Ansible configuration"
|
||||
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
|
||||
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
|
||||
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
# aws
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
|
||||
msg "Setting up AWS configuration"
|
||||
export AWS_CONFIG_FILE="${XDG_STATE_HOME}/aws/config"
|
||||
export AWS_SHARED_CREDENTIALS_FILE="${XDG_STATE_HOME}/aws/credentials"
|
||||
export AWS_DATA_PATH="${XDG_DATA_HOME}/aws"
|
||||
export AWS_DEFAULT_REGION="eu-west-1"
|
||||
export AWS_DEFAULT_OUTPUT="table"
|
||||
export AWS_CONFIGURE_KEYS=true
|
||||
export AWS_CONFIGURE_REGION=true
|
||||
export AWS_CONFIGURE_OUTPUT=true
|
||||
export AWS_CONFIGURE_PROFILE=true
|
||||
export AWS_CONFIGURE_PROMPT=true
|
||||
export AWS_CONFIGURE_PROMPT_DEFAULT="default"
|
||||
|
||||
# bob manages nvim versions
|
||||
msg "Setting up bob configuration"
|
||||
x-path-prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
|
||||
# bkt (shell command caching tool) configuration
|
||||
msg "Setting up bkt configuration"
|
||||
export BKT_TTL=1m
|
||||
|
||||
# brew, https://docs.brew.sh/Manpage
|
||||
msg "Setting up Homebrew configuration"
|
||||
export HOMEBREW_NO_ANALYTICS=true
|
||||
export HOMEBREW_NO_ENV_HINTS=true
|
||||
export HOMEBREW_BUNDLE_MAS_SKIP=true
|
||||
export HOMEBREW_BUNDLE_FILE="$XDG_CONFIG_HOME/homebrew/Brewfile"
|
||||
x-have brew && {
|
||||
eval "$(brew shellenv)"
|
||||
}
|
||||
|
||||
# composer, https://getcomposer.org/
|
||||
msg "Setting up Composer configuration"
|
||||
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
|
||||
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
|
||||
export PATH="$COMPOSER_BIN:$PATH"
|
||||
|
||||
# direnv, https://direnv.net/
|
||||
# https://direnv.net/docs/hook.html
|
||||
# Set the hook to show the direnv message in a different color
|
||||
# export DIRENV_LOG_FORMAT=$'\033[2mdirenv: %s\033[0m'
|
||||
export DIRENV_LOG_FORMAT=
|
||||
|
||||
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
||||
msg "Setting up Docker configuration"
|
||||
export DOCKER_CONFIG="${XDG_CONFIG_HOME}/docker"
|
||||
x-dc "$DOCKER_CONFIG"
|
||||
# Docker: Disable snyk ad
|
||||
export DOCKER_SCAN_SUGGEST=false
|
||||
|
||||
# fzf
|
||||
export FZF_BASE="${XDG_CONFIG_HOME}/fzf"
|
||||
export FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
|
||||
|
||||
# GnuPG
|
||||
# https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html
|
||||
msg "Setting up GnuPG configuration"
|
||||
export GNUPGHOME="${XDG_DATA_HOME}/gnupg"
|
||||
|
||||
# Go
|
||||
# https://golang.org/doc/code.html
|
||||
msg "Setting up Go configuration"
|
||||
export GOPATH="$XDG_DATA_HOME/go"
|
||||
export GOBIN="$XDG_BIN_HOME"
|
||||
|
||||
# Lando
|
||||
export PATH="$HOME/.lando/bin${PATH+:$PATH}" #landopath
|
||||
|
||||
# NPM: Add npm packages to path
|
||||
msg "Setting up NPM configuration"
|
||||
x-have node && {
|
||||
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
||||
export PATH="$NVM_NODE_BIN_DIR:$PATH"
|
||||
}
|
||||
|
||||
# oh-my-posh (omp) configuration
|
||||
msg "Setting up oh-my-posh configuration"
|
||||
export OHMYPOSH_CFG="$DOTFILES/config/omp/own.toml"
|
||||
|
||||
# op (1Password cli) is present
|
||||
msg "Setting up 1Password CLI configuration"
|
||||
export OP_CACHE="$XDG_STATE_HOME/1password"
|
||||
|
||||
# Python
|
||||
#
|
||||
# pyenv, python environments
|
||||
msg "Setting up Python configuration"
|
||||
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
|
||||
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
||||
## for MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
export AUTOSWITCH_VIRTUAL_ENV_DIR="$WORKON_HOME"
|
||||
export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
x-have pyenv && eval "$(pyenv init -)"
|
||||
|
||||
# Rust / cargo
|
||||
msg "Setting up Rust/Cargo configuration"
|
||||
export RUST_WITHOUT=rust-docs
|
||||
|
||||
# screen
|
||||
# https://www.gnu.org/software/screen/manual/screen.html
|
||||
msg "Setting up screen configuration"
|
||||
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
||||
|
||||
# sonarlint
|
||||
# https://www.sonarlint.org/
|
||||
msg "Setting up Sonarlint configuration"
|
||||
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
|
||||
|
||||
# terraform
|
||||
# https://www.terraform.io/docs/cli/config/config-file.html
|
||||
# https://www.terraform.io/docs/cli/config/environment-variables.html
|
||||
msg "Setting up Terraform configuration"
|
||||
export TF_DATA_DIR="$XDG_STATE_HOME/terraform"
|
||||
export TF_CLI_CONFIG_FILE="$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
|
||||
# tmux
|
||||
# https://tmux.github.io/
|
||||
msg "Setting up tmux configuration"
|
||||
export TMUX_TMPDIR="$XDG_STATE_HOME/tmux"
|
||||
export TMUX_CONF_DIR="$XDG_CONFIG_HOME/tmux"
|
||||
export TMUX_PLUGINS="$TMUX_CONF_DIR/plugins"
|
||||
export TMUX_CONF="$TMUX_CONF_DIR/tmux.conf"
|
||||
## These settings are for zsh-tmux
|
||||
export ZSH_TMUX_AUTOSTART=true
|
||||
export ZSH_TMUX_CONFIG="$TMUX_CONF"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
|
||||
# tms, https://github.com/jrmoulton/tmux-sessionizer
|
||||
export TMS_CONFIG_FILE="${XDG_CONFIG_HOME}/tms/config.toml"
|
||||
|
||||
# wakatime, https://github.com/wakatime/wakatime-cli
|
||||
msg "Setting up Wakatime configuration"
|
||||
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
|
||||
x-dc "$WAKATIME_HOME"
|
||||
|
||||
# Misc
|
||||
msg "Setting up miscellaneous configuration"
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
|
||||
|
||||
[ -f "$XDG_CONFIG_HOME/exports-secret" ] && source "$XDG_CONFIG_HOME/exports-secret"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-local" ] && source "$XDG_CONFIG_HOME/exports-local"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)-secret" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)-secret"
|
||||
|
||||
25
config/exports-lakka
Normal file
@@ -0,0 +1,25 @@
|
||||
# lakka exports
|
||||
|
||||
## LUA
|
||||
if command -v luarocks &> /dev/null; then
|
||||
eval "$(luarocks path --bin)"
|
||||
fi
|
||||
|
||||
export PATH="$HOME/.local/go/bin:$PATH"
|
||||
|
||||
alias logrotate='/usr/sbin/logrotate -s "$HOME/logs/state"'
|
||||
alias nano='nano -wS -$'
|
||||
alias gpg=gpg2
|
||||
|
||||
ACME_PATH="$HOME/.acme.sh"
|
||||
# shellcheck source=$HOME/.acme.sh/acme.sh.env
|
||||
if [[ -s "$ACME_PATH/acme.sh.env" ]]; then
|
||||
source "$ACME_PATH/acme.sh.env"
|
||||
fi
|
||||
|
||||
export RVM_PATH="$HOME/.rvm"
|
||||
export PATH="$RVM_PATH/bin:$PATH"
|
||||
# shellcheck source=$HOME/.rvm/scripts/rvm
|
||||
if [[ -s "$RVM_PATH/scripts/rvm" ]]; then
|
||||
source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
|
||||
fi
|
||||
6
config/exports-secret.example
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# This file is secret and wont be added to the git repo.
|
||||
|
||||
export GITLAB_API_TOKEN=""
|
||||
export GREN_GITHUB_TOKEN=""
|
||||
108
config/fish/alias.fish
Normal file
@@ -0,0 +1,108 @@
|
||||
# Set aliases for fish shell
|
||||
|
||||
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
|
||||
|
||||
# eza aliases if eza is installed
|
||||
if type -q eza >/dev/null
|
||||
function eza_git -d "Use eza and its git options if in a git repo"
|
||||
if git rev-parse --is-inside-work-tree &>/dev/null
|
||||
eza --group-directories-first --icons=always --smart-group --git $argv
|
||||
else
|
||||
eza --group-directories-first --icons=always --smart-group $argv
|
||||
end
|
||||
end
|
||||
|
||||
function lsa --wraps='eza_git -al' --description 'eza -al'
|
||||
eza_git -al $argv
|
||||
end
|
||||
|
||||
function ls --wraps='eza_git' --description eza
|
||||
eza_git $argv
|
||||
end
|
||||
|
||||
function ll --wraps='eza_git -l' --description 'eza -l'
|
||||
eza_git -l $argv
|
||||
end
|
||||
|
||||
function l --wraps='eza_git' --description eza
|
||||
eza_git $argv
|
||||
end
|
||||
end
|
||||
|
||||
# Edit fish alias file
|
||||
function .a --wraps='nvim ~/.dotfiles/config/fish/alias.fish' --description 'edit alias.fish'
|
||||
nvim ~/.dotfiles/config/fish/alias.fish $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my projects are stored
|
||||
function .c --wraps='cd ~/Code' --description 'cd ~/Code'
|
||||
cd ~/Code $argv
|
||||
end
|
||||
|
||||
# Go to the directory where the dotfiles are stored
|
||||
function .d --wraps='cd ~/.dotfiles' --description 'cd ~/.dotfiles'
|
||||
cd ~/.dotfiles $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my work codes are stored
|
||||
function .s --wraps='cd ~/Code/s' --description 'cd ~/Code/s'
|
||||
cd ~/Code/s $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my personal codes are stored
|
||||
function .p --wraps='cd ~/Code/ivuorinen' --description 'cd ~/Code/ivuorinen'
|
||||
cd ~/Code/ivuorinen $argv
|
||||
end
|
||||
|
||||
# shortcut to commit with a message
|
||||
function commit --wraps='git commit -a -m "chore: automated commit"' --description 'commit shortcut'
|
||||
set -l commitMessage $argv
|
||||
git add .
|
||||
|
||||
if test -z "$commitMessage"
|
||||
if type -q aicommits
|
||||
aicommits --type conventional
|
||||
else
|
||||
git commit -a -m "chore: automated commit"
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
git commit -a -m "$commitMessage"
|
||||
end
|
||||
|
||||
function configure_tide --description 'Configure tide with the lean style and my preferences'
|
||||
tide configure \
|
||||
--auto \
|
||||
--style=Lean \
|
||||
--prompt_colors='True color' \
|
||||
--show_time=No \
|
||||
--lean_prompt_height='Two lines' \
|
||||
--prompt_connection=Disconnected \
|
||||
--prompt_spacing=Sparse \
|
||||
--icons='Many icons' \
|
||||
--transient=Yes
|
||||
end
|
||||
|
||||
# Abbreviations for git
|
||||
abbr --add gau git add -u
|
||||
abbr --add gaa git add -A
|
||||
abbr --add gcv git commit -v
|
||||
|
||||
# Abbreviations for composer
|
||||
abbr --add c composer
|
||||
abbr --add cu composer update
|
||||
abbr --add ci composer install
|
||||
|
||||
# Abbreviations for php artisan
|
||||
abbr --add .pa php artisan
|
||||
abbr --add .paf php artisan fresh
|
||||
abbr --add .pam php artisan migrate
|
||||
abbr --add .pams php artisan migrate --seed
|
||||
abbr --add .pat php artisan test
|
||||
|
||||
# Abbreviations for npm
|
||||
abbr --add .n npm
|
||||
abbr --add .nt npm test --if-present
|
||||
abbr --add .nb npm run build --if-present
|
||||
abbr --add .ns npm run start --if-present
|
||||
71
config/fish/completions/app.fish
Normal file
@@ -0,0 +1,71 @@
|
||||
# @halostatue/fish-macos/completions/app.fish:v7.0.1
|
||||
|
||||
complete --command app --erase
|
||||
|
||||
complete --command app --arguments bundleid \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Show bundle IDs for macOS apps'
|
||||
|
||||
complete --command app --arguments find \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Find macOS apps by pattern'
|
||||
|
||||
complete --command app --arguments frontmost \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows the front-most application'
|
||||
|
||||
complete --command app --arguments icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Extracts a MacOS app icon as a png file'
|
||||
|
||||
complete --command app --arguments quit \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Quit macOS apps by pattern'
|
||||
|
||||
for subcommand in bundleid find
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option a --long-option all --description 'Show all matches'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option q --long-option quiet --description 'Quiet (show no output)'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for app '$subcommand
|
||||
end
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'bundleid \
|
||||
--short-option s --long-option short --description 'Show only the bundle ID'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option b --long-option bundle-id --description 'Shows the app bundle ID'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option p --long-option path --description 'Shows the app path'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option n --long-option name --description 'Shows the app name'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option P --long-option pid --description 'Shows the PID of the app'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option a --long-option all --description 'Shows all details'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option h --long-option help --description 'Help for app 'frontmost
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option o --long-option output --description 'Extracts to this file or directory' \
|
||||
--force-files
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option w --long-option width --description 'Uses this pixel width' \
|
||||
--no-files
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option h --long-option help --description 'Help for app 'icon
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option r --long-option restart --description 'Restart after quit'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option h --long-option help --description 'Help for app 'quit
|
||||
125
config/fish/completions/aqua.fish
Normal file
@@ -0,0 +1,125 @@
|
||||
# aqua fish shell completion
|
||||
|
||||
function __fish_aqua_no_subcommand --description 'Test if there has been any subcommand yet'
|
||||
for i in (commandline -opc)
|
||||
if contains -- $i init install i generate g update-aqua upa update-checksum upc update up completion bash zsh fish help h help h which info remove rm vacuum cp policy allow deny init init-policy exec list generate-registry gr version root-dir help h
|
||||
return 1
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l log-level -r -d 'log level'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l config -s c -r -d 'configuration file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-cosign -d 'Disable Cosign verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-slsa -d 'Disable SLSA verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-github-artifact-attestation -d 'Disable GitHub Artifact Attestations verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l trace -r -d 'trace output file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l cpu-profile -r -d 'cpu profile output file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init' -d 'Create a configuration file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l use-import-dir -s u -d 'Use import_dir'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l import-dir -s i -r -d 'import_dir'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l create-dir -s d -d 'Create a directory named aqua and create aqua.yaml in it'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'install i' -d 'Install tools'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l only-link -s l -d 'create links but skip downloading packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l test -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1691'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate g' -d 'Search packages in registries and output the configuration interactively'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l f -r -d 'the file path of packages list. When the value is "-", the list is passed from the standard input'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l i -d 'Insert packages to configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l pin -d 'Pin version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l g -d 'Insert packages in a global configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l detail -s d -d 'Output additional fields such as description and link'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l o -r -d 'inserted file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l select-version -s s -d 'Select the installed version interactively. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-aqua upa' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-aqua upa' -d 'Update aqua'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-checksum upc' -d 'Create or Update aqua-checksums.json'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l all -s a -d 'Create or Update all aqua-checksums.json including global configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1769'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l prune -d 'Remove unused checksums'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update up' -d 'Update registries and packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l i -d 'Select packages with fuzzy finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l select-version -s s -d 'Select the version with fuzzy finder. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-registry -s r -d 'Update only registries'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-package -s p -d 'Update only packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'completion' -d 'Output shell completion script for bash, zsh, or fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from bash' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'bash' -d 'Output shell completion script for bash'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from zsh' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'zsh' -d 'Output shell completion script for zsh'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'fish' -d 'Output shell completion script for fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from fish' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'which' -d 'Output the absolute file path of the given command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l version -s v -d 'Output the given package version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from info' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'info' -d 'Show information'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'remove rm' -d 'Uninstall packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l all -s a -d 'uninstall all packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l mode -s m -r -d 'Removed target modes. l: link, p: package'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l i -d 'Select packages with a Fuzzy Finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'vacuum' -d 'Remove unused installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l init -d 'Create timestamp files.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l days -s d -r -d 'Expiration days'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'cp' -d 'Copy executable files in a directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l o -r -d 'destination directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'policy' -d 'Manage Policy'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from allow' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'allow' -d 'Allow a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from deny' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'deny' -d 'Deny a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'init' -d 'Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init-policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init-policy' -d '[Deprecated] Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from exec' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'exec' -d 'Execute tool'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'list' -d 'List packages in Registries'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l installed -s i -d 'List installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l all -s a -d 'List global configuration packages too'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate-registry gr' -d 'Generate a registry\'s package configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l out-testdata -r -d 'A file path where the testdata is outputted'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l cmd -r -d 'A list of commands joined with commas \',\''
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l generate-config -s c -r -d 'A configuration file path'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l limit -s l -r -d 'the maximum number of versions'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.15.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/2351'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l init -d 'Generate a configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from version' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'version' -d 'Show version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from root-dir' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'root-dir' -d 'Output the aqua root directory (AQUA_ROOT_DIR)'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
|
||||
70
config/fish/completions/finder.fish
Normal file
@@ -0,0 +1,70 @@
|
||||
# @halostatue/fish-macos/completions/finder.fish:v7.0.1
|
||||
|
||||
complete --command finder --erase
|
||||
|
||||
complete --command finder --arguments track \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Enables Finder PWD tracking'
|
||||
complete --command finder --arguments untrack \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Disables Finder PWD tracking'
|
||||
complete --command finder --arguments pwd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Prints the path of the Finder window'
|
||||
complete --command finder --arguments cd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes to the path of the Finder window'
|
||||
complete --command finder --arguments pushd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Pushes to the path of the Finder window'
|
||||
complete --command finder --arguments update \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Updates the Finder to PWD'
|
||||
complete --command finder --arguments list \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to list view with PWD'
|
||||
complete --command finder --arguments icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to icon view with PWD'
|
||||
complete --command finder --arguments column \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to column view with PWD'
|
||||
complete --command finder --arguments hidden \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows or hides `hidden` files'
|
||||
complete --command finder --arguments desktop-icons \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows or hides desktop icons'
|
||||
complete --command finder --arguments clean \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Cleans .DS_Store files'
|
||||
complete --command finder --arguments quarantine \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Works with file quarantine data'
|
||||
complete --command finder --arguments selected \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Print Finder selected files'
|
||||
|
||||
for subcommand in cd clean column desktop-icons hidden icon list pushd pwd quarantine selected track untrack update
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for finder '$subcommand
|
||||
end
|
||||
|
||||
for subcommand in hidden desktop-icons
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments off --description 'Turns '$subcommand' off'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments on --description 'Turns '$subcommand' on'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments toggle --description 'Toggles '$subcommand
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments status --description 'Shows the status of '$subcommand
|
||||
end
|
||||
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments show --description 'Shows quarantine events'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments clear --description 'Clears all quarantine events'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments clean --description 'Removes 'quarantine' attributes from files' \
|
||||
--require-parameter --force-files
|
||||
7
config/fish/completions/fisher.fish
Normal file
@@ -0,0 +1,7 @@
|
||||
complete --command fisher --exclusive --long help --description "Print help"
|
||||
complete --command fisher --exclusive --long version --description "Print version"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
|
||||
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
|
||||
8
config/fish/completions/fzf_configure_bindings.fish
Normal file
@@ -0,0 +1,8 @@
|
||||
complete fzf_configure_bindings --no-files
|
||||
complete fzf_configure_bindings --long help --short h --description "Print help" --condition "not __fish_seen_argument --help -h"
|
||||
complete fzf_configure_bindings --long directory --description "Change the key binding for Search Directory" --condition "not __fish_seen_argument --directory"
|
||||
complete fzf_configure_bindings --long git_log --description "Change the key binding for Search Git Log" --condition "not __fish_seen_argument --git_log"
|
||||
complete fzf_configure_bindings --long git_status --description "Change the key binding for Search Git Status" --condition "not __fish_seen_argument --git_status"
|
||||
complete fzf_configure_bindings --long history --description "Change the key binding for Search History" --condition "not __fish_seen_argument --history"
|
||||
complete fzf_configure_bindings --long processes --description "Change the key binding for Search Processes" --condition "not __fish_seen_argument --processes"
|
||||
complete fzf_configure_bindings --long variables --description "Change the key binding for Search Variables" --condition "not __fish_seen_argument --variables"
|
||||
176
config/fish/completions/git-profile.fish
Normal file
@@ -0,0 +1,176 @@
|
||||
# fish completion for git-profile -*- shell-script -*-
|
||||
|
||||
function __git_profile_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >> $file
|
||||
end
|
||||
end
|
||||
|
||||
function __git_profile_perform_completion
|
||||
__git_profile_debug "Starting __git_profile_perform_completion"
|
||||
|
||||
# Extract all args except the last one
|
||||
set -l args (commandline -opc)
|
||||
# Extract the last arg and escape it in case it is a space
|
||||
set -l lastArg (string escape -- (commandline -ct))
|
||||
|
||||
__git_profile_debug "args: $args"
|
||||
__git_profile_debug "last arg: $lastArg"
|
||||
|
||||
set -l requestComp "$args[1] __complete $args[2..-1] $lastArg"
|
||||
|
||||
__git_profile_debug "Calling $requestComp"
|
||||
set -l results (eval $requestComp 2> /dev/null)
|
||||
|
||||
# Some programs may output extra empty lines after the directive.
|
||||
# Let's ignore them or else it will break completion.
|
||||
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||
for line in $results[-1..1]
|
||||
if test (string trim -- $line) = ""
|
||||
# Found an empty line, remove it
|
||||
set results $results[1..-2]
|
||||
else
|
||||
# Found non-empty line, we have our proper output
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
set -l comps $results[1..-2]
|
||||
set -l directiveLine $results[-1]
|
||||
|
||||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||
# completions must be prefixed with the flag
|
||||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||
|
||||
__git_profile_debug "Comps: $comps"
|
||||
__git_profile_debug "DirectiveLine: $directiveLine"
|
||||
__git_profile_debug "flagPrefix: $flagPrefix"
|
||||
|
||||
for comp in $comps
|
||||
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||
end
|
||||
|
||||
printf "%s\n" "$directiveLine"
|
||||
end
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __git_profile_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
function __git_profile_prepare_completions
|
||||
__git_profile_debug ""
|
||||
__git_profile_debug "========= starting completion logic =========="
|
||||
|
||||
# Start fresh
|
||||
set --erase __git_profile_comp_results
|
||||
|
||||
set -l results (__git_profile_perform_completion)
|
||||
__git_profile_debug "Completion results: $results"
|
||||
|
||||
if test -z "$results"
|
||||
__git_profile_debug "No completion, probably due to a failure"
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $results[-1])
|
||||
set --global __git_profile_comp_results $results[1..-2]
|
||||
|
||||
__git_profile_debug "Completions are: $__git_profile_comp_results"
|
||||
__git_profile_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveError 1
|
||||
set -l shellCompDirectiveNoSpace 2
|
||||
set -l shellCompDirectiveNoFileComp 4
|
||||
set -l shellCompDirectiveFilterFileExt 8
|
||||
set -l shellCompDirectiveFilterDirs 16
|
||||
|
||||
if test -z "$directive"
|
||||
set directive 0
|
||||
end
|
||||
|
||||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||
if test $compErr -eq 1
|
||||
__git_profile_debug "Received error directive: aborting."
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||
__git_profile_debug "File extension filtering or directory filtering not supported"
|
||||
# Do full file completion instead
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||
|
||||
__git_profile_debug "nospace: $nospace, nofiles: $nofiles"
|
||||
|
||||
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||
# we need to count the number of valid completions.
|
||||
# To do so, we will filter on prefix as the completions we have received
|
||||
# may not already be filtered so as to allow fish to match on different
|
||||
# criteria than the prefix.
|
||||
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||
set -l prefix (commandline -t | string escape --style=regex)
|
||||
__git_profile_debug "prefix: $prefix"
|
||||
|
||||
set -l completions (string match -r -- "^$prefix.*" $__git_profile_comp_results)
|
||||
set --global __git_profile_comp_results $completions
|
||||
__git_profile_debug "Filtered completions are: $__git_profile_comp_results"
|
||||
|
||||
# Important not to quote the variable for count to work
|
||||
set -l numComps (count $__git_profile_comp_results)
|
||||
__git_profile_debug "numComps: $numComps"
|
||||
|
||||
if test $numComps -eq 1; and test $nospace -ne 0
|
||||
# We must first split on \t to get rid of the descriptions to be
|
||||
# able to check what the actual completion will be.
|
||||
# We don't need descriptions anyway since there is only a single
|
||||
# real completion which the shell will expand immediately.
|
||||
set -l split (string split --max 1 \t $__git_profile_comp_results[1])
|
||||
|
||||
# Fish won't add a space if the completion ends with any
|
||||
# of the following characters: @=/:.,
|
||||
set -l lastChar (string sub -s -1 -- $split)
|
||||
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||
# In other cases, to support the "nospace" directive we trick the shell
|
||||
# by outputting an extra, longer completion.
|
||||
__git_profile_debug "Adding second completion to perform nospace directive"
|
||||
set --global __git_profile_comp_results $split[1] $split[1].
|
||||
__git_profile_debug "Completions are now: $__git_profile_comp_results"
|
||||
end
|
||||
end
|
||||
|
||||
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||
# To be consistent with bash and zsh, we only trigger file
|
||||
# completion when there are no other completions
|
||||
__git_profile_debug "Requesting file completion"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q "git-profile"
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "git-profile " > /dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c git-profile -e
|
||||
|
||||
# The call to __git_profile_prepare_completions will setup __git_profile_comp_results
|
||||
# which provides the program's completion choices.
|
||||
complete -c git-profile -n '__git_profile_prepare_completions' -f -a '$__git_profile_comp_results'
|
||||
|
||||
119
config/fish/completions/mac.fish
Normal file
@@ -0,0 +1,119 @@
|
||||
# @halostatue/fish-macos/completions/mac.fish:v7.0.1
|
||||
|
||||
complete --command mac --erase
|
||||
|
||||
complete --command mac --arguments airdrop \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes AirDrop settings'
|
||||
complete --command mac --arguments airport \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Work with AirPort (WiFi) settings'
|
||||
complete --command mac --arguments brightness \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Adjust the screen brightness level'
|
||||
complete --command mac --arguments flushdns \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Flushes DNS'
|
||||
complete --command mac --arguments font-smoothing \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manages font smoothing settings'
|
||||
complete --command mac --arguments lsclean \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Cleans LaunchServices to remove duplicate Open with... entries'
|
||||
complete --command mac --arguments mail \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage various operations of Mail.app'
|
||||
complete --command mac --arguments proxy-icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage proxy icon appearance delay'
|
||||
complete --command mac --arguments transparency \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage UI transparency'
|
||||
complete --command mac --arguments vol \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes Mac volume; accepts 0–100 volume percentage'
|
||||
|
||||
for subcommand in airdrop airport brightness flushdns font-smoothing lsclean mail proxy-icon transparency version vol
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for mac '$subcommand
|
||||
end
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
|
||||
--arguments up --description 'Increases screen brightness'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
|
||||
--arguments down --description 'Decreases screen brightness'
|
||||
|
||||
for subcommand in airdrop proxy-icon transparency
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments on --description 'Enables '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments off --description 'Disables '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments toggle --description 'Toggles '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments status --description 'Shows the status of '$subcommand
|
||||
end
|
||||
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments scan --description 'Shows available networks'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments ssid --description 'Shows the SSID'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments password --description 'Gets the current WiFi network password'
|
||||
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
--arguments on --description 'Enables font smoothing; app IDs can be provided to limit control'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
--arguments off --description 'Disables font smoothing; app IDs can be provided to limit control'
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
|
||||
--arguments vacuum --description 'Vacuums the Mail.app envelope index'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
|
||||
--arguments attachments --description 'Sets Mail.app attachment handling' \
|
||||
--require-parameter --no-files
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
|
||||
--arguments inline \
|
||||
--description 'Sets Mail.app attachment handling so that they are inline to the message'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
|
||||
--arguments icon \
|
||||
--description 'Sets Mail.app attachment handling so that they are icons on the message'
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option s --long-option simple --description 'Simple mac version name'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option l --long-option lowercase --description 'Lowercase mac version name'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option f --long-option version --description 'Full version number'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option c --long-option comparable --description 'Simplified comparable version value'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option h --long-option help --description 'Help for mac 'version
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments mute --description 'Mutes volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments unmute --description 'Unmutes volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments show --description 'Shows the current volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 10 --description 'Sets the volume to 10%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 20 --description 'Sets the volume to 20%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 30 --description 'Sets the volume to 30%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 40 --description 'Sets the volume to 40%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 50 --description 'Sets the volume to 50%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 60 --description 'Sets the volume to 60%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 70 --description 'Sets the volume to 70%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 80 --description 'Sets the volume to 80%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 90 --description 'Sets the volume to 90%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 100 --description 'Sets the volume to 100%'
|
||||
8
config/fish/completions/manp.fish
Normal file
@@ -0,0 +1,8 @@
|
||||
# @halostatue/fish-macos/completions/manp.fish:v7.0.1
|
||||
|
||||
complete --command manp --erase
|
||||
complete --command manp --wraps man
|
||||
complete --command manp --exclusive --condition __fish_no_arguments \
|
||||
--short-option h --long-option help --description 'Show help for manp'
|
||||
complete --command manp --exclusive --condition __fish_no_arguments \
|
||||
--long-option clear-cache --description 'Clear the man page PDF cache'
|
||||