Compare commits
583 commits
main
...
8e56077d94
Author | SHA1 | Date | |
---|---|---|---|
Bruno BELANYI | 8e56077d94 | ||
Bruno BELANYI | 30c676e20b | ||
Bruno BELANYI | ed24bebc04 | ||
Bruno BELANYI | 23c4256769 | ||
Bruno BELANYI | 4e9764920a | ||
Bruno BELANYI | 3fc0201dfa | ||
Bruno BELANYI | d5527912a3 | ||
Bruno BELANYI | 44b2034135 | ||
Bruno BELANYI | 6f7f49dc13 | ||
Bruno BELANYI | d39c0419b7 | ||
Bruno BELANYI | e4622dd6ea | ||
Bruno BELANYI | 52e0a2fd0f | ||
Bruno BELANYI | d5e50b5389 | ||
Bruno BELANYI | fdf1f1617f | ||
Bruno BELANYI | be3391285a | ||
Bruno BELANYI | 435e56d53a | ||
Bruno BELANYI | df92d1c562 | ||
Bruno BELANYI | 8d1535e261 | ||
Bruno BELANYI | 2df0940665 | ||
Bruno BELANYI | 3e0a5ef1a4 | ||
Bruno BELANYI | 52722fb408 | ||
Bruno BELANYI | 93a3a4fb6b | ||
Bruno BELANYI | 1834a7002b | ||
Bruno BELANYI | bcbc9af372 | ||
Bruno BELANYI | 1be9eb517b | ||
Bruno BELANYI | 16fc677509 | ||
Bruno BELANYI | bf7184c260 | ||
Bruno BELANYI | 4627350311 | ||
Bruno BELANYI | 9ef35f06df | ||
Bruno BELANYI | 5b7fa7c09a | ||
Bruno BELANYI | a49e66da80 | ||
Bruno BELANYI | 35d96e1e69 | ||
Bruno BELANYI | 05e7883dab | ||
Bruno BELANYI | 273618ff94 | ||
Bruno BELANYI | 25967e21f1 | ||
Bruno BELANYI | 3df2ad0f1f | ||
Bruno BELANYI | 57e5def998 | ||
Bruno BELANYI | c5d9396a7d | ||
Bruno BELANYI | 5263942970 | ||
Bruno BELANYI | cd20914370 | ||
Bruno BELANYI | 04761da664 | ||
Bruno BELANYI | 14d9837b07 | ||
Bruno BELANYI | adedb42a99 | ||
Bruno BELANYI | 38c140ee86 | ||
Bruno BELANYI | d36f01d937 | ||
Bruno BELANYI | 62f93a852a | ||
Bruno BELANYI | 080d08bb13 | ||
Bruno BELANYI | 6da1c47472 | ||
Bruno BELANYI | 9c023b78a3 | ||
Bruno BELANYI | 3d6580f52b | ||
Bruno BELANYI | f34f2fc706 | ||
Bruno BELANYI | 95df872916 | ||
Bruno BELANYI | 3e86aa5ef4 | ||
Bruno BELANYI | f2f2b2a98a | ||
Bruno BELANYI | 842489a986 | ||
Bruno BELANYI | 4cecb8b987 | ||
Bruno BELANYI | bc56292544 | ||
Bruno BELANYI | c259fe87a0 | ||
Bruno BELANYI | 508b30eadd | ||
Bruno BELANYI | 605da54f24 | ||
Bruno BELANYI | 213d698d56 | ||
Bruno BELANYI | c5fff38942 | ||
Bruno BELANYI | e3b0f9d38f | ||
Bruno BELANYI | af56bc76cf | ||
Bruno BELANYI | 7a9760b0cd | ||
Bruno BELANYI | e8ffddedef | ||
Bruno BELANYI | 44dae3a940 | ||
Bruno BELANYI | b79cee6eee | ||
Bruno BELANYI | 56156e1fe4 | ||
Bruno BELANYI | f551c4fc30 | ||
Bruno BELANYI | f854c49c29 | ||
Bruno BELANYI | ae7c2d921b | ||
Bruno BELANYI | a96fb22d4d | ||
Bruno BELANYI | bd5a15ebe7 | ||
Bruno BELANYI | d26b9f2537 | ||
Bruno BELANYI | b7b3387df7 | ||
Bruno BELANYI | be84a4a6fa | ||
Bruno BELANYI | bbc47b6683 | ||
Bruno BELANYI | 416a4ca0d6 | ||
Bruno BELANYI | 19889f4cbf | ||
Bruno BELANYI | fa836d7df9 | ||
Bruno BELANYI | 8b985cda84 | ||
Bruno BELANYI | 0478efa817 | ||
Bruno BELANYI | 87f255d265 | ||
Bruno BELANYI | b9e5273672 | ||
Bruno BELANYI | dd3bfc74fa | ||
Bruno BELANYI | 5dd9d1c6d0 | ||
Bruno BELANYI | d87fd7b9e1 | ||
Bruno BELANYI | 01d7ead121 | ||
Bruno BELANYI | e701dd06ea | ||
Bruno BELANYI | faa8ae6d1e | ||
Bruno BELANYI | 729f60c471 | ||
Bruno BELANYI | d7a9783ceb | ||
Bruno BELANYI | f54fbcf793 | ||
Bruno BELANYI | 4b92a3fda9 | ||
Bruno BELANYI | 5947ec4217 | ||
Bruno BELANYI | bb512cf838 | ||
Bruno BELANYI | 3aa859861e | ||
Bruno BELANYI | 60b87c90fc | ||
Bruno BELANYI | 5f06b43ad4 | ||
Bruno BELANYI | 58470804d6 | ||
Bruno BELANYI | 58bf5b6b1c | ||
Bruno BELANYI | 367dc1e5a5 | ||
Bruno BELANYI | d9a2c12d3f | ||
Bruno BELANYI | f73f59b06c | ||
Bruno BELANYI | cb389b71b1 | ||
Bruno BELANYI | 4382904060 | ||
Bruno BELANYI | 5ce5057d0f | ||
Bruno BELANYI | d2e410de56 | ||
Bruno BELANYI | 1819c7077d | ||
Bruno BELANYI | 44ed078606 | ||
Bruno BELANYI | 305b0b985c | ||
Bruno BELANYI | 27448ac60a | ||
Bruno BELANYI | f73edd9f8d | ||
Bruno BELANYI | e57ebf4317 | ||
Bruno BELANYI | e8adbb5b20 | ||
Bruno BELANYI | 6d1d0c9488 | ||
Bruno BELANYI | 61cd9cb1a2 | ||
Bruno BELANYI | d6acc175de | ||
Bruno BELANYI | 9dd3dceb83 | ||
Bruno BELANYI | 633a422532 | ||
Bruno BELANYI | b082057170 | ||
Bruno BELANYI | 50c927fea3 | ||
Bruno BELANYI | 42cb742976 | ||
Bruno BELANYI | 5558642d32 | ||
Bruno BELANYI | a66441d496 | ||
Bruno BELANYI | 702bfafe73 | ||
Bruno BELANYI | f4b860d915 | ||
Bruno BELANYI | b565518e2d | ||
Bruno BELANYI | 15a093ff61 | ||
Bruno BELANYI | 06e7134ae0 | ||
Bruno BELANYI | d2db3e52c2 | ||
Bruno BELANYI | 9c009b40eb | ||
Bruno BELANYI | dc8d4c2802 | ||
Bruno BELANYI | afc78bac2a | ||
Bruno BELANYI | 3a313812b8 | ||
Bruno BELANYI | 876dacab85 | ||
Bruno BELANYI | d71a99083c | ||
Bruno BELANYI | 5f3d9b3a22 | ||
Bruno BELANYI | 0becdd4b99 | ||
Bruno BELANYI | 555c474b88 | ||
Bruno BELANYI | 0bf893c8a0 | ||
Bruno BELANYI | 925b872305 | ||
Bruno BELANYI | 2b5fedadd2 | ||
Bruno BELANYI | c7c38865e9 | ||
Bruno BELANYI | 5150bad300 | ||
Bruno BELANYI | 6f643052e1 | ||
Bruno BELANYI | 119504d0b5 | ||
Bruno BELANYI | 2d7f01f035 | ||
Bruno BELANYI | 6ebfa1a8cc | ||
Bruno BELANYI | 7d31aa93db | ||
Bruno BELANYI | cef430ed39 | ||
Bruno BELANYI | 4c5b556bb8 | ||
Bruno BELANYI | 10d35f73c8 | ||
Bruno BELANYI | 4491eaea49 | ||
Bruno BELANYI | 5f47ec564c | ||
Bruno BELANYI | 6633405e42 | ||
Bruno BELANYI | 21f0199791 | ||
Bruno BELANYI | 7c1f379d82 | ||
Bruno BELANYI | e91ebb24f0 | ||
Bruno BELANYI | a602cf4143 | ||
Bruno BELANYI | e428895ba7 | ||
Bruno BELANYI | e7ff83b1bb | ||
Bruno BELANYI | 79265008d2 | ||
Bruno BELANYI | 74a5c50fbe | ||
Bruno BELANYI | 680eeffd3a | ||
Bruno BELANYI | 9b4a92895f | ||
Bruno BELANYI | 2af0fe542f | ||
Bruno BELANYI | fe455ffe9f | ||
Bruno BELANYI | f6381b14b0 | ||
Bruno BELANYI | 7dc177cf44 | ||
Bruno BELANYI | da4acebdde | ||
Bruno BELANYI | 3f7fb26b8f | ||
Bruno BELANYI | ddeeb974a4 | ||
Bruno BELANYI | ea6c3727be | ||
Bruno BELANYI | 40ec169d6e | ||
Bruno BELANYI | a94f349dde | ||
Bruno BELANYI | b83f28f2ba | ||
Bruno BELANYI | 148d6609ec | ||
Bruno BELANYI | 14e4e681aa | ||
Bruno BELANYI | 3058636c87 | ||
Bruno BELANYI | 6bec62073b | ||
Bruno BELANYI | 5241bce29b | ||
Bruno BELANYI | 4f11cf3a9a | ||
Bruno BELANYI | 927dd9e02a | ||
Bruno BELANYI | 9582f8403e | ||
Bruno BELANYI | df1bc0d0d5 | ||
Bruno BELANYI | 760e24a356 | ||
Bruno BELANYI | c280f0cae8 | ||
Bruno BELANYI | cbf6ea9ac9 | ||
Bruno BELANYI | 8edef9d528 | ||
Bruno BELANYI | 708d60bcc6 | ||
Bruno BELANYI | 5e438f9e77 | ||
Bruno BELANYI | 9e33f4ca82 | ||
Bruno BELANYI | c55708ab54 | ||
Bruno BELANYI | 6c25380d5d | ||
Bruno BELANYI | 537fa5c909 | ||
Bruno BELANYI | 8a8256e555 | ||
Bruno BELANYI | 9117df1e72 | ||
Bruno BELANYI | 296833651a | ||
Bruno BELANYI | 158d39bb6e | ||
Bruno BELANYI | b1cff1b8a3 | ||
Bruno BELANYI | e475855e18 | ||
Bruno BELANYI | ef07c9ff43 | ||
Bruno BELANYI | 111ee136c8 | ||
Bruno BELANYI | 8d8904ccef | ||
Bruno BELANYI | 97fa58c220 | ||
Bruno BELANYI | ce5a8a20b9 | ||
Bruno BELANYI | b298607ea7 | ||
Bruno BELANYI | d918bf279d | ||
Bruno BELANYI | 6f3bee895c | ||
Bruno BELANYI | 069987f47e | ||
Bruno BELANYI | 971b6e9b65 | ||
Bruno BELANYI | 8c103a2261 | ||
Bruno BELANYI | 76f33fbd57 | ||
Bruno BELANYI | 7d787a2770 | ||
Bruno BELANYI | 323e99bbb0 | ||
Bruno BELANYI | 8569a8eb55 | ||
Bruno BELANYI | 6d393fdef2 | ||
Bruno BELANYI | a85922b3b3 | ||
Bruno BELANYI | d1cd5bfa32 | ||
Bruno BELANYI | d64a867afc | ||
Bruno BELANYI | cc21d84808 | ||
Bruno BELANYI | 84cdc30037 | ||
Bruno BELANYI | 07cf0fa4da | ||
Bruno BELANYI | 24de1890fc | ||
Bruno BELANYI | 4055ef17f0 | ||
Bruno BELANYI | 7ce69233c1 | ||
Bruno BELANYI | 9f86615e77 | ||
Bruno BELANYI | e805496588 | ||
Bruno BELANYI | 3201445c08 | ||
Bruno BELANYI | 30eaefc1d1 | ||
Bruno BELANYI | 5f41bb1647 | ||
Bruno BELANYI | fec4956063 | ||
Bruno BELANYI | a62c0ad126 | ||
Bruno BELANYI | 2cc13dddb5 | ||
Bruno BELANYI | de92358bc0 | ||
Bruno BELANYI | 167db81c6c | ||
Bruno BELANYI | 738d1760c3 | ||
Bruno BELANYI | e962d4c574 | ||
Bruno BELANYI | 1c0d671fff | ||
Bruno BELANYI | 3bf3980e45 | ||
Bruno BELANYI | f6faa11ff7 | ||
Bruno BELANYI | 67090494e2 | ||
Bruno BELANYI | 0d44b3b9f2 | ||
Bruno BELANYI | 37c20529c1 | ||
Bruno BELANYI | 2449a96652 | ||
Bruno BELANYI | 8a9337710f | ||
Bruno BELANYI | 7b75ea43ad | ||
Bruno BELANYI | fb6e2afe89 | ||
Bruno BELANYI | 51067582e0 | ||
Bruno BELANYI | 78ade4c605 | ||
Bruno BELANYI | 5c2921e00d | ||
Bruno BELANYI | 62a18cd3f6 | ||
Bruno BELANYI | c6cc64e156 | ||
Bruno BELANYI | 875a3d8587 | ||
Bruno BELANYI | 409e0ef357 | ||
Bruno BELANYI | b6af754199 | ||
Bruno BELANYI | ca5e5a53cd | ||
Bruno BELANYI | ba10af0644 | ||
Bruno BELANYI | 0f2c20e51d | ||
Bruno BELANYI | ca218730ff | ||
Bruno BELANYI | ac5fd7f472 | ||
Bruno BELANYI | db37cea907 | ||
Bruno BELANYI | 1cf93825b2 | ||
Bruno BELANYI | 8a2aad9b54 | ||
Bruno BELANYI | 018394b61d | ||
Bruno BELANYI | 1e3c633c72 | ||
Bruno BELANYI | df302465c9 | ||
Bruno BELANYI | 673ead7863 | ||
Bruno BELANYI | 3d10461a6e | ||
Bruno BELANYI | 75312c747b | ||
Bruno BELANYI | 68be7743ad | ||
Bruno BELANYI | 9d362655e2 | ||
Bruno BELANYI | 604b99a7ac | ||
Bruno BELANYI | 8467fda721 | ||
Bruno BELANYI | bad9b8a06b | ||
Bruno BELANYI | 2d26b36e31 | ||
Bruno BELANYI | c93a9e5a98 | ||
Bruno BELANYI | 3fa14ebe71 | ||
Bruno BELANYI | bd1a2000fe | ||
Bruno BELANYI | 4a0c10b897 | ||
Bruno BELANYI | 9f3811ea3b | ||
Bruno BELANYI | 5c95ba1113 | ||
Bruno BELANYI | 37bb7fd625 | ||
Bruno BELANYI | 45321072fc | ||
Bruno BELANYI | ed456c999d | ||
Bruno BELANYI | ad848ef89d | ||
Bruno BELANYI | 680d0c9f37 | ||
Bruno BELANYI | 9a06108603 | ||
Bruno BELANYI | c8633abf6d | ||
Bruno BELANYI | aceb4ef901 | ||
Bruno BELANYI | 5937d43993 | ||
Bruno BELANYI | add6326fdf | ||
Bruno BELANYI | b0e4475586 | ||
Bruno BELANYI | 5c1dd6500a | ||
Bruno BELANYI | 60e977611c | ||
Bruno BELANYI | 99462199bd | ||
Bruno BELANYI | 4fe18ff4cd | ||
Bruno BELANYI | 02ffbcf970 | ||
Bruno BELANYI | 878c92b67e | ||
Bruno BELANYI | 8596ce8638 | ||
Bruno BELANYI | 808058d576 | ||
Bruno BELANYI | 8ffad5d41b | ||
Bruno BELANYI | 52706ab4c4 | ||
Bruno BELANYI | 5ae7b593e4 | ||
Bruno BELANYI | 87613a9163 | ||
Bruno BELANYI | 47d19e5b3f | ||
Bruno BELANYI | a78091c57c | ||
Bruno BELANYI | 9aba0d3ce0 | ||
Bruno BELANYI | 78064bb2a1 | ||
Bruno BELANYI | 70af0ba99a | ||
Bruno BELANYI | dc2a3610a6 | ||
Bruno BELANYI | 894b571745 | ||
Bruno BELANYI | 2049e7a2c5 | ||
Bruno BELANYI | 7032ddef37 | ||
Bruno BELANYI | 81e12969eb | ||
Bruno BELANYI | b97eff2479 | ||
Bruno BELANYI | 4f742b69f2 | ||
Bruno BELANYI | 11fbbd62eb | ||
Bruno BELANYI | d21087ddcd | ||
Bruno BELANYI | 3919a87d9e | ||
Bruno BELANYI | 3fd487bbd2 | ||
Bruno BELANYI | 5916ae631d | ||
Bruno BELANYI | 1a436fd962 | ||
Bruno BELANYI | a48303e66d | ||
Bruno BELANYI | 30fc01b5ae | ||
Bruno BELANYI | 13684ecdc4 | ||
Bruno BELANYI | fe720b2de3 | ||
Bruno BELANYI | ec6b31f4a6 | ||
Bruno BELANYI | 1335bbfe9d | ||
Bruno BELANYI | 2cc1925346 | ||
Bruno BELANYI | eb0c5d5895 | ||
Bruno BELANYI | 8c298c26f9 | ||
Bruno BELANYI | 55a04cfac3 | ||
Bruno BELANYI | 1783c2838b | ||
Bruno BELANYI | e215f7aa1d | ||
Bruno BELANYI | afb683f1cf | ||
Bruno BELANYI | c320387746 | ||
Bruno BELANYI | bbb1231ad3 | ||
Bruno BELANYI | 9f00d8a38e | ||
Bruno BELANYI | 820b52314f | ||
Bruno BELANYI | a3293277d9 | ||
Bruno BELANYI | 2ecd417a68 | ||
Bruno BELANYI | 4e8045716c | ||
Bruno BELANYI | e060476f32 | ||
Bruno BELANYI | 2458ddf59d | ||
Bruno BELANYI | 8927b3182f | ||
Bruno BELANYI | f2dfeeb35b | ||
Bruno BELANYI | 971b610cd5 | ||
Bruno BELANYI | 21f48b5f71 | ||
Bruno BELANYI | a3edf2548b | ||
Bruno BELANYI | ea7b064546 | ||
Bruno BELANYI | ff8e64d601 | ||
Bruno BELANYI | 791109c3c1 | ||
Bruno BELANYI | 6eb3942270 | ||
Bruno BELANYI | 2232062fd9 | ||
Bruno BELANYI | d6e9f9786d | ||
Bruno BELANYI | 5abe4e929e | ||
Bruno BELANYI | 57717d70ef | ||
Bruno BELANYI | 7a382368e8 | ||
Bruno BELANYI | 0f17123d09 | ||
Bruno BELANYI | c6d21493ef | ||
Bruno BELANYI | 5cebb9b54b | ||
Bruno BELANYI | 92c2748747 | ||
Bruno BELANYI | 4cae294cf5 | ||
Bruno BELANYI | 23c6093c36 | ||
Bruno BELANYI | 3fdcfb5b5f | ||
Bruno BELANYI | c9418cc4d3 | ||
Bruno BELANYI | cd02cbff45 | ||
Bruno BELANYI | daa69a54fa | ||
Bruno BELANYI | 212dd299e2 | ||
Bruno BELANYI | cff3811cad | ||
Bruno BELANYI | 8f266245ee | ||
Bruno BELANYI | b8be3d80a8 | ||
Bruno BELANYI | b04c1b09ea | ||
Bruno BELANYI | 3a471433ed | ||
Bruno BELANYI | f8325cc9c7 | ||
Bruno BELANYI | cd1173d2f6 | ||
Bruno BELANYI | e319eaf09f | ||
Bruno BELANYI | e6ba569b36 | ||
Bruno BELANYI | ee21de5b94 | ||
Bruno BELANYI | 6614b47546 | ||
Bruno BELANYI | 06c53620f8 | ||
Bruno BELANYI | d43045c6d6 | ||
Bruno BELANYI | 6113ad154d | ||
Bruno BELANYI | e8982b8bc9 | ||
Bruno BELANYI | 7684489c9a | ||
Bruno BELANYI | 1994ef2b1b | ||
Bruno BELANYI | a434016252 | ||
Bruno BELANYI | 1794eefd30 | ||
Bruno BELANYI | 29437d3e3f | ||
Bruno BELANYI | a827a34501 | ||
Bruno BELANYI | 610b0f2f4b | ||
Bruno BELANYI | 59cb038045 | ||
Bruno BELANYI | 15db81eb3b | ||
Bruno BELANYI | 24efa3edca | ||
Bruno BELANYI | 2fe4f1faad | ||
Bruno BELANYI | 4f1f687eea | ||
Bruno BELANYI | b90be0acdf | ||
Bruno BELANYI | ea4c699b81 | ||
Bruno BELANYI | 8efe75295d | ||
Bruno BELANYI | 2d9b11406a | ||
Bruno BELANYI | 003c08cb09 | ||
Bruno BELANYI | 6728b50d3a | ||
Bruno BELANYI | 2eaf3bf2c7 | ||
Bruno BELANYI | 0077ce1f94 | ||
Bruno BELANYI | 14d9fc89f1 | ||
Bruno BELANYI | f660bf94e9 | ||
Bruno BELANYI | 3b9f01e780 | ||
Bruno BELANYI | 60f1e693d1 | ||
Bruno BELANYI | ce4b0b8c90 | ||
Bruno BELANYI | d2704b17fe | ||
Bruno BELANYI | 31f8ec6e98 | ||
Bruno BELANYI | af67d04992 | ||
Bruno BELANYI | f9bcf79430 | ||
Bruno BELANYI | b0cc830467 | ||
Bruno BELANYI | 9b054d10c7 | ||
Bruno BELANYI | e81aaa8ebc | ||
Bruno BELANYI | 737b5e797b | ||
Bruno BELANYI | 6728b5b949 | ||
Bruno BELANYI | 2999ba7c0b | ||
Bruno BELANYI | 1ac9f0cc8c | ||
Bruno BELANYI | 6074958292 | ||
Bruno BELANYI | da21e7a6f2 | ||
Bruno BELANYI | 395f15f181 | ||
Bruno BELANYI | 059831b532 | ||
Bruno BELANYI | 76d165343e | ||
Bruno BELANYI | f66da6fee6 | ||
Bruno BELANYI | ca1c7962ea | ||
Bruno BELANYI | 796df5475e | ||
Bruno BELANYI | 414606b58e | ||
Bruno BELANYI | 931b67fdb2 | ||
Bruno BELANYI | 8b4966fcbe | ||
Bruno BELANYI | a508db48c9 | ||
Bruno BELANYI | 406eeea9f6 | ||
Bruno BELANYI | 9d3d86365c | ||
Bruno BELANYI | 78d77890de | ||
Bruno BELANYI | a33fbc6659 | ||
Bruno BELANYI | b134aedff0 | ||
Bruno BELANYI | d31e293cef | ||
Bruno BELANYI | 182ec2a4db | ||
Bruno BELANYI | 81647c5a02 | ||
Bruno BELANYI | 8a8f7387f4 | ||
Bruno BELANYI | f2b20c65a8 | ||
Bruno BELANYI | cc37713839 | ||
Bruno BELANYI | e80485018c | ||
Bruno BELANYI | 15abb291ef | ||
Bruno BELANYI | fb56631ef3 | ||
Bruno BELANYI | 9113290161 | ||
Bruno BELANYI | 943ea20b16 | ||
Bruno BELANYI | 129fcdd42c | ||
Bruno BELANYI | d086af7e00 | ||
Bruno BELANYI | e4d8a4d4b2 | ||
Bruno BELANYI | 1a5dd0b91c | ||
Bruno BELANYI | 02c2a23ee5 | ||
Bruno BELANYI | f6ace9d438 | ||
Bruno BELANYI | 2a0b5b7802 | ||
Bruno BELANYI | 2c596395b0 | ||
Bruno BELANYI | 986701d1c8 | ||
Bruno BELANYI | ee33ab11c6 | ||
Bruno BELANYI | 7d0a772cce | ||
Bruno BELANYI | 97ee498405 | ||
Bruno BELANYI | e5fdfd6c44 | ||
Bruno BELANYI | 76148d75b8 | ||
Bruno BELANYI | 9e6bc604f3 | ||
Bruno BELANYI | b4d3b06fbf | ||
Bruno BELANYI | 8de23feee7 | ||
Bruno BELANYI | 0fc3bf3096 | ||
Bruno BELANYI | 7d48b0edab | ||
Bruno BELANYI | d23ad8f5e1 | ||
Bruno BELANYI | f3764ce20e | ||
Bruno BELANYI | f9d849c5da | ||
Bruno BELANYI | 59e833a55b | ||
Bruno BELANYI | 03130ed9ee | ||
Bruno BELANYI | ac4cf0c1a2 | ||
Bruno BELANYI | fab93a5f2f | ||
Bruno BELANYI | f04368a71e | ||
Bruno BELANYI | 30ce91557d | ||
Bruno BELANYI | d46f66842f | ||
Bruno BELANYI | 737484dcfe | ||
Bruno BELANYI | 125935ac0f | ||
Bruno BELANYI | e786eaddde | ||
Bruno BELANYI | e211ac7d73 | ||
Bruno BELANYI | 3f50abcbe0 | ||
Bruno BELANYI | 1c2193d698 | ||
Bruno BELANYI | 12b3397a20 | ||
Bruno BELANYI | ca620a4eb6 | ||
Bruno BELANYI | 885b45d39c | ||
Bruno BELANYI | 0c943d8430 | ||
Bruno BELANYI | 79dfb3a979 | ||
Bruno BELANYI | 00a5d1b076 | ||
Bruno BELANYI | 5e193b3a42 | ||
Bruno BELANYI | bf9de874ce | ||
Bruno BELANYI | 5aaa497653 | ||
Bruno BELANYI | 3887a86650 | ||
Bruno BELANYI | f57fd32088 | ||
Bruno BELANYI | 1c147613e4 | ||
Bruno BELANYI | 15190d4b50 | ||
Bruno BELANYI | 5f7d2c74bc | ||
Bruno BELANYI | 53dd04a0b7 | ||
Bruno BELANYI | 86ab6bf17a | ||
Bruno BELANYI | 6008ac470c | ||
Bruno BELANYI | 717c628ff1 | ||
Bruno BELANYI | 749ef9f072 | ||
Bruno BELANYI | a0c63f00f9 | ||
Bruno BELANYI | d9734dd505 | ||
Bruno BELANYI | 4225bdd103 | ||
Bruno BELANYI | 3a07cffa14 | ||
Bruno BELANYI | 06f9f423e9 | ||
Bruno BELANYI | ad1d907c25 | ||
Bruno BELANYI | ef0f4bdca5 | ||
Bruno BELANYI | b4d002033a | ||
Bruno BELANYI | 8837c7c33c | ||
Bruno BELANYI | f4cc68a650 | ||
Bruno BELANYI | 79525013b0 | ||
Bruno BELANYI | 2b8d01f056 | ||
Bruno BELANYI | b115d94cd6 | ||
Bruno BELANYI | 1022601602 | ||
Bruno BELANYI | 376e60d71e | ||
Bruno BELANYI | a03db294fe | ||
Bruno BELANYI | f2b9040175 | ||
Bruno BELANYI | b1e8664e32 | ||
Bruno BELANYI | b61aca7def | ||
Bruno BELANYI | d388a379d4 | ||
Bruno BELANYI | 3402b92784 | ||
Bruno BELANYI | b55466b791 | ||
Bruno BELANYI | 036d59ec11 | ||
Bruno BELANYI | f89e1ba3e9 | ||
Bruno BELANYI | 8788deac5e | ||
Bruno BELANYI | 676cd03c9c | ||
Bruno BELANYI | e329e7a59a | ||
Bruno BELANYI | 98a8e068ea | ||
Bruno BELANYI | f5fcd2a7a6 | ||
Bruno BELANYI | 1b9b598662 | ||
Bruno BELANYI | 05e0cd4e1f | ||
Bruno BELANYI | 9973e0d32f | ||
Bruno BELANYI | 8231e8feaa | ||
Bruno BELANYI | 8dc89846b2 | ||
Bruno BELANYI | 5a32160954 | ||
Bruno BELANYI | 6612d0226a | ||
Bruno BELANYI | 75e3d9bf70 | ||
Bruno BELANYI | 9dbfb65c27 | ||
Bruno BELANYI | f8d6447ac4 | ||
Bruno BELANYI | 185781a4e2 | ||
Bruno BELANYI | cdc29efafc | ||
Bruno BELANYI | 9f6c614c9f | ||
Bruno BELANYI | 54a20058fb | ||
Bruno BELANYI | 6bad81a644 | ||
Bruno BELANYI | 971ee359ce | ||
Bruno BELANYI | c175964630 | ||
Bruno BELANYI | 046391e26e | ||
Bruno BELANYI | b32fec2c63 | ||
Bruno BELANYI | 3ec448bf03 | ||
Bruno BELANYI | c3c44bceb6 | ||
Bruno BELANYI | e1240c188e | ||
Bruno BELANYI | d5b3b95827 | ||
Bruno BELANYI | c17b5f4004 | ||
Bruno BELANYI | e06edc8f47 | ||
Bruno BELANYI | 4d04dd9b9b | ||
Bruno BELANYI | e6b810b5a1 | ||
Bruno BELANYI | 595720dcd4 | ||
Bruno BELANYI | e6fb00ce9a | ||
Bruno BELANYI | d01b7963cd | ||
Bruno BELANYI | 646768c3b7 | ||
Bruno BELANYI | b254e0f7ac | ||
Bruno BELANYI | fee045d82c | ||
Bruno BELANYI | 76b17e924a | ||
Bruno BELANYI | 9fe78a5a70 | ||
Bruno BELANYI | 90ccf42779 | ||
Bruno BELANYI | cdbe16e703 | ||
Bruno BELANYI | 1da8177ea2 | ||
Bruno BELANYI | fe9f468e06 | ||
Bruno BELANYI | 45cb955433 | ||
Bruno BELANYI | b6fb77fc34 | ||
Bruno BELANYI | f57cfda767 | ||
Bruno BELANYI | 5427f15a17 | ||
Bruno BELANYI | 6acf9f4a19 | ||
Bruno BELANYI | cd7c8e2172 | ||
Bruno BELANYI | e0b0f44a9a | ||
Bruno BELANYI | bd53470e46 | ||
Bruno BELANYI | f634f1b2ed | ||
dc052386d1 |
|
@ -1,14 +1,16 @@
|
||||||
labels:
|
---
|
||||||
backend: local
|
kind: pipeline
|
||||||
|
type: exec
|
||||||
|
name: NixOS config check
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: nix flake check
|
- name: nix flake check
|
||||||
image: bash
|
|
||||||
commands:
|
commands:
|
||||||
- nix flake check
|
- nix flake check
|
||||||
|
|
||||||
- name: notify
|
- name: notifiy
|
||||||
image: bash
|
commands:
|
||||||
|
- nix run .#matrix-notifier
|
||||||
environment:
|
environment:
|
||||||
ADDRESS:
|
ADDRESS:
|
||||||
from_secret: matrix_homeserver
|
from_secret: matrix_homeserver
|
||||||
|
@ -18,9 +20,8 @@ steps:
|
||||||
from_secret: matrix_username
|
from_secret: matrix_username
|
||||||
PASS:
|
PASS:
|
||||||
from_secret: matrix_password
|
from_secret: matrix_password
|
||||||
commands:
|
|
||||||
- nix run '.#matrix-notifier'
|
|
||||||
when:
|
when:
|
||||||
status:
|
status:
|
||||||
- failure
|
- failure
|
||||||
- success
|
- success
|
||||||
|
...
|
13
.envrc
13
.envrc
|
@ -1,8 +1,9 @@
|
||||||
if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then
|
use_flake() {
|
||||||
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg="
|
watch_file flake.nix
|
||||||
fi
|
watch_file flake.lock
|
||||||
|
eval "$(nix print-dev-env)"
|
||||||
watch_file ./flake/checks.nix
|
}
|
||||||
watch_file ./flake/dev-shells.nix
|
|
||||||
|
|
||||||
|
ulimit -s unlimited # Bypass current bug in `nix` flakes evaluation
|
||||||
use flake
|
use flake
|
||||||
|
eval "$shellHooks"
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
indent_type = "Spaces"
|
|
17
bootstrap.sh
17
bootstrap.sh
|
@ -1,6 +1,5 @@
|
||||||
#!/usr/bin/env nix-shell
|
#!/usr/bin/env nix-shell
|
||||||
#! nix-shell -i bash -p bitwarden-cli git gnupg jq nix
|
#! nix-shell -i bash -p bitwarden-cli git gnupg jq nixFlakes
|
||||||
# shellcheck shell=bash
|
|
||||||
|
|
||||||
# Command failure is script failure
|
# Command failure is script failure
|
||||||
set -e
|
set -e
|
||||||
|
@ -11,6 +10,7 @@ BOLD_GREEN="\e[0;1;32m"
|
||||||
|
|
||||||
RESET="\e[0m"
|
RESET="\e[0m"
|
||||||
|
|
||||||
|
DEST="$HOME/.config/nixpkgs"
|
||||||
BW_SESSION=""
|
BW_SESSION=""
|
||||||
|
|
||||||
warn() {
|
warn() {
|
||||||
|
@ -58,8 +58,8 @@ get_ssh() {
|
||||||
|
|
||||||
get_doc "SysAdmin/SSH" "shared-key-public" "$HOME/.ssh/shared_rsa.pub" 644
|
get_doc "SysAdmin/SSH" "shared-key-public" "$HOME/.ssh/shared_rsa.pub" 644
|
||||||
get_doc "SysAdmin/SSH" "shared-key-private" "$HOME/.ssh/shared_rsa" 600
|
get_doc "SysAdmin/SSH" "shared-key-private" "$HOME/.ssh/shared_rsa" 600
|
||||||
get_doc "SysAdmin/SSH" "agenix-public" "$HOME/.ssh/agenix.pub" 644
|
get_doc "SysAdmin/SSH" "agenix-public" "$HOME/.ssh/id_ed25519.pub" 644
|
||||||
get_doc "SysAdmin/SSH" "agenix-private" "$HOME/.ssh/agenix" 600
|
get_doc "SysAdmin/SSH" "agenix-private" "$HOME/.ssh/id_ed25519" 600
|
||||||
}
|
}
|
||||||
|
|
||||||
get_pgp() {
|
get_pgp() {
|
||||||
|
@ -87,6 +87,15 @@ get_creds() {
|
||||||
get_pgp
|
get_pgp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setup_gpg() {
|
||||||
|
info 'Setting up loopback pinentry for GnuPG'
|
||||||
|
echo "allow-loopback-pinentry" > ~/.gnupg/gpg-agent.conf
|
||||||
|
|
||||||
|
info 'Signing dummy message to ensure GnuPG key is usable by `git-crypt`'
|
||||||
|
echo whatever | gpg --clearsign --armor --pinentry loopback --output /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
[ -z "$NOCREDS" ] && get_creds
|
[ -z "$NOCREDS" ] && get_creds
|
||||||
|
[ -z "$NOGPG" ] && setup_gpg
|
||||||
|
|
||||||
nix --experimental-features 'nix-command flakes' develop
|
nix --experimental-features 'nix-command flakes' develop
|
||||||
|
|
188
flake.lock
188
flake.lock
|
@ -2,23 +2,16 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"agenix": {
|
"agenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"systems"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723293904,
|
"lastModified": 1646105662,
|
||||||
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
"narHash": "sha256-jdXCZbGZL0SWWi29GnAOFHUh/QvvP0IyaVLv1ZTDkBI=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
"rev": "297cd58b418249240b9f1f155d52b1b17f292884",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -28,107 +21,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1700795494,
|
|
||||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lnl7",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1733312601,
|
|
||||||
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"ref": "main",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"futils": {
|
"futils": {
|
||||||
"inputs": {
|
|
||||||
"systems": [
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1644229661,
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"ref": "main",
|
"ref": "master",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gitignore": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"pre-commit-hooks",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709087332,
|
|
||||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -136,11 +44,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1735381016,
|
"lastModified": 1646559628,
|
||||||
"narHash": "sha256-CyCZFhMUkuYbSD6bxB/r43EdmDE7hYeZZPTCv0GudO4=",
|
"narHash": "sha256-WDoqxH/IPTV8CkI15wwzvXYgXq9UPr8xd8WKziuaynw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "10e99c43cdf4a0713b4e81d90691d22c6a58bdf2",
|
"rev": "afe96e7433c513bf82375d41473c57d1f66b4e68",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -152,11 +60,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1735291276,
|
"lastModified": 1646497237,
|
||||||
"narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=",
|
"narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "634fd46801442d760e09493a794c4f15db2d0cbb",
|
"rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -167,21 +75,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
|
||||||
"flake-parts": [
|
|
||||||
"flake-parts"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1735408823,
|
"lastModified": 1646721260,
|
||||||
"narHash": "sha256-1VjQeMQer5nXNYtw+BG+s78ucaEoxO5oqj+yRmM8MMs=",
|
"narHash": "sha256-r8ZWtEwiRxLKOtsT2yvU9Rs1oqL/RsSkPkgupXsw1bU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "8283ea92deac8cdb6fd63ff04049ac9e879bf5eb",
|
"rev": "25adb63e9381cb0342cdbe2d2d56266f4974a2c5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -193,21 +92,19 @@
|
||||||
},
|
},
|
||||||
"pre-commit-hooks": {
|
"pre-commit-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-utils": [
|
||||||
"gitignore": "gitignore",
|
"futils"
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
],
|
||||||
"nixpkgs-stable": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1734797603,
|
"lastModified": 1646153636,
|
||||||
"narHash": "sha256-ulZN7ps8nBV31SE+dwkDvKIzvN6hroRY8sYOT0w+E28=",
|
"narHash": "sha256-AlWHMzK+xJ1mG267FdT8dCq/HvLCA6jwmx2ZUy5O8tY=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"rev": "f0f0dc4920a903c3e08f5bdb9246bb572fcae498",
|
"rev": "b6bc0b21e1617e2b07d8205e7fae7224036dfa4b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -220,50 +117,11 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"futils": "futils",
|
"futils": "futils",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks"
|
||||||
"systems": "systems"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"ref": "main",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"treefmt-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nur",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1733222881,
|
|
||||||
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
140
flake.nix
140
flake.nix
|
@ -7,19 +7,7 @@
|
||||||
repo = "agenix";
|
repo = "agenix";
|
||||||
ref = "main";
|
ref = "main";
|
||||||
inputs = {
|
inputs = {
|
||||||
home-manager.follows = "home-manager";
|
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
systems.follows = "systems";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
flake-parts = {
|
|
||||||
type = "github";
|
|
||||||
owner = "hercules-ci";
|
|
||||||
repo = "flake-parts";
|
|
||||||
ref = "main";
|
|
||||||
inputs = {
|
|
||||||
nixpkgs-lib.follows = "nixpkgs";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -27,10 +15,7 @@
|
||||||
type = "github";
|
type = "github";
|
||||||
owner = "numtide";
|
owner = "numtide";
|
||||||
repo = "flake-utils";
|
repo = "flake-utils";
|
||||||
ref = "main";
|
ref = "master";
|
||||||
inputs = {
|
|
||||||
systems.follows = "systems";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
|
@ -55,10 +40,6 @@
|
||||||
owner = "nix-community";
|
owner = "nix-community";
|
||||||
repo = "NUR";
|
repo = "NUR";
|
||||||
ref = "master";
|
ref = "master";
|
||||||
inputs = {
|
|
||||||
flake-parts.follows = "flake-parts";
|
|
||||||
nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pre-commit-hooks = {
|
pre-commit-hooks = {
|
||||||
|
@ -67,19 +48,118 @@
|
||||||
repo = "pre-commit-hooks.nix";
|
repo = "pre-commit-hooks.nix";
|
||||||
ref = "master";
|
ref = "master";
|
||||||
inputs = {
|
inputs = {
|
||||||
|
flake-utils.follows = "futils";
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
nixpkgs-stable.follows = "nixpkgs";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systems = {
|
|
||||||
type = "github";
|
|
||||||
owner = "nix-systems";
|
|
||||||
repo = "default";
|
|
||||||
ref = "main";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Can't eta-reduce a flake outputs...
|
outputs =
|
||||||
outputs = inputs: import ./flake inputs;
|
inputs @
|
||||||
|
{ self
|
||||||
|
, agenix
|
||||||
|
, futils
|
||||||
|
, home-manager
|
||||||
|
, nixpkgs
|
||||||
|
, nur
|
||||||
|
, pre-commit-hooks
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (futils.lib) eachDefaultSystem;
|
||||||
|
|
||||||
|
lib = nixpkgs.lib.extend (self: super: {
|
||||||
|
my = import ./lib { inherit inputs; pkgs = nixpkgs; lib = self; };
|
||||||
|
});
|
||||||
|
|
||||||
|
defaultModules = [
|
||||||
|
({ ... }: {
|
||||||
|
# Let 'nixos-version --json' know about the Git revision
|
||||||
|
system.configurationRevision = self.rev or "dirty";
|
||||||
|
})
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = (lib.attrValues self.overlays) ++ [
|
||||||
|
nur.overlay
|
||||||
|
];
|
||||||
|
}
|
||||||
|
# Include generic settings
|
||||||
|
./modules
|
||||||
|
# Include bundles of settings
|
||||||
|
./profiles
|
||||||
|
];
|
||||||
|
|
||||||
|
buildHost = name: system: lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
modules = defaultModules ++ [
|
||||||
|
(./. + "/machines/${name}")
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
# Use my extended lib in NixOS configuration
|
||||||
|
inherit lib;
|
||||||
|
# Inject inputs to use them in global registry
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
eachDefaultSystem
|
||||||
|
(system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in
|
||||||
|
rec {
|
||||||
|
apps = {
|
||||||
|
diff-flake = futils.lib.mkApp { drv = packages.diff-flake; };
|
||||||
|
};
|
||||||
|
|
||||||
|
checks = {
|
||||||
|
pre-commit = pre-commit-hooks.lib.${system}.run {
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
hooks = {
|
||||||
|
nixpkgs-fmt = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
shellcheck = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
defaultApp = apps.diff-flake;
|
||||||
|
|
||||||
|
devShell = pkgs.mkShell {
|
||||||
|
name = "NixOS-config";
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
gitAndTools.pre-commit
|
||||||
|
nixpkgs-fmt
|
||||||
|
];
|
||||||
|
|
||||||
|
inherit (self.checks.${system}.pre-commit) shellHook;
|
||||||
|
};
|
||||||
|
|
||||||
|
packages =
|
||||||
|
let
|
||||||
|
inherit (futils.lib) filterPackages flattenTree;
|
||||||
|
packages = import ./pkgs { inherit pkgs; };
|
||||||
|
flattenedPackages = flattenTree packages;
|
||||||
|
finalPackages = filterPackages system flattenedPackages;
|
||||||
|
in
|
||||||
|
finalPackages;
|
||||||
|
}) // {
|
||||||
|
overlay = self.overlays.pkgs;
|
||||||
|
|
||||||
|
overlays = import ./overlays // {
|
||||||
|
lib = final: prev: { inherit lib; };
|
||||||
|
pkgs = final: prev: {
|
||||||
|
ambroisie = prev.recurseIntoAttrs (import ./pkgs { pkgs = prev; });
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosConfigurations = lib.mapAttrs buildHost {
|
||||||
|
aramis = "x86_64-linux";
|
||||||
|
porthos = "x86_64-linux";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
{
|
|
||||||
perSystem = { self', ... }: {
|
|
||||||
apps = {
|
|
||||||
diff-flake = inputs.futils.lib.mkApp { drv = self'.packages.diff-flake; };
|
|
||||||
default = self'.apps.diff-flake;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
inputs.pre-commit-hooks.flakeModule
|
|
||||||
];
|
|
||||||
|
|
||||||
perSystem = { ... }: {
|
|
||||||
pre-commit = {
|
|
||||||
# Add itself to `nix flake check`
|
|
||||||
check.enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
hooks = {
|
|
||||||
deadnix = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs-fmt = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
shellcheck = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
stylua = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
{ flake-parts
|
|
||||||
, systems
|
|
||||||
, ...
|
|
||||||
} @ inputs:
|
|
||||||
let
|
|
||||||
mySystems = import systems;
|
|
||||||
in
|
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
|
||||||
systems = mySystems;
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./apps.nix
|
|
||||||
./checks.nix
|
|
||||||
./dev-shells.nix
|
|
||||||
./home-manager.nix
|
|
||||||
./lib.nix
|
|
||||||
./nixos.nix
|
|
||||||
./overlays.nix
|
|
||||||
./packages.nix
|
|
||||||
./templates.nix
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
perSystem = { config, pkgs, ... }: {
|
|
||||||
devShells = {
|
|
||||||
default = pkgs.mkShellNoCC {
|
|
||||||
name = "NixOS-config";
|
|
||||||
|
|
||||||
nativeBuildInputs = with pkgs; [
|
|
||||||
gitAndTools.pre-commit
|
|
||||||
nixpkgs-fmt
|
|
||||||
];
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
${config.pre-commit.installationScript}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
{ self, inputs, lib, ... }:
|
|
||||||
let
|
|
||||||
defaultModules = [
|
|
||||||
# Include generic settings
|
|
||||||
"${self}/modules/home"
|
|
||||||
{
|
|
||||||
# Basic user information defaults
|
|
||||||
home.username = lib.mkDefault "ambroisie";
|
|
||||||
home.homeDirectory = lib.mkDefault "/home/ambroisie";
|
|
||||||
|
|
||||||
# Make it a Linux installation by default
|
|
||||||
targets.genericLinux.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Enable home-manager
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
mkHome = name: system: inputs.home-manager.lib.homeManagerConfiguration {
|
|
||||||
# Work-around for home-manager
|
|
||||||
# * not letting me set `lib` as an extraSpecialArgs
|
|
||||||
# * not respecting `nixpkgs.overlays` [1]
|
|
||||||
# [1]: https://github.com/nix-community/home-manager/issues/2954
|
|
||||||
pkgs = import inputs.nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
|
|
||||||
overlays = (lib.attrValues self.overlays) ++ [
|
|
||||||
inputs.nur.overlays.default
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = defaultModules ++ [
|
|
||||||
"${self}/hosts/homes/${name}"
|
|
||||||
];
|
|
||||||
|
|
||||||
extraSpecialArgs = {
|
|
||||||
# Inject inputs to use them in global registry
|
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
homes = {
|
|
||||||
"ambroisie@bazin" = "x86_64-linux";
|
|
||||||
"ambroisie@mousqueton" = "x86_64-linux";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
perSystem = { system, ... }: {
|
|
||||||
# Work-around for https://github.com/nix-community/home-manager/issues/3075
|
|
||||||
legacyPackages = {
|
|
||||||
homeConfigurations =
|
|
||||||
let
|
|
||||||
filteredHomes = lib.filterAttrs (_: v: v == system) homes;
|
|
||||||
allHomes = filteredHomes // {
|
|
||||||
# Default configuration
|
|
||||||
ambroisie = system;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
lib.mapAttrs mkHome allHomes;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ self, inputs, ... }:
|
|
||||||
let
|
|
||||||
inherit (inputs) nixpkgs;
|
|
||||||
|
|
||||||
lib = nixpkgs.lib.extend (final: _: {
|
|
||||||
my = import "${self}/lib" { inherit inputs; pkgs = nixpkgs; lib = final; };
|
|
||||||
});
|
|
||||||
in
|
|
||||||
{
|
|
||||||
flake.lib = lib;
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ self, inputs, lib, ... }:
|
|
||||||
let
|
|
||||||
defaultModules = [
|
|
||||||
{
|
|
||||||
# Let 'nixos-version --json' know about the Git revision
|
|
||||||
system.configurationRevision = self.rev or "dirty";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
nixpkgs.overlays = (lib.attrValues self.overlays) ++ [
|
|
||||||
inputs.nur.overlays.default
|
|
||||||
];
|
|
||||||
}
|
|
||||||
# Include generic settings
|
|
||||||
"${self}/modules/nixos"
|
|
||||||
];
|
|
||||||
|
|
||||||
buildHost = name: system: lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
modules = defaultModules ++ [
|
|
||||||
"${self}/hosts/nixos/${name}"
|
|
||||||
];
|
|
||||||
specialArgs = {
|
|
||||||
# Use my extended lib in NixOS configuration
|
|
||||||
inherit (self) lib;
|
|
||||||
# Inject inputs to use them in global registry
|
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
flake.nixosConfigurations = lib.mapAttrs buildHost {
|
|
||||||
aramis = "x86_64-linux";
|
|
||||||
porthos = "x86_64-linux";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{ self, ... }:
|
|
||||||
let
|
|
||||||
default-overlays = import "${self}/overlays";
|
|
||||||
|
|
||||||
additional-overlays = {
|
|
||||||
# Expose my expanded library
|
|
||||||
lib = _final: _prev: { inherit (self) lib; };
|
|
||||||
|
|
||||||
# Expose my custom packages
|
|
||||||
pkgs = _final: prev: {
|
|
||||||
ambroisie = prev.recurseIntoAttrs (import "${self}/pkgs" { pkgs = prev; });
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
flake.overlays = default-overlays // additional-overlays;
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{ self, inputs, ... }:
|
|
||||||
{
|
|
||||||
perSystem = { pkgs, system, ... }: {
|
|
||||||
packages =
|
|
||||||
let
|
|
||||||
inherit (inputs.futils.lib) filterPackages flattenTree;
|
|
||||||
packages = import "${self}/pkgs" { inherit pkgs; };
|
|
||||||
flattenedPackages = flattenTree packages;
|
|
||||||
finalPackages = filterPackages system flattenedPackages;
|
|
||||||
in
|
|
||||||
finalPackages;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ self, ... }:
|
|
||||||
{
|
|
||||||
flake.templates = import "${self}/templates";
|
|
||||||
}
|
|
|
@ -3,8 +3,8 @@ let
|
||||||
cfg = config.my.home.bat;
|
cfg = config.my.home.bat;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.bat = with lib; {
|
options.my.home.bat = with lib.my; {
|
||||||
enable = my.mkDisableOption "bat configuration";
|
enable = mkDisableOption "bat configuration";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.programs.bat = lib.mkIf cfg.enable {
|
config.programs.bat = lib.mkIf cfg.enable {
|
29
home/comma/default.nix
Normal file
29
home/comma/default.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.comma;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.home.comma = with lib; {
|
||||||
|
enable = my.mkDisableOption "comma configuration";
|
||||||
|
|
||||||
|
pkgsFlake = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "pkgs";
|
||||||
|
example = "nixpkgs";
|
||||||
|
description = ''
|
||||||
|
Which flake from the registry should be used with
|
||||||
|
<command>nix shell</command>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ambroisie.comma
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
COMMA_PKGS_FLAKE = cfg.pkgsFlake;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
47
home/default.nix
Normal file
47
home/default.nix
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./bat
|
||||||
|
./bluetooth
|
||||||
|
./comma
|
||||||
|
./direnv
|
||||||
|
./discord
|
||||||
|
./documentation
|
||||||
|
./feh
|
||||||
|
./firefox
|
||||||
|
./flameshot
|
||||||
|
./gammastep
|
||||||
|
./gdb
|
||||||
|
./git
|
||||||
|
./gpg
|
||||||
|
./gtk
|
||||||
|
./htop
|
||||||
|
./jq
|
||||||
|
./mail
|
||||||
|
./mpv
|
||||||
|
./nix-index
|
||||||
|
./nm-applet
|
||||||
|
./packages
|
||||||
|
./pager
|
||||||
|
./power-alert
|
||||||
|
./ssh
|
||||||
|
./terminal
|
||||||
|
./tmux
|
||||||
|
./udiskie
|
||||||
|
./vim
|
||||||
|
./wm
|
||||||
|
./x
|
||||||
|
./xdg
|
||||||
|
./zathura
|
||||||
|
./zsh
|
||||||
|
];
|
||||||
|
|
||||||
|
# First sane reproducible version
|
||||||
|
home.stateVersion = "20.09";
|
||||||
|
|
||||||
|
# Who am I?
|
||||||
|
home.username = "ambroisie";
|
||||||
|
|
||||||
|
# Start services automatically
|
||||||
|
systemd.user.startServices = "sd-switch";
|
||||||
|
}
|
17
home/direnv/default.nix
Normal file
17
home/direnv/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.direnv;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.home.direnv = with lib.my; {
|
||||||
|
enable = mkDisableOption "direnv configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.programs.direnv = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv = {
|
||||||
|
# A better `use_nix`
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -7,13 +7,11 @@ in
|
||||||
{
|
{
|
||||||
options.my.home.discord = with lib; {
|
options.my.home.discord = with lib; {
|
||||||
enable = mkEnableOption "discord configuration";
|
enable = mkEnableOption "discord configuration";
|
||||||
|
|
||||||
package = mkPackageOption pkgs "discord" { };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
cfg.package
|
discord
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile."discord/settings.json".source =
|
xdg.configFile."discord/settings.json".source =
|
|
@ -3,8 +3,8 @@ let
|
||||||
cfg = config.my.home.documentation;
|
cfg = config.my.home.documentation;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.documentation = with lib; {
|
options.my.home.documentation = with lib.my; {
|
||||||
enable = my.mkDisableOption "documentation integration";
|
enable = mkDisableOption "documentation integration";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Add documentation for user packages
|
# Add documentation for user packages
|
|
@ -33,10 +33,13 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
package = pkgs.firefox.override {
|
package = pkgs.firefox.override {
|
||||||
nativeMessagingHosts = ([ ]
|
cfg = {
|
||||||
++ lib.optional cfg.tridactyl.enable pkgs.tridactyl-native
|
enableTridactylNative = cfg.tridactyl.enable;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraNativeMessagingHosts = with pkgs; ([ ]
|
||||||
# Watch videos using mpv
|
# Watch videos using mpv
|
||||||
++ lib.optional cfg.ff2mpv.enable pkgs.ff2mpv-go
|
++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -54,27 +57,28 @@ in
|
||||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket
|
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket
|
||||||
"extensions.pocket.enabled" = false; # Disable pocket
|
"extensions.pocket.enabled" = false; # Disable pocket
|
||||||
"media.eme.enabled" = true; # Enable DRM
|
"media.eme.enabled" = true; # Enable DRM
|
||||||
"media.gmp-widevinecdm.enabled" = true; # Enable DRM
|
|
||||||
"media.gmp-widevinecdm.visible" = true; # Enable DRM
|
"media.gmp-widevinecdm.visible" = true; # Enable DRM
|
||||||
|
"media.gmp-widevinecdm.enabled" = true; # Enable DRM
|
||||||
"signon.autofillForms" = false; # Disable built-in form-filling
|
"signon.autofillForms" = false; # Disable built-in form-filling
|
||||||
"signon.rememberSignons" = false; # Disable built-in password manager
|
"signon.rememberSignons" = false; # Disable built-in password manager
|
||||||
"ui.systemUsesDarkTheme" = true; # Dark mode
|
"ui.systemUsesDarkTheme" = true; # Dark mode
|
||||||
};
|
};
|
||||||
|
|
||||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; ([
|
|
||||||
bitwarden
|
|
||||||
consent-o-matic
|
|
||||||
form-history-control
|
|
||||||
reddit-comment-collapser
|
|
||||||
reddit-enhancement-suite
|
|
||||||
refined-github
|
|
||||||
sponsorblock
|
|
||||||
ublock-origin
|
|
||||||
]
|
|
||||||
++ lib.optional (cfg.tridactyl.enable) tridactyl
|
|
||||||
++ lib.optional (cfg.ff2mpv.enable) ff2mpv
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extensions = with pkgs.nur.repos.rycee.firefox-addons; ([
|
||||||
|
bitwarden
|
||||||
|
consent-o-matic
|
||||||
|
form-history-control
|
||||||
|
https-everywhere
|
||||||
|
reddit-comment-collapser
|
||||||
|
reddit-enhancement-suite
|
||||||
|
refined-github
|
||||||
|
sponsorblock
|
||||||
|
ublock-origin
|
||||||
|
]
|
||||||
|
++ lib.optional (cfg.tridactyl.enable) tridactyl
|
||||||
|
++ lib.optional (cfg.ff2mpv.enable) ff2mpv
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
9
home/firefox/tridactyl/default.nix
Normal file
9
home/firefox/tridactyl/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.firefox.tridactyl;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
xdg.configFile."tridactyl/tridactylrc".source = ./tridactylrc;
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,30 +4,26 @@
|
||||||
" Use dark color scheme
|
" Use dark color scheme
|
||||||
colorscheme dark
|
colorscheme dark
|
||||||
|
|
||||||
" Make tridactyl open Vim in my preferred terminal
|
" Make tridactyl open Vim in my prefered terminal
|
||||||
set editorcmd @editorcmd@
|
" FIXME: make it follow my prefered terminal
|
||||||
|
set editorcmd termite --class tridactyl_editor -e 'vim %f'
|
||||||
" Remove editor file after use
|
|
||||||
alias editor_rm composite editor | jsb -p tri.native.run(`rm -f '${JS_ARG[0]}'`)
|
|
||||||
bind --mode=insert <C-i> editor_rm
|
|
||||||
bind --mode=input <C-i> editor_rm
|
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" Binds {{{
|
" Binds {{{
|
||||||
" Reddit et al. {{{
|
" Reddit et al. {{{
|
||||||
" Toggle comments on Reddit, Hacker News, Lobste.rs, LWN
|
" Toggle comments on Reddit, Hacker News, Lobste.rs
|
||||||
bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"],[class="CommentTitle"]
|
bind ;c hint -c [class*="expand"],[class*="togg"],[class="comment_folder"]
|
||||||
|
|
||||||
" Make `gu` take me back to subreddit from comments
|
" Make `gu` take me back to subreddit from comments
|
||||||
bindurl reddit.com gu urlparent 3
|
bindurl reddit.com gu urlparent 3
|
||||||
|
|
||||||
" Only hint search results on Google
|
" Only hint search results on Google
|
||||||
bindurl www.google.com f hint -Jc #search a
|
bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a
|
||||||
bindurl www.google.com F hint -Jbc #search a
|
bindurl www.google.com F hint -Jbc #search div:not(.action-menu) > a
|
||||||
|
|
||||||
" Only hint search results on DuckDuckGo
|
" Only hint search results on DuckDuckGo
|
||||||
bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result"]
|
bindurl ^https://duckduckgo.com f hint -Jc [class~=result__a]
|
||||||
bindurl ^https://duckduckgo.com F hint -Jbc [data-testid="result"]
|
bindurl ^https://duckduckgo.com F hint -Jbc [class~=result__a]
|
||||||
|
|
||||||
" Only hint item pages on Hacker News
|
" Only hint item pages on Hacker News
|
||||||
bindurl news.ycombinator.com ;f hint -Jc .age > a
|
bindurl news.ycombinator.com ;f hint -Jc .age > a
|
42
home/gdb/default.nix
Normal file
42
home/gdb/default.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.gdb;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.home.gdb = with lib; {
|
||||||
|
enable = my.mkDisableOption "gdb configuration";
|
||||||
|
|
||||||
|
rr = {
|
||||||
|
enable = my.mkDisableOption "rr configuration";
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.rr;
|
||||||
|
defaultText = literalExample "pkgs.rr";
|
||||||
|
description = ''
|
||||||
|
Package providing rr
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gdb
|
||||||
|
];
|
||||||
|
|
||||||
|
# FIXME: waiting for commit 64aaad6349d2b2c45063a5383f877ce9a3a0c354
|
||||||
|
xdg.configFile."gdb/gdbinit".source = ./gdbinit;
|
||||||
|
|
||||||
|
# FIXME: remove once `gdb` is updated from version 10.2
|
||||||
|
home.file.".gdbinit".source = ./gdbinit;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.rr.enable {
|
||||||
|
home.packages = [
|
||||||
|
cfg.rr.package
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
|
@ -19,6 +19,6 @@ set print demangle on
|
||||||
set auto-load python-scripts
|
set auto-load python-scripts
|
||||||
|
|
||||||
# Allow autoloading project-local .gdbinit files
|
# Allow autoloading project-local .gdbinit files
|
||||||
add-auto-load-safe-path ~/git/
|
set auto-load safe-path ~/git/
|
||||||
# Allow autoloading from the Nix store
|
# Allow autoloading from the Nix store
|
||||||
add-auto-load-safe-path /nix/store
|
set auto-load safe-path /nix/store
|
|
@ -28,7 +28,3 @@ compile_commands.json
|
||||||
# Direnv files
|
# Direnv files
|
||||||
.envrc
|
.envrc
|
||||||
.direnv/
|
.direnv/
|
||||||
|
|
||||||
# Project-local neovim configuration files
|
|
||||||
.nvim.lua
|
|
||||||
.nvimrc
|
|
|
@ -5,17 +5,14 @@ let
|
||||||
inherit (lib.my) mkMailAddress;
|
inherit (lib.my) mkMailAddress;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.git = with lib; {
|
options.my.home.git = with lib.my; {
|
||||||
enable = my.mkDisableOption "git configuration";
|
enable = mkDisableOption "git configuration";
|
||||||
|
|
||||||
# I want the full experience by default
|
|
||||||
package = mkPackageOption pkgs "git" { default = [ "gitFull" ]; };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config.home.packages = with pkgs; lib.mkIf cfg.enable [
|
config.home.packages = with pkgs.gitAndTools; lib.mkIf cfg.enable [
|
||||||
git-absorb
|
gitAndTools.git-absorb
|
||||||
git-revise
|
gitAndTools.git-revise
|
||||||
tig
|
gitAndTools.tig
|
||||||
];
|
];
|
||||||
|
|
||||||
config.programs.git = lib.mkIf cfg.enable {
|
config.programs.git = lib.mkIf cfg.enable {
|
||||||
|
@ -25,7 +22,8 @@ in
|
||||||
userEmail = mkMailAddress "bruno" "belanyi.fr";
|
userEmail = mkMailAddress "bruno" "belanyi.fr";
|
||||||
userName = "Bruno BELANYI";
|
userName = "Bruno BELANYI";
|
||||||
|
|
||||||
inherit (cfg) package;
|
# I want the full experience
|
||||||
|
package = pkgs.gitAndTools.gitFull;
|
||||||
|
|
||||||
aliases = {
|
aliases = {
|
||||||
git = "!git";
|
git = "!git";
|
||||||
|
@ -37,7 +35,6 @@ in
|
||||||
pick = "log -p -G";
|
pick = "log -p -G";
|
||||||
push-new = "!git push -u origin "
|
push-new = "!git push -u origin "
|
||||||
+ ''"$(git branch | grep '^* ' | cut -f2- -d' ')"'';
|
+ ''"$(git branch | grep '^* ' | cut -f2- -d' ')"'';
|
||||||
root = "git rev-parse --show-toplevel";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
|
@ -123,15 +120,6 @@ in
|
||||||
defaultBranch = "main";
|
defaultBranch = "main";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Local configuration, not-versioned
|
|
||||||
include = {
|
|
||||||
path = "config.local";
|
|
||||||
};
|
|
||||||
|
|
||||||
merge = {
|
|
||||||
conflictStyle = "zdiff3";
|
|
||||||
};
|
|
||||||
|
|
||||||
pull = {
|
pull = {
|
||||||
# Avoid useless merge commits
|
# Avoid useless merge commits
|
||||||
rebase = true;
|
rebase = true;
|
||||||
|
@ -148,13 +136,9 @@ in
|
||||||
autoStash = true;
|
autoStash = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
rerere = {
|
|
||||||
enabled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
url = {
|
url = {
|
||||||
"git@git.belanyi.fr:" = {
|
"git@gitea.belanyi.fr:" = {
|
||||||
insteadOf = "https://git.belanyi.fr/";
|
insteadOf = "https://gitea.belanyi.fr/";
|
||||||
};
|
};
|
||||||
|
|
||||||
"git@github.com:" = {
|
"git@github.com:" = {
|
||||||
|
@ -178,15 +162,6 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
|
||||||
condition = "gitdir:~/git/work/";
|
|
||||||
contents = {
|
|
||||||
user = {
|
|
||||||
name = "Bruno BELANYI";
|
|
||||||
email = mkMailAddress "ambroisie" "google.com";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
|
||||||
ignores =
|
ignores =
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.my.home.gpg;
|
cfg = config.my.home.gpg;
|
||||||
in
|
in
|
||||||
|
@ -6,7 +6,12 @@ in
|
||||||
options.my.home.gpg = with lib; {
|
options.my.home.gpg = with lib; {
|
||||||
enable = my.mkDisableOption "gpg configuration";
|
enable = my.mkDisableOption "gpg configuration";
|
||||||
|
|
||||||
pinentry = mkPackageOption pkgs "pinentry" { default = [ "pinentry-tty" ]; };
|
pinentry = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "tty";
|
||||||
|
example = "gtk2";
|
||||||
|
description = "Which pinentry interface to use";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
@ -17,15 +22,10 @@ in
|
||||||
services.gpg-agent = {
|
services.gpg-agent = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSshSupport = true; # One agent to rule them all
|
enableSshSupport = true; # One agent to rule them all
|
||||||
pinentryPackage = cfg.pinentry;
|
pinentryFlavor = cfg.pinentry;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
allow-loopback-pinentry
|
allow-loopback-pinentry
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
# Sometime `gpg-agent` errors out...
|
|
||||||
reset-agent = "gpg-connect-agent updatestartuptty /bye";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -21,12 +21,12 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
package = pkgs.gnome-themes-extra;
|
package = pkgs.gnome.gnome-themes-extra;
|
||||||
name = "Adwaita";
|
name = "Adwaita";
|
||||||
};
|
};
|
||||||
|
|
||||||
theme = {
|
theme = {
|
||||||
package = pkgs.gnome-themes-extra;
|
package = pkgs.gnome.gnome-themes-extra;
|
||||||
name = "Adwaita";
|
name = "Adwaita";
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -3,8 +3,8 @@ let
|
||||||
cfg = config.my.home.htop;
|
cfg = config.my.home.htop;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.htop = with lib; {
|
options.my.home.htop = with lib.my; {
|
||||||
enable = my.mkDisableOption "htop configuration";
|
enable = mkDisableOption "htop configuration";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.programs.htop = lib.mkIf cfg.enable {
|
config.programs.htop = lib.mkIf cfg.enable {
|
|
@ -3,8 +3,8 @@ let
|
||||||
cfg = config.my.home.jq;
|
cfg = config.my.home.jq;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.jq = with lib; {
|
options.my.home.jq = with lib.my; {
|
||||||
enable = my.mkDisableOption "jq configuration";
|
enable = mkDisableOption "jq configuration";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.programs.jq = lib.mkIf cfg.enable {
|
config.programs.jq = lib.mkIf cfg.enable {
|
|
@ -8,7 +8,7 @@ let
|
||||||
realName = lib.mkDefault "Bruno BELANYI";
|
realName = lib.mkDefault "Bruno BELANYI";
|
||||||
userName = lib.mkDefault (mkMailAddress address domain);
|
userName = lib.mkDefault (mkMailAddress address domain);
|
||||||
passwordCommand =
|
passwordCommand =
|
||||||
lib.mkDefault [ (lib.getExe pkgs.ambroisie.rbw-pass) "Mail" passName ];
|
lib.mkDefault [ "${pkgs.ambroisie.bw-pass}/bin/bw-pass" "Mail" passName ];
|
||||||
|
|
||||||
address = mkMailAddress address domain;
|
address = mkMailAddress address domain;
|
||||||
aliases = builtins.map (lib.flip mkMailAddress domain) aliases;
|
aliases = builtins.map (lib.flip mkMailAddress domain) aliases;
|
||||||
|
@ -17,7 +17,6 @@ let
|
||||||
|
|
||||||
himalaya = {
|
himalaya = {
|
||||||
enable = cfg.himalaya.enable;
|
enable = cfg.himalaya.enable;
|
||||||
# FIXME: try to actually configure it at some point
|
|
||||||
};
|
};
|
||||||
|
|
||||||
msmtp = {
|
msmtp = {
|
||||||
|
@ -52,13 +51,27 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
office365Config = {
|
office365Config = {
|
||||||
flavor = "outlook.office365.com";
|
imap = {
|
||||||
|
host = "outlook.office365.com";
|
||||||
|
port = 993;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = "outlook.office365.com";
|
||||||
|
port = 587;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config.accounts.email.accounts = {
|
config.accounts.email.accounts = {
|
||||||
personal = lib.mkMerge [
|
personal = lib.mkMerge [
|
||||||
# Common configuration
|
# Common configuraton
|
||||||
(mkConfig {
|
(mkConfig {
|
||||||
domain = "belanyi.fr";
|
domain = "belanyi.fr";
|
||||||
address = "bruno";
|
address = "bruno";
|
||||||
|
@ -70,7 +83,7 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
gmail = lib.mkMerge [
|
gmail = lib.mkMerge [
|
||||||
# Common configuration
|
# Common configuraton
|
||||||
(mkConfig {
|
(mkConfig {
|
||||||
domain = "gmail.com";
|
domain = "gmail.com";
|
||||||
address = "brunobelanyi";
|
address = "brunobelanyi";
|
|
@ -15,7 +15,7 @@ in
|
||||||
enable = my.mkDisableOption "email configuration";
|
enable = my.mkDisableOption "email configuration";
|
||||||
|
|
||||||
himalaya = {
|
himalaya = {
|
||||||
enable = mkEnableOption "himalaya configuration";
|
enable = mkRelatedOption "himalaya configuration";
|
||||||
};
|
};
|
||||||
|
|
||||||
msmtp = {
|
msmtp = {
|
|
@ -9,7 +9,7 @@ in
|
||||||
settings = {
|
settings = {
|
||||||
notify-cmd =
|
notify-cmd =
|
||||||
let
|
let
|
||||||
notify-send = lib.getExe pkgs.libnotify;
|
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
||||||
in
|
in
|
||||||
pkgs.writeScript "mail-notifier" ''
|
pkgs.writeScript "mail-notifier" ''
|
||||||
SENDER="$1"
|
SENDER="$1"
|
|
@ -13,8 +13,6 @@ in
|
||||||
|
|
||||||
scripts = [
|
scripts = [
|
||||||
pkgs.mpvScripts.mpris # Allow controlling using media keys
|
pkgs.mpvScripts.mpris # Allow controlling using media keys
|
||||||
pkgs.mpvScripts.mpv-cheatsheet # Show some simple mappings on '?'
|
|
||||||
pkgs.mpvScripts.uosc # Nicer UI
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -3,8 +3,8 @@ let
|
||||||
cfg = config.my.home.nix-index;
|
cfg = config.my.home.nix-index;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.nix-index = with lib; {
|
options.my.home.nix-index = with lib.my; {
|
||||||
enable = my.mkDisableOption "nix-index configuration";
|
enable = mkDisableOption "nix-index configuration";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.programs.nix-index = lib.mkIf cfg.enable {
|
config.programs.nix-index = lib.mkIf cfg.enable {
|
|
@ -6,10 +6,6 @@ in
|
||||||
options.my.home.packages = with lib; {
|
options.my.home.packages = with lib; {
|
||||||
enable = my.mkDisableOption "user packages";
|
enable = my.mkDisableOption "user packages";
|
||||||
|
|
||||||
allowAliases = mkEnableOption "allow package aliases";
|
|
||||||
|
|
||||||
allowUnfree = my.mkDisableOption "allow unfree packages";
|
|
||||||
|
|
||||||
additionalPackages = mkOption {
|
additionalPackages = mkOption {
|
||||||
type = with types; listOf package;
|
type = with types; listOf package;
|
||||||
default = [ ];
|
default = [ ];
|
||||||
|
@ -21,16 +17,12 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config.home.packages = with pkgs; lib.mkIf cfg.enable ([
|
||||||
home.packages = with pkgs; ([
|
fd
|
||||||
fd
|
file
|
||||||
file
|
mosh
|
||||||
ripgrep
|
ripgrep
|
||||||
tree
|
rr
|
||||||
] ++ cfg.additionalPackages);
|
termite.terminfo
|
||||||
|
] ++ cfg.additionalPackages);
|
||||||
nixpkgs.config = {
|
|
||||||
inherit (cfg) allowAliases allowUnfree;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
36
home/pager/default.nix
Normal file
36
home/pager/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.pager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.home.pager = with lib.my; {
|
||||||
|
enable = mkDisableOption "pager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.sessionVariables = {
|
||||||
|
# My default pager
|
||||||
|
PAGER = "less";
|
||||||
|
# Clear the screen on start and exit
|
||||||
|
LESS = "-R -+X -c";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.localVariables = {
|
||||||
|
# Colored man pages
|
||||||
|
LESS_TERMCAP_mb = "$(tput bold; tput setaf 2)";
|
||||||
|
LESS_TERMCAP_md = "$(tput bold; tput setaf 6)";
|
||||||
|
LESS_TERMCAP_me = "$(tput sgr0)";
|
||||||
|
LESS_TERMCAP_so = "$(tput bold; tput setaf 3; tput setab 4)";
|
||||||
|
LESS_TERMCAP_se = "$(tput rmso; tput sgr0)";
|
||||||
|
LESS_TERMCAP_us = "$(tput bold; tput setaf 2)";
|
||||||
|
LESS_TERMCAP_ue = "$(tput rmul; tput sgr0)";
|
||||||
|
LESS_TERMCAP_mr = "$(tput rev)";
|
||||||
|
LESS_TERMCAP_mh = "$(tput dim)";
|
||||||
|
LESS_TERMCAP_ZN = "$(tput ssubm)";
|
||||||
|
LESS_TERMCAP_ZV = "$(tput rsubm)";
|
||||||
|
LESS_TERMCAP_ZO = "$(tput ssupm)";
|
||||||
|
LESS_TERMCAP_ZW = "$(tput rsupm)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
55
home/ssh/default.nix
Normal file
55
home/ssh/default.nix
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.ssh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.home.ssh = with lib.my; {
|
||||||
|
enable = mkDisableOption "ssh configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.programs.ssh = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
matchBlocks = {
|
||||||
|
"github.com" = {
|
||||||
|
hostname = "github.com";
|
||||||
|
identityFile = "~/.ssh/shared_rsa";
|
||||||
|
user = "git";
|
||||||
|
};
|
||||||
|
|
||||||
|
"gitlab.com" = {
|
||||||
|
hostname = "gitlab.com";
|
||||||
|
identityFile = "~/.ssh/shared_rsa";
|
||||||
|
user = "git";
|
||||||
|
};
|
||||||
|
|
||||||
|
"git.sr.ht" = {
|
||||||
|
hostname = "git.sr.ht";
|
||||||
|
identityFile = "~/.ssh/shared_rsa";
|
||||||
|
user = "git";
|
||||||
|
};
|
||||||
|
|
||||||
|
"gitea.belanyi.fr" = {
|
||||||
|
hostname = "gitea.belanyi.fr";
|
||||||
|
identityFile = "~/.ssh/shared_rsa";
|
||||||
|
user = "git";
|
||||||
|
};
|
||||||
|
|
||||||
|
porthos = {
|
||||||
|
hostname = "91.121.177.163";
|
||||||
|
identityFile = "~/.ssh/shared_rsa";
|
||||||
|
user = "ambroisie";
|
||||||
|
};
|
||||||
|
|
||||||
|
work = {
|
||||||
|
hostname = "workspaces.dgexsol.fr";
|
||||||
|
identityFile = "~/.ssh/shared_rsa";
|
||||||
|
user = "bruno_belanyi";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
AddKeysToAgent yes
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -10,14 +10,13 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./alacritty
|
|
||||||
./termite
|
./termite
|
||||||
];
|
];
|
||||||
|
|
||||||
options.my.home = with lib; {
|
options.my.home = with lib; {
|
||||||
terminal = {
|
terminal = {
|
||||||
program = mkOption {
|
program = mkOption {
|
||||||
type = with types; nullOr (enum [ "alacritty" "termite" ]);
|
type = with types; nullOr (enum [ "termite" ]);
|
||||||
default = null;
|
default = null;
|
||||||
example = "termite";
|
example = "termite";
|
||||||
description = "Which terminal to use for home session";
|
description = "Which terminal to use for home session";
|
62
home/tmux/default.nix
Normal file
62
home/tmux/default.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.tmux;
|
||||||
|
hasGUI = config.my.home.x.enable || (config.my.home.wm != null);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.home.tmux = with lib.my; {
|
||||||
|
enable = mkDisableOption "tmux terminal multiplexer";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.programs.tmux = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
keyMode = "vi"; # Home-row keys and other niceties
|
||||||
|
clock24 = true; # I'm one of those heathens
|
||||||
|
escapeTime = 0; # Let vim do its thing instead
|
||||||
|
historyLimit = 50000; # Bigger buffer
|
||||||
|
terminal = "tmux-256color"; # I want accurate termcap info
|
||||||
|
|
||||||
|
plugins = with pkgs.tmuxPlugins; [
|
||||||
|
# Open high-lighted files in copy mode
|
||||||
|
open
|
||||||
|
# Better pane management
|
||||||
|
pain-control
|
||||||
|
# Better session management
|
||||||
|
sessionist
|
||||||
|
(lib.optionalAttrs hasGUI {
|
||||||
|
# X clipboard integration
|
||||||
|
plugin = yank;
|
||||||
|
extraConfig = ''
|
||||||
|
# Use 'clipboard' because of misbehaving apps (e.g: firefox)
|
||||||
|
set -g @yank_selection_mouse 'clipboard'
|
||||||
|
# Stay in copy mode after yanking
|
||||||
|
set -g @yank_action 'copy-pipe'
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
{
|
||||||
|
# Show when prefix has been pressed
|
||||||
|
plugin = prefix-highlight;
|
||||||
|
extraConfig = ''
|
||||||
|
# Also show when I'm in copy or sync mode
|
||||||
|
set -g @prefix_highlight_show_copy_mode 'on'
|
||||||
|
set -g @prefix_highlight_show_sync_mode 'on'
|
||||||
|
# Show prefix mode in status bar
|
||||||
|
set -g status-right '#{prefix_highlight} %a %Y-%m-%d %H:%M'
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
# Better vim mode
|
||||||
|
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
||||||
|
${
|
||||||
|
lib.optionalString
|
||||||
|
(!hasGUI)
|
||||||
|
"bind-key -T copy-mode-vi 'y' send -X copy-selection"
|
||||||
|
}
|
||||||
|
# Block selection in vim mode
|
||||||
|
bind-key -Tcopy-mode-vi 'C-v' send -X begin-selection \; send -X rectangle-toggle
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,7 +4,3 @@ call ftplugined#check_undo_ft()
|
||||||
" Enable spell checking on commit messages
|
" Enable spell checking on commit messages
|
||||||
setlocal spell
|
setlocal spell
|
||||||
let b:undo_ftplugin.='|setlocal spell<'
|
let b:undo_ftplugin.='|setlocal spell<'
|
||||||
|
|
||||||
" Change max length of a line to 72 for this buffer
|
|
||||||
setlocal colorcolumn=72
|
|
||||||
let b:undo_ftplugin.='|setlocal colorcolumn<'
|
|
6
home/vim/after/ftplugin/netrw.vim
Normal file
6
home/vim/after/ftplugin/netrw.vim
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
" Create the `b:undo_ftplugin` variable if it doesn't exist
|
||||||
|
call ftplugined#check_undo_ft()
|
||||||
|
|
||||||
|
" Don't show Netrw in buffer list
|
||||||
|
setlocal bufhidden=delete
|
||||||
|
let b:undo_ftplugin='|setlocal bufhidden<'
|
12
home/vim/after/plugin/mappings/commentary.vim
Normal file
12
home/vim/after/plugin/mappings/commentary.vim
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
lua << EOF
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
name = "Comment/uncomment",
|
||||||
|
c = "Current line",
|
||||||
|
u = "Uncomment the current and adjacent commented lines",
|
||||||
|
["gc"] = "Uncomment the current and adjacent commented lines",
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(keys, { prefix = "gc" })
|
||||||
|
EOF
|
9
home/vim/after/plugin/mappings/misc.vim
Normal file
9
home/vim/after/plugin/mappings/misc.vim
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
lua << EOF
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
["<leader>"] = { "<cmd>nohls<CR>", "Clear search highlight" },
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(keys, { prefix = "<leader>" })
|
||||||
|
EOF
|
20
home/vim/after/plugin/mappings/telescope.vim
Normal file
20
home/vim/after/plugin/mappings/telescope.vim
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
lua << EOF
|
||||||
|
local wk = require("which-key")
|
||||||
|
local telescope = require("telescope")
|
||||||
|
local telescope_builtin = require("telescope.builtin")
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
f = {
|
||||||
|
name = "Fuzzy finder",
|
||||||
|
b = { telescope_builtin.buffers, "Open buffers" },
|
||||||
|
f = { telescope_builtin.git_files, "Git tracked files" },
|
||||||
|
F = { telescope_builtin.find_files, "Files" },
|
||||||
|
g = { telescope_builtin.live_grep, "Grep string" },
|
||||||
|
G = { telescope_builtin.grep_string, "Grep string under cursor" },
|
||||||
|
n = { telescope.extensions.notify.notify, "Notification history" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(keys, { prefix = "<leader>" })
|
||||||
|
EOF
|
||||||
|
|
32
home/vim/after/plugin/mappings/tree-sitter-textobjects.vim
Normal file
32
home/vim/after/plugin/mappings/tree-sitter-textobjects.vim
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
lua << EOF
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
local motions = {
|
||||||
|
["]m"] = "Next method start",
|
||||||
|
["]M"] = "Next method end",
|
||||||
|
["]S"] = "Next statement start",
|
||||||
|
["]]"] = "Next class start",
|
||||||
|
["]["] = "Next class end",
|
||||||
|
["[m"] = "Previous method start",
|
||||||
|
["[M"] = "Previous method end",
|
||||||
|
["[S"] = "Previous statement start",
|
||||||
|
["[["] = "Previous class start",
|
||||||
|
["[]"] = "Previous class end",
|
||||||
|
}
|
||||||
|
|
||||||
|
local objects = {
|
||||||
|
["aa"] = "a parameter",
|
||||||
|
["ia"] = "inner parameter",
|
||||||
|
["ab"] = "a block",
|
||||||
|
["ib"] = "inner block",
|
||||||
|
["ac"] = "a class",
|
||||||
|
["ic"] = "inner class",
|
||||||
|
["af"] = "a function",
|
||||||
|
["if"] = "inner function",
|
||||||
|
["ak"] = "a comment",
|
||||||
|
["aS"] = "a statement",
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(motions, { mode = "n" })
|
||||||
|
wk.register(objects, { mode = "o" })
|
||||||
|
EOF
|
125
home/vim/after/plugin/mappings/unimpaired.vim
Normal file
125
home/vim/after/plugin/mappings/unimpaired.vim
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
lua << EOF
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
-- Edition and navigation mappins
|
||||||
|
["["] = {
|
||||||
|
name = "Previous",
|
||||||
|
["<space>"] = "Insert blank line above",
|
||||||
|
["<C-L>"] = "Previous location list file",
|
||||||
|
["<C-Q>"] = "Previous quickfix list file",
|
||||||
|
["<C-T>"] = "Previous tag in preview window",
|
||||||
|
a = "Previous argument",
|
||||||
|
A = "First argument",
|
||||||
|
b = "Previous buffer",
|
||||||
|
B = "First buffer",
|
||||||
|
e = "Exchange previous line",
|
||||||
|
f = "Previous file in directory",
|
||||||
|
l = "Previous location list entry",
|
||||||
|
L = "First Location list entry",
|
||||||
|
n = "Previous conflict marker/diff hunk",
|
||||||
|
p = "Paste line above",
|
||||||
|
P = "Paste line above",
|
||||||
|
q = "Previous quickfix list entry",
|
||||||
|
Q = "First quickfix list entry",
|
||||||
|
t = "Previous matching tag",
|
||||||
|
T = "First matching tag",
|
||||||
|
z = "Previous fold",
|
||||||
|
-- Encoding
|
||||||
|
C = "C string encode",
|
||||||
|
u = "URL encode",
|
||||||
|
x = "XML encode",
|
||||||
|
y = "C string encode",
|
||||||
|
-- Custom
|
||||||
|
d = { vim.diagnostic.goto_prev, "Previous diagnostic" }
|
||||||
|
},
|
||||||
|
["]"] = {
|
||||||
|
name = "Next",
|
||||||
|
["<space>"] = "Insert blank line below",
|
||||||
|
["<C-L>"] = "Next location list file",
|
||||||
|
["<C-Q>"] = "Next quickfix list file",
|
||||||
|
["<C-T>"] = "Next tag in preview window",
|
||||||
|
a = "Next argument",
|
||||||
|
A = "Last argument",
|
||||||
|
b = "Next buffer",
|
||||||
|
B = "Last buffer",
|
||||||
|
e = "Exchange next line",
|
||||||
|
f = "Next file in directory",
|
||||||
|
l = "Next location list entry",
|
||||||
|
L = "Last Location list entry",
|
||||||
|
n = "Next conflict marker/diff hunk",
|
||||||
|
p = "Paste line below",
|
||||||
|
P = "Paste line below",
|
||||||
|
q = "Next quickfix list entry",
|
||||||
|
Q = "Last quickfix list entry",
|
||||||
|
t = "Next matching tag",
|
||||||
|
T = "Last matching tag",
|
||||||
|
z = "Next fold",
|
||||||
|
-- Decoding
|
||||||
|
C = "C string decode",
|
||||||
|
u = "URL decode",
|
||||||
|
x = "XML decode",
|
||||||
|
y = "C string decode",
|
||||||
|
-- Custom
|
||||||
|
d = { vim.diagnostic.goto_next, "Next diagnostic" }
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Option mappings
|
||||||
|
["[o"] = {
|
||||||
|
name = "Enable option",
|
||||||
|
b = "Light background",
|
||||||
|
c = "Cursor line",
|
||||||
|
d = "Diff",
|
||||||
|
e = { "<cmd>lwindow<CR>", "Location list" },
|
||||||
|
f = { "<cmd>cwindow<CR>", "Quickfix list" },
|
||||||
|
h = "Search high-lighting",
|
||||||
|
i = "Case insensitive search",
|
||||||
|
l = "List mode",
|
||||||
|
n = "Line numbers",
|
||||||
|
r = "Relative line numbers",
|
||||||
|
u = "Cursor column",
|
||||||
|
v = "Virtual editing",
|
||||||
|
w = "Text wrapping",
|
||||||
|
x = "Cursor line and column",
|
||||||
|
z = "Spell checking",
|
||||||
|
},
|
||||||
|
["]o"] = {
|
||||||
|
name = "Option off",
|
||||||
|
b = "Light background",
|
||||||
|
c = "Cursor line",
|
||||||
|
d = "Diff",
|
||||||
|
e = { "<cmd>lclose<CR>", "Location list" },
|
||||||
|
f = { "<cmd>cclose<CR>", "Quickfix list" },
|
||||||
|
h = "Search high-lighting",
|
||||||
|
i = "Case insensitive search",
|
||||||
|
l = "List mode",
|
||||||
|
n = "Line numbers",
|
||||||
|
r = "Relative line numbers",
|
||||||
|
u = "Cursor column",
|
||||||
|
v = "Virtual editing",
|
||||||
|
w = "Text wrapping",
|
||||||
|
x = "Cursor line and column",
|
||||||
|
z = "Spell checking",
|
||||||
|
},
|
||||||
|
["yo"] = {
|
||||||
|
name = "Option toggle",
|
||||||
|
b = "Light background",
|
||||||
|
c = "Cursor line",
|
||||||
|
d = "Diff",
|
||||||
|
e = { "<Plug>(qf_loc_toggle)", "Location list" },
|
||||||
|
f = { "<Plug>(qf_qf_toggle)", "Quickfix list" },
|
||||||
|
h = "Search high-lighting",
|
||||||
|
i = "Case insensitive search",
|
||||||
|
l = "List mode",
|
||||||
|
n = "Line numbers",
|
||||||
|
r = "Relative line numbers",
|
||||||
|
u = "Cursor column",
|
||||||
|
v = "Virtual editing",
|
||||||
|
w = "Text wrapping",
|
||||||
|
x = "Cursor line and column",
|
||||||
|
z = "Spell checking",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(keys)
|
||||||
|
EOF
|
|
@ -18,16 +18,12 @@ let
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.vim = with lib; {
|
options.my.home.vim = with lib.my; {
|
||||||
enable = my.mkDisableOption "vim configuration";
|
enable = mkDisableOption "vim configuration";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.programs.neovim = lib.mkIf cfg.enable {
|
config.programs.neovim = lib.mkIf cfg.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
# This is the best editor
|
|
||||||
defaultEditor = true;
|
|
||||||
|
|
||||||
# All the aliases
|
# All the aliases
|
||||||
viAlias = true;
|
viAlias = true;
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
|
@ -35,20 +31,29 @@ in
|
||||||
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
plugins = with pkgs.vimPlugins; [
|
||||||
# Theming
|
# Theming
|
||||||
gruvbox-nvim # Nice dark theme
|
vim-gruvbox8 # Nice dark theme
|
||||||
lualine-nvim # A lua-based status line
|
lualine-nvim # A lua-based status line
|
||||||
lualine-lsp-progress # Show progress for LSP servers
|
lualine-lsp-progress # Show progress for LSP servers
|
||||||
|
|
||||||
# tpope essentials
|
# tpope essentials
|
||||||
|
vim-commentary # Easy comments
|
||||||
vim-eunuch # UNIX integrations
|
vim-eunuch # UNIX integrations
|
||||||
vim-fugitive # A 'git' wrapper
|
vim-fugitive # A 'git' wrapper
|
||||||
vim-git # Sane git syntax files
|
vim-git # Sane git syntax files
|
||||||
vim-repeat # Enanche '.' for plugins
|
vim-repeat # Enanche '.' for plugins
|
||||||
vim-rsi # Readline mappings
|
vim-rsi # Readline mappings
|
||||||
|
vim-surround # Deal with pairs
|
||||||
vim-unimpaired # Some ex command mappings
|
vim-unimpaired # Some ex command mappings
|
||||||
|
vim-vinegar # Better netrw
|
||||||
|
|
||||||
# Languages
|
# Languages
|
||||||
|
rust-vim
|
||||||
vim-beancount
|
vim-beancount
|
||||||
|
vim-jsonnet
|
||||||
|
vim-nix
|
||||||
|
vim-pandoc
|
||||||
|
vim-pandoc-syntax
|
||||||
|
vim-toml
|
||||||
|
|
||||||
# General enhancements
|
# General enhancements
|
||||||
vim-qf # Better quick-fix list
|
vim-qf # Better quick-fix list
|
||||||
|
@ -57,30 +62,27 @@ in
|
||||||
git-messenger-vim # A simple blame window
|
git-messenger-vim # A simple blame window
|
||||||
|
|
||||||
# LSP and linting
|
# LSP and linting
|
||||||
nvim-lspconfig # Easy LSP configuration
|
|
||||||
lsp-format-nvim # Simplified formatting configuration
|
|
||||||
lsp_lines-nvim # Show diagnostics *over* regions
|
lsp_lines-nvim # Show diagnostics *over* regions
|
||||||
none-ls-nvim # LSP integration for linters and formatters
|
null-ls-nvim # LSP integration for linters and formatters
|
||||||
nvim-treesitter.withAllGrammars # Better highlighting
|
(nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting
|
||||||
nvim-treesitter-textobjects # More textobjects
|
nvim-treesitter-textobjects # More textobjects
|
||||||
|
nvim-ts-context-commentstring # Comment string in nested language blocks
|
||||||
plenary-nvim # 'null-ls', 'telescope' dependency
|
plenary-nvim # 'null-ls', 'telescope' dependency
|
||||||
|
|
||||||
# Completion
|
# Completion
|
||||||
luasnip # Snippet manager compatible with LSP
|
|
||||||
friendly-snippets # LSP snippets collection
|
|
||||||
nvim-cmp # Completion engine
|
nvim-cmp # Completion engine
|
||||||
cmp-async-path # More responsive path completion
|
|
||||||
cmp-buffer # Words from open buffers
|
cmp-buffer # Words from open buffers
|
||||||
cmp-nvim-lsp # LSP suggestions
|
cmp-nvim-lsp # LSP suggestions
|
||||||
cmp-nvim-lua # NeoVim lua API
|
cmp-nvim-lua # NeoVim lua API
|
||||||
|
cmp-path # Path name suggestions
|
||||||
cmp-under-comparator # Sort items that start with '_' lower
|
cmp-under-comparator # Sort items that start with '_' lower
|
||||||
cmp_luasnip # Snippet suggestions from LuaSnip
|
friendly-snippets # LSP snippets collection
|
||||||
|
luasnip # Snippet manager compatible with LSP
|
||||||
|
|
||||||
# UX improvements
|
# UX improvements
|
||||||
dressing-nvim # Integrate native UI hooks with Telescope etc...
|
dressing-nvim # Integrate native UI hooks with Telescope etc...
|
||||||
gitsigns-nvim # Fast git UI integration
|
gitsigns-nvim # Fast git UI integration
|
||||||
nvim-surround # Deal with pairs, now in Lua
|
nvim-notify # Better notification API
|
||||||
oil-nvim # Better alternative to NetrW
|
|
||||||
telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm
|
telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm
|
||||||
telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions
|
telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions
|
||||||
telescope-nvim # Fuzzy finder interface
|
telescope-nvim # Fuzzy finder interface
|
||||||
|
@ -98,11 +100,8 @@ in
|
||||||
nixpkgs-fmt
|
nixpkgs-fmt
|
||||||
|
|
||||||
# Shell
|
# Shell
|
||||||
bash-language-server
|
shellcheck
|
||||||
shfmt
|
shfmt
|
||||||
|
|
||||||
# Generic
|
|
||||||
typos-lsp
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
2
home/vim/ftdetect/automake.vim
Normal file
2
home/vim/ftdetect/automake.vim
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
" Use Automake filetype for `local.am` files, explicit `set` to force override
|
||||||
|
au BufNewFile,BufRead local.am set filetype=automake
|
2
home/vim/ftdetect/tikz.vim
Normal file
2
home/vim/ftdetect/tikz.vim
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
" Use LaTeX filetype for TikZ files
|
||||||
|
au BufNewFile,BufRead *.tikz setfiletype tex
|
|
@ -1,4 +1,4 @@
|
||||||
" Basic configuration {{{
|
" Basic configuraion {{{
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
" Use UTF-8
|
" Use UTF-8
|
||||||
set encoding=utf-8
|
set encoding=utf-8
|
||||||
|
@ -38,10 +38,10 @@ set tabstop=8
|
||||||
|
|
||||||
" File parameters {{{
|
" File parameters {{{
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
" Disable swap files
|
" Disable backups, we have source control for that
|
||||||
|
set nobackup
|
||||||
|
" Disable swapfiles too
|
||||||
set noswapfile
|
set noswapfile
|
||||||
" Enable undo files
|
|
||||||
set undofile
|
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" UI and UX parameters {{{
|
" UI and UX parameters {{{
|
||||||
|
@ -66,11 +66,6 @@ set list
|
||||||
" Show a tab as an arrow, trailing spaces as ¤, non-breaking spaces as dots
|
" Show a tab as an arrow, trailing spaces as ¤, non-breaking spaces as dots
|
||||||
set listchars=tab:>─,trail:·,nbsp:¤
|
set listchars=tab:>─,trail:·,nbsp:¤
|
||||||
|
|
||||||
" Use patience diff
|
|
||||||
set diffopt+=algorithm:patience
|
|
||||||
" Align similar lines in each hunk
|
|
||||||
set diffopt+=linematch:50
|
|
||||||
|
|
||||||
" Don't redraw when executing macros
|
" Don't redraw when executing macros
|
||||||
set lazyredraw
|
set lazyredraw
|
||||||
|
|
||||||
|
@ -80,37 +75,15 @@ set timeoutlen=500
|
||||||
" Timeout quickly for CursorHold events (and also swap file)
|
" Timeout quickly for CursorHold events (and also swap file)
|
||||||
set updatetime=250
|
set updatetime=250
|
||||||
|
|
||||||
" Disable all mouse integrations
|
|
||||||
set mouse=
|
|
||||||
|
|
||||||
" Set dark mode by default
|
" Set dark mode by default
|
||||||
set background=dark
|
set background=dark
|
||||||
|
|
||||||
" Setup some overrides for gruvbox
|
" Include plug-in integration
|
||||||
lua << EOF
|
let g:gruvbox_plugin_hi_groups=1
|
||||||
local gruvbox = require("gruvbox")
|
" Include filetype integration
|
||||||
local colors = gruvbox.palette
|
let g:gruvbox_filetype_hi_groups=1
|
||||||
|
|
||||||
gruvbox.setup({
|
|
||||||
overrides = {
|
|
||||||
-- Only URLs should be underlined
|
|
||||||
["@string.special.path"] = { link = "GruvboxOrange" },
|
|
||||||
-- Revert back to the better diff highlighting
|
|
||||||
DiffAdd = { fg = colors.green, bg = "NONE" },
|
|
||||||
DiffChange = { fg = colors.aqua, bg = "NONE" },
|
|
||||||
DiffDelete = { fg = colors.red, bg = "NONE" },
|
|
||||||
DiffText = { fg = colors.yellow, bg = colors.bg0 },
|
|
||||||
-- Directories "pop" better in blue
|
|
||||||
Directory = { link = "GruvboxBlueBold" },
|
|
||||||
},
|
|
||||||
italic = {
|
|
||||||
-- Comments should not be italic, for e.g: box drawing
|
|
||||||
comments = false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
EOF
|
|
||||||
" Use my preferred colorscheme
|
" Use my preferred colorscheme
|
||||||
colorscheme gruvbox
|
colorscheme gruvbox8
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" Search parameters {{{
|
" Search parameters {{{
|
||||||
|
@ -123,10 +96,12 @@ set ignorecase
|
||||||
set smartcase
|
set smartcase
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" Project-local settings {{{
|
" Import settings when inside a git repository {{{
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
" Securely read `.nvim.lua` or `.nvimrc`.
|
let git_settings=system("git config --get vim.settings")
|
||||||
set exrc
|
if strlen(git_settings)
|
||||||
|
exe "set" git_settings
|
||||||
|
endif
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" vim: foldmethod=marker
|
" vim: foldmethod=marker
|
83
home/vim/lua/ambroisie/lsp.lua
Normal file
83
home/vim/lua/ambroisie/lsp.lua
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
-- shared LSP configuration callback
|
||||||
|
-- @param client native client configuration
|
||||||
|
-- @param bufnr int? buffer number of the attched client
|
||||||
|
M.on_attach = function(client, bufnr)
|
||||||
|
-- Diagnostics
|
||||||
|
vim.diagnostic.config({
|
||||||
|
-- Disable virtual test next to affected regions
|
||||||
|
virtual_text = false,
|
||||||
|
-- Show diagnostics signs
|
||||||
|
signs = true,
|
||||||
|
-- Underline offending regions
|
||||||
|
underline = true,
|
||||||
|
-- Do not bother me in the middle of insertion
|
||||||
|
update_in_insert = false,
|
||||||
|
-- Show highest severity first
|
||||||
|
severity_sort = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.cmd([[
|
||||||
|
augroup DiagnosticsHover
|
||||||
|
autocmd! * <buffer>
|
||||||
|
" Show diagnostics on "hover"
|
||||||
|
autocmd CursorHold,CursorHoldI <buffer> lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"})
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
|
||||||
|
-- Format on save
|
||||||
|
if client.resolved_capabilities.document_formatting then
|
||||||
|
vim.cmd([[
|
||||||
|
augroup LspFormatting
|
||||||
|
autocmd! * <buffer>
|
||||||
|
autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Mappings
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
local function list_workspace_folders()
|
||||||
|
local utils = require("ambroisie.utils")
|
||||||
|
utils.dump(vim.lsp.buf.list_workspace_folders())
|
||||||
|
end
|
||||||
|
|
||||||
|
local function show_line_diagnostics()
|
||||||
|
vim.diagnostic.open_float(nil, { scope="line" })
|
||||||
|
end
|
||||||
|
|
||||||
|
local function show_buffer_diagnostics()
|
||||||
|
vim.diagnostic.open_float(nil, { scope="buffer" })
|
||||||
|
end
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
K = { vim.lsp.buf.hover, "Show symbol information" },
|
||||||
|
["gd"] = { vim.lsp.buf.definition, "Go to definition" },
|
||||||
|
["gD"] = { vim.lsp.buf.declaration, "Go to declaration" },
|
||||||
|
["gi"] = { vim.lsp.buf.implementation, "Go to implementation" },
|
||||||
|
["gr"] = { vim.lsp.buf.references, "List all references" },
|
||||||
|
|
||||||
|
["<leader>c"] = {
|
||||||
|
name = "Code",
|
||||||
|
a = { vim.lsp.buf.code_action, "Code actions" },
|
||||||
|
d = { show_line_diagnostics, "Show line diagnostics" },
|
||||||
|
D = { show_buffer_diagnostics, "Show buffer diagnostics" },
|
||||||
|
r = { vim.lsp.buf.rename, "Rename symbol" },
|
||||||
|
s = { vim.lsp.buf.signature_help, "Show signature" },
|
||||||
|
t = { vim.lsp.buf.type_definition, "Go to type definition" },
|
||||||
|
w = {
|
||||||
|
name = "Workspace",
|
||||||
|
a = { vim.lsp.buf.add_workspace_folder, "Add folder to workspace" },
|
||||||
|
l = { list_workspace_folders, "List folders in workspace" },
|
||||||
|
r = { vim.lsp.buf.remove_workspace_folder, "Remove folder from workspace" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(keys, { buffer = bufnr })
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
return M
|
37
home/vim/lua/ambroisie/utils.lua
Normal file
37
home/vim/lua/ambroisie/utils.lua
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
-- pretty print lua object
|
||||||
|
-- @param obj any object to pretty print
|
||||||
|
M.dump = function(obj)
|
||||||
|
print(vim.inspect(obj))
|
||||||
|
end
|
||||||
|
|
||||||
|
--- checks if a given command is executable
|
||||||
|
---@param cmd string? command to check
|
||||||
|
---@return boolean executable
|
||||||
|
M.is_executable = function(cmd)
|
||||||
|
return cmd and vim.fn.executable(cmd) == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
--- return a function that checks if a given command is executable
|
||||||
|
---@param cmd string? command to check
|
||||||
|
---@return fun(cmd: string): boolean executable
|
||||||
|
M.is_executable_condition = function(cmd)
|
||||||
|
return function() return M.is_executable(cmd) end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- list all active LSP clients for current buffer
|
||||||
|
-- @param bufnr int? buffer number
|
||||||
|
-- @return table all active LSP client names
|
||||||
|
M.list_lsp_clients = function(bufnr)
|
||||||
|
local clients = vim.lsp.buf_get_clients(bufnr)
|
||||||
|
local names = {}
|
||||||
|
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
table.insert(names, client.name)
|
||||||
|
end
|
||||||
|
|
||||||
|
return names
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
5
home/vim/plugin/abbreviations.vim
Normal file
5
home/vim/plugin/abbreviations.vim
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
" A few useful sets of abbreviations
|
||||||
|
|
||||||
|
" A few things that are hard to write in ASCII
|
||||||
|
abbreviate (R) ©
|
||||||
|
abbreviate (TM) ™
|
13
home/vim/plugin/numbertoggle.vim
Normal file
13
home/vim/plugin/numbertoggle.vim
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
" Idea for toggling taken from jeffkreeftmeijer
|
||||||
|
|
||||||
|
" Show line numbers
|
||||||
|
set number
|
||||||
|
|
||||||
|
augroup numbertoggle
|
||||||
|
autocmd!
|
||||||
|
" Toggle numbers between relative and absolute when changing buffers
|
||||||
|
autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif
|
||||||
|
autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif
|
||||||
|
" Disable line numbers and relative line numbers in terminal
|
||||||
|
autocmd TermOpen * setlocal nonu nornu
|
||||||
|
augroup END
|
|
@ -1,6 +1,7 @@
|
||||||
-- Show completion menu in all cases, and don't select anything
|
" Show completion menu in all cases, and don't select anything
|
||||||
vim.opt.completeopt = { "menu", "menuone", "noselect" }
|
set completeopt=menu,menuone,noselect
|
||||||
|
|
||||||
|
lua << EOF
|
||||||
local cmp = require("cmp")
|
local cmp = require("cmp")
|
||||||
local cmp_under_comparator = require("cmp-under-comparator")
|
local cmp_under_comparator = require("cmp-under-comparator")
|
||||||
local luasnip = require("luasnip")
|
local luasnip = require("luasnip")
|
||||||
|
@ -28,7 +29,7 @@ cmp.setup({
|
||||||
end,
|
end,
|
||||||
["<C-n>"] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }),
|
["<C-n>"] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }),
|
||||||
["<C-p>"] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }),
|
["<C-p>"] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }),
|
||||||
["<C-d>"] = cmp.mapping.scroll_docs(-5),
|
["<C-d>"] = cmp.mapping.scroll_docs(-5),
|
||||||
["<C-f>"] = cmp.mapping.scroll_docs(5),
|
["<C-f>"] = cmp.mapping.scroll_docs(5),
|
||||||
["<C-y>"] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false }),
|
["<C-y>"] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false }),
|
||||||
["<C-e>"] = cmp.mapping.abort(),
|
["<C-e>"] = cmp.mapping.abort(),
|
||||||
|
@ -37,7 +38,7 @@ cmp.setup({
|
||||||
entries = "native",
|
entries = "native",
|
||||||
},
|
},
|
||||||
sources = {
|
sources = {
|
||||||
{ name = "async_path", priority_weight = 110 },
|
{ name = "path", priority_weight = 110 },
|
||||||
{ name = "nvim_lsp", priority_weight = 100 },
|
{ name = "nvim_lsp", priority_weight = 100 },
|
||||||
{ name = "nvim_lua", priority_weight = 90 },
|
{ name = "nvim_lua", priority_weight = 90 },
|
||||||
{ name = "luasnip", priority_weight = 80 },
|
{ name = "luasnip", priority_weight = 80 },
|
||||||
|
@ -56,7 +57,5 @@ cmp.setup({
|
||||||
cmp.config.compare.order,
|
cmp.config.compare.order,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
experimental = {
|
|
||||||
ghost_text = true,
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
EOF
|
|
@ -1,6 +1,8 @@
|
||||||
|
lua << EOF
|
||||||
local dressing = require("dressing")
|
local dressing = require("dressing")
|
||||||
|
|
||||||
dressing.setup({
|
dressing.setup({
|
||||||
-- Use a relative prompt size
|
-- Use a relative prompt size
|
||||||
prefer_width = 0.4,
|
prefer_width = 0.4,
|
||||||
})
|
})
|
||||||
|
EOF
|
5
home/vim/plugin/settings/fastfold.vim
Normal file
5
home/vim/plugin/settings/fastfold.vim
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
" Intercept all fold commands
|
||||||
|
let g:fastfold_fold_command_suffixes=[
|
||||||
|
\ 'x', 'X', 'a', 'A', 'o', 'O', 'c', 'C',
|
||||||
|
\ 'r', 'R', 'm', 'M', 'i', 'n', 'N'
|
||||||
|
\ ]
|
66
home/vim/plugin/settings/git.vim
Normal file
66
home/vim/plugin/settings/git.vim
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
lua << EOF
|
||||||
|
local gitsigns = require('gitsigns')
|
||||||
|
|
||||||
|
gitsigns.setup({
|
||||||
|
-- I dislike the full-green sign column when this happens
|
||||||
|
attach_to_untracked = false,
|
||||||
|
|
||||||
|
current_line_blame_opts = {
|
||||||
|
-- Show the blame quickly
|
||||||
|
delay = 100,
|
||||||
|
},
|
||||||
|
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
-- Navigation
|
||||||
|
["[c"] = { "&diff ? '[c' : '<cmd>Gitsigns prev_hunk<CR>'", "Previous hunk/diff", expr = true },
|
||||||
|
["]c"] = { "&diff ? ']c' : '<cmd>Gitsigns next_hunk<CR>'", "Next hunk/diff", expr = true },
|
||||||
|
|
||||||
|
|
||||||
|
-- Commands
|
||||||
|
["<leader>g"] = {
|
||||||
|
name = "Git",
|
||||||
|
-- Actions
|
||||||
|
b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" },
|
||||||
|
d = { gitsigns.diffthis, "Diff buffer" },
|
||||||
|
D = { function() gitsigns.diffthis("~") end, "Diff buffer against last commit" },
|
||||||
|
g = { "<cmd>Git<CR>", "Git status" },
|
||||||
|
h = { gitsigns.toggle_deleted, "Show deleted hunks" },
|
||||||
|
L = { "<cmd>:sp<CR><C-w>T:Gllog --follow -- %:p<CR>", "Current buffer log" },
|
||||||
|
m = { "<Plug>(git-messenger)", "Current line blame" },
|
||||||
|
p = { gitsigns.preview_hunk, "Preview hunk" },
|
||||||
|
r = { gitsigns.reset_hunk, "Restore hunk" },
|
||||||
|
R = { gitsigns.reset_buffer, "Restore buffer" },
|
||||||
|
s = { gitsigns.stage_hunk, "Stage hunk" },
|
||||||
|
S = { gitsigns.stage_buffer, "Stage buffer" },
|
||||||
|
u = { gitsigns.undo_stage_hunk, "Undo stage hunk" },
|
||||||
|
["["] = { gitsigns.prev_hunk, "Previous hunk" },
|
||||||
|
["]"] = { gitsigns.next_hunk, "Next hunk" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local objects = {
|
||||||
|
["ih"] = { gitsigns.select_hunk, "Git hunk" },
|
||||||
|
}
|
||||||
|
|
||||||
|
local visual = {
|
||||||
|
["ih"] = { gitsigns.select_hunk, "Git hunk" },
|
||||||
|
|
||||||
|
-- Only the actual command can make use of the visual selection...
|
||||||
|
["<leader>g"] = {
|
||||||
|
name = "Git",
|
||||||
|
p = { ":Gitsigns preview_hunk<CR>", "Preview selection" },
|
||||||
|
r = { ":Gitsigns reset_hunk<CR>", "Restore selection" },
|
||||||
|
s = { ":Gitsigns stage_hunk<CR>", "Stage selection" },
|
||||||
|
u = { ":Gitsigns undo_stage_hunk<CR>", "Undo stage selection" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
wk.register(keys, { buffer = bufnr })
|
||||||
|
wk.register(objects, { buffer = bufnr, mode = "o" })
|
||||||
|
wk.register(visual, { buffer = bufnr, mode = "x" })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
EOF
|
41
home/vim/plugin/settings/lspconfig.vim
Normal file
41
home/vim/plugin/settings/lspconfig.vim
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
lua << EOF
|
||||||
|
local lspconfig = require("lspconfig")
|
||||||
|
local lsp = require("ambroisie.lsp")
|
||||||
|
local utils = require("ambroisie.utils")
|
||||||
|
|
||||||
|
-- Inform servers we are able to do completion, snippets, etc...
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities)
|
||||||
|
|
||||||
|
-- C/C++
|
||||||
|
if utils.is_executable("clangd") then
|
||||||
|
lspconfig.clangd.setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp.on_attach,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Nix
|
||||||
|
if utils.is_executable("rnix-lsp") then
|
||||||
|
lspconfig.rnix.setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp.on_attach,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Python
|
||||||
|
if utils.is_executable("pyright") then
|
||||||
|
lspconfig.pyright.setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp.on_attach,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Rust
|
||||||
|
if utils.is_executable("rust-analyzer") then
|
||||||
|
lspconfig.rust_analyzer.setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp.on_attach,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
EOF
|
|
@ -1,3 +1,4 @@
|
||||||
|
lua << EOF
|
||||||
local lualine = require("lualine")
|
local lualine = require("lualine")
|
||||||
local utils = require("ambroisie.utils")
|
local utils = require("ambroisie.utils")
|
||||||
|
|
||||||
|
@ -10,7 +11,7 @@ local function list_spell_languages()
|
||||||
end
|
end
|
||||||
|
|
||||||
local function list_lsp_clients()
|
local function list_lsp_clients()
|
||||||
local client_names = utils.list_lsp_clients(0)
|
local client_names = utils.list_lsp_clients()
|
||||||
|
|
||||||
if #client_names == 0 then
|
if #client_names == 0 then
|
||||||
return ""
|
return ""
|
||||||
|
@ -30,7 +31,7 @@ lualine.setup({
|
||||||
{ "mode" },
|
{ "mode" },
|
||||||
},
|
},
|
||||||
lualine_b = {
|
lualine_b = {
|
||||||
{ "FugitiveHead" },
|
{ "branch" },
|
||||||
{ "filename", symbols = { readonly = "🔒" } },
|
{ "filename", symbols = { readonly = "🔒" } },
|
||||||
},
|
},
|
||||||
lualine_c = {
|
lualine_c = {
|
||||||
|
@ -59,3 +60,4 @@ lualine.setup({
|
||||||
"quickfix",
|
"quickfix",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
EOF
|
3
home/vim/plugin/settings/luasnip.vim
Normal file
3
home/vim/plugin/settings/luasnip.vim
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
lua << EOF
|
||||||
|
require("luasnip.loaders.from_vscode").load()
|
||||||
|
EOF
|
9
home/vim/plugin/settings/notify.vim
Normal file
9
home/vim/plugin/settings/notify.vim
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
lua << EOF
|
||||||
|
local notify = require("notify")
|
||||||
|
|
||||||
|
notify.setup({
|
||||||
|
stages = "slide",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.notify = notify
|
||||||
|
EOF
|
119
home/vim/plugin/settings/null-ls.vim
Normal file
119
home/vim/plugin/settings/null-ls.vim
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
lua << EOF
|
||||||
|
local null_ls = require("null-ls")
|
||||||
|
local lsp = require("ambroisie.lsp")
|
||||||
|
local utils = require("ambroisie.utils")
|
||||||
|
|
||||||
|
null_ls.setup({
|
||||||
|
on_attach = lsp.on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- C, C++
|
||||||
|
null_ls.register({
|
||||||
|
null_ls.builtins.formatting.clang_format.with({
|
||||||
|
-- Only used if available, but prefer clangd formatting if available
|
||||||
|
condition = function()
|
||||||
|
return utils.is_executable("clang-format") and not utils.is_executable("clangd")
|
||||||
|
end,
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Haskell
|
||||||
|
null_ls.register({
|
||||||
|
null_ls.builtins.formatting.brittany.with({
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("brittany"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Nix
|
||||||
|
null_ls.register({
|
||||||
|
null_ls.builtins.formatting.nixpkgs_fmt.with({
|
||||||
|
-- Only used if available, but prefer rnix if available
|
||||||
|
condition = function()
|
||||||
|
return utils.is_executable("nixpkgs-fmt") and not utils.is_executable("rnix-lsp")
|
||||||
|
end,
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Python
|
||||||
|
null_ls.register({
|
||||||
|
null_ls.builtins.diagnostics.flake8.with({
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("flake8"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.diagnostics.mypy.with({
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("mypy"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.diagnostics.pylint.with({
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("pylint"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.formatting.black.with({
|
||||||
|
extra_args = { "--fast" },
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("black"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.formatting.isort.with({
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("isort"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Shell (non-POSIX)
|
||||||
|
null_ls.register({
|
||||||
|
null_ls.builtins.code_actions.shellcheck.with({
|
||||||
|
-- Restrict to bash and zsh
|
||||||
|
filetypes = { "bash", "zsh" },
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("shellcheck"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.diagnostics.shellcheck.with({
|
||||||
|
-- Show error code in message
|
||||||
|
diagnostics_format = "[#{c}] #{m}",
|
||||||
|
-- Require explicit empty string test, use bash dialect
|
||||||
|
extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" },
|
||||||
|
-- Restrict to bash and zsh
|
||||||
|
filetypes = { "bash", "zsh" },
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("shellcheck"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.formatting.shfmt.with({
|
||||||
|
-- Indent with 4 spaces, simplify the code, indent switch cases,
|
||||||
|
-- add space after redirection, use bash dialect
|
||||||
|
extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" },
|
||||||
|
-- Restrict to bash and zsh
|
||||||
|
filetypes = { "bash", "zsh" },
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("shfmt"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Shell (POSIX)
|
||||||
|
null_ls.register({
|
||||||
|
null_ls.builtins.code_actions.shellcheck.with({
|
||||||
|
-- Restrict to POSIX sh
|
||||||
|
filetypes = { "sh" },
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("shellcheck"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.diagnostics.shellcheck.with({
|
||||||
|
-- Show error code in message
|
||||||
|
diagnostics_format = "[#{c}] #{m}",
|
||||||
|
-- Require explicit empty string test
|
||||||
|
extra_args = { "-o", "avoid-nullary-conditions" },
|
||||||
|
-- Restrict to POSIX sh
|
||||||
|
filetypes = { "sh" },
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("shellcheck"),
|
||||||
|
}),
|
||||||
|
null_ls.builtins.formatting.shfmt.with({
|
||||||
|
-- Indent with 4 spaces, simplify the code, indent switch cases,
|
||||||
|
-- add space after redirection, use POSIX
|
||||||
|
extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "posix" },
|
||||||
|
-- Only used if available
|
||||||
|
condition = utils.is_executable_condition("shfmt"),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
EOF
|
20
home/vim/plugin/settings/pandoc.vim
Normal file
20
home/vim/plugin/settings/pandoc.vim
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
" Which code-block languages should I expect to be high-lighted.
|
||||||
|
let g:pandoc#syntax#codeblocks#embeds#langs=[
|
||||||
|
\ "bash=sh",
|
||||||
|
\ "c",
|
||||||
|
\ "cpp",
|
||||||
|
\ "go",
|
||||||
|
\ "haskell",
|
||||||
|
\ "python",
|
||||||
|
\ "rust",
|
||||||
|
\ "sh",
|
||||||
|
\ "vim",
|
||||||
|
\ "yaml",
|
||||||
|
\ "tex",
|
||||||
|
\ "toml",
|
||||||
|
\ "perl",
|
||||||
|
\ "json",
|
||||||
|
\ "latex=tex",
|
||||||
|
\ "make",
|
||||||
|
\ "makefile=make",
|
||||||
|
\ ]
|
18
home/vim/plugin/settings/telescope.vim
Normal file
18
home/vim/plugin/settings/telescope.vim
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
lua << EOF
|
||||||
|
local telescope = require("telescope")
|
||||||
|
|
||||||
|
telescope.setup({
|
||||||
|
extensions = {
|
||||||
|
fzf = {
|
||||||
|
fuzzy = true,
|
||||||
|
override_generic_sorter = true,
|
||||||
|
override_file_sorter = true,
|
||||||
|
case_mode = "smart_case",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
telescope.load_extension("fzf")
|
||||||
|
telescope.load_extension("lsp_handlers")
|
||||||
|
telescope.load_extension("notify")
|
||||||
|
EOF
|
58
home/vim/plugin/settings/tree-sitter.vim
Normal file
58
home/vim/plugin/settings/tree-sitter.vim
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
lua << EOF
|
||||||
|
local ts_config = require("nvim-treesitter.configs")
|
||||||
|
ts_config.setup({
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
-- Avoid duplicate highlighting
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
context_commentstring = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
-- Jump to matching text objects
|
||||||
|
lookahead = true,
|
||||||
|
keymaps = {
|
||||||
|
["aa"] = "@parameter.outer",
|
||||||
|
["ia"] = "@parameter.inner",
|
||||||
|
["ab"] = "@block.outer",
|
||||||
|
["ib"] = "@block.inner",
|
||||||
|
["ac"] = "@class.outer",
|
||||||
|
["ic"] = "@class.inner",
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["ak"] = "@comment.outer",
|
||||||
|
["aS"] = "@statement.outer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
move = {
|
||||||
|
enable = true,
|
||||||
|
-- Add to jump list
|
||||||
|
set_jumps = true,
|
||||||
|
goto_next_start = {
|
||||||
|
["]m"] = "@function.outer",
|
||||||
|
["]S"] = "@statement.outer",
|
||||||
|
["]]"] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_next_end = {
|
||||||
|
["]M"] = "@function.outer",
|
||||||
|
["]["] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_previous_start = {
|
||||||
|
["[m"] = "@function.outer",
|
||||||
|
["[S"] = "@statement.outer",
|
||||||
|
["[["] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_previous_end = {
|
||||||
|
["[M"] = "@function.outer",
|
||||||
|
["[]"] = "@class.outer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
EOF
|
4
home/vim/plugin/settings/which-key.vim
Normal file
4
home/vim/plugin/settings/which-key.vim
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
lua << EOF
|
||||||
|
local wk = require("which-key")
|
||||||
|
wk.setup()
|
||||||
|
EOF
|
8
home/vim/plugin/signtoggle.vim
Normal file
8
home/vim/plugin/signtoggle.vim
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
augroup signtoggle
|
||||||
|
autocmd!
|
||||||
|
" Only show the sign column for the current focused buffer
|
||||||
|
autocmd BufEnter,FocusGained,WinEnter * set signcolumn=yes
|
||||||
|
autocmd BufLeave,FocusLost,WinLeave * set signcolumn=no
|
||||||
|
" Disable the sign column in terminal
|
||||||
|
autocmd TermOpen * setlocal signcolumn=no
|
||||||
|
augroup END
|
|
@ -10,7 +10,6 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./cursor
|
|
||||||
./dunst
|
./dunst
|
||||||
./i3
|
./i3
|
||||||
./i3bar
|
./i3bar
|
||||||
|
@ -26,41 +25,12 @@ in
|
||||||
description = "Which window manager to use for home session";
|
description = "Which window manager to use for home session";
|
||||||
};
|
};
|
||||||
|
|
||||||
cursor = {
|
|
||||||
enable = mkRelatedOption "dunst configuration" [ "i3" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
dunst = {
|
dunst = {
|
||||||
enable = mkRelatedOption "dunst configuration" [ "i3" ];
|
enable = mkRelatedOption "dunst configuration" [ "i3" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
i3bar = {
|
i3bar = {
|
||||||
enable = mkRelatedOption "i3bar configuration" [ "i3" ];
|
enable = mkRelatedOption "i3bar configuration" [ "i3" ];
|
||||||
|
|
||||||
vpn = {
|
|
||||||
enable = my.mkDisableOption "VPN configuration";
|
|
||||||
|
|
||||||
blockConfigs = mkOption {
|
|
||||||
type = with types; listOf (attrsOf str);
|
|
||||||
default = [
|
|
||||||
{
|
|
||||||
active_format = " VPN ";
|
|
||||||
service = "wg-quick-wg";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
active_format = " VPN (LAN) ";
|
|
||||||
service = "wg-quick-lan";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
example = [
|
|
||||||
{
|
|
||||||
active_format = " WORK ";
|
|
||||||
service = "some-service-name";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
description = "list of block configurations, merged with the defaults";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
rofi = {
|
rofi = {
|
||||||
|
@ -72,8 +42,8 @@ in
|
||||||
|
|
||||||
command = mkOption {
|
command = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "${lib.getExe pkgs.i3lock} -n -c 000000";
|
default = "${pkgs.i3lock}/bin/i3lock -n -c 000000";
|
||||||
example = "\${lib.getExe pkgs.i3lock} -n -i lock.png";
|
example = "\${pkgs.i3lock}/bin/i3lock -n -i lock.png";
|
||||||
description = "Locker command to run";
|
description = "Locker command to run";
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,13 +27,13 @@ let
|
||||||
genMovementBindings = f: addVimKeyBindings (lib.my.genAttrs' movementKeys f);
|
genMovementBindings = f: addVimKeyBindings (lib.my.genAttrs' movementKeys f);
|
||||||
|
|
||||||
# Used in multiple scripts to show messages through keybindings
|
# Used in multiple scripts to show messages through keybindings
|
||||||
notify-send = lib.getExe pkgs.libnotify;
|
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
||||||
|
|
||||||
# Screen backlight management
|
# Screen backlight management
|
||||||
changeBacklight = lib.getExe pkgs.ambroisie.change-backlight;
|
changeBacklight = "${pkgs.ambroisie.change-backlight}/bin/change-backlight";
|
||||||
|
|
||||||
# Audio and volume management
|
# Audio and volume management
|
||||||
changeAudio = lib.getExe pkgs.ambroisie.change-audio;
|
changeAudio = "${pkgs.ambroisie.change-audio}/bin/change-audio";
|
||||||
|
|
||||||
# Lock management
|
# Lock management
|
||||||
toggleXautolock =
|
toggleXautolock =
|
||||||
|
@ -61,8 +61,8 @@ in
|
||||||
ambroisie.dragger # drag-and-drop from the CLI
|
ambroisie.dragger # drag-and-drop from the CLI
|
||||||
ambroisie.i3-get-window-criteria # little helper for i3 configuration
|
ambroisie.i3-get-window-criteria # little helper for i3 configuration
|
||||||
arandr # Used by a mapping
|
arandr # Used by a mapping
|
||||||
|
pamixer # Used by a mapping
|
||||||
playerctl # Used by a mapping
|
playerctl # Used by a mapping
|
||||||
xdotool # Used by 'rofi-rbw', in a mapping
|
|
||||||
];
|
];
|
||||||
|
|
||||||
xsession.windowManager.i3 = {
|
xsession.windowManager.i3 = {
|
||||||
|
@ -73,12 +73,14 @@ in
|
||||||
|
|
||||||
bars =
|
bars =
|
||||||
let
|
let
|
||||||
i3status-rs = lib.getExe config.programs.i3status-rust.package;
|
barConfigPath =
|
||||||
|
config.xdg.configFile."i3status-rust/config-top.toml".target;
|
||||||
|
i3status-rs =
|
||||||
|
"${config.programs.i3status-rust.package}/bin/i3status-rs";
|
||||||
in
|
in
|
||||||
assert [ "top" ] == lib.attrNames config.programs.i3status-rust.bars;
|
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
statusCommand = "${i3status-rs} config-top.toml";
|
statusCommand = "${i3status-rs} ${barConfigPath}";
|
||||||
trayOutput = "primary";
|
trayOutput = "primary";
|
||||||
position = "top";
|
position = "top";
|
||||||
|
|
||||||
|
@ -127,10 +129,8 @@ in
|
||||||
{ class = "^Blueman-.*$"; }
|
{ class = "^Blueman-.*$"; }
|
||||||
{ title = "^htop$"; }
|
{ title = "^htop$"; }
|
||||||
{ class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; }
|
{ class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; }
|
||||||
{ class = "^pavucontrol.*$"; }
|
{ class = "^Pavucontrol.*$"; }
|
||||||
{ class = "^Arandr$"; }
|
{ class = "^Arandr$"; }
|
||||||
{ class = "^\\.blueman-manager-wrapped$"; }
|
|
||||||
{ class = "^\\.arandr-wrapped$"; }
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -175,10 +175,6 @@ in
|
||||||
"${modifier}+Control+space" = "floating toggle";
|
"${modifier}+Control+space" = "floating toggle";
|
||||||
# Change focus between tiling/floating
|
# Change focus between tiling/floating
|
||||||
"${modifier}+space" = "focus mode_toggle";
|
"${modifier}+space" = "focus mode_toggle";
|
||||||
# Center floating window
|
|
||||||
"${modifier}+c" = "move absolute position center";
|
|
||||||
# Center floating window
|
|
||||||
"${modifier}+Shift+s" = "sticky toggle";
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
# Focus parent container
|
# Focus parent container
|
||||||
|
@ -191,14 +187,13 @@ in
|
||||||
"${modifier}+d" = "exec rofi -show drun -disable-history";
|
"${modifier}+d" = "exec rofi -show drun -disable-history";
|
||||||
"${modifier}+Shift+d" = "exec rofi -show run -disable-history";
|
"${modifier}+Shift+d" = "exec rofi -show run -disable-history";
|
||||||
"${modifier}+p" = "exec --no-startup-id flameshot gui";
|
"${modifier}+p" = "exec --no-startup-id flameshot gui";
|
||||||
"${modifier}+Ctrl+p" = "exec ${lib.getExe pkgs.rofi-rbw}";
|
|
||||||
"${modifier}+Shift+p" = "exec rofi -show emoji";
|
"${modifier}+Shift+p" = "exec rofi -show emoji";
|
||||||
"${modifier}+b" =
|
"${modifier}+b" =
|
||||||
let
|
let
|
||||||
inherit (config.my.home.bluetooth) enable;
|
inherit (config.my.home.bluetooth) enable;
|
||||||
prog = lib.getExe pkgs.rofi-bluetooth;
|
prog = "${pkgs.ambroisie.rofi-bluetooth}/bin/rofi-bluetooth";
|
||||||
in
|
in
|
||||||
lib.mkIf enable "exec ${prog} -i";
|
lib.mkIf enable "exec ${prog}";
|
||||||
})
|
})
|
||||||
(
|
(
|
||||||
# Changing container focus
|
# Changing container focus
|
||||||
|
@ -372,18 +367,9 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
startup = [
|
startup = [
|
||||||
# NOTE: rely on systemd user services instead...
|
# FIXME
|
||||||
|
# { commdand; always; notification; }
|
||||||
];
|
];
|
||||||
|
|
||||||
window = {
|
|
||||||
commands = [
|
|
||||||
# Make htop window bigger
|
|
||||||
{
|
|
||||||
criteria = { title = "^htop$"; };
|
|
||||||
command = "resize set 80 ppt 80 ppt, move position center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
87
home/wm/i3bar/default.nix
Normal file
87
home/wm/i3bar/default.nix
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.home.wm.i3bar;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
alsaUtils # Used by `sound` block
|
||||||
|
lm_sensors # Used by `temperature` block
|
||||||
|
font-awesome # Icon font
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.i3status-rust = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
bars = {
|
||||||
|
top = {
|
||||||
|
icons = "awesome5";
|
||||||
|
|
||||||
|
blocks = builtins.filter (attr: attr != { }) [
|
||||||
|
{
|
||||||
|
block = "music";
|
||||||
|
buttons = [ "prev" "play" "next" ];
|
||||||
|
max_width = 50;
|
||||||
|
dynamic_width = true;
|
||||||
|
hide_when_empty = true;
|
||||||
|
}
|
||||||
|
(lib.optionalAttrs config.my.home.bluetooth.enable {
|
||||||
|
block = "bluetooth";
|
||||||
|
mac = "4C:87:5D:06:40:D9";
|
||||||
|
hide_disconnected = true;
|
||||||
|
format = "Boson {percentage}";
|
||||||
|
})
|
||||||
|
(lib.optionalAttrs config.my.home.bluetooth.enable {
|
||||||
|
block = "bluetooth";
|
||||||
|
mac = "94:DB:56:00:EE:93";
|
||||||
|
hide_disconnected = true;
|
||||||
|
format = "Protons {percentage}";
|
||||||
|
})
|
||||||
|
(lib.optionalAttrs config.my.home.bluetooth.enable {
|
||||||
|
block = "bluetooth";
|
||||||
|
mac = "F7:78:BA:76:52:F7";
|
||||||
|
hide_disconnected = true;
|
||||||
|
format = "MX Ergo {percentage}";
|
||||||
|
})
|
||||||
|
{
|
||||||
|
block = "cpu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "disk_space";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "net";
|
||||||
|
format = "{ssid} {ip} {signal_strength}";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "backlight";
|
||||||
|
invert_icons = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "battery";
|
||||||
|
format = "{percentage} ({time})";
|
||||||
|
full_format = "{percentage}";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "temperature";
|
||||||
|
collapsed = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "sound";
|
||||||
|
device_kind = "source"; # Microphone status
|
||||||
|
format = ""; # Only show icon
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "sound";
|
||||||
|
show_volume_when_muted = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
block = "time";
|
||||||
|
format = "%F %T";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,10 +2,10 @@
|
||||||
let
|
let
|
||||||
cfg = config.my.home.wm.screen-lock;
|
cfg = config.my.home.wm.screen-lock;
|
||||||
|
|
||||||
notificationCmd =
|
notficationCmd =
|
||||||
let
|
let
|
||||||
duration = toString (cfg.notify.delay * 1000);
|
duration = toString (cfg.notify.delay * 1000);
|
||||||
notifyCmd = "${lib.getExe pkgs.libnotify} -u critical -t ${duration}";
|
notifyCmd = "${pkgs.libnotify}/bin/notify-send -u critical -t ${duration}";
|
||||||
in
|
in
|
||||||
# Needs to be surrounded by quotes for systemd to launch it correctly
|
# Needs to be surrounded by quotes for systemd to launch it correctly
|
||||||
''"${notifyCmd} -- 'Locking in ${toString cfg.notify.delay} seconds'"'';
|
''"${notifyCmd} -- 'Locking in ${toString cfg.notify.delay} seconds'"'';
|
||||||
|
@ -48,7 +48,7 @@ in
|
||||||
"-notify"
|
"-notify"
|
||||||
"${toString cfg.notify.delay}"
|
"${toString cfg.notify.delay}"
|
||||||
"-notifier"
|
"-notifier"
|
||||||
notificationCmd
|
notficationCmd
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue