Compare commits
831 commits
archive/x8
...
main
Author | SHA1 | Date | |
---|---|---|---|
5fea400025 | |||
21493a346a | |||
84ad7020b7 | |||
4d1a534055 | |||
dd4dc5eadf | |||
72b5ec72f2 | |||
a4115f7023 | |||
fdbde9a5ae | |||
893ff55487 | |||
92371c86bf | |||
d7e5280f4f | |||
c2fe2dbc78 | |||
50d1153f78 | |||
ba2b3a4fe6 | |||
158feb5d5a | |||
94792ab8e0 | |||
08b0c85ddf | |||
47ce63805f | |||
bb619f9226 | |||
d5effed1dc | |||
7cb6a45906 | |||
5a03dedcc0 | |||
19832c3a40 | |||
bcf76c58cc | |||
31cb7796a8 | |||
46c9d96116 | |||
7e72f42d43 | |||
8ca79fab27 | |||
483c916dfa | |||
189061328b | |||
7f3126bfd2 | |||
61d0b58861 | |||
278ac18a5a | |||
906d97998d | |||
c257089fbf | |||
d0edfaddd7 | |||
483e01cc6d | |||
d1ed5b73cb | |||
668902c9ba | |||
e2f0d0a00a | |||
4a661ca081 | |||
50133672a9 | |||
c359a986a8 | |||
1162fd96c0 | |||
bd25c63c4b | |||
efade93126 | |||
1b0f7f3984 | |||
ba6a845e8b | |||
fa11adab6b | |||
49534c199c | |||
7af2b36714 | |||
2306935b0d | |||
d5e627a3b5 | |||
30652889e1 | |||
407588e9f0 | |||
6b0259dc43 | |||
a20846e699 | |||
edaa1e6b8b | |||
57ed9cb7da | |||
19f1cb7780 | |||
79e0224846 | |||
2c007f4ff5 | |||
2472cc0a15 | |||
c77271a74d | |||
12956729b6 | |||
1e603bb6b4 | |||
6f327ab3ac | |||
e89f973696 | |||
2146928006 | |||
efbfe8bc0d | |||
679363066c | |||
5c9443641d | |||
9ae0640a71 | |||
c82601eba1 | |||
7040301860 | |||
d58604a096 | |||
7b9ed8add0 | |||
ba37b9fc31 | |||
cdaf463a50 | |||
df368176da | |||
cd45522a46 | |||
7d68a93d4e | |||
d9d9a72656 | |||
5149372f44 | |||
3cb61f024f | |||
cf89e2b807 | |||
ae633859cb | |||
d99227e683 | |||
a27054c34c | |||
48f444d7a4 | |||
d761f8a067 | |||
109f6c73ea | |||
d4a8c07636 | |||
7355009f23 | |||
589c87bf42 | |||
5162731711 | |||
e4c12c7e1f | |||
29e7b54536 | |||
432fb060ac | |||
07531deb32 | |||
e0883848a3 | |||
8366bef758 | |||
a91f7047d5 | |||
61e793ca8f | |||
1dcb8ebb80 | |||
65435ac297 | |||
2a17c2e708 | |||
510d2360df | |||
00834d5c31 | |||
425481bcb0 | |||
5857a94c9d | |||
c92e5722d5 | |||
b05856d43f | |||
e2664659c0 | |||
dd5c109e41 | |||
37cd5233a1 | |||
4821968a54 | |||
1484a137d9 | |||
96963d7489 | |||
d768a6f844 | |||
3f70506976 | |||
84c43d4f40 | |||
6bd0e4c50b | |||
e404fb073c | |||
baea08045d | |||
77a1d06fe6 | |||
cec3ec6995 | |||
fd96056758 | |||
80879d76cf | |||
5a9c369583 | |||
c1a30479ab | |||
601a02add4 | |||
28303695e5 | |||
7bcabeda5d | |||
aa87691fd4 | |||
2e56c9e01a | |||
3f406e4640 | |||
43caad925c | |||
623ed773c8 | |||
cede974225 | |||
fcab202c38 | |||
dac4092adb | |||
463bf0fddc | |||
bc7f60aef0 | |||
04de17268a | |||
d936279851 | |||
4c7961a110 | |||
a05e2f350b | |||
97644b68c6 | |||
39ac8c80f0 | |||
39cd50f49c | |||
4ed8d17b7e | |||
3ad4ddbda4 | |||
3ec10dd505 | |||
fbae92812f | |||
45e5a8adc8 | |||
e8d79d9836 | |||
2188a37289 | |||
279a352de2 | |||
fcfb83a2da | |||
9c9d45d0c4 | |||
43a2b76c59 | |||
58545ebda8 | |||
bf5ece05bd | |||
f66f4e19c1 | |||
85659453ee | |||
3c21e459c9 | |||
8529c4650d | |||
756cfaa3a8 | |||
0f4fe1501b | |||
4e7b60fed3 | |||
d94884b7ae | |||
6a4626438b | |||
79746de69a | |||
1a78c1cf19 | |||
f5b9f5ae6b | |||
fcd5000e6a | |||
078943a122 | |||
b48fe4f845 | |||
b1534fac93 | |||
58fba557c5 | |||
a35083ff1e | |||
82d7fab51e | |||
9670caae7d | |||
ad69f97952 | |||
dde8a27a7e | |||
d35f56c603 | |||
401ccb46df | |||
f72f681337 | |||
68ae98e457 | |||
4331755ff0 | |||
1bfd862394 | |||
f3b6610f8c | |||
6249572392 | |||
8962a4990a | |||
ee109829a7 | |||
a9fb22bf86 | |||
32a5792162 | |||
7231441858 | |||
6be3082c80 | |||
d016ef7db5 | |||
a387549e91 | |||
d4cd494b5e | |||
c2869eb6aa | |||
22395f7694 | |||
d0eab78ad9 | |||
d12ac360c1 | |||
0b3bb3e92b | |||
b5e8c0774e | |||
a111c7267a | |||
58e1e4eb1e | |||
2b14985fc9 | |||
1a8afca99e | |||
edf9ae648d | |||
995abd4dcb | |||
2220e7498e | |||
535f713c79 | |||
3c87abea9d | |||
2e704b22f8 | |||
6898c0ddae | |||
54cdd90c01 | |||
f3169efb98 | |||
ea8bd429b8 | |||
ef60e8d7d9 | |||
b64f325a02 | |||
4a4ac66c83 | |||
55ec65c9e1 | |||
0f6936dbd1 | |||
ed14a86476 | |||
70ce71c36e | |||
d9e667fe37 | |||
6ece7dba5f | |||
7f5a55ba72 | |||
8aba0be0b4 | |||
dc4a69b73a | |||
4e15d8da53 | |||
ebf403819f | |||
b4fe279925 | |||
2500589ae9 | |||
e41b72eedf | |||
074a47a2bd | |||
70a093ed7a | |||
f95a2b8e0e | |||
d802105171 | |||
d35fbb68b8 | |||
227dddf2f7 | |||
4a238f0a03 | |||
8caa4f6d77 | |||
8ab25ee76f | |||
c5d34f3735 | |||
39ddd06084 | |||
58a46c793b | |||
7c27f7d51f | |||
ba2d7312b4 | |||
adc11bc50a | |||
b0c18c7c15 | |||
28573bd36d | |||
3a79f2d53a | |||
0830c161d1 | |||
7cdec173d0 | |||
9f8858fe34 | |||
3e1199a700 | |||
ff98b2da60 | |||
dc508175a7 | |||
88830fcb5d | |||
308ba6bff1 | |||
5175e934a7 | |||
431992eff7 | |||
ac6de63ef2 | |||
c20c63f6ea | |||
ee16a78d1b | |||
3d4b905cd0 | |||
2bca2e2c41 | |||
26d6a1d116 | |||
4ed51b089e | |||
82c03e3055 | |||
4d08e896b7 | |||
4fd0266d02 | |||
5da3f62134 | |||
58d6774e7f | |||
2b931beac3 | |||
0e5ff42ed9 | |||
f2756f4941 | |||
152262659a | |||
a59313e477 | |||
d0af44785e | |||
28b5d14f1b | |||
2b5fba7e01 | |||
976e95c1ff | |||
e4d090e0dc | |||
2553286233 | |||
81fe668442 | |||
baac7cf543 | |||
1bed116085 | |||
2824dea9e3 | |||
95a157089d | |||
0bef9c991f | |||
1d40aae689 | |||
c8fdfc2f3a | |||
7c8baf7f32 | |||
2e74be8af1 | |||
17e5ad7053 | |||
c5da0ace1c | |||
dd7c2ea7c2 | |||
9fcfd13663 | |||
1acd600476 | |||
f62d41ba62 | |||
9dbd5b0471 | |||
bdcb2844c4 | |||
42f3235010 | |||
353660ade0 | |||
5046eb17f1 | |||
a94bad4adb | |||
d6fd828568 | |||
6df4a922ef | |||
78fc679bcc | |||
885a428878 | |||
29e15338ef | |||
e702e62296 | |||
4aa73643e7 | |||
269bda650d | |||
c06691c45f | |||
962f1cf796 | |||
18d39d134b | |||
3be52c3835 | |||
1b8a3eab9e | |||
ea634d7498 | |||
0cc7b72237 | |||
0907bce6f4 | |||
df2abeac3e | |||
a87f8feb1a | |||
217f09f7ef | |||
789c09e24a | |||
0131d3eaa3 | |||
ce5bce2409 | |||
3bfe415ad0 | |||
9aa9ce6dfe | |||
eb4e36de4f | |||
ffbca576ff | |||
82759e7819 | |||
0f4d2374bf | |||
ce1d38f3f2 | |||
43c67a6535 | |||
78254cbe5e | |||
fa8accf3a6 | |||
ddd17ae4af | |||
c612a81db7 | |||
2b282ab842 | |||
b7d22d3bbb | |||
c457c763e6 | |||
0256eae39c | |||
8b2effd885 | |||
a4ebdc26a9 | |||
8cae0adfb3 | |||
2d490033f3 | |||
a803eb5b6d | |||
9ffc2df383 | |||
045bc68fe2 | |||
4eeee42a9d | |||
f2f60d3cbd | |||
ea52afd5ad | |||
8f7d7f9357 | |||
877eade585 | |||
779d9946b0 | |||
d1217ef796 | |||
90b396317f | |||
7f24c3e3b1 | |||
e2749932af | |||
e24cde2733 | |||
505eac929a | |||
624fa2f312 | |||
201d08b6ac | |||
868fe61afb | |||
51e682d66e | |||
f4ec471ef5 | |||
2540156e17 | |||
08f8c71880 | |||
78119f6aad | |||
4d13192751 | |||
0350f74f7b | |||
b6fca59334 | |||
e0a6ce3b64 | |||
8848f7df18 | |||
a44ce28a73 | |||
6dfeec3a0e | |||
7942736d8d | |||
581d729b79 | |||
9fee4f6f3d | |||
7c2bf6601a | |||
feeadee1ea | |||
f387d5a002 | |||
8ffa090603 | |||
a705681094 | |||
b0572534d9 | |||
19423844ad | |||
7dc7823cff | |||
febc1dbc54 | |||
fadffaebae | |||
712fa9eacd | |||
e0cd176d1e | |||
24af078952 | |||
62b1d553f2 | |||
e81e16168a | |||
4ff0914d1a | |||
bbe280f608 | |||
11f9963090 | |||
3872b51902 | |||
54d835c290 | |||
21ae8bbbf2 | |||
44e592e9af | |||
52ab8df3e7 | |||
1c5295a007 | |||
6587b49549 | |||
bef194d211 | |||
2df02b5ebb | |||
ac75980139 | |||
b3624aacf4 | |||
27a3ec825e | |||
0247eba923 | |||
53afc745e7 | |||
7a2bbca728 | |||
97bb4b6327 | |||
de6a416958 | |||
21f82ed506 | |||
6bdd69426c | |||
4f22744983 | |||
02fa077d37 | |||
c4b536f3cf | |||
9b279a0b3c | |||
a1903be803 | |||
b9ee61bc0c | |||
353dc4fac3 | |||
cc89a7a0c4 | |||
1ebcfbba8b | |||
a1343b032e | |||
7785f6ee54 | |||
3b6338ff54 | |||
81bb0de427 | |||
764333541f | |||
5c3b923653 | |||
8039eacfb9 | |||
6af247c6c6 | |||
89e5cb8679 | |||
2d2909e22e | |||
73504959a2 | |||
c4e5b0141f | |||
4673ef1590 | |||
bed674c1ea | |||
1e64b50681 | |||
f1ac919c82 | |||
eed13824b8 | |||
ab7ae9e503 | |||
b5d21b8bb6 | |||
858905ac30 | |||
da24f19a47 | |||
b4bd291e76 | |||
52542ddc8a | |||
a3695b3f48 | |||
f84c39616e | |||
ab10b106ff | |||
80954f18fa | |||
8ee7ab1113 | |||
20521f77cc | |||
bc5ad30c8e | |||
9ef497f991 | |||
c85f5e013b | |||
20d33b0483 | |||
20f17a2247 | |||
44eb2bd078 | |||
2a2b2e1373 | |||
e103b92a8b | |||
60ba9d19d4 | |||
f77616504a | |||
1e55be7fae | |||
8662c4df19 | |||
90896ca0b3 | |||
061a7d8290 | |||
13c97347f8 | |||
3df5994159 | |||
9e982505a6 | |||
5952138b85 | |||
fb743989b4 | |||
d8dae0b57d | |||
5317efcc8d | |||
d7073b0472 | |||
69607cc38a | |||
ed2de97200 | |||
3e886667ce | |||
cd3715f21a | |||
e10d94f984 | |||
43f82bdedb | |||
a7ce699734 | |||
6e2ef44fd1 | |||
83f91a7016 | |||
c3b83a15d3 | |||
ff311d633d | |||
f29b132c4d | |||
aa61806fe1 | |||
2944546d0a | |||
b72635d019 | |||
039fcb3d0e | |||
d2c8d62e88 | |||
1874ab5f29 | |||
ab53ebc1db | |||
602ef03b1b | |||
d5f96ae6e5 | |||
08369e38e1 | |||
c1ad26246c | |||
5c455e88d5 | |||
0d1be1643c | |||
fede1456d8 | |||
4201547e3e | |||
1ce0ee80c5 | |||
73427f47d4 | |||
a0befb35e7 | |||
6bb530e404 | |||
afdd0a22f3 | |||
e46de005fd | |||
f2af0dfd64 | |||
231e0c511a | |||
7106852a9a | |||
5c08a54f63 | |||
3a858e68dc | |||
3f6f73b74a | |||
10542eae9d | |||
3894c3b40a | |||
53064f8db6 | |||
d415e110e8 | |||
5c94d8d809 | |||
58cfd9ef4e | |||
a4c54ec50d | |||
e22748e9f5 | |||
a46f194796 | |||
c7283f4314 | |||
c534fe8fc6 | |||
4e41b079e4 | |||
4f33cd310d | |||
9d67cf3d60 | |||
c96fbbb91e | |||
1b3ce49ffa | |||
d48b81fbac | |||
9ce514aa6d | |||
f2699971d4 | |||
3fe55b566a | |||
dddd1a9ec6 | |||
d69d821cd3 | |||
c0a563278d | |||
bf13bdfded | |||
94a4a9ff21 | |||
f8540d0e37 | |||
fe7ea07235 | |||
4edd18ad6c | |||
e76608886c | |||
cb99b5cea8 | |||
93f438a5d1 | |||
bc08b83283 | |||
7b4e304299 | |||
f4a42710b5 | |||
bf3ae9c4d0 | |||
4dad83e4ae | |||
ac2c989dbb | |||
c4724007d3 | |||
716cf3a006 | |||
123b5740c2 | |||
f47a53c6b2 | |||
ca830c5379 | |||
1efb42d2f5 | |||
98555351f3 | |||
cfdb483ff5 | |||
574753ff0b | |||
bb62038052 | |||
a3128c56ce | |||
6e10cdfed4 | |||
6d9f543af8 | |||
63c2953b90 | |||
83edf5666d | |||
6e3e2f134d | |||
74054316b1 | |||
c5ae0732e4 | |||
5f311c05f3 | |||
58b4cd9815 | |||
773852b310 | |||
011a1601f6 | |||
80e33aba09 | |||
971420fd32 | |||
e59445a83c | |||
d4f3391cac | |||
c945d00f61 | |||
727b016567 | |||
2954a57cf7 | |||
3c05f5e5a9 | |||
ba2cec8473 | |||
cb1a15d8d2 | |||
1c407de56d | |||
23b93025c3 | |||
20d60fabdc | |||
1234f45107 | |||
14020f2cfa | |||
a70575069a | |||
02067516a8 | |||
344f34c061 | |||
4e495a907d | |||
9480e94ab7 | |||
cddc4d6b1e | |||
448d806201 | |||
88831b431c | |||
521dc4a0ec | |||
e07dce7874 | |||
231fe8a462 | |||
0e39cd4599 | |||
9a8bd5c3cf | |||
6f3a5d2f60 | |||
2a1c3629aa | |||
ea469d1366 | |||
0a0fb77cc0 | |||
e1de2cc440 | |||
14281d5615 | |||
0a97c222ee | |||
8976333483 | |||
93766bcee5 | |||
adee9b3cb6 | |||
27fa686c7f | |||
f6f40f4254 | |||
9e2727a559 | |||
1de6d430ed | |||
38f1e14b89 | |||
d023a40fa2 | |||
07f0d1a465 | |||
99c38b16fc | |||
17ee05fc04 | |||
102f56e3b5 | |||
f6b00722c6 | |||
cccd510fa3 | |||
ffbf533d77 | |||
568dc2f4ab | |||
1511886bfd | |||
8be91d56ee | |||
054838677c | |||
1ee990513d | |||
247fa4a93b | |||
f2b783011e | |||
36e6907cfa | |||
f522285fac | |||
ad2256f839 | |||
336a0f64cc | |||
39c7ffbe50 | |||
647a8f2073 | |||
ecedb9774d | |||
7eb7f15b6d | |||
797f33bf5f | |||
0e0b28fbb1 | |||
8c888b693a | |||
1b4943b566 | |||
17fea084aa | |||
9e9fc56b23 | |||
f57051cca7 | |||
a450a41293 | |||
18291b9c8c | |||
ef69f11e2a | |||
7a3bc48c57 | |||
f735a5a70d | |||
559a1b9543 | |||
493dc96dad | |||
da7afab764 | |||
75a6dfa693 | |||
e798c797b5 | |||
60ccf1a5fc | |||
37bfc5f400 | |||
d3ccccb5a4 | |||
0ddc4a61bb | |||
cbdb8909c0 | |||
e3bacc7e2e | |||
ae3b0eed25 | |||
f12a60c50e | |||
1285337ae1 | |||
54a7a82651 | |||
59b62ac042 | |||
1701ade73f | |||
487d68de12 | |||
d8c51cbb94 | |||
7d437e6e0f | |||
9730670d2a | |||
9c71c28c16 | |||
66eb499ad0 | |||
52af30d67d | |||
aec4732e4c | |||
1da378b6c8 | |||
78696ad16d | |||
b831f9be33 | |||
3184cb2e4a | |||
ae54ad7e5d | |||
c44aa23749 | |||
920a2d8886 | |||
5b015349c0 | |||
2c3c3cc854 | |||
0df91fa659 | |||
e01daac2fc | |||
6e07261ae1 | |||
13c0a48a80 | |||
fede17c7b4 | |||
580e868f5a | |||
4b72214967 | |||
23e4691c6e | |||
3b9cd8ae5f | |||
4118fd205a | |||
518127d717 | |||
14fb55f58d | |||
11e83097e6 | |||
8d0d9f5320 | |||
e89290dc18 | |||
1ac2f73ee6 | |||
fec907a117 | |||
71f67f08ee | |||
7486f2409b | |||
608982d8f2 | |||
4213303810 | |||
293770f4f8 | |||
b3dbcde44d | |||
6244f06b92 | |||
0b358f8b0a | |||
059e31b9d3 | |||
f19ba4201d | |||
eb1fcb8205 | |||
48d80fc4b8 | |||
aaab14ff8c | |||
0431b86525 | |||
d4b83fd5a4 | |||
bb150a1427 | |||
76ee520d78 | |||
c7923e6ae6 | |||
e26d290125 | |||
381dfb4380 | |||
d8a13c0b6b | |||
9101f09131 | |||
82fda2d900 | |||
fa52813d59 | |||
a850312fc4 | |||
1652011473 | |||
998af79fb6 | |||
af4f7265e0 | |||
bfd130c879 | |||
9f3082ff5a | |||
2b353ac1bd | |||
6c4d4263f7 | |||
49d283b4d8 | |||
f900ad61f5 | |||
fc389370f4 | |||
f85c28c4ce | |||
68a191cacd | |||
186964c1a7 | |||
f2ac717244 | |||
a5760ca511 | |||
f8e2fa011b | |||
b66fcea3b8 | |||
7a95aa76fa | |||
91adc5497b | |||
6990913c6d | |||
563a668e7b | |||
037c5547a1 | |||
8ca6c49952 | |||
03eb5eb0f8 | |||
79ce9a95cc | |||
a50937c59a | |||
8edf7fad7c | |||
546cf7efca | |||
e9508bcb09 | |||
950eaea9c4 | |||
4c73b0cf42 | |||
29ad0a929a | |||
0f94e0cf1c | |||
c399eb7b1a | |||
fdf5ce79bf | |||
4189203192 | |||
9c73eeb315 | |||
602d727052 | |||
ecc28a3d24 | |||
1e1eb0a547 | |||
84b7c70e27 | |||
3e60e27695 | |||
8c181b811e | |||
2cc050cc13 | |||
1bf3b68f48 | |||
50286d4fb1 | |||
5990c5d258 | |||
ab1f001742 | |||
b70c840083 | |||
9addc8b4ca | |||
64d7c4f5f2 | |||
ecc8ed4bd9 | |||
342ca6e2f6 | |||
6543588596 | |||
1e7079e54c | |||
1e87bd7221 | |||
cd936d590c | |||
6ee41f0135 | |||
043b1668a2 | |||
f011d8c78d | |||
fc92f1a5b9 | |||
0f3a5ec38e | |||
e4823110b1 | |||
ab61c51afe | |||
0a583090db | |||
5f06e84522 | |||
7ae9497f49 | |||
c84a021f97 | |||
a8c727b880 | |||
818af704a1 | |||
bcbf30fd2e | |||
c06618330b | |||
c229218fac | |||
652f0a4c57 | |||
cf890bde0c | |||
3ab3e29786 | |||
edf807c9e0 | |||
88b5ca00e2 | |||
1a23900ae5 | |||
593610bba7 | |||
717736993c | |||
51104c5387 | |||
1244a55fc8 | |||
9305e26252 | |||
ce1d4e71ab | |||
7b5c3b956c | |||
ca2b59c942 | |||
524fafc36c | |||
1fe6b38adf | |||
0385a1430a | |||
f1ca2bc8fd | |||
93937e5113 | |||
71bc549799 | |||
f0cd40b2a3 |
109 changed files with 7970 additions and 390 deletions
.gitignore.gitmodules.sops.yamlbuilders.nixconfiguration.nix
fish/themes
flake.lockflake.nixhome.nixhome
completions
fish
hypr
kitty
modules
alacritty.nixbrave-apps.nixdefault.nixdirenv.nixdunst.nixeasyeffects.nixfiletypes.nixfirefox.nixfish.nixflameshot.nixgit.nixkitty.nixlazygit.nixlutris.nixmacos.nixneovim.nixpipewire-controller.nixplayerctl.nixprojects.nixrbw.nixredshift.nixrepo-clone.nixrust.nixsatty.nixsops.nixsources.nixssh.nixsxhkd.nixtheme.nixtldr.nixtmux-sessionizer.nixtmux.nixuser.nix
util
wezterm.nixxivlauncher.nixwezterm/modules
hosts
caveserver
llynx
lynx
permafrost
snowhawk
sprite
lib
modules
audio.nixdefault.nixdwl.nixdwm.nixenv.nixfilesystem.nixglib-schemas-fix.nix
home
hyprland.nixi18n.nixnetwork.nixniri.nixnix-ld.nixplymouth.nixpolkit.nixpower-button.nixsops.nixstar-citizen.nixsudo-rules.nixsyncthing.nixuser.nixwake-on-lan.nixpkgs
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
result/
|
||||
target/
|
||||
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
|||
[submodule "fish/themes/val-cat"]
|
||||
path = fish/themes/val-cat
|
||||
url = https://git.zynh.me/Zynh0722/omf-theme.git
|
13
.sops.yaml
Normal file
13
.sops.yaml
Normal file
|
@ -0,0 +1,13 @@
|
|||
keys:
|
||||
users:
|
||||
- &ravenshade age1zgd7qpj7vc4gjtetttqgp32aw75fmnjrw6ax2x2meul2w4jclytszvutdd
|
||||
hosts:
|
||||
- &snowhawk age1s549sffdhu2yyfk9h06hhks7xc4mqq9a6k53dleurr7y3rmuudpqwz24gv
|
||||
- &llynx age1vtsdlkxr3wuy5vtrpwfdr6sy7duzl06htusdu3as2knvfzvhhakqmc70rj
|
||||
creation_rules:
|
||||
- path_regex: secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *ravenshade
|
||||
- *snowhawk
|
||||
- *llynx
|
140
builders.nix
Normal file
140
builders.nix
Normal file
|
@ -0,0 +1,140 @@
|
|||
{ nixpkgs, nix-darwin, self, ... }@inputs:
|
||||
|
||||
let
|
||||
makePkgs = system: (import nixpkgs {
|
||||
inherit system;
|
||||
|
||||
config.allowUnfree = true;
|
||||
overlays = [
|
||||
self.overlays.default
|
||||
inputs.niri.overlays.niri
|
||||
# inputs.lix-module.overlays.default
|
||||
|
||||
inputs.zdwl.overlays.default
|
||||
|
||||
inputs.frc-nix.overlays.default
|
||||
|
||||
(final: prev: ({
|
||||
star-citizen = inputs.nix-gaming.packages.${prev.system}.star-citizen;
|
||||
}))
|
||||
|
||||
(final: prev: {
|
||||
tmux = prev.tmux.overrideAttrs (old: rec {
|
||||
version = "3.5";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "tmux";
|
||||
repo = "tmux";
|
||||
rev = version;
|
||||
hash = "sha256-8CRZj7UyBhuB5QO27Y+tHG62S/eGxPOHWrwvh1aBqq0=";
|
||||
};
|
||||
});
|
||||
})
|
||||
|
||||
(final: prev: {
|
||||
lutris-unwrapped = prev.lutris-unwrapped.overrideAttrs (old: rec {
|
||||
version = "0.5.18";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "lutris";
|
||||
repo = "lutris";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-dI5hqWBWrOGYUEM9Mfm7bTh7BEc4e+T9gJeiZ3BiqmE=";
|
||||
};
|
||||
});
|
||||
})
|
||||
|
||||
(final: prev: {
|
||||
uhk-agent = prev.uhk-agent.overrideAttrs (old: rec {
|
||||
pname = "uhk-agent";
|
||||
version = "5.0.2";
|
||||
|
||||
src = prev.fetchurl {
|
||||
url = "https://github.com/UltimateHackingKeyboard/agent/releases/download/v${version}/UHK.Agent-${version}-linux-x86_64.AppImage";
|
||||
name = "${pname}-${version}.AppImage";
|
||||
sha256 = "sha256-A0ALw5noXeeCGvWEFJMyYeNb9mMHyr3DC3T0yK1MQoM=";
|
||||
};
|
||||
});
|
||||
})
|
||||
];
|
||||
});
|
||||
|
||||
lib = nixpkgs.lib.extend (import ./lib);
|
||||
|
||||
inherit (inputs.home-manager.lib) homeManagerConfiguration;
|
||||
inherit (lib) nixosSystem;
|
||||
inherit (lib.strings) optionalString;
|
||||
inherit (lib.attrsets) nameValuePair;
|
||||
in
|
||||
rec {
|
||||
toPartialNixosConfig =
|
||||
{ hostname, system ? "x86_64-linux" }:
|
||||
nameValuePair
|
||||
hostname
|
||||
(nixosSystem rec {
|
||||
pkgs = makePkgs system;
|
||||
specialArgs = { inherit inputs self; };
|
||||
|
||||
modules = [
|
||||
./hosts/${hostname}/hardware-configuration.nix
|
||||
./hosts/${hostname}/configuration.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
inputs.chaotic.nixosModules.default
|
||||
inputs.niri.nixosModules.niri
|
||||
{
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs self pkgs;
|
||||
lib = pkgs.lib.extend (_: _: inputs.home-manager.lib);
|
||||
};
|
||||
}
|
||||
];
|
||||
});
|
||||
|
||||
toPartialHomeManagerConfig =
|
||||
{ user, system ? "x86_64-linux", hostname ? "", configHostname ? "" }:
|
||||
let
|
||||
configHost = if builtins.stringLength configHostname > 0 then configHostname else hostname;
|
||||
hostStr = optionalString (builtins.stringLength hostname > 0) "@${hostname}";
|
||||
in
|
||||
assert lib.assertMsg (builtins.stringLength configHost > 0) "either configHostname or hostname need to exist";
|
||||
nameValuePair
|
||||
"${user}${hostStr}"
|
||||
(homeManagerConfiguration {
|
||||
pkgs = makePkgs system;
|
||||
extraSpecialArgs = { inherit inputs self; };
|
||||
|
||||
modules = [
|
||||
inputs.chaotic.homeManagerModules.default
|
||||
./hosts/${configHost}/home.nix
|
||||
];
|
||||
});
|
||||
|
||||
toPartialDarwinConfig =
|
||||
{ hostname, system ? "aarch64-darwin", }:
|
||||
nameValuePair
|
||||
hostname
|
||||
(nix-darwin.lib.darwinSystem rec {
|
||||
pkgs = makePkgs system;
|
||||
specialArgs = { inherit inputs self; };
|
||||
|
||||
modules = [
|
||||
inputs.home-manager.darwinModules.home-manager
|
||||
./hosts/${hostname}/configuration.nix
|
||||
{
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs self pkgs;
|
||||
lib = pkgs.lib.extend (_: _: inputs.home-manager.lib);
|
||||
};
|
||||
}
|
||||
];
|
||||
});
|
||||
|
||||
compileSystems =
|
||||
toPartialConfiguration:
|
||||
systems:
|
||||
lib.right
|
||||
builtins.listToAttrs
|
||||
(map toPartialConfiguration)
|
||||
systems;
|
||||
compileNixosSystems = compileSystems toPartialNixosConfig;
|
||||
compileDarwinSystems = compileSystems toPartialDarwinConfig;
|
||||
compileHomes = compileSystems toPartialHomeManagerConfig;
|
||||
}
|
|
@ -1,181 +0,0 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [ inputs.home-manager.nixosModules.default ];
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "snowhawk"; # Define your hostname.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
|
||||
];
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Los_Angeles";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
# Enable the XFCE Desktop Environment.
|
||||
services.xserver.displayManager.lightdm.enable = true;
|
||||
services.xserver.desktopManager.budgie.enable = true;
|
||||
# services.xserver.windowManager.dwm.enable = true;
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
xkb = {
|
||||
layout = "us";
|
||||
variant = "";
|
||||
};
|
||||
};
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
# Enable sound with pipewire.
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
# If you want to use JACK applications, uncomment this
|
||||
#jack.enable = true;
|
||||
|
||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||
# no need to redefine it in your config for now)
|
||||
#media-session.enable = true;
|
||||
};
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
programs.nix-ld.enable = true;
|
||||
# programs.nix-ld.libraries = with pkgs; [
|
||||
#
|
||||
# ];
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.ravenshade = {
|
||||
isNormalUser = true;
|
||||
description = "Zynh Ludwig";
|
||||
extraGroups = [ "networkmanager" "wheel" ];
|
||||
packages = with pkgs; [
|
||||
rustup
|
||||
neovim
|
||||
gparted
|
||||
fish
|
||||
gnumake
|
||||
zig
|
||||
go
|
||||
nil
|
||||
xclip
|
||||
wezterm
|
||||
firefox
|
||||
fzf
|
||||
tree
|
||||
lazygit
|
||||
ripgrep
|
||||
nodejs_21
|
||||
dotnet-sdk_8
|
||||
unzip
|
||||
nixpkgs-fmt
|
||||
lua-language-server
|
||||
stylua
|
||||
steam
|
||||
spotify
|
||||
discord
|
||||
git-credential-oauth
|
||||
];
|
||||
};
|
||||
|
||||
# Enable automatic login for the user.
|
||||
services.xserver.displayManager.autoLogin = {
|
||||
enable = true;
|
||||
user = "ravenshade";
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
users = { "ravenshade" = import ./home.nix; };
|
||||
};
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
programs.bash = {
|
||||
interactiveShellInit = ''
|
||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||
then
|
||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
# programs.hyprland.enable = true;
|
||||
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
curl
|
||||
git
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.11"; # Did you read the comment?
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 75549ce64044336ed14e502f1c1ab8bf98184990
|
1718
flake.lock
1718
flake.lock
File diff suppressed because it is too large
Load diff
94
flake.nix
94
flake.nix
|
@ -1,38 +1,82 @@
|
|||
{
|
||||
description = "Nixos config flake";
|
||||
description = "snowhawk: a nixos configuration flake";
|
||||
|
||||
inputs = {
|
||||
# Nix
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
lix-module = { url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
sops-nix = { url = "github:mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
nh = { url = "github:viperML/nh"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# Desktop
|
||||
hyprland = { url = "github:hyprwm/Hyprland"; };
|
||||
hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
|
||||
split-monitor-workspaces = { url = "github:Duckonaut/split-monitor-workspaces"; inputs.hyprland.follows = "hyprland"; };
|
||||
anyrun = { url = "github:anyrun-org/anyrun"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
niri = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
|
||||
# Themeing
|
||||
dunst-theme = { url = "github:d2718nis/rose-pine-dunst"; flake = false; };
|
||||
fish_theme = { url = "git+https://git.zynh.me/Zynh0722/omf-theme"; flake = false; };
|
||||
backgrounds = { url = "git+https://git.zynh.me/Zynh0722/backgrounds"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
rose-pine-swaync = { url = "github:rose-pine/swaync"; flake = false; };
|
||||
rose-pine-hyprcursor = { url = "github:ndom91/rose-pine-hyprcursor"; inputs.nixpkgs.follows = "nixpkgs"; inputs.hyprlang.follows = "hyprland/hyprlang"; };
|
||||
|
||||
# Owie Sharp
|
||||
neovim-overlay = { url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||
|
||||
# Some of my stuff
|
||||
repo-clone.url = "git+https://git.zynh.me/Zynh0722/repo-clone";
|
||||
zdwm = { url = "git+https://git.zynh.me/Zynh0722/dwm?ref=preanybar-systray"; flake = false; };
|
||||
zdwl = { url = "git+https://git.zynh.me/Zynh0722/dwl?ref=0.7"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
|
||||
# aarch
|
||||
nix-darwin = { url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
nixos-apple-silicon = { url = "github:Lederstrumpf/nixos-apple-silicon/mesa-changes"; };
|
||||
|
||||
# FRC
|
||||
frc-nix = { url = "github:Zynh0722/frc-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
|
||||
# Gaming
|
||||
umu = { url = "github:Open-Wine-Components/umu-launcher?dir=packaging/nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
nix-gaming.url = "github:fufexan/nix-gaming";
|
||||
|
||||
deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, ... }@inputs:
|
||||
outputs =
|
||||
{ self, nixpkgs, deploy-rs, ... }@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
builders = import ./builders.nix inputs;
|
||||
in
|
||||
{
|
||||
nixosConfigurations = {
|
||||
snowhawk = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./hosts/snowhawk/hardware-configuration.nix
|
||||
./configuration.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
nixosConfigurations = builders.compileNixosSystems [
|
||||
{ hostname = "snowhawk"; }
|
||||
{ hostname = "llynx"; system = "aarch64-linux"; }
|
||||
];
|
||||
|
||||
darwinConfigurations = builders.compileDarwinSystems [
|
||||
{ hostname = "lynx"; }
|
||||
];
|
||||
|
||||
homeConfigurations = builders.compileHomes [
|
||||
{ user = "zynh"; hostname = "msiserver"; }
|
||||
{ user = "val"; hostname = "caveserver"; }
|
||||
{ user = "ravenshade"; hostname = "permafrost"; }
|
||||
];
|
||||
|
||||
deploy =
|
||||
let homeConfigPath = username: deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.${username};
|
||||
in {
|
||||
sshUser = "ravenshade";
|
||||
nodes.permafrost = {
|
||||
hostname = "permafrost.local";
|
||||
profiles.home.path = homeConfigPath "ravenshade@permafrost";
|
||||
};
|
||||
};
|
||||
sprite = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./hosts/sprite/hardware-configuration.nix
|
||||
./configuration.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
overlays.default = import ./pkgs;
|
||||
};
|
||||
}
|
||||
|
|
128
home.nix
128
home.nix
|
@ -1,128 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
home.username = "ravenshade";
|
||||
home.homeDirectory = "/home/ravenshade";
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
# introduces backwards incompatible changes.
|
||||
#
|
||||
# You should not change this value, even if you update Home Manager. If you do
|
||||
# want to update the value, then make sure to first check the Home Manager
|
||||
# release notes.
|
||||
home.stateVersion = "23.11"; # Please read the comment before changing.
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
home.packages = [
|
||||
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||
# # "Hello, world!" when run.
|
||||
# pkgs.hello
|
||||
|
||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||
# # overrides. You can do that directly here, just don't forget the
|
||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||
# # fonts?
|
||||
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||
|
||||
# # You can also create simple shell scripts directly inside your
|
||||
# # configuration. For example, this adds a command 'my-hello' to your
|
||||
# # environment:
|
||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||
# echo "Hello, ${config.home.username}!"
|
||||
# '')
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
# plain files is through 'home.file'.
|
||||
home.file = {
|
||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||
# # symlink to the Nix store copy.
|
||||
# ".screenrc".source = dotfiles/screenrc;
|
||||
|
||||
# # You can also set the file content immediately.
|
||||
# ".gradle/gradle.properties".text = ''
|
||||
# org.gradle.console=verbose
|
||||
# org.gradle.daemon.idletimeout=3600000
|
||||
# '';
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
MANPAGER = "nvim +Man!";
|
||||
};
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
set -U fish_greeting
|
||||
|
||||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
end
|
||||
|
||||
function fish_user_key_bindings
|
||||
# Execute this once per mode that emacs bindings should be used in
|
||||
fish_default_key_bindings -M insert
|
||||
|
||||
# Then execute the vi-bindings so they take precedence when there's a conflict.
|
||||
# Without --no-erase fish_vi_key_bindings will default to
|
||||
# resetting all bindings.
|
||||
# The argument specifies the initial mode (insert, "default" or visual).
|
||||
fish_vi_key_bindings --no-erase insert
|
||||
|
||||
bind \cf 'fg 2>/dev/null; commandline -f repaint'
|
||||
end
|
||||
'';
|
||||
};
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Zynh Ludwig";
|
||||
userEmail = "zynh0722@gmail.com";
|
||||
aliases = {
|
||||
co = "checkout";
|
||||
ci = "commit";
|
||||
st = "status";
|
||||
br = "branch";
|
||||
hist = "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short";
|
||||
type = "cat-file -t";
|
||||
dump = "cat-file -p";
|
||||
graph = "log --graph --decorate --pretty=oneline --abbrev-commit";
|
||||
};
|
||||
extraConfig = {
|
||||
init.defaultBranch = "main";
|
||||
core = {
|
||||
editor = "nvim";
|
||||
autocrlf = "input";
|
||||
safecrlf = true;
|
||||
};
|
||||
credential = {
|
||||
helper = [
|
||||
"cache --timeout 7200"
|
||||
"oauth"
|
||||
];
|
||||
"https://git.zynh.me" = {
|
||||
oauthClientId = "13d5b95d-565d-4264-8961-c45cc38eaa8a";
|
||||
oauthScopes = "read_repository write_repository";
|
||||
oauthAuthURL = "/login/oauth/authorize";
|
||||
oauthTokenURL = "/login/oauth/access_token";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# wayland.windowManager.hyprland = {
|
||||
# enable = true;
|
||||
# package = pkgs.hyprland;
|
||||
# xwayland.enable = true;
|
||||
# systemd.enable = true;
|
||||
# };
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
}
|
213
home/completions/rustup.fish
Normal file
213
home/completions/rustup.fish
Normal file
|
@ -0,0 +1,213 @@
|
|||
complete -c rustup -n "__fish_use_subcommand" -s v -l verbose -d 'Enable verbose output'
|
||||
complete -c rustup -n "__fish_use_subcommand" -s q -l quiet -d 'Disable progress output'
|
||||
complete -c rustup -n "__fish_use_subcommand" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_use_subcommand" -s V -l version -d 'Print version'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "dump-testament" -d 'Dump information about the build'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "show" -d 'Show the active and installed toolchains or profiles'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "install" -d 'Update Rust toolchains'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "uninstall" -d 'Uninstall Rust toolchains'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "update" -d 'Update Rust toolchains and rustup'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "check" -d 'Check for updates to Rust toolchains and rustup'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "default" -d 'Set the default toolchain'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "toolchain" -d 'Modify or query the installed toolchains'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "target" -d 'Modify a toolchain\'s supported targets'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "component" -d 'Modify a toolchain\'s installed components'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "override" -d 'Modify toolchain overrides for directories'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "run" -d 'Run a command with an environment configured for a given toolchain'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "which" -d 'Display which binary will be run for a given command'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "doc" -d 'Open the documentation for the current toolchain'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "man" -d 'View the man page for a given command'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "self" -d 'Modify the rustup installation'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "set" -d 'Alter rustup settings'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "completions" -d 'Generate tab-completion scripts for your shell'
|
||||
complete -c rustup -n "__fish_use_subcommand" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from dump-testament" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -s v -l verbose -d 'Enable verbose output with rustc information for all installed toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "active-toolchain" -d 'Show the active toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "home" -d 'Display the computed value of RUSTUP_HOME'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "profile" -d 'Show the default profile used for the `rustup install` command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from active-toolchain" -s v -l verbose -d 'Enable verbose output with rustc information'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from active-toolchain" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from home" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from profile" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "active-toolchain" -d 'Show the active toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "home" -d 'Display the computed value of RUSTUP_HOME'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "profile" -d 'Show the default profile used for the `rustup install` command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from show; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from install" -l profile -r -f -a "{minimal '',default '',complete ''}"
|
||||
complete -c rustup -n "__fish_seen_subcommand_from install" -l no-self-update -d 'Don\'t perform self-update when running the `rustup install` command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from install" -l force -d 'Force an update, even if some components are missing'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from install" -l force-non-host -d 'Install toolchains that require an emulator. See https://github.com/rust-lang/rustup/wiki/Non-host-toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from install" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from update" -l no-self-update -d 'Don\'t perform self update when running the `rustup update` command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from update" -l force -d 'Force an update, even if some components are missing'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from update" -l force-non-host -d 'Install toolchains that require an emulator. See https://github.com/rust-lang/rustup/wiki/Non-host-toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from update" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from check" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from default" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List installed toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install or update a given toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "link" -d 'Create a custom toolchain by symlinking to a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from list" -s v -l verbose -d 'Enable verbose output with toolchain information'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -l profile -r -f -a "{minimal '',default '',complete ''}"
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -s c -l component -d 'Add specific components on installation' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -s t -l target -d 'Add specific targets on installation' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -l no-self-update -d 'Don\'t perform self update when running the`rustup toolchain install` command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -l force -d 'Force an update, even if some components are missing'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -l allow-downgrade -d 'Allow rustup to downgrade the toolchain to satisfy your component choice'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -l force-non-host -d 'Install toolchains that require an emulator. See https://github.com/rust-lang/rustup/wiki/Non-host-toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from link" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List installed toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install or update a given toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "link" -d 'Create a custom toolchain by symlinking to a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from toolchain; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List installed and available targets'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "add" -d 'Add a target to a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "remove" -d 'Remove a target from a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from list" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from list" -l installed -d 'List only installed targets'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from add" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from add" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from remove" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from remove" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List installed and available targets'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "add" -d 'Add a target to a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "remove" -d 'Remove a target from a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from target; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List installed and available components'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "add" -d 'Add a component to a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "remove" -d 'Remove a component from a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from list" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from list" -l installed -d 'List only installed components'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from add" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from add" -l target -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from add" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from remove" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from remove" -l target -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from remove" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List installed and available components'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "add" -d 'Add a component to a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "remove" -d 'Remove a component from a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from component; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List directory toolchain overrides'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "set" -d 'Set the override toolchain for a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "unset" -d 'Remove the override toolchain for a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from set" -l path -d 'Path to the directory' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from set" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from unset" -l path -d 'Path to the directory' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from unset" -l nonexistent -d 'Remove override toolchain for all nonexistent directories'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from unset" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List directory toolchain overrides'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "set" -d 'Set the override toolchain for a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "unset" -d 'Remove the override toolchain for a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from override; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from run" -l install -d 'Install the requested toolchain if needed'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from run" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from which" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', \'1.8.0\', or a custom toolchain name. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from which" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l path -d 'Only print the path to the documentation'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l alloc -d 'The Rust core allocation and collections library'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l book -d 'The Rust Programming Language book'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l cargo -d 'The Cargo Book'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l core -d 'The Rust Core Library'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l edition-guide -d 'The Rust Edition Guide'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l nomicon -d 'The Dark Arts of Advanced and Unsafe Rust Programming'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l proc_macro -d 'A support library for macro authors when defining new macros'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l reference -d 'The Rust Reference'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l rust-by-example -d 'A collection of runnable examples that illustrate various Rust concepts and standard libraries'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l rustc -d 'The compiler for the Rust programming language'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l rustdoc -d 'Documentation generator for Rust projects'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l std -d 'Standard library API documentation'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l test -d 'Support code for rustc\'s built in unit-test and micro-benchmarking framework'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l unstable-book -d 'The Unstable Book'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -l embedded-book -d 'The Embedded Rust Book'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from doc" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from man" -l toolchain -d 'Toolchain name, such as \'stable\', \'nightly\', or \'1.8.0\'. For more information see `rustup help toolchain`' -r
|
||||
complete -c rustup -n "__fish_seen_subcommand_from man" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "update" -d 'Download and install updates to rustup'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall rustup.'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "upgrade-data" -d 'Upgrade the internal data format.'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from update" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from uninstall" -s y
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from upgrade-data" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "update" -d 'Download and install updates to rustup'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall rustup.'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "upgrade-data" -d 'Upgrade the internal data format.'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from self; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "default-host" -d 'The triple used to identify toolchains when not specified'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "profile" -d 'The default components installed with a toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "auto-self-update" -d 'The rustup auto self update mode'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and __fish_seen_subcommand_from default-host" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and __fish_seen_subcommand_from profile" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and __fish_seen_subcommand_from auto-self-update" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "default-host" -d 'The triple used to identify toolchains when not specified'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "profile" -d 'The default components installed with a toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "auto-self-update" -d 'The rustup auto self update mode'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from set; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from completions" -s h -l help -d 'Print help'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "dump-testament" -d 'Dump information about the build'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "show" -d 'Show the active and installed toolchains or profiles'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Update Rust toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall Rust toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "update" -d 'Update Rust toolchains and rustup'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "check" -d 'Check for updates to Rust toolchains and rustup'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "default" -d 'Set the default toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "toolchain" -d 'Modify or query the installed toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "target" -d 'Modify a toolchain\'s supported targets'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "component" -d 'Modify a toolchain\'s installed components'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "override" -d 'Modify toolchain overrides for directories'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "run" -d 'Run a command with an environment configured for a given toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "which" -d 'Display which binary will be run for a given command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "doc" -d 'Open the documentation for the current toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "man" -d 'View the man page for a given command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "self" -d 'Modify the rustup installation'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "set" -d 'Alter rustup settings'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "completions" -d 'Generate tab-completion scripts for your shell'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from dump-testament; and not __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from check; and not __fish_seen_subcommand_from default; and not __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from run; and not __fish_seen_subcommand_from which; and not __fish_seen_subcommand_from doc; and not __fish_seen_subcommand_from man; and not __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile" -f -a "active-toolchain" -d 'Show the active toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile" -f -a "home" -d 'Display the computed value of RUSTUP_HOME'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from show; and not __fish_seen_subcommand_from active-toolchain; and not __fish_seen_subcommand_from home; and not __fish_seen_subcommand_from profile" -f -a "profile" -d 'Show the default profile used for the `rustup install` command'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link" -f -a "list" -d 'List installed toolchains'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link" -f -a "install" -d 'Install or update a given toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link" -f -a "uninstall" -d 'Uninstall a toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from toolchain; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from link" -f -a "link" -d 'Create a custom toolchain by symlinking to a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove" -f -a "list" -d 'List installed and available targets'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove" -f -a "add" -d 'Add a target to a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from target; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove" -f -a "remove" -d 'Remove a target from a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove" -f -a "list" -d 'List installed and available components'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove" -f -a "add" -d 'Add a component to a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from component; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from add; and not __fish_seen_subcommand_from remove" -f -a "remove" -d 'Remove a component from a Rust toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset" -f -a "list" -d 'List directory toolchain overrides'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset" -f -a "set" -d 'Set the override toolchain for a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from override; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from unset" -f -a "unset" -d 'Remove the override toolchain for a directory'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data" -f -a "update" -d 'Download and install updates to rustup'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data" -f -a "uninstall" -d 'Uninstall rustup.'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from self; and not __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from upgrade-data" -f -a "upgrade-data" -d 'Upgrade the internal data format.'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update" -f -a "default-host" -d 'The triple used to identify toolchains when not specified'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update" -f -a "profile" -d 'The default components installed with a toolchain'
|
||||
complete -c rustup -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from set; and not __fish_seen_subcommand_from default-host; and not __fish_seen_subcommand_from profile; and not __fish_seen_subcommand_from auto-self-update" -f -a "auto-self-update" -d 'The rustup auto self update mode'
|
20
home/fish/config.fish
Normal file
20
home/fish/config.fish
Normal file
|
@ -0,0 +1,20 @@
|
|||
set -U fish_greeting
|
||||
|
||||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
|
||||
bind \cG lazygit
|
||||
end
|
||||
|
||||
function fish_user_key_bindings
|
||||
# Execute this once per mode that emacs bindings should be used in
|
||||
fish_default_key_bindings -M insert
|
||||
|
||||
# Then execute the vi-bindings so they take precedence when there's a conflict.
|
||||
# Without --no-erase fish_vi_key_bindings will default to
|
||||
# resetting all bindings.
|
||||
# The argument specifies the initial mode (insert, "default" or visual).
|
||||
fish_vi_key_bindings --no-erase insert
|
||||
|
||||
bind \cf 'fg 2>/dev/null; commandline -f repaint'
|
||||
end
|
318
home/hypr/hyprland.conf
Normal file
318
home/hypr/hyprland.conf
Normal file
|
@ -0,0 +1,318 @@
|
|||
|
||||
# #######################################################################################
|
||||
# AUTOGENERATED HYPRLAND CONFIG.
|
||||
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT,
|
||||
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||
# #######################################################################################
|
||||
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hyprland.org/Configuring/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
source=~/.config/hypr/rose-pine.conf
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=,preferred,auto,auto
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = pcmanfm
|
||||
$menu = wofi --show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
# exec-once = waybar & hyprpaper & firefox
|
||||
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
env = MOZ_ENABLE_WAYLAND,1
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 5
|
||||
|
||||
border_size = 1
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = $foam $pine 45deg
|
||||
col.inactive_border = $muted
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = true
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 5
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = no,
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
# animation = global, 1, 10, default
|
||||
# animation = border, 1, 5.39, easeOutQuint
|
||||
# animation = windows, 1, 4.79, easeOutQuint
|
||||
# animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
# animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
# animation = windowsMove, 1, 4.79, easeOutQuint
|
||||
# animation = fadeIn, 1, 1.73, almostLinear
|
||||
# animation = fadeOut, 1, 1.46, almostLinear
|
||||
# animation = fade, 1, 3.03, quick
|
||||
# animation = layers, 1, 3.81, easeOutQuint
|
||||
# animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
# animation = layersOut, 1, 1.5, linear, fade
|
||||
# animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
# animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
# animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
# animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
# animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
cursor {
|
||||
inactive_timeout = 5
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = true
|
||||
clickfinger_behavior = true
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = true
|
||||
workspace_swipe_distance = 50
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, Q, exec, $terminal
|
||||
bind = $mainMod, C, killactive,
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, R, exec, $menu
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, togglesplit, # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, split-workspace, 1
|
||||
bind = $mainMod, 2, split-workspace, 2
|
||||
bind = $mainMod, 3, split-workspace, 3
|
||||
bind = $mainMod, 4, split-workspace, 4
|
||||
bind = $mainMod, 5, split-workspace, 5
|
||||
bind = $mainMod, 6, split-workspace, 6
|
||||
bind = $mainMod, 7, split-workspace, 7
|
||||
bind = $mainMod, 8, split-workspace, 8
|
||||
bind = $mainMod, 9, split-workspace, 9
|
||||
bind = $mainMod, 0, split-workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, split-movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, split-movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, split-movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, split-movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, split-movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, split-movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, split-movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, split-movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, split-movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, split-movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
bind = $mainMod SHIFT, minus, exec, bash -c "XDG_CURRENT_DESKTOP=sway flameshot gui"
|
||||
bind = $mainMod, n, exec, swaync-client -t
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
|
||||
# Example windowrule v2
|
||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrulev2 = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
|
||||
|
||||
plugin {
|
||||
split-monitor-workspaces {
|
||||
count = 10
|
||||
keep_focused = 0
|
||||
enable_notifications = 1
|
||||
enable_persistent_workspaces = 0
|
||||
}
|
||||
}
|
19
home/hypr/rose-pine.conf
Normal file
19
home/hypr/rose-pine.conf
Normal file
|
@ -0,0 +1,19 @@
|
|||
# name: Rosé Pine
|
||||
# author: jishnurajendran
|
||||
# upstream: https://github.com/jishnurajendran/hyprland-rosepine/blob/main/rose-pine.conf
|
||||
# All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
||||
$base = 0xff191724
|
||||
$surface = 0xff1f1d2e
|
||||
$overlay = 0xff26233a
|
||||
$muted = 0xff6e6a86
|
||||
$subtle = 0xff908caa
|
||||
$text = 0xffe0def4
|
||||
$love = 0xffeb6f92
|
||||
$gold = 0xfff6c177
|
||||
$rose = 0xffebbcba
|
||||
$pine = 0xff31748f
|
||||
$foam = 0xff9ccfd8
|
||||
$iris = 0xffc4a7e7
|
||||
$highlightLow = 0xff21202e
|
||||
$highlightMed = 0xff403d52
|
||||
$highlightHigh = 0xff524f67
|
53
home/kitty/alacritty-colors.conf
Normal file
53
home/kitty/alacritty-colors.conf
Normal file
|
@ -0,0 +1,53 @@
|
|||
|
||||
## name: Rosé Pine
|
||||
## author: mvllow
|
||||
## license: MIT
|
||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
|
||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
||||
|
||||
foreground #d8d8d8
|
||||
# background #050505
|
||||
selection_foreground #e0def4
|
||||
selection_background #403d52
|
||||
|
||||
cursor #524f67
|
||||
cursor_text_color #e0def4
|
||||
|
||||
url_color #c4a7e7
|
||||
|
||||
active_tab_foreground #e0def4
|
||||
active_tab_background #26233a
|
||||
inactive_tab_foreground #6e6a86
|
||||
inactive_tab_background #191724
|
||||
|
||||
# black
|
||||
color0 #181818
|
||||
color8 #6b6b6b
|
||||
|
||||
# red
|
||||
color1 #ac4242
|
||||
color9 #c55555
|
||||
|
||||
# green
|
||||
color2 #90a959
|
||||
color10 #aac474
|
||||
|
||||
# yellow
|
||||
color3 #f4bf75
|
||||
color11 #fcea88
|
||||
|
||||
# blue
|
||||
color4 #6a9fb5
|
||||
color12 #82b8c8
|
||||
|
||||
# magenta
|
||||
color5 #aa759f
|
||||
color13 #c28cb8
|
||||
|
||||
# cyan
|
||||
color6 #75b5aa
|
||||
color14 #93d3c3
|
||||
|
||||
# white
|
||||
color7 #d8d8d8
|
||||
color15 #f8f8f8
|
54
home/kitty/rose-pine.conf
Normal file
54
home/kitty/rose-pine.conf
Normal file
|
@ -0,0 +1,54 @@
|
|||
## name: Rosé Pine
|
||||
## author: mvllow
|
||||
## license: MIT
|
||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
|
||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
||||
|
||||
foreground #e0def4
|
||||
background #191724
|
||||
selection_foreground #e0def4
|
||||
selection_background #403d52
|
||||
|
||||
cursor #524f67
|
||||
cursor_text_color #e0def4
|
||||
|
||||
url_color #c4a7e7
|
||||
|
||||
active_tab_foreground #e0def4
|
||||
active_tab_background #26233a
|
||||
inactive_tab_foreground #6e6a86
|
||||
inactive_tab_background #191724
|
||||
|
||||
# black
|
||||
color0 #26233a
|
||||
color8 #6e6a86
|
||||
|
||||
# red
|
||||
color1 #eb6f92
|
||||
color9 #eb6f92
|
||||
|
||||
# green
|
||||
color2 #31748f
|
||||
color10 #31748f
|
||||
|
||||
# yellow
|
||||
color3 #f6c177
|
||||
color11 #f6c177
|
||||
|
||||
# blue
|
||||
color4 #9ccfd8
|
||||
color12 #9ccfd8
|
||||
|
||||
# magenta
|
||||
color5 #c4a7e7
|
||||
color13 #c4a7e7
|
||||
|
||||
# cyan
|
||||
color6 #ebbcba
|
||||
color14 #ebbcba
|
||||
|
||||
# white
|
||||
color7 #e0def4
|
||||
color15 #e0def4
|
||||
|
||||
|
46
home/modules/alacritty.nix
Normal file
46
home/modules/alacritty.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.alacritty;
|
||||
macos = config.snowhawk.macos.enable;
|
||||
in
|
||||
{
|
||||
options.snowhawk.alacritty = {
|
||||
enable = lib.mkEnableOption "alacritty home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
window = {
|
||||
opacity = 0.98;
|
||||
decorations = lib.mkIf macos "buttonless";
|
||||
option_as_alt = lib.mkIf macos "Both";
|
||||
};
|
||||
colors = {
|
||||
primary.background = "#050505";
|
||||
};
|
||||
font = {
|
||||
size = 12.0;
|
||||
normal = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Regular";
|
||||
};
|
||||
bold = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "SemiBold";
|
||||
};
|
||||
italic = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Italic";
|
||||
};
|
||||
bold_italic = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "SemiBold Italic";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
84
home/modules/brave-apps.nix
Normal file
84
home/modules/brave-apps.nix
Normal file
|
@ -0,0 +1,84 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkEnableOption mkOption mkIf;
|
||||
inherit (lib.attrsets) mapAttrsToList;
|
||||
inherit (builtins) filter toString attrNames attrValues length;
|
||||
inherit (pkgs) writeShellScript writeShellScriptBin coreutils;
|
||||
|
||||
cfg = config.snowhawk.brave-apps;
|
||||
in
|
||||
{
|
||||
options.snowhawk.brave-apps = {
|
||||
enable = mkEnableOption "brave-apps home-manager module";
|
||||
|
||||
chromium-package = mkOption {
|
||||
description = ''
|
||||
chromium package to use for the chromium apps
|
||||
'';
|
||||
type = with lib.types; package;
|
||||
default = pkgs.brave;
|
||||
};
|
||||
|
||||
apps = mkOption {
|
||||
description = ''
|
||||
chromium based desktop apps configuration
|
||||
'';
|
||||
type = with lib.types; attrsOf (submodule {
|
||||
options = {
|
||||
url = mkOption {
|
||||
description = ''
|
||||
the url to open as a chromium window
|
||||
|
||||
only one of `url` `urlEval` or `urlFile` may be set
|
||||
'';
|
||||
default = null;
|
||||
type = with lib.types; nullOr str;
|
||||
};
|
||||
urlEval = mkOption {
|
||||
description = ''
|
||||
the bash script to evaluate to get url to open as chromium window. May be useful for secrets management
|
||||
|
||||
only one of `url` `urlEval` or `urlFile` may be set
|
||||
'';
|
||||
default = null;
|
||||
type = with lib.types; nullOr str;
|
||||
};
|
||||
urlFile = mkOption {
|
||||
description = ''
|
||||
file to read which contains the url to open as a chromium window. May be useful for secrets management
|
||||
|
||||
|
||||
only one of `url` `urlEval` or `urlFile` may be set
|
||||
'';
|
||||
default = null;
|
||||
type = with lib.types; nullOr str;
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages =
|
||||
let
|
||||
evalString = s: "\$(${s})";
|
||||
readFile = f: evalString "${coreutils}/bin/cat ${f}";
|
||||
writeChromiumDesktopApp = name: app: writeShellScriptBin name ''
|
||||
${lib.getExe cfg.chromium-package} --new-window --app=${app}
|
||||
'';
|
||||
in
|
||||
mapAttrsToList
|
||||
(n: v:
|
||||
assert lib.assertMsg (length (filter (v: v != null) (attrValues v)) == 1)
|
||||
"only one of `url` `urlEval` or `urlFile` may be set: ${toString n} has multiple urls set";
|
||||
(writeChromiumDesktopApp n (
|
||||
if v.url != null then v.url
|
||||
else if v.urlEval != null then evalString v.urlEval
|
||||
else if v.urlFile != null then readFile v.urlFile
|
||||
else throw "grr >:( -- this should be unreachable"
|
||||
)))
|
||||
cfg.apps;
|
||||
};
|
||||
}
|
||||
|
24
home/modules/default.nix
Normal file
24
home/modules/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ lib, ... }:
|
||||
|
||||
let
|
||||
getModules = path:
|
||||
let
|
||||
dirEntries = builtins.removeAttrs (builtins.readDir path) [ "default.nix" ];
|
||||
moduleEntries = lib.attrsets.filterAttrs (n: v: v == "regular") dirEntries;
|
||||
moduleNames = builtins.attrNames moduleEntries;
|
||||
|
||||
|
||||
modulePaths = builtins.map (name: path + /${name}) moduleNames;
|
||||
in
|
||||
modulePaths;
|
||||
in
|
||||
{
|
||||
imports = getModules ./.;
|
||||
|
||||
snowhawk.user.enable = lib.mkDefault true;
|
||||
snowhawk.tmux.enable = lib.mkDefault true;
|
||||
snowhawk.tmux.sessionizer.enable = lib.mkDefault true;
|
||||
snowhawk.fish.enable = lib.mkDefault true;
|
||||
snowhawk.git.enable = lib.mkDefault true;
|
||||
snowhawk.lazygit.enable = lib.mkDefault true;
|
||||
}
|
17
home/modules/direnv.nix
Normal file
17
home/modules/direnv.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.direnv;
|
||||
in
|
||||
{
|
||||
options.snowhawk.direnv = {
|
||||
enable = lib.mkEnableOption "direnv home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
28
home/modules/dunst.nix
Normal file
28
home/modules/dunst.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.dunst;
|
||||
in
|
||||
{
|
||||
options.snowhawk.dunst = {
|
||||
enable = lib.mkEnableOption "lazygit";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.dunst = {
|
||||
enable = true;
|
||||
iconTheme = {
|
||||
name = "rose-pine";
|
||||
package = pkgs.rose-pine-icon-theme;
|
||||
};
|
||||
settings = lib.mkMerge [
|
||||
(import ./util/rose-pine-dunst.nix { theme = "default"; })
|
||||
{
|
||||
global = { offset = lib.mkForce "5x25"; };
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# xdg.configFile."dunst/dunstrc.d/50-theme.conf".source = inputs.dunst-theme.outPath + "/rose-pine.conf";
|
||||
};
|
||||
}
|
17
home/modules/easyeffects.nix
Normal file
17
home/modules/easyeffects.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.easyeffects;
|
||||
in
|
||||
{
|
||||
options.snowhawk.easyeffects = {
|
||||
enable = lib.mkEnableOption "easyeffects";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# for easyeffects
|
||||
dconf.enable = true;
|
||||
services.easyeffects.enable = true;
|
||||
};
|
||||
}
|
48
home/modules/filetypes.nix
Normal file
48
home/modules/filetypes.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let cfg = config.snowhawk.defaultPrograms;
|
||||
in {
|
||||
options.snowhawk.defaultPrograms = {
|
||||
enable = lib.mkEnableOption "default programs";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
xdg.mimeApps =
|
||||
let
|
||||
browser = "firefox.desktop";
|
||||
browserApps = [
|
||||
"application/pdf"
|
||||
"application/x-extension-htm"
|
||||
"application/x-extension-html"
|
||||
"application/x-extension-shtml"
|
||||
"application/x-extension-xht"
|
||||
"application/x-extension-xhtml"
|
||||
"application/xhtml+xml"
|
||||
"text/html"
|
||||
"x-scheme-handler/http"
|
||||
"x-scheme-handler/https"
|
||||
];
|
||||
|
||||
mimeAppsFor =
|
||||
value: list:
|
||||
lib.genAttrs list (name: value);
|
||||
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
defaultApplications = lib.mkMerge [
|
||||
(mimeAppsFor browser browserApps)
|
||||
|
||||
(mimeAppsFor "brave-browser.desktop" [
|
||||
"x-scheme-handler/chrome"
|
||||
])
|
||||
];
|
||||
associations.added = lib.mkMerge [
|
||||
(mimeAppsFor browser browserApps)
|
||||
];
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
DEFAULT_BROWSER = lib.getExe pkgs.firefox;
|
||||
};
|
||||
};
|
||||
}
|
50
home/modules/firefox.nix
Normal file
50
home/modules/firefox.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.firefox;
|
||||
in
|
||||
{
|
||||
options.snowhawk.firefox = {
|
||||
enable = lib.mkEnableOption "firefox home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
package = pkgs.firefox;
|
||||
|
||||
profiles.default = {
|
||||
isDefault = true;
|
||||
path = "x56262ch.default";
|
||||
userChrome = /* css */ ''
|
||||
#main-window[tabsintitlebar="true"]:not([extradragspace="true"]) #TabsToolbar > .toolbar-items {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#main-window:not([tabsintitlebar="true"]) #TabsToolbar {
|
||||
visibility: collapse !important;
|
||||
}
|
||||
|
||||
#titlebar {display: none !important;}
|
||||
#main-window {-moz-appearance:none !important;}
|
||||
|
||||
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
|
||||
display: none;
|
||||
}
|
||||
'';
|
||||
};
|
||||
profiles.alt = {
|
||||
id = 1;
|
||||
path = "05fb1no8.casualypurple";
|
||||
userChrome = config.programs.firefox.profiles.default.userChrome;
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
(writeShellScriptBin "alt-firefox" ''
|
||||
${lib.getExe config.programs.firefox.package} -P "alt"
|
||||
'')
|
||||
];
|
||||
};
|
||||
}
|
71
home/modules/fish.nix
Normal file
71
home/modules/fish.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
{ pkgs, inputs, config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.fish;
|
||||
macos = config.snowhawk.macos.enable;
|
||||
rust = config.snowhawk.rust.enable;
|
||||
in
|
||||
{
|
||||
options.snowhawk.fish = {
|
||||
enable = lib.mkEnableOption "fish";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
xdg.configFile."fish/completions/rustup.fish" = {
|
||||
enable = rust;
|
||||
source = ../completions/rustup.fish;
|
||||
};
|
||||
|
||||
programs.bash = lib.mkIf (!macos) {
|
||||
enable = true;
|
||||
initExtra = ''
|
||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||
then
|
||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
programs.zsh = lib.mkIf macos {
|
||||
enable = true;
|
||||
initExtra = ''
|
||||
if [[ $(${pkgs.procps}/bin/ps $(${pkgs.procps}/bin/ps -p $$ -co "ppid=") -co "comm=") != "fish" && -z ''${ZSH_EXECUTION_STRING} ]]
|
||||
then
|
||||
exec ${pkgs.fish}/bin/fish
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
shellAbbrs = lib.mkIf (!macos) {
|
||||
copy = "xclip -sel clip";
|
||||
};
|
||||
interactiveShellInit = lib.concatStringsSep "\n" [
|
||||
(builtins.readFile "${inputs.fish_theme}/fish_prompt.fish")
|
||||
(builtins.readFile ../fish/config.fish)
|
||||
# "${lib.getExe pkgs.any-nix-shell} fish --info-right | source"
|
||||
];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication {
|
||||
name = "lnmv";
|
||||
runtimeInputs = [ coreutils ];
|
||||
text = ''
|
||||
# This is crude i know, more shell guards and stuff that I'm bad at
|
||||
|
||||
# Usage:
|
||||
# lnmv <source> <target>
|
||||
|
||||
data=''${1%/}
|
||||
target=''${2%/}
|
||||
|
||||
mv "$data" "$target"
|
||||
ln -s "$target" "$data"
|
||||
'';
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
34
home/modules/flameshot.nix
Normal file
34
home/modules/flameshot.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.flameshot;
|
||||
in
|
||||
{
|
||||
options.snowhawk.flameshot = {
|
||||
enable = lib.mkEnableOption "flameshot home-manager module";
|
||||
|
||||
config = lib.mkOption {
|
||||
type = with lib.types; attrsOf attrs;
|
||||
description = "the flameshot config as an attrs of attrs";
|
||||
default = {
|
||||
General = {
|
||||
contrastOpacity = 188;
|
||||
contrastUiColor = "#8affc1";
|
||||
drawColor = "#00ff00";
|
||||
uiColor = "#007d96";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# home.packages = with pkgs; [ flameshot ];
|
||||
|
||||
# xdg.configFile."flameshot/flameshot.ini".text = lib.generators.toINI { } cfg.config;
|
||||
|
||||
services.flameshot = {
|
||||
enable = true;
|
||||
settings = cfg.config;
|
||||
};
|
||||
};
|
||||
}
|
95
home/modules/git.nix
Normal file
95
home/modules/git.nix
Normal file
|
@ -0,0 +1,95 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.git;
|
||||
macos = config.snowhawk.macos.enable;
|
||||
direnv = config.snowhawk.direnv.enable;
|
||||
|
||||
sshifyPushUrl =
|
||||
let
|
||||
urlParser = "${pkgs.url-parser}/bin/url-parser";
|
||||
git = "${pkgs.git}/bin/git";
|
||||
cut = "${pkgs.coreutils}/bin/cut";
|
||||
in
|
||||
pkgs.writeShellScriptBin "sshify-push-url" ''
|
||||
base=$(${urlParser} --url $(${git} remote get-url origin) host)
|
||||
path=$(${urlParser} --url $(${git} remote get-url origin) path | ${cut} -b 2-)
|
||||
echo "$base:$path"
|
||||
'';
|
||||
in
|
||||
{
|
||||
options.snowhawk.git = {
|
||||
enable = lib.mkEnableOption "git";
|
||||
oauth = lib.mkEnableOption "enable git-credential-oauth";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = lib.mkIf cfg.oauth [
|
||||
pkgs.git-credential-oauth
|
||||
];
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Zynh Ludwig";
|
||||
userEmail = "zynh0722@gmail.com";
|
||||
|
||||
ignores = [
|
||||
"Session.vim"
|
||||
(lib.mkIf macos ".DS_Store")
|
||||
(lib.mkIf direnv ".direnv/")
|
||||
(lib.mkIf direnv ".envrc")
|
||||
];
|
||||
|
||||
aliases = {
|
||||
co = "checkout";
|
||||
ci = "commit";
|
||||
st = "status";
|
||||
br = "branch";
|
||||
hist = "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short";
|
||||
type = "cat-file -t";
|
||||
dump = "cat-file -p";
|
||||
graph = "log --graph --decorate --pretty=oneline --abbrev-commit";
|
||||
|
||||
# Convert pull url into ssh push url
|
||||
sshify-push-url = ''
|
||||
!${pkgs.bash}/bin/bash -c "git remote set-url --push origin $(${sshifyPushUrl}/bin/sshify-push-url)"
|
||||
'';
|
||||
|
||||
# local patch-wise ignore workflow
|
||||
unchanged = "update-index --assume-unchanged";
|
||||
changed = "update-index --no-assume-unchanged";
|
||||
show-unchanged = ''
|
||||
!git ls-files -v | sed -e 's/^[a-z] //p; d'
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
safe.directory = "/etc/nixos";
|
||||
init.defaultBranch = "main";
|
||||
|
||||
core = {
|
||||
editor = "nvim";
|
||||
autocrlf = "input";
|
||||
safecrlf = true;
|
||||
};
|
||||
|
||||
pull.rebase = true;
|
||||
|
||||
credential = {
|
||||
helper = [
|
||||
"cache --timeout 7200"
|
||||
(lib.mkIf cfg.oauth "oauth")
|
||||
];
|
||||
|
||||
"https://git.zynh.me" = {
|
||||
oauthClientId = "13d5b95d-565d-4264-8961-c45cc38eaa8a";
|
||||
oauthScopes = "read_repository write_repository";
|
||||
oauthAuthURL = "/login/oauth/authorize";
|
||||
oauthTokenURL = "/login/oauth/access_token";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
51
home/modules/kitty.nix
Normal file
51
home/modules/kitty.nix
Normal file
|
@ -0,0 +1,51 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.kitty;
|
||||
macos = config.snowhawk.macos.enable;
|
||||
in
|
||||
{
|
||||
options.snowhawk.kitty = {
|
||||
enable = lib.mkEnableOption "kitty home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
|
||||
settings =
|
||||
let
|
||||
macos_fonts = {
|
||||
font_family = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Light\"";
|
||||
bold_font = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Regular\"";
|
||||
italic_font = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Light Italic\"";
|
||||
bold_italic_font = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Regular Italic\"";
|
||||
};
|
||||
linux_fonts = {
|
||||
font_family = "family=\"JetBrainsMono Nerd Font\" style=\"ExtraLight\"";
|
||||
bold_font = "family=\"JetBrainsMono Nerd Font\" style=\"Light\"";
|
||||
italic_font = "family=\"JetBrainsMono Nerd Font\" style=\"ExtraLight Italic\"";
|
||||
bold_italic_font = "family=\"JetBrainsMono Nerd Font\" style=\"Light Italic\"";
|
||||
};
|
||||
in
|
||||
{
|
||||
background = "#050505";
|
||||
background_opacity = 0.98;
|
||||
font_size = 12;
|
||||
|
||||
# allow_remote_control = "yes";
|
||||
} // (if !macos then linux_fonts else macos_fonts);
|
||||
|
||||
extraConfig =
|
||||
let
|
||||
kitten = "${pkgs.kitty}/bin/kitten";
|
||||
in
|
||||
''
|
||||
include ${../../home/kitty/alacritty-colors.conf}
|
||||
|
||||
# map ctrl+k ${pkgs.writeShellScript "kitten-snap" "${kitten} @ get-text --self --ansi > /tmp/test"}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
32
home/modules/lazygit.nix
Normal file
32
home/modules/lazygit.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.lazygit;
|
||||
in
|
||||
{
|
||||
options.snowhawk.lazygit = {
|
||||
enable = lib.mkEnableOption "lazygit";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = {
|
||||
customCommands = [{
|
||||
# We call this the double yoinky sploinky
|
||||
# https://github.com/jesseduffield/lazygit/wiki/Custom-Commands-Compendium#pushing-a-specific-commit
|
||||
key = "P";
|
||||
context = "commits";
|
||||
loadingText = "Pushing commit";
|
||||
description = "Push a specific commit (and any preceding)";
|
||||
stream = "yes";
|
||||
command = "git push {{.SelectedRemote.Name}} {{.SelectedLocalCommit.Sha}}:{{.SelectedLocalBranch.Name}}";
|
||||
}];
|
||||
services = {
|
||||
"git.zynh.me" = "gitea:git.zynh.me";
|
||||
"git.nullcube.net" = "gitea:git.nullcube.net";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
18
home/modules/lutris.nix
Normal file
18
home/modules/lutris.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.lutris;
|
||||
in
|
||||
{
|
||||
options.snowhawk.lutris = {
|
||||
enable = lib.mkEnableOption "lutris";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [
|
||||
pkgs.umu-launcher
|
||||
|
||||
pkgs.lutris
|
||||
];
|
||||
};
|
||||
}
|
7
home/modules/macos.nix
Normal file
7
home/modules/macos.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ lib, ... }:
|
||||
|
||||
{
|
||||
options.snowhawk.macos = {
|
||||
enable = lib.mkEnableOption "macos";
|
||||
};
|
||||
}
|
75
home/modules/neovim.nix
Normal file
75
home/modules/neovim.nix
Normal file
|
@ -0,0 +1,75 @@
|
|||
{ pkgs, lib, config, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.neovim;
|
||||
|
||||
nightlyNeovim = inputs.neovim-overlay.packages.${pkgs.system}.default;
|
||||
in
|
||||
{
|
||||
options.snowhawk.neovim = {
|
||||
enable = lib.mkEnableOption "neovim home-manager module";
|
||||
|
||||
nightly = lib.mkEnableOption "nightly build of neovim";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = with lib.types; package;
|
||||
default = if cfg.nightly then nightlyNeovim else pkgs.neovim-unwrapped;
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
let
|
||||
nvim-treesitter = pkgs.vimPlugins.nvim-treesitter;
|
||||
treesitterWithGrammars = nvim-treesitter.withAllGrammars;
|
||||
|
||||
treesitter-parsers = pkgs.symlinkJoin {
|
||||
name = "treesitter-parsers";
|
||||
paths = treesitterWithGrammars.dependencies;
|
||||
};
|
||||
in
|
||||
lib.mkIf cfg.enable {
|
||||
snowhawk.repo-clone.enable = true;
|
||||
repo-clone.repos = {
|
||||
"${config.home.homeDirectory}/.config/nvim".url = lib.zgitRepo "nvim";
|
||||
};
|
||||
|
||||
# Set nvim as manpager and default editor
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
MANPAGER = "nvim +Man!";
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/lua/parsers.lua".text = /* lua */ ''
|
||||
vim.opt.runtimepath:append ("${treesitter-parsers}")
|
||||
'';
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
coc.enable = false;
|
||||
package = cfg.package;
|
||||
withNodeJs = true;
|
||||
withPython3 = true;
|
||||
withRuby = true;
|
||||
|
||||
plugins = [
|
||||
treesitterWithGrammars
|
||||
];
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
marksman
|
||||
nil
|
||||
nixpkgs-fmt
|
||||
rustup
|
||||
lua-language-server
|
||||
fzf
|
||||
stylua
|
||||
taplo
|
||||
gnumake
|
||||
zig
|
||||
gcc
|
||||
clang-tools
|
||||
coreutils
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
22
home/modules/pipewire-controller.nix
Normal file
22
home/modules/pipewire-controller.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.pipewire-controller;
|
||||
in
|
||||
{
|
||||
options.snowhawk.pipewire-controller = {
|
||||
enable = lib.mkEnableOption "pipewire-controller home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
snowhawk.sxhkd.enable = lib.mkDefault true;
|
||||
|
||||
services.sxhkd.keybindings = lib.mkIf config.snowhawk.sxhkd.enable {
|
||||
"XF86TouchpadOn" = "${lib.getExe pkgs.pipewire-controller}";
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.bind = lib.mkIf config.wayland.windowManager.hyprland.enable [
|
||||
", XF86TouchpadOn, exec, ${lib.getExe pkgs.pipewire-controller}"
|
||||
];
|
||||
};
|
||||
}
|
32
home/modules/playerctl.nix
Normal file
32
home/modules/playerctl.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.playerctl;
|
||||
in
|
||||
{
|
||||
options.snowhawk.playerctl = {
|
||||
enable = lib.mkEnableOption "playerctl";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.playerctld.enable = true;
|
||||
systemd.user.services.playerctld = {
|
||||
Unit.PartOf = lib.mkForce [ "graphical-session.target" ];
|
||||
Install.WantedBy = lib.mkForce [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
playerctl
|
||||
];
|
||||
|
||||
snowhawk.sxhkd.enable = lib.mkDefault true;
|
||||
|
||||
services.sxhkd.keybindings =
|
||||
let playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||
in {
|
||||
"XF86AudioPlay" = "${playerctl} play-pause";
|
||||
"XF86AudioPrev" = "${playerctl} previous";
|
||||
"XF86AudioNext" = "${playerctl} next";
|
||||
};
|
||||
};
|
||||
}
|
22
home/modules/projects.nix
Normal file
22
home/modules/projects.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.projects;
|
||||
|
||||
link = config.lib.file.mkOutOfStoreSymlink;
|
||||
in
|
||||
{
|
||||
options.snowhawk.projects = {
|
||||
enable = lib.mkEnableOption "projects";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.file.projects.source = link "${config.home.homeDirectory}/Documents/projects/";
|
||||
|
||||
snowhawk.tmux.sessionizer.paths =
|
||||
let folder = config.home.file.projects.target;
|
||||
in [
|
||||
"~/${folder}"
|
||||
];
|
||||
};
|
||||
}
|
42
home/modules/rbw.nix
Normal file
42
home/modules/rbw.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.rbw;
|
||||
|
||||
rbw-fzf = pkgs.writeShellApplication {
|
||||
name = "rbw-fzf";
|
||||
runtimeInputs = with pkgs; [ rbw fzf perl findutils coreutils jq ];
|
||||
text = /*bash*/ ''
|
||||
rbw ls --fields name,user |
|
||||
sort -bi |
|
||||
perl -ple 's/^([^\t]*)\t([^\t]*)$/$1 ($2)/gm' |
|
||||
fzf --tmux --no-sort --with-shell='bash -c' \
|
||||
--preview="echo {} | perl -plE 's/^(.*) \((.*)?\)$/\"\$1\" \"\$2\"/' |
|
||||
xargs rbw get --full --raw | \
|
||||
jq --color-output 'if .data.password != \"\" then setpath([\"data\", \"password\"]; \"************\") else . end | del(.history) | del(.id) | walk(if type == \"object\" then map_values(. // empty) else . end)'" \
|
||||
--preview-label="Vault Item" --preview-window=wrap |
|
||||
perl -plE 's/^(.*) \((.*)?\)$/"$1" "$2"/' |
|
||||
xargs -r rbw get |
|
||||
xclip -sel copy
|
||||
'';
|
||||
};
|
||||
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
in
|
||||
{
|
||||
options.snowhawk.rbw = {
|
||||
enable = mkEnableOption "rbw home-manager module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.rbw.enable = true;
|
||||
|
||||
home.packages =
|
||||
|
||||
with pkgs; [
|
||||
rbw
|
||||
pinentry-tty
|
||||
rbw-fzf
|
||||
];
|
||||
};
|
||||
}
|
47
home/modules/redshift.nix
Normal file
47
home/modules/redshift.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.redshift;
|
||||
cfgDir = config.xdg.configHome + "/redshift";
|
||||
|
||||
sops = config.snowhawk.sops.enable;
|
||||
in
|
||||
{
|
||||
options.snowhawk.redshift = {
|
||||
enable = lib.mkEnableOption "redshift home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.user.services.redshift = {
|
||||
Unit = {
|
||||
Description = "redshift service";
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
After = lib.mkIf sops [ "sops-nix.service" ];
|
||||
};
|
||||
Service = {
|
||||
Type = "exec";
|
||||
ExecStart =
|
||||
let
|
||||
catFile = file: "\$(${pkgs.coreutils}/bin/cat ${file})";
|
||||
toPaths = deg: "${cfgDir}/${deg}";
|
||||
fetchLatLon = lib.right
|
||||
(lib.strings.concatStringsSep ":")
|
||||
(map catFile)
|
||||
(map toPaths)
|
||||
[ "lat" "lon" ];
|
||||
in
|
||||
''${pkgs.bash}/bin/bash -c "${pkgs.redshift}/bin/redshift -l ${fetchLatLon}"'';
|
||||
};
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
sops.secrets = lib.mkIf sops {
|
||||
"locations/snowhawk/lat".path = "${cfgDir}/lat";
|
||||
"locations/snowhawk/lon".path = "${cfgDir}/lon";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
redshift
|
||||
];
|
||||
};
|
||||
}
|
18
home/modules/repo-clone.nix
Normal file
18
home/modules/repo-clone.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ lib, config, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.repo-clone;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.repo-clone.homeManagerModule
|
||||
];
|
||||
|
||||
options.snowhawk.repo-clone = {
|
||||
enable = lib.mkEnableOption "repo-clone home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.user.startServices = "sd-switch";
|
||||
};
|
||||
}
|
33
home/modules/rust.nix
Normal file
33
home/modules/rust.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.rust;
|
||||
in
|
||||
{
|
||||
options.snowhawk.rust = {
|
||||
enable = lib.mkEnableOption "rust home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
snowhawk.direnv.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
rustup
|
||||
];
|
||||
|
||||
programs.bacon = {
|
||||
enable = true;
|
||||
settings = {
|
||||
keybindings = {
|
||||
esc = "back";
|
||||
g = "scroll-to-top";
|
||||
shift-g = "scroll-to-bottom";
|
||||
k = "scroll-lines(-1)";
|
||||
j = "scroll-lines(1)";
|
||||
ctrl-u = "scroll-page(-1)";
|
||||
ctrl-d = "scroll-page(1)";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
31
home/modules/satty.nix
Normal file
31
home/modules/satty.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
cfg = config.snowhawk.satty;
|
||||
in
|
||||
{
|
||||
options.snowhawk.satty = {
|
||||
enable = lib.mkEnableOption "satty module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
grim
|
||||
jq
|
||||
satty
|
||||
slurp
|
||||
wl-clipboard
|
||||
astal.river
|
||||
];
|
||||
|
||||
xdg.configFile = {
|
||||
"satty/config.toml".source = pkgs.writers.writeTOML "satty-config.toml" {
|
||||
general = {
|
||||
action-on-enter = "save-to-clipboard";
|
||||
copy-command = "${pkgs.wl-clipboard}/bin/wl-copy -t image/png";
|
||||
output-filename = "${config.home.homeDirectory}/Pictures/screenShots/screenshot-%FT%T.png";
|
||||
save-after-copy = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
28
home/modules/sops.nix
Normal file
28
home/modules/sops.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ lib, config, inputs, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.sops;
|
||||
home = config.home.homeDirectory;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
];
|
||||
|
||||
options.snowhawk.sops = {
|
||||
enable = lib.mkEnableOption "sops";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [
|
||||
pkgs.sops
|
||||
];
|
||||
|
||||
sops = {
|
||||
age.keyFile = "${home}/.config/sops/age/keys.txt";
|
||||
|
||||
defaultSopsFile = ../../secrets.yaml;
|
||||
validateSopsFiles = false;
|
||||
};
|
||||
};
|
||||
}
|
21
home/modules/sources.nix
Normal file
21
home/modules/sources.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ lib, inputs, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.sources;
|
||||
in
|
||||
{
|
||||
options.snowhawk.sources = {
|
||||
enable = lib.mkEnableOption "nix sources home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.file = {
|
||||
"src/nixpkgs".source = inputs.nixpkgs;
|
||||
"src/home-manager".source = inputs.home-manager;
|
||||
};
|
||||
|
||||
snowhawk.tmux.sessionizer.paths = [
|
||||
"~/src"
|
||||
];
|
||||
};
|
||||
}
|
71
home/modules/ssh.nix
Normal file
71
home/modules/ssh.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.ssh;
|
||||
sops = config.snowhawk.sops.enable;
|
||||
secrets = config.sops.secrets;
|
||||
|
||||
ifSops = lib.mkIf sops;
|
||||
|
||||
keyPathIfSops = key: ifSops secrets.${"private_keys/" + key}.path;
|
||||
in
|
||||
{
|
||||
options.snowhawk.ssh = {
|
||||
enable = lib.mkEnableOption "ssh";
|
||||
|
||||
homeNetwork = lib.mkEnableOption "include local hostnames for home network devices";
|
||||
};
|
||||
|
||||
config =
|
||||
let sshDir = config.home.homeDirectory + "/.ssh";
|
||||
in lib.mkIf cfg.enable {
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
includes = [ "conf.d/*" ];
|
||||
matchBlocks = rec {
|
||||
"git.zynh.me" = {
|
||||
hostname = "git.zynh.me";
|
||||
user = "git";
|
||||
port = 2221;
|
||||
identityFile = keyPathIfSops "personal_git";
|
||||
};
|
||||
"github.com" = {
|
||||
hostname = "github.com";
|
||||
user = "git";
|
||||
identityFile = keyPathIfSops "github";
|
||||
};
|
||||
snowhawk = {
|
||||
hostname = "192.168.0.22";
|
||||
user = "ravenshade";
|
||||
proxyJump = "ravenshade@permafrost";
|
||||
identityFile = keyPathIfSops "snowhawk";
|
||||
};
|
||||
permafrost = {
|
||||
hostname = "scarlet.zynh.me";
|
||||
user = "ravenshade";
|
||||
identityFile = keyPathIfSops "msiserver";
|
||||
};
|
||||
"permafrost.local" = lib.mkIf cfg.homeNetwork (permafrost // {
|
||||
hostname = "permafrost";
|
||||
});
|
||||
caveserver = {
|
||||
identityFile = keyPathIfSops "caveserver";
|
||||
};
|
||||
virtmsi = {
|
||||
hostname = "192.168.122.76";
|
||||
identityFile = keyPathIfSops "snowhawk";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sops.secrets = ifSops {
|
||||
"private_keys/msiserver" = { };
|
||||
"private_keys/caveserver" = { };
|
||||
"private_keys/snowhawk" = { };
|
||||
"private_keys/personal_git" = { };
|
||||
"private_keys/github" = { };
|
||||
|
||||
"ssh_hosts/caveserver".path = "${sshDir}/conf.d/caveserver_config";
|
||||
};
|
||||
};
|
||||
}
|
33
home/modules/sxhkd.nix
Normal file
33
home/modules/sxhkd.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.sxhkd;
|
||||
in
|
||||
{
|
||||
options.snowhawk.sxhkd = {
|
||||
enable = lib.mkEnableOption "custom sxhkd home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.user.services.sxhkd = {
|
||||
Unit = {
|
||||
Description = "sxhkd service";
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
Type = "exec";
|
||||
ExecStart = "${pkgs.sxhkd}/bin/sxhkd";
|
||||
};
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
xdg.configFile."sxhkd/sxhkdrc".text =
|
||||
lib.concatStringsSep "\n" (lib.mapAttrsToList
|
||||
(hotkey: command:
|
||||
lib.optionalString (command != null) ''
|
||||
${hotkey}
|
||||
${command}
|
||||
'')
|
||||
config.services.sxhkd.keybindings);
|
||||
};
|
||||
}
|
65
home/modules/theme.nix
Normal file
65
home/modules/theme.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.theme;
|
||||
in
|
||||
{
|
||||
options.snowhawk.theme = {
|
||||
enable = lib.mkEnableOption "theme";
|
||||
|
||||
cursor = lib.mkOption {
|
||||
default = true;
|
||||
example = false;
|
||||
description = "enable home.pointerCursor theme";
|
||||
type = lib.types.bool;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
package = pkgs.rose-pine-gtk-theme;
|
||||
name = "rose-pine";
|
||||
};
|
||||
iconTheme = {
|
||||
package = pkgs.rose-pine-icon-theme;
|
||||
name = "rose-pine-icons";
|
||||
};
|
||||
};
|
||||
|
||||
# Set system dark mode
|
||||
dconf.settings = {
|
||||
"org/freedesktop/appearance" = {
|
||||
color-scheme = 1;
|
||||
};
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
};
|
||||
};
|
||||
|
||||
home.pointerCursor = lib.mkIf cfg.cursor
|
||||
(
|
||||
let
|
||||
getFrom = url: hash: name: {
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
name = name;
|
||||
size = 24;
|
||||
package =
|
||||
pkgs.runCommand "moveUp" { } ''
|
||||
mkdir -p $out/share/icons
|
||||
ln -s ${pkgs.fetchzip {
|
||||
url = url;
|
||||
hash = hash;
|
||||
}} $out/share/icons/${name}
|
||||
'';
|
||||
};
|
||||
in
|
||||
getFrom
|
||||
"https://github.com/rose-pine/cursor/releases/download/v1.1.0/BreezeX-RosePine-Linux.tar.xz"
|
||||
"sha256-t5xwAPGhuQUfGThedLsmtZEEp1Ljjo3Udhd5Ql3O67c="
|
||||
"BreezeX-RosePine"
|
||||
);
|
||||
};
|
||||
}
|
20
home/modules/tldr.nix
Normal file
20
home/modules/tldr.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.tldr;
|
||||
in
|
||||
{
|
||||
options.snowhawk.tldr = {
|
||||
enable = lib.mkEnableOption "tldr";
|
||||
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.tealdeer = {
|
||||
enable = true;
|
||||
settings = {
|
||||
updates.auto_update = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
75
home/modules/tmux-sessionizer.nix
Normal file
75
home/modules/tmux-sessionizer.nix
Normal file
|
@ -0,0 +1,75 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) getExe;
|
||||
|
||||
cfg = config.snowhawk.tmux.sessionizer;
|
||||
tmuxCfg = config.snowhawk.tmux;
|
||||
|
||||
enable = cfg.enable && tmuxCfg.enable;
|
||||
|
||||
tmux-sessionizer = pkgs.writeShellApplication {
|
||||
name = "tmux-sessionizer";
|
||||
runtimeInputs = with pkgs; [ tmux fzf findutils coreutils procps ];
|
||||
text = ''
|
||||
if [[ $# -eq 1 ]]; then
|
||||
selected=$1
|
||||
else
|
||||
selected=$(find -L ${lib.concatStringsSep " " cfg.paths} -mindepth 1 -maxdepth 1 -type d \
|
||||
| fzf --tmux center --preview="ls {} --color || true")
|
||||
fi
|
||||
|
||||
if [[ -z $selected ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
selected_name=$(basename "$selected" | tr . _)
|
||||
tmux_running=$(pgrep tmux)
|
||||
|
||||
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
|
||||
tmux new-session -s "$selected_name" -c "$selected"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! tmux has-session -t="$selected_name" 2>/dev/null; then
|
||||
tmux new-session -ds "$selected_name" -c "$selected"
|
||||
fi
|
||||
|
||||
tmux switch-client -t "$selected_name"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
options.snowhawk.tmux.sessionizer = {
|
||||
enable = lib.mkEnableOption "tmux-sessionizer home-manager module";
|
||||
|
||||
paths = lib.mkOption {
|
||||
type = with lib.types; listOf str;
|
||||
description = ''
|
||||
list of paths to select with tmux-sessionizer
|
||||
'';
|
||||
default = [ ];
|
||||
example = [
|
||||
"~"
|
||||
"~/projects"
|
||||
"~/src"
|
||||
];
|
||||
};
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = tmux-sessionizer;
|
||||
description = ''
|
||||
tmux-sessionizer binary package
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf enable {
|
||||
home.packages = [ cfg.package ];
|
||||
|
||||
programs.tmux.extraConfig = ''
|
||||
bind-key -r f run-shell "tmux neww ${getExe cfg.package}"
|
||||
'';
|
||||
};
|
||||
}
|
52
home/modules/tmux.nix
Normal file
52
home/modules/tmux.nix
Normal file
|
@ -0,0 +1,52 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) getExe;
|
||||
|
||||
cfg = config.snowhawk.tmux;
|
||||
macos = config.snowhawk.macos.enable;
|
||||
in
|
||||
{
|
||||
options.snowhawk.tmux = {
|
||||
enable = lib.mkEnableOption "tmux";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
shell = getExe (if macos then pkgs.zsh else pkgs.fish);
|
||||
# shell = if macos then "/bin/zsh" else (getExe pkgs.fish);
|
||||
# shell = getExe pkgs.fish;
|
||||
mouse = true;
|
||||
baseIndex = 1;
|
||||
terminal = "screen-256color";
|
||||
newSession = true;
|
||||
escapeTime = 0;
|
||||
|
||||
plugins = with pkgs; [
|
||||
{
|
||||
plugin = tmuxPlugins.rose-pine;
|
||||
extraConfig = ''
|
||||
set -g @rose_pine_variant 'main' # Options are 'main', 'moon' or 'dawn'
|
||||
set -g @rose_pine_host 'on'
|
||||
set -g @rose_pine_date_time '%c' # %c is a good value but
|
||||
'';
|
||||
}
|
||||
{ plugin = tmuxPlugins.vim-tmux-navigator; }
|
||||
];
|
||||
|
||||
extraConfig = ''
|
||||
set-option -g renumber-windows on
|
||||
set-option -g focus-events on
|
||||
set-option -g terminal-features 'alacritty:RGB'
|
||||
|
||||
bind '"' split-window -v -c "#{pane_current_path}"
|
||||
bind % split-window -h -c "#{pane_current_path}"
|
||||
'';
|
||||
};
|
||||
|
||||
programs.fish.shellAbbrs = {
|
||||
a = "tmux a";
|
||||
};
|
||||
};
|
||||
}
|
35
home/modules/user.nix
Normal file
35
home/modules/user.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.user;
|
||||
in
|
||||
{
|
||||
options.snowhawk.user = {
|
||||
enable = lib.mkEnableOption "user";
|
||||
|
||||
username = lib.mkOption {
|
||||
default = "ravenshade";
|
||||
example = "zynh";
|
||||
description = "the username to use. also defines the default home folder as /home/\${username}";
|
||||
type = lib.types.str;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.username = lib.mkDefault cfg.username;
|
||||
home.homeDirectory = lib.mkDefault "/home/${cfg.username}";
|
||||
|
||||
home.packages = with pkgs; [ comma ];
|
||||
|
||||
home.sessionPath = [
|
||||
"${config.home.homeDirectory}/.cargo/bin"
|
||||
"${config.home.homeDirectory}/.dotnet/tools"
|
||||
"${config.home.homeDirectory}/.local/bin"
|
||||
];
|
||||
|
||||
snowhawk.tmux.sessionizer.paths = [
|
||||
"~"
|
||||
"~/.config"
|
||||
];
|
||||
};
|
||||
}
|
73
home/modules/util/rose-pine-dunst.nix
Normal file
73
home/modules/util/rose-pine-dunst.nix
Normal file
|
@ -0,0 +1,73 @@
|
|||
{ theme ? "default" }:
|
||||
|
||||
let
|
||||
configs = {
|
||||
default = {
|
||||
global = { background = "#26233a"; foreground = "#e0def4"; };
|
||||
urgency_low = { background = "#26273d"; highlight = "#31748f"; };
|
||||
urgency_normal = { background = "#362e3c"; highlight = "#f6c177"; };
|
||||
urgency_critical = { background = "#362e3c"; highlight = "#eb6f92"; };
|
||||
};
|
||||
|
||||
moon = {
|
||||
global = { background = "#393552"; foreground = "#e0def4"; };
|
||||
urgency_low = { background = "#393955"; highlight = "#3e8fb0"; };
|
||||
urgency_normal = { background = "#443c53"; highlight = "#f6c177"; };
|
||||
urgency_critical = { background = "#433754"; highlight = "#eb6f92"; };
|
||||
};
|
||||
|
||||
dawn = {
|
||||
global = { background = "#f2e9e1"; foreground = "#393552"; };
|
||||
urgency_low = { background = "#e7e0da"; highlight = "#286983"; };
|
||||
urgency_normal = { background = "#3e8fb0"; highlight = "#ea9d34"; };
|
||||
urgency_critical = { background = "#ede0d9"; highlight = "#b4637a"; };
|
||||
};
|
||||
};
|
||||
|
||||
formatWithColor = color: "<b><span foreground='${color}'>%s</span></b>\n%b";
|
||||
|
||||
getConfig = name:
|
||||
if name == "moon" then configs.moon
|
||||
else if name == "dawn" then configs.dawn
|
||||
else configs.default;
|
||||
|
||||
selectedConfig = getConfig theme;
|
||||
|
||||
urgencyIcons = {
|
||||
urgency_low = "dialog-information";
|
||||
urgency_normal = "dialog-warning";
|
||||
urgency_critical = "dialog-error";
|
||||
};
|
||||
|
||||
urgencyColors =
|
||||
builtins.listToAttrs (map
|
||||
(urgency: {
|
||||
name = urgency;
|
||||
value = rec {
|
||||
inherit (selectedConfig.${urgency}) background highlight;
|
||||
frame_color = highlight;
|
||||
default_icon = urgencyIcons.${urgency};
|
||||
format = formatWithColor highlight;
|
||||
};
|
||||
})
|
||||
[ "urgency_low" "urgency_normal" "urgency_critical" ]);
|
||||
in
|
||||
{
|
||||
global = {
|
||||
width = 400;
|
||||
offset = "5x5";
|
||||
progress_bar_min_width = 380;
|
||||
progress_bar_max_width = 380;
|
||||
progress_bar_corner_radius = 2;
|
||||
|
||||
padding = 10;
|
||||
horizontal_padding = 10;
|
||||
frame_width = 1;
|
||||
gap_size = 3;
|
||||
font = "Monospace 14";
|
||||
|
||||
icon_theme = "rose-pine-icons";
|
||||
enable_recursive_icon_lookup = true;
|
||||
corner_radius = 2;
|
||||
} // selectedConfig.global;
|
||||
} // urgencyColors
|
33
home/modules/wezterm.nix
Normal file
33
home/modules/wezterm.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.wezterm;
|
||||
macos = config.snowhawk.macos.enable;
|
||||
in
|
||||
{
|
||||
options.snowhawk.wezterm = {
|
||||
enable = lib.mkEnableOption "kitty home-manager module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
wezterm
|
||||
fd
|
||||
];
|
||||
|
||||
programs.wezterm = {
|
||||
enable = true;
|
||||
extraConfig = /* lua */''
|
||||
return require 'modules'
|
||||
'';
|
||||
};
|
||||
|
||||
xdg.configFile = {
|
||||
wezterm = {
|
||||
source = ../../home/wezterm;
|
||||
recursive = true;
|
||||
executable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
31
home/modules/xivlauncher.nix
Normal file
31
home/modules/xivlauncher.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.xivlauncher;
|
||||
in
|
||||
{
|
||||
options.snowhawk.xivlauncher = {
|
||||
enable = lib.mkEnableOption "xivlauncher home-manager module";
|
||||
|
||||
textools.enable = lib.mkEnableOption "TexTools wine application";
|
||||
};
|
||||
|
||||
config =
|
||||
let launchffxiv = "${pkgs.xivlauncher}/bin/XIVLauncher.Core";
|
||||
in lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
xivlauncher
|
||||
# fflogs
|
||||
|
||||
(writeShellScriptBin "iinact" ''
|
||||
${pkgs.brave}/bin/brave --new-window "http://proxy.iinact.com/overlay/skyline/?OVERLAY_WS=ws://127.0.0.1:10501/ws"
|
||||
'')
|
||||
|
||||
# (lib.mkIf cfg.textools.enable pkgs.wrapWine {
|
||||
# # https://gist.github.com/helpful-fox-senko-san/6238143f5c7352ab44e62c5a0f7f7642
|
||||
# name = "textools";
|
||||
# tricks = [ "dotnet48" "dxvk" ];
|
||||
# })
|
||||
] ++ map (name: (writeShellScriptBin name launchffxiv)) [ "ff14" "xivlauncher" ];
|
||||
};
|
||||
}
|
50
home/wezterm/modules/colors.lua
Normal file
50
home/wezterm/modules/colors.lua
Normal file
|
@ -0,0 +1,50 @@
|
|||
local wezterm = require("wezterm")
|
||||
|
||||
-- This is the M table that we will export
|
||||
local M = {}
|
||||
|
||||
-- define a function in the M table.
|
||||
-- Only functions defined in `M` will be exported to
|
||||
-- code that imports this M.
|
||||
-- The suggested convention for making Ms that update
|
||||
-- the config is for them to export an `apply_to_config`
|
||||
-- function that accepts the config object, like this:
|
||||
function M.apply_to_config(config)
|
||||
config.colors = {
|
||||
foreground = "#d8d8d8",
|
||||
background = "#050505",
|
||||
|
||||
selection_fg = "#e0def4",
|
||||
selection_bg = "#403d52",
|
||||
|
||||
cursor_bg = "#524f67",
|
||||
cursor_fg = "#e0def4",
|
||||
|
||||
cursor_border = "#524f67",
|
||||
|
||||
ansi = {
|
||||
"#181818",
|
||||
"#ac4242",
|
||||
"#90a959",
|
||||
"#f4bf75",
|
||||
"#6a8fb5",
|
||||
"#aa759f",
|
||||
"#75b5aa",
|
||||
"#d8d8d8",
|
||||
},
|
||||
|
||||
brights = {
|
||||
"#6b6b6b",
|
||||
"#c55555",
|
||||
"#aac474",
|
||||
"#fcea88",
|
||||
"#82b8c8",
|
||||
"#c28cb8",
|
||||
"#93d3c3",
|
||||
"#f8f8f8",
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
-- return our M table
|
||||
return M
|
49
home/wezterm/modules/init.lua
Normal file
49
home/wezterm/modules/init.lua
Normal file
|
@ -0,0 +1,49 @@
|
|||
local wezterm = require("wezterm")
|
||||
local config = wezterm.config_builder()
|
||||
|
||||
local colors = require("modules/colors")
|
||||
colors.apply_to_config(config)
|
||||
|
||||
config.unix_domains = { { name = "unix" } }
|
||||
config.default_gui_startup_args = { "connect", "unix" }
|
||||
|
||||
config.font = wezterm.font("JetBrainsMono Nerd Font")
|
||||
|
||||
config.use_fancy_tab_bar = false
|
||||
config.tab_bar_at_bottom = true
|
||||
|
||||
-- https://github.com/wez/wezterm/issues/5990
|
||||
config.front_end = "WebGpu"
|
||||
|
||||
local act = wezterm.action
|
||||
local sessionizer = require("modules/sessionizer")
|
||||
local navigator = require("modules/navigator")
|
||||
|
||||
-- timeout_milliseconds defaults to 1000 and can be omitted
|
||||
config.leader = { key = "b", mods = "CTRL", timeout_milliseconds = 1000 }
|
||||
|
||||
config.keys = {
|
||||
{ key = "b", mods = "LEADER|CTRL", action = act.ActivateLastTab },
|
||||
{ key = "p", mods = "LEADER", action = act.ActivateTabRelative(-1) },
|
||||
{ key = "p", mods = "LEADER|CTRL", action = act.ActivateTabRelative(-1) },
|
||||
{ key = "n", mods = "LEADER", action = act.ActivateTabRelative(1) },
|
||||
{ key = "n", mods = "LEADER|CTRL", action = act.ActivateTabRelative(1) },
|
||||
{ key = "s", mods = "LEADER", action = act.ShowLauncherArgs({ flags = "WORKSPACES" }) },
|
||||
|
||||
{ key = "\\", mods = "LEADER", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) },
|
||||
{ key = "-", mods = "LEADER", action = act.SplitVertical({ domain = "CurrentPaneDomain" }) },
|
||||
{ key = "c", mods = "LEADER", action = act.SpawnTab("CurrentPaneDomain") },
|
||||
|
||||
{ key = "a", mods = "LEADER", action = act.AttachDomain("unix") },
|
||||
{ key = "d", mods = "LEADER|CTRL", action = act.DetachDomain("CurrentPaneDomain") },
|
||||
|
||||
-- Integration with neovim panes
|
||||
-- { key = "h", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-left") },
|
||||
-- { key = "j", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-down") },
|
||||
-- { key = "k", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-up") },
|
||||
-- { key = "l", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-right") },
|
||||
|
||||
{ key = "f", mods = "LEADER", action = wezterm.action_callback(sessionizer.toggle) },
|
||||
}
|
||||
|
||||
return config
|
53
home/wezterm/modules/navigator.lua
Normal file
53
home/wezterm/modules/navigator.lua
Normal file
|
@ -0,0 +1,53 @@
|
|||
local wezterm = require("wezterm")
|
||||
local M = {}
|
||||
|
||||
-- https://github.com/lrvdijk/dotfiles/blob/master/wezterm/wezterm.lua
|
||||
-- Integration with neovim panes
|
||||
function M.isViProcess(pane)
|
||||
-- get_foreground_process_name On Linux, macOS and Windows,
|
||||
-- the process can be queried to determine this path. Other operating systems
|
||||
-- (notably, FreeBSD and other unix systems) are not currently supported
|
||||
-- return pane:get_foreground_process_name():find('n?vim') ~= nil
|
||||
-- Use get_title as it works for multiplexed sessions too
|
||||
return pane:get_title():find("n?vim") ~= nil
|
||||
end
|
||||
|
||||
function M.conditionalActivatePane(window, pane, pane_direction, vim_direction)
|
||||
local vim_pane_changed = false
|
||||
|
||||
if M.isViProcess(pane) then
|
||||
local before = pane:get_cursor_position()
|
||||
window:perform_action(
|
||||
-- This should match the keybinds you set in Neovim.
|
||||
wezterm.action.SendKey({ key = vim_direction, mods = "CTRL" }),
|
||||
pane
|
||||
)
|
||||
wezterm.sleep_ms(50)
|
||||
local after = pane:get_cursor_position()
|
||||
|
||||
if before.x ~= after.x and before.y ~= after.y then
|
||||
vim_pane_changed = true
|
||||
end
|
||||
end
|
||||
|
||||
if not vim_pane_changed then
|
||||
window:perform_action(wezterm.action.ActivatePaneDirection(pane_direction), pane)
|
||||
end
|
||||
end
|
||||
|
||||
function M.apply_to_config(config)
|
||||
wezterm.on("ActivatePaneDirection-right", function(window, pane)
|
||||
M.conditionalActivatePane(window, pane, "Right", "l")
|
||||
end)
|
||||
wezterm.on("ActivatePaneDirection-left", function(window, pane)
|
||||
M.conditionalActivatePane(window, pane, "Left", "h")
|
||||
end)
|
||||
wezterm.on("ActivatePaneDirection-up", function(window, pane)
|
||||
M.conditionalActivatePane(window, pane, "Up", "k")
|
||||
end)
|
||||
wezterm.on("ActivatePaneDirection-down", function(window, pane)
|
||||
M.conditionalActivatePane(window, pane, "Down", "j")
|
||||
end)
|
||||
end
|
||||
|
||||
return M
|
52
home/wezterm/modules/sessionizer.lua
Normal file
52
home/wezterm/modules/sessionizer.lua
Normal file
|
@ -0,0 +1,52 @@
|
|||
local wezterm = require("wezterm")
|
||||
local act = wezterm.action
|
||||
|
||||
local M = {}
|
||||
|
||||
local fd = "/home/ravenshade/.nix-profile/bin/fd"
|
||||
|
||||
M.toggle = function(window, pane)
|
||||
local projects = {}
|
||||
|
||||
local success, stdout, stderr = wezterm.run_child_process({
|
||||
fd,
|
||||
"-HI",
|
||||
"^.git$",
|
||||
"--max-depth=4",
|
||||
"--prune",
|
||||
os.getenv("HOME") .. "/projects",
|
||||
os.getenv("HOME") .. "/.config",
|
||||
os.getenv("HOME") .. "/src",
|
||||
})
|
||||
|
||||
if not success then
|
||||
wezterm.log_error("Failed to run fd: " .. stderr)
|
||||
return
|
||||
end
|
||||
|
||||
for line in stdout:gmatch("([^\n]*)\n?") do
|
||||
local project = line:gsub("/.git.*$", "")
|
||||
local label = project
|
||||
local id = project:gsub(".*/", "")
|
||||
table.insert(projects, { label = tostring(label), id = tostring(id) })
|
||||
end
|
||||
|
||||
window:perform_action(
|
||||
act.InputSelector({
|
||||
action = wezterm.action_callback(function(win, _, id, label)
|
||||
if not id and not label then
|
||||
wezterm.log_info("Cancelled")
|
||||
else
|
||||
wezterm.log_info("Selected " .. label)
|
||||
win:perform_action(act.SwitchToWorkspace({ name = id, spawn = { cwd = label } }), pane)
|
||||
end
|
||||
end),
|
||||
fuzzy = true,
|
||||
title = "Select project",
|
||||
choices = projects,
|
||||
}),
|
||||
pane
|
||||
)
|
||||
end
|
||||
|
||||
return M
|
30
hosts/caveserver/home.nix
Normal file
30
hosts/caveserver/home.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{ pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../home/modules
|
||||
];
|
||||
|
||||
snowhawk.neovim = {
|
||||
enable = true;
|
||||
package = inputs.neovim-overlay.packages.${pkgs.system}.default;
|
||||
};
|
||||
snowhawk.ssh.enable = true;
|
||||
|
||||
snowhawk.user.username = "val";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nix-output-monitor
|
||||
(writeShellScriptBin "rebuild" ''
|
||||
home-manager switch -v |& nom
|
||||
'')
|
||||
|
||||
go
|
||||
rustup
|
||||
fzf
|
||||
];
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
home.stateVersion = "23.11";
|
||||
}
|
122
hosts/llynx/configuration.nix
Normal file
122
hosts/llynx/configuration.nix
Normal file
|
@ -0,0 +1,122 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running `nixos-help`).
|
||||
|
||||
{ pkgs, inputs, lib, config, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.nixos-apple-silicon.nixosModules.default
|
||||
inputs.home-manager.nixosModules.default
|
||||
../../modules
|
||||
|
||||
# Default specialisation
|
||||
({ lib, config, ... }: {
|
||||
config = lib.mkIf (config.specialisation != { }) {
|
||||
snowhawk.hyprland.enable = true;
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
# boot.binfmt.emulatedSystems = [
|
||||
# "x86_64-linux"
|
||||
# "i686-linux"
|
||||
# ];
|
||||
|
||||
# Install/enable all proprietary firmware
|
||||
# hardware.enableAllFirmware = true;
|
||||
|
||||
environment.sessionVariables.MOZ_GMP_PATH = [
|
||||
"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm/manifest.json"
|
||||
];
|
||||
|
||||
snowhawk = {
|
||||
filesystem.enable = true;
|
||||
user.enable = true;
|
||||
env.enable = true;
|
||||
sops.enable = true;
|
||||
|
||||
audio.enable = true;
|
||||
};
|
||||
|
||||
snowhawk.plymouth = {
|
||||
enable = true;
|
||||
theme = "owl";
|
||||
};
|
||||
|
||||
specialisation = {
|
||||
plasma.configuration = {
|
||||
environment.etc."specialisation".text = "plasma";
|
||||
|
||||
services.xserver.enable = true;
|
||||
services.displayManager.sddm.enable = true;
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
services.hypridle.enable = true;
|
||||
systemd.user.services.hypridle.path = [ pkgs.brightnessctl ];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
documentation = {
|
||||
enable = true;
|
||||
dev.enable = true;
|
||||
man.enable = true;
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
users = { "ravenshade" = import ./home.nix; };
|
||||
backupFileExtension = "backup";
|
||||
useGlobalPkgs = true;
|
||||
};
|
||||
|
||||
# programs.steam.enable = true;
|
||||
# hardware.graphics.enable32Bit = lib.mkForce false;
|
||||
|
||||
services.flatpak.enable = true;
|
||||
systemd.services.flatpak-repo = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.flatpak ];
|
||||
script = ''
|
||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
pkgs.rose-pine-gtk-theme
|
||||
pkgs.rose-pine-icon-theme
|
||||
pkgs.adwaita-icon-theme
|
||||
|
||||
neovim
|
||||
bashmount
|
||||
curl
|
||||
git
|
||||
killall
|
||||
|
||||
iwd
|
||||
iwgtk
|
||||
|
||||
gparted
|
||||
exfatprogs
|
||||
|
||||
linux-manual
|
||||
|
||||
inputs.nh.packages.${pkgs.system}.default
|
||||
];
|
||||
|
||||
environment.variables.NH_FLAKE = "/home/ravenshade/.config/nixos";
|
||||
environment.variables.NIXOS_OZONE_WL = 1;
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.jetbrains-mono
|
||||
];
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Los_Angeles";
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.11"; # Did you read the comment?
|
||||
}
|
BIN
hosts/llynx/firmware/all_firmware.tar.gz
Executable file
BIN
hosts/llynx/firmware/all_firmware.tar.gz
Executable file
Binary file not shown.
BIN
hosts/llynx/firmware/kernelcache.release.mac14g
Executable file
BIN
hosts/llynx/firmware/kernelcache.release.mac14g
Executable file
Binary file not shown.
77
hosts/llynx/hardware-configuration.nix
Normal file
77
hosts/llynx/hardware-configuration.nix
Normal file
|
@ -0,0 +1,77 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "usb_storage" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
# FIXME: was previously only "apple_dcp.show_notch=1"
|
||||
# wish I could predict the commit hash
|
||||
boot.kernelParams = lib.mkForce [
|
||||
"earlycon"
|
||||
"console=tty0"
|
||||
"boot.shell_on_fail"
|
||||
"nvme_apple.flush_interval=0"
|
||||
"quiet"
|
||||
"splash"
|
||||
"boot.shell_on_fail"
|
||||
"loglevel=3"
|
||||
"rd.systemd.show_status=false"
|
||||
"rd.udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
"apple_dcp.show_notch=1"
|
||||
"root=fstab"
|
||||
"splash"
|
||||
"loglevel=0"
|
||||
];
|
||||
|
||||
hardware.asahi.peripheralFirmwareDirectory = ./firmware;
|
||||
hardware.asahi.useExperimentalGPUDriver = true;
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/9dba1955-a00b-4963-ac49-74e925ddd1b2";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/C215-0A0E";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
|
||||
zramSwap.enable = true;
|
||||
swapDevices = [{
|
||||
device = "/swap";
|
||||
size = 24 * 1000;
|
||||
}];
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
device = "nodev";
|
||||
theme = pkgs.rose-pine-grub;
|
||||
};
|
||||
boot.loader.efi.canTouchEfiVariables = false;
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
|
||||
|
||||
networking.wireless.iwd = {
|
||||
enable = true;
|
||||
settings.General.EnableNetworkConfiguration = true;
|
||||
};
|
||||
|
||||
networking.hostName = "llynx";
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
|
||||
}
|
93
hosts/llynx/home.nix
Normal file
93
hosts/llynx/home.nix
Normal file
|
@ -0,0 +1,93 @@
|
|||
{ pkgs, config, lib, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../home/modules
|
||||
];
|
||||
|
||||
snowhawk = {
|
||||
# Desktop
|
||||
firefox.enable = true;
|
||||
kitty.enable = true;
|
||||
theme.enable = true;
|
||||
sops.enable = true;
|
||||
# dunst.enable = true;
|
||||
|
||||
flameshot.enable = true;
|
||||
|
||||
sources.enable = true;
|
||||
projects.enable = true;
|
||||
|
||||
# Term Tools
|
||||
neovim.enable = true;
|
||||
direnv.enable = true;
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.monitor = [ ",preferred,auto,auto" ];
|
||||
|
||||
snowhawk.ssh = {
|
||||
enable = true;
|
||||
homeNetwork = true;
|
||||
};
|
||||
|
||||
repo-clone.enable = true;
|
||||
repo-clone.repos = {
|
||||
"${config.home.homeDirectory}/Pictures/backgrounds".url = lib.zgitRepo "backgrounds";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
bottom
|
||||
|
||||
ncspot
|
||||
|
||||
vesktop
|
||||
ripgrep
|
||||
|
||||
lazygit
|
||||
iwd
|
||||
|
||||
gcc
|
||||
|
||||
wl-clipboard
|
||||
|
||||
unzip
|
||||
fzf
|
||||
tree
|
||||
|
||||
pulsemixer
|
||||
|
||||
duf
|
||||
pcmanfm
|
||||
jq
|
||||
|
||||
advantagescope
|
||||
wpilib.glass
|
||||
wpilib.shuffleboard
|
||||
wpilib.datalogtool
|
||||
elastic-dashboard
|
||||
pathplanner
|
||||
# inputs.frc-nix.packages."x86_64-linux".pathplanner
|
||||
|
||||
box64
|
||||
openjdk17-bootstrap
|
||||
(vscode-with-extensions.override {
|
||||
vscodeExtensions = with vscode-extensions; [
|
||||
wpilibsuite.vscode-wpilib
|
||||
vscjava.vscode-java-debug
|
||||
vscjava.vscode-java-dependency
|
||||
redhat.java
|
||||
|
||||
vscodevim.vim
|
||||
mvllow.rose-pine
|
||||
eamodio.gitlens
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
programs.nix-index.enable = true;
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
home.stateVersion = "23.11";
|
||||
}
|
||||
|
199
hosts/lynx/configuration.nix
Normal file
199
hosts/lynx/configuration.nix
Normal file
|
@ -0,0 +1,199 @@
|
|||
{ pkgs, lib, self, inputs, ... }: {
|
||||
# List packages installed in system profile. To search by name, run:
|
||||
# $ nix-env -qaP | grep wget
|
||||
environment.systemPackages = [
|
||||
inputs.nh.packages.${pkgs.system}.default
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
nix.optimise.automatic = true;
|
||||
|
||||
environment.variables = {
|
||||
NH_FLAKE = "/Users/ravenshade/nixos";
|
||||
};
|
||||
|
||||
environment.shells = with pkgs; [ bashInteractive zsh fish ];
|
||||
|
||||
# Enable alternative shell support in nix-darwin.
|
||||
# programs.fish.enable = true;
|
||||
|
||||
services.yabai =
|
||||
let
|
||||
gap = 10;
|
||||
|
||||
gapListParts = builtins.map
|
||||
(x: lib.attrsets.nameValuePair (x + "_padding") gap)
|
||||
[ "top" "bottom" "left" "right" ];
|
||||
|
||||
gapSettings = (builtins.listToAttrs gapListParts) // { window_gap = gap; };
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
enableScriptingAddition = true;
|
||||
config = {
|
||||
layout = "bsp";
|
||||
window_shadow = "float";
|
||||
|
||||
mouse_modifier = "fn";
|
||||
mouse_action1 = "move";
|
||||
mouse_action2 = "resize";
|
||||
focus_follows_mouse = "autoraise";
|
||||
mouse_follows_focus = "off";
|
||||
window_topmost = "off";
|
||||
} // gapSettings;
|
||||
extraConfig = ''
|
||||
yabai -m rule --add app="^System Settings$" manage=off
|
||||
yabai -m rule --add app="Python" manage=off
|
||||
yabai -m rule --add app="macroquad_playground" manage=off
|
||||
yabai -m rule --add app="^coreautha$" manage=off
|
||||
yabai -m rule --add app="^Robot Simulation$" manage=off
|
||||
'';
|
||||
};
|
||||
|
||||
services.skhd =
|
||||
let
|
||||
yabaiSwapToFullscreen = pkgs.writeShellApplication {
|
||||
name = "yabai-swap-to-fullscreen";
|
||||
runtimeInputs = [ pkgs.jq pkgs.yabai ];
|
||||
text = ''
|
||||
focus() {
|
||||
yabai -m space --focus "$1"
|
||||
}
|
||||
|
||||
get_fs_displays() {
|
||||
yabai -m query --spaces | jq -c 'map(select(."is-native-fullscreen" == true))'
|
||||
}
|
||||
|
||||
get_visible() {
|
||||
printf '%s' "$1" | jq -c 'map(select(."is-visible" == true))'
|
||||
}
|
||||
|
||||
is_empty() {
|
||||
length="$(printf '%s' "$1" | jq 'length')"
|
||||
[ "$length" -le 0 ]
|
||||
}
|
||||
|
||||
first() {
|
||||
printf '%s' "$1" | jq 'sort_by(.index) | .[0].index'
|
||||
}
|
||||
|
||||
try_focus_visible() {
|
||||
# This should be at max length 1. Though this may likely break in a multimonitor environment
|
||||
visible_fullscreen_displays=$(get_visible "$1")
|
||||
|
||||
if ! is_empty "$visible_fullscreen_displays"; then
|
||||
visible_index=$(printf '%s' "$visible_fullscreen_displays" | jq -c '.[0].index')
|
||||
next_index=$((visible_index + 1))
|
||||
if [ "$(printf '%s' "$fullscreen_displays" | jq "map(select(.index == $next_index)) | length")" -gt "0" ]; then
|
||||
focus "$next_index"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
main() {
|
||||
fullscreen_displays="$(get_fs_displays)"
|
||||
|
||||
is_empty "$fullscreen_displays" && focus 1 && return 1
|
||||
|
||||
try_focus_visible "$fullscreen_displays" && return 1
|
||||
|
||||
focus "$(first "$fullscreen_displays")"
|
||||
}
|
||||
|
||||
main
|
||||
'';
|
||||
};
|
||||
|
||||
# Idk if macos' 'open' is something I can find in nixpkgs lmfao
|
||||
newAlacrityWindow = pkgs.writeShellApplication {
|
||||
name = "new-alacritty-window";
|
||||
runtimeInputs = [ pkgs.alacritty ];
|
||||
text = ''
|
||||
alacritty_output=$(alacritty msg create-window 2>/dev/null)
|
||||
|
||||
if [ -z "$alacritty_output" ]; then
|
||||
open /Applications/Alacritty.app
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
session = pkgs.writeText "main-kitty-session" ''
|
||||
cd /Users/zynh
|
||||
'';
|
||||
|
||||
yabai = lib.getExe pkgs.yabai;
|
||||
kitty = lib.getExe pkgs.kitty;
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
skhdConfig = ''
|
||||
# float / unfloat window and center on screen
|
||||
alt - t : ${yabai} -m window --toggle float --grid 4:4:1:1:2:2
|
||||
|
||||
# open terminal window using shell script
|
||||
cmd - return : ${kitty} --session ${session} --single-instance
|
||||
|
||||
# rebind space switching
|
||||
ctrl - left : ${yabai} -m space --focus prev || ${yabai} -m space --focus last
|
||||
ctrl - right : ${yabai} -m space --focus next || ${yabai} -m space --focus first
|
||||
|
||||
# focusing specific spaces
|
||||
cmd - 1 : ${yabai} -m space --focus 1
|
||||
cmd - 2 : ${yabai} -m space --focus 2
|
||||
cmd - 3 : ${yabai} -m space --focus 3
|
||||
cmd - 4 : ${yabai} -m space --focus 4
|
||||
cmd - 5 : ${yabai} -m space --focus 5
|
||||
cmd - 6 : ${yabai} -m space --focus 6
|
||||
cmd - 7 : ${yabai} -m space --focus 7
|
||||
cmd - 8 : ${yabai} -m space --focus 8
|
||||
cmd - 9 : ${yabai} -m space --focus 9
|
||||
cmd - 0x32 : ${lib.getExe yabaiSwapToFullscreen}
|
||||
|
||||
|
||||
# moving windows
|
||||
cmd + shift - 1 : ${yabai} -m window --space 1
|
||||
cmd + shift - 2 : ${yabai} -m window --space 2
|
||||
cmd + shift - 3 : ${yabai} -m window --space 3
|
||||
# cmd + shift - 4 : ${yabai} -m window --space 4
|
||||
cmd + shift - 5 : ${yabai} -m window --space 5
|
||||
cmd + shift - 6 : ${yabai} -m window --space 6
|
||||
cmd + shift - 7 : ${yabai} -m window --space 7
|
||||
cmd + shift - 8 : ${yabai} -m window --space 8
|
||||
cmd + shift - 9 : ${yabai} -m window --space 9
|
||||
cmd + shift - 0x32 : ${yabai} -m window --toggle native-fullscreen
|
||||
|
||||
# cmd + alt - 4 : "cmd + shift - 4"
|
||||
'';
|
||||
};
|
||||
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
home.file.".config/yabai/yabaiExe".source = lib.getExe pkgs.yabai;
|
||||
home.packages = with pkgs; [ yabai ];
|
||||
}
|
||||
];
|
||||
|
||||
security.pam.enableSudoTouchIdAuth = true;
|
||||
|
||||
users.users.ravenshade = {
|
||||
name = "ravenshade";
|
||||
home = "/Users/ravenshade";
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
users = { "ravenshade" = import ./home.nix; };
|
||||
backupFileExtension = "backup";
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.jetbrains-mono
|
||||
];
|
||||
|
||||
# Set Git commit hash for darwin-version.
|
||||
system.configurationRevision = self.rev or self.dirtyRev or null;
|
||||
# $ darwin-rebuild changelog
|
||||
system.stateVersion = 5;
|
||||
}
|
86
hosts/lynx/home.nix
Normal file
86
hosts/lynx/home.nix
Normal file
|
@ -0,0 +1,86 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../home/modules
|
||||
];
|
||||
|
||||
snowhawk = {
|
||||
alacritty.enable = false;
|
||||
kitty.enable = true;
|
||||
macos.enable = true;
|
||||
sources.enable = true;
|
||||
projects.enable = true;
|
||||
ssh = {
|
||||
enable = true;
|
||||
homeNetwork = true;
|
||||
};
|
||||
neovim.enable = true;
|
||||
sops.enable = true;
|
||||
direnv.enable = true;
|
||||
};
|
||||
|
||||
# nixpkgs.overlays = [
|
||||
# (final: prev: {
|
||||
# tmux = prev.tmux.overrideAttrs (old: rec {
|
||||
# version = "3.5";
|
||||
# src = prev.fetchFromGitHub {
|
||||
# owner = "tmux";
|
||||
# repo = "tmux";
|
||||
# rev = version;
|
||||
# hash = "sha256-8CRZj7UyBhuB5QO27Y+tHG62S/eGxPOHWrwvh1aBqq0=";
|
||||
# };
|
||||
# });
|
||||
# })
|
||||
# ];
|
||||
|
||||
# programs.tmux.extraConfig = ''
|
||||
# set -gu default-command
|
||||
# set -g default-shell "$SHELL"
|
||||
# '';
|
||||
|
||||
snowhawk.tmux.sessionizer.paths = [
|
||||
"~/Documents/obsidian"
|
||||
];
|
||||
|
||||
programs.kitty.settings = {
|
||||
background_opacity = lib.mkForce 0.94;
|
||||
background = lib.mkForce "#171717";
|
||||
font_size = lib.mkForce 16.0;
|
||||
hide_window_decorations = lib.mkForce "titlebar-only";
|
||||
macos_option_as_alt = lib.mkForce "both";
|
||||
};
|
||||
|
||||
programs.alacritty.settings = {
|
||||
font.size = lib.mkForce 16.0;
|
||||
window.opacity = lib.mkForce 0.94;
|
||||
colors.primary.background = lib.mkForce "#171717";
|
||||
};
|
||||
|
||||
home.username = "ravenshade";
|
||||
home.homeDirectory = "/Users/ravenshade";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nix-output-monitor
|
||||
(writeShellScriptBin "rebuild" ''
|
||||
darwin-rebuild switch --flake ~/nixos#lynx |& nom
|
||||
'')
|
||||
|
||||
(writeShellScriptBin "restart-skhd" ''
|
||||
launchctl stop org.nixos.skhd
|
||||
launchctl start org.nixos.skhd
|
||||
'')
|
||||
|
||||
wakeonlan
|
||||
|
||||
go
|
||||
rustup
|
||||
fzf
|
||||
|
||||
gh
|
||||
];
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
home.stateVersion = "23.11";
|
||||
}
|
53
hosts/permafrost/home.nix
Normal file
53
hosts/permafrost/home.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
{ pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../home/modules
|
||||
];
|
||||
|
||||
nix = {
|
||||
package = pkgs.nix;
|
||||
settings = {
|
||||
auto-optimise-store = true;
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
};
|
||||
};
|
||||
|
||||
snowhawk.neovim = {
|
||||
enable = true;
|
||||
};
|
||||
snowhawk.ssh.enable = true;
|
||||
snowhawk.sops.enable = true;
|
||||
snowhawk.repo-clone.enable = true;
|
||||
|
||||
snowhawk.user.username = "ravenshade";
|
||||
|
||||
snowhawk.tmux.sessionizer.paths = [
|
||||
"/etc/nixos"
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nix-output-monitor
|
||||
(writeShellScriptBin "rebuild" ''
|
||||
home-manager switch --flake /home/ravenshade/.config/home-manager#ravenshade@virtmsi |& nom
|
||||
'')
|
||||
|
||||
pkgs.nix
|
||||
|
||||
inputs.nh.packages.${pkgs.system}.default
|
||||
goaccess
|
||||
|
||||
go
|
||||
wakeonlan
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
NH_FLAKE = "/home/ravenshade/permafrost";
|
||||
};
|
||||
|
||||
programs.nix-index.enable = true;
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
home.stateVersion = "23.11";
|
||||
}
|
225
hosts/snowhawk/configuration.nix
Normal file
225
hosts/snowhawk/configuration.nix
Normal file
|
@ -0,0 +1,225 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running `nixos-help`).
|
||||
|
||||
{ pkgs, inputs, lib, config, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.default
|
||||
../../modules
|
||||
|
||||
# Default specialisation
|
||||
({ lib, config, ... }: {
|
||||
config = lib.mkIf (config.specialisation != { }) {
|
||||
hardware.nvidia.open = lib.mkForce true;
|
||||
|
||||
snowhawk.hyprland = {
|
||||
enable = true;
|
||||
nvidia = true;
|
||||
split-monitor-workspaces = true;
|
||||
};
|
||||
|
||||
home-manager.sharedModules = [{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
monitor = [
|
||||
"DP-1, 1920x1080@144, 1920x0, 1"
|
||||
"HDMI-A-1, 1920x1080@60, 0x0, 1"
|
||||
];
|
||||
};
|
||||
};
|
||||
}];
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
specialisation =
|
||||
let
|
||||
nvkConfig = {
|
||||
system.nixos.tags = [ "nouveau-drivers" ];
|
||||
boot.kernelParams = lib.mkAfter [ "nouveau.config=NvGspRm=1" ];
|
||||
services.xserver.videoDrivers = (lib.lists.remove "nvidia" config.services.xserver.videoDrivers);
|
||||
|
||||
hardware.firmware = [ (config.hardware.nvidia.package).firmware ];
|
||||
|
||||
boot.blacklistedKernelModules = [
|
||||
"nvidia"
|
||||
"nvidiafb"
|
||||
"nvidia-drm"
|
||||
"nvidia-uvm"
|
||||
"nvidia-modeset"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
# dwmNVK.configuration = {
|
||||
# environment.etc."specialisation".text = "dwm";
|
||||
#
|
||||
# snowhawk.dwm.enable = true;
|
||||
#
|
||||
# home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
|
||||
# } // nvkConfig;
|
||||
# dwl.configuration = {
|
||||
# environment.etc."specialisation".text = "dwl";
|
||||
#
|
||||
# hardware.nvidia.open = lib.mkForce true;
|
||||
#
|
||||
# snowhawk.dwl.enable = true;
|
||||
#
|
||||
# home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
|
||||
# };
|
||||
dwm.configuration = {
|
||||
environment.etc."specialisation".text = "dwm";
|
||||
|
||||
snowhawk.dwm.enable = true;
|
||||
|
||||
home-manager.sharedModules = [{
|
||||
snowhawk.dunst.enable = lib.mkDefault true;
|
||||
snowhawk.dwm.useXFixes = true;
|
||||
}];
|
||||
};
|
||||
# plasma.configuration = {
|
||||
# environment.etc."specialisation".text = "plasma";
|
||||
#
|
||||
# hardware.nvidia.open = lib.mkForce true;
|
||||
#
|
||||
# services.xserver.enable = true;
|
||||
# services.displayManager.sddm.enable = true;
|
||||
# services.desktopManager.plasma6.enable = true;
|
||||
# };
|
||||
# dwlNVK.configuration = {
|
||||
# environment.etc."specialisation".text = "dwlNVK";
|
||||
#
|
||||
# snowhawk.dwl.enable = true;
|
||||
#
|
||||
# home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
|
||||
# } // nvkConfig;
|
||||
};
|
||||
|
||||
services.libinput.mouse.middleEmulation = false;
|
||||
|
||||
snowhawk = {
|
||||
filesystem.enable = true;
|
||||
polkit.enable = true;
|
||||
syncthing.enable = true;
|
||||
user.enable = true;
|
||||
wake-on-lan.enable = true;
|
||||
star-citizen.enable = true;
|
||||
};
|
||||
|
||||
snowhawk.plymouth = {
|
||||
enable = true;
|
||||
theme = "owl";
|
||||
};
|
||||
|
||||
programs.gamemode.enable = true;
|
||||
|
||||
# Enable automatic login for the user.
|
||||
services.displayManager.autoLogin = {
|
||||
enable = true;
|
||||
user = "ravenshade";
|
||||
};
|
||||
|
||||
documentation = {
|
||||
enable = true;
|
||||
dev.enable = true;
|
||||
man.enable = true;
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
users = { "ravenshade" = import ./home.nix; };
|
||||
backupFileExtension = "backup";
|
||||
useGlobalPkgs = true;
|
||||
};
|
||||
|
||||
services.flatpak.enable = true;
|
||||
xdg.portal.enable = true;
|
||||
xdg.portal.config.common.default = "*";
|
||||
xdg.portal.extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
|
||||
systemd.services.flatpak-repo = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.flatpak ];
|
||||
script = ''
|
||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
mysql-workbench
|
||||
|
||||
# FIXME: extract to theme module?
|
||||
pkgs.rose-pine-gtk-theme
|
||||
pkgs.rose-pine-icon-theme
|
||||
pkgs.adwaita-icon-theme
|
||||
|
||||
bluetui
|
||||
blueberry
|
||||
|
||||
brightnessctl
|
||||
|
||||
neovim
|
||||
curl
|
||||
git
|
||||
killall
|
||||
|
||||
gamemode
|
||||
|
||||
linux-manual
|
||||
|
||||
inputs.nh.packages.${pkgs.system}.default
|
||||
];
|
||||
|
||||
environment.variables.NH_FLAKE = "/home/ravenshade/.config/nixos";
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.jetbrains-mono
|
||||
];
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
services.ratbagd.enable = true;
|
||||
|
||||
programs.gamescope.enable = true;
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
gamescopeSession.enable = true;
|
||||
};
|
||||
|
||||
# Adds pkgs.uhk-dev-rules to services.udev.packages
|
||||
hardware.keyboard.uhk.enable = true;
|
||||
|
||||
swapDevices = [{
|
||||
device = "/swap";
|
||||
size = 16 * 1024;
|
||||
}];
|
||||
|
||||
# Also recommended, either as an alternative or in addition
|
||||
zramSwap.enable = true;
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
users.users.ravenshade.extraGroups = [ "docker" "libvirtd" ];
|
||||
|
||||
virtualisation = {
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
package = pkgs.qemu_kvm;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.virt-manager.enable = true;
|
||||
|
||||
# I think I need a gtk theme? gnome-keyring
|
||||
qt.platformTheme = "gtk2";
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Los_Angeles";
|
||||
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.11"; # Did you read the comment?
|
||||
}
|
|
@ -1,5 +1,40 @@
|
|||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
let
|
||||
default-monitors = pkgs.writeXrandrScriptBin "default-monitors" {
|
||||
DP-0 = {
|
||||
primary = true;
|
||||
mode = "1920x1080";
|
||||
pos = "1920x0";
|
||||
rotate = "normal";
|
||||
};
|
||||
HDMI-0 = {
|
||||
mode = "1920x1080";
|
||||
pos = "0x0";
|
||||
rotate = "normal";
|
||||
};
|
||||
};
|
||||
|
||||
tv-on = pkgs.writeXrandrScriptBin "tv-on" {
|
||||
DP-0 = {
|
||||
primary = true;
|
||||
mode = "1920x1080";
|
||||
pos = "1920x1080";
|
||||
rotate = "normal";
|
||||
};
|
||||
HDMI-0 = {
|
||||
mode = "1920x1080";
|
||||
pos = "0x1080";
|
||||
rotate = "normal";
|
||||
};
|
||||
HDMI-1 = {
|
||||
mode = "1920x1080";
|
||||
pos = "1920x0";
|
||||
rotate = "normal";
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
|
@ -8,20 +43,115 @@
|
|||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{
|
||||
device = "/dev/disk/by-uuid/8c377115-06bb-488e-a531-c668dac127f6";
|
||||
fsType = "ext4";
|
||||
};
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/8c377115-06bb-488e-a531-c668dac127f6";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{
|
||||
device = "/dev/disk/by-uuid/1A0A-CEB2";
|
||||
fsType = "vfat";
|
||||
};
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/0499-9841";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
fileSystems."/data" = {
|
||||
device = "/dev/disk/by-uuid/00a7093a-49ee-41e4-baec-99d8a322a530";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/home/ravenshade" = {
|
||||
device = "/dev/disk/by-uuid/9451621e-00ce-4ea3-99b7-8f2753e51665";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/archive" = {
|
||||
device = "/dev/disk/by-uuid/d5a23b72-9982-49ab-a3a6-c297c0537cba";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ];
|
||||
services.xserver.dpi = lib.mkDefault 96;
|
||||
|
||||
environment.systemPackages = [
|
||||
default-monitors
|
||||
tv-on
|
||||
];
|
||||
|
||||
systemd.user.services.screenlayout = {
|
||||
script = lib.getExe default-monitors;
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
systemd.user.services.fehbg.after = [ "screenlayout.service" ];
|
||||
|
||||
hardware.nvidia = {
|
||||
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = true;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
forceFullCompositionPipeline = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||
};
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
device = "nodev";
|
||||
theme = pkgs.rose-pine-grub;
|
||||
default = "saved";
|
||||
|
||||
extraEntries = ''
|
||||
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os {
|
||||
insmod part_gpt
|
||||
insmod fat
|
||||
search --no-floppy --fs-uuid --set=root 22A0-639A
|
||||
chainloader /efi/Microsoft/Boot/bootmgfw.efi
|
||||
}
|
||||
'';
|
||||
};
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
networking.hostName = "snowhawk";
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
|
|
170
hosts/snowhawk/home.nix
Normal file
170
hosts/snowhawk/home.nix
Normal file
|
@ -0,0 +1,170 @@
|
|||
{ pkgs, config, lib, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../home/modules
|
||||
];
|
||||
|
||||
snowhawk = {
|
||||
# Desktop
|
||||
firefox.enable = true;
|
||||
theme.enable = true;
|
||||
redshift.enable = true;
|
||||
flameshot.enable = true;
|
||||
playerctl.enable = true;
|
||||
kitty.enable = true;
|
||||
defaultPrograms.enable = true;
|
||||
pipewire-controller.enable = true;
|
||||
|
||||
# Games
|
||||
lutris.enable = true;
|
||||
xivlauncher.enable = true;
|
||||
|
||||
# Term Tools
|
||||
neovim.enable = true;
|
||||
tldr.enable = true;
|
||||
|
||||
# Dev
|
||||
rust.enable = true;
|
||||
projects.enable = true;
|
||||
sources.enable = true;
|
||||
|
||||
# Security
|
||||
sops.enable = true;
|
||||
rbw.enable = true;
|
||||
};
|
||||
|
||||
sops.secrets."app_urls/nh_slack" = { };
|
||||
snowhawk.brave-apps = {
|
||||
enable = true;
|
||||
apps = {
|
||||
github.url = "https://github.com";
|
||||
zgit.url = "https://git.zynh.me";
|
||||
gmail.url = "https://mail.google.com/mail/u/0";
|
||||
calendar.url = "https://calendar.google.com/calendar/u/0/r";
|
||||
slack_nh.urlFile = config.sops.secrets."app_urls/nh_slack".path;
|
||||
};
|
||||
};
|
||||
|
||||
snowhawk.ssh = {
|
||||
enable = true;
|
||||
homeNetwork = true;
|
||||
};
|
||||
|
||||
repo-clone.repos = {
|
||||
"${config.home.homeDirectory}/Pictures/backgrounds".url = lib.zgitRepo "backgrounds";
|
||||
};
|
||||
|
||||
snowhawk.tmux.sessionizer.paths = [
|
||||
"~/obsidian"
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# (writeShellScriptBin "battlenet" ''
|
||||
# export WINEARCH=win64
|
||||
# export WINEPREFIX=$HOME/.wine-battlenet
|
||||
# wine64 ~/.wine-battlenet/drive_c/Program\ Files\ \(x86\)/Battle.net/Battle.net\ Launcher.exe
|
||||
# '')
|
||||
(wineWowPackages.full.override {
|
||||
wineRelease = "staging";
|
||||
mingwSupport = true;
|
||||
})
|
||||
winetricks
|
||||
r2modman
|
||||
|
||||
wowup-cf
|
||||
|
||||
(writeShellScriptBin "fix-desktop" ''
|
||||
systemctl --user restart xrootdatetime.service
|
||||
systemctl --user restart fehbg.service
|
||||
'')
|
||||
|
||||
ripgrep
|
||||
unzip
|
||||
fzf
|
||||
tree
|
||||
|
||||
ncspot
|
||||
|
||||
pathplanner
|
||||
|
||||
gparted
|
||||
arandr
|
||||
|
||||
bear
|
||||
|
||||
spotify
|
||||
vesktop
|
||||
(writeShellScriptBin "discord" ''
|
||||
${lib.getExe vesktop} $@
|
||||
'')
|
||||
|
||||
steam-run
|
||||
brave
|
||||
|
||||
nix-output-monitor
|
||||
(writeShellScriptBin "rebuild" ''
|
||||
nixos-rebuild switch --log-format internal-json -v $@ |& nom --json
|
||||
'')
|
||||
|
||||
(writeShellScriptBin "suspend" ''
|
||||
systemctl suspend
|
||||
'')
|
||||
|
||||
(writeShellScriptBin "reboot-windows" ''
|
||||
sudo ${pkgs.grub2}/bin/grub-reboot "Windows Boot Manager (on /dev/nvme0n1p1)"
|
||||
sudo reboot
|
||||
'')
|
||||
|
||||
(writeShellScriptBin "roblox" ''
|
||||
flatpak run org.vinegarhq.Sober
|
||||
'')
|
||||
|
||||
prismlauncher
|
||||
|
||||
feh
|
||||
imagemagick
|
||||
uhk-agent
|
||||
pulsemixer
|
||||
|
||||
obsidian
|
||||
|
||||
inputs.deploy-rs.packages.${pkgs.system}.default
|
||||
|
||||
# Build Tools
|
||||
gnumake
|
||||
zig
|
||||
gcc
|
||||
go
|
||||
python3
|
||||
nodejs_22
|
||||
dotnet-sdk_8
|
||||
|
||||
blender
|
||||
|
||||
ffmpeg
|
||||
duf
|
||||
|
||||
qdirstat
|
||||
|
||||
pcmanfm
|
||||
geeqie
|
||||
|
||||
jq
|
||||
|
||||
gimp
|
||||
rsync
|
||||
|
||||
eww
|
||||
dwm-msg
|
||||
|
||||
pwvucontrol
|
||||
];
|
||||
|
||||
programs.nix-index.enable = true;
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
home.stateVersion = "23.11";
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_pci" "usbhid" "usb_storage" "sr_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{
|
||||
device = "/dev/disk/by-uuid/fa4ed906-f26b-40ec-859c-81813151c33a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{
|
||||
device = "/dev/disk/by-uuid/31B8-8850";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp0s1.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
|
||||
}
|
25
lib/default.nix
Normal file
25
lib/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
final: prev:
|
||||
let
|
||||
inherit (prev) isFunction mkMerge mkIf;
|
||||
in
|
||||
rec {
|
||||
# Ternary operator
|
||||
# Exaample:
|
||||
# tern false 1 2 => 2
|
||||
# tern true 1 2 => 1
|
||||
tern = pred: x: y: if pred then x else y;
|
||||
|
||||
# Right-associate and chain following single-operand functions
|
||||
# Example:
|
||||
# right f g h 1 => f(g(h(1)))
|
||||
right = f: g: tern (isFunction g)
|
||||
(right (x: f (g (x))))
|
||||
(f (g));
|
||||
|
||||
mkIfElse = predicate: yes: no: mkMerge [
|
||||
(mkIf predicate yes)
|
||||
(mkIf (!predicate) no)
|
||||
];
|
||||
|
||||
zgitRepo = name: "https://git.zynh.me/Zynh0722/${name}.git";
|
||||
}
|
24
modules/audio.nix
Normal file
24
modules/audio.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.audio;
|
||||
in
|
||||
{
|
||||
options.snowhawk.audio = {
|
||||
enable = lib.mkEnableOption "audio";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Enable sound with pipewire.
|
||||
services.pulseaudio.enable = false;
|
||||
services.pulseaudio.extraModules = [ pkgs.pulseaudio-modules-bt ];
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
19
modules/default.nix
Normal file
19
modules/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ lib, ... }:
|
||||
|
||||
let
|
||||
dirEntries = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ];
|
||||
moduleEntries = lib.attrsets.filterAttrs (n: v: v == "regular") dirEntries;
|
||||
moduleNames = builtins.attrNames moduleEntries;
|
||||
|
||||
modulePaths = builtins.map (name: ./${name}) moduleNames;
|
||||
in
|
||||
{
|
||||
imports = modulePaths;
|
||||
|
||||
snowhawk.i18n.enable = lib.mkDefault true;
|
||||
snowhawk.audio.enable = lib.mkDefault true;
|
||||
snowhawk.env.enable = lib.mkDefault true;
|
||||
snowhawk.network.enable = lib.mkDefault true;
|
||||
snowhawk.sops.enable = lib.mkDefault true;
|
||||
snowhawk.power-button.enable = lib.mkDefault true;
|
||||
}
|
114
modules/dwl.nix
Normal file
114
modules/dwl.nix
Normal file
|
@ -0,0 +1,114 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.dwl;
|
||||
in
|
||||
{
|
||||
options.snowhawk.dwl = {
|
||||
enable = lib.mkEnableOption "dwl";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = with lib.types; package;
|
||||
default = inputs.zdwl.packages."x86_64-linux".default;
|
||||
apply = p: p.overrideAttrs {
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/wayland-sessions
|
||||
install $src/dwl.desktop -Dt $out/share/wayland-sessions
|
||||
'';
|
||||
passthru.providedSessions = [ "dwl" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.graphical-desktop.enable = lib.mkDefault true;
|
||||
|
||||
services.displayManager = {
|
||||
enable = true;
|
||||
sessionPackages = [ cfg.package ];
|
||||
defaultSession = "dwl";
|
||||
# TODO: greetd?
|
||||
sddm = {
|
||||
enable = lib.mkDefault true;
|
||||
wayland.enable = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
|
||||
security = {
|
||||
polkit.enable = lib.mkDefault true;
|
||||
# Uncomment to make swaylock work
|
||||
# pam.services.swaylock = { };
|
||||
};
|
||||
|
||||
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
||||
programs = {
|
||||
dconf.enable = lib.mkDefault true;
|
||||
xwayland.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
wlr.enable = lib.mkDefault true;
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.xdg-desktop-portal-wlr
|
||||
];
|
||||
};
|
||||
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
|
||||
xdg.portal.config.dwl.default = lib.mkDefault [ "wlr" "gtk" ];
|
||||
|
||||
services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true;
|
||||
|
||||
environment.variables = {
|
||||
QT_QPA_PLATFORM = "wayland;xcb";
|
||||
MOZ_ENABLE_WAYLAND = 1;
|
||||
SDL_VIDEODRIVER = "wayland,x11"; # TODO: Test me
|
||||
_JAVA_AWT_WM_NONREPARENTING = 1;
|
||||
XDG_CURRENT_DESKTOP = "dwl";
|
||||
XDG_SESSION_DESKTOP = "dwl";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
grim
|
||||
slurp
|
||||
satty
|
||||
|
||||
dwlmsg
|
||||
|
||||
wdisplays
|
||||
xorg.xlsclients
|
||||
|
||||
wl-clipboard
|
||||
wmenu
|
||||
kitty
|
||||
cfg.package
|
||||
|
||||
pipewire-controller
|
||||
|
||||
(pkgs.writeShellApplication {
|
||||
name = "sattySnap";
|
||||
|
||||
runtimeInputs = [ satty grim gawk gnugrep dwlmsg ];
|
||||
|
||||
text =
|
||||
let
|
||||
sattyArgs = lib.cli.toGNUCommandLineShell { } {
|
||||
early-exit = true;
|
||||
filename = "-";
|
||||
fullscreen = true;
|
||||
initial-tool = "crop";
|
||||
};
|
||||
in
|
||||
''
|
||||
grim -o "$(dwlmsg -g | grep "selmon 1" | awk '{ print $1 }')" - | satty ${sattyArgs}
|
||||
'';
|
||||
})
|
||||
];
|
||||
|
||||
home-manager.sharedModules = [
|
||||
{ snowhawk.satty.enable = lib.mkDefault true; }
|
||||
];
|
||||
};
|
||||
}
|
102
modules/dwm.nix
Normal file
102
modules/dwm.nix
Normal file
|
@ -0,0 +1,102 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) getExe;
|
||||
|
||||
cfg = config.snowhawk.dwm;
|
||||
in
|
||||
{
|
||||
options.snowhawk.dwm = {
|
||||
enable = lib.mkEnableOption "dwm";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
xkb = {
|
||||
layout = "us";
|
||||
variant = "";
|
||||
};
|
||||
};
|
||||
|
||||
services.libinput = {
|
||||
enable = true;
|
||||
mouse.accelProfile = "flat";
|
||||
};
|
||||
|
||||
services.xserver.windowManager.dwm = {
|
||||
enable = true;
|
||||
package = pkgs.dwm.overrideAttrs (oldAttrs: {
|
||||
src = inputs.zdwm;
|
||||
buildInputs = oldAttrs.buildInputs ++ [ pkgs.yajl ];
|
||||
});
|
||||
};
|
||||
|
||||
services.picom = {
|
||||
enable = true;
|
||||
fade = false;
|
||||
};
|
||||
|
||||
systemd.user.services.xrootdatetime = {
|
||||
script =
|
||||
let
|
||||
pamixer = getExe pkgs.pamixer;
|
||||
xsetroot = getExe pkgs.xorg.xsetroot;
|
||||
in
|
||||
/* bash */ ''
|
||||
function update_x_root() {
|
||||
set +e # allow errors
|
||||
mute="$(${pamixer} --default-source --get-mute)"
|
||||
set -e # disallow errors
|
||||
|
||||
if [[ "$mute" == "true" ]]; then
|
||||
mutedString="Mic Muted "
|
||||
else
|
||||
mutedString=""
|
||||
fi
|
||||
|
||||
dateTime=$(date +"<-- %A, %B %d -- %H:%M -->")
|
||||
${xsetroot} -name "$mutedString$dateTime"
|
||||
}
|
||||
|
||||
trap update_x_root SIGUSR1
|
||||
|
||||
while true; do
|
||||
sleep 1 &
|
||||
wait
|
||||
update_x_root
|
||||
done
|
||||
'';
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
after = [ "pipewire.service" ];
|
||||
serviceConfig.Restart = "on-failure";
|
||||
};
|
||||
|
||||
systemd.user.services.fehbg = {
|
||||
script = ''
|
||||
${getExe pkgs.feh} --no-fehbg --bg-scale '${inputs.backgrounds}/bg-none-nord.webp'
|
||||
'';
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
environment.variables.FREETYPE_PROPERTIES = "cff:no-stem-darkening=0 autofitter:no-stem-darkening=0";
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
dmenu
|
||||
xclip
|
||||
flameshot
|
||||
|
||||
rose-pine-gtk-theme
|
||||
rose-pine-icon-theme
|
||||
];
|
||||
|
||||
home-manager.sharedModules = [
|
||||
./home/dwm.nix
|
||||
{ snowhawk.dwm.enable = lib.mkDefault true; }
|
||||
];
|
||||
};
|
||||
}
|
18
modules/env.nix
Normal file
18
modules/env.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.env;
|
||||
in
|
||||
{
|
||||
options.snowhawk.env = {
|
||||
enable = lib.mkEnableOption "env";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
nix.settings = {
|
||||
trusted-users = [ "ravenshade" ];
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
};
|
||||
}
|
26
modules/filesystem.nix
Normal file
26
modules/filesystem.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
# This module provides some filesystem functionality I expect to work out of the box
|
||||
let
|
||||
cfg = config.snowhawk.filesystem;
|
||||
in
|
||||
{
|
||||
options.snowhawk.filesystem = {
|
||||
enable = lib.mkEnableOption "filesystem nixos module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Building nixos without this uses a ton of disk
|
||||
# Needs to be disabled on low memory systems
|
||||
boot.tmp.useTmpfs = true;
|
||||
|
||||
# This makes shebangs work
|
||||
services.envfs.enable = true;
|
||||
|
||||
# So many things break without this
|
||||
programs.dconf.enable = true;
|
||||
|
||||
# Enable trash:/// support
|
||||
services.gvfs.enable = true;
|
||||
};
|
||||
}
|
25
modules/glib-schemas-fix.nix
Normal file
25
modules/glib-schemas-fix.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Yoink https://github.com/thomX75/nixos-modules/blob/56fd73011f022e7c85bd7a40812663c5933106f9/Glib-Schemas-Fix/glib-schemas-fix.nix
|
||||
|
||||
# Glib Schemas Fix
|
||||
# https://github.com/thomX75/nixos-modules
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
|
||||
cfg = config.snowhawk.glib-schemas-fix;
|
||||
in
|
||||
{
|
||||
options.snowhawk.glib-schemas-fix = {
|
||||
enable = mkEnableOption "glib-schemas-fix nixos module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [ gtk3 ];
|
||||
|
||||
environment.variables = {
|
||||
GSETTINGS_SCHEMA_DIR = "${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}/glib-2.0/schemas";
|
||||
};
|
||||
};
|
||||
}
|
45
modules/home/dwm.nix
Normal file
45
modules/home/dwm.nix
Normal file
|
@ -0,0 +1,45 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.snowhawk.dwm;
|
||||
in
|
||||
{
|
||||
options.snowhawk.dwm = {
|
||||
enable = mkEnableOption "niri home-manager module";
|
||||
|
||||
useXFixes = mkEnableOption "using unclutter-xfixes instead of unclutter";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# WM Stuff
|
||||
xsession.numlock.enable = true;
|
||||
|
||||
services.unclutter = {
|
||||
enable = true;
|
||||
package = if cfg.useXFixes then pkgs.unclutter-xfixes else pkgs.unclutter;
|
||||
};
|
||||
|
||||
systemd.user.services.unclutter.Service.ExecStart =
|
||||
let cfg = config.services.unclutter;
|
||||
in lib.mkForce ''
|
||||
${cfg.package}/bin/unclutter \
|
||||
--timeout ${toString cfg.timeout} \
|
||||
--jitter ${toString (cfg.threshold - 1)} \
|
||||
${lib.concatStrings cfg.extraOptions}
|
||||
'';
|
||||
|
||||
home.file.".xinitrc".text = ''
|
||||
[ -f ~/.Xresources ] && ${lib.getExe pkgs.xorg.xrdb} -merge ~/.Xresources
|
||||
'';
|
||||
|
||||
xresources.properties = {
|
||||
"Xft.lcdfilter" = "lcddefault";
|
||||
"Xft.hintstyle" = "hintslight";
|
||||
"Xft.hinting" = "1";
|
||||
"Xft.antialias" = "1";
|
||||
"Xft.rgba" = "none";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
263
modules/home/niri.nix
Normal file
263
modules/home/niri.nix
Normal file
|
@ -0,0 +1,263 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.snowhawk.niri;
|
||||
in
|
||||
{
|
||||
options.snowhawk.niri = {
|
||||
enable = mkEnableOption "niri home-manager module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.niri.settings = {
|
||||
environment = {
|
||||
DISPLAY = ":0";
|
||||
};
|
||||
|
||||
binds = {
|
||||
# Keys consist of modifiers separated by + signs, followed by an XKB key name
|
||||
# in the end. To find an XKB name for a particular key, you may use a program
|
||||
# like wev.
|
||||
#
|
||||
# "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
|
||||
# when running as a winit window.
|
||||
#
|
||||
# Most actions that you can bind here can also be invoked programmatically with
|
||||
# `niri msg action do-something`.
|
||||
|
||||
# Mod-Shift-/, which is usually the same as Mod-?,
|
||||
# shows a list of important hotkeys.
|
||||
"Mod+Shift+Slash".action.show-hotkey-overlay = { };
|
||||
|
||||
# Suggested binds for running programs: terminal, app launcher, screen locker.
|
||||
"Mod+T".action.spawn = "alacritty";
|
||||
"Mod+D".action.spawn = "fuzzel";
|
||||
"Super+Alt+L".action.spawn = "swaylock";
|
||||
|
||||
# You can also use a shell. Do this if you need pipes, multiple commands, etc.
|
||||
# Note: the entire command goes as a single argument in the end.
|
||||
# Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; }
|
||||
|
||||
# Example volume keys mappings for PipeWire & WirePlumber.
|
||||
# The allow-when-locked=true property makes them work even when the session is locked.
|
||||
"XF86AudioRaiseVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+" ];
|
||||
};
|
||||
"XF86AudioLowerVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-" ];
|
||||
};
|
||||
"XF86AudioMute" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [ "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" ];
|
||||
};
|
||||
"XF86AudioMicMute" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [ "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle" ];
|
||||
};
|
||||
|
||||
"Mod+Q".action.close-window = { };
|
||||
|
||||
"Mod+Left".action.focus-column-left = { };
|
||||
"Mod+Down".action.focus-window-down = { };
|
||||
"Mod+Up".action.focus-window-up = { };
|
||||
"Mod+Right".action.focus-column-right = { };
|
||||
"Mod+H".action.focus-column-left = { };
|
||||
"Mod+J".action.focus-window-down = { };
|
||||
"Mod+K".action.focus-window-up = { };
|
||||
"Mod+L".action.focus-column-right = { };
|
||||
|
||||
"Mod+Ctrl+Left".action.move-column-left = { };
|
||||
"Mod+Ctrl+Down".action.move-window-down = { };
|
||||
"Mod+Ctrl+Up".action.move-window-up = { };
|
||||
"Mod+Ctrl+Right".action.move-column-right = { };
|
||||
"Mod+Ctrl+H".action.move-column-left = { };
|
||||
"Mod+Ctrl+J".action.move-window-down = { };
|
||||
"Mod+Ctrl+K".action.move-window-up = { };
|
||||
"Mod+Ctrl+L".action.move-column-right = { };
|
||||
|
||||
# Alternative commands that move across workspaces when reaching
|
||||
# the first or last window in a column.
|
||||
# Mod+J { focus-window-or-workspace-down; }
|
||||
# Mod+K { focus-window-or-workspace-up; }
|
||||
# Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
|
||||
# Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
|
||||
|
||||
"Mod+Home".action.focus-column-first = { };
|
||||
"Mod+End".action.focus-column-last = { };
|
||||
"Mod+Ctrl+Home".action.move-column-to-first = { };
|
||||
"Mod+Ctrl+End".action.move-column-to-last = { };
|
||||
|
||||
"Mod+Shift+Left".action.focus-monitor-left = { };
|
||||
"Mod+Shift+Down".action.focus-monitor-down = { };
|
||||
"Mod+Shift+Up".action.focus-monitor-up = { };
|
||||
"Mod+Shift+Right".action.focus-monitor-right = { };
|
||||
"Mod+Shift+H".action.focus-monitor-left = { };
|
||||
"Mod+Shift+J".action.focus-monitor-down = { };
|
||||
"Mod+Shift+K".action.focus-monitor-up = { };
|
||||
"Mod+Shift+L".action.focus-monitor-right = { };
|
||||
|
||||
"Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { };
|
||||
"Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { };
|
||||
"Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { };
|
||||
"Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { };
|
||||
"Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { };
|
||||
"Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { };
|
||||
"Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { };
|
||||
"Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { };
|
||||
|
||||
# Alternatively, there are commands to move just a single window:
|
||||
# Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||
# ...
|
||||
|
||||
# And you can also move a whole workspace to another monitor:
|
||||
# Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
|
||||
# ...
|
||||
|
||||
"Mod+Page_Down".action.focus-workspace-down = { };
|
||||
"Mod+Page_Up".action.focus-workspace-up = { };
|
||||
"Mod+U".action.focus-workspace-down = { };
|
||||
"Mod+I".action.focus-workspace-up = { };
|
||||
"Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { };
|
||||
"Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { };
|
||||
"Mod+Ctrl+U".action.move-column-to-workspace-down = { };
|
||||
"Mod+Ctrl+I".action.move-column-to-workspace-up = { };
|
||||
|
||||
# Alternatively, there are commands to move just a single window:
|
||||
# Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
|
||||
# ...
|
||||
|
||||
"Mod+Shift+Page_Down".action.move-workspace-down = { };
|
||||
"Mod+Shift+Page_Up".action.move-workspace-up = { };
|
||||
"Mod+Shift+U".action.move-workspace-down = { };
|
||||
"Mod+Shift+I".action.move-workspace-up = { };
|
||||
|
||||
# You can bind mouse wheel scroll ticks using the following syntax.
|
||||
# These binds will change direction based on the natural-scroll setting.
|
||||
#
|
||||
# To avoid scrolling through workspaces really fast, you can use
|
||||
# the cooldown-ms property. The bind will be rate-limited to this value.
|
||||
# You can set a cooldown on any bind, but it's most useful for the wheel.
|
||||
"Mod+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action.focus-workspace-down = { };
|
||||
};
|
||||
"Mod+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action.focus-workspace-up = { };
|
||||
};
|
||||
"Mod+Ctrl+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action.move-column-to-workspace-down = { };
|
||||
};
|
||||
"Mod+Ctrl+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action.move-column-to-workspace-up = { };
|
||||
};
|
||||
|
||||
"Mod+WheelScrollRight".action.focus-column-right = { };
|
||||
"Mod+WheelScrollLeft".action.focus-column-left = { };
|
||||
"Mod+Ctrl+WheelScrollRight".action.move-column-right = { };
|
||||
"Mod+Ctrl+WheelScrollLeft".action.move-column-left = { };
|
||||
|
||||
# Usually scrolling up and down with Shift in applications results in
|
||||
# horizontal scrolling; these binds replicate that.
|
||||
"Mod+Shift+WheelScrollDown".action.focus-column-right = { };
|
||||
"Mod+Shift+WheelScrollUp".action.focus-column-left = { };
|
||||
"Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { };
|
||||
"Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { };
|
||||
|
||||
# Similarly, you can bind touchpad scroll "ticks".
|
||||
# Touchpad scrolling is continuous, so for these binds it is split into
|
||||
# discrete intervals.
|
||||
# These binds are also affected by touchpad's natural-scroll, so these
|
||||
# example binds are "inverted", since we have natural-scroll enabled for
|
||||
# touchpads by default.
|
||||
# Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
|
||||
# Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
|
||||
|
||||
# You can refer to workspaces by index. However, keep in mind that
|
||||
# niri is a dynamic workspace system, so these commands are kind of
|
||||
# "best effort". Trying to refer to a workspace index bigger than
|
||||
# the current workspace count will instead refer to the bottommost
|
||||
# (empty) workspace.
|
||||
#
|
||||
# For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
|
||||
# will all refer to the 3rd workspace.
|
||||
"Mod+1".action.focus-workspace = 1;
|
||||
"Mod+2".action.focus-workspace = 2;
|
||||
"Mod+3".action.focus-workspace = 3;
|
||||
"Mod+4".action.focus-workspace = 4;
|
||||
"Mod+5".action.focus-workspace = 5;
|
||||
"Mod+6".action.focus-workspace = 6;
|
||||
"Mod+7".action.focus-workspace = 7;
|
||||
"Mod+8".action.focus-workspace = 8;
|
||||
"Mod+9".action.focus-workspace = 9;
|
||||
"Mod+Ctrl+1".action.move-column-to-workspace = 1;
|
||||
"Mod+Ctrl+2".action.move-column-to-workspace = 2;
|
||||
"Mod+Ctrl+3".action.move-column-to-workspace = 3;
|
||||
"Mod+Ctrl+4".action.move-column-to-workspace = 4;
|
||||
"Mod+Ctrl+5".action.move-column-to-workspace = 5;
|
||||
"Mod+Ctrl+6".action.move-column-to-workspace = 6;
|
||||
"Mod+Ctrl+7".action.move-column-to-workspace = 7;
|
||||
"Mod+Ctrl+8".action.move-column-to-workspace = 8;
|
||||
"Mod+Ctrl+9".action.move-column-to-workspace = 9;
|
||||
|
||||
# Alternatively, there are commands to move just a single window:
|
||||
# Mod+Ctrl+1 { move-window-to-workspace 1; }
|
||||
|
||||
# Switches focus between the current and the previous workspace.
|
||||
# Mod+Tab { focus-workspace-previous; }
|
||||
|
||||
"Mod+Comma".action.consume-window-into-column = { };
|
||||
"Mod+Period".action.expel-window-from-column = { };
|
||||
|
||||
# There are also commands that consume or expel a single window to the side.
|
||||
# Mod+BracketLeft { consume-or-expel-window-left; }
|
||||
# Mod+BracketRight { consume-or-expel-window-right; }
|
||||
|
||||
"Mod+R".action.switch-preset-column-width = { };
|
||||
"Mod+Shift+R".action.reset-window-height = { };
|
||||
"Mod+F".action.maximize-column = { };
|
||||
"Mod+Shift+F".action.fullscreen-window = { };
|
||||
"Mod+C".action.center-column = { };
|
||||
|
||||
# Finer width adjustments.
|
||||
# This command can also:
|
||||
# * set width in pixels: "1000"
|
||||
# * adjust width in pixels: "-5" or "+5"
|
||||
# * set width as a percentage of screen width: "25%"
|
||||
# * adjust width as a percentage of screen width: "-10%" or "+10%"
|
||||
# Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
|
||||
# set-column-width "100" will make the column occupy 200 physical screen pixels.
|
||||
"Mod+Minus".action.set-column-width = "-10%";
|
||||
"Mod+Equal".action.set-column-width = "+10%";
|
||||
|
||||
# Finer height adjustments when in column with other windows.
|
||||
"Mod+Shift+Minus".action.set-window-height = "-10%";
|
||||
"Mod+Shift+Equal".action.set-window-height = "+10%";
|
||||
|
||||
# Actions to switch layouts.
|
||||
# Note: if you uncomment these, make sure you do NOT have
|
||||
# a matching layout switch hotkey configured in xkb options above.
|
||||
# Having both at once on the same hotkey will break the switching,
|
||||
# since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||
# Mod+Space { switch-layout "next"; }
|
||||
# Mod+Shift+Space { switch-layout "prev"; }
|
||||
|
||||
"Print".action.screenshot = { };
|
||||
"Ctrl+Print".action.screenshot-screen = { };
|
||||
"Alt+Print".action.screenshot-window = { };
|
||||
|
||||
# The quit action will show a confirmation dialog to avoid accidental exits.
|
||||
"Mod+Shift+E".action.quit = { };
|
||||
|
||||
# Powers off the monitors. To turn them back on, do any input like
|
||||
# moving the mouse or pressing any other key.
|
||||
"Mod+Shift+P".action.power-off-monitors = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
446
modules/hyprland.nix
Normal file
446
modules/hyprland.nix
Normal file
|
@ -0,0 +1,446 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.hyprland;
|
||||
in
|
||||
{
|
||||
options.snowhawk.hyprland = {
|
||||
enable = lib.mkEnableOption "hyprland";
|
||||
|
||||
split-monitor-workspaces = lib.mkEnableOption "split-monitor-workspaces";
|
||||
|
||||
nvidia = lib.mkEnableOption "hyprland nvidia tweaks";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||
# Core Module
|
||||
{
|
||||
services.graphical-desktop.enable = lib.mkDefault true;
|
||||
|
||||
services.displayManager = {
|
||||
enable = true;
|
||||
sddm = {
|
||||
enable = lib.mkDefault true;
|
||||
wayland.enable = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
|
||||
security = {
|
||||
polkit.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
programs = {
|
||||
dconf.enable = lib.mkDefault true;
|
||||
xwayland.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
# xdg.portal = {
|
||||
# enable = true;
|
||||
# extraPortals = [
|
||||
# pkgs.xdg-desktop-portal
|
||||
# pkgs.xdg-desktop-portal-gtk
|
||||
# ];
|
||||
# };
|
||||
|
||||
programs.waybar.enable = true;
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
withUWSM = true;
|
||||
xwayland.enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
|
||||
services.hypridle.enable = true;
|
||||
systemd.user.services.hypridle.path = [ pkgs.brightnessctl ];
|
||||
|
||||
# programs.hyprlock.enable = true;
|
||||
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
|
||||
# xdg.portal.config.hyprland.default = lib.mkDefault [ "wlr" "gtk" ];
|
||||
|
||||
services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true;
|
||||
|
||||
environment.variables = {
|
||||
QT_QPA_PLATFORM = "wayland;xcb";
|
||||
MOZ_ENABLE_WAYLAND = 1;
|
||||
SDL_VIDEODRIVEWR = "wayland,x11";
|
||||
_JAVA_AWT_WM_NONREPARENTING = 1;
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
inputs.rose-pine-hyprcursor.packages.${pkgs.system}.default
|
||||
];
|
||||
}
|
||||
|
||||
# hyprland configuration
|
||||
{
|
||||
home-manager.sharedModules = [{
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
# extraConfig = builtins.readFile ../home/hypr/hyprland.conf;
|
||||
settings = {
|
||||
source = [ "${../home/hypr/rose-pine.conf}" ];
|
||||
|
||||
env = [
|
||||
"XCURSOR_SIZE,24"
|
||||
"HYPRCURSOR_SIZE,24"
|
||||
"HYPRCURSOR_THEME,rose-pine-hyprcursor"
|
||||
"MOZ_ENABLE_WAYLAND,1"
|
||||
];
|
||||
|
||||
# TODO: Direct links
|
||||
"$terminal" = "kitty";
|
||||
"$fileManager" = "pcmanfm";
|
||||
"$menu" = "wofi --show drun";
|
||||
|
||||
"$mainMod" = "SUPER";
|
||||
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 5;
|
||||
border_size = 1;
|
||||
|
||||
"col.active_border" = "$foam $pine 45deg";
|
||||
"col.inactive_border" = "$muted";
|
||||
|
||||
resize_on_border = true;
|
||||
|
||||
allow_tearing = false;
|
||||
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration = {
|
||||
rounding = 5;
|
||||
rounding_power = 2;
|
||||
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
color = "rgba(1a1a1aee)";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
|
||||
vibrancy = 0.1696;
|
||||
};
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations = {
|
||||
enabled = "no,";
|
||||
|
||||
bezier = [ "easeOutQuint,0.23,1,0.32,1" "easeInOutCubic,0.65,0.05,0.36,1" "linear,0,0,1,1" "almostLinear,0.5,0.5,0.75,1.0" "quick,0.15,0,0.1,1" ];
|
||||
|
||||
# I need to tinker with these some more for llynx
|
||||
# animation = global, 1, 10, default
|
||||
# animation = border, 1, 5.39, easeOutQuint
|
||||
# animation = windows, 1, 4.79, easeOutQuint
|
||||
# animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
# animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
# animation = windowsMove, 1, 4.79, easeOutQuint
|
||||
# animation = fadeIn, 1, 1.73, almostLinear
|
||||
# animation = fadeOut, 1, 1.46, almostLinear
|
||||
# animation = fade, 1, 3.03, quick
|
||||
# animation = layers, 1, 3.81, easeOutQuint
|
||||
# animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
# animation = layersOut, 1, 1.5, linear, fade
|
||||
# animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
# animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
# animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
# animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
# animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
};
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
preserve_split = true;
|
||||
};
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master = {
|
||||
new_status = "master";
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc = {
|
||||
force_default_wallpaper = -1;
|
||||
disable_hyprland_logo = false;
|
||||
};
|
||||
|
||||
cursor = {
|
||||
inactive_timeout = 5;
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input = {
|
||||
kb_layout = "us";
|
||||
kb_variant = "";
|
||||
kb_model = "";
|
||||
kb_options = "";
|
||||
kb_rules = "";
|
||||
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0;
|
||||
|
||||
numlock_by_default = true;
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = true;
|
||||
clickfinger_behavior = true;
|
||||
};
|
||||
};
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_distance = 50;
|
||||
};
|
||||
|
||||
plugin = {
|
||||
split-monitor-workspaces = lib.mkIf cfg.split-monitor-workspaces {
|
||||
count = 10;
|
||||
keep_focused = 10;
|
||||
enable_notifications = 0;
|
||||
enable_persistent_workspaces = 0;
|
||||
};
|
||||
};
|
||||
|
||||
windowrulev2 = [
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
"suppressevent maximize, class:.*"
|
||||
# Fix some dragging issues with XWayland
|
||||
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"$mainMod, mouse:272, movewindow"
|
||||
"$mainMod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindel = [
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||
",XF86MonBrightnessUp, exec, brightnessctl s 10%+"
|
||||
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
|
||||
];
|
||||
|
||||
bindl = [
|
||||
# Requires playerctl
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
];
|
||||
|
||||
bind = [
|
||||
"$mainMod, Q, exec, $terminal"
|
||||
"$mainMod, C, killactive,"
|
||||
"$mainMod CTRL SHIFT, M, exit,"
|
||||
"$mainMod, E, exec, $fileManager"
|
||||
"$mainMod, V, togglefloating,"
|
||||
"$mainMod, R, exec, $menu"
|
||||
"$mainMod, P, pseudo, # dwindle"
|
||||
"$mainMod, J, togglesplit, # dwindle"
|
||||
|
||||
"$mainMod SHIFT, minus, exec, bash -c \"XDG_CURRENT_DESKTOP=sway flameshot gui\""
|
||||
"$mainMod, n, exec, swaync-client -t"
|
||||
|
||||
# moving focus
|
||||
"$mainMod, left, movefocus, l"
|
||||
"$mainMod, right, movefocus, r"
|
||||
"$mainMod, up, movefocus, u"
|
||||
"$mainMod, down, movefocus, d"
|
||||
|
||||
# scratchpad
|
||||
"$mainMod, S, togglespecialworkspace, magic"
|
||||
"$mainMod SHIFT, S, movetoworkspace, special:magic"
|
||||
] ++ (
|
||||
# workspaces
|
||||
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
|
||||
builtins.concatLists (builtins.genList
|
||||
(i:
|
||||
let ws = i + 1;
|
||||
in [
|
||||
"$mainMod, code:1${toString i}, ${lib.optionalString cfg.split-monitor-workspaces "split-"}workspace, ${toString ws}"
|
||||
"$mainMod SHIFT, code:1${toString i}, ${lib.optionalString cfg.split-monitor-workspaces "split-"}movetoworkspace, ${toString ws}"
|
||||
]
|
||||
)
|
||||
9)
|
||||
);
|
||||
};
|
||||
|
||||
package = null;
|
||||
portalPackage = null;
|
||||
};
|
||||
}];
|
||||
}
|
||||
|
||||
# split-monitor-workspaces
|
||||
(lib.mkIf cfg.split-monitor-workspaces {
|
||||
home-manager.sharedModules = [{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings.bind = [
|
||||
"$mainMod SHIFT, comma, split-changemonitor, -1"
|
||||
"$mainMod SHIFT, period, split-changemonitor, +1"
|
||||
];
|
||||
plugins = [
|
||||
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
|
||||
];
|
||||
};
|
||||
}];
|
||||
})
|
||||
|
||||
# useful desktop stuff
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Screenshotting
|
||||
grim
|
||||
slurp
|
||||
satty
|
||||
|
||||
# Hardware Control
|
||||
brightnessctl
|
||||
|
||||
# Desktop
|
||||
wofi
|
||||
kitty
|
||||
pipewire-controller
|
||||
|
||||
# Wayland Utilities
|
||||
wdisplays
|
||||
xorg.xlsclients
|
||||
wl-clipboard
|
||||
];
|
||||
}
|
||||
|
||||
# SDDM Theme
|
||||
(
|
||||
let sddmPkg = (pkgs.sddm-astronaut.override { embeddedTheme = "purple_leaves"; });
|
||||
in {
|
||||
services.displayManager = {
|
||||
enable = lib.mkDefault true;
|
||||
sddm = {
|
||||
enable = lib.mkDefault true;
|
||||
wayland.enable = lib.mkDefault true;
|
||||
theme = "sddm-astronaut-theme";
|
||||
package = pkgs.kdePackages.sddm;
|
||||
extraPackages = with pkgs; [
|
||||
sddmPkg
|
||||
kdePackages.qtsvg
|
||||
kdePackages.qtvirtualkeyboard
|
||||
kdePackages.qtmultimedia
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ sddmPkg ];
|
||||
}
|
||||
)
|
||||
|
||||
# Anyrun
|
||||
(lib.mkIf false {
|
||||
home-manager.sharedModules = [{
|
||||
imports = [
|
||||
inputs.anyrun.homeManagerModules.default
|
||||
];
|
||||
|
||||
programs.anyrun = {
|
||||
enable = true;
|
||||
config = {
|
||||
x = { fraction = 0.5; };
|
||||
y = { fraction = 0.3; };
|
||||
width = { fraction = 0.3; };
|
||||
layer = "overlay";
|
||||
showResultsImmediately = true;
|
||||
hidePluginInfo = true;
|
||||
plugins = [
|
||||
inputs.anyrun.packages.${pkgs.system}.applications
|
||||
];
|
||||
};
|
||||
|
||||
extraCss = /* css */ ''
|
||||
window {
|
||||
background: transparent;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}];
|
||||
})
|
||||
|
||||
({
|
||||
home-manager.sharedModules = [{
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
style = builtins.readFile "${inputs.rose-pine-swaync}/theme/rose-pine.css";
|
||||
settings = {
|
||||
positionX = "right";
|
||||
positionY = "tops";
|
||||
layer = "overlay";
|
||||
control-center-layer = "tops";
|
||||
cssPriority = "application";
|
||||
control-center-margin-top = 0;
|
||||
control-center-margin-bottom = 0;
|
||||
control-center-margin-right = 0;
|
||||
control-center-margin-left = 0;
|
||||
notification-2fa-action = true;
|
||||
notification-inline-replies = false;
|
||||
notification-icon-size = 64;
|
||||
notification-body-image-height = 100;
|
||||
notification-body-image-width = 200;
|
||||
timeout = 10;
|
||||
timeout-low = 5;
|
||||
timeout-critical = 0;
|
||||
fit-to-screen = true;
|
||||
control-center-width = 500;
|
||||
control-center-height = 600;
|
||||
notification-window-width = 500;
|
||||
keyboard-shortcuts = true;
|
||||
image-visibility = "when-available";
|
||||
transition-time = 200;
|
||||
hide-on-clear = false;
|
||||
hide-on-action = true;
|
||||
script-fail-notify = false;
|
||||
};
|
||||
};
|
||||
}];
|
||||
})
|
||||
|
||||
{
|
||||
home-manager.sharedModules = [{
|
||||
services.playerctld.enable = true;
|
||||
systemd.user.services.playerctld = {
|
||||
Unit.PartOf = lib.mkForce [ "graphical-session.target" ];
|
||||
Install.WantedBy = lib.mkForce [ "graphical-session.target" ];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
playerctl
|
||||
];
|
||||
}];
|
||||
}
|
||||
|
||||
(lib.mkIf cfg.nvidia {
|
||||
environment.variables = {
|
||||
LIBVA_DRIVER_NAME = "nvidia";
|
||||
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||
};
|
||||
})
|
||||
]);
|
||||
}
|
27
modules/i18n.nix
Normal file
27
modules/i18n.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.i18n;
|
||||
in
|
||||
{
|
||||
options.snowhawk.i18n = {
|
||||
enable = lib.mkEnableOption "i18n";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
};
|
||||
}
|
23
modules/network.nix
Normal file
23
modules/network.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.snowhawk.network;
|
||||
in
|
||||
{
|
||||
options.snowhawk.network = {
|
||||
enable = lib.mkEnableOption "network nixos module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
services.openssh.openFirewall = true;
|
||||
|
||||
services.avahi.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
};
|
||||
}
|
30
modules/niri.nix
Normal file
30
modules/niri.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
|
||||
cfg = config.snowhawk.niri;
|
||||
in
|
||||
{
|
||||
options.snowhawk.niri = {
|
||||
enable = mkEnableOption "niri nixos module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.niri.enable = true;
|
||||
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
||||
services.displayManager = {
|
||||
defaultSession = "niri";
|
||||
enable = true;
|
||||
sddm.enable = true;
|
||||
sddm.wayland.enable = true;
|
||||
};
|
||||
|
||||
home-manager.sharedModules = [
|
||||
./home/niri.nix
|
||||
{ snowhawk.niri.enable = lib.mkDefault true; }
|
||||
];
|
||||
};
|
||||
}
|
42
modules/nix-ld.nix
Normal file
42
modules/nix-ld.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
|
||||
cfg = config.snowhawk.nix-ld;
|
||||
in
|
||||
{
|
||||
options.snowhawk.nix-ld = {
|
||||
enable = mkEnableOption "nix-ld nixos module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.nix-ld.enable = true;
|
||||
programs.nix-ld.libraries = with pkgs; [
|
||||
glib
|
||||
nss
|
||||
nspr
|
||||
atk
|
||||
cups
|
||||
dbus
|
||||
libdrm
|
||||
gtk3
|
||||
pango
|
||||
cairo
|
||||
gdk-pixbuf
|
||||
mesa
|
||||
expat
|
||||
alsa-lib
|
||||
|
||||
libxkbcommon
|
||||
|
||||
xorg.libX11
|
||||
xorg.libXcomposite
|
||||
xorg.libXdamage
|
||||
xorg.libXext
|
||||
xorg.libXfixes
|
||||
xorg.libXrandr
|
||||
xorg.libxcb
|
||||
];
|
||||
};
|
||||
}
|
55
modules/plymouth.nix
Normal file
55
modules/plymouth.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
# Yoinky Sploinky https://git.nullcube.net/nullcube/nixos/src/commit/d732b27507e70ed6f37e51ea2e5f8b7d7b3582dc/nixosModules/plymouth.nix
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.snowhawk.plymouth;
|
||||
in
|
||||
{
|
||||
options.snowhawk.plymouth = {
|
||||
enable = mkEnableOption "plymouth module";
|
||||
theme = mkOption {
|
||||
default = "spinner_alt";
|
||||
example = "circle";
|
||||
description = ''
|
||||
The plymouth theme to download and activate
|
||||
'';
|
||||
};
|
||||
loaderTimeout = mkOption {
|
||||
default = 5;
|
||||
example = 0;
|
||||
description = ''
|
||||
The timeout for the bootloader select screen
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
boot = {
|
||||
plymouth = {
|
||||
enable = true;
|
||||
theme = cfg.theme;
|
||||
themePackages = mkDefault [
|
||||
(pkgs.adi1090x-plymouth-themes.override {
|
||||
selected_themes = [ cfg.theme ];
|
||||
})
|
||||
];
|
||||
};
|
||||
consoleLogLevel = 0;
|
||||
initrd = {
|
||||
verbose = false;
|
||||
systemd.enable = true;
|
||||
};
|
||||
kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
"boot.shell_on_fail"
|
||||
"loglevel=3"
|
||||
"rd.systemd.show_status=false"
|
||||
"rd.udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
];
|
||||
loader.timeout = cfg.loaderTimeout;
|
||||
};
|
||||
};
|
||||
}
|
31
modules/polkit.nix
Normal file
31
modules/polkit.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.polkit;
|
||||
in
|
||||
{
|
||||
options.snowhawk.polkit = {
|
||||
enable = lib.mkEnableOption "polkit nixos module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.user.services.polkit-gnome-authentication-agent = {
|
||||
description = "polkit-gnome-authentication-agent";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
wants = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 1;
|
||||
TimeoutStopSec = 10;
|
||||
};
|
||||
};
|
||||
|
||||
security.polkit.enable = true;
|
||||
|
||||
# TODO: is this doing anything?
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
};
|
||||
}
|
20
modules/power-button.nix
Normal file
20
modules/power-button.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
|
||||
cfg = config.snowhawk.power-button;
|
||||
in
|
||||
{
|
||||
options.snowhawk.power-button = {
|
||||
enable = mkEnableOption "power-button nixos module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.logind = {
|
||||
powerKey = "suspend";
|
||||
powerKeyLongPress = "poweroff";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
25
modules/sops.nix
Normal file
25
modules/sops.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ lib, config, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.sops;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
|
||||
options.snowhawk.sops = {
|
||||
enable = lib.mkEnableOption "sops";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
sops = {
|
||||
defaultSopsFile = ../secrets.yaml;
|
||||
age = {
|
||||
sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||
keyFile = "/var/lib/sops-nix/key.txt";
|
||||
generateKey = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
24
modules/star-citizen.nix
Normal file
24
modules/star-citizen.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ lib, config, inputs, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.star-citizen;
|
||||
in
|
||||
{
|
||||
options.snowhawk.star-citizen = {
|
||||
enable = lib.mkEnableOption "star-citizen";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
boot.kernel.sysctl = {
|
||||
"vm.max_map_count" = 16777216;
|
||||
"ds.file-max" = 524288;
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
(pkgs.star-citizen.override {
|
||||
useUmu = true;
|
||||
location = "/data/star-citizen";
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
24
modules/sudo-rules.nix
Normal file
24
modules/sudo-rules.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
|
||||
cfg = config.snowhawk.sudo-rules;
|
||||
in
|
||||
{
|
||||
options.snowhawk.sudo-rules = {
|
||||
enable = mkEnableOption "sudo-rules nixos module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
security.sudo.extraRules = lib.mkIf false [
|
||||
{
|
||||
users = [ "ravenshade" ];
|
||||
commands = [{
|
||||
command = "${pkgs.nixos-rebuild}/bin/nixos-rebuild";
|
||||
options = [ "SETENV" "NOPASSWD" ];
|
||||
}];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
59
modules/syncthing.nix
Normal file
59
modules/syncthing.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.snowhawk.syncthing;
|
||||
in
|
||||
{
|
||||
options.snowhawk.syncthing = {
|
||||
enable = mkEnableOption "syncthing";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
|
||||
user = "ravenshade";
|
||||
group = "users";
|
||||
|
||||
dataDir = "/home/ravenshade/syncthing";
|
||||
configDir = "/home/ravenshade/.config/syncthing";
|
||||
|
||||
overrideFolders = true;
|
||||
overrideDevices = false;
|
||||
|
||||
settings = {
|
||||
devices = {
|
||||
permafrost.id = "Y3RGVEJ-KKD2QV2-LHHHL7Z-DWRLTWI-P3RG4GG-VTDTNJV-IM4OMRA-E3BY7QN";
|
||||
lynx.id = "O7EB4D6-AH4A53X-YM6UE7K-T3CJGIZ-MRJ6J7U-DXTEOKB-Z7LSV2M-LVUWFAO";
|
||||
sprite.id = "IS2F2X5-43F7B2Q-SVSNY4J-GOHU5XP-NSJ2MJS-GDDNNTR-BGPQHHE-TE4JDAX";
|
||||
};
|
||||
|
||||
folders = {
|
||||
"obsidian" = rec {
|
||||
id = "obsidian";
|
||||
label = id;
|
||||
path = "/home/ravenshade/obsidian";
|
||||
devices = [ "permafrost" "lynx" "sprite" ];
|
||||
};
|
||||
"sync" = {
|
||||
id = "default";
|
||||
label = "sync";
|
||||
path = "/home/ravenshade/sync";
|
||||
devices = [ "lynx" ];
|
||||
};
|
||||
};
|
||||
|
||||
gui = {
|
||||
theme = "dark";
|
||||
};
|
||||
|
||||
options = {
|
||||
urAccepted = -1;
|
||||
localAnnounceEnabled = false;
|
||||
relaysEnabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
26
modules/user.nix
Normal file
26
modules/user.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.snowhawk.user;
|
||||
in
|
||||
{
|
||||
options.snowhawk.user = {
|
||||
enable = lib.mkEnableOption "user nixos module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
snowhawk.sops.enable = lib.mkForce true;
|
||||
|
||||
# users sops setup
|
||||
sops.secrets."passwords/ravenshade".neededForUsers = true;
|
||||
users.mutableUsers = false;
|
||||
|
||||
# Define a user account. Don't forget to set a password with `passwd`.
|
||||
users.users.ravenshade = {
|
||||
isNormalUser = true;
|
||||
description = "Zynh Ludwig";
|
||||
hashedPasswordFile = config.sops.secrets."passwords/ravenshade".path;
|
||||
extraGroups = [ "networkmanager" "wheel" "audio" ];
|
||||
};
|
||||
};
|
||||
}
|
25
modules/wake-on-lan.nix
Normal file
25
modules/wake-on-lan.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
|
||||
cfg = config.snowhawk.wake-on-lan;
|
||||
in
|
||||
{
|
||||
options.snowhawk.wake-on-lan = {
|
||||
enable = mkEnableOption "wake-on-lan nixos module";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.wakeonlan = {
|
||||
description = "reenable wakeonlan every boot";
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
RemainAfterExit = "true";
|
||||
ExecStart = "${lib.getExe pkgs.ethtool} -s enp7s0 wol g";
|
||||
};
|
||||
wantedBy = [ "default.target" ];
|
||||
};
|
||||
};
|
||||
}
|
91
pkgs/borderlessBrowser/borderlessBrowser
Normal file
91
pkgs/borderlessBrowser/borderlessBrowser
Normal file
|
@ -0,0 +1,91 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eu
|
||||
|
||||
function die {
|
||||
supress_generic_error=1
|
||||
if [ -v bin_ZENITY ] && [ ! -z "$bin_ZENITY" ]; then
|
||||
"$bin_ZENITY" --error --text="$*"
|
||||
else
|
||||
echo "error: $*" 2>&2
|
||||
fi
|
||||
}
|
||||
|
||||
function absolute_binary {
|
||||
bin="$(command -v "$@" 2>&-)"
|
||||
if [ -z "$bin" ]; then
|
||||
die "No such commands: $@"
|
||||
fi
|
||||
echo $bin | head -n 1
|
||||
}
|
||||
|
||||
function cleanup {
|
||||
if [ $? != 0 ] && [ ! -v supress_generic_error ]; then
|
||||
die "Errors happened during runtime. See this script logs for details."
|
||||
fi
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
CHROME_BINARIES=(chromium)
|
||||
|
||||
if [ ! -v bin_ZENITY ]; then
|
||||
bin_ZENITY="$(absolute_binary zenity)"
|
||||
fi
|
||||
|
||||
if [ ! -v bin_CHROMIUM ]; then
|
||||
bin_CHROMIUM="$(absolute_binary chromium)"
|
||||
fi
|
||||
|
||||
if [ ! -v text_QUERY ]; then
|
||||
text_QUERY="Link to be opened"
|
||||
fi
|
||||
|
||||
if [ ! -v text_NOURL ]; then
|
||||
text_NOURL="No URL specified"
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
URL="$("$bin_ZENITY" --entry --text="$text_QUERY" || true)"
|
||||
else
|
||||
URL="$@"
|
||||
fi
|
||||
|
||||
if [ -z "$URL" ]; then
|
||||
die $text_NOURL
|
||||
fi
|
||||
|
||||
if [[ "$URL" =~ ^~ ]]; then
|
||||
URL=$(echo $URL | sed -E s:^~\/?::)
|
||||
URL="file://$HOME/$URL"
|
||||
fi
|
||||
|
||||
if [[ "$URL" =~ ^\/ ]]; then
|
||||
URL="file://$URL"
|
||||
fi
|
||||
|
||||
if [[ ! "$URL" =~ ^(file|https?)?:\/\/ ]]; then
|
||||
URL="https://$URL"
|
||||
fi
|
||||
|
||||
echo final url: $URL
|
||||
|
||||
chromeFlags=()
|
||||
|
||||
if [ ! -v CHROME_DONT_BORDERLESS ]; then
|
||||
chromeFlags+=(--app="$URL")
|
||||
else
|
||||
chromeFlags+=("$URL")
|
||||
fi
|
||||
|
||||
if [ ! -v profileToplevel ]; then
|
||||
profileToplevel=~/.config/borderless-browser-profiles
|
||||
fi
|
||||
|
||||
if [ -v CHROME_PROFILE ] && [[ "$CHROME_PROFILE" =~ ^[a-zA-Z_0-9-]*$ ]]; then
|
||||
profileDir=$profileToplevel/$CHROME_PROFILE
|
||||
chromeFlags+=(--user-data-dir="$profileDir")
|
||||
fi
|
||||
|
||||
echo "${chromeFlags[@]}"
|
||||
"$bin_CHROMIUM" "${chromeFlags[@]}"
|
83
pkgs/borderlessBrowser/default.nix
Normal file
83
pkgs/borderlessBrowser/default.nix
Normal file
|
@ -0,0 +1,83 @@
|
|||
{ lib
|
||||
, stdenvNoCC
|
||||
, chromium
|
||||
, gnome3
|
||||
, zenity ? gnome3.zenity
|
||||
, makeDesktopItem
|
||||
, copyDesktopItems
|
||||
, makeWrapper
|
||||
}:
|
||||
let
|
||||
mkWebapp =
|
||||
{ name ? "webapp"
|
||||
, desktopName ? "Web Application"
|
||||
, browser ? lib.getExe chromium
|
||||
, icon ? "applications-internet"
|
||||
, url ? null
|
||||
, queryText ? "Link to be opened"
|
||||
, noURLSpecifiedText ? "No URL specified"
|
||||
, profile ? null
|
||||
, passthru ? { }
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
makeWrapperArgs = [
|
||||
"--set-default"
|
||||
"text_QUERY"
|
||||
queryText
|
||||
"--set-default"
|
||||
"text_NOURL"
|
||||
noURLSpecifiedText
|
||||
"--set"
|
||||
"bin_CHROMIUM"
|
||||
browser
|
||||
"--set"
|
||||
"bin_ZENITY"
|
||||
(lib.getExe zenity)
|
||||
]
|
||||
++ (lib.optionals (profile != null) [ "--set" "CHROME_PROFILE" profile ])
|
||||
++ (lib.optionals (url != null) [ "--add-flags" url ])
|
||||
;
|
||||
|
||||
in
|
||||
stdenvNoCC.mkDerivation (attrs: {
|
||||
name = "webapp-${name}";
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
nativeBuildInputs = [ copyDesktopItems makeWrapper ];
|
||||
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
|
||||
makeWrapper ${./borderlessBrowser} $out/bin/$name ${lib.escapeShellArgs makeWrapperArgs}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
substituteInPlace $out/share/applications/$name.desktop --replace @bin@ $out/bin/$name
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
inherit (attrs) name;
|
||||
inherit desktopName icon;
|
||||
type = "Application";
|
||||
exec = "@bin@";
|
||||
})
|
||||
];
|
||||
|
||||
passthru = passthru // { inherit makeWrapperArgs; };
|
||||
});
|
||||
|
||||
in
|
||||
mkWebapp {
|
||||
passthru = {
|
||||
wrap = mkWebapp;
|
||||
};
|
||||
}
|
18
pkgs/default.nix
Normal file
18
pkgs/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
final: prev:
|
||||
let
|
||||
callDefaultPackage = path: prev.callPackage path { };
|
||||
in
|
||||
{
|
||||
lib = prev.lib.extend (import ../lib);
|
||||
|
||||
wrapWine = callDefaultPackage ./wrapWine;
|
||||
writeXrandrScriptBin = callDefaultPackage ./writeXrandrScriptBin;
|
||||
borderlessBrowser = callDefaultPackage ./borderlessBrowser;
|
||||
zenBrowser = callDefaultPackage ./zenBrowser;
|
||||
rose-pine-grub = callDefaultPackage ./rosePineGrub;
|
||||
dwm-msg = callDefaultPackage ./dwm-msg;
|
||||
dwlmsg = callDefaultPackage ./dwlmsg;
|
||||
uhk-agent = callDefaultPackage ./uhk-agent;
|
||||
pipewire-controller = callDefaultPackage ./pipewire-controller;
|
||||
dorion = callDefaultPackage ./dorion;
|
||||
}
|
195
pkgs/dorion/default.nix
Normal file
195
pkgs/dorion/default.nix
Normal file
|
@ -0,0 +1,195 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, fetchurl
|
||||
, rustPlatform
|
||||
, cmake
|
||||
, ninja
|
||||
, wrapGAppsHook4
|
||||
, glib-networking
|
||||
, gst_all_1
|
||||
, libsysprof-capture
|
||||
, libayatana-appindicator
|
||||
, nodejs
|
||||
, openssl
|
||||
, pkg-config
|
||||
, yq-go
|
||||
, pnpm_9
|
||||
, webkitgtk_4_1
|
||||
, cargo-tauri
|
||||
, desktop-file-utils
|
||||
,
|
||||
}:
|
||||
|
||||
let
|
||||
webkitgtk_4_1' = webkitgtk_4_1.override {
|
||||
enableExperimental = true;
|
||||
};
|
||||
|
||||
shelter = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/uwu/shelter-builds/4264c79a7e8efb2c0000c180dd8369c9a5194105/shelter.js";
|
||||
hash = "sha256-C+iPl40QN2CfhHX8cc+5mu+8qfD1VZDJHbUjfY2QcUg=";
|
||||
meta = {
|
||||
homepage = "https://github.com/uwu/shelter";
|
||||
sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; # actually, minified JS
|
||||
license = lib.licenses.cc0;
|
||||
};
|
||||
};
|
||||
in
|
||||
|
||||
# nyo finalAttrs :<
|
||||
# https://github.com/NixOS/nixpkgs/pull/194475
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "dorion";
|
||||
version = "6.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SpikeHD";
|
||||
repo = "Dorion";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-EetRPa2v2UBav+UwprG7TgcswNzbjfBMvP4xlYOnWYI=";
|
||||
};
|
||||
|
||||
cargoPatches = [
|
||||
./no-cargo-patch.patch
|
||||
];
|
||||
|
||||
cargoRoot = "src-tauri";
|
||||
buildAndTestSubdir = cargoRoot;
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-+AVmg/fyIsyksOoGwphePdd+9VtklTO1SFWlM+FBgbE=";
|
||||
|
||||
pnpmDeps = pnpm_9.fetchDeps {
|
||||
inherit pname version src;
|
||||
hash = "sha256-xBonUzA4+1zbViEsKap6CaG6ZRldW1LjNYIB+FmVRFs=";
|
||||
};
|
||||
|
||||
# CMake (webkit extension)
|
||||
cmakeDir = ".";
|
||||
cmakeBuildDir = "src-tauri/extension_webkit";
|
||||
dontUseCmakeConfigure = true;
|
||||
dontUseNinjaBuild = true;
|
||||
dontUseNinjaCheck = true;
|
||||
dontUseNinjaInstall = true;
|
||||
# cmake's supposed to set this automatically
|
||||
# ... but the detection is based on the presence of ninja build hook
|
||||
cmakeFlags = [
|
||||
"-GNinja"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pnpm_9.configHook
|
||||
cargo-tauri.hook
|
||||
nodejs
|
||||
pkg-config
|
||||
wrapGAppsHook4
|
||||
yq-go
|
||||
desktop-file-utils
|
||||
cmake
|
||||
ninja
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
webkitgtk_4_1'
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-bad
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-plugins-rs
|
||||
glib-networking
|
||||
libsysprof-capture
|
||||
libayatana-appindicator
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# remove updater
|
||||
rm -rf updater
|
||||
|
||||
# patch cargo-deps
|
||||
pushd $cargoDepsCopy/tauri-plugin-shell-*
|
||||
patch -p1 < /build/source/src-tauri/patches/tauri-plugin-shell+*.patch
|
||||
popd
|
||||
|
||||
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
|
||||
--replace "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
|
||||
|
||||
# disable pre-build script and disable auto-updater
|
||||
yq -iPo=json '
|
||||
.bundle.resources = (.bundle.resources | map(select(. != "updater*")))
|
||||
' src-tauri/tauri.conf.json
|
||||
|
||||
# link shelter injection
|
||||
ln -s ${shelter} src-tauri/injection/shelter.js
|
||||
|
||||
# link html/frontend data
|
||||
ln -s /build/source/src /build/source/src-tauri/html
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
cmakeConfigurePhase
|
||||
pnpmConfigHook
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
ninjaBuildPhase
|
||||
cd /build/source
|
||||
tauriBuildHook
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Set up the resource directories
|
||||
mkdir -p $out/lib/Dorion
|
||||
ln -s $out/lib/Dorion $out/lib/dorion
|
||||
rm -rf $out/lib/Dorion/injection
|
||||
cp -r src-tauri/injection $out/lib/Dorion
|
||||
cp -r src $out/lib/Dorion
|
||||
|
||||
# Modify the desktop file
|
||||
desktop-file-edit \
|
||||
--set-comment "Tiny alternative Discord client" \
|
||||
--set-key="Exec" --set-value="Dorion %U" \
|
||||
--set-key="TryExec" --set-value="Dorion" \
|
||||
--set-key="StartupWMClass" --set-value="Dorion" \
|
||||
--set-key="StartupNotify" --set-value="true" \
|
||||
--set-key="Categories" --set-value="Network;InstantMessaging;Chat;" \
|
||||
--set-key="Keywords" --set-value="dorion;discord;vencord;chat;im;vc;ds;dc;dsc;tauri;" \
|
||||
--set-key="Terminal" --set-value="false" \
|
||||
--set-key="MimeType" --set-value="x-scheme-handler/discord" \
|
||||
$out/share/applications/Dorion.desktop
|
||||
'';
|
||||
|
||||
# error: failed to run custom build command for `Dorion v6.4.1 (/build/source/src-tauri)`
|
||||
# Permission denied (os error 13)
|
||||
doCheck = false;
|
||||
|
||||
env = {
|
||||
TAURI_RESOURCE_DIR = "${placeholder "out"}/lib";
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://spikehd.github.io/projects/dorion/";
|
||||
description = "Tiny alternative Discord client";
|
||||
longDescription = ''
|
||||
Dorion is an alternative Discord client aimed towards lower-spec or
|
||||
storage-sensitive PCs that supports themes, plugins, and more!
|
||||
'';
|
||||
changelog = "https://github.com/SpikeHD/Dorion/releases/tag/v${version}";
|
||||
downloadPage = "https://github.com/SpikeHD/Dorion/releases/tag/v${version}";
|
||||
license = with lib.licenses; [
|
||||
gpl3Only
|
||||
cc0 # Shelter
|
||||
];
|
||||
mainProgram = "Dorion";
|
||||
maintainers = with lib.maintainers; [
|
||||
nyabinary
|
||||
aleksana
|
||||
griffi-gh
|
||||
getchoo
|
||||
];
|
||||
platforms = lib.platforms.linux;
|
||||
sourceProvenance = [
|
||||
lib.sourceTypes.binaryBytecode # actually, minified JS
|
||||
lib.sourceTypes.fromSource
|
||||
];
|
||||
};
|
||||
}
|
31
pkgs/dorion/no-cargo-patch.patch
Normal file
31
pkgs/dorion/no-cargo-patch.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
|
||||
index 59f676d..b7090d4 100644
|
||||
--- a/src-tauri/Cargo.lock
|
||||
+++ b/src-tauri/Cargo.lock
|
||||
@@ -4954,6 +4954,8 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tauri-plugin-shell"
|
||||
version = "2.0.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "0ad7880c5586b6b2104be451e3d7fc0f3800c84bda69e9ba81c828f87cb34267"
|
||||
dependencies = [
|
||||
"encoding_rs",
|
||||
"log",
|
||||
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
|
||||
index 62a508b..0bbe935 100644
|
||||
--- a/src-tauri/Cargo.toml
|
||||
+++ b/src-tauri/Cargo.toml
|
||||
@@ -12,13 +12,6 @@ rust-version = "1.81"
|
||||
strip = "debuginfo"
|
||||
lto = true
|
||||
|
||||
-# Patches
|
||||
-[package.metadata.patch]
|
||||
-crates = ["tauri-plugin-shell"]
|
||||
-
|
||||
-[patch.crates-io]
|
||||
-tauri-plugin-shell = { path="./target/patch/tauri-plugin-shell-2.0.2" }
|
||||
-
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2.0.0", features = [] }
|
||||
|
38
pkgs/dwlmsg/default.nix
Normal file
38
pkgs/dwlmsg/default.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchgit
|
||||
, pkg-config
|
||||
, wayland-scanner
|
||||
, kdePackages
|
||||
,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "dwlmsg";
|
||||
version = "0-unstable-2025-01-13";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://codeberg.org/notchoc/dwlmsg/";
|
||||
rev = "7cfc2635984611e6eceef011084f21c22979b3d0";
|
||||
hash = "sha256-uEw9QY0WveM8cu7uhXLbIKLYgtmyUyMxEDti+uWLoCU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
wayland-scanner
|
||||
kdePackages.wayland
|
||||
];
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "send ipc messages to dwl";
|
||||
homepage = "https://codeberg.org/notchoc/dwlmsg";
|
||||
license = licenses.unfree;
|
||||
mainProgram = "dwm-msg";
|
||||
maintainers = with lib.maintainers; [ nullcube ];
|
||||
};
|
||||
}
|
44
pkgs/dwm-msg/default.nix
Normal file
44
pkgs/dwm-msg/default.nix
Normal file
|
@ -0,0 +1,44 @@
|
|||
# Yoinky Sploinky https://git.nullcube.net/nullcube/nullpkgs/src/branch/main/pkgs/dwm-msg/default.nix
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, libX11
|
||||
, libXft
|
||||
, libXinerama
|
||||
, pkg-config
|
||||
, yajl
|
||||
,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dwm-msg";
|
||||
version = "1.5.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mihirlad55";
|
||||
repo = "dwm-ipc";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-ReQbA551i6YOQi/Qoive7jANnD5/IcXGApHHctgPdOM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
libX11
|
||||
libXinerama
|
||||
libXft
|
||||
yajl
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp dwm-msg $out/bin/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "a cli program that can be used to run commands, query dwm for information, and listen for events.";
|
||||
homepage = "https://github.com/mihirlad55/dwm-ipc";
|
||||
license = licenses.mit;
|
||||
# platforms = platforms.all;
|
||||
mainProgram = "dwm-msg";
|
||||
};
|
||||
}
|
BIN
pkgs/pipewire-controller/audio/discord-mute.mp3
Normal file
BIN
pkgs/pipewire-controller/audio/discord-mute.mp3
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue