Compare commits
673 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a056244dd8 | ||
|
|
d7e1dd20d9 | ||
|
|
f1a7ba0f77 | ||
|
|
0540ee700d | ||
|
|
24d77739b9 | ||
|
|
6d4a886acb | ||
|
|
af0c00d1d0 | ||
|
|
23c3d86c73 | ||
|
|
64d63b8f52 | ||
|
|
6b43b76880 | ||
|
|
31e03a7fb8 | ||
|
|
c6d4c3f14b | ||
|
|
9f3521a716 | ||
|
|
767d687674 | ||
|
|
13312a62a1 | ||
|
|
a12fe9a81a | ||
|
|
c5e85ae57d | ||
|
|
0d8bfd7749 | ||
|
|
d8993672c1 | ||
|
|
fedd6a72ea | ||
|
|
36bd8b84e1 | ||
|
|
c43ae9578b | ||
|
|
911845949e | ||
|
|
76c47913ea | ||
|
|
fe1f7245b0 | ||
|
|
ceadb80791 | ||
|
|
cc27decf7a | ||
|
|
cbd2d465e9 | ||
|
|
de2a311f84 | ||
|
|
afedf85534 | ||
|
|
5af43b4194 | ||
|
|
10e01b3270 | ||
|
|
7c6aaf80c3 | ||
|
|
0fcc535f53 | ||
|
|
6fe18fb699 | ||
|
|
5ee6829136 | ||
|
|
01c55c2428 | ||
|
|
a21e14e5e6 | ||
|
|
b4ecbdb587 | ||
|
|
299f017b06 | ||
|
|
3e1c32ff6c | ||
|
|
7a72b4229d | ||
|
|
5a9dc62173 | ||
|
|
d146aa6af1 | ||
|
|
068f8722f0 | ||
|
|
f2cf006a02 | ||
|
|
c268e920c4 | ||
|
|
e9eed8212a | ||
|
|
8753ac2d0b | ||
|
|
13578f0f2f | ||
|
|
b8ceb39db9 | ||
|
|
b22bd95f9f | ||
|
|
b25ce91ca0 | ||
|
|
dac3b34e64 | ||
|
|
ae9427b508 | ||
|
|
cd3715664f | ||
|
|
8136b19187 | ||
|
|
a90a77a29d | ||
|
|
1006680dea | ||
|
|
d0ad3c6e6e | ||
|
|
2e6e17f224 | ||
|
|
61830ffe71 | ||
|
|
1cb855c181 | ||
|
|
c1eee689fd | ||
|
|
d6c080930d | ||
|
|
67b70c3e5c | ||
|
|
07f7654c69 | ||
|
|
2f5e5683e9 | ||
|
|
1f2a665ef0 | ||
|
|
58e16598b1 | ||
|
|
16896d0b37 | ||
|
|
3f2a7346c5 | ||
|
|
3e1255349b | ||
|
|
7f3757e530 | ||
|
|
d39656ad66 | ||
|
|
3d25e1799b | ||
|
|
c937ee3afc | ||
|
|
43b8be4931 | ||
|
|
31879f6186 | ||
|
|
0c34239fab | ||
|
|
104c816612 | ||
|
|
60d177ba39 | ||
|
|
b6cad25714 | ||
|
|
542f811107 | ||
|
|
4b80d21c00 | ||
|
|
ab80268f61 | ||
|
|
30cd88a6b0 | ||
|
|
28d59ed58e | ||
|
|
eb81d94717 | ||
|
|
f1c4eff2d6 | ||
|
|
d044e3dd2e | ||
|
|
6851655e0a | ||
|
|
c7e6aba945 | ||
|
|
669249bdaa | ||
|
|
31488b2534 | ||
|
|
638e37a4b4 | ||
|
|
422e3ffaf5 | ||
|
|
8e26c50b92 | ||
|
|
0ff65b95b5 | ||
|
|
0f6d9c16b5 | ||
|
|
a26a80596a | ||
|
|
1a1b5e9d07 | ||
|
|
ad194bb96d | ||
|
|
f8b20c8f20 | ||
|
|
6971afb3af | ||
|
|
50c3a83d84 | ||
|
|
33810fc79e | ||
|
|
cd8cbe7d65 | ||
|
|
e1bec5a053 | ||
|
|
1a53b35a1f | ||
|
|
968c7a922e | ||
|
|
aac1a100d8 | ||
|
|
38c9906ada | ||
|
|
14744197ac | ||
|
|
f374f6de9b | ||
|
|
e7ccac616d | ||
|
|
f76aee3783 | ||
|
|
4dd98a5554 | ||
|
|
c70507cebd | ||
|
|
dbc55aaa6f | ||
|
|
62a1a19d9d | ||
|
|
1ad395000d | ||
|
|
e54127637e | ||
|
|
2fc1d31961 | ||
|
|
9e53d48c68 | ||
|
|
0b1f3996cf | ||
|
|
b2688973f1 | ||
|
|
75fcb1c2be | ||
|
|
c587c47b79 | ||
|
|
d63ce02e5e | ||
|
|
2e371da2e5 | ||
|
|
c52a7766c2 | ||
|
|
d9337db684 | ||
|
|
e5f2161604 | ||
|
|
9151dc75d8 | ||
|
|
3ce26e6b88 | ||
|
|
84026e498e | ||
|
|
29ff0aa3dd | ||
|
|
fa76704fb5 | ||
|
|
5c59bfa474 | ||
|
|
b5a5efde90 | ||
|
|
7c1f56d6a3 | ||
|
|
b20bf2fbce | ||
|
|
dbcddb6115 | ||
|
|
56ef64700f | ||
|
|
458fe29a91 | ||
|
|
8785a2bd04 | ||
|
|
16c9d54a30 | ||
|
|
e26b4d0285 | ||
|
|
95d3326857 | ||
|
|
c5175cdaeb | ||
|
|
bb084f66e9 | ||
|
|
0960892340 | ||
|
|
34ef6d39f9 | ||
|
|
444340c880 | ||
|
|
acbc487772 | ||
|
|
305c11dc6d | ||
|
|
8a7a76297a | ||
|
|
f9c5e63136 | ||
|
|
1b70d8c5cf | ||
|
|
9f5a1ca09e | ||
|
|
1612dca680 | ||
|
|
f78389127a | ||
|
|
52c2187734 | ||
|
|
d1fadd9059 | ||
|
|
2ccd7409ca | ||
|
|
9e35e81a69 | ||
|
|
8a596d9d86 | ||
|
|
d8e807633c | ||
|
|
81ca5204bb | ||
|
|
ca54d98acf | ||
|
|
62b2ff0090 | ||
|
|
ee976873ce | ||
|
|
411b951332 | ||
|
|
71ec7d1390 | ||
|
|
3571c9da85 | ||
|
|
dee8dcddf8 | ||
|
|
85fa2c5f11 | ||
|
|
d3881d19af | ||
|
|
d16d6906b8 | ||
|
|
449ad7997e | ||
|
|
4d80db7ccb | ||
|
|
b314c9648f | ||
|
|
77ff7edce5 | ||
|
|
5ee186ca15 | ||
|
|
92c34e0c28 | ||
|
|
a38304d73b | ||
|
|
5fd0da5327 | ||
|
|
9ae7a67a40 | ||
|
|
48cb6d9065 | ||
|
|
62bc08a436 | ||
|
|
e0e933132b | ||
|
|
eba2fc481e | ||
|
|
15fa1daa8f | ||
|
|
de6a1f4529 | ||
|
|
04e34161b1 | ||
|
|
575e2d246b | ||
|
|
88ee45885b | ||
|
|
b48a197157 | ||
|
|
59c2ee28e1 | ||
|
|
4c32612a43 | ||
|
|
72e2184e0b | ||
|
|
a221b2d5c1 | ||
|
|
de60ad7c84 | ||
|
|
30293a616b | ||
|
|
16c76c92b3 | ||
|
|
d22a30be53 | ||
|
|
92e165396d | ||
|
|
b0899442ab | ||
|
|
991b456713 | ||
|
|
53dc030c22 | ||
|
|
afd27f2a92 | ||
|
|
6a5c430830 | ||
|
|
f04821fffe | ||
|
|
eeeaf1a7c4 | ||
|
|
2c42201b15 | ||
|
|
e3e7714f4c | ||
|
|
28ff9b7e6a | ||
|
|
c92d1ac1ad | ||
|
|
3d214c7c2d | ||
|
|
bfd689beab | ||
|
|
8879e0c222 | ||
|
|
794932ee3b | ||
|
|
d5e56f4092 | ||
|
|
ad0cc491f8 | ||
|
|
a90dfeac07 | ||
|
|
61ae19567a | ||
|
|
2ffa0a3abf | ||
|
|
651de22342 | ||
|
|
3d5516e20c | ||
|
|
2270fe77b6 | ||
|
|
6514624612 | ||
|
|
4d4db27d49 | ||
|
|
9ff48eb543 | ||
|
|
519de26e6a | ||
|
|
e1915e1741 | ||
|
|
de177e0003 | ||
|
|
c054d85b1c | ||
|
|
47e9b45cfa | ||
|
|
f1f8d50c2e | ||
|
|
e514c9ca09 | ||
|
|
336574206c | ||
|
|
dcd302bf5b | ||
|
|
5aad861057 | ||
|
|
1098005af6 | ||
|
|
223b91e075 | ||
|
|
ee80453e77 | ||
|
|
a49bc73bbd | ||
|
|
818dfda0e3 | ||
|
|
33f62390c5 | ||
|
|
fe143348a4 | ||
|
|
937c0a70d9 | ||
|
|
11c88abded | ||
|
|
9c43f16027 | ||
|
|
ffc3b1baed | ||
|
|
73c349918f | ||
|
|
662009000d | ||
|
|
d4ffdae2f4 | ||
|
|
1a69437e3f | ||
|
|
a2210756c5 | ||
|
|
76dabd905e | ||
|
|
3c1be077b9 | ||
|
|
5aef2f7d40 | ||
|
|
7342a52609 | ||
|
|
8f1949c3fb | ||
|
|
09352dbcbc | ||
|
|
b32cc2ade5 | ||
|
|
eb457f8069 | ||
|
|
bba6f699bd | ||
|
|
532b2e4e0a | ||
|
|
21beb27859 | ||
|
|
029655cb72 | ||
|
|
ec8f733408 | ||
|
|
47449eb534 | ||
|
|
8d585f941d | ||
|
|
35e8d0a6a6 | ||
|
|
5662804337 | ||
|
|
523a3819d1 | ||
|
|
4532330c0c | ||
|
|
0362bbec14 | ||
|
|
fcdd2dc92c | ||
|
|
e7b81f510c | ||
|
|
c3517e5f56 | ||
|
|
9af2f9f691 | ||
|
|
9ca1a031b5 | ||
|
|
640f815782 | ||
|
|
5885d6e400 | ||
|
|
897dcfb7e3 | ||
|
|
17589f5697 | ||
|
|
914f8bfa7e | ||
|
|
65f98fd3ec | ||
|
|
f65f5a28e8 | ||
|
|
c9ca8c21f3 | ||
|
|
b0e4113b3b | ||
|
|
2a200b0e75 | ||
|
|
f1b6044ed1 | ||
|
|
8891834ae1 | ||
|
|
4356ad0e2f | ||
|
|
3cbf606230 | ||
|
|
fb75ecc61d | ||
|
|
792970dc7f | ||
|
|
30220aba6c | ||
|
|
6f0e14a560 | ||
|
|
fb297a1016 | ||
|
|
ea3baad219 | ||
|
|
f12c527cdc | ||
|
|
f16312b953 | ||
|
|
de8abc2c4f | ||
|
|
3308c7424a | ||
|
|
12ca3743a1 | ||
|
|
fc7fbfe0ee | ||
|
|
916a9ed923 | ||
|
|
bd98e149f9 | ||
|
|
a66048b432 | ||
|
|
d8d8d7e990 | ||
|
|
8c5ce4880e | ||
|
|
14ef376f03 | ||
|
|
ff5a75f687 | ||
|
|
bbfd3a5de2 | ||
|
|
a980904382 | ||
|
|
25d6f672a4 | ||
|
|
1922a9550b | ||
|
|
79b3cec6fb | ||
|
|
e9f8555d37 | ||
|
|
0875217932 | ||
|
|
7dc0964759 | ||
|
|
d7553fbce8 | ||
|
|
458e61b19c | ||
|
|
d20693de9a | ||
|
|
ea770a10ec | ||
|
|
970aa3133b | ||
|
|
fe323511a4 | ||
|
|
ea806f21d4 | ||
|
|
a6a6cc3c09 | ||
|
|
c334ff2851 | ||
|
|
40c8ca00db | ||
|
|
a25c5fd551 | ||
|
|
b6d0f00b34 | ||
|
|
c020deea69 | ||
|
|
01e6c36348 | ||
|
|
1c9454a1cd | ||
|
|
0b65935549 | ||
|
|
b48b9d1ef2 | ||
|
|
c52a218305 | ||
|
|
b5638ad2c8 | ||
|
|
ca94ff3e9b | ||
|
|
a306013288 | ||
|
|
90a73be013 | ||
|
|
4aa1b4eb50 | ||
|
|
c2c92cf19c | ||
|
|
d767f47422 | ||
|
|
442a0ad2b8 | ||
|
|
8b4fae6767 | ||
|
|
886e10612b | ||
|
|
5734351eca | ||
|
|
c52894ecf0 | ||
|
|
72dd09aca1 | ||
|
|
4bd0343a63 | ||
|
|
961bb66e39 | ||
|
|
3e2f341bdb | ||
|
|
e0dcde257a | ||
|
|
e2ce1c442c | ||
|
|
d3a25298d8 | ||
|
|
b4edee45c2 | ||
|
|
c830e627b0 | ||
|
|
fcec5fff43 | ||
|
|
8a81c97ef3 | ||
|
|
6d46bb179c | ||
|
|
a38eb82a2d | ||
|
|
2c01fd4182 | ||
|
|
ad01749b10 | ||
|
|
201e9141a9 | ||
|
|
dfbabf721d | ||
|
|
24553acae4 | ||
|
|
ace16b05dd | ||
|
|
9222b90b24 | ||
|
|
ac7da3935e | ||
|
|
c08d1bd231 | ||
|
|
9635c7c8d5 | ||
|
|
51c00c532f | ||
|
|
e386a42a43 | ||
|
|
26f5c4d041 | ||
|
|
c3c4d5a027 | ||
|
|
c416c53ec3 | ||
|
|
51c1e94c15 | ||
|
|
12657964c0 | ||
|
|
b4a41673ed | ||
|
|
a0c9d2570d | ||
|
|
abca34497f | ||
|
|
3a66e81390 | ||
|
|
9c8ff97621 | ||
|
|
fd3b272e31 | ||
|
|
b14941d499 | ||
|
|
b503ef1dec | ||
|
|
f600f4903f | ||
|
|
023bf6d570 | ||
|
|
3e23890e43 | ||
|
|
fc4dba9a75 | ||
|
|
2b56da08c6 | ||
|
|
f95f539cad | ||
|
|
d8b626139a | ||
|
|
477679c0a7 | ||
|
|
109ce61bbe | ||
|
|
0c50468ec2 | ||
|
|
71f03bde80 | ||
|
|
b568faa7f2 | ||
|
|
31a84fd6ff | ||
|
|
30d497fef2 | ||
|
|
6e41aed96f | ||
|
|
9256aabe91 | ||
|
|
7d54322e8c | ||
|
|
364945be45 | ||
|
|
7932ba1f44 | ||
|
|
4eef13d9ba | ||
|
|
80ea020322 | ||
|
|
31d025a1b8 | ||
|
|
b41644c69d | ||
|
|
0ec95f82d2 | ||
|
|
0df71d76df | ||
|
|
d3f39e88dc | ||
|
|
a8db853539 | ||
|
|
ba4af473f4 | ||
|
|
c272a4a8f9 | ||
|
|
16f1aba0c1 | ||
|
|
9be215cdea | ||
|
|
f125369e88 | ||
|
|
73d9867b9a | ||
|
|
04b3882399 | ||
|
|
ad0c8828cf | ||
|
|
89252b80bf | ||
|
|
ab6ae9e7fb | ||
|
|
c84eb4e185 | ||
|
|
00236ad9b1 | ||
|
|
3e9f37ea04 | ||
|
|
0019097d38 | ||
|
|
90284912bc | ||
|
|
f9f63657fb | ||
|
|
319da87024 | ||
|
|
b5cad0e00c | ||
|
|
892666e946 | ||
|
|
d1f5b0ea4f | ||
|
|
a8980eb4dd | ||
|
|
8482de47b2 | ||
|
|
7faec62f69 | ||
|
|
69f2ccceca | ||
|
|
476d89a651 | ||
|
|
690ae53780 | ||
|
|
58ed393097 | ||
|
|
4367c39873 | ||
|
|
f32062d541 | ||
|
|
eb57aa062e | ||
|
|
fce3056d8f | ||
|
|
42bb93093c | ||
|
|
e785e84bf2 | ||
|
|
e2af0156c8 | ||
|
|
b071daad02 | ||
|
|
4e7a020fc4 | ||
|
|
ac53f1a812 | ||
|
|
5ed0ec12ea | ||
|
|
fc0c2b0d13 | ||
|
|
aa1f99e8f4 | ||
|
|
2b947bd5b1 | ||
|
|
c0efbbd734 | ||
|
|
6379ff551d | ||
|
|
492d257fa5 | ||
|
|
3bebb475d7 | ||
|
|
4a832f376f | ||
|
|
a5bd556df9 | ||
|
|
c6710b1d64 | ||
|
|
731aa270b6 | ||
|
|
8c74fa0fc8 | ||
|
|
0bb41bb6dd | ||
|
|
92e9e59f02 | ||
|
|
7a177e4bb2 | ||
|
|
e8625f81e9 | ||
|
|
b14c343f14 | ||
|
|
c364668759 | ||
|
|
3381fe405b | ||
|
|
b738189d0c | ||
|
|
ac914caf6a | ||
|
|
97e2c915cd | ||
|
|
21ed46cd7c | ||
|
|
7eb4e5ade9 | ||
|
|
dae95bc5be | ||
|
|
a33cf73ff1 | ||
|
|
18c30e5931 | ||
|
|
13c8f27411 | ||
|
|
a640670baa | ||
|
|
ae77733c71 | ||
|
|
6827360045 | ||
|
|
359e9745d6 | ||
|
|
56bcd3d56a | ||
|
|
8a81c546de | ||
|
|
23f0682eac | ||
|
|
418bc45bd2 | ||
|
|
1c4fece944 | ||
|
|
3716ba6b4f | ||
|
|
0e56be3428 | ||
|
|
7beef9441e | ||
|
|
176e3ba305 | ||
|
|
ed045316ff | ||
|
|
cfec304bbb | ||
|
|
575bb58bfc | ||
|
|
9ce3df4884 | ||
|
|
3c9875a110 | ||
|
|
8c69c549db | ||
|
|
f1f919fe49 | ||
|
|
12cc080fc3 | ||
|
|
6b4b9a9aa7 | ||
|
|
6207e48d84 | ||
|
|
b41dfdf664 | ||
|
|
8155f65fb9 | ||
|
|
b0ca6aa757 | ||
|
|
fd0251afbc | ||
|
|
5e16ae7463 | ||
|
|
2a2f4e4b9d | ||
|
|
eef1d9531f | ||
|
|
b92243118d | ||
|
|
01f9894fc6 | ||
|
|
03d202250b | ||
|
|
9cb8036b73 | ||
|
|
60fe3769e8 | ||
|
|
641bf821d4 | ||
|
|
25aa619445 | ||
|
|
5a0d476de3 | ||
|
|
00db8d0ae6 | ||
|
|
ef66b6f848 | ||
|
|
59caed5e69 | ||
|
|
dad0865d06 | ||
|
|
c106c76cbc | ||
|
|
4181544de8 | ||
|
|
30c8414749 | ||
|
|
6bb9386773 | ||
|
|
ae82cbcf67 | ||
|
|
518ac107c6 | ||
|
|
58f5f421e8 | ||
|
|
999950afc9 | ||
|
|
13a6249227 | ||
|
|
c68df370cc | ||
|
|
c08d551932 | ||
|
|
fa63cf950a | ||
|
|
31cb1fd0f2 | ||
|
|
647236f7b0 | ||
|
|
43566fc4ae | ||
|
|
682c50793c | ||
|
|
2958b5a03c | ||
|
|
2b25d18bd5 | ||
|
|
248f9a5ba8 | ||
|
|
89ff802e16 | ||
|
|
13643dc1bc | ||
|
|
188ef240ae | ||
|
|
a8c1b6363d | ||
|
|
8aaa6199f2 | ||
|
|
4cd544d59f | ||
|
|
c9a4f2115d | ||
|
|
395efb8ef1 | ||
|
|
1280370a0a | ||
|
|
f9bcfb5b50 | ||
|
|
3244b2d7e0 | ||
|
|
eff0846c0f | ||
|
|
e2a10d4067 | ||
|
|
39a1d16701 | ||
|
|
adbe7f3295 | ||
|
|
d67f234b2b | ||
|
|
14a3a77c9e | ||
|
|
0a1f505dd1 | ||
|
|
c6b1af26ce | ||
|
|
4a42f1fc91 | ||
|
|
612a8f6d33 | ||
|
|
e7b608ecc4 | ||
|
|
bfe270b6e1 | ||
|
|
e5f82cdb2d | ||
|
|
d705c8cecc | ||
|
|
f2613218db | ||
|
|
2099c4636c | ||
|
|
8cf93bfbc8 | ||
|
|
b2dca45c34 | ||
|
|
403e4e1967 | ||
|
|
7ef771f14e | ||
|
|
acb7db87df | ||
|
|
0f5b7f60b6 | ||
|
|
d7264b0de1 | ||
|
|
23b518381a | ||
|
|
8876aae16c | ||
|
|
0ed5d1cf04 | ||
|
|
83decac5e9 | ||
|
|
9104494893 | ||
|
|
10d1a73eeb | ||
|
|
307c0b5edd | ||
|
|
321914861f | ||
|
|
b851c527af | ||
|
|
69f1aa3072 | ||
|
|
aeaee053c4 | ||
|
|
7632e82867 | ||
|
|
ffbb5eb322 | ||
|
|
fe6288d42c | ||
|
|
f54ec0a5ab | ||
|
|
768b475183 | ||
|
|
0643968e77 | ||
|
|
18a17abad4 | ||
|
|
c4b19710ef | ||
|
|
1beb1be29c | ||
|
|
621520e9e8 | ||
|
|
f030f9b6ed | ||
|
|
f6c5f90a75 | ||
|
|
3ad6f353b6 | ||
|
|
debc426717 | ||
|
|
0e6f7110e4 | ||
|
|
af3b9fcd6e | ||
|
|
8e5df9ff90 | ||
|
|
7e1eaf33af | ||
|
|
6a12e7cde9 | ||
|
|
9a4fb9fd61 | ||
|
|
c77dd39a98 | ||
|
|
a0a7d5755a | ||
|
|
5efa224a57 | ||
|
|
61e195d134 | ||
|
|
5b2c6db769 | ||
|
|
c6fee1ccd6 | ||
|
|
60652a60df | ||
|
|
b41f3576c9 | ||
|
|
edacf85795 | ||
|
|
7dd9f021f0 | ||
|
|
ce4da71c70 | ||
|
|
0380714faa | ||
|
|
2b7d962b27 | ||
|
|
11f73f74ff | ||
|
|
8cc101b169 | ||
|
|
0bd30d921b | ||
|
|
fe238ca49a | ||
|
|
527a22c37b | ||
|
|
e1ad72405f | ||
|
|
985a8b063d | ||
|
|
66677bc08e | ||
|
|
f3434352d2 | ||
|
|
65b82b3609 | ||
|
|
c3e544248f | ||
|
|
6a33d7ac72 | ||
|
|
9b8c5b9b19 | ||
|
|
130415e809 | ||
|
|
52a029e998 | ||
|
|
d1a8286a21 | ||
|
|
78bccf2c7e | ||
|
|
4290cc3c35 | ||
|
|
8f70b0d26b | ||
|
|
d9580c1dff | ||
|
|
763fa5e549 | ||
|
|
0c68ac35b5 | ||
|
|
3ed7128cc4 | ||
|
|
d7f34d9f0e | ||
|
|
826fd6aaaf | ||
|
|
1fba2d19b3 | ||
|
|
d92bbe59a6 | ||
|
|
edc0243200 | ||
|
|
27ac4008f8 | ||
|
|
9dc7b851f5 | ||
|
|
4a2d941991 | ||
|
|
a62c549e8f | ||
|
|
7232c54382 | ||
|
|
25067c9d06 | ||
|
|
be8b1b696c | ||
|
|
885f18806e | ||
|
|
b9ebf59fea | ||
|
|
ba007b4710 | ||
|
|
1d8bc979c3 | ||
|
|
a7197e360e | ||
|
|
878754ad8b | ||
|
|
4a08e654e0 | ||
|
|
5d94699990 | ||
|
|
d98468a34d | ||
|
|
5f73e46e73 | ||
|
|
674ef50ac9 | ||
|
|
d276202288 |
15
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: anotherhadi
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
polar: # Replace with a single Polar username
|
||||
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
||||
thanks_dev: # Replace with a single thanks.dev username
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
115
.github/assets/README_template.md
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
# Nixy
|
||||
|
||||
<br>
|
||||
<div align="center">
|
||||
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=starship&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=github&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://nixos.org">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor={backgroundcolor}&logo=NixOS&logoColor={primarycolor}&color={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA={backgroundcolor}&colorB={primarycolor}&logo=unlicense&logoColor={primarycolor}"/>
|
||||
</a>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily customizable setup. It provides a structured way to manage your system configuration and dotfiles with minimal effort.
|
||||
It includes *home-manager*, *secrets*, and *custom theming* all in one place.
|
||||
|
||||
**Features:**
|
||||
|
||||
- 💻 Hyprland-centric: Preconfigured Hyprland ecosystem (Hyprlock, Hyprpanel, etc.)
|
||||
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
||||
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
||||
|
||||
## Table of Content
|
||||
|
||||
{md_table_of_content}
|
||||
|
||||
## Gallery
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Architecture
|
||||
|
||||
### 🏠 /home (User-level configuration)
|
||||
|
||||
Contains **dotfiles and settings** that apply to your user environment.
|
||||
|
||||
**Subfolders:**
|
||||
|
||||
- `programs` is a collection of apps configured with home-manager
|
||||
- `scripts` is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
|
||||
- `system` is some "desktop environment" configuration
|
||||
|
||||
### 🐧 /nixos
|
||||
|
||||
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader, ...)
|
||||
|
||||
### 🎨 /themes
|
||||
|
||||
This folder contains all system themes. Mainly [stylix](https://stylix.danth.me/) configurations.
|
||||
Check out the available themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
|
||||
|
||||
### 💻 /hosts
|
||||
|
||||
This directory contains host-specific configurations.
|
||||
Each host includes:
|
||||
|
||||
- `configuration.nix` for system-wide settings
|
||||
- `home.nix` for user-level configuration
|
||||
- `variables.nix` for global variables
|
||||
- `secrets/` for sensitive data
|
||||
|
||||
## Installation
|
||||
|
||||
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to your system:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
||||
```
|
||||
|
||||
2. Copy the `hosts/laptop` folder, rename it to match your system’s hostname, and update `variables.nix` with your machine’s settings.
|
||||
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure proper hardware support.
|
||||
4. Register your new host in `flake.nix` by adding it under nixosConfigurations.
|
||||
|
||||
> [!Important]
|
||||
> `# CHANGEME` comments are placed throughout the config to indicate necessary modifications.
|
||||
> Use the following command to quickly locate them:
|
||||
>
|
||||
> ```sh
|
||||
> rg "CHANGEME" ~/.config/nixos
|
||||
> ```
|
||||
|
||||
> [!TIP]
|
||||
> When you add new files, don't forget to run `git add .` to add them to the git repository
|
||||
|
||||
5. Build the system
|
||||
|
||||
```sh
|
||||
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- [SERVER](docs/SERVER.md): Check out the server documentation
|
||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||
- [SCRIPTS](docs/SCRIPTS.md): A list of available scripts and their usage
|
||||
- [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in Hyprland
|
||||
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome collection of wallpapers
|
||||
|
||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||
- [LICENSE](LICENSE): MIT License
|
||||
BIN
.github/assets/large.png
vendored
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
.github/assets/logo.png
vendored
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
.github/assets/nixy/1.png
vendored
Normal file
|
After Width: | Height: | Size: 643 KiB |
BIN
.github/assets/nixy/2.png
vendored
Normal file
|
After Width: | Height: | Size: 301 KiB |
BIN
.github/assets/nixy/3.png
vendored
Normal file
|
After Width: | Height: | Size: 404 KiB |
BIN
.github/assets/nixy/4.png
vendored
Normal file
|
After Width: | Height: | Size: 1001 KiB |
BIN
.github/assets/server_dashboard.png
vendored
Normal file
|
After Width: | Height: | Size: 160 KiB |
20
.github/scripts/create_readme.sh
vendored
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Create the README.md file from the .github/assets/README_template.md file
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
README_FILE="./README.md"
|
||||
|
||||
table_of_content=$(markdown-table-of-contents --start-by 2 ./.github/assets/README_template.md) # https://github.com/anotherhadi/markdown-table-of-contents
|
||||
readme_content=$(cat "./.github/assets/README_template.md")
|
||||
|
||||
# Replace variables
|
||||
readme_content=${readme_content//\{primarycolor\}/A594FD}
|
||||
readme_content=${readme_content//\{backgroundcolor\}/0b0b0b}
|
||||
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
|
||||
|
||||
echo "[//]: # (This file is autogenerated)" >"$README_FILE"
|
||||
echo "$readme_content" >>"$README_FILE"
|
||||
sed 's/\r//' "$README_FILE" >"/tmp/readme.md"
|
||||
mv "/tmp/readme.md" "$README_FILE"
|
||||
26
.github/scripts/create_scripts_docs.sh
vendored
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
DOCS_FILE="./docs/SCRIPTS.md"
|
||||
SCRIPTS_FOLDER="./home/scripts"
|
||||
|
||||
# search for every directory in the scripts folder:
|
||||
# The docs for each scripts are in the beginning of the file prefixed by "#-" or "# -" for the title
|
||||
# Inside the folders, the scripts are stored in default.nix files
|
||||
echo "[//]: # (This file is autogenerated)" >"$DOCS_FILE"
|
||||
echo "# Scripts" >>"$DOCS_FILE"
|
||||
echo "" >>"$DOCS_FILE"
|
||||
echo "Scripts are located in the 'home/scripts' folder. Home-manager add those in the user's path." >>"$DOCS_FILE"
|
||||
echo "" >>"$DOCS_FILE"
|
||||
|
||||
for folder in "$SCRIPTS_FOLDER"/*; do
|
||||
script="$folder/default.nix"
|
||||
[[ -f "$script" ]] || continue
|
||||
|
||||
content=$(cat "$script")
|
||||
content=$(echo "$content" | grep -E "^#-|^# -" | sed 's/^#- //;s/^# - //;s/#-//')
|
||||
|
||||
echo "$content" >>"$DOCS_FILE"
|
||||
echo "" >>"$DOCS_FILE"
|
||||
done
|
||||
60
.github/scripts/keybindings_to_markdown.sh
vendored
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# A script to parse the Hyprland configuration to store keybindings in a table
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
KEYBINDINGS_FILE="./docs/KEYBINDINGS-HYPRLAND.md"
|
||||
|
||||
function getList() {
|
||||
content=$1
|
||||
name=$2
|
||||
list_start=$(echo "$content" | sed "/$name = \[/!d;=;Q")
|
||||
list=$(echo "$content" | tail +"$list_start")
|
||||
list_end=$(echo "$list" | sed '/\]/!d;=;Q')
|
||||
list=$(echo "$list" | head -n"$list_end")
|
||||
|
||||
echo "$list"
|
||||
}
|
||||
|
||||
[[ -f "./home/system/hyprland/bindings.nix" ]] || (echo "File ./home/system/hyprland/bindings.nix not found" && exit 1)
|
||||
|
||||
config=$(cat "./home/system/hyprland/bindings.nix")
|
||||
|
||||
# Bind
|
||||
bind=$(getList "$config" "bind")
|
||||
# Bindm (mouse)
|
||||
bindm=$(getList "$config" "bindm")
|
||||
# Bindl (lock)
|
||||
bindl=$(getList "$config" "bindl")
|
||||
# Bindle (lock, repetition)
|
||||
bindle=$(getList "$config" "bindle")
|
||||
|
||||
# Join the lists:
|
||||
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"')
|
||||
|
||||
echo "[//]: # (This file is autogenerated)" >"$KEYBINDINGS_FILE"
|
||||
echo "# Keybindings for Hyprland" >>"$KEYBINDINGS_FILE"
|
||||
echo "" >>"$KEYBINDINGS_FILE"
|
||||
echo "> [!NOTE]" >>"$KEYBINDINGS_FILE"
|
||||
echo "> SUPER is the windows key by default" >>"$KEYBINDINGS_FILE"
|
||||
echo "" >>"$KEYBINDINGS_FILE"
|
||||
|
||||
echo "| Description | Keybinding |" >>"$KEYBINDINGS_FILE"
|
||||
echo "| -- | -- |" >>"$KEYBINDINGS_FILE"
|
||||
echo "| Switch Workspace | SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
|
||||
echo "| Move app to Workspace | SHIFT + SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
|
||||
echo "$keybindings" | while read -r line; do
|
||||
comment=$(echo "$line" | cut -d\# -f2)
|
||||
line=$(echo "$line" | cut -d\# -f1)
|
||||
line=${line:1:${#line}-3}
|
||||
mod=$(echo "$line" | cut -d, -f1)
|
||||
key=$(echo "$line" | cut -d, -f2)
|
||||
# dispatcher=$(echo "$line" | cut -d, -f3)
|
||||
# params=$(echo "$line" | cut -d, -f4)
|
||||
|
||||
[[ $mod == '$mod' ]] && mod="SUPER + "
|
||||
[[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + "
|
||||
|
||||
echo "| ${comment:1} | $mod$key |" >>"$KEYBINDINGS_FILE"
|
||||
done
|
||||
24
.github/workflows/update-hyprland-keybindings.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'home/system/hyprland/bindings.nix'
|
||||
permissions:
|
||||
contents: write
|
||||
jobs:
|
||||
update-readme:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
steps:
|
||||
- name: Check out the repository to the runner
|
||||
uses: actions/checkout@v4
|
||||
- name: Run a script
|
||||
run: |
|
||||
chmod +x ./.github/scripts/keybindings_to_markdown.sh
|
||||
./.github/scripts/keybindings_to_markdown.sh
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
git add .
|
||||
git commit -m "Update KEYBINDINGS-HYPRLAND.md (auto)" && git push
|
||||
exit 0
|
||||
31
.github/workflows/update-readme.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- '.github/assets/README_template.md'
|
||||
permissions:
|
||||
contents: write
|
||||
jobs:
|
||||
update-readme:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
steps:
|
||||
- name: Check out the repository to the runner
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '^1.23'
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
go install github.com/anotherhadi/markdown-table-of-contents@latest
|
||||
- name: Run a script
|
||||
run: |
|
||||
chmod +x ./.github/scripts/create_readme.sh
|
||||
./.github/scripts/create_readme.sh
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
git add .
|
||||
git commit -m "Update README.md (auto)" && git push
|
||||
exit 0
|
||||
24
.github/workflows/update-scripts-docs.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'home/scripts/**'
|
||||
permissions:
|
||||
contents: write
|
||||
jobs:
|
||||
update-readme:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
steps:
|
||||
- name: Check out the repository to the runner
|
||||
uses: actions/checkout@v4
|
||||
- name: Run a script
|
||||
run: |
|
||||
chmod +x ./.github/scripts/create_scripts_docs.sh
|
||||
./.github/scripts/create_scripts_docs.sh
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
git add .
|
||||
git commit -m "Update SCRIPTS.md (auto)" && git push
|
||||
exit 0
|
||||
2
.gitignore
vendored
@@ -1 +1 @@
|
||||
todolist.md
|
||||
.sops.yaml
|
||||
|
||||
11
.sops.yaml
@@ -1,11 +0,0 @@
|
||||
keys:
|
||||
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
|
||||
creation_rules:
|
||||
- path_regex: secrets/laptop.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
- path_regex: secrets/server.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
121
README.md
@@ -1,11 +1,6 @@
|
||||
[//]: # (Title: Nixy)
|
||||
[//]: # (Description: Nixy is a Hyprland NixOS configuration with home-manager, secrets and custom theming all in one place. It's a simple way to manage your system configuration and dotfiles.)
|
||||
[//]: # (Author: Hadi)
|
||||
[//]: # (Date: 06/25/24)
|
||||
[//]: # (Version: v2.0.0)
|
||||
|
||||
[//]: # (This file is autogenerated)
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/docs/src/logo.png" width="100px" />
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
@@ -14,74 +9,116 @@
|
||||
|
||||
<br>
|
||||
<div align="center">
|
||||
<a href="https://github.com/anotherhadi/nixy">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message=v2.0.0&colorA=181825&colorB=89b4fa&logo=githubactions&logoColor=89b4fa"/>
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=89b4fa&labelColor=181825&style=for-the-badge&logo=starship&logoColor=89b4fa">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=A594FD&labelColor=0b0b0b&style=for-the-badge&logo=starship&logoColor=A594FD">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=89b4fa&labelColor=181825&style=for-the-badge&logo=github&logoColor=89b4fa">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=A594FD&labelColor=0b0b0b&style=for-the-badge&logo=github&logoColor=A594FD">
|
||||
</a>
|
||||
<a href="https://nixos.org">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=181825&logo=NixOS&logoColor=89b4fa&color=89b4fa">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=0b0b0b&logo=NixOS&logoColor=A594FD&color=A594FD">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=181825&colorB=89b4fa&logo=unlicense&logoColor=89b4fa"/>
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=0b0b0b&colorB=A594FD&logo=unlicense&logoColor=A594FD"/>
|
||||
</a>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
**Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place.
|
||||
It's a simple way to manage your system configuration and dotfiles.
|
||||
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily customizable setup. It provides a structured way to manage your system configuration and dotfiles with minimal effort.
|
||||
It includes *home-manager*, *secrets*, and *custom theming* all in one place.
|
||||
|
||||
**Features:**
|
||||
|
||||
- 💻 Hyprland-centric: Preconfigured Hyprland ecosystem (Hyprlock, Hyprpanel, etc.)
|
||||
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
|
||||
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
|
||||
|
||||
## Table of Content
|
||||
|
||||
- [Table of Content](#table-of-content)
|
||||
- [Gallery](#gallery)
|
||||
- [Architecture](#architecture)
|
||||
- [Installation](#installation)
|
||||
- [Documentation](#documentation)
|
||||
- [Table of Content](#table-of-content)
|
||||
- [Gallery](#gallery)
|
||||
- [Architecture](#architecture)
|
||||
- [🏠 /home (User-level configuration)](#-home-user-level-configuration)
|
||||
- [🐧 /nixos](#-nixos)
|
||||
- [🎨 /themes](#-themes)
|
||||
- [💻 /hosts](#-hosts)
|
||||
- [Installation](#installation)
|
||||
- [Documentation](#documentation)
|
||||
|
||||
## Gallery
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Architecture
|
||||
|
||||
- 🏠 `home` are the dotfiles and configuration files for the user
|
||||
- 💻 `hosts` are the system configuration files
|
||||
- 'laptop' is my configuration for my laptop with Nvidia
|
||||
- 'server' is for my Nixos server (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
|
||||
- 'guest' is a *template* that you can copy and modify for *your own system*
|
||||
- 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
|
||||
- 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
|
||||
- 🤫 `secrets` are the secrets files encrypted with sops-nix
|
||||
### 🏠 /home (User-level configuration)
|
||||
|
||||
Contains **dotfiles and settings** that apply to your user environment.
|
||||
|
||||
**Subfolders:**
|
||||
|
||||
- `programs` is a collection of apps configured with home-manager
|
||||
- `scripts` is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
|
||||
- `system` is some "desktop environment" configuration
|
||||
|
||||
### 🐧 /nixos
|
||||
|
||||
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader, ...)
|
||||
|
||||
### 🎨 /themes
|
||||
|
||||
This folder contains all system themes. Mainly [stylix](https://stylix.danth.me/) configurations.
|
||||
Check out the available themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
|
||||
|
||||
### 💻 /hosts
|
||||
|
||||
This directory contains host-specific configurations.
|
||||
Each host includes:
|
||||
|
||||
- `configuration.nix` for system-wide settings
|
||||
- `home.nix` for user-level configuration
|
||||
- `variables.nix` for global variables
|
||||
- `secrets/` for sensitive data
|
||||
|
||||
## Installation
|
||||
|
||||
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to your system:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
||||
```
|
||||
|
||||
- Copy the `hosts/guest` folder, rename it to your system name, and change the variables inside the `variables.nix` file
|
||||
- Add your `hardware-configuration.nix` to your new host's folder
|
||||
- Add your 'nixosConfigurations' inside `flake.nix` (You can edit the "yourhostname" one and change the lines containing '# CHANGEME')
|
||||
2. Copy the `hosts/laptop` folder, rename it to match your system’s hostname, and update `variables.nix` with your machine’s settings.
|
||||
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure proper hardware support.
|
||||
4. Register your new host in `flake.nix` by adding it under nixosConfigurations.
|
||||
|
||||
> [!NOTE]
|
||||
> [!Important]
|
||||
> `# CHANGEME` comments are placed throughout the config to indicate necessary modifications.
|
||||
> Use the following command to quickly locate them:
|
||||
>
|
||||
> ```sh
|
||||
> rg "CHANGEME" ~/.config/nixos
|
||||
> ```
|
||||
|
||||
> [!TIP]
|
||||
> When you add new files, don't forget to run `git add .` to add them to the git repository
|
||||
|
||||
5. Build the system
|
||||
|
||||
```sh
|
||||
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- [THEMES.md](docs/THEMES.md): How themes work and how to create your own
|
||||
- [APPS.md](docs/APPS.md): Which apps are installed
|
||||
- [SCRIPTS.md](docs/SCRIPTS.md): Scripts that are available
|
||||
- [TODO.md](docs/TODO.md): What's next (feel free to contribute)
|
||||
- [CONTRIBUTING.md](docs/CONTRIBUTING.md): How to contribute
|
||||
- [LICENSE](LICENSE): MIT Licensey
|
||||
- [SERVER](docs/SERVER.md): Check out the server documentation
|
||||
- [THEMES](docs/THEMES.md): How themes work and how to create your own
|
||||
- [SCRIPTS](docs/SCRIPTS.md): A list of available scripts and their usage
|
||||
- [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in Hyprland
|
||||
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome collection of wallpapers
|
||||
|
||||
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
|
||||
- [LICENSE](LICENSE): MIT License
|
||||
|
||||
57
docs/APPS.md
@@ -1,57 +0,0 @@
|
||||
# Apps and services
|
||||
|
||||
*non-exhaustive lists*
|
||||
|
||||
## Laptop
|
||||
|
||||
The laptop configuration is used by a Omen 16 laptop w/ nvidia and an amd gpu running NixOS.
|
||||
The configurations files can be found in the `hosts/laptop` directory.
|
||||
|
||||
|
||||
| Category | Name |
|
||||
|----------------|---------------|
|
||||
| WM | Hyprland |
|
||||
| | hyprlock |
|
||||
| | hyprpaper |
|
||||
| | hypridle |
|
||||
| | wlogout |
|
||||
| Bar | waybar |
|
||||
| Terminal | kitty |
|
||||
| Shell | zsh |
|
||||
| | tmux |
|
||||
| | starship |
|
||||
| | bat |
|
||||
| | eza |
|
||||
| | zoxide |
|
||||
| | fzf |
|
||||
| Editor | neovim(nixvim)|
|
||||
| File manager | lf |
|
||||
| | thunar |
|
||||
| Browser | qutebrowser |
|
||||
| Music | spicetify |
|
||||
| Notifications | dunst |
|
||||
| Launcher | wofi |
|
||||
| DM | tuigreet |
|
||||
| Secrets | sops-nix |
|
||||
| Misc | lazygit |
|
||||
| | neofetch |
|
||||
| | cava |
|
||||
| See [hosts/laptop](../hosts/laptop/)... | |
|
||||
|
||||
## Server
|
||||
|
||||
The server configuration is used by a home server running NixOS.
|
||||
The configurations files can be found in the `hosts/server` directory.
|
||||
I mainly use it for self hosting websites and services such as Nextcloud, Vaultwarden, ...
|
||||
I exposed some services to the internet using a reverse proxy (Nginx) and cloudflare-dyndns, others are accessed through a tailscale network
|
||||
|
||||
### Apps
|
||||
|
||||
- Nextcloud
|
||||
- Vaultwarden
|
||||
- Adguard Home
|
||||
- Unifi Controler
|
||||
- Uptime Kuma
|
||||
- "Jackflix"
|
||||
- Jellyfin, Transmission, *arr
|
||||
- See [hosts/server](../hosts/server/)...
|
||||
@@ -1,13 +1,16 @@
|
||||
# Contributing to Nixy
|
||||
|
||||
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the `docs/TODO.md` file!
|
||||
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the issues!
|
||||
|
||||
The process is straight-forward.
|
||||
|
||||
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
|
||||
- Fork Nixy [git repository](https://github.com/anotherhadi/nixy).
|
||||
- Write your changes (new theme, bug fixes, task in todo, ...).
|
||||
- Write your changes (new theme, bug fixes, issues fix, ...).
|
||||
- Create a Pull Request against the main branch of Nixy.
|
||||
|
||||
> [!WARNING]
|
||||
> Don't push your host's files, secrets, or home configuration
|
||||
> [!TIP]
|
||||
> To update the README, change the `./.github/assets/README_template.md`
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Don't push your host's folder
|
||||
|
||||
51
docs/KEYBINDINGS-HYPRLAND.md
Normal file
@@ -0,0 +1,51 @@
|
||||
[//]: # (This file is autogenerated)
|
||||
# Keybindings for Hyprland
|
||||
|
||||
> [!NOTE]
|
||||
> SUPER is the windows key by default
|
||||
|
||||
| Description | Keybinding |
|
||||
| -- | -- |
|
||||
| Switch Workspace | SUPER + {Number} |
|
||||
| Move app to Workspace | SHIFT + SUPER + {Number} |
|
||||
| Kitty | SUPER + RETURN |
|
||||
| Thunar | SUPER + E |
|
||||
| Zen Browser | SUPER + B |
|
||||
| Bitwarden | SUPER + K |
|
||||
| Lock | SUPER + L |
|
||||
| Powermenu | SUPER + X |
|
||||
| Launcher | SUPER + SPACE |
|
||||
| Quickmenu | SUPER + C |
|
||||
| Toggle HyprFocus | SHIFT + SUPER + SPACE |
|
||||
| Planify | SUPER + P |
|
||||
| Close window | SUPER + Q |
|
||||
| Toggle Floating | SUPER + T |
|
||||
| Toggle Fullscreen | SUPER + F |
|
||||
| Move focus left | SUPER + left |
|
||||
| Move focus Right | SUPER + right |
|
||||
| Move focus Up | SUPER + up |
|
||||
| Move focus Down | SUPER + down |
|
||||
| Focus previous monitor | SHIFT + SUPER + up |
|
||||
| Focus next monitor | SHIFT + SUPER + down |
|
||||
| Add to master | SHIFT + SUPER + left |
|
||||
| Remove from master | SHIFT + SUPER + right |
|
||||
| Screenshot region | SUPER + PRINT |
|
||||
| Screenshot monitor | PRINT |
|
||||
| Screenshot window | SHIFT + SUPER + PRINT |
|
||||
| Screenshot region then edit | ALTPRINT |
|
||||
| Toggle hyprpanel | SHIFT + SUPER + T |
|
||||
| Clipboard picker with wofi | SHIFT + SUPER + C |
|
||||
| Emoji picker with wofi | SHIFT + SUPER + E |
|
||||
| Toggle night shift | SUPER + F2 |
|
||||
| Toggle night shift | SUPER + F3 |
|
||||
| Move Window (mouse) | SUPER + mouse:272 |
|
||||
| Resize Window (mouse) | SUPER + R |
|
||||
| Toggle Mute | XF86AudioMute |
|
||||
| Play/Pause Song | XF86AudioPlay |
|
||||
| Next Song | XF86AudioNext |
|
||||
| Previous Song | XF86AudioPrev |
|
||||
| Lock when closing Lid | switch:Lid Switch |
|
||||
| Sound Up | XF86AudioRaiseVolume |
|
||||
| Sound Down | XF86AudioLowerVolume |
|
||||
| Brightness Up | XF86MonBrightnessUp |
|
||||
| Brightness Down | XF86MonBrightnessDown |
|
||||
156
docs/SCRIPTS.md
@@ -1,57 +1,99 @@
|
||||
# Scripts
|
||||
|
||||
Scripts are located in the `home/scripts` folder. Home-manager add those in the path.
|
||||
|
||||
## Nix/NixOs shortcuts
|
||||
|
||||
> [!TIP]
|
||||
> The `hostname` variable in `hosts/yourhost/variables.nix` should be also the name of the `nixosConfiguration` in `flake.nix` file.
|
||||
|
||||
- `nixy` # UI
|
||||
- `nixy rebuild`
|
||||
- `nixy update`
|
||||
- `nixy upgrade`
|
||||
- `nixy gc` # garbage collection
|
||||
- `nixy cb` # clean boot menu
|
||||
|
||||
## Brightness control
|
||||
|
||||
- `brightness-up`
|
||||
- `brightness-down`
|
||||
- `brightness-change <up/down> <increment>`
|
||||
|
||||
## Sound control
|
||||
|
||||
- `sound-up`
|
||||
- `sound-down`
|
||||
- `sound-toggle`
|
||||
- `sound-output`
|
||||
- `sound-change [up/down/mute] <increment>`
|
||||
|
||||
## Caffeine
|
||||
|
||||
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
|
||||
|
||||
- `caffeine` # Toggle caffeine
|
||||
- `caffeine-status` # Return active/inactive
|
||||
|
||||
## Night-Shift
|
||||
|
||||
Blue light filter, using wlsunset
|
||||
|
||||
- `night-shift-on`
|
||||
- `night-shift-off`
|
||||
|
||||
## Nerdfont FZF
|
||||
|
||||
Nerdfont fzf is a quick way to search for nerdfont icons locally.
|
||||
It will copy the selected icon to the clipboard.
|
||||
|
||||
- `nerdfont-fzf`
|
||||
|
||||
## Compress/Extract
|
||||
|
||||
Some shortcuts to compress and extract files.
|
||||
|
||||
- `compress` ...
|
||||
- `extract` ...
|
||||
[//]: # (This file is autogenerated)
|
||||
# Scripts
|
||||
|
||||
Scripts are located in the 'home/scripts' folder. Home-manager add those in the user's path.
|
||||
|
||||
## Brightness
|
||||
|
||||
This module provides a set of scripts to control the brightness of the screen.
|
||||
|
||||
- `brightness-up` increases the brightness by 5%.
|
||||
- `brightness-down` decreases the brightness by 5%.
|
||||
- `brightness-set [value]` sets the brightness to the given value.
|
||||
- `brightness-change [up|down] [value]` increases or decreases the brightness by the given value.
|
||||
|
||||
## Caffeine
|
||||
|
||||
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
|
||||
|
||||
- `caffeine-status` - Check if hypridle is running. (0/1)
|
||||
- `caffeine-status-icon` - Check if hypridle is running. (icon)
|
||||
- `caffeine` - Toggle hypridle.
|
||||
|
||||
## Hyprfocus
|
||||
|
||||
A simple script to toggle focus on few windows in Hyprland.
|
||||
(disable gaps, border, shadow, opacity, etc.)
|
||||
|
||||
- `hyprfocus-on` - Enable hyprfocus.
|
||||
- `hyprfocus-off` - Disable hyprfocus.
|
||||
- `hyprfocus-toggle` - Toggle hyprfocus.
|
||||
|
||||
## Hyprpanel
|
||||
|
||||
Quick scripts to toggle, reload, hide & show hyprpanel.
|
||||
|
||||
- `hyprpanel-toggle` - Toggle hyprpanel (hide/show).
|
||||
- `hyprpanel-show` - Show hyprpanel.
|
||||
- `hyprpanel-hide` - Hide hyprpanel.
|
||||
- `hyprpanel-reload` - Reload hyprpanel.
|
||||
|
||||
## Nerdfont FZF
|
||||
|
||||
This module provides a script to search for Nerd Fonts icons using fzf.
|
||||
|
||||
- `nerdfont-fzf` - Search for Nerd Fonts icons using fzf.
|
||||
|
||||
## Night-Shift
|
||||
|
||||
Night-Shift is a feature that reduces the amount of blue light emitted by your screen, which can help reduce eye strain and improve sleep quality. This module provides a set of scripts to control Night-Shift on your system.
|
||||
It use hyprsunset to control the screen temperature.
|
||||
|
||||
- `night-shift-on` activates Night-Shift.
|
||||
- `night-shift-off` deactivates Night-Shift.
|
||||
- `night-shift` toggles Night-Shift.
|
||||
- `night-shift-status` checks if Night-Shift is active. (0/1)
|
||||
- `night-shift-status-icon` checks if Night-Shift is active. (icon)
|
||||
|
||||
## Nixy
|
||||
|
||||
Nixy is a simple script that I use to manage my NixOS system. It's a simple script that provides a menu to rebuild, upgrade, update, collect garbage, clean boot menu, etc.
|
||||
|
||||
- `nixy` - UI wizard to manage the system.
|
||||
- `nixy rebuild` - Rebuild the system.
|
||||
- `nixy ...` - ... see the script for more commands.
|
||||
|
||||
|
||||
|
||||
## OpenVPN
|
||||
|
||||
OpenVPN allows you to connect/disconnect quickly to a openVPN server
|
||||
|
||||
- `openvpn-up` turn on the vpn
|
||||
- `openvpn-down` turn down the vpn
|
||||
- `openvpn-toggle` toggle the vpn
|
||||
|
||||
## Screenshot
|
||||
|
||||
This module provides a script to take screenshots using `grimblast` and `swappy`.
|
||||
|
||||
- `screenshot [region|window|monitor] [swappy]` - Take a screenshot of the region, window, or monitor. Optionally, use `swappy` to copy the screenshot to the clipboard.
|
||||
|
||||
## Sound
|
||||
|
||||
This module provides a set of scripts to control the volume of the default audio sink using `wpctl`.
|
||||
|
||||
- `sound-up` increases the volume by 5%.
|
||||
- `sound-down` decreases the volume by 5%.
|
||||
- `sound-set [value]` sets the volume to the given value.
|
||||
- `sound-toggle` toggles the mute state of the default audio sink.
|
||||
|
||||
## System
|
||||
|
||||
Usefull quick scripts
|
||||
|
||||
- `menu` - Open wofi with drun mode. (wofi)
|
||||
- `powermenu` - Open power dropdown menu. (wofi)
|
||||
- `quickmenu` - Open a dropdown menu with shortcuts and scripts. (wofi)
|
||||
- `lock` - Lock the screen. (hyprlock)
|
||||
|
||||
|
||||
62
docs/SERVER.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# SERVER
|
||||
|
||||
## Overview
|
||||
|
||||
This document describes the architecture and setup of the self-hosted **NixOS server**, which is securely accessible via **Tailscale**. The server is designed for private, secure, and easily manageable self-hosting of various services.
|
||||
|
||||

|
||||
|
||||
## **Why This Setup?**
|
||||
|
||||
- **Private & Secure**: Services are only accessible through Tailscale, preventing exposure to the public internet.
|
||||
- **Domain-based Access**: A custom domain (`example.org`) maps to the server's Tailscale IP, making service access simple and consistent.
|
||||
- **Automatic SSL Certificates**: Using DNS-01 challenges, valid SSL certificates are generated even though the services are not publicly exposed.
|
||||
- **Modular & Declarative**: Everything is managed through NixOS modules, ensuring reproducibility and easy configuration.
|
||||
|
||||
## **Self-Hosted Services**
|
||||
|
||||
The server hosts several key applications:
|
||||
|
||||
### **Core Infrastructure**
|
||||
|
||||
- **NGINX**: Reverse proxy for routing traffic to services via `example.org`.
|
||||
- **Bitwarden**: A self-hosted password manager for secure credential storage.
|
||||
- **Nextcloud**: A private cloud solution for file synchronization and collaboration.
|
||||
|
||||
### **Networking & Security**
|
||||
|
||||
- **AdGuard Home**: A self-hosted DNS ad blocker for network-wide ad and tracker filtering.
|
||||
|
||||
### **Monitoring & Storage**
|
||||
|
||||
- **Glance**: An awesome dashboard! (See the screenshot above)
|
||||
- **Hoarder**: A self-hostable bookmark-everything app (links, notes and images)
|
||||
|
||||
### **Media & Content Management**
|
||||
|
||||
- **Arr Stack (Radarr, Sonarr, etc.)**: Automated media management tools for handling movies and TV shows. (legaly ofc)
|
||||
|
||||
## **How It Works**
|
||||
|
||||
1. **Domain Configuration**
|
||||
- `example.org` is pointed to the Tailscale IP of the server. (cloudflare A record, not proxied)
|
||||
- This allows for easy access without exposing services to the internet.
|
||||
|
||||
2. **SSL Certificate Generation**
|
||||
- Certificates are obtained using a **DNS-01 challenge**, verifying domain ownership without requiring public access.
|
||||
|
||||
3. **NGINX Reverse Proxy**
|
||||
- Routes incoming requests from `*.example.org` to the correct internal service.
|
||||
- Ensures SSL termination and secure connections.
|
||||
|
||||
4. **Access Control**
|
||||
- Only devices within the Tailscale network can reach the services.
|
||||
- Firewall rules restrict access further based on necessity.
|
||||
|
||||
## What's Next?
|
||||
|
||||
I want to self-host:
|
||||
|
||||
- **A great todolist app**: One that is compatible with markdown & IOS
|
||||
- **Cyberchef**
|
||||
- **Maybe**: An app to manage finances
|
||||
@@ -1,32 +1,21 @@
|
||||
# Themes
|
||||
|
||||
Themes are defined in `hosts/themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
|
||||
Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
|
||||
You can change the selected theme by changing the import statement of your host's variables.nix file.
|
||||
|
||||
> [!TIP]
|
||||
> To apply the theme to Duckduckgo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
|
||||
> To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
|
||||
|
||||
## Create your theme
|
||||
|
||||
Create a copy of one of the existing themes and change the variables.
|
||||
Wallpapers are loaded from the `home/wallpapers` folder.
|
||||
Wallpapers are loaded from the [nixy-wallpapers](https://github.com/anotherhadi/nixy-wallpapers) repo.
|
||||
|
||||
## Gallery
|
||||
|
||||
### Nixy
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
### Catppuccin
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
### Windows
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
42
docs/TODO.md
@@ -1,42 +0,0 @@
|
||||
# Todolist
|
||||
|
||||
feel free to contribute <3 ([CONTRIBUTING.md](CONTRIBUTING.md))
|
||||
|
||||
- [ ] Nixy
|
||||
- [ ] Installation script ([install.sh](./scripts/install.sh) to test on a fresh install)
|
||||
- [ ] Variables-template with defaults
|
||||
- [ ] Themes
|
||||
- [ ] Upload new wallpapers
|
||||
- [ ] MacOS theme
|
||||
- [ ] GithubFetch: Neofetch like, github calendar in the terminal
|
||||
- [ ] Write a hyprland shortcuts markdown file (Parse the hyprland settings conf)
|
||||
- [ ] Tofi (Wofi but terminal based)
|
||||
|
||||
- [ ] Waybar
|
||||
- [ ] Caffeine status
|
||||
- [ ] Night-shift status
|
||||
|
||||
- [ ] Hyprland
|
||||
- [ ] Make hyprcursor work
|
||||
- [ ] Animations based on app name
|
||||
- [ ] Wofi: popin
|
||||
- [ ] Wlogout: fade in
|
||||
- [ ] Fix screenshots
|
||||
|
||||
- [ ] Nixvim
|
||||
- [ ] Telescope: find with file content
|
||||
- [ ] Markdown snippets
|
||||
- [ ] Whichkey: Description for keybindings
|
||||
- [ ] Spelling
|
||||
|
||||
- [ ] Backup system for some folders ($home/dev, $home/pictures, ...)
|
||||
- [ ] Exclude file pattern (nodes modules, ...)
|
||||
- [ ] Auto backup when a specific usb key is plugged
|
||||
|
||||
- [ ] Usb security for laptop & server, variable in variables.nix, disable for guest
|
||||
|
||||
- [ ] Server
|
||||
- [ ] Bitcoin-git
|
||||
- [ ] ServerFetch: Neofetch like, but for server: CPU, RAM, Disk, Network, Uptime, status (check with uptime kuma API)
|
||||
- [ ] Ntfy auth file
|
||||
- [ ] Launch transmission-openvpn on boot (see hosts/server/modules/jackflix/transmission.nix)
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Compress png files in ./docs/src
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
# Main images
|
||||
for file in ./docs/src/*.png; do
|
||||
optipng "$file"
|
||||
done
|
||||
|
||||
# Theme's images
|
||||
for file in ./docs/src/*/*.png; do
|
||||
optipng "$file"
|
||||
done
|
||||
|
||||
for file in ./home/wallpapers/*.png; do
|
||||
optipng "$file"
|
||||
done
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This script is used to copy my own configuration to the `./hosts/guest` one, and changing some settings
|
||||
|
||||
[[ -d "./hosts" ]] || (
|
||||
echo "Folder ./hosts not found"
|
||||
exit 1
|
||||
)
|
||||
|
||||
LAPTOP_CONFIG="./hosts/laptop"
|
||||
GUEST_CONFIG="./hosts/guest"
|
||||
|
||||
cp "$LAPTOP_CONFIG/configuration.nix" "$GUEST_CONFIG/configuration.nix"
|
||||
cp "$LAPTOP_CONFIG/variables.nix" "$GUEST_CONFIG/variables.nix"
|
||||
|
||||
# Remove the NVIDIA driver import
|
||||
config=$(cat "$LAPTOP_CONFIG/configuration.nix")
|
||||
config=$(echo "$config" | sed 's/..\/shared\/nvidia/# ..\/shared\/nvidia/')
|
||||
config=$(echo "$config" | sed 's/..\/shared\/prime/# ..\/shared\/prime/')
|
||||
echo "$config" >"$GUEST_CONFIG/configuration.nix"
|
||||
|
||||
variables=$(cat "$LAPTOP_CONFIG/variables.nix")
|
||||
variables=$(echo "$variables" | sed 's/112569860+anotherhadi@users.noreply.github.com/your_email/')
|
||||
variables=$(echo "$variables" | sed 's/hadi/your_username/')
|
||||
variables=$(echo "$variables" | sed 's/Hadi/your_username/')
|
||||
variables=$(echo "$variables" | sed 's/sops = true/sops = false/')
|
||||
variables=$(echo "$variables" | sed 's/obsidian = true/obsidian = false/')
|
||||
variables=$(echo "$variables" | sed 's/tailscale = true/tailscale = false/')
|
||||
echo "$variables" >"$GUEST_CONFIG/variables.nix"
|
||||
@@ -1,23 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Create the README.md file from the docs/src/README_template.md file
|
||||
|
||||
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
|
||||
|
||||
README_FILE="./README.md"
|
||||
|
||||
header=$(cat "./docs/src/header.md")
|
||||
table_of_content=$(~/go/bin/md-table-of-contents ./docs/src/README_template.md)
|
||||
version=$(git describe --tags --abbrev=0)
|
||||
readme_content=$(cat "./docs/src/README_template.md")
|
||||
|
||||
header=${header//\{date\}/$(date '+%D')}
|
||||
header=${header//\{primarycolor\}/89b4fa}
|
||||
header=${header//\{backgroundcolor\}/181825}
|
||||
header=${header//\{version\}/$version}
|
||||
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
|
||||
|
||||
echo "$header" >"$README_FILE"
|
||||
echo "$readme_content" >>"$README_FILE"
|
||||
sed 's/\r//' "$README_FILE" >"/tmp/readme.md"
|
||||
mv "/tmp/readme.md" "$README_FILE"
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[[ -f "./home/system/hyprland/default.nix" ]] || (echo "File ./home/system/hyprland/default.nix not found" && exit 1)
|
||||
|
||||
config=$( cat "./home/system/hyprland/default.nix")
|
||||
|
||||
# get text between
|
||||
# bind = [
|
||||
# and next ]
|
||||
|
||||
# Example:
|
||||
# "$mod, E, exec, ${pkgs.xfce.thunar}/bin/thunar" # Description
|
||||
# Steps:
|
||||
# We should remove the ""
|
||||
# $mod replace by Super key
|
||||
# $shiftMod replace by "Super Shift"
|
||||
# Concat with key
|
||||
# Remove , exec,
|
||||
# Remove variables and /bin/ if present
|
||||
|
||||
# Create a markdown table with everything
|
||||
@@ -1,78 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# https://github.com/anotherhadi/nixy
|
||||
# Installation script: Should be run on fresh nixos install.
|
||||
|
||||
printf "\n\e[0;92m- \e[0m\e[1;77mNixy's Installation Script\e[0;96m [anotherhadi/nixy]\e[0m"
|
||||
|
||||
# Check if we're on the good directory
|
||||
[[ -f "./docs/scripts/install.sh" ]] || (
|
||||
printf "\n\e[0;91mx \e[0m\e[1;77mNot in the project root directory\e[0m"
|
||||
exit 1
|
||||
)
|
||||
DIR=$PWD
|
||||
|
||||
# Create a new configuration
|
||||
read -rp $'\n\e[0;92m+\e[0m\e[1;77m Username: \e[0;96m' username
|
||||
read -rp $'\n\e[0;92m+\e[0m\e[1;77m Hostname: \e[0;96m' hostname
|
||||
|
||||
HOST_DIR="./hosts/$hostname"
|
||||
mkdir "$HOST_DIR"
|
||||
|
||||
nixos-generate-config --show-hardware-config >"$HOST_DIR/hardware-configuration.nix"
|
||||
|
||||
printf "\n\e[0;92m? \e[0m\e[1;77mInstall Nvidia drivers?\e[0;96m [y/N]\e[0m"
|
||||
read -r yn
|
||||
yn=$(echo "$yn" | tr '[:upper:]' '[:lower:]')
|
||||
if [[ $yn == "y" || $yn == "yes" ]]; then
|
||||
nvidia=true
|
||||
else
|
||||
nvidia=false
|
||||
fi
|
||||
|
||||
printf "\n\e[0;92m? \e[0m\e[1;77mInstall prime?\e[0;96m [y/N]\e[0m"
|
||||
read -r yn
|
||||
yn=$(echo "$yn" | tr '[:upper:]' '[:lower:]')
|
||||
if [[ $yn == "y" || $yn == "yes" ]]; then
|
||||
prime=true
|
||||
else
|
||||
prime=false
|
||||
fi
|
||||
|
||||
cp "$LAPTOP_CONFIG/configuration.nix" "$HOST_DIR/configuration.nix"
|
||||
cp "$LAPTOP_CONFIG/variables.nix" "$HOST_DIR/variables.nix"
|
||||
|
||||
config=$(cat "$LAPTOP_CONFIG/configuration.nix")
|
||||
if [[ $nvidia == false ]]; then
|
||||
config=$(echo "$config" | sed 's/..\/shared\/nvidia/# ..\/shared\/nvidia/')
|
||||
fi
|
||||
if [[ $prime == false ]]; then
|
||||
config=$(echo "$config" | sed 's/..\/shared\/prime/# ..\/shared\/prime/')
|
||||
fi
|
||||
echo "$config" >"$HOST_DIR/configuration.nix"
|
||||
|
||||
variables=$(cat "$LAPTOP_CONFIG/variables.nix")
|
||||
variables=$(echo "$variables" | sed 's/112569860+anotherhadi@users.noreply.github.com/your_email/')
|
||||
variables=$(echo "$variables" | sed "s/hadi/$username/")
|
||||
variables=$(echo "$variables" | sed "s/nixy/$hostname/") # FIXME: Host name can be mixed with themes
|
||||
variables=$(echo "$variables" | sed "s/Hadi/$username/")
|
||||
variables=$(echo "$variables" | sed 's/sops = true/sops = false/')
|
||||
variables=$(echo "$variables" | sed 's/obsidian = true/obsidian = false/')
|
||||
variables=$(echo "$variables" | sed 's/tailscale = true/tailscale = false/')
|
||||
echo "$variables" >"$HOST_DIR/variables.nix"
|
||||
|
||||
# Add it to the git index
|
||||
git add .
|
||||
|
||||
printf "\n\e[0;92m+ \e[0m\e[1;77mHost added!\e[0m"
|
||||
|
||||
# REBUILD
|
||||
|
||||
printf "\n\e[0;92m? \e[0m\e[1;77mDo you want to rebuild?\e[0;96m [y/N]\e[0m"
|
||||
read -r yn
|
||||
yn=$(echo "$yn" | tr '[:upper:]' '[:lower:]')
|
||||
if [[ $yn == "y" || $yn == "yes" ]]; then
|
||||
sudo nixos-rebuild switch --flake "$DIR"#"$hostname"
|
||||
fi
|
||||
|
||||
printf "\n\e[0;92m✓ \e[0m\e[1;77mDone!\e[0m"
|
||||
@@ -1,42 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[ "$1" = "" ] && echo "Usage: $0 <theme_name>" && exit 1
|
||||
theme_name=$1
|
||||
|
||||
# Switch to workspace 1
|
||||
sleep 2
|
||||
|
||||
# Step 1
|
||||
kitty --class peaclock peaclock &
|
||||
sleep 1
|
||||
menu &
|
||||
sleep 1
|
||||
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "1.png" -d
|
||||
sleep 2
|
||||
pkill peaclock
|
||||
menu
|
||||
sleep 2
|
||||
|
||||
# Step 2
|
||||
kitty cmatrix &
|
||||
sleep 1
|
||||
kitty &
|
||||
sleep 1
|
||||
qutebrowser &
|
||||
sleep 3
|
||||
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "2.png" -d
|
||||
sleep 2
|
||||
pkill cmatrix
|
||||
pkill --newest qutebrowser ""
|
||||
pkill --newest kitty
|
||||
sleep 2
|
||||
|
||||
# Step 3
|
||||
kitty cava &
|
||||
sleep 1
|
||||
spotify &
|
||||
sleep 10
|
||||
brightness-down
|
||||
sleep 1
|
||||
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "3.png" -d
|
||||
sleep 2
|
||||
@@ -1,50 +0,0 @@
|
||||
|
||||
**Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place.
|
||||
It's a simple way to manage your system configuration and dotfiles.
|
||||
|
||||
## Table of Content
|
||||
|
||||
{md_table_of_content}
|
||||
|
||||
## Gallery
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Architecture
|
||||
|
||||
- 🏠 `home` are the dotfiles and configuration files for the user
|
||||
- 💻 `hosts` are the system configuration files
|
||||
- 'laptop' is my configuration for my laptop with Nvidia
|
||||
- 'server' is for my homeserver (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
|
||||
- 'guest' is a *template* that you can copy and modify for *your own system*
|
||||
- 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
|
||||
- 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
|
||||
- 🤫 `secrets` are the secrets files encrypted with sops-nix
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
|
||||
```
|
||||
|
||||
- Copy the `hosts/guest` folder, rename it to your system name, and change the variables inside the `variables.nix` file
|
||||
- Add your `hardware-configuration.nix` to your new host's folder
|
||||
- Add your 'nixosConfigurations' inside `flake.nix` (You can edit the "yourhostname" one and change the lines containing '# CHANGEME')
|
||||
|
||||
> [!NOTE]
|
||||
> When you add new files, don't forget to run `git add .` to add them to the git repository
|
||||
|
||||
```sh
|
||||
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- [THEMES.md](docs/THEMES.md): How themes work and how to create your own
|
||||
- [APPS.md](docs/APPS.md): Which apps are installed
|
||||
- [SCRIPTS.md](docs/SCRIPTS.md): Scripts that are available
|
||||
- [TODO.md](docs/TODO.md): What's next (feel free to contribute)
|
||||
- [CONTRIBUTING.md](docs/CONTRIBUTING.md): How to contribute
|
||||
- [LICENSE](LICENSE): MIT Licensey
|
||||
|
Before Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 617 KiB |
@@ -1,33 +0,0 @@
|
||||
[//]: # (Title: Nixy)
|
||||
[//]: # (Description: Nixy is a Hyprland NixOS configuration with home-manager, secrets and custom theming all in one place. It's a simple way to manage your system configuration and dotfiles.)
|
||||
[//]: # (Author: Hadi)
|
||||
[//]: # (Date: {date})
|
||||
[//]: # (Version: {version})
|
||||
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/docs/src/logo.png" width="100px" />
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
# Nixy
|
||||
|
||||
<br>
|
||||
<div align="center">
|
||||
<a href="https://github.com/anotherhadi/nixy">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message={version}&colorA={backgroundcolor}&colorB={primarycolor}&logo=githubactions&logoColor={primarycolor}"/>
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=starship&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/">
|
||||
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=github&logoColor={primarycolor}">
|
||||
</a>
|
||||
<a href="https://nixos.org">
|
||||
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor={backgroundcolor}&logo=NixOS&logoColor={primarycolor}&color={primarycolor}">
|
||||
</a>
|
||||
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA={backgroundcolor}&colorB={primarycolor}&logo=unlicense&logoColor={primarycolor}"/>
|
||||
</a>
|
||||
</div>
|
||||
<br>
|
||||
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1 +0,0 @@
|
||||
8c00e379ddd7f89e4bbf9f381a5721d980c8026f
|
||||
|
Before Width: | Height: | Size: 566 KiB |
|
Before Width: | Height: | Size: 811 KiB |
@@ -1 +0,0 @@
|
||||
62b52ad02a886c19a8cfe1ea17e8aaad50f23632
|
||||
|
Before Width: | Height: | Size: 411 KiB |
|
Before Width: | Height: | Size: 990 KiB |
1341
flake.lock
generated
105
flake.nix
@@ -1,91 +1,72 @@
|
||||
{
|
||||
# https://github.com/anotherhadi/nixy
|
||||
description = ''
|
||||
Nixy is a NixOS configuration with home-manager, secrets and custom theming all in one place.
|
||||
It's a simple way to manage your system configuration and dotfiles.
|
||||
Nixy simplifies and unifies the Hyprland ecosystem with a modular, easily customizable setup.
|
||||
It provides a structured way to manage your system configuration and dotfiles with minimal effort.
|
||||
'';
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||
hyprpanel.url = "github:Jas-SinghFSU/HyprPanel";
|
||||
stylix.url = "github:danth/stylix";
|
||||
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
|
||||
zen-browser.url = "github:0xc000022070/zen-browser-flake";
|
||||
nixcord.url = "github:kaylorben/nixcord";
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
nixarr.url = "github:rasmus-kirk/nixarr";
|
||||
anyrun.url = "github:fufexan/anyrun/launch-prefix";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
url =
|
||||
"github:nix-community/nixvim/d81f37256d0a8691b837b74979d27bf89be8ecdd";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
|
||||
spicetify-nix.url = "github:the-argus/spicetify-nix";
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
spicetify-nix = {
|
||||
url = "github:Gerg-L/spicetify-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||
nurpkgs.url = "github:nix-community/NUR";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
hyprspace = {
|
||||
url = "github:KZDKM/Hyprspace";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
search-nixos-api.url = "github:anotherhadi/search-nixos-api";
|
||||
};
|
||||
|
||||
outputs = inputs@{ nixpkgs, nur, ... }: {
|
||||
outputs = inputs@{ nixpkgs, ... }: {
|
||||
nixosConfigurations = {
|
||||
|
||||
nixy = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
./hosts/laptop/configuration.nix
|
||||
inputs.nixos-hardware.nixosModules.omen-16-n0005ne
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
{
|
||||
nixpkgs.overlays = [ nur.overlay ];
|
||||
_module.args = { inherit inputs; };
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users."hadi" = import ./home/laptop.nix;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
nixy =
|
||||
# CHANGEME: This should match the 'hostname' in your variables.nix file
|
||||
nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.overlays = [ inputs.hyprpanel.overlay ];
|
||||
_module.args = { inherit inputs; };
|
||||
}
|
||||
inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGEME: check https://github.com/NixOS/nixos-hardware
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.stylix.nixosModules.stylix
|
||||
./hosts/laptop/configuration.nix # CHANGEME: change the path to match your host folder
|
||||
];
|
||||
};
|
||||
# Jack is my server
|
||||
jack = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
{ _module.args = { inherit inputs; }; }
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.stylix.nixosModules.stylix
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.nixarr.nixosModules.default
|
||||
inputs.search-nixos-api.nixosModules.search-nixos-api
|
||||
./hosts/server/configuration.nix
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
{
|
||||
nixpkgs.overlays = [ nur.overlay ];
|
||||
_module.args = { inherit inputs; };
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users."hadi" = import ./home/server.nix;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
yourhostname = nixpkgs.lib.nixosSystem { # CHANGEME
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
./hosts/yourhostname/configuration.nix # CHANGEME
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
{
|
||||
nixpkgs.overlays = [ nur.overlay ];
|
||||
_module.args = { inherit inputs; };
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users."yourusername" = import # CHANGEME
|
||||
./home/laptop.nix; # you can also create a new ./home/yourhostname.nix
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
103
home/laptop.nix
@@ -1,103 +0,0 @@
|
||||
{ pkgs, config, ... }: {
|
||||
|
||||
imports = [
|
||||
../hosts/laptop/variables.nix # CHANGEME, replace with your host
|
||||
|
||||
# Programs
|
||||
./programs/btop
|
||||
./programs/cava
|
||||
./programs/kitty
|
||||
./programs/nextcloud
|
||||
./programs/nvim
|
||||
./programs/qutebrowser
|
||||
./programs/spicetify
|
||||
./programs/zathura
|
||||
./programs/shell
|
||||
./programs/git
|
||||
|
||||
# Scripts
|
||||
./scripts # All scripts
|
||||
|
||||
# System (Desktop environment like stuff)
|
||||
./system/dunst
|
||||
./system/gtk
|
||||
./system/hyprland
|
||||
./system/waybar
|
||||
./system/wlogout
|
||||
./system/wofi
|
||||
./system/mime
|
||||
./system/udiskie
|
||||
|
||||
./system/sops/laptop.nix # You should probably remove this line
|
||||
];
|
||||
|
||||
home = {
|
||||
inherit (config.var) username;
|
||||
inherit (config.var) homeDirectory;
|
||||
|
||||
packages = with pkgs; [
|
||||
swappy
|
||||
imv
|
||||
discord
|
||||
obsidian
|
||||
xfce.thunar
|
||||
bitwarden
|
||||
vlc
|
||||
nextcloud-client
|
||||
tailscale
|
||||
|
||||
# Dev
|
||||
go
|
||||
cargo
|
||||
nodejs
|
||||
python3
|
||||
jq
|
||||
git-ignore
|
||||
nurl
|
||||
prefetch-npm-deps
|
||||
figlet
|
||||
|
||||
# Utils
|
||||
fd
|
||||
bc
|
||||
gcc
|
||||
blueman
|
||||
zip
|
||||
unzip
|
||||
xdg_utils
|
||||
wget
|
||||
curl
|
||||
wf-recorder
|
||||
glow
|
||||
nwg-displays
|
||||
wireguard-tools
|
||||
bitwarden-cli
|
||||
optipng
|
||||
pfetch
|
||||
usbutils
|
||||
|
||||
# Just cool
|
||||
peaclock
|
||||
cbonsai
|
||||
pipes
|
||||
cmatrix
|
||||
|
||||
# Backup
|
||||
vscode
|
||||
tor-browser
|
||||
firefox
|
||||
neovide
|
||||
];
|
||||
|
||||
# Import wallpapers into $HOME/wallpapers
|
||||
file."wallpapers" = {
|
||||
recursive = true;
|
||||
source = ./wallpapers;
|
||||
};
|
||||
|
||||
stateVersion = "24.05";
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
}
|
||||
87
home/programs/anyrun/default.nix
Normal file
@@ -0,0 +1,87 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
programs.anyrun = {
|
||||
enable = true;
|
||||
config = {
|
||||
plugins = with inputs.anyrun.packages.${pkgs.system}; [
|
||||
applications
|
||||
shell
|
||||
randr
|
||||
rink
|
||||
symbols
|
||||
translate
|
||||
];
|
||||
|
||||
width.fraction = 0.25;
|
||||
y.fraction = 0.3;
|
||||
hidePluginInfo = true;
|
||||
closeOnClick = true;
|
||||
};
|
||||
|
||||
extraCss = ''
|
||||
* {
|
||||
all: unset;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
#window,
|
||||
#match,
|
||||
#entry,
|
||||
#plugin,
|
||||
#main {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#match.activatable {
|
||||
border-radius: 8px;
|
||||
margin: 4px 0;
|
||||
padding: 4px;
|
||||
/* transition: 100ms ease-out; */
|
||||
}
|
||||
#match.activatable:first-child {
|
||||
margin-top: 12px;
|
||||
}
|
||||
#match.activatable:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#match:hover {
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
#match:selected {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
#entry {
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
border-radius: 8px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
box#main {
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
box-shadow:
|
||||
inset 0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||
0 30px 30px 15px rgba(0, 0, 0, 0.5);
|
||||
border-radius: 20px;
|
||||
padding: 12px;
|
||||
}
|
||||
'';
|
||||
|
||||
extraConfigFiles = {
|
||||
"applications.ron".text = ''
|
||||
Config(
|
||||
desktop_actions: false,
|
||||
max_entries: 5,
|
||||
terminal: Some("foot"),
|
||||
)
|
||||
'';
|
||||
|
||||
"shell.ron".text = ''
|
||||
Config(
|
||||
prefix: ">"
|
||||
)
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
settings = {
|
||||
color_theme = "Default";
|
||||
theme_background = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{ config, ... }: {
|
||||
programs.cava = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general.framerate = 60;
|
||||
smoothing.noise_reduction = 88;
|
||||
color = {
|
||||
background = "'#${config.var.theme.colors.bg}'";
|
||||
foreground = "'#${config.var.theme.colors.accent}'";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
9
home/programs/discord/default.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
# Discord is a popular chat application.
|
||||
{ inputs, ... }: {
|
||||
imports = [ inputs.nixcord.homeManagerModules.nixcord ];
|
||||
|
||||
programs.nixcord = {
|
||||
enable = true;
|
||||
config = { frameless = true; };
|
||||
};
|
||||
}
|
||||
44
home/programs/duckduckgo-colorscheme/default.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
# A duckduckgo colorscheme generated for the Stylix theme used.
|
||||
{ config, ... }:
|
||||
let
|
||||
accent = config.lib.stylix.colors.base0D;
|
||||
background = config.lib.stylix.colors.base00;
|
||||
foreground = config.lib.stylix.colors.base05;
|
||||
background-alt = config.lib.stylix.colors.base01;
|
||||
foreground-alt = config.lib.stylix.colors.base06;
|
||||
in {
|
||||
home.file.".duckduckgo-colorscheme.js".text =
|
||||
# js
|
||||
''
|
||||
// Go to DuckDuckGo settings page, open the console, paste the code and hit enter.
|
||||
// based on https://ddg.codingcodax.dev/
|
||||
// Cookies string for your theme
|
||||
const cookie = '7=${background}; j=${background}; 9=${foreground}; aa=${foreground-alt}; 8=${foreground}; x=${accent}; 21=${background-alt};';
|
||||
|
||||
// Converts cookie string into formatted JSON
|
||||
const cookieToJSON = (cookieRaw) => {
|
||||
const cookieJson = {};
|
||||
const items = cookieRaw.split(/[ ,]+/);
|
||||
|
||||
items.forEach((item) => {
|
||||
const parts = item.split('=');
|
||||
cookieJson[parts[0]] = parts[1];
|
||||
});
|
||||
|
||||
return cookieJson;
|
||||
};
|
||||
|
||||
// Iterates over JSON, and adds to browser cookie store
|
||||
const setCookies = (cookieJson) => {
|
||||
Object.keys(cookieJson).forEach((key) => {
|
||||
document.cookie = `''${key}=''${cookieJson [ key ]}`;
|
||||
});
|
||||
};
|
||||
|
||||
// Call set cookies, passing in formated cookie data
|
||||
setCookies(cookieToJSON(cookie));
|
||||
|
||||
// All done, reload page for changes to take effect :)
|
||||
location.reload();
|
||||
'';
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
{ pkgs, config, ... }: {
|
||||
# Legacy
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [ neofetch ];
|
||||
|
||||
xdg.configFile."neofetch/ascii.txt".text = ''
|
||||
@@ -109,9 +110,6 @@
|
||||
song_format="%artist% - %album% - %title%"
|
||||
song_shorthand="off"
|
||||
mpc_args=()
|
||||
colors=(${toString config.var.theme.colors.accentNumber} 1 ${
|
||||
toString config.var.theme.colors.accentNumber
|
||||
} ${toString config.var.theme.colors.accentNumber} 7)
|
||||
bold="on"
|
||||
underline_enabled="on"
|
||||
underline_char="-"
|
||||
@@ -1,4 +1,6 @@
|
||||
{ pkgs, config, ... }:
|
||||
# Nerdfetch, a simple system info script written in bash
|
||||
# Source: https://github.com/ThatOneCalculator/NerdFetch
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
nerdfetch = pkgs.writeShellScriptBin "nerdfetch" ''
|
||||
ostype="$(uname)"
|
||||
@@ -345,9 +347,9 @@ let
|
||||
|
||||
## USER VARIABLES -- YOU CAN CHANGE THESE
|
||||
|
||||
lc="$reset$bold''$${config.var.theme.colors.accentName}" # labels
|
||||
nc="$reset$bold''$${config.var.theme.colors.accentName}" # labels
|
||||
hn="$reset$bold''$${config.var.theme.colors.accentName}" # labels
|
||||
lc="$reset$bold$magenta" # labels
|
||||
nc="$reset$bold$magenta" # labels
|
||||
hn="$reset$bold$magenta" # labels
|
||||
ic="$reset$white" # info
|
||||
c0="$reset$grey" # first color
|
||||
c1="$reset$white" # second color
|
||||
@@ -1,8 +1,13 @@
|
||||
{ config, ... }: {
|
||||
# Git configuration
|
||||
{ config, ... }:
|
||||
let
|
||||
username = config.var.git.username;
|
||||
email = config.var.git.email;
|
||||
in {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = config.var.git.username;
|
||||
userEmail = config.var.git.email;
|
||||
userName = username;
|
||||
userEmail = email;
|
||||
ignores = [
|
||||
".cache/"
|
||||
".DS_Store"
|
||||
@@ -17,7 +22,9 @@
|
||||
];
|
||||
extraConfig = {
|
||||
init.defaultBranch = "main";
|
||||
pull.rebase = "false";
|
||||
push.autoSetupRemote = true;
|
||||
color.ui = "1";
|
||||
};
|
||||
aliases = {
|
||||
essa = "push --force";
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
{ config, pkgs, ... }: {
|
||||
# Kitty is a fast, featureful, GPU based terminal emulator
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
keybindings = {
|
||||
# Reset existing mappings
|
||||
"ctrl+alt+tab" = "next_tab";
|
||||
"ctrl+alt+shift+tab" = "previous_tab";
|
||||
# Send Ctrl Tab and Ctrl + Shift + Tab for Tmux navigation
|
||||
"ctrl+tab" = "send_text all \\x1b[27;5;9~";
|
||||
"ctrl+shift+tab" = "send_text all \\x1b[27;6;9~";
|
||||
"alt+tab" = "send_text all \\x1b[27;3;9~";
|
||||
};
|
||||
settings = {
|
||||
scrollback_lines = 10000;
|
||||
initial_window_width = 1200;
|
||||
@@ -10,39 +20,14 @@
|
||||
confirm_os_window_close = "0";
|
||||
remember_window_size = "no";
|
||||
disable_ligatures = "never";
|
||||
shell = "${pkgs.tmux}/bin/tmux";
|
||||
url_style = "curly";
|
||||
copy_on_select = "clipboard";
|
||||
cursor_shape = "Underline";
|
||||
cursor_underline_thickness = config.var.theme.border-size;
|
||||
window_padding_width = config.var.theme.gaps-in;
|
||||
|
||||
# Font
|
||||
font_family = config.var.theme.font-mono;
|
||||
font_size = config.var.theme.font-size;
|
||||
|
||||
# Colors
|
||||
background = "#" + config.var.theme.colors.bg;
|
||||
url_color = "#" + config.var.theme.colors.accent;
|
||||
color0 = "#" + config.var.theme.colors.c0;
|
||||
color8 = "#" + config.var.theme.colors.c8;
|
||||
color1 = "#" + config.var.theme.colors.c1;
|
||||
color9 = "#" + config.var.theme.colors.c9;
|
||||
color2 = "#" + config.var.theme.colors.c2;
|
||||
color10 = "#" + config.var.theme.colors.c10;
|
||||
color3 = "#" + config.var.theme.colors.c3;
|
||||
color11 = "#" + config.var.theme.colors.c11;
|
||||
color4 = "#" + config.var.theme.colors.c4;
|
||||
color12 = "#" + config.var.theme.colors.c12;
|
||||
color5 = "#" + config.var.theme.colors.c5;
|
||||
color13 = "#" + config.var.theme.colors.c13;
|
||||
color6 = "#" + config.var.theme.colors.c6;
|
||||
color14 = "#" + config.var.theme.colors.c14;
|
||||
color7 = "#" + config.var.theme.colors.c7;
|
||||
color15 = "#" + config.var.theme.colors.c15;
|
||||
cursor = "#" + config.var.theme.colors.fg;
|
||||
cursor_text_color = "#" + config.var.theme.colors.bg;
|
||||
selection_foreground = "#" + config.var.theme.colors.accentFg;
|
||||
selection_background = "#" + config.var.theme.colors.accent;
|
||||
cursor_underline_thickness = 3;
|
||||
cursor_trail = 3;
|
||||
cursor_trail_decay = "0.1 0.4";
|
||||
window_padding_width = 10;
|
||||
open_url_with = "default";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
23
home/programs/lazygit/default.nix
Normal file
@@ -0,0 +1,23 @@
|
||||
# Lazygit is a simple terminal UI for git commands.
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
in {
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = lib.mkForce {
|
||||
gui = {
|
||||
theme = {
|
||||
activeBorderColor = [ accent "bold" ];
|
||||
inactiveBorderColor = [ muted ];
|
||||
};
|
||||
showListFooter = false;
|
||||
showRandomTip = false;
|
||||
showCommandLog = false;
|
||||
showBottomLine = false;
|
||||
nerdFontsVersion = "3";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
# Nextcloud is a suite of client-server software for creating file hosting services and using them. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server. In contrast to proprietary services, Nextcloud can be hosted on a private server, without additional cost.
|
||||
{
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
startInBackground = true;
|
||||
};
|
||||
}
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
startInBackground = true;
|
||||
};
|
||||
}
|
||||
|
||||
46
home/programs/nvim/autocmds.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
programs.nixvim = {
|
||||
autoGroups = {
|
||||
highlightyank.clear = true;
|
||||
q_close_windows.clear = true;
|
||||
};
|
||||
|
||||
autoCmd = [
|
||||
# highlightyank
|
||||
# https://github.com/AstroNvim/AstroNvim/blob/v4.7.7/lua/astronvim/plugins/_astrocore_autocmds.lua#L206-L211
|
||||
{
|
||||
desc = "Highlight yanked text";
|
||||
event = "TextYankPost";
|
||||
group = "highlightyank";
|
||||
pattern = "*";
|
||||
|
||||
callback.__raw = ''
|
||||
function()
|
||||
vim.highlight.on_yank()
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
# q_close_windows
|
||||
# https://github.com/AstroNvim/AstroNvim/blob/v4.7.7/lua/astronvim/plugins/_astrocore_autocmds.lua#L242-L255
|
||||
{
|
||||
desc = "Make q close help, man, quickfix, dap floats";
|
||||
event = "BufWinEnter";
|
||||
group = "q_close_windows";
|
||||
|
||||
callback.__raw = ''
|
||||
function(event)
|
||||
if vim.tbl_contains({ "help", "nofile", "quickfix" }, vim.bo[event.buf].buftype) then
|
||||
vim.keymap.set("n", "q", "<Cmd>close<CR>", {
|
||||
desc = "Close window",
|
||||
buffer = event.buf,
|
||||
silent = true,
|
||||
nowait = true,
|
||||
})
|
||||
end
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings = { transparent_background = true; };
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,31 +1,22 @@
|
||||
# Nixvim is a NixOS module that installs and configures Neovim
|
||||
{ inputs, ... }: {
|
||||
imports = [
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
./plugins/auto-pairs.nix
|
||||
./plugins/bufferline.nix
|
||||
./plugins/lazygit.nix
|
||||
./plugins/telescope.nix
|
||||
./plugins/nvim-tree.nix
|
||||
./plugins/lightline.nix
|
||||
./plugins/git.nix
|
||||
./plugins/cmp.nix
|
||||
./plugins/none-ls.nix
|
||||
./plugins/wilder.nix
|
||||
./plugins/floaterm.nix
|
||||
./plugins/git.nix
|
||||
./plugins/lsp.nix
|
||||
./plugins/treesitter.nix
|
||||
./plugins/toggleterm.nix
|
||||
./plugins/copilot.nix
|
||||
./plugins/whichkey.nix
|
||||
./plugins/alpha.nix
|
||||
./plugins/keymaps.nix
|
||||
./plugins/comment.nix
|
||||
./plugins/oil.nix
|
||||
./plugins/markdown.nix
|
||||
./plugins/mini.nix
|
||||
./plugins/picker.nix
|
||||
./plugins/snacks.nix
|
||||
./plugins/trouble.nix
|
||||
./plugins/tmux-navigator.nix
|
||||
./plugins/noice.nix
|
||||
./plugins/obsidian.nix
|
||||
./plugins/image.nix
|
||||
./plugins/utils.nix
|
||||
|
||||
./options.nix
|
||||
./colorscheme.nix
|
||||
./keymaps.nix
|
||||
./autocmds.nix
|
||||
];
|
||||
|
||||
programs.nixvim.enable = true;
|
||||
}
|
||||
|
||||
156
home/programs/nvim/keymaps.nix
Normal file
@@ -0,0 +1,156 @@
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins.which-key = {
|
||||
enable = true;
|
||||
settings = {
|
||||
delay = 600;
|
||||
icons = {
|
||||
breadcrumb = "»";
|
||||
group = "+";
|
||||
separator = ""; # ➜
|
||||
mappings = false;
|
||||
};
|
||||
spec = [
|
||||
# General Mappings
|
||||
{
|
||||
__unkeyed-1 = "<leader>u";
|
||||
mode = "n";
|
||||
group = "+ui";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>w";
|
||||
mode = "n";
|
||||
group = "+windows";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>c";
|
||||
mode = "n";
|
||||
group = "+code";
|
||||
}
|
||||
];
|
||||
win = {
|
||||
border = "rounded";
|
||||
wo.winblend = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
# General Mappings
|
||||
{
|
||||
key = "s";
|
||||
action = "<cmd>lua require('flash').jump()<cr>";
|
||||
options.desc = "Flash";
|
||||
}
|
||||
{
|
||||
key = "K";
|
||||
action = "<cmd>lua vim.lsp.buf.hover()<cr>";
|
||||
options.desc = "LSP Hover";
|
||||
}
|
||||
{
|
||||
key = "<C-tab>";
|
||||
action = "<cmd>bnext<cr>";
|
||||
options.desc = "Next Buffer";
|
||||
}
|
||||
|
||||
# Tmux
|
||||
{
|
||||
key = "<C-h>";
|
||||
action = "<cmd>TmuxNavigateLeft<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-j>";
|
||||
action = "<cmd>TmuxNavigateDown<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-k>";
|
||||
action = "<cmd>TmuxNavigateUp<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-l>";
|
||||
action = "<cmd>TmuxNavigateRight<cr>";
|
||||
}
|
||||
|
||||
# Disable Arrow Keys in Normal Mode
|
||||
{
|
||||
key = "<Up>";
|
||||
action = "<Nop>";
|
||||
options.desc = "Disable Up Arrow";
|
||||
}
|
||||
{
|
||||
key = "<Down>";
|
||||
action = "<Nop>";
|
||||
options.desc = "Disable Down Arrow";
|
||||
}
|
||||
{
|
||||
key = "<Left>";
|
||||
action = "<Nop>";
|
||||
options.desc = "Disable Left Arrow";
|
||||
}
|
||||
{
|
||||
key = "<Right>";
|
||||
action = "<Nop>";
|
||||
options.desc = "Disable Right Arrow";
|
||||
}
|
||||
|
||||
# UI
|
||||
{
|
||||
key = "<leader>uw";
|
||||
action = "<cmd>set wrap!<cr>";
|
||||
options.desc = "Toggle word wrapping";
|
||||
}
|
||||
{
|
||||
key = "<leader>ul";
|
||||
action = "<cmd>set linebreak!<cr>";
|
||||
options.desc = "Toggle linebreak";
|
||||
}
|
||||
{
|
||||
key = "<leader>us";
|
||||
action = "<cmd>set spell!<cr>";
|
||||
options.desc = "Toggle spellLazyGitcheck";
|
||||
}
|
||||
{
|
||||
key = "<leader>uc";
|
||||
action = "<cmd>set cursorline!<cr>";
|
||||
options.desc = "Toggle cursorline";
|
||||
}
|
||||
{
|
||||
key = "<leader>un";
|
||||
action = "<cmd>set number!<cr>";
|
||||
options.desc = "Toggle line numbers";
|
||||
}
|
||||
{
|
||||
key = "<leader>ur";
|
||||
action = "<cmd>set relativenumber!<cr>";
|
||||
options.desc = "Toggle relative line numbers";
|
||||
}
|
||||
{
|
||||
key = "<leader>ut";
|
||||
action = "<cmd>set showtabline=2<cr>";
|
||||
options.desc = "Show tabline";
|
||||
}
|
||||
{
|
||||
key = "<leader>uT";
|
||||
action = "<cmd>set showtabline=0<cr>";
|
||||
options.desc = "Hide tabline";
|
||||
}
|
||||
|
||||
# Windows
|
||||
{
|
||||
key = "<leader>ws";
|
||||
action = "<cmd>split<cr>";
|
||||
options.desc = "Split";
|
||||
}
|
||||
{
|
||||
key = "<leader>wv";
|
||||
action = "<cmd>vsplit<cr>";
|
||||
options.desc = "VSplit";
|
||||
}
|
||||
{
|
||||
key = "<leader>wd";
|
||||
action = "<cmd>close<cr>";
|
||||
options.desc = "Close";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,37 +1,141 @@
|
||||
{
|
||||
programs.nixvim = {
|
||||
globals.mapleader = " ";
|
||||
diagnostics = {
|
||||
virtual_text = true;
|
||||
virtual_improved = { current_line = "only"; };
|
||||
};
|
||||
opts = {
|
||||
autoindent = true;
|
||||
|
||||
programs.nixvim.globals.mapleader = " ";
|
||||
programs.nixvim.opts = {
|
||||
updatetime = 50; # Faster completion
|
||||
smartindent = true;
|
||||
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
incsearch = true;
|
||||
hlsearch = true;
|
||||
wildmode = "list:longest";
|
||||
scrolloff = 8;
|
||||
|
||||
autoindent = true;
|
||||
clipboard = "unnamed,unnamedplus";
|
||||
swapfile = false;
|
||||
conceallevel = 3;
|
||||
clipboard = "unnamed,unnamedplus";
|
||||
|
||||
expandtab = true;
|
||||
tabstop = 2;
|
||||
softtabstop = 2;
|
||||
shiftwidth = 2;
|
||||
smartindent = true;
|
||||
breakindent = true;
|
||||
# Don't stop backspace at insert
|
||||
backspace.__raw = ''
|
||||
vim.list_extend(vim.opt.backspace:get(), { "nostop" })
|
||||
'';
|
||||
|
||||
ignorecase = true;
|
||||
incsearch = true;
|
||||
hlsearch = true;
|
||||
smartcase = true;
|
||||
wildmode = "list:longest";
|
||||
completeopt = [ "menuone" "noselect" ];
|
||||
signcolumn = "yes";
|
||||
cursorline = true;
|
||||
scrolloff = 8;
|
||||
mouse = "a";
|
||||
# Keep visual indentation on wrapped lines
|
||||
breakindent = true;
|
||||
|
||||
wrap = false;
|
||||
# Hide command line unless needed
|
||||
cmdheight = 0;
|
||||
|
||||
swapfile = false;
|
||||
undofile = true;
|
||||
conceallevel = 2;
|
||||
# Insert mode completion options
|
||||
completeopt = [ "menu" "menuone" "noselect" ];
|
||||
|
||||
# Raise a dialog asking if you wish to save the current file(s)
|
||||
confirm = true;
|
||||
|
||||
# Copy previous indentation on autoindenting
|
||||
copyindent = true;
|
||||
|
||||
# Highlight current line
|
||||
cursorline = true;
|
||||
|
||||
# Expand <Tab> to spaces
|
||||
expandtab = true;
|
||||
|
||||
# Disable `~` on nonexistent lines
|
||||
fillchars = { eob = " "; };
|
||||
|
||||
# Enable fold with all code unfolded
|
||||
foldcolumn = "1";
|
||||
foldenable = true;
|
||||
foldlevel = 99;
|
||||
foldlevelstart = 99;
|
||||
|
||||
# Ignore case in search patterns
|
||||
ignorecase = true;
|
||||
|
||||
# Show substitution preview in split window
|
||||
inccommand = "split";
|
||||
|
||||
# Infer casing on word completion
|
||||
infercase = true;
|
||||
|
||||
# Global statusline
|
||||
laststatus = 3;
|
||||
|
||||
# Wrap lines at 'breakat'
|
||||
linebreak = true;
|
||||
|
||||
# Enable mouse support
|
||||
mouse = "a";
|
||||
|
||||
# Show line numbers
|
||||
number = true;
|
||||
|
||||
# Preserve indentation as much as possible
|
||||
preserveindent = true;
|
||||
|
||||
# Height of the popup menu
|
||||
pumheight = 10;
|
||||
|
||||
# Display line numbers relative to current line
|
||||
relativenumber = true;
|
||||
|
||||
# Minimal number of lines to keep around the cursor
|
||||
# This has the effect to move the view along with current line
|
||||
#scrolloff = 999;
|
||||
|
||||
# Number of spaces to use for indentation
|
||||
shiftwidth = 2;
|
||||
|
||||
# Disable showing modes in command line
|
||||
showmode = false;
|
||||
|
||||
# Always show tabline
|
||||
showtabline = 2;
|
||||
|
||||
# Show signs column
|
||||
signcolumn = "yes";
|
||||
|
||||
# Override ignorecase if search pattern contains uppercase characters
|
||||
smartcase = true;
|
||||
|
||||
# Number of spaces input on <Tab>
|
||||
softtabstop = 2;
|
||||
|
||||
# Open horizontal split below (:split)
|
||||
splitbelow = true;
|
||||
|
||||
# Open vertical split to the right (:vsplit)
|
||||
splitright = true;
|
||||
|
||||
# Number of spaces to represent a <Tab>
|
||||
tabstop = 2;
|
||||
|
||||
# Enables 24-bit RGB color
|
||||
termguicolors = true;
|
||||
|
||||
# Shorter timeout duration
|
||||
timeoutlen = 500;
|
||||
|
||||
# Set window title to the filename
|
||||
title = true;
|
||||
|
||||
# Save undo history to undo file (in $XDG_STATE_HOME/nvim/undo)
|
||||
undofile = true;
|
||||
|
||||
# Enable virtual edit in visual block mode
|
||||
# This has the effect of selecting empty cells beyond lines boundaries
|
||||
virtualedit = "block";
|
||||
|
||||
# Disable line wrapping
|
||||
wrap = false;
|
||||
|
||||
# Disable making a backup before overwriting a file
|
||||
writebackup = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
{ config, ... }: {
|
||||
|
||||
programs.nixvim.highlight = {
|
||||
AlphaHeaderColor.fg = "#${config.var.theme.colors.accent}";
|
||||
AlphaTextColor.fg = "#${config.var.theme.colors.fg}";
|
||||
AlphaShortcutColor.fg = "#${config.var.theme.colors.fgalt}";
|
||||
};
|
||||
|
||||
programs.nixvim.plugins.alpha = {
|
||||
enable = true;
|
||||
layout = [
|
||||
{
|
||||
type = "padding";
|
||||
val = 4;
|
||||
}
|
||||
{
|
||||
type = "text";
|
||||
opts = {
|
||||
position = "center";
|
||||
hl = "AlphaHeaderColor";
|
||||
};
|
||||
val = [
|
||||
" "
|
||||
" ████ ██████ █████ ██ "
|
||||
" ███████████ █████ "
|
||||
" █████████ ███████████████████ ███ ███████████ "
|
||||
" █████████ ███ █████████████ █████ ██████████████ "
|
||||
" █████████ ██████████ █████████ █████ █████ ████ █████ "
|
||||
" ███████████ ███ ███ █████████ █████ █████ ████ █████ "
|
||||
" ██████ █████████████████████ ████ █████ █████ ████ ██████ "
|
||||
" "
|
||||
];
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 4;
|
||||
}
|
||||
{
|
||||
type = "group";
|
||||
|
||||
val = [
|
||||
{
|
||||
type = "button";
|
||||
val = " Find file";
|
||||
on_press.__raw = "function() vim.cmd[[Telescope find_files]] end";
|
||||
opts = {
|
||||
shortcut = "nf";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "AlphaShortcutColor";
|
||||
hl = "AlphaTextColor";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " New file";
|
||||
on_press.__raw = "function() vim.cmd[[ene]] end";
|
||||
opts = {
|
||||
shortcut = "nn";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "AlphaShortcutColor";
|
||||
hl = "AlphaTextColor";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " NixOs Config";
|
||||
on_press.__raw =
|
||||
"function() vim.cmd[[e ${config.var.configDirectory}]] end";
|
||||
opts = {
|
||||
shortcut = "nc";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "AlphaShortcutColor";
|
||||
hl = "AlphaTextColor";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " Recently used";
|
||||
on_press.__raw = "function() vim.cmd[[Telescope oldfiles]] end";
|
||||
opts = {
|
||||
shortcut = "no";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "AlphaShortcutColor";
|
||||
hl = "AlphaTextColor";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " Find text";
|
||||
on_press.__raw = "function() vim.cmd[[Telescope live_grep]] end";
|
||||
opts = {
|
||||
shortcut = "nt";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "AlphaShortcutColor";
|
||||
hl = "AlphaTextColor";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " Quit Neovim";
|
||||
on_press.__raw = "function() vim.cmd[[qa]] end";
|
||||
opts = {
|
||||
shortcut = "nq";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "AlphaShortcutColor";
|
||||
hl = "AlphaTextColor";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.nvim-autopairs = { enable = true; }; }
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.bufferline = { enable = true; }; }
|
||||
@@ -15,8 +15,13 @@
|
||||
sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "luasnip"; }
|
||||
{ name = "buffer"; }
|
||||
{
|
||||
name = "buffer";
|
||||
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
|
||||
}
|
||||
{ name = "nvim_lua"; }
|
||||
{ name = "mkdnflow"; }
|
||||
{ name = "render-markdown"; }
|
||||
{ name = "path"; }
|
||||
];
|
||||
|
||||
@@ -80,7 +85,7 @@
|
||||
completion = {
|
||||
winhighlight =
|
||||
"FloatBorder:CmpBorder,Normal:CmpPmenu,Search:PmenuSel";
|
||||
scrollbar = true;
|
||||
scrollbar = false;
|
||||
sidePadding = 0;
|
||||
border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ];
|
||||
};
|
||||
@@ -108,6 +113,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.comment = { enable = true; }; }
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.copilot-vim = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
13
home/programs/nvim/plugins/floaterm.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{ config, ... }: {
|
||||
programs.nixvim = {
|
||||
plugins.floaterm.enable = true;
|
||||
highlightOverride = {
|
||||
FloatermBorder.fg = "#${config.lib.stylix.colors.base01}";
|
||||
};
|
||||
keymaps = [{
|
||||
key = "<leader>cn";
|
||||
action = "<cmd>FloatermNew --title=nixy nixy || sleep 10<cr>";
|
||||
options.desc = "Nixy";
|
||||
}];
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,13 @@
|
||||
{
|
||||
programs.nixvim.plugins.gitsigns = {
|
||||
enable = true;
|
||||
settings = { current_line_blame = false; };
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
gitsigns.enable = true;
|
||||
snacks.settings = { lazygit.enable = true; };
|
||||
};
|
||||
keymaps = [{
|
||||
key = "<leader>gl";
|
||||
action = "<cmd>lua Snacks.lazygit()<cr>";
|
||||
options.desc = "LazyGit";
|
||||
}];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.image = { enable = true; }; }
|
||||
@@ -1,71 +0,0 @@
|
||||
{
|
||||
programs.nixvim.keymaps = [
|
||||
{
|
||||
key = "<leader>e";
|
||||
action = "<CMD>Neotree toggle<CR>";
|
||||
}
|
||||
{
|
||||
key = "<space>fm";
|
||||
action = "<CMD>lua vim.lsp.buf.format()<CR>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<leader>ot";
|
||||
action = "<cmd>lua require('obsidian').util.toggle_checkbox()<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<leader>oo";
|
||||
action = "<cmd>ObsidianQuickSwitch<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<leader>on";
|
||||
action = "<cmd>ObsidianNew<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<leader>of";
|
||||
action = "<cmd>ObsidianSearch<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<leader>oi";
|
||||
action = "<cmd>ObsidianPasteImg<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<leader>E";
|
||||
action = "<cmd>Oil<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<leader>t";
|
||||
action = "<cmd>TroubleToggle<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
key = "<C-h>";
|
||||
action = "<cmd>TmuxNavigateLeft<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-j>";
|
||||
action = "<cmd>TmuxNavigateDown<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-k>";
|
||||
action = "<cmd>TmuxNavigateUp<cr>";
|
||||
}
|
||||
{
|
||||
key = "<C-l>";
|
||||
action = "<cmd>TmuxNavigateRight<cr>";
|
||||
}
|
||||
|
||||
# Terminal Mappings
|
||||
{
|
||||
mode = "t";
|
||||
key = "<esc>";
|
||||
action = "<C-\\><C-n>";
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.lazygit = { enable = true; }; }
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.lualine = { enable = true; }; }
|
||||
@@ -3,21 +3,36 @@
|
||||
lsp-format.enable = true;
|
||||
lsp = {
|
||||
enable = true;
|
||||
inlayHints = true;
|
||||
servers = {
|
||||
bashls.enable = true;
|
||||
clangd.enable = true;
|
||||
gopls.enable = true;
|
||||
ts_ls.enable = true;
|
||||
nixd.enable = true;
|
||||
tailwindcss.enable = true;
|
||||
html.enable = true;
|
||||
svelte.enable = true;
|
||||
};
|
||||
keymaps.lspBuf = {
|
||||
"gd" = "definition";
|
||||
"gD" = "references";
|
||||
"gt" = "type_definition";
|
||||
"gi" = "implementation";
|
||||
"K" = "hover";
|
||||
};
|
||||
none-ls = {
|
||||
enable = true;
|
||||
sources = {
|
||||
completion = { luasnip.enable = true; };
|
||||
diagnostics = {
|
||||
golangci_lint.enable = true;
|
||||
statix.enable = true;
|
||||
};
|
||||
formatting = {
|
||||
gofmt.enable = true;
|
||||
goimports.enable = true;
|
||||
nixfmt.enable = true;
|
||||
markdownlint.enable = true;
|
||||
tidy.enable = true;
|
||||
shellharden.enable = true;
|
||||
shfmt.enable = true;
|
||||
golines.enable = true;
|
||||
gofumpt.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
34
home/programs/nvim/plugins/markdown.nix
Normal file
@@ -0,0 +1,34 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
in {
|
||||
programs.nixvim = {
|
||||
extraFiles."after/ftplugin/markdown.lua".text = ''
|
||||
vim.bo.tabstop = 2
|
||||
vim.bo.shiftwidth = 2
|
||||
vim.bo.expandtab = true
|
||||
vim.wo.cursorline = false
|
||||
'';
|
||||
|
||||
# Plugins
|
||||
plugins = {
|
||||
# Render UI elements
|
||||
render-markdown = {
|
||||
enable = true;
|
||||
settings = { completions.lsp.enabled = true; };
|
||||
};
|
||||
|
||||
mkdnflow = {
|
||||
enable = true;
|
||||
mappings = {
|
||||
MkdnTableNextCell = {
|
||||
key = "<S-Tab>";
|
||||
modes = "i";
|
||||
};
|
||||
MkdnTablePrevCell = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
22
home/programs/nvim/plugins/mini.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ config, ... }: {
|
||||
programs.nixvim = {
|
||||
plugins.mini = {
|
||||
enable = true;
|
||||
mockDevIcons = true;
|
||||
modules = {
|
||||
icons = { };
|
||||
# TODO: Learn how to use this
|
||||
bracketed = { };
|
||||
git = { };
|
||||
diff = { };
|
||||
starter = { };
|
||||
pairs = { };
|
||||
notify = { lsp_progress.enable = false; };
|
||||
indentscope = { };
|
||||
cursorword = { };
|
||||
comment = { };
|
||||
starter = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.noice = { enable = true; }; }
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.none-ls = {
|
||||
enable = true;
|
||||
sources = {
|
||||
diagnostics = {
|
||||
golangci_lint.enable = true;
|
||||
statix.enable = true;
|
||||
};
|
||||
formatting = {
|
||||
gofmt.enable = true;
|
||||
goimports.enable = true;
|
||||
nixfmt.enable = true;
|
||||
markdownlint.enable = true;
|
||||
tidy.enable = true;
|
||||
shellharden.enable = true;
|
||||
shfmt.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.neo-tree = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{ config, ... }: {
|
||||
programs.nixvim.plugins.obsidian = {
|
||||
enable = config.var.obsidian;
|
||||
settings = {
|
||||
dir = "~/nextcloud/Notes";
|
||||
disable_frontmatter = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.oil = {
|
||||
enable = true;
|
||||
settings = { default_file_explorer = false; };
|
||||
};
|
||||
}
|
||||
222
home/programs/nvim/plugins/picker.nix
Normal file
@@ -0,0 +1,222 @@
|
||||
{ config, ... }: {
|
||||
programs.nixvim = {
|
||||
highlightOverride = {
|
||||
SnacksPicker = {
|
||||
bg = "none";
|
||||
nocombine = true;
|
||||
};
|
||||
SnacksPickerBorder = {
|
||||
bg = "none";
|
||||
fg = "#${config.lib.stylix.colors.base0D}";
|
||||
};
|
||||
SnacksPickerTree = { bg = "#${config.lib.stylix.colors.base00}"; };
|
||||
FloatBorder = {
|
||||
bg = "#${config.lib.stylix.colors.base00}";
|
||||
fg = "#${config.lib.stylix.colors.base0D}";
|
||||
};
|
||||
NormalFloat = { bg = "#${config.lib.stylix.colors.base00}"; };
|
||||
};
|
||||
plugins = {
|
||||
snacks.settings = {
|
||||
picker.enable = true;
|
||||
explorer.enable = true;
|
||||
};
|
||||
oil.enable = true;
|
||||
which-key.settings.spec = [
|
||||
{
|
||||
__unkeyed-1 = "<leader>f";
|
||||
mode = "n";
|
||||
group = "+find";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>g";
|
||||
mode = "n";
|
||||
group = "+git";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>s";
|
||||
mode = "n";
|
||||
group = "+search";
|
||||
}
|
||||
];
|
||||
};
|
||||
keymaps = [
|
||||
# Top Pickers & Explorer
|
||||
{
|
||||
key = "<leader> ";
|
||||
action = "<cmd>lua Snacks.picker.smart()<cr>";
|
||||
options.desc = "Smart Find Files";
|
||||
}
|
||||
{
|
||||
key = "<leader>,";
|
||||
action = "<cmd>lua Snacks.picker.buffers()<cr>";
|
||||
options.desc = "Buffers";
|
||||
}
|
||||
{
|
||||
key = "<leader>/";
|
||||
action = "<cmd>lua Snacks.picker.grep()<cr>";
|
||||
options.desc = "Grep";
|
||||
}
|
||||
{
|
||||
key = "<leader>:";
|
||||
action = "<cmd>lua Snacks.picker.command_history()<cr>";
|
||||
options.desc = "Command History";
|
||||
}
|
||||
{
|
||||
key = "<leader>e";
|
||||
action = "<cmd>lua Snacks.explorer()<cr>";
|
||||
options.desc = "File Explorer";
|
||||
}
|
||||
{
|
||||
key = "-";
|
||||
action = "<cmd>Oil<cr>";
|
||||
options.desc = "Oil";
|
||||
}
|
||||
|
||||
# Find
|
||||
{
|
||||
key = "<leader>fb";
|
||||
action = "<cmd>lua Snacks.picker.buffers()<cr>";
|
||||
options.desc = "Buffers";
|
||||
}
|
||||
{
|
||||
key = "<leader>fc";
|
||||
action = ''
|
||||
<cmd>lua Snacks.picker.files({ cwd = vim.fn.stdpath("config") })<cr>'';
|
||||
options.desc = "Find Config File";
|
||||
}
|
||||
{
|
||||
key = "<leader>ff";
|
||||
action = "<cmd>lua Snacks.picker.files()<cr>";
|
||||
options.desc = "Find Files";
|
||||
}
|
||||
{
|
||||
key = "<leader>fg";
|
||||
action = "<cmd>lua Snacks.picker.git_files()<cr>";
|
||||
options.desc = "Find Git Files";
|
||||
}
|
||||
{
|
||||
key = "<leader>fp";
|
||||
action = "<cmd>lua Snacks.picker.projects()<cr>";
|
||||
options.desc = "Projects";
|
||||
}
|
||||
{
|
||||
key = "<leader>fr";
|
||||
action = "<cmd>lua Snacks.picker.recent()<cr>";
|
||||
options.desc = "Recent";
|
||||
}
|
||||
{
|
||||
key = "<leader>fn";
|
||||
action = "<cmd>lua Snacks.picker.notifications()<cr>";
|
||||
options.desc = "Notification History";
|
||||
}
|
||||
{
|
||||
key = "<leader>fe";
|
||||
action = "<cmd>lua Snacks.picker.icons()<cr>";
|
||||
options.desc = "Emoji";
|
||||
}
|
||||
|
||||
# Git
|
||||
{
|
||||
key = "<leader>gb";
|
||||
action = "<cmd>lua Snacks.picker.git_branches()<cr>";
|
||||
options.desc = "Git Branches";
|
||||
}
|
||||
{
|
||||
key = "<leader>gL";
|
||||
action = "<cmd>lua Snacks.picker.git_log()<cr>";
|
||||
options.desc = "Git Log Line";
|
||||
}
|
||||
{
|
||||
key = "<leader>gs";
|
||||
action = "<cmd>lua Snacks.picker.git_status()<cr>";
|
||||
options.desc = "Git Status";
|
||||
}
|
||||
{
|
||||
key = "<leader>gS";
|
||||
action = "<cmd>lua Snacks.picker.git_stash()<cr>";
|
||||
options.desc = "Git Stash";
|
||||
}
|
||||
{
|
||||
key = "<leader>gd";
|
||||
action = "<cmd>lua Snacks.picker.git_diff()<cr>";
|
||||
options.desc = "Git Diff (Hunks)";
|
||||
}
|
||||
{
|
||||
key = "<leader>gf";
|
||||
action = "<cmd>lua Snacks.picker.git_log_file()<cr>";
|
||||
options.desc = "Git Log File";
|
||||
}
|
||||
|
||||
# Grep
|
||||
{
|
||||
key = "<leader>sb";
|
||||
action = "<cmd>lua Snacks.picker.lines()<cr>";
|
||||
options.desc = "Buffer Lines";
|
||||
}
|
||||
{
|
||||
key = "<leader>st";
|
||||
action = "<cmd>lua Snacks.picker.todo_comments()<cr>";
|
||||
options.desc = "Todos";
|
||||
}
|
||||
{
|
||||
key = "<leader>sB";
|
||||
action = "<cmd>lua Snacks.picker.grep_buffers()<cr>";
|
||||
options.desc = "Grep Open Buffers";
|
||||
}
|
||||
{
|
||||
key = "<leader>sg";
|
||||
action = "<cmd>lua Snacks.picker.grep()<cr>";
|
||||
options.desc = "Grep";
|
||||
}
|
||||
{
|
||||
key = "<leader>sw";
|
||||
action = "<cmd>lua Snacks.picker.grep_word()<cr>";
|
||||
options.desc = "Visual selection or word";
|
||||
}
|
||||
{
|
||||
key = "<leader>sr";
|
||||
action = "<cmd>nohlsearch<cr>";
|
||||
options.desc = "Reset search";
|
||||
}
|
||||
|
||||
# LSP
|
||||
{
|
||||
key = "gd";
|
||||
action = "<cmd>lua Snacks.picker.lsp_definitions()<cr>";
|
||||
options.desc = "Goto Definition";
|
||||
}
|
||||
{
|
||||
key = "gD";
|
||||
action = "<cmd>lua Snacks.picker.lsp_declarations()<cr>";
|
||||
options.desc = "Goto Declaration";
|
||||
}
|
||||
{
|
||||
key = "gr";
|
||||
action = "<cmd>lua Snacks.picker.lsp_references()<cr>";
|
||||
options.desc = "References";
|
||||
options.nowait = true;
|
||||
}
|
||||
{
|
||||
key = "gI";
|
||||
action = "<cmd>lua Snacks.picker.lsp_implementations()<cr>";
|
||||
options.desc = "Goto Implementation";
|
||||
}
|
||||
{
|
||||
key = "gy";
|
||||
action = "<cmd>lua Snacks.picker.lsp_type_definitions()<cr>";
|
||||
options.desc = "Goto Type Definition";
|
||||
}
|
||||
{
|
||||
key = "<leader>ss";
|
||||
action = "<cmd>lua Snacks.picker.lsp_symbols()<cr>";
|
||||
options.desc = "LSP Symbols";
|
||||
}
|
||||
{
|
||||
key = "<leader>sS";
|
||||
action = "<cmd>lua Snacks.picker.lsp_workspace_symbols()<cr>";
|
||||
options.desc = "LSP Workspace Symbols";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
40
home/programs/nvim/plugins/snacks.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins.snacks = {
|
||||
enable = true;
|
||||
settings = {
|
||||
image = {
|
||||
enable = true;
|
||||
doc = { inline = false; };
|
||||
};
|
||||
quickfile.enable = true;
|
||||
statuscolumn.enable = true;
|
||||
zen.enable = true;
|
||||
bufdelete.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>uz";
|
||||
action = "<cmd>lua Snacks.zen()<cr>";
|
||||
options.desc = "Zen";
|
||||
}
|
||||
{
|
||||
key = "<leader>ud";
|
||||
action = "<cmd>lua Snacks.dim.enable()<cr>";
|
||||
options.desc = "Dim";
|
||||
}
|
||||
{
|
||||
key = "<leader>uD";
|
||||
action = "<cmd>lua Snacks.dim.disable()<cr>";
|
||||
options.desc = "Undim";
|
||||
}
|
||||
{
|
||||
key = "<leader>wc";
|
||||
action = "<cmd>lua Snacks.bufdelete.all()<cr>";
|
||||
options.desc = "Close all buffers";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.telescope = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"<leader>fg" = "live_grep";
|
||||
#"<C-p>" = {
|
||||
# action = "git_files";
|
||||
# desc = "Telescope Git Files";
|
||||
#};
|
||||
};
|
||||
extensions.fzf-native = { enable = true; };
|
||||
};
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{ programs.nixvim.plugins.tmux-navigator = { enable = true; }; }
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.toggleterm = {
|
||||
enable = true;
|
||||
settings = {
|
||||
open_mapping = "[[<c-t>]]";
|
||||
direction = "horizontal";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
treesitter = {
|
||||
enable = true;
|
||||
nixGrammars = true;
|
||||
indent = true;
|
||||
};
|
||||
treesitter-context.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1 +1,46 @@
|
||||
{ programs.nixvim.plugins.trouble = { enable = true; }; }
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [ ctags ];
|
||||
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
trouble.enable = true;
|
||||
which-key.settings.spec = [{
|
||||
__unkeyed-1 = "<leader>t";
|
||||
mode = "n";
|
||||
group = "+trouble";
|
||||
}];
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>tx";
|
||||
action = "<cmd>Trouble diagnostics toggle<cr>";
|
||||
options.desc = "Diagnostics (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tX";
|
||||
action = "<cmd>Trouble diagnostics toggle filter.buf=0<cr>";
|
||||
options.desc = "Buffer Diagnostics (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>ts";
|
||||
action = "<cmd>Trouble symbols toggle focus=false<cr>";
|
||||
options.desc = "Symbols (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tl";
|
||||
action = "<cmd>Trouble lsp toggle focus=false win.position=right<cr>";
|
||||
options.desc = "LSP Definitions / references / ... (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tL";
|
||||
action = "<cmd>Trouble loclist toggle<cr>";
|
||||
options.desc = "Location List (Trouble)";
|
||||
}
|
||||
{
|
||||
key = "<leader>tQ";
|
||||
action = "<cmd>Trouble qflist toggle<cr>";
|
||||
options.desc = "Quickfix List (Trouble)";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
37
home/programs/nvim/plugins/utils.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{ config, lib, pkgs, ... }: {
|
||||
programs.nixvim = {
|
||||
nixpkgs.config.allowUnfree = true; # For copilot
|
||||
highlightOverride = {
|
||||
WhichKeySeparator.bg = "#${config.lib.stylix.colors.base00}";
|
||||
};
|
||||
plugins = {
|
||||
bufferline.enable = true;
|
||||
copilot-vim = {
|
||||
enable = true;
|
||||
# FIXME: Temp issue solving
|
||||
settings.node_command = lib.getExe pkgs.nodejs_20;
|
||||
};
|
||||
flash.enable = true;
|
||||
tmux-navigator.enable = true;
|
||||
todo-comments.enable = true;
|
||||
lualine = { enable = true; };
|
||||
aerial.enable = true;
|
||||
treesitter = {
|
||||
enable = true;
|
||||
nixGrammars = true;
|
||||
settings = {
|
||||
ensure_installed = "all";
|
||||
indent.enable = true;
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
key = "<leader>ct";
|
||||
action = "<cmd>AerialToggle<cr>";
|
||||
options.desc = "Aerial (tags)";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.which-key.enable=true;
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
programs.nixvim.plugins.wilder = {
|
||||
enable = true;
|
||||
modes = [ ":" "/" "?" ];
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,12 @@
|
||||
# Qutebrowser is a keyboard-focused browser with a minimal GUI.
|
||||
# My homepage is generated using https://github.com/anotherhadi/homepage
|
||||
{ pkgs, config, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
background = "#${config.lib.stylix.colors.base00}";
|
||||
foreground = "#${config.lib.stylix.colors.base05}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
|
||||
settings = ''
|
||||
{
|
||||
"config": {
|
||||
@@ -7,10 +14,10 @@ let
|
||||
"openLinksInNewTab": false,
|
||||
"locale": "fr-FR",
|
||||
"colors": {
|
||||
"primary": "#${config.var.theme.colors.accent}",
|
||||
"background": "#${config.var.theme.colors.bg}",
|
||||
"foreground": "#${config.var.theme.colors.fg}",
|
||||
"muted": "#${config.var.theme.colors.c8}"
|
||||
"primary": "${accent}",
|
||||
"background": "${background}",
|
||||
"foreground": "${foreground}",
|
||||
"muted": "#${muted}"
|
||||
},
|
||||
"folders": [
|
||||
{
|
||||
@@ -23,8 +30,8 @@ let
|
||||
{"title": "Chat GPT", "url": "https://chat.openai.com/", "icon": ""},
|
||||
{"title": "Nixvim", "url": "https://nix-community.github.io/nixvim/", "icon": ""},
|
||||
{"title": "Hyprland Wiki", "url": "https://wiki.hyprland.org/", "icon": ""},
|
||||
{"title": "Nerdfont", "url": "https://www.nerdfonts.com/cheat-sheet", "icon": ""},
|
||||
{"title": "Youtube", "url": "https://youtube.com", "icon": ""},
|
||||
{"title": "Figma", "url": "https://figma.com", "icon": ""},
|
||||
{"title": "Server", "url": "https://home.anotherhadi.com", "icon": ""}
|
||||
]
|
||||
},
|
||||
@@ -48,8 +55,8 @@ let
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "anotherhadi";
|
||||
repo = "homepage";
|
||||
rev = "40286c5e03bcfb9993cce354b4f12c00a1b4966d";
|
||||
hash = "sha256-zlJ/bzFWE64HpUCxiRT5E9wrjVVwSTSgIOrifWKxphU=";
|
||||
rev = "b77d35ed3596eb451bd2ec78063d7cc6e73c773d";
|
||||
hash = "sha256-j/40922kfAh6zqJ4IRYpr66YXNNYsxuXwZ0aiJFJea0=";
|
||||
};
|
||||
|
||||
# npmDepsHash = lib.fakeHash;
|
||||
@@ -73,7 +80,7 @@ let
|
||||
|
||||
in {
|
||||
|
||||
imports = [ ./duckduckgo-colorscheme.nix ];
|
||||
imports = [ ../duckduckgo-colorscheme ];
|
||||
|
||||
programs.qutebrowser = {
|
||||
enable = true;
|
||||
@@ -117,95 +124,11 @@ in {
|
||||
};
|
||||
|
||||
colors = {
|
||||
tabs = {
|
||||
odd.bg = "#${config.var.theme.colors.bg}";
|
||||
odd.fg = "#${config.var.theme.colors.fg}";
|
||||
even.bg = "#${config.var.theme.colors.bg}";
|
||||
even.fg = "#${config.var.theme.colors.fg}";
|
||||
selected = {
|
||||
odd = {
|
||||
bg = "#${config.var.theme.colors.accent}";
|
||||
fg = "#${config.var.theme.colors.accentFg}";
|
||||
};
|
||||
even = {
|
||||
bg = "#${config.var.theme.colors.accent}";
|
||||
fg = "#${config.var.theme.colors.accentFg}";
|
||||
};
|
||||
};
|
||||
indicator = {
|
||||
error = "#${config.var.theme.colors.c1}";
|
||||
start = "#${config.var.theme.colors.bgalt}";
|
||||
stop = "#${config.var.theme.colors.bgalt}";
|
||||
};
|
||||
};
|
||||
|
||||
hints = {
|
||||
bg = "#${config.var.theme.colors.bgalt}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
match.fg = "#${config.var.theme.colors.bg}";
|
||||
};
|
||||
|
||||
completion = {
|
||||
category = {
|
||||
bg = "#${config.var.theme.colors.bg}";
|
||||
fg = "#${config.var.theme.colors.fg}";
|
||||
border = {
|
||||
top = "#${config.var.theme.colors.bg}";
|
||||
bottom = "#${config.var.theme.colors.bg}";
|
||||
};
|
||||
};
|
||||
|
||||
odd.bg = "#${config.var.theme.colors.bg}";
|
||||
even.bg = "#${config.var.theme.colors.bg}";
|
||||
|
||||
fg = [ "#FFFFFF" "#FFFFFF" "#FFFFFF" ];
|
||||
|
||||
match.fg = "#${config.var.theme.colors.accent}";
|
||||
|
||||
item.selected = {
|
||||
bg = "#${config.var.theme.colors.accent}";
|
||||
border.top = "#${config.var.theme.colors.accent}";
|
||||
border.bottom = "#${config.var.theme.colors.accent}";
|
||||
fg = "#${config.var.theme.colors.accentFg}";
|
||||
match.fg = "#${config.var.theme.colors.accentFg}";
|
||||
};
|
||||
};
|
||||
|
||||
statusbar = {
|
||||
normal.bg = "#${config.var.theme.colors.bg}";
|
||||
normal.fg = "#${config.var.theme.colors.fg}";
|
||||
private.bg = "#${config.var.theme.colors.bg}";
|
||||
private.fg = "#${config.var.theme.colors.fg}";
|
||||
insert.bg = "#${config.var.theme.colors.accent}";
|
||||
insert.fg = "#${config.var.theme.colors.accentFg}";
|
||||
command = {
|
||||
bg = "#${config.var.theme.colors.bgalt}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
private.bg = "#${config.var.theme.colors.bgalt}";
|
||||
private.fg = "#${config.var.theme.colors.fgalt}";
|
||||
};
|
||||
};
|
||||
|
||||
messages = {
|
||||
info = {
|
||||
bg = "#${config.var.theme.colors.bgalt}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
border = "#${config.var.theme.colors.bgalt}";
|
||||
};
|
||||
|
||||
error = {
|
||||
bg = "#${config.var.theme.colors.c1}";
|
||||
fg = "#${config.var.theme.colors.fgalt}";
|
||||
border = "#${config.var.theme.colors.c1}";
|
||||
};
|
||||
};
|
||||
|
||||
#webpage.darkmode.enabled = true; # Enable dark mode for all websites (Weird on images)
|
||||
webpage.preferred_color_scheme =
|
||||
"dark"; # Enable dark mode for websites that support it
|
||||
};
|
||||
|
||||
fonts = { default_family = "${config.var.theme.font}"; };
|
||||
statusbar.show = "in-mode";
|
||||
|
||||
completion = {
|
||||
height = "30%";
|
||||
@@ -224,6 +147,7 @@ in {
|
||||
autoplay = false;
|
||||
javascript.clipboard = "access";
|
||||
javascript.enabled = true;
|
||||
webgl = true;
|
||||
pdfjs = true;
|
||||
};
|
||||
|
||||
@@ -232,10 +156,7 @@ in {
|
||||
remove_finished = 0;
|
||||
};
|
||||
|
||||
hints = {
|
||||
border = "none";
|
||||
radius = 1;
|
||||
};
|
||||
hints = { radius = 1; };
|
||||
|
||||
scrolling = {
|
||||
bar = "never";
|
||||
@@ -328,6 +249,7 @@ in {
|
||||
config.unbind("gt")
|
||||
|
||||
c.tabs.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
|
||||
c.statusbar.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
|
||||
|
||||
config.load_autoconfig(True)
|
||||
'';
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
{ config, ... }: {
|
||||
home.file.".duckduckgo-colorscheme.js".text = ''
|
||||
// Go to DuckDuckGo settings page, open the console, paste the code and hit enter.
|
||||
// based on https://ddg.codingcodax.dev/
|
||||
// Cookies string for your theme
|
||||
const cookie = '7=${config.var.theme.colors.bg}; j=${config.var.theme.colors.bg}; 9=${config.var.theme.colors.fg}; aa=${config.var.theme.colors.fgalt}; 8=${config.var.theme.colors.c7}; x=${config.var.theme.colors.accent}; 21=${config.var.theme.colors.bgalt};';
|
||||
|
||||
// Converts cookie string into formatted JSON
|
||||
const cookieToJSON = (cookieRaw) => {
|
||||
const cookieJson = {};
|
||||
const items = cookieRaw.split(/[ ,]+/);
|
||||
|
||||
items.forEach((item) => {
|
||||
const parts = item.split('=');
|
||||
cookieJson[parts[0]] = parts[1];
|
||||
});
|
||||
|
||||
return cookieJson;
|
||||
};
|
||||
|
||||
// Iterates over JSON, and adds to browser cookie store
|
||||
const setCookies = (cookieJson) => {
|
||||
Object.keys(cookieJson).forEach((key) => {
|
||||
document.cookie = `''${key}=''${cookieJson [ key ]}`;
|
||||
});
|
||||
};
|
||||
|
||||
alert('The Nixy theme will be applied.');
|
||||
|
||||
// Call set cookies, passing in formated cookie data
|
||||
setCookies(cookieToJSON(cookie));
|
||||
|
||||
// All done, reload page for changes to take effect :)
|
||||
location.reload();
|
||||
'';
|
||||
}
|
||||
@@ -1,13 +1,4 @@
|
||||
{
|
||||
imports = [
|
||||
./fzf.nix
|
||||
./zsh.nix
|
||||
./starship.nix
|
||||
./zoxide.nix
|
||||
./tmux.nix
|
||||
./lazygit.nix
|
||||
./eza.nix
|
||||
./fetch
|
||||
./lf
|
||||
];
|
||||
imports =
|
||||
[ ./fzf.nix ./zsh.nix ./starship.nix ./zoxide.nix ./tmux.nix ./eza.nix ];
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# Eza is a ls replacement
|
||||
{
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
icons = true;
|
||||
icons = "auto";
|
||||
|
||||
extraOptions = [
|
||||
"--group-directories-first"
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
{ config, ... }: {
|
||||
# Fzf is a general-purpose command-line fuzzy finder.
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
accent = "#" + config.lib.stylix.colors.base0D;
|
||||
foreground = "#" + config.lib.stylix.colors.base05;
|
||||
muted = "#" + config.lib.stylix.colors.base03;
|
||||
in {
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
colors = {
|
||||
"fg+" = config.var.theme.colors.accentName;
|
||||
colors = lib.mkForce {
|
||||
"fg+" = accent;
|
||||
"bg+" = "-1";
|
||||
"fg" = "white";
|
||||
"fg" = foreground;
|
||||
"bg" = "-1";
|
||||
"prompt" = "grey";
|
||||
"pointer" = config.var.theme.colors.accentName;
|
||||
"prompt" = muted;
|
||||
"pointer" = accent;
|
||||
};
|
||||
defaultOptions = [
|
||||
"--margin=1"
|
||||
"--layout=reverse"
|
||||
"--border=rounded"
|
||||
"--border=none"
|
||||
"--info='hidden'"
|
||||
"--header=''"
|
||||
"--prompt='/ '"
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
{ config, ... }: {
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = {
|
||||
gui.theme = {
|
||||
ligthTheme = false;
|
||||
activeBorderColor = [ "${config.var.theme.colors.accentName}" "bold" ];
|
||||
inactiveBorderColor = [ "black" ];
|
||||
selectedLineBgColor = [ "default" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||