Compare commits
548 Commits
4d88ea7cbc
...
nod
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e73b7333fc | ||
|
|
fcfc125373 | ||
|
|
3418cfd8f3 | ||
|
|
2585c76039 | ||
|
|
04f10a4afd | ||
|
|
651458875c | ||
|
|
9d04a09de8 | ||
|
|
0eaa052cd5 | ||
|
|
64a54b2cd6 | ||
|
|
55a22804c5 | ||
|
|
d85386bf9c | ||
|
|
1698d0f851 | ||
|
|
18d93e6b0c | ||
|
|
91020c0072 | ||
|
|
e6c5cd5ead | ||
|
|
068fd19353 | ||
|
|
6f7449839d | ||
|
|
9e2eb410ab | ||
|
|
fb974329e7 | ||
|
|
7a70d7dae3 | ||
|
|
e7c1c255bc | ||
|
|
52fe355b0a | ||
|
|
29a917ed37 | ||
|
|
7655e7b3bd | ||
|
|
858a8b77ec | ||
|
|
ba199f9568 | ||
|
|
5f3a3a6f30 | ||
|
|
9472550aaa | ||
|
|
1b7fe7f7ca | ||
|
|
b64abba7e5 | ||
|
|
df06425803 | ||
|
|
6befb22a59 | ||
|
|
b4cd70b5f6 | ||
|
|
78975da970 | ||
|
|
90c093fcef | ||
|
|
40eefbf948 | ||
|
|
042e8c7ee7 | ||
|
|
685a34fcbb | ||
|
|
812555c467 | ||
|
|
ffddb4773b | ||
|
|
98c0a26209 | ||
|
|
e25ad7891d | ||
|
|
470922dce2 | ||
|
|
b0cb61f05e | ||
|
|
e8373d6293 | ||
|
|
ff5de39a19 | ||
|
|
1fc8b2a7cb | ||
|
|
e19ed3ece1 | ||
|
|
4c178e57fa | ||
|
|
f7de7f740d | ||
|
|
6809a6494f | ||
|
|
21fee7056a | ||
|
|
d581209fdf | ||
|
|
67c1f6fb25 | ||
|
|
c1ca5b2cf5 | ||
|
|
3818645825 | ||
|
|
8e84355efd | ||
|
|
f11db2239e | ||
|
|
ebfd72baa8 | ||
|
|
6804f98b99 | ||
|
|
418dcad22c | ||
|
|
31925a5074 | ||
|
|
d3a407f1a5 | ||
|
|
122a4c6cd8 | ||
|
|
5fda879078 | ||
|
|
7b3d4e5dfd | ||
|
|
61984aecf9 | ||
|
|
e422234758 | ||
|
|
b7eb065442 | ||
|
|
60b4066e9b | ||
|
|
cea416b457 | ||
|
|
9d28a08cd4 | ||
|
|
6a4f270959 | ||
|
|
a4d6b98b4b | ||
|
|
ea3d4937ff | ||
|
|
aa6962cb0d | ||
|
|
fa168f01a6 | ||
|
|
511dac22a8 | ||
|
|
74fd62d6dc | ||
|
|
d8704de501 | ||
|
|
9f49dbbd98 | ||
|
|
caf48a81dd | ||
|
|
9399657469 | ||
|
|
10a50773e1 | ||
|
|
d81aa406a4 | ||
|
|
0f17b0c56e | ||
|
|
9b999bae90 | ||
|
|
1da06c73d1 | ||
|
|
84f7003bb6 | ||
|
|
4a83be441b | ||
|
|
e98cc3f4c5 | ||
|
|
07c637749a | ||
|
|
579887e825 | ||
|
|
a2003bc5aa | ||
|
|
d0964c01a7 | ||
|
|
04b2b7da33 | ||
|
|
f4f9e36b16 | ||
|
|
99b534a6a5 | ||
|
|
03131c8a65 | ||
|
|
7565b3163a | ||
|
|
960e786ee5 | ||
|
|
75904231c5 | ||
|
|
1085acc0f5 | ||
|
|
cd25a1a569 | ||
|
|
d009d109a9 | ||
|
|
b4b7378afa | ||
|
|
01deb843e4 | ||
|
|
efe96374de | ||
|
|
35c5760f50 | ||
|
|
fb17f37662 | ||
|
|
e81d82ad6e | ||
|
|
2c6e0f0b73 | ||
|
|
432c1e18f8 | ||
|
|
482b96d0ae | ||
|
|
208d1ed7b4 | ||
|
|
0162b27d79 | ||
|
|
1191019cf8 | ||
|
|
880b3abd60 | ||
|
|
5c9d924606 | ||
|
|
151f61d31e | ||
|
|
eba7f91576 | ||
|
|
eed5c14a25 | ||
|
|
8982916aee | ||
|
|
87ec047d20 | ||
|
|
8be6a841d0 | ||
|
|
bfc57081b8 | ||
|
|
edb394c95c | ||
|
|
5d3491ecec | ||
|
|
871a270a21 | ||
|
|
f222c3b595 | ||
|
|
de8e26e6e3 | ||
|
|
83af085bd6 | ||
|
|
9d84b4bcf0 | ||
|
|
69090a5aa2 | ||
|
|
a62a2113ca | ||
|
|
647830080a | ||
|
|
f22ef9939c | ||
|
|
42a4a2fe0e | ||
|
|
0340fbfacd | ||
|
|
dee4b516b0 | ||
|
|
0821124f4f | ||
|
|
395c676fc6 | ||
|
|
f67d54c66b | ||
|
|
baa8a43692 | ||
|
|
b6b6115b4e | ||
|
|
167f3936dc | ||
|
|
4ef43805ae | ||
|
|
bb773f0dee | ||
|
|
35ad7c04e9 | ||
|
|
31ef18fc34 | ||
|
|
9cb47d96d9 | ||
|
|
9ade97edb9 | ||
|
|
872082819b | ||
|
|
cf66ef2ea9 | ||
|
|
9368c387dc | ||
|
|
da268cd46a | ||
|
|
dd3b850221 | ||
|
|
2ecb7486bb | ||
|
|
bbe16598ad | ||
|
|
c64ade92b7 | ||
|
|
82c2d4c85c | ||
|
|
66f543b966 | ||
|
|
000d37ebed | ||
|
|
17bd864d5c | ||
|
|
0d1a9d0554 | ||
|
|
f3b953e87b | ||
|
|
1ee84d5dd8 | ||
|
|
1b530779aa | ||
|
|
7978dc1987 | ||
|
|
2384158d1c | ||
|
|
58d0b12e1f | ||
|
|
ba66d8bbef | ||
|
|
0f95741b5a | ||
|
|
88eadf2d64 | ||
|
|
46bdbb10f9 | ||
|
|
381489b567 | ||
|
|
0929c6287d | ||
|
|
950ffac450 | ||
|
|
3bc47393b3 | ||
|
|
9d9b2cf84d | ||
|
|
c1710f928f | ||
|
|
9c0094949e | ||
|
|
8e3ec6c603 | ||
|
|
78f6fb64d0 | ||
|
|
244e40a746 | ||
|
|
7b9f009a27 | ||
|
|
4fdc4becf0 | ||
|
|
6d2f90486f | ||
|
|
d6d4a1f3b5 | ||
|
|
04dcba2d3f | ||
|
|
d2d1ce7830 | ||
|
|
fbd045d53e | ||
|
|
027dee164d | ||
|
|
e651b39126 | ||
|
|
5a242c60a5 | ||
|
|
be9f5c23e8 | ||
|
|
c5a0f61faa | ||
|
|
786648990f | ||
|
|
30f5ee6a3a | ||
|
|
7544b0dbac | ||
|
|
68eb400210 | ||
|
|
7952492672 | ||
|
|
fa3348c5c2 | ||
|
|
8a47706856 | ||
|
|
cc9026297e | ||
|
|
bf30ac72d1 | ||
|
|
10344ce639 | ||
|
|
a76fe844c6 | ||
|
|
feb6d269de | ||
|
|
76e83f6498 | ||
|
|
46ad89fe0d | ||
|
|
c186666394 | ||
|
|
6b8d1d277b | ||
|
|
2c358380e4 | ||
|
|
935beadb3b | ||
|
|
5775bc88d6 | ||
|
|
3285d23223 | ||
|
|
a8629627ea | ||
|
|
68c749474e | ||
|
|
e0b43bcbe5 | ||
|
|
10e1941c5a | ||
|
|
2d697c079d | ||
|
|
ed18e8bd51 | ||
|
|
a9670b5896 | ||
|
|
b5e66bbf43 | ||
|
|
e1f74665c1 | ||
|
|
c8903a6b56 | ||
|
|
b1258be64b | ||
|
|
7b08304f78 | ||
|
|
d439996d0c | ||
|
|
c566e4f40a | ||
|
|
272ae1cd55 | ||
|
|
c4052ec34d | ||
|
|
f4f80ffbde | ||
|
|
2de110149f | ||
|
|
b0ab87bbab | ||
|
|
edde9bd52b | ||
|
|
bf56cc88bf | ||
|
|
393d7f4fc4 | ||
|
|
2ecb4ce65a | ||
|
|
88e73a3ea8 | ||
|
|
8be84ff0a9 | ||
|
|
9d3418bec2 | ||
|
|
68cb4377b7 | ||
|
|
ce140cf4f2 | ||
|
|
a60e90ab8f | ||
|
|
89adbab83b | ||
|
|
09837534ea | ||
|
|
a769f9eb1f | ||
|
|
031215cb4f | ||
|
|
b36e420e89 | ||
|
|
0a52deb024 | ||
|
|
d3b5bb0d60 | ||
|
|
5a1c9eeacb | ||
|
|
b9d8a339d2 | ||
|
|
9fe46133da | ||
|
|
f35172fde1 | ||
|
|
6b79aca0be | ||
|
|
9788b83d82 | ||
|
|
366644f5d2 | ||
|
|
3891119804 | ||
|
|
e8284be564 | ||
|
|
6c6dd819a8 | ||
|
|
014fca20a9 | ||
|
|
2b51508030 | ||
|
|
7e8f5f6751 | ||
|
|
61a788961d | ||
|
|
8a8780ff71 | ||
|
|
921f8fc6a7 | ||
|
|
977837f81e | ||
|
|
17bbc58503 | ||
|
|
61fa0dd7fd | ||
|
|
f08777fdab | ||
|
|
7a6f6aac82 | ||
|
|
86ce0ac9d4 | ||
|
|
e08b0e8184 | ||
|
|
02c48e8eaa | ||
|
|
0876ec355e | ||
|
|
28dd018961 | ||
|
|
ce363cafe1 | ||
|
|
67202e47e3 | ||
|
|
d7d9b8e39c | ||
|
|
1a52cafa66 | ||
|
|
b3a419de26 | ||
|
|
0b3931ff86 | ||
|
|
2b854183ac | ||
|
|
18013b83df | ||
|
|
6b4a76dd4a | ||
|
|
c15bf8c58e | ||
|
|
60a839663a | ||
|
|
ee72de3539 | ||
|
|
73281b62d9 | ||
|
|
e5e7164a93 | ||
|
|
3ed506a924 | ||
|
|
33503c4485 | ||
|
|
5c8e50aa9f | ||
|
|
c9106e8484 | ||
|
|
62b40404c7 | ||
|
|
07a320147d | ||
|
|
34cdfc4def | ||
|
|
545b61a79f | ||
|
|
feb2f93360 | ||
|
|
8fb93e5f2b | ||
|
|
e5e3eaaff4 | ||
|
|
4bc88c8d13 | ||
|
|
a5c8d284ee | ||
|
|
c2f151e03e | ||
|
|
b0b643f164 | ||
|
|
99c07ec5fb | ||
|
|
3f553d27e1 | ||
|
|
a6a17574b8 | ||
|
|
78359c710f | ||
|
|
2206e5472b | ||
|
|
9c96585401 | ||
|
|
ac36fa13ac | ||
|
|
b4586e8661 | ||
|
|
5a6199a8a9 | ||
|
|
5e34285db2 | ||
|
|
9612646c55 | ||
|
|
7324904db9 | ||
|
|
132c169e24 | ||
|
|
207961e397 | ||
|
|
73339cfc50 | ||
|
|
94559de7ae | ||
|
|
89fa46aa6d | ||
|
|
0fbb54a04a | ||
|
|
9619164eb4 | ||
|
|
343fc2ac4e | ||
|
|
9c98199ee3 | ||
|
|
3652cdfca9 | ||
|
|
2699268b81 | ||
|
|
e4d0326a74 | ||
|
|
8525adecf4 | ||
|
|
c381580cca | ||
|
|
aea641cd9c | ||
|
|
2179dbf1d8 | ||
|
|
6f5f70f439 | ||
|
|
d40175d4a5 | ||
|
|
34eba60193 | ||
|
|
57230a32c3 | ||
|
|
d9146432e4 | ||
|
|
447e6edd56 | ||
|
|
aa58ca79bb | ||
|
|
a2692f6837 | ||
|
|
c031de7fec | ||
|
|
918342fdf3 | ||
|
|
d8f623f1a0 | ||
|
|
6a4460d089 | ||
|
|
e61954442f | ||
|
|
f5aa965369 | ||
|
|
eb812dc9e0 | ||
|
|
6d4d118685 | ||
|
|
94a78942f8 | ||
|
|
5c2437cee1 | ||
|
|
fa8875c0ee | ||
|
|
2040ce3ea0 | ||
|
|
d9822a7a91 | ||
|
|
d2e0b9d2d3 | ||
|
|
ccdd036935 | ||
|
|
5d36be3804 | ||
|
|
2640b00b05 | ||
|
|
9087100c42 | ||
|
|
5c9a92c68e | ||
|
|
1fd894a3b3 | ||
|
|
09316011ab | ||
|
|
fdce6c3d57 | ||
|
|
1be03c39ad | ||
|
|
a0c098ea1f | ||
|
|
9a4e3d7a78 | ||
|
|
1005cc522d | ||
|
|
729e7e5f0e | ||
|
|
79cbdc9f69 | ||
|
|
c6ca7c95f4 | ||
|
|
e878158b71 | ||
|
|
ed5f0784d1 | ||
|
|
051648954a | ||
|
|
f5538e69a5 | ||
|
|
a82660b049 | ||
|
|
f828268b14 | ||
|
|
02c7814ce4 | ||
|
|
e36ffd828b | ||
|
|
219a19a3a8 | ||
|
|
683913e0fe | ||
|
|
837e64c377 | ||
|
|
f8497f5538 | ||
|
|
9c2a69aa03 | ||
|
|
a8c3a12089 | ||
|
|
b8199c24ef | ||
|
|
971cea5418 | ||
|
|
d12b9ddf2f | ||
|
|
e4ec830aaa | ||
|
|
ebb1da3fc2 | ||
|
|
80e06b3f49 | ||
|
|
605381b553 | ||
|
|
298d31e21a | ||
|
|
947b824796 | ||
|
|
edbe4e7f66 | ||
|
|
dbccb827ad | ||
|
|
f5af726382 | ||
|
|
e95332cedb | ||
|
|
6a7d8fe4be | ||
|
|
37eb70db63 | ||
|
|
77e9aa4ddd | ||
|
|
e26ac7cbe2 | ||
|
|
66221229ca | ||
|
|
9b36c29009 | ||
|
|
55587f35f6 | ||
|
|
966f9d67fc | ||
|
|
2e1c0f495b | ||
|
|
ab4c26c178 | ||
|
|
91a5a6def8 | ||
|
|
104d1334df | ||
|
|
c19c270775 | ||
|
|
c5c41087b5 | ||
|
|
924f48b15a | ||
|
|
6abff56bbd | ||
|
|
5f9c6dd0a3 | ||
|
|
c426029a25 | ||
|
|
1790336aa5 | ||
|
|
06a630319d | ||
|
|
1814068cfe | ||
|
|
096f31d81a | ||
|
|
148bd4c481 | ||
|
|
f9d4921726 | ||
|
|
169d6eda11 | ||
|
|
97f33c7b8d | ||
|
|
340c514a99 | ||
|
|
b3d3c983c2 | ||
|
|
3a30fc2131 | ||
|
|
abd5b60ffa | ||
|
|
e3e52fb656 | ||
|
|
115a6d3c83 | ||
|
|
14df46a631 | ||
|
|
0c92fcd686 | ||
|
|
085d593ce1 | ||
|
|
fb082f76ed | ||
|
|
89ed2c0748 | ||
|
|
a32d8ad3ce | ||
|
|
d93ae4a78b | ||
|
|
8f3b04c191 | ||
|
|
8b96d1205b | ||
|
|
dbeb5524a0 | ||
|
|
2b873c8b81 | ||
|
|
2fcdf32944 | ||
|
|
24bb3136cf | ||
|
|
f32d77f7ff | ||
|
|
c6f7d73f89 | ||
|
|
1e3112b590 | ||
|
|
7639bed3fe | ||
|
|
d46530edd8 | ||
|
|
5ed4edc375 | ||
|
|
f422551ac3 | ||
|
|
5a40c8e1f9 | ||
|
|
b6d1b38ad9 | ||
|
|
f5016976ab | ||
|
|
059abbf549 | ||
|
|
dfaf24c9e1 | ||
|
|
a1d34a70c8 | ||
|
|
ea61c7e30d | ||
|
|
4ab26fbc08 | ||
|
|
6ab9da1b0c | ||
|
|
7ed29be1e6 | ||
|
|
e076123fa7 | ||
|
|
9d9d36dda8 | ||
|
|
c6d0205f8b | ||
|
|
96828bacd0 | ||
|
|
c16d439731 | ||
|
|
c8e0c2c832 | ||
|
|
19e7f2dd3a | ||
|
|
cfb112429d | ||
|
|
c0ff63e427 | ||
|
|
b7bf1f1bd7 | ||
|
|
9ad191f37c | ||
|
|
c61e6c9980 | ||
|
|
d626a5bd7d | ||
|
|
5eda39414a | ||
|
|
cbe9371e66 | ||
|
|
a10b22b9e3 | ||
|
|
fd3ca3a1d3 | ||
|
|
f2589a350d | ||
|
|
f24b4ae320 | ||
|
|
689ef45935 | ||
|
|
2492c5bd80 | ||
|
|
c9c6423bb3 | ||
|
|
d7cc5f77d7 | ||
|
|
3cfcbc1e2a | ||
|
|
69e2bed0ce | ||
|
|
13264dfa24 | ||
|
|
c1f24f2dc2 | ||
|
|
20f8ea51c6 | ||
|
|
52d81b9175 | ||
|
|
befa7fe91e | ||
|
|
4eead91953 | ||
|
|
ce84d681e0 | ||
|
|
5d1d2c49e5 | ||
|
|
73b0e338fc | ||
|
|
4b42af4523 | ||
|
|
1e0af7a61b | ||
|
|
ad784f41f9 | ||
|
|
ad885f7675 | ||
|
|
97ef1500ab | ||
|
|
d29a12094a | ||
|
|
dffd47fa94 | ||
|
|
70b3d92fb1 | ||
|
|
93bcb23085 | ||
|
|
bb60da2409 | ||
|
|
6b33a71dd3 | ||
|
|
63e68509e3 | ||
|
|
152a42db08 | ||
|
|
71fba2ade8 | ||
|
|
4ad5da9956 | ||
|
|
2fc38d5ee7 | ||
|
|
03d3741aed | ||
|
|
813a3fd019 | ||
|
|
c9f988e4e4 | ||
|
|
ec0325a8b0 | ||
|
|
3205ca267b | ||
|
|
84a92a304a | ||
|
|
a7ffa9425a | ||
|
|
b3f33edf19 | ||
|
|
295277ad00 | ||
|
|
7356853a1d | ||
|
|
a20d64e278 | ||
|
|
ae997e92aa | ||
|
|
8394da19df | ||
|
|
bf3ac16c62 | ||
|
|
981d72cdb7 | ||
|
|
f6afb7d9e6 | ||
|
|
cc9dd87111 | ||
|
|
c4e7371e22 | ||
|
|
58e6dc97f4 | ||
|
|
9cb5a17bc1 | ||
|
|
e07e98120a | ||
|
|
6b9190b8e1 | ||
|
|
368f3a25fd | ||
|
|
708efdefb8 | ||
|
|
a791568530 | ||
|
|
4a003baae2 | ||
|
|
a5b4fe2c3f | ||
|
|
8280a0d245 | ||
|
|
086f52da79 | ||
|
|
a0911caacf | ||
|
|
7f01722448 | ||
|
|
6914a99658 | ||
|
|
de3973b4e4 | ||
|
|
b8c1c7f302 | ||
|
|
d0b95bce88 | ||
|
|
85ec6f4c7c |
0
.gitattributes
vendored
Executable file → Normal file
0
.gitattributes
vendored
Executable file → Normal file
0
.gitignore
vendored
Executable file → Normal file
0
.gitignore
vendored
Executable file → Normal file
15
.ignore
Normal file
15
.ignore
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
flake.lock
|
||||||
|
*.remmina
|
||||||
|
*.pem
|
||||||
|
*.env
|
||||||
|
*.key
|
||||||
|
*.ovpn
|
||||||
|
sops-secrets.yaml
|
||||||
|
*.png
|
||||||
|
*.jpg
|
||||||
|
*.webp
|
||||||
|
*.gif
|
||||||
|
*.mp3
|
||||||
|
*.mp4
|
||||||
|
|
||||||
|
|
||||||
10
.sops.yaml
10
.sops.yaml
@@ -1,7 +1,10 @@
|
|||||||
keys:
|
keys:
|
||||||
- &users:
|
- &users:
|
||||||
- &nx2backup age1sgzc2jh8af30a3cp6g7l4hyzusqrn3x3xw7frghc4akvjaplwa3stfemxc
|
|
||||||
- &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634
|
- &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634
|
||||||
|
- &nx2_key_13 age1x2lpsennl74n0f5jl60uv2ffjcuqymzf9ap3frlz2quyv0x3hq3scnewwq
|
||||||
|
- &xps-home age1pn4utvwpqdrswn0xurfdexn5nks9cd06jxzwg3m3m6za25ap4vxqxd0p3k
|
||||||
|
- &ace-home age1ur5zpr325cv7w0yn49azz9f48xsxd73w2sytt22yrnw5qs9r34nsv3vl05
|
||||||
|
- &north-home age1jr72q042ccgxpdgdaaev0arzc0vh3r02etv2tzhhsejl0mfaxs3q9hhlaz
|
||||||
- &hosts:
|
- &hosts:
|
||||||
- &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e
|
- &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e
|
||||||
- &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6
|
- &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6
|
||||||
@@ -13,6 +16,9 @@ creation_rules:
|
|||||||
- *north
|
- *north
|
||||||
- *xps
|
- *xps
|
||||||
- *ace
|
- *ace
|
||||||
- *nx2backup
|
- *nx2_key_13
|
||||||
|
- *xps-home
|
||||||
|
- *ace-home
|
||||||
|
- *north-home
|
||||||
pgp:
|
pgp:
|
||||||
- *nx2
|
- *nx2
|
||||||
|
|||||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 Lennart J. Kurzweg
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
46
README.md
Normal file
46
README.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# ❄️ NixOS Dotfiles
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Information
|
||||||
|
|
||||||
|
- Using stable + unstable via flakes
|
||||||
|
- Multi-host config (Desktop, Laptop, Server)
|
||||||
|
- Using home-manager for home-configuration
|
||||||
|
- Using sops-nix with GPG + git-crypt for secrets
|
||||||
|
|
||||||
|
## Features:
|
||||||
|
- The WM Hyperland extended to more or less full a DE with
|
||||||
|
- automounting
|
||||||
|
- notifications
|
||||||
|
- a bar
|
||||||
|
- gesture control
|
||||||
|
- runner
|
||||||
|
- ...
|
||||||
|
- Virtualization support
|
||||||
|
- docker
|
||||||
|
- virt-manager
|
||||||
|
- Multilingual typing with Fcitx5
|
||||||
|
- Fully functioning Nvidia/Nvidia Prime support
|
||||||
|
- Fully customized editor `helix`
|
||||||
|
- Locally running LLM-server with tools written around it
|
||||||
|
- Fully themed ("riced") via a custom, intentionally semi-automatic, adaptive system responding to wallpaper color
|
||||||
|
- as can be seen in `flake-modules/rice.nix`
|
||||||
|
- Next-Gen shell experience with
|
||||||
|
- fish
|
||||||
|
- starship
|
||||||
|
- zoxide
|
||||||
|
- yazi
|
||||||
|
- direnv
|
||||||
|
- lazygit + lazydocker
|
||||||
|
|
||||||
|
## Thanks to
|
||||||
|
- [LibrePhoenix](https://www.youtube.com/@librephoenix) for getting me started
|
||||||
|
- [VimJoyer](https://www.youtube.com/@vimjoyer) for making quick NixOS tutorials on many topics
|
||||||
|
- Everyone that talks about NixOS in NixOS-forums and rooms instead of politics
|
||||||
|
- [Everyone that put up their code on Github](https://github.com/search?type=code&auto_enroll=true&q=language%3Anix) for me to reference
|
||||||
|
|
||||||
|
## Licensing
|
||||||
|
- The code found in this Repository is Licensed under the MIT-license
|
||||||
|
- I've decided against the GPLv3, since I am not going to sue anyone over this, but
|
||||||
|
- I encourage everyone to open source their work for anyone to at least reference
|
||||||
172
configuration.nix
Executable file → Normal file
172
configuration.nix
Executable file → Normal file
@@ -1,125 +1,73 @@
|
|||||||
{ pkgs, pkgs-unstable, rice, inputs, ... }:
|
{ ... }@all: with all; {
|
||||||
let
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
./system-modules/hardware-configuration.nix
|
./system-modules/adb.nix
|
||||||
./system-modules/fuse.nix
|
./system-modules/auto-mount.nix
|
||||||
./system-modules/nvidia.nix
|
./system-modules/tz.nix
|
||||||
./system-modules/users.nix
|
./system-modules/bluetooth.nix
|
||||||
./system-modules/sound.nix
|
|
||||||
./system-modules/boot.nix
|
./system-modules/boot.nix
|
||||||
|
./system-modules/cache.nix
|
||||||
|
./system-modules/calendar.nix
|
||||||
./system-modules/dm.nix
|
./system-modules/dm.nix
|
||||||
./system-modules/networking.nix
|
|
||||||
./system-modules/virtualisation.nix
|
|
||||||
./system-modules/sshd.nix
|
|
||||||
./system-modules/gpg.nix
|
|
||||||
./system-modules/sops.nix
|
|
||||||
./system-modules/syncthing.nix
|
|
||||||
# ./system-modules/hsmw.nix # old
|
|
||||||
./system-modules/docker.nix
|
./system-modules/docker.nix
|
||||||
|
./system-modules/fcitx5.nix
|
||||||
|
./system-modules/fonts.nix
|
||||||
|
./system-modules/fuse.nix
|
||||||
|
./system-modules/games.nix
|
||||||
|
./system-modules/gc.nix
|
||||||
|
./system-modules/gpg.nix
|
||||||
|
./system-modules/hardware-configuration.nix
|
||||||
./system-modules/health_reminder.nix
|
./system-modules/health_reminder.nix
|
||||||
./system-modules/ollama.nix
|
./system-modules/hsmw.nix
|
||||||
./system-modules/nx2site.nix
|
./system-modules/kanata.nix
|
||||||
|
./system-modules/terminal.nix
|
||||||
./system-modules/kodi.nix
|
./system-modules/kodi.nix
|
||||||
];
|
./system-modules/networking.nix
|
||||||
|
./system-modules/nixd.nix
|
||||||
|
./system-modules/nvidia.nix
|
||||||
|
./system-modules/obs.nix
|
||||||
|
./system-modules/ollama.nix
|
||||||
# Set your time zone.
|
./system-modules/qmk.nix
|
||||||
time.timeZone = "Europe/Berlin";
|
./system-modules/scanning.nix
|
||||||
|
./system-modules/sops.nix
|
||||||
# Select internationalisation properties.
|
./system-modules/sound.nix
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
./system-modules/sshd.nix
|
||||||
console.font = "Lat2-Terminus16";
|
./system-modules/input.nix
|
||||||
console.keyMap = "de";
|
./system-modules/syncthing.nix
|
||||||
|
./system-modules/tuda.nix
|
||||||
services.xserver = {
|
./system-modules/gui.nix
|
||||||
enable = true;
|
./system-modules/editor.nix
|
||||||
xkb = {
|
./system-modules/printing.nix
|
||||||
layout = "de";
|
./system-modules/security.nix
|
||||||
options = "eurosign:e,caps:escape";
|
./system-modules/users.nix
|
||||||
};
|
./system-modules/virtualisation.nix
|
||||||
# lightdm in lightdm.nix
|
./system-modules/ydotool.nix
|
||||||
};
|
] ++ (if (hyper.host == "NxACE") then [
|
||||||
# Enable CUPS to print documents.
|
./system-modules/nx2site.nix
|
||||||
services.printing.enable = true;
|
./system-modules/hugo.nix
|
||||||
|
./system-modules/postgres.nix
|
||||||
# rtkit is optional but recommended
|
./system-modules/nx2site/proxy.nix
|
||||||
security.rtkit.enable = true;
|
./system-modules/nx2site/audiobookshelf.nix
|
||||||
|
./system-modules/nx2site/copyparty.nix
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
./system-modules/nx2site/gitea.nix
|
||||||
services.xserver.libinput.enable = true;
|
./system-modules/nx2site/open-web-calendar.nix
|
||||||
hardware.uinput.enable = true;
|
./system-modules/nx2site/radicale.nix
|
||||||
|
./system-modules/nx2site/vaultwarden.nix
|
||||||
hardware.bluetooth.enable = true; # enables support for Bluetooth
|
./system-modules/nx2site/paperless.nix
|
||||||
hardware.bluetooth.powerOnBoot = true; #
|
./system-modules/calendar/publish.nix
|
||||||
services.blueman.enable = true;
|
./system-modules/calendar/lec.nix
|
||||||
|
./system-modules/calendar/lr.nix
|
||||||
nixpkgs.config.allowUnfree = true;
|
./system-modules/calendar/dicos.nix
|
||||||
# nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) allowed.unfree-packages;
|
] else [
|
||||||
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
git
|
|
||||||
lazygit # home-manager module is bugged
|
|
||||||
git-crypt
|
|
||||||
wget
|
|
||||||
curl
|
|
||||||
zip
|
|
||||||
unzip
|
|
||||||
p7zip
|
|
||||||
unar
|
|
||||||
nano
|
|
||||||
micro
|
|
||||||
htop
|
|
||||||
direnv
|
|
||||||
openssl
|
|
||||||
blueman
|
|
||||||
dmidecode
|
|
||||||
file
|
|
||||||
] ++ (with pkgs-unstable; [
|
|
||||||
sendme
|
|
||||||
]);
|
]);
|
||||||
|
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
|
||||||
|
|
||||||
environment.variables = {
|
systemd.extraConfig = "DefaultLimitNOFILE=2048";
|
||||||
EDITOR = "hx";
|
system.stateVersion = hyper.pkgs-version;
|
||||||
VISUAL = "hx";
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk
|
|
||||||
noto-fonts-emoji
|
|
||||||
] ++ (with rice.font; [
|
|
||||||
base.package
|
|
||||||
code.package
|
|
||||||
]) ++ (with pkgs-unstable; [
|
|
||||||
newcomputermodern
|
|
||||||
]);
|
|
||||||
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
programs.hyprland = {
|
|
||||||
# config is done with home-manager
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
|
||||||
programs.bash.shellInit = ''
|
programs.bash.shellInit = ''
|
||||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
if [[ "$USER" == "${hyper.user}" ]]; then
|
||||||
|
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
fi
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
48
flake-modules/allowed.nix
Normal file
48
flake-modules/allowed.nix
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
{
|
||||||
|
unfree = [
|
||||||
|
"cursor"
|
||||||
|
"discord"
|
||||||
|
"spotify"
|
||||||
|
"obsidian"
|
||||||
|
"steam"
|
||||||
|
"steam-unwrapped"
|
||||||
|
"zoom-us"
|
||||||
|
"zoom"
|
||||||
|
|
||||||
|
# since the predicate ist to be set in the flake and not in a module
|
||||||
|
# it is impossible to make the list dynamic and respect nvidia.enable
|
||||||
|
"nvidia-x11"
|
||||||
|
"nvidia-settings"
|
||||||
|
"nvidia-persistenced"
|
||||||
|
"cudatoolkit"
|
||||||
|
"cuda-merged"
|
||||||
|
"cuda_cuobjdump"
|
||||||
|
"cuda_gdb"
|
||||||
|
"cuda_nvcc"
|
||||||
|
"cuda_nvdisasm"
|
||||||
|
"cuda_nvprune"
|
||||||
|
"cuda_cccl"
|
||||||
|
"cuda_cudart"
|
||||||
|
"cuda_cupti"
|
||||||
|
"cuda_cuxxfilt"
|
||||||
|
"cuda_nvml_dev"
|
||||||
|
"cuda_nvrtc"
|
||||||
|
"cuda_nvtx"
|
||||||
|
"cuda_profiler_api"
|
||||||
|
"cuda_sanitizer_api"
|
||||||
|
"libcublas"
|
||||||
|
"libcufft"
|
||||||
|
"libcurand"
|
||||||
|
"libcusolver"
|
||||||
|
"libnvjitlink"
|
||||||
|
"libcusparse"
|
||||||
|
"libnpp"
|
||||||
|
|
||||||
|
"vscode-extension-mhutchie-git-graph"
|
||||||
|
];
|
||||||
|
|
||||||
|
inecure = [
|
||||||
|
# "electron-25.9.0"
|
||||||
|
];
|
||||||
|
}
|
||||||
13
flake-modules/colors.json
Normal file
13
flake-modules/colors.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"base": {
|
||||||
|
"foreground": "#eddbef",
|
||||||
|
"background": "#100711"
|
||||||
|
},
|
||||||
|
"to_alter": {
|
||||||
|
"accent": "#ba71c0",
|
||||||
|
"secondary": "#3266ff",
|
||||||
|
"tertiary": "#4bb6e6",
|
||||||
|
"special": "#76c071",
|
||||||
|
"weird": "#c08571"
|
||||||
|
}
|
||||||
|
}
|
||||||
4
flake-modules/nvidia.nix
Normal file
4
flake-modules/nvidia.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
enable = false;
|
||||||
|
prime = false;
|
||||||
|
}
|
||||||
75
flake-modules/rice.nix
Normal file
75
flake-modules/rice.nix
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
pkgs: rec {
|
||||||
|
|
||||||
|
lib = import ../nxlib/ricelib.nix pkgs.lib;
|
||||||
|
|
||||||
|
transparency = 0.8;
|
||||||
|
rounding = 3;
|
||||||
|
gap-size = 5;
|
||||||
|
border-width = 2;
|
||||||
|
color = let
|
||||||
|
dark = (-0.4);
|
||||||
|
darker = (-0.6);
|
||||||
|
bright = 0.4;
|
||||||
|
brighter = 0.7;
|
||||||
|
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: {
|
||||||
|
base = color-value;
|
||||||
|
dark = f color-value dark;
|
||||||
|
darker = f color-value darker;
|
||||||
|
bright = f color-value bright;
|
||||||
|
brighter = f color-value brighter;
|
||||||
|
};
|
||||||
|
alter = let f = lib.alter-luminace-hex; in color-value: {
|
||||||
|
base = color-value;
|
||||||
|
dark = f color-value dark;
|
||||||
|
darker = f color-value darker;
|
||||||
|
bright = f color-value bright;
|
||||||
|
brighter = f color-value brighter;
|
||||||
|
};
|
||||||
|
# ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json));
|
||||||
|
ccolor = builtins.mapAttrs alter-set {
|
||||||
|
black = "#040404"; # "#111111" "#001100";
|
||||||
|
white = "#dddddd"; # "#dddddd" "#66dd66";
|
||||||
|
blue = "#4444dd"; # "#3333dd" "#003300";
|
||||||
|
cyan = "#44dddd"; # "#11dddd" "#00dd55";
|
||||||
|
green = "#44dd44"; # "#11dd11" "#11dd11";
|
||||||
|
magenta = "#dd44dd"; # "#dd11dd" "#005500";
|
||||||
|
red = "#dd4444"; # "#dd1111" "#00aa00";
|
||||||
|
yellow = "#dddd44"; # "#dddd11" "#ffff00";
|
||||||
|
};
|
||||||
|
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
|
||||||
|
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
|
||||||
|
fcolor = facolor // fbcolor;
|
||||||
|
xcolor = with ccolor; with fcolor; {
|
||||||
|
# background = "#000000";
|
||||||
|
# foreground = "#dddddd";
|
||||||
|
# accent = blue;
|
||||||
|
# secondary = cyan;
|
||||||
|
# tertiary = magenta;
|
||||||
|
# special = yellow;
|
||||||
|
# weird = green;
|
||||||
|
subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; };
|
||||||
|
positive = alter "#00dd00";
|
||||||
|
negative = alter "#dd0000";
|
||||||
|
border = accent.base;
|
||||||
|
border2 = secondary.base;
|
||||||
|
};
|
||||||
|
in ccolor // fcolor // xcolor;
|
||||||
|
font = {
|
||||||
|
code = rec {
|
||||||
|
name = "JetBrainsMono Nerd Font";
|
||||||
|
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||||
|
regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf";
|
||||||
|
};
|
||||||
|
base = {
|
||||||
|
# name = "NewComputerModern08";
|
||||||
|
# package = pkgs.newcomputermodern;
|
||||||
|
name = "Atkinson Hyperlegible";
|
||||||
|
package = pkgs.atkinson-hyperlegible-next;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cursor = {
|
||||||
|
name = "Bibata-Original-Classic";
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
}
|
||||||
818
flake.lock
generated
Executable file → Normal file
818
flake.lock
generated
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
305
flake.nix
Executable file → Normal file
305
flake.nix
Executable file → Normal file
@@ -2,209 +2,140 @@
|
|||||||
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-24.05";
|
nixpkgs.url = "nixpkgs/nixos-25.05";
|
||||||
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-latest.url = "github:nixos/nixpkgs?ref=master";
|
||||||
|
nixpkgs24.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-24.05";
|
url = "github:nix-community/home-manager/release-25.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
sops-nix = {
|
home-manager24 ={
|
||||||
|
url = "github:nix-community/home-manager/release-24.05";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs24";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-on-droid = {
|
||||||
|
url = "github:nix-community/nix-on-droid/release-24.05";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs24";
|
||||||
|
inputs.home-manager.follows = "home-manager24";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||||
|
|
||||||
|
sops-nix ={
|
||||||
url = "github:Mic92/sops-nix";
|
url = "github:Mic92/sops-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland = {
|
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
||||||
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
|
||||||
# url = "github:hyprwm/Hyprland";
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
hyprland-plugins = {
|
hyprland-plugins = {
|
||||||
url = "github:hyprwm/hyprland-plugins";
|
url = "github:hyprwm/hyprland-plugins";
|
||||||
inputs.hyprland.follows = "hyprland";
|
inputs.hyprland.follows = "hyprland";
|
||||||
};
|
};
|
||||||
# Hyprspace = {
|
|
||||||
# url = "github:KZDKM/Hyprspace";
|
|
||||||
# inputs.hyprland.follows = "hyprland";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# nixvim = {
|
yazi.url = "github:sxyazi/yazi";
|
||||||
# url = "github:nix-community/nixvim/nixos-23.11";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
copyparty.url = "github:9001/copyparty";
|
||||||
# };
|
|
||||||
lanzaboote = {
|
|
||||||
url = "github:nix-community/lanzaboote/v0.3.0";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs-unstable";
|
|
||||||
};
|
|
||||||
#arion = {
|
|
||||||
# url = "github:hercules-ci/arion";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
#};
|
|
||||||
firefox-addons = {
|
|
||||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
# yazi.url = "github:sxyazi/yazi";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... }@inputs:
|
outputs = { ... }@inputs: with inputs; let
|
||||||
let
|
|
||||||
system = "x86_64-linux";
|
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
|
|
||||||
|
|
||||||
user = "nx2";
|
system = "x86_64-linux";
|
||||||
|
simple-pkgs = import nixpkgs { inherit system; };
|
||||||
|
config = { allowUnfreePredicate = pkg: builtins.elem (simple-pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
|
||||||
|
|
||||||
nvidia = {
|
hyper-base = rec {
|
||||||
enable = true;
|
system = "x86_64-linux";
|
||||||
prime = true;
|
user = "nx2";
|
||||||
# unfree = if enable then [
|
domain = "nx2.site";
|
||||||
unfree = [
|
home = "/home/${user}";
|
||||||
"nvidia-x11"
|
webroot = "/var/lib/hugo/nx2site/public";
|
||||||
"nvidia-settings"
|
|
||||||
"nvidia-persistenced"
|
|
||||||
"cudatoolkit"
|
|
||||||
"cudatoolkit-11.8.0"
|
|
||||||
"cudatoolkit-12.2.2"
|
|
||||||
];
|
|
||||||
# ] else [];
|
|
||||||
};
|
|
||||||
allowed = {
|
|
||||||
unfree-packages = [
|
|
||||||
"spotify"
|
|
||||||
"cudatoolkit-12.2.2"
|
|
||||||
"discord"
|
|
||||||
"obsidian"
|
|
||||||
"zoom-us"
|
|
||||||
"zoom"
|
|
||||||
] ++ nvidia.unfree;
|
|
||||||
|
|
||||||
inecure-packages = [
|
|
||||||
"electron-25.9.0"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
secrets = import ./git-crypt/secrets.nix;
|
|
||||||
|
|
||||||
rice = rec {
|
|
||||||
lib = import ./nxlib/ricelib.nix { lib = nixpkgs.lib; };
|
|
||||||
transparency = 0.8;
|
|
||||||
rounding = 10;
|
|
||||||
gap-size = 10;
|
|
||||||
border-width = 3;
|
|
||||||
color =
|
|
||||||
let
|
|
||||||
dark = (-0.3);
|
|
||||||
bright = (0.5);
|
|
||||||
alter-set = let f = rice.lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
|
|
||||||
alter = let f = rice.lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
|
|
||||||
ccolor = builtins.mapAttrs alter-set {
|
|
||||||
black = "#000022"; # "#111111" "#001100";
|
|
||||||
white = "#ddddff"; # "#dddddd" "#66dd66";
|
|
||||||
blue = "#4422ff"; # "#3333dd" "#003300";
|
|
||||||
cyan = "#11dddd"; # "#11dddd" "#00dd55";
|
|
||||||
green = "#11dd99"; # "#11dd11" "#11dd11";
|
|
||||||
magenta = "#6622dd"; # "#dd11dd" "#005500";
|
|
||||||
red = "#dd1166"; # "#dd1111" "#00aa00";
|
|
||||||
yellow = "#dd6611"; # "#dddd11" "#ffff00";
|
|
||||||
};
|
|
||||||
xcolor = with ccolor; rec {
|
|
||||||
background = black.dark;
|
|
||||||
foreground = white.base;
|
|
||||||
border = cyan.base;
|
|
||||||
border2 = blue.base;
|
|
||||||
accent = blue;
|
|
||||||
secondary = cyan;
|
|
||||||
tertiary = magenta;
|
|
||||||
special = yellow;
|
|
||||||
weird = green;
|
|
||||||
positive = alter "#00dd00";
|
|
||||||
negative = alter "#dd0000";
|
|
||||||
};
|
|
||||||
# ccolor = builtins.mapAttrs alter-set {
|
|
||||||
# black = "#112200";
|
|
||||||
# white = "#ddffdd";
|
|
||||||
# blue = "#779944";
|
|
||||||
# cyan = "#11ffcc";
|
|
||||||
# green = "#00ff00";
|
|
||||||
# magenta = "#449999";
|
|
||||||
# red = "#dd2200";
|
|
||||||
# yellow = "#ffff11";
|
|
||||||
# };
|
|
||||||
# xcolor = with ccolor; rec {
|
|
||||||
# background = black.dark; # black.dark;
|
|
||||||
# foreground = white.base; # white.base;
|
|
||||||
# border = accent.base; # cyan.base;
|
|
||||||
# border2 = yellow.base; # blue.base;
|
|
||||||
# accent = green; # blue;
|
|
||||||
# secondary = red; # cyan;
|
|
||||||
# tertiary = yellow; # magenta;
|
|
||||||
# special = blue; # yellow;
|
|
||||||
# weird = magenta; # green;
|
|
||||||
# positive = alter "#00dd00"; # alter "#00dd00";
|
|
||||||
# negative = alter "#dd0000"; # alter "#dd0000";
|
|
||||||
# };
|
|
||||||
in ccolor // xcolor;
|
|
||||||
font = {
|
|
||||||
code = {
|
|
||||||
name = "JetBrainsMono-NF";
|
|
||||||
name2 = "JetBrainsMono Nerd Font";
|
|
||||||
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
|
|
||||||
# name = "CascadiaCove-NF";
|
|
||||||
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
|
|
||||||
};
|
|
||||||
base = {
|
|
||||||
name = "Atkinson Hyperlegible";
|
|
||||||
package = pkgs.atkinson-hyperlegible;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
nixosConfigurations = {
|
|
||||||
NxXPS = let host = "NxXPS"; in nixpkgs.lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
modules = [ ./configuration.nix ];
|
|
||||||
specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; };
|
|
||||||
};
|
|
||||||
NxNORTH = let host = "NxNORTH"; in nixpkgs.lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
modules = [ ./configuration.nix ];
|
|
||||||
specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; };
|
|
||||||
};
|
|
||||||
NxACE = let host = "NxACE"; nvidia.enable = false; in nixpkgs.lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
modules = [ ./configuration.nix ];
|
|
||||||
specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
homeConfigurations = {
|
|
||||||
"${user}@NxXPS" = let host = "NxXPS"; in home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
modules = [ ./home.nix ];
|
|
||||||
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; };
|
|
||||||
};
|
|
||||||
"${user}@NxNORTH" = let host = "NxNORTH"; in home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
modules = [ ./home.nix ];
|
|
||||||
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; };
|
|
||||||
};
|
|
||||||
"${user}@NxACE" = let host = "NxACE"; nvidia.enable = false; in home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
modules = [ ./home.nix ];
|
|
||||||
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; };
|
|
||||||
};
|
|
||||||
"tv@NxACE" =
|
|
||||||
let
|
|
||||||
host = "NxACE";
|
|
||||||
user = "tv";
|
|
||||||
nvidia.enable = pkgs.kib.mkForce false;
|
|
||||||
in
|
|
||||||
home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
modules = [ ./home.nix ];
|
|
||||||
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
get-pkgs = { host, system?system, nixpkgs?inputs.nixpkgs, version?"25.05" }: import nixpkgs {
|
||||||
|
inherit system config;
|
||||||
|
overlays = [(final: prev: {
|
||||||
|
unstable = import nixpkgs-unstable { inherit system config; };
|
||||||
|
latest = import nixpkgs-latest { inherit system config; };
|
||||||
|
inherit version;
|
||||||
|
})] ++ (if host == "NxACE" then [
|
||||||
|
copyparty.overlays.default
|
||||||
|
] else []);
|
||||||
|
};
|
||||||
|
|
||||||
|
nvidia-base = import ./flake-modules/nvidia.nix;
|
||||||
|
secrets = import ./git-crypt/secrets.nix;
|
||||||
|
rice = import ./flake-modules/rice.nix simple-pkgs;
|
||||||
|
in {
|
||||||
|
nixosConfigurations = let
|
||||||
|
make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
|
||||||
|
pkgs = get-pkgs { inherit host; };
|
||||||
|
modules = [ ./configuration.nix ];
|
||||||
|
specialArgs = let
|
||||||
|
hyper = hyper-base // { inherit host; nvidia = (nvidia-base // nvidia-settings); };
|
||||||
|
in { inherit inputs hyper rice secrets; };
|
||||||
|
};
|
||||||
|
make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
|
||||||
|
pkgs = get-pkgs { inherit host; };
|
||||||
|
modules = [ ./wsl.nix ];
|
||||||
|
specialArgs = let
|
||||||
|
hyper = hyper-base // { inherit host; };
|
||||||
|
rice = import ./flake-modules/rice.nix pkgs;
|
||||||
|
in { inherit inputs hyper rice; };
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
|
||||||
|
NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
|
||||||
|
NxACE = make-nixos-system "NxACE" { enable = false; };
|
||||||
|
NxDCS = make-nixos-wsl-system "NxDCS";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixOnDroidConfigurations = let
|
||||||
|
makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
|
||||||
|
pkgs = let
|
||||||
|
options = { inherit host; system = "aarch64-linux"; };
|
||||||
|
in (get-pkgs options) //
|
||||||
|
(get-pkgs (options // { version = "24.05"; nixpkgs = nixpkgs24; } )
|
||||||
|
);
|
||||||
|
modules = [ ./nod.nix ];
|
||||||
|
home-manager-path = home-manager24.outPath;
|
||||||
|
extraSpecialArgs = let
|
||||||
|
hyper = hyper-base // {
|
||||||
|
inherit host;
|
||||||
|
system = "aarch64-linux";
|
||||||
|
user = "nix-on-droid";
|
||||||
|
home = "/data/data/com.termux.nix/files/home";
|
||||||
|
};
|
||||||
|
rice = import ./flake-modules/rice.nix pkgs;
|
||||||
|
in { inherit inputs hyper rice; };
|
||||||
|
};
|
||||||
|
in { NxS23U = makeNODConfiguration "NxS23U"; };
|
||||||
|
|
||||||
|
homeConfigurations = let
|
||||||
|
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = get-pkgs { inherit host; };
|
||||||
|
modules = [ ./home.nix ];
|
||||||
|
extraSpecialArgs = let
|
||||||
|
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
|
||||||
|
in { inherit inputs hyper rice secrets; };
|
||||||
|
};
|
||||||
|
make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = get-pkgs { inherit host; };
|
||||||
|
modules = [ ./shell-only.nix ];
|
||||||
|
extraSpecialArgs = let
|
||||||
|
hyper = hyper-base // { inherit host; };
|
||||||
|
in { inherit inputs hyper rice secrets; };
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
"${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; };
|
||||||
|
"${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; };
|
||||||
|
"${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
|
||||||
|
|
||||||
|
"${hyper-base.user}@NxDCS" = make-shell-configuration "NxDCS" hyper-base.user;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
0
git-crypt/easyroam-hsmw/easyroam_client_cert.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_client_cert.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_client_key.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_client_key.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_root_ca.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_root_ca.pem
Executable file → Normal file
Binary file not shown.
0
git-crypt/pnx-vpn/ljk-pnx-ca.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-ca.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.key
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.key
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx.ovpn
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx.ovpn
Executable file → Normal file
BIN
git-crypt/secrets.nix
Executable file → Normal file
BIN
git-crypt/secrets.nix
Executable file → Normal file
Binary file not shown.
0
git-crypt/vpn-hsmw/USERTrust-ECC-Certification-Authority.pem
Executable file → Normal file
0
git-crypt/vpn-hsmw/USERTrust-ECC-Certification-Authority.pem
Executable file → Normal file
0
git-crypt/vpn-hsmw/USERTrust-RSA-Certification-Authority.pem
Executable file → Normal file
0
git-crypt/vpn-hsmw/USERTrust-RSA-Certification-Authority.pem
Executable file → Normal file
819
home-modules/assets/nx2.flf
Normal file
819
home-modules/assets/nx2.flf
Normal file
@@ -0,0 +1,819 @@
|
|||||||
|
flf2a$ 8 8 17 -1 2
|
||||||
|
nx2.flf by nx2
|
||||||
|
July 10. 2025
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@@
|
||||||
|
db$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
°°$@
|
||||||
|
..$@
|
||||||
|
YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.o. .o.$@
|
||||||
|
'8' '8'$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db db $@
|
||||||
|
C88888D$@
|
||||||
|
88 88 $@
|
||||||
|
C88888D$@
|
||||||
|
YP YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
8 $@
|
||||||
|
.d888b.$@
|
||||||
|
88 8 °°$@
|
||||||
|
'Y888b.$@
|
||||||
|
.. 8 8D$@
|
||||||
|
'Y888P'$@
|
||||||
|
8 $@
|
||||||
|
$@@
|
||||||
|
d8b dD$@
|
||||||
|
°8° d8'$@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
d8'.8.$@
|
||||||
|
d8' Y8P$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d888b. $@
|
||||||
|
8P 8D $@
|
||||||
|
'Vb d8' $@
|
||||||
|
d88C dD$@
|
||||||
|
C8' d8D $@
|
||||||
|
'888P Yb$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
Cb$@
|
||||||
|
'D$@
|
||||||
|
'$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
dD$@
|
||||||
|
d8' $@
|
||||||
|
d8 $@
|
||||||
|
88 $@
|
||||||
|
V8 $@
|
||||||
|
V8. $@
|
||||||
|
VD$@
|
||||||
|
$@@
|
||||||
|
Cb. $@
|
||||||
|
'8b $@
|
||||||
|
8b$@
|
||||||
|
88$@
|
||||||
|
8P$@
|
||||||
|
.8P $@
|
||||||
|
CP' $@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
d.8.b $@
|
||||||
|
X8K $@
|
||||||
|
Y'8'P $@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db $@
|
||||||
|
88 $@
|
||||||
|
C888888D$@
|
||||||
|
88 $@
|
||||||
|
VP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
db$@
|
||||||
|
Y8$@
|
||||||
|
.V$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
C8888D$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
db$@
|
||||||
|
VP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
dD$@
|
||||||
|
d8'$@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
C8' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d88b. $@
|
||||||
|
.8P 88.$@
|
||||||
|
88 d'88$@
|
||||||
|
88 d' 88$@
|
||||||
|
'88' d8'$@
|
||||||
|
'Y88P' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d8b $@
|
||||||
|
dP88 $@
|
||||||
|
dP'88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
Y8888P$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d888b.$@
|
||||||
|
VP '8D$@
|
||||||
|
odD'$@
|
||||||
|
.88' $@
|
||||||
|
j88. $@
|
||||||
|
888888D$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d888b.$@
|
||||||
|
VP '8D$@
|
||||||
|
oooY'$@
|
||||||
|
°°Yb.$@
|
||||||
|
db 8D$@
|
||||||
|
'Y888P'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
j8b $@
|
||||||
|
j888 $@
|
||||||
|
j8'88 $@
|
||||||
|
j8' 88 $@
|
||||||
|
V88888D$@
|
||||||
|
VP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d88888b$@
|
||||||
|
8D $@
|
||||||
|
Y888bo.$@
|
||||||
|
'88$@
|
||||||
|
do. .88$@
|
||||||
|
'Y888P'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
dD $@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
d8888b.$@
|
||||||
|
88' '8D$@
|
||||||
|
'8888P $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d88888b$@
|
||||||
|
VP d8'$@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d888b.$@
|
||||||
|
88 8D$@
|
||||||
|
'VoooY'$@
|
||||||
|
.d°°°b.$@
|
||||||
|
88 8D$@
|
||||||
|
'Y888P'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d888b.$@
|
||||||
|
88' '8D$@
|
||||||
|
'V8o88'$@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db$@
|
||||||
|
VP$@
|
||||||
|
$@
|
||||||
|
db$@
|
||||||
|
VP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db$@
|
||||||
|
VP$@
|
||||||
|
$@
|
||||||
|
db$@
|
||||||
|
V8$@
|
||||||
|
P$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
.d9$@
|
||||||
|
.dP' $@
|
||||||
|
'Yb. $@
|
||||||
|
'Yb$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
C8888D$@
|
||||||
|
$@
|
||||||
|
C8888D$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
0b. $@
|
||||||
|
'Yb.$@
|
||||||
|
.dP'$@
|
||||||
|
0Y' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d888b.$@
|
||||||
|
VP '8D$@
|
||||||
|
odD'$@
|
||||||
|
8P' $@
|
||||||
|
.. $@
|
||||||
|
VP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.o888bo. $@
|
||||||
|
d8°' '°Y8 $@
|
||||||
|
d8' .o88b 88$@
|
||||||
|
8P dP d8 8P$@
|
||||||
|
8b 'V88P'8P $@
|
||||||
|
Yo. ...$@
|
||||||
|
'°Y8888P°' $@
|
||||||
|
$@@
|
||||||
|
d8b $@
|
||||||
|
dP'Yb $@
|
||||||
|
d8. .8b $@
|
||||||
|
d8888888b $@
|
||||||
|
d8' '8b$@
|
||||||
|
YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d8888b.$@
|
||||||
|
88 '8D$@
|
||||||
|
88oooY'$@
|
||||||
|
88°°Yb.$@
|
||||||
|
88 8D$@
|
||||||
|
Y8888P'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.od88bo. $@
|
||||||
|
.8P°' '°YD$@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
'8b. .dD$@
|
||||||
|
'°Y88P°' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d8888bo. $@
|
||||||
|
88 '8b$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
88 .8P$@
|
||||||
|
Y8888P°' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d888888b$@
|
||||||
|
88' $@
|
||||||
|
88oooo. $@
|
||||||
|
88°°°°' $@
|
||||||
|
88. $@
|
||||||
|
Y888888P$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d888888b$@
|
||||||
|
88' $@
|
||||||
|
88oooo. $@
|
||||||
|
88°°°°' $@
|
||||||
|
88 $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.od88bo. $@
|
||||||
|
.8P°' '°YD$@
|
||||||
|
88 $@
|
||||||
|
88 d88b$@
|
||||||
|
'8b. .8D$@
|
||||||
|
'°Y88P°'V$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db db$@
|
||||||
|
88 88$@
|
||||||
|
88ooo88$@
|
||||||
|
88°°°88$@
|
||||||
|
88 88$@
|
||||||
|
YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d8888b$@
|
||||||
|
'88' $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
.88. $@
|
||||||
|
Y8888P$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d88b$@
|
||||||
|
'8P'$@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
db..88 $@
|
||||||
|
'Y88P' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db dD$@
|
||||||
|
88 .8P'$@
|
||||||
|
88o8P $@
|
||||||
|
88°8b $@
|
||||||
|
88 '88.$@
|
||||||
|
YP YD$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88....$@
|
||||||
|
Y8888D$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d8b d8b$@
|
||||||
|
88Y8bd8P88$@
|
||||||
|
88 'YP' 88$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d8b db$@
|
||||||
|
888b 88$@
|
||||||
|
88Y8b 88$@
|
||||||
|
88 Y8b88$@
|
||||||
|
88 Y888$@
|
||||||
|
YP Y8P$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.od88bo. $@
|
||||||
|
.8P' 'Y8.$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
'8b. .d8'$@
|
||||||
|
'°Y88P°' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d88888b.$@
|
||||||
|
88' '8b$@
|
||||||
|
88. .8P$@
|
||||||
|
888888P'$@
|
||||||
|
88 $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.od88bo. $@
|
||||||
|
.8P' 'Y8.$@
|
||||||
|
88 88$@
|
||||||
|
88 '8o 88$@
|
||||||
|
'8b. '8dP'$@
|
||||||
|
'°Y88P°8o $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d88888b.$@
|
||||||
|
88' '8b$@
|
||||||
|
88. .8P$@
|
||||||
|
888888P'$@
|
||||||
|
88 Y8b $@
|
||||||
|
YP Y8b$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d8888.$@
|
||||||
|
88' YP$@
|
||||||
|
'8bo. $@
|
||||||
|
'Y8b.$@
|
||||||
|
db 8D$@
|
||||||
|
'8888Y'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d888888b$@
|
||||||
|
'°°88°°'$@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db db$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
Y8. .8P$@
|
||||||
|
°8888° $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db db$@
|
||||||
|
88 88$@
|
||||||
|
Y8 8P$@
|
||||||
|
'8b d8'$@
|
||||||
|
'8bd8' $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db db$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
Y8 db 8P$@
|
||||||
|
'8bd88bd8'$@
|
||||||
|
'8P°°8P' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db db$@
|
||||||
|
'8b d8'$@
|
||||||
|
'8bd8' $@
|
||||||
|
.dPYb. $@
|
||||||
|
.8P Y8.$@
|
||||||
|
YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db db$@
|
||||||
|
'8b d8'$@
|
||||||
|
'8bd8' $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d88888D$@
|
||||||
|
YP d8'$@
|
||||||
|
d8' $@
|
||||||
|
d8' $@
|
||||||
|
d8' db$@
|
||||||
|
d88888P$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
d88D$@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
L88D$@
|
||||||
|
$@@
|
||||||
|
Cb $@
|
||||||
|
'8b $@
|
||||||
|
'8b $@
|
||||||
|
'8b $@
|
||||||
|
'8b $@
|
||||||
|
'8D$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
C88D$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
C888$@
|
||||||
|
$@@
|
||||||
|
db $@
|
||||||
|
.dPVb. $@
|
||||||
|
dP' 'Vb$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
C88888D$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
dD$@
|
||||||
|
C'$@
|
||||||
|
'$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
.d8888bd8$@
|
||||||
|
d8°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
88o. .o88$@
|
||||||
|
'Y8888P'8$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db $@
|
||||||
|
88od888b. $@
|
||||||
|
88°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
88o. .o88$@
|
||||||
|
Y'Y8888P' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
.od88bo.$@
|
||||||
|
.8P' 'YP$@
|
||||||
|
88 $@
|
||||||
|
'8b. .db$@
|
||||||
|
'°Y88P°'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db$@
|
||||||
|
.d888bo88$@
|
||||||
|
d8°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
88o. .o88$@
|
||||||
|
'Y8888P'V$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
.od88bo.$@
|
||||||
|
.8P' '88$@
|
||||||
|
88'°°°°°'$@
|
||||||
|
'8b. .oo$@
|
||||||
|
'°Y88P°'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.d888b.$@
|
||||||
|
d8' '8b$@
|
||||||
|
888b $@
|
||||||
|
88 $@
|
||||||
|
d8 $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
.d8888bd0$@
|
||||||
|
d8°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
88o. .o88$@
|
||||||
|
'Y8888P'8$@
|
||||||
|
do. .oP$@
|
||||||
|
'Y8888P' $@@
|
||||||
|
db $@
|
||||||
|
88od888b. $@
|
||||||
|
88°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
** $@
|
||||||
|
ooo $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
088D$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
**$@
|
||||||
|
ooo$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
8D$@
|
||||||
|
.88$@
|
||||||
|
d8P $@@
|
||||||
|
db $@
|
||||||
|
88 .oo$@
|
||||||
|
88.d8' $@
|
||||||
|
888K $@
|
||||||
|
88'Y8. $@
|
||||||
|
YP 'YD$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
88..$@
|
||||||
|
'Y8D$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
8.d8b.d8b.$@
|
||||||
|
88 '88 '88$@
|
||||||
|
88 88 88$@
|
||||||
|
88 88 88$@
|
||||||
|
YP YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
8bod888b. $@
|
||||||
|
88°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
.d8888b. $@
|
||||||
|
d8°' '°8b$@
|
||||||
|
88 88$@
|
||||||
|
Y8o. .o8P$@
|
||||||
|
'Y8888P' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
.d8888b. $@
|
||||||
|
d8°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
88o. .o88$@
|
||||||
|
88'8888P' $@
|
||||||
|
88 $@
|
||||||
|
YP $@@
|
||||||
|
$@
|
||||||
|
.d8888b. $@
|
||||||
|
d8°' '°88$@
|
||||||
|
88 88$@
|
||||||
|
Y8o. .o88$@
|
||||||
|
'Y8888'88$@
|
||||||
|
88$@
|
||||||
|
YP$@@
|
||||||
|
$@
|
||||||
|
8.d88D$@
|
||||||
|
88' $@
|
||||||
|
88 $@
|
||||||
|
88 $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
.d888b.$@
|
||||||
|
88 °°$@
|
||||||
|
'Y888b.$@
|
||||||
|
.. 8D$@
|
||||||
|
'Y888P'$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
db $@
|
||||||
|
88oo$@
|
||||||
|
88''$@
|
||||||
|
88 $@
|
||||||
|
88..$@
|
||||||
|
'Y8D$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db db$@
|
||||||
|
88 88$@
|
||||||
|
88 88$@
|
||||||
|
Y8o. .o88$@
|
||||||
|
'Y8888P'8$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db db$@
|
||||||
|
Y8 8P$@
|
||||||
|
'8b d8'$@
|
||||||
|
'8bd8' $@
|
||||||
|
YP $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db db$@
|
||||||
|
88 88$@
|
||||||
|
Y8 db 8P$@
|
||||||
|
'8bd88bd8'$@
|
||||||
|
'8P°°8P' $@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
db db$@
|
||||||
|
'Y8..8P'$@
|
||||||
|
)88( $@
|
||||||
|
.8P''Y8.$@
|
||||||
|
YP YP$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
88 88$@
|
||||||
|
d8 88$@
|
||||||
|
88 88$@
|
||||||
|
Y8o. .o88$@
|
||||||
|
'Y8888'88$@
|
||||||
|
do. .oP$@
|
||||||
|
'Y8888P' $@@
|
||||||
|
$@
|
||||||
|
d88888D$@
|
||||||
|
YP .8P'$@
|
||||||
|
.8P' $@
|
||||||
|
.8P db$@
|
||||||
|
d88888P$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
.o8P$@
|
||||||
|
8' $@
|
||||||
|
.dP $@
|
||||||
|
C8K $@
|
||||||
|
'Yb $@
|
||||||
|
8. $@
|
||||||
|
'°8b$@
|
||||||
|
$@@
|
||||||
|
db$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
88$@
|
||||||
|
YP$@
|
||||||
|
$@@
|
||||||
|
88o. $@
|
||||||
|
'8 $@
|
||||||
|
Vb. $@
|
||||||
|
X8D$@
|
||||||
|
dP' $@
|
||||||
|
.8 $@
|
||||||
|
C8°' $@
|
||||||
|
$@@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
.d8b. .db$@
|
||||||
|
dP' 'Y8P' $@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
0
home-modules/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina → home-modules/assets/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina
Executable file → Normal file
0
home-modules/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina → home-modules/assets/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina
Executable file → Normal file
0
home-modules/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina → home-modules/assets/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina
Executable file → Normal file
0
home-modules/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina → home-modules/assets/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina
Executable file → Normal file
7
home-modules/auto-mount.nix
Normal file
7
home-modules/auto-mount.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.udiskie = {
|
||||||
|
enable = true;
|
||||||
|
notify = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
9
home-modules/bar.nix
Normal file
9
home-modules/bar.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
# ./bar/submap-indicator.nix
|
||||||
|
./bar/cclock.nix
|
||||||
|
./bar/caldav-event.nix
|
||||||
|
# ./bar/waybar.nix
|
||||||
|
./bar/hyprpanel.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
126
home-modules/bar/caldav-event.nix
Normal file
126
home-modules/bar/caldav-event.nix
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/radicale/password" = { };
|
||||||
|
};
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writers.writePython3Bin "caldav_event" {
|
||||||
|
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
||||||
|
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
|
||||||
|
} /* python */ ''
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
from caldav import DAVClient
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
from ics import Calendar
|
||||||
|
from pytz import UTC
|
||||||
|
|
||||||
|
def get_password(password_file):
|
||||||
|
with open(password_file, "r") as file:
|
||||||
|
return file.read().strip()
|
||||||
|
|
||||||
|
def datetime_converter(obj):
|
||||||
|
if isinstance(obj, datetime):
|
||||||
|
return obj.isoformat()
|
||||||
|
return obj
|
||||||
|
|
||||||
|
def datetime_parser(dct):
|
||||||
|
for key, value in dct.items():
|
||||||
|
if isinstance(value, str):
|
||||||
|
try:
|
||||||
|
dct[key] = datetime.fromisoformat(value)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
return dct
|
||||||
|
|
||||||
|
def load_cache(cache_file):
|
||||||
|
if os.path.exists(cache_file):
|
||||||
|
with open(cache_file, "r") as file:
|
||||||
|
return json.load(file, object_hook=datetime_parser)
|
||||||
|
return None
|
||||||
|
|
||||||
|
def save_cache(cache_file, data):
|
||||||
|
with open(cache_file, "w") as file:
|
||||||
|
json.dump(data, file, default=datetime_converter, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
def get_ongoing_or_next_event(url, username, password):
|
||||||
|
now = datetime.now(timezone.utc)
|
||||||
|
|
||||||
|
try:
|
||||||
|
client = DAVClient(url, username=username, password=password)
|
||||||
|
principal = client.principal()
|
||||||
|
calendars = principal.calendars()
|
||||||
|
|
||||||
|
next_event_dict = {
|
||||||
|
'event_name': "fake",
|
||||||
|
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
|
||||||
|
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
|
||||||
|
}
|
||||||
|
|
||||||
|
for calendar in calendars:
|
||||||
|
for event in calendar.search(start=now):
|
||||||
|
calendar_parsed = Calendar(event.data)
|
||||||
|
for ics_event in calendar_parsed.events:
|
||||||
|
event_dict = {}
|
||||||
|
event_dict['event_name'] = ics_event.name or "(No Title)"
|
||||||
|
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
|
||||||
|
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
|
||||||
|
|
||||||
|
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
|
||||||
|
return event_dict
|
||||||
|
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
|
||||||
|
next_event_dict = event_dict
|
||||||
|
return next_event_dict
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error accessing {url}: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def is_expired(event_dict: dict):
|
||||||
|
now = datetime.now(timezone.utc).timestamp()
|
||||||
|
event_end = event_dict['event_end'].timestamp()
|
||||||
|
return not (now <= event_end)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
|
||||||
|
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||||
|
url = "https://dav.${hyper.domain}/"
|
||||||
|
username = "nx2"
|
||||||
|
password = get_password(password_file)
|
||||||
|
now = datetime.now(timezone.utc).timestamp()
|
||||||
|
|
||||||
|
event_dict = load_cache(cache_file)
|
||||||
|
|
||||||
|
if (event_dict is None) or (is_expired(event_dict)):
|
||||||
|
event_dict = get_ongoing_or_next_event(url, username, password)
|
||||||
|
save_cache(cache_file, event_dict)
|
||||||
|
|
||||||
|
if event_dict is None: # none were found
|
||||||
|
print("* zen *")
|
||||||
|
exit(0)
|
||||||
|
|
||||||
|
event_start = event_dict['event_begin'].timestamp()
|
||||||
|
event_end = event_dict['event_end'].timestamp()
|
||||||
|
|
||||||
|
if event_start <= now <= event_end: # is currently ongoing
|
||||||
|
action_string = "ends"
|
||||||
|
t = event_end - now # time_remaining
|
||||||
|
else: # is in the future
|
||||||
|
action_string = "starts"
|
||||||
|
t = event_start - now # time_remaining
|
||||||
|
|
||||||
|
hours, rem = divmod(int(t), 3600)
|
||||||
|
minutes, _ = divmod(rem, 60)
|
||||||
|
hour_string = f"{hours} hour{'s ' if hours != 1 else ' '}" if hours > 0 else ""
|
||||||
|
minu_string = f"{minutes} minute{'s ' if minutes != 1 else ' '}" if minutes > 0 else ""
|
||||||
|
if hour_string == "" and minu_string == "":
|
||||||
|
time_string = "now"
|
||||||
|
elif hour_string == "" or minu_string == "":
|
||||||
|
time_string = "in " + hour_string + minu_string
|
||||||
|
else:
|
||||||
|
time_string = "in " + hour_string + "and " + minu_string
|
||||||
|
|
||||||
|
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}")
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
}
|
||||||
14
home-modules/bar/cclock.nix
Normal file
14
home-modules/bar/cclock.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ pkgs, ... }: let
|
||||||
|
sep = " ";
|
||||||
|
in {
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellApplication { name = "cclock"; text = /* bash */ ''
|
||||||
|
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
|
||||||
|
elif [ "$1" = "--no-icons" ]; then
|
||||||
|
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
|
||||||
|
fi
|
||||||
|
'';})
|
||||||
|
];
|
||||||
|
}
|
||||||
515
home-modules/bar/hyprpanel.nix
Normal file
515
home-modules/bar/hyprpanel.nix
Normal file
@@ -0,0 +1,515 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
xdg.configFile = {
|
||||||
|
"hyprpanel/modules.scss".text = with rice.color; /* scss */ ''
|
||||||
|
@include styleModule('cmodule-cclock', (
|
||||||
|
'text-color': ${accent.base},
|
||||||
|
/* 'icon-color': , */
|
||||||
|
/* 'icon-background': , */
|
||||||
|
/* 'label-background': #242438, */
|
||||||
|
/* 'inner-spacing': 0.5em, */
|
||||||
|
/* 'border-enabled': false, */
|
||||||
|
/* 'border-color': #cba6f7, */
|
||||||
|
/* 'icon-size': 1.2em */
|
||||||
|
));
|
||||||
|
@include styleModule('cmodule-caldav_event', (
|
||||||
|
'text-color': ${accent.base},
|
||||||
|
));
|
||||||
|
'';
|
||||||
|
"hyprpanel/modules.json".text = builtins.toJSON {
|
||||||
|
"custom/cclock" = {
|
||||||
|
execute = "cclock";
|
||||||
|
executeOnAction = "";
|
||||||
|
label = "{}";
|
||||||
|
interval = 60000;
|
||||||
|
hideOnEmpty = true;
|
||||||
|
actions.onLeftClick = "menu:calendar";
|
||||||
|
};
|
||||||
|
"custom/caldav_event" = {
|
||||||
|
execute = "caldav_event";
|
||||||
|
label = " {}";
|
||||||
|
interval = 60000;
|
||||||
|
hideOnEmpty = false;
|
||||||
|
actions = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.hyprpanel = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.hyprpanel;
|
||||||
|
settings = with rice.color; let
|
||||||
|
t = builtins.toString (builtins.ceil (rice.transparency * 100));
|
||||||
|
in {
|
||||||
|
"bar.layouts" = {
|
||||||
|
"*" = {
|
||||||
|
"left" = [
|
||||||
|
"volume"
|
||||||
|
# "microphone"
|
||||||
|
# "cpu"
|
||||||
|
# "cputemp"
|
||||||
|
# "ram"
|
||||||
|
(pkgs.lib.mkIf (hyper.host == "NxXPS") "battery")
|
||||||
|
# "bluetooth"
|
||||||
|
"network"
|
||||||
|
"windowtitle"
|
||||||
|
"media"
|
||||||
|
];
|
||||||
|
"middle" = [ "workspaces" ];
|
||||||
|
"right" = [
|
||||||
|
"submap"
|
||||||
|
"custom/caldav_event"
|
||||||
|
"custom/cclock"
|
||||||
|
"notifications"
|
||||||
|
"systray"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"bar.bluetooth.label" = true;
|
||||||
|
|
||||||
|
"bar.customModules.submap.disabledIcon" = "";
|
||||||
|
"bar.customModules.submap.disabledText" = "";
|
||||||
|
"bar.customModules.submap.enabledIcon" = "";
|
||||||
|
"bar.customModules.submap.enabledText" = "[SUBMAP]";
|
||||||
|
"bar.customModules.submap.icon" = false;
|
||||||
|
"bar.customModules.submap.label" = true;
|
||||||
|
"bar.customModules.submap.showSubmapIcon" = false;
|
||||||
|
"bar.customModules.submap.showSubmapName" = false;
|
||||||
|
|
||||||
|
"bar.workspaces.applicationIconEmptyWorkspace" = "";
|
||||||
|
"bar.workspaces.applicationIconOncePerWorkspace" = false;
|
||||||
|
"bar.workspaces.numbered_active_indicator" = "color";
|
||||||
|
"bar.workspaces.scroll_speed" = 1;
|
||||||
|
"bar.workspaces.showAllActive" = false;
|
||||||
|
"bar.workspaces.showApplicationIcons" = true;
|
||||||
|
"bar.workspaces.show_icons" = false;
|
||||||
|
"bar.workspaces.show_numbered" = false;
|
||||||
|
"bar.workspaces.showWsIcons" = true;
|
||||||
|
"bar.workspaces.spacing" = 1;
|
||||||
|
"bar.workspaces.workspaceMask" = true;
|
||||||
|
"bar.workspaces.workspaces" = 5;
|
||||||
|
|
||||||
|
"theme.bar.background" = background;
|
||||||
|
"theme.bar.border.color" = accent.base;
|
||||||
|
"theme.bar.border_radius" = "0.2em";
|
||||||
|
|
||||||
|
"theme.bar.buttons.background" = background;
|
||||||
|
"theme.bar.buttons.background_opacity" = 0;
|
||||||
|
"theme.bar.buttons.spacing" = "0em";
|
||||||
|
"theme.bar.buttons.padding_x" = "0.5rem";
|
||||||
|
|
||||||
|
"theme.bar.buttons.battery.background" = background;
|
||||||
|
"theme.bar.buttons.battery.border" = accent.base;
|
||||||
|
"theme.bar.buttons.battery.icon_background" = background;
|
||||||
|
"theme.bar.buttons.battery.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.battery.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.bluetooth.background" = background;
|
||||||
|
"theme.bar.buttons.bluetooth.border" = accent.base;
|
||||||
|
"theme.bar.buttons.bluetooth.icon_background" = background;
|
||||||
|
"theme.bar.buttons.bluetooth.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.bluetooth.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.borderColor" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.clock.background" = background;
|
||||||
|
"theme.bar.buttons.clock.border" = accent.base;
|
||||||
|
"theme.bar.buttons.clock.icon_background" = background;
|
||||||
|
"theme.bar.buttons.clock.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.clock.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.dashboard.background" = background;
|
||||||
|
"theme.bar.buttons.dashboard.border" = accent.base;
|
||||||
|
"theme.bar.buttons.dashboard.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.icon_background" = background;
|
||||||
|
|
||||||
|
"theme.bar.buttons.icon" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.media.background" = background;
|
||||||
|
"theme.bar.buttons.media.border" = accent.base;
|
||||||
|
"theme.bar.buttons.media.icon_background" = background;
|
||||||
|
"theme.bar.buttons.media.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.media.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.cava.background" = background;
|
||||||
|
"theme.bar.buttons.modules.cava.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cava.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.cava.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cava.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.cpu.background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpu.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpu.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpu.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpu.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.hypridle.background" = background;
|
||||||
|
"theme.bar.buttons.modules.hypridle.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hypridle.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.hypridle.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hypridle.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.background" = background;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.kbLayout.background" = background;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.microphone.background" = background;
|
||||||
|
"theme.bar.buttons.modules.microphone.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.microphone.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.microphone.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.microphone.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.netstat.background" = background;
|
||||||
|
"theme.bar.buttons.modules.netstat.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.netstat.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.netstat.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.netstat.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.power.background" = background;
|
||||||
|
"theme.bar.buttons.modules.power.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.power.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.power.icon" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.ram.background" = background;
|
||||||
|
"theme.bar.buttons.modules.ram.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.ram.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.ram.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.ram.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.storage.background" = background;
|
||||||
|
"theme.bar.buttons.modules.storage.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.storage.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.storage.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.storage.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.submap.background" = background;
|
||||||
|
"theme.bar.buttons.modules.submap.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.submap.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.submap.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.submap.text" = special.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.updates.background" = background;
|
||||||
|
"theme.bar.buttons.modules.updates.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.updates.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.updates.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.updates.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.weather.background" = background;
|
||||||
|
"theme.bar.buttons.modules.weather.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.weather.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.weather.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.weather.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.worldclock.background" = background;
|
||||||
|
"theme.bar.buttons.modules.worldclock.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.worldclock.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.worldclock.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.worldclock.text" = accent.base;
|
||||||
|
"theme.bar.buttons.monochrome" = false;
|
||||||
|
|
||||||
|
"theme.bar.buttons.network.background" = background;
|
||||||
|
"theme.bar.buttons.network.border" = accent.base;
|
||||||
|
"theme.bar.buttons.network.icon_background" = background;
|
||||||
|
"theme.bar.buttons.network.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.network.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.notifications.background" = background;
|
||||||
|
"theme.bar.buttons.notifications.border" = accent.base;
|
||||||
|
"theme.bar.buttons.notifications.icon_background" = background;
|
||||||
|
"theme.bar.buttons.notifications.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.notifications.total" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.opacity" = t;
|
||||||
|
|
||||||
|
"theme.bar.buttons.separator.color" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.style" = "default";
|
||||||
|
|
||||||
|
"theme.bar.buttons.systray.background" = background;
|
||||||
|
"theme.bar.buttons.systray.border" = accent.base;
|
||||||
|
"theme.bar.buttons.systray.customIcon" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.volume.background" = background;
|
||||||
|
"theme.bar.buttons.volume.border" = accent.base;
|
||||||
|
"theme.bar.buttons.volume.icon_background" = background;
|
||||||
|
"theme.bar.buttons.volume.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.volume.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.windowtitle.background" = background;
|
||||||
|
"theme.bar.buttons.windowtitle.border" = secondary.base;
|
||||||
|
"theme.bar.buttons.windowtitle.icon_background" = background;
|
||||||
|
"theme.bar.buttons.windowtitle.icon" = secondary.base;
|
||||||
|
"theme.bar.buttons.windowtitle.text" = secondary.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.workspaces.active" = accent.bright;
|
||||||
|
"theme.bar.buttons.workspaces.available" = accent.base;
|
||||||
|
"theme.bar.buttons.workspaces.background" = background;
|
||||||
|
"theme.bar.buttons.workspaces.border" = accent.base;
|
||||||
|
"theme.bar.buttons.workspaces.hover" = foreground;
|
||||||
|
"theme.bar.buttons.workspaces.numbered_active_highlighted" = accent.base;
|
||||||
|
"theme.bar.buttons.workspaces.numbered_active_highlighted_text_color" = accent.dark;
|
||||||
|
"theme.bar.buttons.workspaces.numbered_active_highlight_padding" = "0.4em";
|
||||||
|
"theme.bar.buttons.workspaces.numbered_active_underline_color" = accent.bright;
|
||||||
|
"theme.bar.buttons.workspaces.numbered_inactive_padding" = "0.4em";
|
||||||
|
"theme.bar.buttons.workspaces.occupied" = secondary.base;
|
||||||
|
"theme.bar.buttons.workspaces.pill.width" = "4em";
|
||||||
|
"theme.bar.buttons.workspaces.smartHighlight" = true;
|
||||||
|
"theme.bar.buttons.y_margins" = "0em";
|
||||||
|
|
||||||
|
"theme.bar.location" = "bottom";
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.battery.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.battery.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.battery.icons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.icons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.slider.background" = background;
|
||||||
|
"theme.bar.menus.menu.battery.slider.backgroundhover" = background;
|
||||||
|
"theme.bar.menus.menu.battery.slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.slider.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.bluetooth.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.bluetooth.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.bluetooth.iconbutton.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.iconbutton.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.icons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.icons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.scroller.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.status" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch_divider" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.clock.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.clock.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.contextdays" = foreground;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.currentday" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.days" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.paginator" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.weekdays" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.yearmonth" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.clock.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.clock.time.time" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.time.timeperiod" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.hourly.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.hourly.temperature" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.hourly.time" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.stats" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.status" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.temperature" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.cold" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.extremelycold" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.extremelyhot" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.hot" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.moderate" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.card.color" = accent.dark;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.bluetooth.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.bluetooth.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.input.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.input.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.notifications.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.notifications.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.volume.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.volume.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.wifi.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.wifi.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.left.bottom.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.left.middle.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.left.top.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.right.bottom.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.right.middle.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.right.top.color" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.bar_background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.cpu.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.cpu.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.cpu.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.disk.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.disk.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.disk.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.gpu.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.gpu.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.gpu.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.ram.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.ram.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.ram.label" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.body" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.border" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.button_text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.card" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.confirm" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.deny" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.logout" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.restart" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.shutdown" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.sleep" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.profile.name" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.shortcuts.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.shortcuts.recording" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.shortcuts.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.media.album" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.artist" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.background.color" = "#000000";
|
||||||
|
"theme.bar.menus.menu.media.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.buttons.background" = background;
|
||||||
|
"theme.bar.menus.menu.media.buttons.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.buttons.inactive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.buttons.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.media.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.media.card.tint" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.media.slider.background" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.media.slider.backgroundhover" = secondary.dark;
|
||||||
|
"theme.bar.menus.menu.media.slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.slider.puck" = accent.bright;
|
||||||
|
"theme.bar.menus.menu.media.song" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.timestamp" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.network.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.network.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.network.iconbuttons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.iconbuttons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.icons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.icons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.scroller.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.status.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.switch.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.switch.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.switch.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.notifications.background" = background;
|
||||||
|
"theme.bar.menus.menu.notifications.border" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.card" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.notifications.clear" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.no_notifications_label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.pager.background" = background;
|
||||||
|
"theme.bar.menus.menu.notifications.pager.button" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.pager.label" = accent.bright;
|
||||||
|
"theme.bar.menus.menu.notifications.scrollbar.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch_divider" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch.puck" = accent.base;
|
||||||
|
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.power.border.color" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.text" = foreground;
|
||||||
|
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.systray.dropdownmenu.background" = background;
|
||||||
|
"theme.bar.menus.menu.systray.dropdownmenu.divider" = accent.base;
|
||||||
|
"theme.bar.menus.menu.systray.dropdownmenu.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.background" = background;
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.backgroundhover" = background;
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.volume.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.volume.iconbutton.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.iconbutton.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.background" = background;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.backgroundhover" = background;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.monochrome" = false;
|
||||||
|
|
||||||
|
"theme.bar.opacity" = t;
|
||||||
|
"theme.bar.outer_spacing" = "0em";
|
||||||
|
"theme.bar.transparent" = false;
|
||||||
|
|
||||||
|
"theme.font.name" = rice.font.code.name;
|
||||||
|
"theme.font.size" = "12px";
|
||||||
|
|
||||||
|
"theme.notification.actions.background" = background;
|
||||||
|
"theme.notification.actions.text" = foreground;
|
||||||
|
"theme.notification.background" = background;
|
||||||
|
"theme.notification.border" = border;
|
||||||
|
"theme.notification.close_button.background" = accent.dark;
|
||||||
|
"theme.notification.close_button.label" = accent.base;
|
||||||
|
"theme.notification.label" = accent.bright;
|
||||||
|
"theme.notification.labelicon" = accent.base;
|
||||||
|
"theme.notification.opacity" = 100;
|
||||||
|
"theme.notification.text" = foreground;
|
||||||
|
"theme.notification.time" = accent.base;
|
||||||
|
|
||||||
|
"theme.osd.bar_color" = accent.base;
|
||||||
|
"theme.osd.bar_container" = accent.dark;
|
||||||
|
"theme.osd.bar_empty_color" = accent.dark;
|
||||||
|
"theme.osd.bar_overflow_color" = accent.base;
|
||||||
|
"theme.osd.border.color" = border;
|
||||||
|
"theme.osd.icon_container" = secondary.dark;
|
||||||
|
"theme.osd.icon" = secondary.bright;
|
||||||
|
"theme.osd.label" = accent.bright;
|
||||||
|
"theme.osd.opacity" = t;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
37
home-modules/bar/submap-indicator.nix
Normal file
37
home-modules/bar/submap-indicator.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellApplication { name = "submap_indicator"; text = /*bash*/ ''
|
||||||
|
print_help() {
|
||||||
|
echo "Usage: submap_indicator {set <string>|unset}"
|
||||||
|
}
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
print_help; exit 1;
|
||||||
|
fi
|
||||||
|
case "$1" in
|
||||||
|
set)
|
||||||
|
# Check if there is a second argument for the 'set' operation
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
echo "$2" > /tmp/submap-indictor
|
||||||
|
pkill -RTMIN+8 waybar
|
||||||
|
pkill -RTMIN+8 hyprpanel
|
||||||
|
else
|
||||||
|
echo "Error: 'set' operation requires exactly one string argument."
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
unset)
|
||||||
|
echo "" > /tmp/submap-indictor
|
||||||
|
pkill -RTMIN+8 waybar
|
||||||
|
pkill -RTMIN+8 hyprpanel
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown command '$1'"
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
||||||
|
'';})
|
||||||
|
];
|
||||||
|
}
|
||||||
165
home-modules/bar/waybar.nix
Normal file
165
home-modules/bar/waybar.nix
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
{ pkgs, ... }@all: with all; let
|
||||||
|
sep = " ";
|
||||||
|
in {
|
||||||
|
programs.waybar = {
|
||||||
|
enable = false;
|
||||||
|
package = pkgs.waybar;
|
||||||
|
settings = {
|
||||||
|
bar = {
|
||||||
|
# height = 20;
|
||||||
|
layer = "top";
|
||||||
|
position = "bottom";
|
||||||
|
margin-top = 0;
|
||||||
|
# margin-left = rice.gap-size;
|
||||||
|
# margin-bottom = rice.gap-size;
|
||||||
|
# margin-right = rice.gap-size;
|
||||||
|
margin-left = 0;
|
||||||
|
margin-bottom = 0;
|
||||||
|
margin-right = 0;
|
||||||
|
spacing = 10;
|
||||||
|
fixed-center = true;
|
||||||
|
modules-left = [
|
||||||
|
# "cpu"
|
||||||
|
# "memory"
|
||||||
|
"wireplumber"
|
||||||
|
"backlight"
|
||||||
|
"battery"
|
||||||
|
"network"
|
||||||
|
"hyprland/window"
|
||||||
|
];
|
||||||
|
modules-center = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
];
|
||||||
|
modules-right = [
|
||||||
|
"custom/mode"
|
||||||
|
"custom/caldav_event"
|
||||||
|
"custom/cclock"
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
on-click = "activate";
|
||||||
|
format = "{name}";
|
||||||
|
all-outputs = false;
|
||||||
|
active-only = false;
|
||||||
|
};
|
||||||
|
"hyprland/window" = {
|
||||||
|
# format = "${sep}{}";
|
||||||
|
format = "{}";
|
||||||
|
separate-outputs = true;
|
||||||
|
};
|
||||||
|
"custom/cclock" = {
|
||||||
|
exec = "cclock";
|
||||||
|
restart-interval = 60;
|
||||||
|
};
|
||||||
|
"custom/caldav_event" = {
|
||||||
|
format = "${sep}{}";
|
||||||
|
exec = "caldav_event";
|
||||||
|
restart-interval = 60;
|
||||||
|
max-width = 60;
|
||||||
|
};
|
||||||
|
"custom/mode" = {
|
||||||
|
exec = "cat /tmp/submap-indictor";
|
||||||
|
interval = "once";
|
||||||
|
signal = 8;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu = {
|
||||||
|
interval = 1;
|
||||||
|
format = "${sep}{}%";
|
||||||
|
max-length = 10;
|
||||||
|
};
|
||||||
|
memory = {
|
||||||
|
interval = 5;
|
||||||
|
format = "${sep}{avail:.0f}G free";
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
interval = 60;
|
||||||
|
tooltip = false;
|
||||||
|
format = "{icon}${sep}{capacity}%";
|
||||||
|
states = {
|
||||||
|
warning = 15;
|
||||||
|
critical = 5;
|
||||||
|
};
|
||||||
|
format-icons = [ " " " " " " " " " " ];
|
||||||
|
format-charging = "{icon}${sep}+{capacity}%";
|
||||||
|
format-plugged = "{icon}${sep}P{capacity}%";
|
||||||
|
format-full = "{icon}${sep}F{capacity}%";
|
||||||
|
};
|
||||||
|
backlight = {
|
||||||
|
device = "eDP-1";
|
||||||
|
format = "{icon}${sep}{percent}%";
|
||||||
|
format-icons = [ "" "" "" "" "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
format-wifi = "${sep}{essid}";
|
||||||
|
format-ethernet = "${sep}Wired";
|
||||||
|
format-disconnected = "${sep}Disconnected";
|
||||||
|
};
|
||||||
|
wireplumber = {
|
||||||
|
format = "${sep}{volume}%";
|
||||||
|
format-muted = "${sep}--%";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in /* css */ ''
|
||||||
|
* {
|
||||||
|
font-family: ${rice.font.code.name};
|
||||||
|
font-size: 1em;
|
||||||
|
min-height: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: rgba(${f background},${builtins.toString rice.transparency});
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#custom-cclock,
|
||||||
|
#custom-mode,
|
||||||
|
#custom-caldav-event,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#tray,
|
||||||
|
#disk,
|
||||||
|
#backlight,
|
||||||
|
#network,
|
||||||
|
#wireplumber,
|
||||||
|
#memory,
|
||||||
|
#window,
|
||||||
|
#workspaces {
|
||||||
|
padding: 0px 3px;
|
||||||
|
margin-top: 0.3em;
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
color: rgb(${f accent.bright});
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
color: rgb(${f accent.base});
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
}
|
||||||
|
#workspaces button.active { color: rgb(${f background}); background-color: rgb(${f accent.base}); }
|
||||||
|
#workspaces button:hover { color: rgb(${f tertiary.bright}); }
|
||||||
|
#workspaces button.urgent { background-color: rgba(${f magenta.base},${builtins.toString rice.transparency}); }
|
||||||
|
|
||||||
|
#window, #custom-caldav_event {
|
||||||
|
font-family: ${rice.font.base.name}, ${rice.font.code.name};
|
||||||
|
color: rgb(${f tertiary.bright});
|
||||||
|
}
|
||||||
|
|
||||||
|
#wireplumber.muted { color: rgb(${f tertiary.bright}); }
|
||||||
|
#wireplumber { padding-left: 10px; }
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) { color: rgb(${f green.base});; }
|
||||||
|
#battery.charging { color: rgb(${f green.base}); }
|
||||||
|
#battery.critical {
|
||||||
|
background: rgb(${f negative.base});
|
||||||
|
color: rgb(${f foreground});
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-mode { color: rgb(${f red.base}); }
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
25
home-modules/bash.nix
Executable file → Normal file
25
home-modules/bash.nix
Executable file → Normal file
@@ -1,10 +1,10 @@
|
|||||||
{ pkgs, lib, user, ... }:
|
{ pkgs, ... }:
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
programs.bash = let
|
||||||
bash
|
init = /* bash */ ''
|
||||||
];
|
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
programs.bash = {
|
'';
|
||||||
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
ll = "ls -l";
|
ll = "ls -l";
|
||||||
@@ -19,11 +19,10 @@ lib.mkIf (user != "tv")
|
|||||||
"checkjobs"
|
"checkjobs"
|
||||||
];
|
];
|
||||||
enableCompletion = false;
|
enableCompletion = false;
|
||||||
# initExtra = ''
|
|
||||||
# if [[ $- == *i* ]] # if interactive
|
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
|
||||||
# then
|
shellInit = init;
|
||||||
# eval "$(${pkgs.starship}/bin/starship init bash)"
|
} // pkgs.lib.mkIf (pkgs.version != "25.05") {
|
||||||
# fi
|
profileExtra = init;
|
||||||
# '';
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
29
home-modules/bitwarden.nix
Executable file → Normal file
29
home-modules/bitwarden.nix
Executable file → Normal file
@@ -1,33 +1,6 @@
|
|||||||
{ config, pkgs, lib, host, secrets, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host != "NxACE")
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
bitwarden
|
bitwarden
|
||||||
bitwarden-cli
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# home.file.".config/Bitwarden CLI/data.json".text = ''
|
|
||||||
# {
|
|
||||||
# "stateVersion": 9,
|
|
||||||
# "global": {
|
|
||||||
# "theme": "system",
|
|
||||||
# "window": {},
|
|
||||||
# "environmentUrls": {
|
|
||||||
# "base": "https://pw.nx2.site",
|
|
||||||
# "api": null,
|
|
||||||
# "identity": null,
|
|
||||||
# "webVault": null,
|
|
||||||
# "icons": null,
|
|
||||||
# "notifications": null,
|
|
||||||
# "events": null,
|
|
||||||
# "keyConnector": null
|
|
||||||
# },
|
|
||||||
# "region": "Self-hosted",
|
|
||||||
# "installedVersion": "2023.12.0"
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
# '';
|
|
||||||
|
|
||||||
# home.sessionVariables.BW_SESSION = secrets.bitwarden.env.bw-session;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
57
home-modules/calendar-campuszeit-fix.nix
Normal file
57
home-modules/calendar-campuszeit-fix.nix
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = let
|
||||||
|
u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" {
|
||||||
|
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||||
|
} /* python */ ''
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def replace_campus_timezone(directory):
|
||||||
|
if not os.path.isdir(directory):
|
||||||
|
print(f"Error: {directory} is not a valid directory.")
|
||||||
|
return
|
||||||
|
|
||||||
|
for filename in os.listdir(directory):
|
||||||
|
filepath = os.path.join(directory, filename)
|
||||||
|
if not os.path.isfile(filepath):
|
||||||
|
continue
|
||||||
|
|
||||||
|
with open(filepath, 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
start_idx = content.find('BEGIN:VTIMEZONE')
|
||||||
|
end_idx = content.find('END:VTIMEZONE', start_idx)
|
||||||
|
if start_idx != -1 and end_idx != -1:
|
||||||
|
content = content[:start_idx] + content[end_idx + len('END:VTIMEZONE\n'):]
|
||||||
|
|
||||||
|
# Replace all TZID references
|
||||||
|
content = content.replace('TZID:CampusNetZeit', 'TZID:Europe/Berlin')
|
||||||
|
content = content.replace('TZID=CampusNetZeit', 'TZID=Europe/Berlin')
|
||||||
|
content = content.replace('TZID:"CampusNetZeit"', 'TZID:"Europe/Berlin"')
|
||||||
|
content = content.replace('TZID="CampusNetZeit"', 'TZID="Europe/Berlin"')
|
||||||
|
|
||||||
|
with open(filepath, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print(f"Updated time zone in: {filename}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
print("Usage: python replace_timezone.py <directory>")
|
||||||
|
else:
|
||||||
|
replace_campus_timezone(sys.argv[1])
|
||||||
|
'';
|
||||||
|
in [
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "nx_fix_campuszeit";
|
||||||
|
text = /*bash*/ ''
|
||||||
|
echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY
|
||||||
|
read -r -p "Continue?"
|
||||||
|
sudo chown -R ${hyper.user} "$1"
|
||||||
|
${u}/bin/nx_fix_campuszeit_python "$1"
|
||||||
|
sudo chown -R radicale "$1"
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
112
home-modules/calendar.nix
Normal file
112
home-modules/calendar.nix
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
{ pkgs, ... }@all: with all; let
|
||||||
|
calendars = with hyper; [
|
||||||
|
{
|
||||||
|
name = "Preservation";
|
||||||
|
primary = true;
|
||||||
|
url = "https://dav.${domain}/${user}/preservation/";
|
||||||
|
color = "#dddddd";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Effort";
|
||||||
|
url = "https://dav.${domain}/${user}/effort/";
|
||||||
|
color = "#dd2222";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Experience";
|
||||||
|
url = "https://dav.${domain}/${user}/experience/";
|
||||||
|
color = "#2222dd";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Exposure";
|
||||||
|
url = "https://dav.${domain}/${user}/exposure/";
|
||||||
|
color = "#22aa22";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Engagement";
|
||||||
|
url = "https://dav.${domain}/${user}/engagement/";
|
||||||
|
color = "#8800CC";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Sleep as Android";
|
||||||
|
url = secrets.calendar.sleep-as-android-url;
|
||||||
|
color = "#111111";
|
||||||
|
read-only = true;
|
||||||
|
type = "ics";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "LEC";
|
||||||
|
url = "https://${domain}/lec.ics";
|
||||||
|
color = "#A87000";
|
||||||
|
read-only = true;
|
||||||
|
type = "ics";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "LR";
|
||||||
|
url = "https://${domain}/lr.ics";
|
||||||
|
color = "#005040";
|
||||||
|
read-only = true;
|
||||||
|
type = "ics";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Worlds";
|
||||||
|
url = "https://zlypher.github.io/lol-events/cal/league-of-legends-world-championship.ical";
|
||||||
|
color = "#A4C3DE";
|
||||||
|
read-only = true;
|
||||||
|
type = "ics";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Feiertage Hessen";
|
||||||
|
url = "https://ics.tools/Feiertage/hessen.ics";
|
||||||
|
color = "#303030";
|
||||||
|
read-only = true;
|
||||||
|
type = "ics";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
default_set = {
|
||||||
|
# name =
|
||||||
|
# url =
|
||||||
|
color = "#777777";
|
||||||
|
read-only = false;
|
||||||
|
primary = false;
|
||||||
|
type = "caldav";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gnome-calendar
|
||||||
|
thunderbird
|
||||||
|
];
|
||||||
|
|
||||||
|
accounts.calendar.accounts = let
|
||||||
|
transform_caledar_set = calendar_set: with calendar_set; { # transform set for accounts.calendar.accounts endpoint
|
||||||
|
inherit primary;
|
||||||
|
remote = {
|
||||||
|
inherit url name;
|
||||||
|
userName = hyper.user; # my globally set username
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in lib.attrsets.mergeAttrsList (
|
||||||
|
map (calendar: {
|
||||||
|
"${calendar.name}" = transform_caledar_set ( default_set // calendar );
|
||||||
|
}) calendars
|
||||||
|
);
|
||||||
|
|
||||||
|
programs.thunderbird.settings = let
|
||||||
|
to_safe_name = name: (builtins.replaceStrings ["."] ["-"]) name;
|
||||||
|
in (lib.attrsets.mergeAttrsList (
|
||||||
|
map (calendar: with ( default_set // calendar ); {
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.cache.enabled" = true;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.calendar-main-default" = primary;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.calendar-main-in-composite" = true;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.color" = color;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.name" = name;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.type" = type;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.uri" = url;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.username" = hyper.user;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
|
||||||
|
}) calendars
|
||||||
|
) // {
|
||||||
|
"calendar.list.sortOrder" = lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
|
||||||
|
"calendar.week.start" = 1;
|
||||||
|
});
|
||||||
|
}
|
||||||
1017
home-modules/chatterino.nix
Executable file → Normal file
1017
home-modules/chatterino.nix
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
7
home-modules/clipboard.nix
Normal file
7
home-modules/clipboard.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
services.clipman = {
|
||||||
|
package = pkgs.clipman;
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,29 +1,119 @@
|
|||||||
{ config, pkgs, rice, ... }:
|
{ rice, ... }:
|
||||||
{
|
{
|
||||||
home.file.".config/color-pallet.txt".text = with rice.color; ''
|
home.file.".config/color-pallete.html".text = with rice.color; let
|
||||||
black: dark: ${black.dark}
|
cb = color-set: color-name: size: /* html */ ''
|
||||||
base: ${black.base}
|
<div class="color-container" style="border-color: ${color-set.base}">
|
||||||
bright: ${black.bright}
|
<div class="color-box" style="background: ${color-set.darker}; height: ${builtins.toString size}px;">
|
||||||
white: dark: ${white.dark}
|
<p style="color: ${color-set.bright}"> ${color-name}.darker </p>
|
||||||
base: ${white.base}
|
<p sktyle="color: ${color-set.bright}"> ${color-set.darker} </p>
|
||||||
bright: ${white.bright}
|
</div>
|
||||||
blue: dark: ${blue.dark}
|
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
|
||||||
base: ${blue.base}
|
<p style="color: ${color-set.brighter}"> ${color-name}.dark </p>
|
||||||
bright: ${blue.bright}
|
<p style="color: ${color-set.brighter}"> ${color-set.dark} </p>
|
||||||
magenta: dark: ${magenta.dark}
|
</div>
|
||||||
base: ${magenta.base}
|
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
|
||||||
bright: ${magenta.bright}
|
<p class="dynamic-text"> ${color-name}.base </p>
|
||||||
red: dark: ${red.dark}
|
<p class="dynamic-text"> ${color-set.base} </p>
|
||||||
base: ${red.base}
|
</div>
|
||||||
bright: ${red.bright}
|
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
|
||||||
cyan: dark: ${cyan.dark}
|
<p style="color: ${color-set.darker}"> ${color-name}.bright </p>
|
||||||
base: ${cyan.base}
|
<p style="color: ${color-set.darker}"> ${color-set.bright} </p>
|
||||||
bright: ${cyan.bright}
|
</div>
|
||||||
green: dark: ${green.dark}
|
<div class="color-box" style="background: ${color-set.brighter}; height: ${builtins.toString size}px;">
|
||||||
base: ${green.base}
|
<p style="color: ${color-set.dark}"> ${color-name}.brighter </p>
|
||||||
bright: ${green.bright}
|
<p style="color: ${color-set.dark}"> ${color-set.brighter} </p>
|
||||||
yellow: dark: ${yellow.dark}
|
</div>
|
||||||
base: ${yellow.base}
|
</div>
|
||||||
bright: ${yellow.bright}
|
'';
|
||||||
|
rgb = rice.lib.hex-to-rgb-comma-string;
|
||||||
|
s = builtins.toString;
|
||||||
|
in /* html */ ''
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="darkreader-lock">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Color Pallete</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: ${rice.font.base.name};
|
||||||
|
color: ${foreground};
|
||||||
|
width: fit-content;
|
||||||
|
margin: 10px auto 10px auto;
|
||||||
|
background: rgba(${rgb background},${s rice.transparency});
|
||||||
|
border: ${s rice.border-width}px solid ${border};
|
||||||
|
border-radius: ${s rice.rounding}px;
|
||||||
|
padding: ${s rice.gap-size}px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: ${s rice.gap-size}px;
|
||||||
|
}
|
||||||
|
.color-container {
|
||||||
|
font-family: ${rice.font.code.name};
|
||||||
|
display: flex;
|
||||||
|
gap: ${s rice.gap-size}px;
|
||||||
|
margin: ${s rice.gap-size}px;
|
||||||
|
}
|
||||||
|
.color-box {
|
||||||
|
width: 200px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: ${s rice.rounding}px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1> Color Pallete </h1>
|
||||||
|
${cb accent "accent" 100}
|
||||||
|
${cb secondary "secondary" 100}
|
||||||
|
${cb tertiary "tertiary" 100}
|
||||||
|
${cb weird "weird" 80}
|
||||||
|
${cb special "special" 80}
|
||||||
|
${cb subtle "subtle" 80}
|
||||||
|
<br>
|
||||||
|
${cb positive "positive" 70}
|
||||||
|
${cb negative "negative" 70}
|
||||||
|
<br>
|
||||||
|
${cb black "black" 50}
|
||||||
|
${cb white "white" 50}
|
||||||
|
${cb blue "blue" 50}
|
||||||
|
${cb cyan "cyan" 50}
|
||||||
|
${cb green "green" 50}
|
||||||
|
${cb magenta "magenta" 50}
|
||||||
|
${cb red "red" 50}
|
||||||
|
${cb yellow "yellow" 50}
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
function getLuminance(color) {
|
||||||
|
const rgb = color.match(/\w\w/g).map((c) => parseInt(c, 16));
|
||||||
|
const [r, g, b] = rgb.map((val) => {
|
||||||
|
const channel = val / 255;
|
||||||
|
return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);
|
||||||
|
});
|
||||||
|
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
||||||
|
}
|
||||||
|
function setDynamicTextColor() {
|
||||||
|
const texts = document.getElementsByClassName("dynamic-text");
|
||||||
|
function ff(text) {
|
||||||
|
const backgroundColor = text.parentElement.style.backgroundColor;
|
||||||
|
const rgbValues = backgroundColor.match(/\d+/g).map(Number);
|
||||||
|
const hexColor = `#''${rgbValues.map(c => c.toString(16).padStart(2, '0')).join("")}`;
|
||||||
|
const luminance = getLuminance(hexColor);
|
||||||
|
text.style.color = luminance < 0.2 ? '${foreground}' : '${background}';
|
||||||
|
};
|
||||||
|
for (let id in texts) { ff(texts[id]); }
|
||||||
|
}
|
||||||
|
setDynamicTextColor();
|
||||||
|
</script>
|
||||||
|
</html>
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
13
home-modules/direnv.nix
Normal file
13
home-modules/direnv.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
# enableBashIntegration = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
config = {
|
||||||
|
hide_env_diff = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
683
home-modules/discord.nix
Executable file → Normal file
683
home-modules/discord.nix
Executable file → Normal file
@@ -1,492 +1,201 @@
|
|||||||
{ config, pkgs, pkgs-unstable, lib, host, user, allowed, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (hyper.host != "NxACE")
|
||||||
{
|
{
|
||||||
home.packages = [
|
home = {
|
||||||
pkgs-unstable.vesktop
|
packages = with pkgs; [
|
||||||
];
|
vesktop
|
||||||
|
# discord
|
||||||
|
];
|
||||||
|
|
||||||
home.file.".config/vesktop/settings/settings.json".text = ''
|
# file.".config/vesktop/settings/settings.json".text = let
|
||||||
{
|
# settingsSyncVersion = "1729179678715";
|
||||||
"notifyAboutUpdates": true,
|
# in /* json */ ''{
|
||||||
"autoUpdate": false,
|
# "notifyAboutUpdates": true,
|
||||||
"autoUpdateNotification": true,
|
# "autoUpdate": false,
|
||||||
"useQuickCss": true,
|
# "autoUpdateNotification": true,
|
||||||
"themeLinks": [
|
# "useQuickCss": true,
|
||||||
"https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
|
# "themeLinks": [
|
||||||
],
|
# "https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
|
||||||
"enabledThemes": [],
|
# ],
|
||||||
"enableReactDevtools": false,
|
# "enabledThemes": [],
|
||||||
"frameless": false,
|
# "enableReactDevtools": false,
|
||||||
"transparent": true,
|
# "frameless": false,
|
||||||
"winCtrlQ": false,
|
# "transparent": true,
|
||||||
"macosTranslucency": false,
|
# "winCtrlQ": false,
|
||||||
"disableMinSize": false,
|
# "macosTranslucency": false,
|
||||||
"winNativeTitleBar": false,
|
# "disableMinSize": false,
|
||||||
"plugins": {
|
# "winNativeTitleBar": false,
|
||||||
"BadgeAPI": {
|
# "plugins": {
|
||||||
"enabled": true
|
# "BadgeAPI": { "enabled": true },
|
||||||
},
|
# "CommandsAPI": { "enabled": true },
|
||||||
"CommandsAPI": {
|
# "ContextMenuAPI": { "enabled": true },
|
||||||
"enabled": true
|
# "MemberListDecoratorsAPI": { "enabled": false },
|
||||||
},
|
# "MessageAccessoriesAPI": { "enabled": false },
|
||||||
"ContextMenuAPI": {
|
# "MessageDecorationsAPI": { "enabled": false },
|
||||||
"enabled": true
|
# "MessageEventsAPI": { "enabled": false },
|
||||||
},
|
# "MessagePopoverAPI": { "enabled": false },
|
||||||
"MemberListDecoratorsAPI": {
|
# "NoticesAPI": { "enabled": true },
|
||||||
"enabled": false
|
# "ServerListAPI": { "enabled": false },
|
||||||
},
|
# "NoTrack": { "enabled": true },
|
||||||
"MessageAccessoriesAPI": {
|
# "Settings": {
|
||||||
"enabled": false
|
# "enabled": true,
|
||||||
},
|
# "settingsLocation": "aboveActivity"
|
||||||
"MessageDecorationsAPI": {
|
# },
|
||||||
"enabled": false
|
# "SupportHelper": { "enabled": true },
|
||||||
},
|
# "ChatInputButtonAPI": { "enabled": false },
|
||||||
"MessageEventsAPI": {
|
# "AlwaysAnimate": { "enabled": true },
|
||||||
"enabled": false
|
# "AlwaysTrust": { "enabled": true },
|
||||||
},
|
# "AnonymiseFileNames": { "enabled": false },
|
||||||
"MessagePopoverAPI": {
|
# "WebRichPresence (arRPC)": { "enabled": false },
|
||||||
"enabled": false
|
# "BANger": { "enabled": false },
|
||||||
},
|
# "BetterFolders": { "enabled": false },
|
||||||
"NoticesAPI": {
|
# "BetterGifAltText": { "enabled": false },
|
||||||
"enabled": true
|
# "BetterGifPicker": { "enabled": false },
|
||||||
},
|
# "BetterNotesBox": { "enabled": false },
|
||||||
"ServerListAPI": {
|
# "BetterRoleDot": { "enabled": false },
|
||||||
"enabled": false
|
# "BetterUploadButton": { "enabled": false },
|
||||||
},
|
# "BiggerStreamPreview": { "enabled": false },
|
||||||
"NoTrack": {
|
# "BlurNSFW": { "enabled": false },
|
||||||
"enabled": true
|
# "CallTimer": { "enabled": false },
|
||||||
},
|
# "ClearURLs": { "enabled": false },
|
||||||
"Settings": {
|
# "ClientTheme": { "enabled": false },
|
||||||
"enabled": true,
|
# "ColorSighted": { "enabled": false },
|
||||||
"settingsLocation": "aboveActivity"
|
# "ConsoleShortcuts": { "enabled": false },
|
||||||
},
|
# "CopyUserURLs": { "enabled": false },
|
||||||
"SupportHelper": {
|
# "CrashHandler": { "enabled": true },
|
||||||
"enabled": true
|
# "CustomRPC": { "enabled": false },
|
||||||
},
|
# "Dearrow": { "enabled": false },
|
||||||
"ChatInputButtonAPI": {
|
# "Decor": { "enabled": false },
|
||||||
"enabled": false
|
# "DisableCallIdle": { "enabled": false },
|
||||||
},
|
# "EmoteCloner": { "enabled": false },
|
||||||
"AlwaysAnimate": {
|
# "Experiments": { "enabled": false },
|
||||||
"enabled": true
|
# "F8Break": { "enabled": false },
|
||||||
},
|
# "FakeNitro": { "enabled": false },
|
||||||
"AlwaysTrust": {
|
# "FakeProfileThemes": { "enabled": true },
|
||||||
"enabled": true
|
# "FavoriteEmojiFirst": { "enabled": false },
|
||||||
},
|
# "FavoriteGifSearch": { "enabled": false },
|
||||||
"AnonymiseFileNames": {
|
# "FixCodeblockGap": { "enabled": false },
|
||||||
"enabled": false
|
# "FixSpotifyEmbeds": { "enabled": false },
|
||||||
},
|
# "FixYoutubeEmbeds": { "enabled": false },
|
||||||
"WebRichPresence (arRPC)": {
|
# "ForceOwnerCrown": { "enabled": false },
|
||||||
"enabled": false
|
# "FriendInvites": { "enabled": false },
|
||||||
},
|
# "GameActivityToggle": { "enabled": false },
|
||||||
"BANger": {
|
# "GifPaste": { "enabled": false },
|
||||||
"enabled": false
|
# "GreetStickerPicker": { "enabled": false },
|
||||||
},
|
# "HideAttachments": { "enabled": false },
|
||||||
"BetterFolders": {
|
# "iLoveSpam": { "enabled": false },
|
||||||
"enabled": false
|
# "IgnoreActivities": { "enabled": false },
|
||||||
},
|
# "ImageZoom": { "enabled": false },
|
||||||
"BetterGifAltText": {
|
# "InvisibleChat": { "enabled": false },
|
||||||
"enabled": false
|
# "KeepCurrentChannel": { "enabled": false },
|
||||||
},
|
# "LastFMRichPresence": { "enabled": false },
|
||||||
"BetterGifPicker": {
|
# "LoadingQuotes": { "enabled": false },
|
||||||
"enabled": false
|
# "MemberCount": { "enabled": false },
|
||||||
},
|
# "MessageClickActions": { "enabled": false },
|
||||||
"BetterNotesBox": {
|
# "MessageLinkEmbeds": { "enabled": false },
|
||||||
"enabled": false
|
# "MessageLogger": { "enabled": false },
|
||||||
},
|
# "MessageTags": { "enabled": false },
|
||||||
"BetterRoleDot": {
|
# "MoreCommands": { "enabled": false },
|
||||||
"enabled": false
|
# "MoreKaomoji": { "enabled": false },
|
||||||
},
|
# "MoreUserTags": { "enabled": false },
|
||||||
"BetterUploadButton": {
|
# "Moyai": { "enabled": false },
|
||||||
"enabled": false
|
# "MutualGroupDMs": { "enabled": false },
|
||||||
},
|
# "NewGuildSettings": { "enabled": false },
|
||||||
"BiggerStreamPreview": {
|
# "NoBlockedMessages": { "enabled": false },
|
||||||
"enabled": false
|
# "NoDevtoolsWarning": { "enabled": false },
|
||||||
},
|
# "NoF1": { "enabled": false },
|
||||||
"BlurNSFW": {
|
# "NoMosaic": { "enabled": false },
|
||||||
"enabled": false
|
# "NoPendingCount": { "enabled": false },
|
||||||
},
|
# "NoProfileThemes": { "enabled": false },
|
||||||
"CallTimer": {
|
# "NoReplyMention": { "enabled": false },
|
||||||
"enabled": false
|
# "NoScreensharePreview": { "enabled": false },
|
||||||
},
|
# "NoTypingAnimation": { "enabled": false },
|
||||||
"ClearURLs": {
|
# "NoUnblockToJump": { "enabled": false },
|
||||||
"enabled": false
|
# "NormalizeMessageLinks": { "enabled": false },
|
||||||
},
|
# "NotificationVolume": { "enabled": false },
|
||||||
"ClientTheme": {
|
# "NSFWGateBypass": { "enabled": false },
|
||||||
"enabled": false
|
# "OnePingPerDM": { "enabled": false },
|
||||||
},
|
# "oneko": { "enabled": false },
|
||||||
"ColorSighted": {
|
# "OpenInApp": { "enabled": false },
|
||||||
"enabled": false
|
# "Party mode 🎉": { "enabled": false },
|
||||||
},
|
# "PermissionFreeWill": { "enabled": false },
|
||||||
"ConsoleShortcuts": {
|
# "PermissionsViewer": { "enabled": false },
|
||||||
"enabled": false
|
# "petpet": { "enabled": false },
|
||||||
},
|
# "PictureInPicture": { "enabled": false },
|
||||||
"CopyUserURLs": {
|
# "PinDMs": { "enabled": false },
|
||||||
"enabled": false
|
# "PlainFolderIcon": { "enabled": false },
|
||||||
},
|
# "PlatformIndicators": { "enabled": false },
|
||||||
"CrashHandler": {
|
# "PreviewMessage": { "enabled": false },
|
||||||
"enabled": true
|
# "PronounDB": { "enabled": false },
|
||||||
},
|
# "QuickMention": { "enabled": false },
|
||||||
"CustomRPC": {
|
# "QuickReply": { "enabled": false },
|
||||||
"enabled": false
|
# "ReactErrorDecoder": { "enabled": false },
|
||||||
},
|
# "ReadAllNotificationsButton": { "enabled": false },
|
||||||
"Dearrow": {
|
# "RelationshipNotifier": { "enabled": false },
|
||||||
"enabled": false
|
# "RevealAllSpoilers": { "enabled": false },
|
||||||
},
|
# "ReverseImageSearch": { "enabled": false },
|
||||||
"Decor": {
|
# "ReviewDB": { "enabled": false },
|
||||||
"enabled": false
|
# "RoleColorEverywhere": { "enabled": true },
|
||||||
},
|
# "SearchReply": { "enabled": false },
|
||||||
"DisableCallIdle": {
|
# "SecretRingToneEnabler": { "enabled": false },
|
||||||
"enabled": false
|
# "SendTimestamps": { "enabled": false },
|
||||||
},
|
# "ServerListIndicators": { "enabled": false },
|
||||||
"EmoteCloner": {
|
# "ServerProfile": { "enabled": false },
|
||||||
"enabled": false
|
# "ShikiCodeblocks": { "enabled": false },
|
||||||
},
|
# "ShowAllMessageButtons": { "enabled": false },
|
||||||
"Experiments": {
|
# "ShowConnections": { "enabled": false },
|
||||||
"enabled": false
|
# "ShowHiddenChannels": { "enabled": false },
|
||||||
},
|
# "ShowMeYourName": { "enabled": false },
|
||||||
"F8Break": {
|
# "ShowTimeouts": { "enabled": false },
|
||||||
"enabled": false
|
# "SilentMessageToggle": { "enabled": false },
|
||||||
},
|
# "SilentTyping": { "enabled": false },
|
||||||
"FakeNitro": {
|
# "SortFriendRequests": { "enabled": false },
|
||||||
"enabled": false
|
# "SpotifyControls": { "enabled": false },
|
||||||
},
|
# "SpotifyCrack": { "enabled": false },
|
||||||
"FakeProfileThemes": {
|
# "SpotifyShareCommands": { "enabled": false },
|
||||||
"enabled": true
|
# "StartupTimings": { "enabled": false },
|
||||||
},
|
# "SuperReactionTweaks": { "enabled": false },
|
||||||
"FavoriteEmojiFirst": {
|
# "TextReplace": { "enabled": false },
|
||||||
"enabled": false
|
# "ThemeAttributes": { "enabled": false },
|
||||||
},
|
# "TimeBarAllActivities": { "enabled": false },
|
||||||
"FavoriteGifSearch": {
|
# "Translate": { "enabled": false },
|
||||||
"enabled": false
|
# "TypingIndicator": { "enabled": false },
|
||||||
},
|
# "TypingTweaks": { "enabled": false },
|
||||||
"FixCodeblockGap": {
|
# "Unindent": { "enabled": false },
|
||||||
"enabled": false
|
# "UnsuppressEmbeds": { "enabled": false },
|
||||||
},
|
# "UrbanDictionary": { "enabled": false },
|
||||||
"FixSpotifyEmbeds": {
|
# "UserVoiceShow": { "enabled": false },
|
||||||
"enabled": false
|
# "USRBG": { "enabled": false },
|
||||||
},
|
# "ValidUser": { "enabled": false },
|
||||||
"FixYoutubeEmbeds": {
|
# "VoiceChatDoubleClick": { "enabled": false },
|
||||||
"enabled": false
|
# "VcNarrator": { "enabled": false },
|
||||||
},
|
# "VencordToolbox": { "enabled": false },
|
||||||
"ForceOwnerCrown": {
|
# "ViewIcons": { "enabled": false },
|
||||||
"enabled": false
|
# "ViewRaw": { "enabled": false },
|
||||||
},
|
# "VoiceMessages": { "enabled": false },
|
||||||
"FriendInvites": {
|
# "WebContextMenus": {
|
||||||
"enabled": false
|
# "enabled": true,
|
||||||
},
|
# "addBack": true },
|
||||||
"GameActivityToggle": {
|
# "WebKeybinds": { "enabled": true },
|
||||||
"enabled": false
|
# "WhoReacted": { "enabled": false },
|
||||||
},
|
# "Wikisearch": { "enabled": false },
|
||||||
"GifPaste": {
|
# "XSOverlay": { "enabled": false }
|
||||||
"enabled": false
|
# },
|
||||||
},
|
# "notifications": {
|
||||||
"GreetStickerPicker": {
|
# "timeout": 5000,
|
||||||
"enabled": false
|
# "position": "bottom-right",
|
||||||
},
|
# "useNative": "not-focused",
|
||||||
"HideAttachments": {
|
# "logLimit": 50
|
||||||
"enabled": false
|
# },
|
||||||
},
|
# "cloud": {
|
||||||
"iLoveSpam": {
|
# "authenticated": false,
|
||||||
"enabled": false
|
# "url": "https://api.vencord.dev/",
|
||||||
},
|
# "settingsSync": false,
|
||||||
"IgnoreActivities": {
|
# "settingsSyncVersion": ${settingsSyncVersion}
|
||||||
"enabled": false
|
# }
|
||||||
},
|
# }
|
||||||
"ImageZoom": {
|
# '';
|
||||||
"enabled": false
|
};
|
||||||
},
|
|
||||||
"InvisibleChat": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"KeepCurrentChannel": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"LastFMRichPresence": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"LoadingQuotes": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MemberCount": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MessageClickActions": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MessageLinkEmbeds": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MessageLogger": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MessageTags": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MoreCommands": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MoreKaomoji": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MoreUserTags": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"Moyai": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"MutualGroupDMs": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NewGuildSettings": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoBlockedMessages": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoDevtoolsWarning": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoF1": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoMosaic": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoPendingCount": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoProfileThemes": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoReplyMention": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoScreensharePreview": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoTypingAnimation": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NoUnblockToJump": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NormalizeMessageLinks": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NotificationVolume": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"NSFWGateBypass": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"OnePingPerDM": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"oneko": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"OpenInApp": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"Party mode 🎉": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PermissionFreeWill": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PermissionsViewer": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"petpet": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PictureInPicture": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PinDMs": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PlainFolderIcon": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PlatformIndicators": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PreviewMessage": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"PronounDB": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"QuickMention": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"QuickReply": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ReactErrorDecoder": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ReadAllNotificationsButton": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"RelationshipNotifier": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"RevealAllSpoilers": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ReverseImageSearch": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ReviewDB": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"RoleColorEverywhere": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"SearchReply": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SecretRingToneEnabler": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SendTimestamps": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ServerListIndicators": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ServerProfile": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ShikiCodeblocks": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ShowAllMessageButtons": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ShowConnections": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ShowHiddenChannels": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ShowMeYourName": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ShowTimeouts": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SilentMessageToggle": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SilentTyping": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SortFriendRequests": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SpotifyControls": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SpotifyCrack": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SpotifyShareCommands": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"StartupTimings": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"SuperReactionTweaks": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"TextReplace": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ThemeAttributes": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"TimeBarAllActivities": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"Translate": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"TypingIndicator": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"TypingTweaks": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"Unindent": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"UnsuppressEmbeds": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"UrbanDictionary": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"UserVoiceShow": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"USRBG": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ValidUser": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"VoiceChatDoubleClick": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"VcNarrator": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"VencordToolbox": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ViewIcons": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"ViewRaw": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"VoiceMessages": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"WebContextMenus": {
|
|
||||||
"enabled": true,
|
|
||||||
"addBack": true
|
|
||||||
},
|
|
||||||
"WebKeybinds": {
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
"WhoReacted": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"Wikisearch": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"XSOverlay": {
|
|
||||||
"enabled": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notifications": {
|
|
||||||
"timeout": 5000,
|
|
||||||
"position": "bottom-right",
|
|
||||||
"useNative": "not-focused",
|
|
||||||
"logLimit": 50
|
|
||||||
},
|
|
||||||
"cloud": {
|
|
||||||
"authenticated": false,
|
|
||||||
"url": "https://api.vencord.dev/",
|
|
||||||
"settingsSync": false,
|
|
||||||
"settingsSyncVersion": 1710459223618
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
121
home-modules/email.nix
Executable file → Normal file
121
home-modules/email.nix
Executable file → Normal file
@@ -1,28 +1,19 @@
|
|||||||
{ pkgs, lib, host, rice, secrets, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (hyper.host != "NxACE")
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
thunderbird
|
thunderbird
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs.thunderbird = let
|
||||||
programs.thunderbird =
|
|
||||||
let
|
|
||||||
inherit (lib.generators) toJSON;
|
inherit (lib.generators) toJSON;
|
||||||
extensions = toJSON {} {
|
extensions = toJSON {} {
|
||||||
"default-theme@mozilla.org" = "5787f490-29b8-436e-a111-640da8590790";
|
|
||||||
"google@search.mozilla.org" = "cc340383-7068-4b32-a10f-9f19334bfebc";
|
|
||||||
"ddg@search.mozilla.org" = "0c340210-f7ab-48e8-9778-600ed5d00160";
|
|
||||||
"amazondotcom@search.mozilla.org" = "881d8fdf-5772-4e33-81ff-faac2d1fa92c";
|
|
||||||
"wikipedia@search.mozilla.org" = "7ea3d39d-3eea-430f-9bd7-f902d8124d45";
|
|
||||||
"bing@search.mozilla.org" = "f480cce8-68af-4082-908e-f8996153352b";
|
|
||||||
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
|
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
|
||||||
"lightningcalendartabs@jlx.84" = "12d48e41-412e-4d09-835a-fa6fb8c180eb";
|
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles = {
|
profiles = {
|
||||||
default = {
|
"${hyper.user}" = {
|
||||||
isDefault = true;
|
isDefault = true;
|
||||||
settings = with rice.color; {
|
settings = with rice.color; {
|
||||||
"calendar.alarms.showmissed" = false;
|
"calendar.alarms.showmissed" = false;
|
||||||
@@ -47,14 +38,58 @@ lib.mkIf (host != "NxACE")
|
|||||||
"mailnews.headers.showReferences" = true;
|
"mailnews.headers.showReferences" = true;
|
||||||
"mailnews.headers.showSender" = true;
|
"mailnews.headers.showSender" = true;
|
||||||
"mailnews.headers.showUserAgent" = true;
|
"mailnews.headers.showUserAgent" = true;
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
};
|
};
|
||||||
|
userChrome = with rice.color; /* css */ ''
|
||||||
|
body,
|
||||||
|
#navigation-toolbox,
|
||||||
|
#calendarContent,
|
||||||
|
#calSidebar,
|
||||||
|
#tabpanelcontainer,
|
||||||
|
#spacesToolbar,
|
||||||
|
#tabs-toolbar,
|
||||||
|
#calMinimonth,
|
||||||
|
#primaryButtonSidePanel *,
|
||||||
|
.minimonth-week,
|
||||||
|
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
|
||||||
|
#view-box,
|
||||||
|
#tabs-toolbar,
|
||||||
|
#status-bar,
|
||||||
|
.calview-toggle,
|
||||||
|
#calview-toggle-item,
|
||||||
|
#folderPaneHeaderBar,
|
||||||
|
#folderPane,
|
||||||
|
#threadPaneHeaderBar,
|
||||||
|
#threadTree,
|
||||||
|
#tabs-toolbar {
|
||||||
|
color: ${foreground} !important;
|
||||||
|
font-family: ${rice.font.base.name} !important;
|
||||||
|
background-color: transparent !important;
|
||||||
|
background-image: none !important;
|
||||||
|
border: none !important;
|
||||||
|
-moz-appearance: none !important;
|
||||||
|
}
|
||||||
|
.minimonth-nav-section {
|
||||||
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||||
|
border: ${builtins.toString rice.border-width}px solid ${border};
|
||||||
|
}
|
||||||
|
.button,
|
||||||
|
.button-primary,
|
||||||
|
.tab-content[selected] {
|
||||||
|
background-color: ${accent.base};
|
||||||
|
color: ${background};
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||||
|
}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
accounts.email.accounts =
|
accounts.email.accounts = let
|
||||||
let
|
|
||||||
OAuth2Settings = id: {
|
OAuth2Settings = id: {
|
||||||
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
||||||
"mail.server.server_${id}.authMethod" = 10;
|
"mail.server.server_${id}.authMethod" = 10;
|
||||||
@@ -76,7 +111,7 @@ lib.mkIf (host != "NxACE")
|
|||||||
};
|
};
|
||||||
thunderbird = {
|
thunderbird = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles = [ "default" ];
|
profiles = [ "nx2" ];
|
||||||
# The id given as argument is an automatically generated account identifier.
|
# The id given as argument is an automatically generated account identifier.
|
||||||
settings = OAuth2Settings;
|
settings = OAuth2Settings;
|
||||||
};
|
};
|
||||||
@@ -96,28 +131,61 @@ lib.mkIf (host != "NxACE")
|
|||||||
};
|
};
|
||||||
thunderbird = {
|
thunderbird = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles = [ "default" ];
|
profiles = [ "nx2" ];
|
||||||
# The id given as argument is an automatically generated account identifier.
|
# The id given as argument is an automatically generated account identifier.
|
||||||
settings = OAuth2Settings;
|
settings = OAuth2Settings;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hsmw = {
|
# hsmw = with secrets.email.hsmw; {
|
||||||
address = secrets.email.hsmw.mail;
|
# address = "${un}@hs-mittweida.de";
|
||||||
userName = secrets.email.hsmw.mail;
|
# userName = "${un}@hs-mittweida.de";
|
||||||
|
# realName = "Lennart J. Kurzweg";
|
||||||
|
# imap = {
|
||||||
|
# port = 993;
|
||||||
|
# host = "xc.hs-mittweida.de";
|
||||||
|
# };
|
||||||
|
# smtp = {
|
||||||
|
# port = 587;
|
||||||
|
# host = "xc.hs-mittweida.de";
|
||||||
|
# tls.useStartTls = true;
|
||||||
|
# };
|
||||||
|
# signature = {
|
||||||
|
# text = ''
|
||||||
|
# MatNr: ${mnr}
|
||||||
|
# SemGr: ${semgr}
|
||||||
|
# About Me: https://nx2.site/about-me
|
||||||
|
# Contact: https://nx2.site/contact
|
||||||
|
# GPG: https://nx2.site/gpg
|
||||||
|
# '';
|
||||||
|
# showSignature = "append";
|
||||||
|
# };
|
||||||
|
# thunderbird = {
|
||||||
|
# enable = true;
|
||||||
|
# profiles = [ "nx2" ];
|
||||||
|
# settings = id: {
|
||||||
|
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
tuda = with secrets.email.tuda; {
|
||||||
|
address = "${un}@stud.tu-darmstadt.de";
|
||||||
|
userName = tuid;
|
||||||
realName = "Lennart J. Kurzweg";
|
realName = "Lennart J. Kurzweg";
|
||||||
imap = {
|
imap = {
|
||||||
port = 993;
|
port = 993;
|
||||||
host = "xc.hs-mittweida.de";
|
host = "imap.stud.tu-darmstadt.de";
|
||||||
};
|
};
|
||||||
smtp = {
|
smtp = {
|
||||||
port = 465;
|
port = 465;
|
||||||
host = "xc.hs-mittweida.de";
|
host = "smtp.tu-darmstadt.de";
|
||||||
|
tls.enable = true;
|
||||||
};
|
};
|
||||||
signature = {
|
signature = {
|
||||||
text = ''
|
text = ''
|
||||||
MatNr: ${secrets.email.hsmw.mnr}
|
Field: MSc. AI/ML
|
||||||
SemGr: ${secrets.email.hsmw.semgr}
|
MNr: ${mnr}
|
||||||
|
TU-ID: ${tuid}
|
||||||
About Me: https://nx2.site/about-me
|
About Me: https://nx2.site/about-me
|
||||||
Contact: https://nx2.site/contact
|
Contact: https://nx2.site/contact
|
||||||
GPG: https://nx2.site/gpg
|
GPG: https://nx2.site/gpg
|
||||||
@@ -126,7 +194,10 @@ lib.mkIf (host != "NxACE")
|
|||||||
};
|
};
|
||||||
thunderbird = {
|
thunderbird = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles = [ "default" ];
|
profiles = [ "nx2" ];
|
||||||
|
settings = id: {
|
||||||
|
"mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
12
home-modules/figlet.nix
Normal file
12
home-modules/figlet.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ pkgs, hyper, ... }:
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
figlet
|
||||||
|
(pkgs.writeShellScriptBin "fgl" ''
|
||||||
|
figlet -f ${hyper.home}/.local/share/figlet/nx2.flf -w 9999
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
file.".local/share/figlet/nx2.flf".text = builtins.readFile ./assets/nx2.flf;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,170 +1,16 @@
|
|||||||
{pkgs, secrets, user, inputs, ...}: {
|
{ pkgs, ... }@all: with all; {
|
||||||
programs.firefox = {
|
programs.firefox.profiles."{hyper.user}".settings = {
|
||||||
enable = true;
|
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||||
package = pkgs.firefox;
|
};
|
||||||
profiles.${user} = {
|
home = {
|
||||||
# extensions = with inputs.firefox-addons; [
|
packages = with pkgs; [
|
||||||
# ublock-origin
|
firefox
|
||||||
# darkreader
|
];
|
||||||
# bitwarden
|
file = {
|
||||||
# flagfox
|
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
|
||||||
# sponsorblock
|
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice;
|
||||||
# languagetool
|
|
||||||
# istilldontcareaboutcookies
|
|
||||||
# return-youtube-dislikes
|
|
||||||
# ];
|
|
||||||
extensions = [ inputs.firefox-addons.darkreader ];
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Github Code Search";
|
|
||||||
keyword = "cs";
|
|
||||||
url = "https://github.com/search?type=code&auto_enroll=true";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
settings = {
|
|
||||||
"accessibility.typeaheadfind.flashBar" = 0;
|
|
||||||
"app.normandy.first_run" = false;
|
|
||||||
"app.normandy.migrationsApplied" = 12;
|
|
||||||
"app.normandy.user_id" = "25f4d747-3c5e-40e8-b520-caed34976e7a";
|
|
||||||
"browser.aboutConfig.showWarning" = false;
|
|
||||||
"browser.bookmarks.addedImportButton" = true;
|
|
||||||
"browser.bookmarks.editDialog.confirmationHintShowCount" = 1;
|
|
||||||
"browser.bookmarks.restore_default_bookmarks" = false;
|
|
||||||
"browser.bookmarks.showMobileBookmarks" = true;
|
|
||||||
"browser.contentblocking.category" = "standard";
|
|
||||||
"browser.contextual-services.contextId" = "{7fc76500-3ce1-4c39-8fa5-8e9964c04ecc}";
|
|
||||||
"browser.download.lastDir" = "/home/nx2/Documents";
|
|
||||||
"browser.download.panel.shown" = true;
|
|
||||||
"browser.download.viewableInternally.typeWasRegistered.avif" = true;
|
|
||||||
"browser.download.viewableInternally.typeWasRegistered.webp" = true;
|
|
||||||
"browser.eme.ui.firstContentShown" = true;
|
|
||||||
"browser.engagement.ctrlTab.has-used" = true;
|
|
||||||
"browser.engagement.downloads-button.has-used" = true;
|
|
||||||
"browser.engagement.fxa-toolbar-menu-button.has-used" = true;
|
|
||||||
"browser.laterrun.bookkeeping.sessionCount" = 1;
|
|
||||||
"browser.migration.version" = 144;
|
|
||||||
"browser.newtabpage.activity-stream.impressionId" = "{a6561b3f-3884-4b37-b9c1-c67e80f5792a}";
|
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
||||||
"browser.newtabpage.activity-stream.topSitesRows" = 2;
|
|
||||||
"browser.newtabpage.pinned" = "[{\"url\":\"https://www.youtube.com/\",\"label\":\"youtube\",\"baseDomain\":\"youtube.com\"},{\"url\":\"https://www.twitch.tv/\",\"baseDomain\":\"twitch.tv\"},{\"url\":\"https://nx2.site/\",\"label\":\"nx2\",\"baseDomain\":\"nx2.site\"},{\"url\":\"https://feddit.de\",\"label\":\"Lemmy\",\"baseDomain\":\"feddit.de\"},{\"url\":\"https://ieji.de\",\"label\":\"Mastadon\",\"baseDomain\":\"ieji.de\"},{\"url\":\"https://www.hs-mittweida.de/\",\"label\":\"HSMW\",\"baseDomain\":\"hs-mittweida.de\"},{\"url\":\"http://wiki.hyprland.org/\",\"label\":\"hyprland\",\"baseDomain\":\"wiki.hyprland.org\"},{\"url\":\"https://wiki.archlinux.org\",\"label\":\"ArchWiki\",\"baseDomain\":\"wiki.archlinux.org\"},{\"url\":\"https://chat.openai.com/\",\"label\":\"ChatGPT\",\"baseDomain\":\"chat.openai.com\"},{\"url\":\"https://www.nerdfonts.com/cheat-sheet\",\"label\":\"Nerdfonts\",\"baseDomain\":\"nerdfonts.com\"},{\"url\":\"http://127.0.0.1:8384/\",\"label\":\"Syncthing\",\"baseDomain\":\"127.0.0.1\"},{\"url\":\"https://lutris.net/\",\"label\":\"Lutris\",\"baseDomain\":\"lutris.net\"},{\"url\":\"https://www.namecheap.com/\",\"label\":\"Namecheap\",\"baseDomain\":\"namecheap.com\"},{\"url\":\"https://hub.docker.com/\",\"label\":\"Docker Hub\",\"baseDomain\":\"hub.docker.com\"},{\"url\":\"https://www.netflix.com/\",\"label\":\"Netflix\",\"baseDomain\":\"netflix.com\"},{\"url\":\"https://www.amazon.de/Amazon-Video/b/?&node=3010075031&ref=dvm_MLP_ROWEU_DE_1\",\"label\":\"Prime Video\"},{\"url\":\"https://translate.google.com/\",\"label\":\"Google Translate\",\"baseDomain\":\"translate.google.com\"}]";
|
|
||||||
"browser.newtabpage.storageVersion" = 1;
|
|
||||||
"browser.pageActions.persistedActions" = "{\"ids\":[\"bookmark\",\"_802a552e-13d1-4683-a40a-1e5325fba4bb_\"],\"idsInUrlbar\":[\"_802a552e-13d1-4683-a40a-1e5325fba4bb_\",\"bookmark\"],\"idsInUrlbarPreProton\":[],\"version\":1}";
|
|
||||||
"browser.pagethumbnails.storage_version" = 3;
|
|
||||||
"browser.pdfjs.feature-tour" = "{\"screen\":\"\",\"complete\":true}";
|
|
||||||
"browser.policies.applied" = true;
|
|
||||||
"browser.proton.toolbar.version" = 3;
|
|
||||||
"browser.rights.3.shown" = true;
|
|
||||||
"browser.search.region" = "DE";
|
|
||||||
"browser.startup.couldRestoreSession.count" = 2;
|
|
||||||
"browser.startup.homepage_override.mstone" = "126.0";
|
|
||||||
"browser.theme.toolbar-theme" = 0;
|
|
||||||
"browser.translations.neverTranslateLanguages" = "de";
|
|
||||||
"browser.translations.panelShown" = true;
|
|
||||||
"browser.uiCustomization.state" = "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[\"sponsorblocker_ajay_app-browser-action\",\"_d8b32864-153d-47fb-93ea-c273c4d1ef17_-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"linkhints_lydell_github_io-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"_de22fd49-c9ab-4359-b722-b3febdc3a0b0_-browser-action\",\"amptra_keepa_com-browser-action\",\"pywalfox_frewacom_org-browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"customizableui-special-spring1\",\"urlbar-container\",\"customizableui-special-spring2\",\"save-to-pocket-button\",\"downloads-button\",\"fxa-toolbar-menu-button\",\"unified-extensions-button\",\"ublock0_raymondhill_net-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"addon_darkreader_org-browser-action\",\"_d7742d87-e61d-4b78-b8a1-b469842139fa_-browser-action\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"import-button\",\"personal-bookmarks\"]},\"seen\":[\"save-to-pocket-button\",\"developer-button\",\"_d8b32864-153d-47fb-93ea-c273c4d1ef17_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"addon_darkreader_org-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"linkhints_lydell_github_io-browser-action\",\"sponsorblocker_ajay_app-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"_de22fd49-c9ab-4359-b722-b3febdc3a0b0_-browser-action\",\"amptra_keepa_com-browser-action\",\"_d7742d87-e61d-4b78-b8a1-b469842139fa_-browser-action\",\"pywalfox_frewacom_org-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"PersonalToolbar\",\"toolbar-menubar\",\"TabsToolbar\",\"unified-extensions-area\"],\"currentVersion\":20,\"newElementCount\":2}";
|
|
||||||
"browser.urlbar.placeholderName" = "Google";
|
|
||||||
"browser.urlbar.placeholderName.private" = "Google";
|
|
||||||
"browser.urlbar.quicksuggest.migrationVersion" = 2;
|
|
||||||
"browser.urlbar.quicksuggest.scenario" = "history";
|
|
||||||
"browser.urlbar.tipShownCount.searchTip_onboard" = 4;
|
|
||||||
"browser.urlbar.tipShownCount.searchTip_redirect" = 1;
|
|
||||||
"datareporting.policy.dataSubmissionPolicyAcceptedVersion" = 2;
|
|
||||||
"devtools.debugger.prefs-schema-version" = 11;
|
|
||||||
"devtools.everOpened" = true;
|
|
||||||
"devtools.inspector.activeSidebar" = "animationinspector";
|
|
||||||
"devtools.inspector.selectedSidebar" = "animationinspector";
|
|
||||||
"devtools.netmonitor.columnsData" = "[{\"name\":\"status\",\"minWidth\":30,\"width\":5.56},{\"name\":\"method\",\"minWidth\":30,\"width\":5.56},{\"name\":\"domain\",\"minWidth\":30,\"width\":11.11},{\"name\":\"file\",\"minWidth\":30,\"width\":27.78},{\"name\":\"url\",\"minWidth\":30,\"width\":25},{\"name\":\"initiator\",\"minWidth\":30,\"width\":11.11},{\"name\":\"type\",\"minWidth\":30,\"width\":5.56},{\"name\":\"transferred\",\"minWidth\":30,\"width\":11.11},{\"name\":\"contentSize\",\"minWidth\":30,\"width\":5.56},{\"name\":\"waterfall\",\"minWidth\":150,\"width\":16.67}]";
|
|
||||||
"devtools.netmonitor.msg.visibleColumns" = "[\"data\",\"time\"]";
|
|
||||||
"devtools.toolbox.host" = "window";
|
|
||||||
"devtools.toolbox.sidebar.width" = 1406;
|
|
||||||
"devtools.toolsidebar-height.inspector" = 350;
|
|
||||||
"devtools.toolsidebar-width.inspector" = 816;
|
|
||||||
"devtools.toolsidebar-width.inspector.splitsidebar" = 513;
|
|
||||||
"distribution.iniFile.exists.appversion" = "126.0";
|
|
||||||
"distribution.iniFile.exists.value" = true;
|
|
||||||
"distribution.nixos.bookmarksProcessed" = true;
|
|
||||||
"doh-rollout.doneFirstRun" = true;
|
|
||||||
"doh-rollout.home-region" = "DE";
|
|
||||||
"dom.forms.autocomplete.formautofill" = true;
|
|
||||||
"dom.push.userAgentID" = "d5b33ca6eafc45e5b8ce2161eb075680";
|
|
||||||
"extensions.activeThemeID" = "{9b84b6b4-07c4-4b4b-ba21-394d86f6e9ee}";
|
|
||||||
"extensions.blocklist.pingCountVersion" = -1;
|
|
||||||
"extensions.databaseSchema" = 36;
|
|
||||||
"extensions.getAddons.databaseSchema" = 6;
|
|
||||||
"extensions.lastAppBuildId" = "20240509170740";
|
|
||||||
"extensions.lastAppVersion" = "126.0";
|
|
||||||
"extensions.lastPlatformVersion" = "126.0";
|
|
||||||
"extensions.pendingOperations" = false;
|
|
||||||
"extensions.pictureinpicture.enable_picture_in_picture_overrides" = true;
|
|
||||||
"extensions.quarantinedDomains.list" = "autoatendimento.bb.com.br,ibpf.sicredi.com.br,ibpj.sicredi.com.br,internetbanking.caixa.gov.br,www.ib12.bradesco.com.br,www2.bancobrasil.com.br";
|
|
||||||
"extensions.systemAddonSet" = "{\"schema\":1,\"addons\":{}}";
|
|
||||||
"extensions.ui.dictionary.hidden" = true;
|
|
||||||
"extensions.ui.extension.hidden" = false;
|
|
||||||
"extensions.ui.lastCategory" = "addons://list/extension";
|
|
||||||
"extensions.ui.locale.hidden" = true;
|
|
||||||
"extensions.ui.sitepermission.hidden" = true;
|
|
||||||
"extensions.webcompat.enable_shims" = true;
|
|
||||||
"extensions.webcompat.perform_injections" = true;
|
|
||||||
"extensions.webcompat.perform_ua_overrides" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.addon@darkreader.org" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.amptra@keepa.com" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.jid1-D7momAzRw417Ag@jetpack" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.jid1-KKzOGWgsW3Ao4Q@jetpack" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.languagetool-webextension@languagetool.org" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.linkhints@lydell.github.io" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.screenshots@mozilla.org" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.sponsorBlocker@ajay.app" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.uBlock0@raymondhill.net" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.{446900e4-71c2-419f-a6a7-df9c091e268b}" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.{802a552e-13d1-4683-a40a-1e5325fba4bb}" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.{d8b32864-153d-47fb-93ea-c273c4d1ef17}" = true;
|
|
||||||
"extensions.webextensions.ExtensionStorageIDB.migrated.{de22fd49-c9ab-4359-b722-b3febdc3a0b0}" = true;
|
|
||||||
"extensions.webextensions.uuids" = "{\"formautofill@mozilla.org\":\"62543e0a-fb48-4cb5-bb50-7bc1d34123eb\",\"pictureinpicture@mozilla.org\":\"72b053a7-04e4-443d-9eb0-788fee741317\",\"screenshots@mozilla.org\":\"b0da1868-7ce5-4126-836c-cb27f7c90fd1\",\"webcompat-reporter@mozilla.org\":\"53128b30-09e3-498f-b327-8297bca2a694\",\"webcompat@mozilla.org\":\"e3fce76c-5b97-4ed2-a127-5f54ea2b55a6\",\"default-theme@mozilla.org\":\"edf40636-48ae-479c-bb15-d2c1c594f4f3\",\"addons-search-detection@mozilla.com\":\"65723b37-68b8-4463-964e-000a9efc4bee\",\"google@search.mozilla.org\":\"e8fd2d91-fda9-450d-9410-c475b13cd126\",\"wikipedia@search.mozilla.org\":\"2cb739cf-5028-4ba1-8df8-a6b4035d3e3f\",\"bing@search.mozilla.org\":\"2836d1bb-c71f-451a-a7c9-5ed0304a71fb\",\"ddg@search.mozilla.org\":\"8280c1b4-90bb-4ca8-b1e3-9c64c1cb4740\",\"{d8b32864-153d-47fb-93ea-c273c4d1ef17}\":\"6cd42543-07ad-499d-ac1f-f755b26bc2c5\",\"uBlock0@raymondhill.net\":\"d57779a5-82b8-40d3-8a7b-05b25c9e86ac\",\"{802a552e-13d1-4683-a40a-1e5325fba4bb}\":\"ac3677b0-913d-4025-a37c-5cad38597584\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"6978384a-6166-415d-ab6e-a6adfbe6731d\",\"addon@darkreader.org\":\"b691cdc2-fb80-4767-9baf-bc63d916deb6\",\"{762f9885-5a13-4abd-9c77-433dcd38b8fd}\":\"6830a911-9fbf-4c6a-b07b-0293a16f919d\",\"linkhints@lydell.github.io\":\"040ed779-4e1a-4be8-bb2f-1202d6406573\",\"jid1-q4sG8pYhq8KGHs@jetpack\":\"1c3283fc-303b-4984-aa6a-3d599b7dc543\",\"sponsorBlocker@ajay.app\":\"22d4703c-dabe-4d7c-95c7-3d1527e19ef6\",\"jid1-D7momAzRw417Ag@jetpack\":\"fd28819b-1fe8-401b-8d1b-ba42808f4983\",\"{ceb74424-e8e6-4023-b972-a12e50e17fcb}\":\"ef19aad8-0b64-49d3-84f0-af90c440df49\",\"languagetool-webextension@languagetool.org\":\"b3622472-5123-41be-8b48-f2040b0d2424\",\"jid1-KKzOGWgsW3Ao4Q@jetpack\":\"283cf64b-0d7a-4fd6-8579-876ba162e3eb\",\"{de22fd49-c9ab-4359-b722-b3febdc3a0b0}\":\"4c6ae857-dccb-4a09-a2eb-8351afef4cb9\",\"amptra@keepa.com\":\"85562121-cb4f-4138-a608-d61bd0c2852a\",\"{bc5ae657-5db8-4f8a-b558-e7343e127fee}\":\"d5468646-933b-4941-9ab2-007faf58f8c1\",\"{9b84b6b4-07c4-4b4b-ba21-394d86f6e9ee}\":\"6e250173-0b11-41a3-b3f9-f1527394f0c6\"}";
|
|
||||||
"gecko.handlerService.defaultHandlersVersion" = 1;
|
|
||||||
"identity.fxaccounts.account.device.name" = "nx2’s Firefox on NxXPS";
|
|
||||||
"identity.fxaccounts.account.telemetry.sanitized_uid" = "13f64fe3ab835d96147cefb0f5c11287";
|
|
||||||
"identity.fxaccounts.lastSignedInUserHash" = "u2qaIKiezOjW/0+5BuKsVe+1+U7k3SSH4qAuEPoL7Tc=";
|
|
||||||
"identity.fxaccounts.toolbar.accessed" = true;
|
|
||||||
"media.eme.enabled" = true;
|
|
||||||
"media.gmp-gmpopenh264.abi" = "x86_64-gcc3";
|
|
||||||
"media.gmp-gmpopenh264.hashValue" = "53a58bfb4c8124ad4f7655b99bfdea290033a085e0796b19245b33b91c0948fdac9f0c3e817130b352493a65d9a7a0fc8a7c1eedc618cdaa2b4580734a11cd9c";
|
|
||||||
"media.gmp-gmpopenh264.version" = "2.3.2";
|
|
||||||
"media.gmp-manager.buildID" = "20240509170740";
|
|
||||||
"media.gmp-widevinecdm.abi" = "x86_64-gcc3";
|
|
||||||
"media.gmp-widevinecdm.hashValue" = "661ad969099a89a278384f56a17ae912c3542d585ea4981f3b9a3c6e1a07f8da6ffad9db29cee194bf7834adc3ca258c775cd2b0980e3e6cb7ee8b39600dad58";
|
|
||||||
"media.gmp-widevinecdm.version" = "4.10.2710.0";
|
|
||||||
"media.gmp.storage.version.observed" = 1;
|
|
||||||
"media.videocontrols.picture-in-picture.video-toggle.has-used" = true;
|
|
||||||
"network.dns.disablePrefetch" = true;
|
|
||||||
"network.http.speculative-parallel-limit" = 0;
|
|
||||||
"network.predictor.enabled" = false;
|
|
||||||
"network.prefetch-next" = false;
|
|
||||||
"network.proxy.type" = 4;
|
|
||||||
"nimbus.syncdefaultsstore.upgradeDialog" = "{\"slug\":\"upgrade-spotlight-rollout\",\"branch\":{\"slug\":\"treatment\",\"ratio\":1,\"feature\":{\"value\":null,\"enabled\":true,\"featureId\":\"upgradeDialog\"},\"features\":null},\"active\":true,\"experimentType\":\"rollout\",\"source\":\"rs-loader\",\"userFacingName\":\"Upgrade Spotlight Rollout\",\"userFacingDescription\":\"Experimenting on onboarding content when you upgrade Firefox.\",\"lastSeen\":\"2024-04-09T08:41:11.293Z\",\"featureIds\":[\"upgradeDialog\"],\"prefs\":[],\"isRollout\":true}";
|
|
||||||
"nimbus.syncdefaultsstore.upgradeDialog.enabled" = false;
|
|
||||||
"pdfjs.enabledCache.state" = true;
|
|
||||||
"pdfjs.migrationVersion" = 2;
|
|
||||||
"pref.privacy.disable_button.view_passwords" = false;
|
|
||||||
"privacy.purge_trackers.date_in_cookie_database" = "0";
|
|
||||||
"privacy.sanitize.pending" = "[{\"id\":\"newtab-container\",\"itemsToClear\":[],\"options\":{}}]";
|
|
||||||
"security.sandbox.content.tempDirSuffix" = "83e3690e-e3e1-4bf5-b085-737b3a2792c9";
|
|
||||||
"services.settings.clock_skew_seconds" = 0;
|
|
||||||
"services.sync.username" = secrets.email.gmail-online.mail;
|
|
||||||
"signon.autofillForms" = false;
|
|
||||||
"signon.rememberSignons" = false;
|
|
||||||
"storage.vacuum.last.index" = 2;
|
|
||||||
"toolkit.telemetry.cachedClientID" = "d2c7964b-01ee-49bf-94a9-329bd47d7606";
|
|
||||||
"toolkit.telemetry.pioneer-new-studies-available" = true;
|
|
||||||
"toolkit.telemetry.previousBuildID" = "20240509170740";
|
|
||||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# xdg.mimeApps.defaultApplications = {
|
|
||||||
# "text/html" = ["firefox.desktop"];
|
|
||||||
# "text/xml" = ["firefox.desktop"];
|
|
||||||
# "x-scheme-handler/http" = ["firefox.desktop"];
|
|
||||||
# "x-scheme-handler/https" = ["firefox.desktop"];
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
# browser.tabs.allow_transparent_browser
|
||||||
|
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||||
|
|||||||
19
home-modules/firefox/firefox.nix
Normal file
19
home-modules/firefox/firefox.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
# browser.tabs.allow_transparent_browser
|
||||||
|
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||||
|
{
|
||||||
|
programs.firefox.profiles."{hyper.user}".settings = {
|
||||||
|
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||||
|
};
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
];
|
||||||
|
file = with rice.color; let
|
||||||
|
blur = builtins.toString 20;
|
||||||
|
f = rice.lib.hex-to-rgb-comma-string;
|
||||||
|
in {
|
||||||
|
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
|
||||||
|
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice; };
|
||||||
|
};
|
||||||
|
}
|
||||||
92
home-modules/firefox/userChrome.nix
Normal file
92
home-modules/firefox/userChrome.nix
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
rice: with rice.color; let
|
||||||
|
f = rice.lib.hex-to-rgb-comma-string;
|
||||||
|
# blur = builtins.toString 20;
|
||||||
|
in /* css */ ''
|
||||||
|
:root{
|
||||||
|
/* Popup panels */
|
||||||
|
--arrowpanel-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--arrowpanel-border-color : ${border} !important;
|
||||||
|
--arrowpanel-color : ${secondary.base} !important;
|
||||||
|
--arrowpanel-dimmed : rgba(${f background},0.4) !important;
|
||||||
|
--arrowpanel-dimmed-further : rgba(${f background},0.6) !important;
|
||||||
|
--arrowpanel-dimmed-even-further : rgba(${f background},0.8) !important;
|
||||||
|
|
||||||
|
/* Autocomplete */
|
||||||
|
--autocomplete-popup-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--autocomplete-popup-color : ${foreground} !important;
|
||||||
|
--autocomplete-popup-highlight-background: ${accent.base} !important;
|
||||||
|
--autocomplete-popup-highlight-color : ${foreground} !important;
|
||||||
|
|
||||||
|
/* Toolbar background */
|
||||||
|
--toolbar-bgcolor : transparent !important;
|
||||||
|
--toolbar-non-lwt-bgcolor : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--toolbar-non-lwt-bgimage : none !important;
|
||||||
|
--toolbar-color : ${foreground} !important;
|
||||||
|
|
||||||
|
/* Tabs */
|
||||||
|
--tab-selected-bgcolor : ${accent.base} !important;
|
||||||
|
--tabs-border-color : ${border} !important;
|
||||||
|
--tab-line-color : ${accent.base} !important;
|
||||||
|
--tab-loader-size : 16px !important;
|
||||||
|
|
||||||
|
/* Sidebar */
|
||||||
|
--lwt-sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--lwt-sidebar-text-color : ${foreground} !important;
|
||||||
|
--sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--sidebar-text-color : ${foreground} !important;
|
||||||
|
--sidebar-border-color : ${border} !important;
|
||||||
|
|
||||||
|
/* URL bar */
|
||||||
|
--urlbar-popup-url-color : ${foreground} !important;
|
||||||
|
--urlbar-popup-action-color : ${secondary.base} !important;
|
||||||
|
--toolbar-field-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--toolbar-field-focus-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--toolbar-field-color : ${accent.base} !important;
|
||||||
|
--toolbar-field-focus-color : ${foreground} !important;
|
||||||
|
--toolbar-field-focus-border-color : ${accent.base} !important;
|
||||||
|
|
||||||
|
/* Buttons */
|
||||||
|
--toolbarbutton-icon-fill : ${foreground} !important;
|
||||||
|
--toolbarbutton-hover-background : rgba(${f accent.base}, 0.2) !important;
|
||||||
|
--toolbarbutton-active-background : rgba(${f accent.base}, 0.4) !important;
|
||||||
|
|
||||||
|
/* Notification and panel */
|
||||||
|
--panel-disabled-color : rgba(${f foreground},0.3) !important;
|
||||||
|
--panel-separator-color : ${border} !important;
|
||||||
|
|
||||||
|
/* New tab page */
|
||||||
|
--newtab-background-color : transparent !important;
|
||||||
|
--newtab-background-color-secondary : ${secondary.dark} !important;
|
||||||
|
--newtab-text-primary-color : ${foreground} !important;
|
||||||
|
--newtab-text-secondary-color : ${secondary.base} !important;
|
||||||
|
--newtab-search-icon-color : ${accent.base} !important;
|
||||||
|
--newtab-background-card : ${accent.dark} !important;
|
||||||
|
--tabpanel-background-color : transparent !important;
|
||||||
|
|
||||||
|
background : linear-gradient(180deg,rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 100%) !important;
|
||||||
|
}
|
||||||
|
.tabbrowser-tab[selected="true"] {
|
||||||
|
color: ${background} !important;
|
||||||
|
}
|
||||||
|
hbox#browser {
|
||||||
|
backround-color: transparent: !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#appcontent {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
#navigator-toolbox {
|
||||||
|
--tabs-border-color: transparent !important;
|
||||||
|
}
|
||||||
|
#toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box {
|
||||||
|
background-color: transparent !important;
|
||||||
|
-moz-appearance: none !important;
|
||||||
|
background-image: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
window, #nav-bar{
|
||||||
|
background-color: transparent !important;
|
||||||
|
-moz-appearance: none !important;
|
||||||
|
background-image: none !important;
|
||||||
|
}
|
||||||
|
''
|
||||||
226
home-modules/firefox/userContent.nix
Normal file
226
home-modules/firefox/userContent.nix
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
rice: with rice.color; let
|
||||||
|
f = rice.lib.hex-to-rgb-comma-string;
|
||||||
|
blur = builtins.toString 20;
|
||||||
|
in /* css */ ''
|
||||||
|
/* Removes the white loading page */
|
||||||
|
/* url(about:newtab), url(about:home) */
|
||||||
|
@-moz-document url(about:blank) {
|
||||||
|
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets up minimal incognito scrollbar */
|
||||||
|
@-moz-document url(about:privatebrowsing) {
|
||||||
|
:root{
|
||||||
|
scrollbar-width: thin !important;
|
||||||
|
scrollbar-color: rgb(161, 161, 161) transparent !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* new-tab */
|
||||||
|
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
|
||||||
|
:root{
|
||||||
|
--newtab-background-color-secondary: rgba(${f background},0.5) !important;
|
||||||
|
}
|
||||||
|
body, html {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
.tile, .search-handoff-button {
|
||||||
|
border: ${builtins.toString rice.border-width}px solid ${border} !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(reddit.com) {
|
||||||
|
header {
|
||||||
|
background-color: rgba(${f background},${builtins.toString rice.transparency}) !important;
|
||||||
|
backdrop-filter: blur(${blur}px);
|
||||||
|
}
|
||||||
|
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree, #flex-left-nav-container {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
#main-content {
|
||||||
|
background-color: rgba(${f background},0.5)!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(reddit.com) {
|
||||||
|
header {
|
||||||
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||||
|
}
|
||||||
|
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(google.com) {
|
||||||
|
.sfbg {
|
||||||
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||||
|
backdrop-filter: blur(${blur}px);
|
||||||
|
}
|
||||||
|
body, html, div#search > * {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border: ${builtins.toString rice.border-width} solid ${border};
|
||||||
|
}
|
||||||
|
.g, .appbar {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border: ${builtins.toString rice.border-width} solid ${border};
|
||||||
|
}
|
||||||
|
div#rso {
|
||||||
|
* {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border: ${builtins.toString rice.border-width} solid ${border};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
div#cnt > div {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
:root .theme-system {
|
||||||
|
--color-bg: transtparent !important;
|
||||||
|
--color-text: ${rice.color.foreground}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(developer.mozilla.org) {
|
||||||
|
html, body {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
.top-navigation, .article-actions-container {
|
||||||
|
background-color: rgba(0,0,0,1) !important;
|
||||||
|
backdrop-filter: blur(100px);
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(github.com) {
|
||||||
|
body, html, header, #repository-container-header, .bgColor-muted, section {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-moz-document domain(youtube.com) {
|
||||||
|
body, html, div#content, ytd-app, #frosted-glass.with-chipbar.ytd-app, ytd-shorts[is-dark] #cinematic-shorts-scrim.ytd-shorts {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
#background.ytd-masthead, div#background {
|
||||||
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
backdrop-filter: blur(100px);
|
||||||
|
}
|
||||||
|
* {
|
||||||
|
--yt-spec-base-background: transparent;
|
||||||
|
--yt-spec-raised-background: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--yt-spec-menu-background: rgba(${rice.lib.hex-to-rgb-comma-string accent.dark}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
--yt-spec-inverted-background: rgba(${rice.lib.hex-to-rgb-comma-string secondary.dark}, ${builtins.toString rice.transparency}) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(mynixos.com) {
|
||||||
|
body, html {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
header, footer {
|
||||||
|
background-color: rgba(0,0,0,1) !important;
|
||||||
|
backdrop-filter: blur(100px);
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(moodle.informatik.tu-darmstadt.de) {
|
||||||
|
body, html , .main-inner, .main-inner * {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
.bg-primary {
|
||||||
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-moz-document domain(wikipedia.org) {
|
||||||
|
body, html, div.mw-page-container, .vector-header, .mw-header {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--color-base: ${foreground} !important;
|
||||||
|
--color-base--hover: ${accent.bright} !important;
|
||||||
|
--color-emphasized: ${accent.base} !important;
|
||||||
|
--color-progressive: ${accent.base} !important;
|
||||||
|
--color-progressive--hover: ${accent.brighter} !important;
|
||||||
|
--color-progressive--active: ${secondary.bright} !important;
|
||||||
|
--color-destructive: ${negative.base} !important;
|
||||||
|
--color-destructive--hover: ${negative.brighter} !important;
|
||||||
|
--color-destructive--active: ${negative.bright} !important;
|
||||||
|
--color-visited: ${secondary.base} !important;
|
||||||
|
--color-visited--hover: ${secondary.brighter} !important;
|
||||||
|
--color-visited--active: ${secondary.bright} !important;
|
||||||
|
--color-error: ${negative.base} !important;
|
||||||
|
--color-error--hover: ${negative.bright} !important;
|
||||||
|
--color-error--active: ${negative.bright} !important;
|
||||||
|
--color-warning: ${weird.base} !important;
|
||||||
|
--color-success: ${positive.base} !important;
|
||||||
|
--color-notice: ${special.base} !important;
|
||||||
|
--color-content-added: ${positive.base} !important;
|
||||||
|
--color-content-removed: ${negative.base} !important;
|
||||||
|
--color-base--subtle: ${accent.dark} !important;
|
||||||
|
--box-shadow-color-base: ${black.base} !important;
|
||||||
|
--background-color-base: transparent !important;
|
||||||
|
--background-color-neutral: transparent !important;
|
||||||
|
--background-color-neutral-subtle: transparent !important;
|
||||||
|
--background-color-interactive: ${accent.darker} !important;
|
||||||
|
--background-color-interactive--hover: ${accent.dark} !important;
|
||||||
|
--background-color-interactive--active: ${secondary.dark} !important;
|
||||||
|
--background-color-interactive-subtle: ${subtle.darker} !important;
|
||||||
|
--background-color-interactive-subtle--hover: ${subtle.dark} !important;
|
||||||
|
--background-color-interactive-subtle--active: ${subtle.base} !important;
|
||||||
|
--border-color-base: ${border} !important;
|
||||||
|
--border-color-emphasized: ${border2} !important;
|
||||||
|
--border-color-subtle: ${subtle.base} !important;
|
||||||
|
--border-color-muted: ${subtle.dark} !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@-moz-document url-prefix("https://nx2.site/") {
|
||||||
|
html {
|
||||||
|
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||||
|
background-repeat: repeat !important;
|
||||||
|
background-size: 2vmin 2vmin !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document url-prefix("pw.nx2.site") {
|
||||||
|
html {
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document url-prefix("pw.nx2.site") {
|
||||||
|
html {
|
||||||
|
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||||
|
background-repeat: repeat !important;
|
||||||
|
background-size: 2vmin 2vmin !important;
|
||||||
|
}
|
||||||
|
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
.modal-open, .modal-header, form.modal-content, .modal-footer {
|
||||||
|
background-color: rgba(0,0,0,0.8) !important;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
|
||||||
|
background-color: rgba(0,0,0,0.8) !important;
|
||||||
|
border-radius: 10px !important;
|
||||||
|
border: ${toString rice.border-width}px solid ${border} !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
''
|
||||||
|
# @-moz-document domain(chatgpt.com) {
|
||||||
|
# body, html , .bg-token-sidebar-surface-primary {
|
||||||
|
# background-color: transparent !important;
|
||||||
|
# }
|
||||||
|
# .bg-token-main-surface-primary {
|
||||||
|
# background-color: rgba(0,0,0,1) !important;
|
||||||
|
# backdrop-filter: blur(100px) !important;
|
||||||
|
# border-radius: ${builtins.toString rice.rounding}px !important;
|
||||||
|
# }
|
||||||
|
# }
|
||||||
105
home-modules/fish.nix
Executable file → Normal file
105
home-modules/fish.nix
Executable file → Normal file
@@ -1,37 +1,37 @@
|
|||||||
{ config, pkgs, lib, rice, user, allowed, secrets, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
fish
|
|
||||||
any-nix-shell
|
any-nix-shell
|
||||||
|
|
||||||
(writeShellScriptBin "nxfetch" ''
|
(writeShellScriptBin "nxfetch" /* bash */ ''
|
||||||
logo=$(echo -e "
|
logo=$(echo -e "
|
||||||
|
|
||||||
⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS
|
⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS
|
||||||
⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM
|
⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM
|
||||||
⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM
|
⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM
|
||||||
⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL
|
⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL
|
||||||
⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL
|
⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL
|
||||||
⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL
|
⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL
|
||||||
⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR
|
⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR
|
||||||
⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM
|
⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM
|
||||||
⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT
|
⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT
|
||||||
|
|
||||||
" | lolcat --force)
|
" | lolcat --force 2> /dev/null)
|
||||||
|
|
||||||
msg="
|
release_line=$(cat /etc/*-release 2> /dev/null || echo 'PRETTY_NAME="[No Release]"')
|
||||||
$(echo -e "$logo" | sed -n 3p): $(cat /etc/*-release | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev)
|
|
||||||
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
|
msg="
|
||||||
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
$(echo -e "$logo" | sed -n 3p): $(echo "$release_line" | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev)
|
||||||
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ')
|
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
|
||||||
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev)
|
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
||||||
$(echo -e "$logo" | sed -n 8p): ''$(uname -r)
|
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g')
|
||||||
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1)
|
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
|
||||||
$(echo -e "$logo" | sed -n 10p): $(yazi --version)
|
$(echo -e "$logo" | sed -n 8p): ''$(uname -r | sed -E 's=(.+-.+-.+-.+)-.+=\1=g')
|
||||||
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1)
|
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
|
||||||
"
|
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
|
||||||
echo -e "$msg"
|
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
|
||||||
|
"
|
||||||
|
echo -e "$msg"
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -39,22 +39,28 @@ lib.mkIf (user != "tv")
|
|||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = {
|
package = pkgs.fish;
|
||||||
ls = "eza --icons --git --smart-group --group-directories-first";
|
shellAliases = let
|
||||||
ll = "eza --icons --git --smart-group --group-directories-first --long";
|
base-eza = "eza --icons --git --smart-group --group-directories-first";
|
||||||
la = "eza --icons --git --smart-group --group-directories-first --all";
|
in {
|
||||||
lla = "eza --icons --git --smart-group --group-directories-first --all --long";
|
ls = "${base-eza}";
|
||||||
lt = "eza --icons --git --smart-group --group-directories-first --long --tree";
|
ll = "${base-eza} --long";
|
||||||
ltd = "eza --icons --git --smart-group --group-directories-first --long --tree -D";
|
lg = "${base-eza} --group --long";
|
||||||
lt2 = "eza --icons --git --smart-group --group-directories-first --long --tree -L 2";
|
la = "${base-eza} --all";
|
||||||
|
lla = "${base-eza} --all --long";
|
||||||
|
lt = "${base-eza} --long --tree";
|
||||||
|
ltd = "${base-eza} --long --tree -D";
|
||||||
|
lt2 = "${base-eza} --long --tree -L 2";
|
||||||
sr = "sudo reboot";
|
sr = "sudo reboot";
|
||||||
nf = "neofetch";
|
nf = "neofetch";
|
||||||
nxf = "nxfetch";
|
nxf = "nxfetch";
|
||||||
nn = "nano";
|
nn = "nano";
|
||||||
m = "micro";
|
hxx = "hx .";
|
||||||
p = "python";
|
p = "python";
|
||||||
ipy = "ipython";
|
ipy = "ipython";
|
||||||
c = "codium";
|
c = "codium";
|
||||||
|
cc = "codium .";
|
||||||
|
code = "codium";
|
||||||
g = "git";
|
g = "git";
|
||||||
lzg = "lazygit";
|
lzg = "lazygit";
|
||||||
# gst = "git status";
|
# gst = "git status";
|
||||||
@@ -76,24 +82,43 @@ lib.mkIf (user != "tv")
|
|||||||
gsw = "git switch";
|
gsw = "git switch";
|
||||||
gft = "git fetch";
|
gft = "git fetch";
|
||||||
ns = "nix-shell";
|
ns = "nix-shell";
|
||||||
|
nd = "nix develop -c fish";
|
||||||
lzd = "lazydocker";
|
lzd = "lazydocker";
|
||||||
d = "docker";
|
d = "docker";
|
||||||
dcmp = "docker compose";
|
dcmp = "docker compose";
|
||||||
nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
|
stui = "sudo systemctl-tui";
|
||||||
|
wlc = "wl-copy";
|
||||||
|
# nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
|
||||||
|
|
||||||
code = "codium";
|
|
||||||
# ya = "yazi"; # function
|
# ya = "yazi"; # function
|
||||||
# nxfiglet = "figlet";
|
# nxfiglet = "figlet";
|
||||||
};
|
};
|
||||||
interactiveShellInit = ''
|
interactiveShellInit = /* fish */ ''
|
||||||
set -g fish_greeting
|
set -g fish_greeting
|
||||||
if not set -q IN_NIX_SHELL
|
if not set -q IN_NIX_SHELL
|
||||||
|
if set -q SESSION_FROM_DE
|
||||||
|
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||||
|
yazi --cwd-file="$tmp"
|
||||||
|
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||||
|
builtin cd -- "$cwd"
|
||||||
|
end
|
||||||
|
rm -f -- "$tmp"
|
||||||
|
end
|
||||||
nxfetch
|
nxfetch
|
||||||
|
set -e SESSION_FROM_DE
|
||||||
end
|
end
|
||||||
# ${pkgs.starship}/bin/starship init fish | source
|
|
||||||
# ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
|
|
||||||
'';
|
'';
|
||||||
functions = {
|
functions = {
|
||||||
|
take = /* bash */ ''
|
||||||
|
mkdir $argv
|
||||||
|
cd $argv
|
||||||
|
'';
|
||||||
|
nx_backup = let
|
||||||
|
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
|
||||||
|
in pkgs.lib.mkIf (hyper.host == "NxXPS" || hyper.host == "NxNORTH") ''
|
||||||
|
set RPATH (curl -s https://${hyper.domain}/latest-backup)
|
||||||
|
rsync -avz --info=progress2 -e "ssh -p ${builtins.toString secrets.ssh.port}" ${hyper.user}@ssh.${hyper.domain}:"$RPATH" ${destination}
|
||||||
|
'';
|
||||||
# gpg = '';
|
# gpg = '';
|
||||||
# set bold \e[1m
|
# set bold \e[1m
|
||||||
# set green \e[32m
|
# set green \e[32m
|
||||||
|
|||||||
23
home-modules/games.nix
Executable file → Normal file
23
home-modules/games.nix
Executable file → Normal file
@@ -1,7 +1,20 @@
|
|||||||
{ pkgs, lib, host, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (hyper.host == "NxNORTH")
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home = {
|
||||||
mindustry-wayland
|
packages = (with pkgs.unstable; [
|
||||||
];
|
protonup-ng
|
||||||
|
mangohud
|
||||||
|
|
||||||
|
prismlauncher
|
||||||
|
|
||||||
|
# heroic
|
||||||
|
|
||||||
|
# mindustry-wayland
|
||||||
|
]) ++ [ pkgs.heroic ];
|
||||||
|
sessionVariables = {
|
||||||
|
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
30
home-modules/gestures.nix
Executable file → Normal file
30
home-modules/gestures.nix
Executable file → Normal file
@@ -1,32 +1,16 @@
|
|||||||
{ config, pkgs, lib, host, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host == "NxXPS")
|
lib.mkIf (hyper.host == "NxXPS")
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = with pkgs; [
|
||||||
pkgs.libinput-gestures
|
libinput-gestures
|
||||||
pkgs.ydotool
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file.".config/libinput/gestures".text = ''
|
home.file.".config/libinput-gestures.conf".text = ''
|
||||||
# Swipe threshold (0-100)
|
# Swipe threshold (0-100)
|
||||||
swipe_threshold 0
|
swipe_threshold 0
|
||||||
|
|
||||||
# Gestures
|
# Gestures
|
||||||
gesture swipe left 3 echo key k:276 | dotool
|
gesture swipe right 3 ydotool key 158:1 158:0 # back
|
||||||
gesture swipe right 3 echo key k:275 | dotool
|
gesture swipe left 3 ydotool key 159:1 159:0 # forward
|
||||||
'';
|
'';
|
||||||
# systemd.user.services = {
|
|
||||||
# ydotoold = {
|
|
||||||
# Unit = {
|
|
||||||
# Description = "An auto-input utility for wayland";
|
|
||||||
# Documentation = [ "man:ydotool(1)" "man:ydotoold(8)" ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Service = {
|
|
||||||
# ExecStart = "/run/current-system/sw/bin/ydotoold --socket-path /tmp/ydotool_socket ";
|
|
||||||
# };
|
|
||||||
# Install = {
|
|
||||||
# WantedBy = ["default.target"];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
|||||||
48
home-modules/ghostty.nix
Normal file
48
home-modules/ghostty.nix
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.ghostty;
|
||||||
|
settings = with rice.color; {
|
||||||
|
background = background;
|
||||||
|
background-opacity = builtins.toString rice.transparency;
|
||||||
|
clipboard-paste-protection = false;
|
||||||
|
clipboard-read = "allow";
|
||||||
|
clipboard-trim-trailing-spaces = true;
|
||||||
|
confirm-close-surface = false;
|
||||||
|
cursor-color = special.bright;
|
||||||
|
cursor-opacity = 0.8;
|
||||||
|
font-family = "${rice.font.code.name}";
|
||||||
|
foreground = foreground;
|
||||||
|
keybind = [
|
||||||
|
"ctrl+comma=reload_config"
|
||||||
|
"ctrl+equal=increase_font_size:1"
|
||||||
|
"ctrl+minus=decrease_font_size:1"
|
||||||
|
"ctrl+shift+v=paste_from_clipboard"
|
||||||
|
];
|
||||||
|
palette = with rice; [
|
||||||
|
"0=${black.base}"
|
||||||
|
"8=${black.bright}"
|
||||||
|
"1=${red.base}"
|
||||||
|
"9=${red.bright}"
|
||||||
|
"2=${green.base}"
|
||||||
|
"10=${green.bright}"
|
||||||
|
"3=${yellow.base}"
|
||||||
|
"11=${yellow.bright}"
|
||||||
|
"4=${blue.base}"
|
||||||
|
"12=${blue.bright}"
|
||||||
|
"5=${magenta.base}"
|
||||||
|
"13=${magenta.bright}"
|
||||||
|
"6=${cyan.base}"
|
||||||
|
"14=${cyan.bright}"
|
||||||
|
"7=${white.base}"
|
||||||
|
"15=${white.bright}"
|
||||||
|
];
|
||||||
|
selection-background = accent.base;
|
||||||
|
selection-foreground = background;
|
||||||
|
window-decoration = false;
|
||||||
|
window-padding-x = 5;
|
||||||
|
window-padding-y = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
home-modules/gimp.nix
Normal file
10
home-modules/gimp.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# (gimp-with-plugins.override {
|
||||||
|
# plugins = with gimpPlugins; [ bimp ];
|
||||||
|
# })
|
||||||
|
gimp
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
62
home-modules/git.nix
Executable file → Normal file
62
home-modules/git.nix
Executable file → Normal file
@@ -1,45 +1,15 @@
|
|||||||
{ pkgs, lib, user, rice, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
git
|
|
||||||
delta
|
delta
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "git_monitor" ''
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# List of directories to check
|
|
||||||
directories=(
|
|
||||||
"$HOME/nix-dots"
|
|
||||||
"$HOME/shared/nx-obsidian-vault"
|
|
||||||
"$HOME/shared/HSMW/Praxis/BCAM/bolt-llmserver"
|
|
||||||
"$HOME/shared/HSMW/Praxis/BCAM/bcam-tools"
|
|
||||||
"$HOME/Pictures/wallpapers"
|
|
||||||
)
|
|
||||||
echo ""
|
|
||||||
for dir in "''${directories[@]}"; do
|
|
||||||
if [ -d "$dir" ]; then
|
|
||||||
cd "$dir" || { echo "Cannot change directory to $dir"; exit 1; }
|
|
||||||
echo "$(echo $dir | rev | cut -f 1 -d'/' | rev):"
|
|
||||||
if [[ $* == *--fetch* ]]; then
|
|
||||||
git fetch
|
|
||||||
fi
|
|
||||||
gst
|
|
||||||
echo ""
|
|
||||||
cd - > /dev/null || { echo "Cannot change back to the original directory"; exit 1; }
|
|
||||||
else
|
|
||||||
echo "Directory $dir does not exist."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
'')
|
|
||||||
|
|
||||||
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
|
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.gitFull;
|
||||||
userName = ''Lennart J. Kurzweg (Nx2)'';
|
userName = ''Lennart J. Kurzweg (Nx2)'';
|
||||||
userEmail = "git@nx2.site";
|
userEmail = "git@${hyper.domain}";
|
||||||
delta = {
|
delta = {
|
||||||
enable = true;
|
enable = true;
|
||||||
options = {
|
options = {
|
||||||
@@ -49,20 +19,36 @@ lib.mkIf (user != "tv")
|
|||||||
whitespace-error-style = "22 reverse";
|
whitespace-error-style = "22 reverse";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
extraConfig = {
|
||||||
|
credential = {
|
||||||
|
"https://git.da.dicos.de".username = lib.mkIf (hyper.host =="NxDCS") "lkurzweg";
|
||||||
|
"https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxDCS") "Test";
|
||||||
|
};
|
||||||
|
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxDCS") "https://git.da.dicos.de/";
|
||||||
|
url."ssh://git@github.com/".insteadOf = "https://github.com/";
|
||||||
|
pull.rebase = false; # true
|
||||||
|
};
|
||||||
};
|
};
|
||||||
programs.lazygit = {
|
programs.lazygit = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.lazygit;
|
||||||
settings = {
|
settings = {
|
||||||
windowSize = "normal";
|
windowSize = "normal";
|
||||||
gui.theme = with rice.color; {
|
gui.theme = with rice.color; {
|
||||||
lightTheme = false;
|
lightTheme = false;
|
||||||
activeBorderColor = [ border "bold"];
|
activeBorderColor = [ foreground "bold" ];
|
||||||
inactiveBorderColor = [ black.bright ];
|
inactiveBorderColor = [ border ];
|
||||||
optionsTextColor = [ blue.base ];
|
optionsTextColor = [ tertiary.base ];
|
||||||
selectedLineBgColor = [ foreground ];
|
selectedLineBgColor = [ secondary.base ];
|
||||||
selectedRangeByColor = [ magenta.bright ];
|
selectedRangeByColor = [ weird.bright ];
|
||||||
showRandomTip = true;
|
showRandomTip = true;
|
||||||
animateExplosion = true;
|
animateExplosion = true;
|
||||||
|
cherryPickedCommitFgColor = [ accent.base ]; # Foreground color of copied commit
|
||||||
|
cherryPickedCommitBgColor = [ secondary.dark ]; # Background color of copied commit
|
||||||
|
markedBaseCommitFgColor = [ accent.base ]; # Foreground color of marked base commit (for rebase)
|
||||||
|
markedBaseCommitBgColor = [ secondary.dark ]; # Background color of marked base commit (for rebase)
|
||||||
|
unstagedChangesColor = [ negative.base ]; # Color for file with unstaged changes
|
||||||
|
defaultFgColor = [ "default" ]; # Default text color
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,64 +1,46 @@
|
|||||||
{ pkgs, pkgs-unstable, ... }:
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
home.packages = with pkgs; [ pinentry-all ];
|
||||||
# there also is a system module
|
programs.gpg = {
|
||||||
home.packages = with pkgs; [
|
|
||||||
gnupg
|
|
||||||
gpg-tui
|
|
||||||
] ++ ( with pkgs-unstable; [
|
|
||||||
pinentry-all
|
|
||||||
]);
|
|
||||||
|
|
||||||
# services.pcscd.enable = true;
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.gnupg;
|
||||||
|
homedir = "${hyper.home}/vault/gnupg";
|
||||||
|
settings = {
|
||||||
|
armor = true;
|
||||||
|
cert-digest-algo = "SHA512";
|
||||||
|
charset = "utf-8";
|
||||||
|
default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
|
||||||
|
keyid-format = "0xlong";
|
||||||
|
list-options = "show-uid-validity";
|
||||||
|
no-comments = true;
|
||||||
|
no-emit-version = true;
|
||||||
|
no-greeting = true;
|
||||||
|
no-symkey-cache = true;
|
||||||
|
personal-cipher-preferences = "AES256 AES192 AES";
|
||||||
|
personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed";
|
||||||
|
personal-digest-preferences = "SHA512 SHA384 SHA256";
|
||||||
|
pinentry-mode = "loopback";
|
||||||
|
require-cross-certification = true;
|
||||||
|
s2k-cipher-algo = "AES256";
|
||||||
|
s2k-digest-algo = "SHA512";
|
||||||
|
use-agent = true;
|
||||||
|
verify-options = "show-uid-validity";
|
||||||
|
with-fingerprint = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.gpg-agent = let
|
||||||
|
min2sec = min: (min * 60);
|
||||||
|
in {
|
||||||
|
enable = false;
|
||||||
verbose = true;
|
verbose = true;
|
||||||
sshKeys = [
|
sshKeys = [
|
||||||
"97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey
|
"97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey
|
||||||
];
|
];
|
||||||
enableSshSupport = true;
|
enableSshSupport = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
# pinentryPackage = pkgs.pinentry-gtk2;
|
defaultCacheTtlSsh = min2sec 60;
|
||||||
|
defaultCacheTtl = min2sec 30;
|
||||||
|
extraConfig = ''
|
||||||
|
allow-loopback-pinentry
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".gnupg/gpg.conf".text = ''
|
|
||||||
# Use AES256, 192, or 128 as cipher
|
|
||||||
personal-cipher-preferences AES256 AES192 AES
|
|
||||||
# Use SHA512, 384, or 256 as digest
|
|
||||||
personal-digest-preferences SHA512 SHA384 SHA256
|
|
||||||
# Use ZLIB, BZIP2, ZIP, or no compression
|
|
||||||
personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
|
|
||||||
# Default preferences for new keys
|
|
||||||
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
|
|
||||||
# SHA512 as digest to sign keys
|
|
||||||
cert-digest-algo SHA512
|
|
||||||
# SHA512 as digest for symmetric ops
|
|
||||||
s2k-digest-algo SHA512
|
|
||||||
# AES256 as cipher for symmetric ops
|
|
||||||
s2k-cipher-algo AES256
|
|
||||||
# UTF-8 support for compatibility
|
|
||||||
charset utf-8
|
|
||||||
# No comments in messages
|
|
||||||
no-comments
|
|
||||||
# No version in output
|
|
||||||
no-emit-version
|
|
||||||
# Disable banner
|
|
||||||
no-greeting
|
|
||||||
# Long key id format
|
|
||||||
keyid-format 0xlong
|
|
||||||
# Display UID validity
|
|
||||||
list-options show-uid-validity
|
|
||||||
verify-options show-uid-validity
|
|
||||||
# Display all keys and their fingerprints
|
|
||||||
with-fingerprint
|
|
||||||
# Display key origins and updates
|
|
||||||
#with-key-origin
|
|
||||||
# Cross-certify subkeys are present and valid
|
|
||||||
require-cross-certification
|
|
||||||
# Disable caching of passphrase for symmetrical ops
|
|
||||||
no-symkey-cache
|
|
||||||
# Output ASCII instead of binary
|
|
||||||
armor
|
|
||||||
# Enable smartcard
|
|
||||||
# use-agent
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
252
home-modules/gtk.nix
Executable file → Normal file
252
home-modules/gtk.nix
Executable file → Normal file
@@ -1,72 +1,198 @@
|
|||||||
{ config, pkgs, pkgs-unstable, lib, user, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
let
|
let
|
||||||
theme-name = "Catppuccin-Macchiato-Compact-Pink-Dark";
|
# theme-name = "Colloid-Pink-Dark-Compact";
|
||||||
theme-package = pkgs.catppuccin-gtk.override {
|
# theme-package = pkgs.colloid-gtk-theme.override {
|
||||||
accents = [ "pink" ];
|
# themeVariants = [ "pink" ];
|
||||||
size = "compact";
|
# colorVariants = [ "dark" ];
|
||||||
tweaks = [ "rimless" "black" ];
|
# sizeVariants = [ "compact" ];
|
||||||
variant = "macchiato";
|
# tweaks = [ "black" ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# theme-name = "catppuccin-macchiato-pink-compact+rimless,black";
|
||||||
|
# theme-package = pkgs.catppuccin-gtk.override {
|
||||||
|
# accents = [ "pink" ];
|
||||||
|
# size = "compact";
|
||||||
|
# tweaks = [ "rimless" "black" ];
|
||||||
|
# variant = "macchiato";
|
||||||
|
# };
|
||||||
|
theme-name = "Materia-dark-compact";
|
||||||
|
theme-package = pkgs.materia-theme-transparent;
|
||||||
|
# theme-name = "numix";
|
||||||
|
# theme-name = "adw-gtk3-dark";
|
||||||
|
# theme-package = pkgs.adw-gtk3;
|
||||||
|
# theme-package = let
|
||||||
|
# theme-string = with rice.color; let
|
||||||
|
# h = rice.lib.nohash;
|
||||||
|
# d = rice.lib.float-to-drune;
|
||||||
|
# in /* ini */ ''
|
||||||
|
# BG=${h background}
|
||||||
|
# FG=${h foreground}
|
||||||
|
# SEL_BG=${h accent.base}
|
||||||
|
# SEL_FG=${h black.base}
|
||||||
|
# ACCENT_BG=${h accent.base}
|
||||||
|
# TXT_BG=${h black.dark}
|
||||||
|
# TXT_FG=${h foreground}
|
||||||
|
# HDR_BG=${h background}
|
||||||
|
# HDR_FG=${h foreground}
|
||||||
|
# BTN_BG=${h accent.dark}
|
||||||
|
# BTN_FG=${h foreground}
|
||||||
|
# HDR_BTN_BG=${h accent.dark}
|
||||||
|
# HDR_BTN_FG=${h foreground}
|
||||||
|
# WM_BORDER_FOCUS=${h border}
|
||||||
|
# WM_BORDER_UNFOCUS=${h accent.dark}
|
||||||
|
# ROUNDNESS=${builtins.toString rice.rounding}
|
||||||
|
# ROUNDNESS_GTK2_HIDPI=${builtins.toString rice.rounding}
|
||||||
|
# OUTLINE_WIDTH=${builtins.toString rice.border-width}
|
||||||
|
# BTN_OUTLINE_OFFSET=-3
|
||||||
|
# BTN_OUTLINE_WIDTH=1
|
||||||
|
# SPACING=${builtins.toString rice.gap-size}
|
||||||
|
# GRADIENT=0.0
|
||||||
|
# CINNAMON_OPACITY=${builtins.toString rice.transparency}
|
||||||
|
# INACTIVE_FG=${h foreground}
|
||||||
|
# INACTIVE_TXT_FG=${h foreground}
|
||||||
|
# INACTIVE_HDR_FG=${h foreground}
|
||||||
|
# ICONS_DARK=${h accent.dark}
|
||||||
|
# ICONS_MEDIUM=${h accent.base}
|
||||||
|
# ICONS_LIGHT=${h accent.bright}
|
||||||
|
# ICONS_LIGHT_FOLDER=${h accent.base}
|
||||||
|
# ICONS_SYMBOLIC_ACTION=${h accent.base}
|
||||||
|
# ICONS_SYMBOLIC_PANEL=${h accent.base}
|
||||||
|
# ICONS_STYLE=icons_papirus
|
||||||
|
# CARET1_FG=${h white.dark}
|
||||||
|
# CARET2_FG=${h black.bright}
|
||||||
|
# CARET_SIZE=0.04
|
||||||
|
# MENU_BG=${h accent.dark}
|
||||||
|
# MENU_FG=${h foreground}
|
||||||
|
# OUTLINE_WIDTH=${builtins.toString rice.border-width}
|
||||||
|
# SPOTIFY_PROTO_BG=${h accent.dark}
|
||||||
|
# SPOTIFY_PROTO_FG=${h foreground}
|
||||||
|
# SPOTIFY_PROTO_SEL=${h blue.base}
|
||||||
|
# BASE16_GENERATE_DARK=False
|
||||||
|
# BASE16_INVERT_TERMINAL=False
|
||||||
|
# BASE16_MILD_TERMINAL=False
|
||||||
|
# UNITY_DEFAULT_LAUNCHER_STYLE=False
|
||||||
|
# '';
|
||||||
|
# # theme-source-pkg = pkgs.materia-theme;
|
||||||
|
# theme-source-pkg = pkgs.themix-gui;
|
||||||
|
# in pkgs.stdenv.mkDerivation {
|
||||||
|
# name = "oomox-gtk";
|
||||||
|
# version = theme-source-pkg.version;
|
||||||
|
# src = theme-source-pkg.src;
|
||||||
|
# dontBuild = true;
|
||||||
|
# nativeBuildInputs = with pkgs; [
|
||||||
|
# glib
|
||||||
|
# libxml2
|
||||||
|
# bc
|
||||||
|
# ];
|
||||||
|
# buildInputs = with pkgs; [
|
||||||
|
# gnome-themes-extra
|
||||||
|
# gdk-pixbuf
|
||||||
|
# librsvg
|
||||||
|
# sassc
|
||||||
|
# inkscape
|
||||||
|
# optipng
|
||||||
|
# ];
|
||||||
|
# propagatedUserEnvPkgs = with pkgs; [
|
||||||
|
# gtk-engine-murrine
|
||||||
|
# ];
|
||||||
|
# # installPhase = ''
|
||||||
|
# # mkdir -p $out/share/themes/materia
|
||||||
|
# # patchShebangs .
|
||||||
|
# # ./change_color.sh -o materia -t $out/share/themes <(echo -e "${theme-string}")
|
||||||
|
# # '';
|
||||||
|
# installPhase = ''
|
||||||
|
# mkdir -p $out/share/icons/icons_papirus
|
||||||
|
# mkdir -p $out/share/icons/icons_numix
|
||||||
|
# mkdir -p $out/share/icons/icons_suruplus
|
||||||
|
# echo "${theme-string}" > $out/oomox.colors
|
||||||
|
# pushd plugins/icons_papirus
|
||||||
|
# patchShebangs .
|
||||||
|
# ./change_color.sh -o icons_papirus -d $out/share/icons/icons_papirus $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# pushd plugins/icons_numix
|
||||||
|
# patchShebangs .
|
||||||
|
# ./change_color.sh -o icons_numix -d $out/share/icons/icons_numix $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# pushd plugins/icons_suruplus
|
||||||
|
# patchShebangs .
|
||||||
|
# ./change_color.sh -o icons_suruplus -d $out/share/icons/icons_suruplus $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# mkdir -p $out/share/themes/numix
|
||||||
|
# pushd plugins/theme_oomox
|
||||||
|
# patchShebangs .
|
||||||
|
# HOME=$out ./change_color.sh -o numix -m all -t $out/share/themes $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# '';
|
||||||
|
# meta = {
|
||||||
|
# description = "custom theme utility";
|
||||||
|
# homepage = "https://github.com/themix-project/themix-gui";
|
||||||
|
# maintainers = [ ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
in {
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
# gnome.gnome-themes-extra
|
||||||
|
adwaita-icon-theme
|
||||||
|
gnome-tweaks
|
||||||
|
gtk3
|
||||||
|
gtk4
|
||||||
|
# catppuccin-gtk
|
||||||
|
bibata-cursors
|
||||||
|
] ++ [
|
||||||
|
# pkgs-unstable.themix-gui
|
||||||
|
];
|
||||||
|
sessionVariables.GTK_THEME = theme-name;
|
||||||
|
pointerCursor = {
|
||||||
|
gtk.enable = true;
|
||||||
|
x11.enable = true;
|
||||||
|
} // rice.cursor;
|
||||||
};
|
};
|
||||||
in
|
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# gnome.gnome-themes-extra
|
|
||||||
# gnome.adwaita-icon-theme
|
|
||||||
gnome.gnome-tweaks
|
|
||||||
gtk3
|
|
||||||
gtk4
|
|
||||||
catppuccin-gtk
|
|
||||||
] ++ [
|
|
||||||
# pkgs-unstable.themix-gui
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
home.sessionVariables.GTK_THEME = theme-name;
|
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = {
|
theme = {
|
||||||
name = theme-name;
|
name = theme-name;
|
||||||
package = theme-package;
|
package = theme-package;
|
||||||
};
|
};
|
||||||
gtk3.extraConfig = {
|
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||||
gtk-application-prefer-dark-theme = 1;
|
gtk3 = {
|
||||||
};
|
extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||||
gtk4.extraConfig = {
|
# extraCss = with rice.color; /* css */ ''
|
||||||
gtk-application-prefer-dark-theme = 1;
|
# wnck-pager {
|
||||||
};
|
# color: ${black.bright};
|
||||||
cursorTheme = {
|
# background-color: ${background};
|
||||||
name = "Catppuccin-Mocha-Pink-Cursors";
|
# }
|
||||||
package = pkgs.catppuccin-cursors.mochaPink;
|
|
||||||
size = 20;
|
# wnck-pager:selected {
|
||||||
|
# color: ${background};
|
||||||
|
# background-color: ${accent.base};
|
||||||
|
# }
|
||||||
|
# '';
|
||||||
|
# window.background {
|
||||||
|
# background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
|
||||||
|
# }
|
||||||
|
# .background, .view, .surface, .frame, box, window.decoration, stack {
|
||||||
|
# background-color: transparent;
|
||||||
|
# }
|
||||||
|
};
|
||||||
|
gtk4 = {
|
||||||
|
extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||||
|
extraCss = config.gtk.gtk3.extraCss;
|
||||||
|
};
|
||||||
|
cursorTheme = rice.cursor;
|
||||||
|
};
|
||||||
|
xdg.configFile = {
|
||||||
|
"gtk-4.0/assets".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/assets";
|
||||||
|
"gtk-4.0/gtk.css".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/gtk.css";
|
||||||
|
"gtk-4.0/gtk-dark.css".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/gtk-dark.css";
|
||||||
|
};
|
||||||
|
dconf = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
"org/gnome/desktop/interface" = {
|
||||||
|
color-scheme = "prefer-dark";
|
||||||
|
# gtk-theme = theme-name;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
home.pointerCursor = {
|
}
|
||||||
gtk.enable = true;
|
|
||||||
x11.enable = true;
|
|
||||||
package = pkgs.catppuccin-cursors.mochaPeach;
|
|
||||||
name = "Catppuccin-Mocha-Pink-Cursors";
|
|
||||||
size = 20;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets";
|
|
||||||
"gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css";
|
|
||||||
"gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dconf = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
color-scheme = "prefer-dark";
|
|
||||||
gtk-theme = theme-name;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,15 +1,20 @@
|
|||||||
{ pkgs, pkgs-unstable, rice, ... }:
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
nixfmt # nix formater
|
# nixfmt-classic # nix formater
|
||||||
nil # nix language server
|
# nil # nix language server
|
||||||
python311Packages.python-lsp-server
|
# nixd # specified in nixd.nix
|
||||||
|
gopls
|
||||||
|
delve
|
||||||
|
jdt-language-server
|
||||||
lldb # debugger for llvm stuff
|
lldb # debugger for llvm stuff
|
||||||
yaml-language-server # yaml
|
yaml-language-server # yaml
|
||||||
] ++ (with pkgs-unstable; [
|
marksman # markdown
|
||||||
helix
|
vale-ls # style-checker lsp (needs vale)
|
||||||
]);
|
ltex-ls # Ltex (language tool)
|
||||||
|
vscode-langservers-extracted
|
||||||
|
bash-language-server
|
||||||
|
];
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
EDITOR = "hx";
|
EDITOR = "hx";
|
||||||
VISUAL = "hx";
|
VISUAL = "hx";
|
||||||
@@ -18,61 +23,290 @@
|
|||||||
programs.helix = {
|
programs.helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
package = pkgs-unstable.helix;
|
package = pkgs.unstable.helix;
|
||||||
settings = {
|
settings = {
|
||||||
# theme = "base16_terminal";
|
# theme = "base16_terminal";
|
||||||
theme = "base16";
|
theme = "base16";
|
||||||
editor = {
|
editor = {
|
||||||
|
scrolloff = 5;
|
||||||
|
mouse = true;
|
||||||
|
# default-yank-register = "\"";
|
||||||
|
middle-click-paste = false;
|
||||||
|
scroll-lines = 3;
|
||||||
|
shell = ["sh" "-c"];
|
||||||
|
line-number = "relative";
|
||||||
|
cursorline = true;
|
||||||
|
cursorcolumn = true;
|
||||||
|
# continue-comments = false;
|
||||||
|
auto-completion = true;
|
||||||
|
# path-completion = true;
|
||||||
|
auto-format = false;
|
||||||
|
idle-timeout = 250;
|
||||||
|
completion-timeout = 5;
|
||||||
|
preview-completion-insert = true;
|
||||||
|
completion-trigger-len = 1;
|
||||||
|
auto-info = true;
|
||||||
|
true-color = true; # is detected automatically if set to false
|
||||||
|
undercurl = false; # is detected automatically if set to false
|
||||||
|
rulers = [];
|
||||||
|
bufferline = "always";
|
||||||
|
color-modes = true;
|
||||||
|
text-width = 120;
|
||||||
|
workspace-lsp-roots = [];
|
||||||
|
default-line-ending = "native";
|
||||||
|
insert-final-newline = false;
|
||||||
|
popup-border = "all";
|
||||||
|
indent-heuristic = "hybrid";
|
||||||
|
jump-label-alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
# clip-board-provider = # selected automatically
|
||||||
|
# end-of-line-diagnostics = "hint";
|
||||||
|
statusline = {
|
||||||
|
left = [ "mode"
|
||||||
|
"spinner"
|
||||||
|
"file-name"
|
||||||
|
"read-only-indicator"
|
||||||
|
"file-type"
|
||||||
|
"version-control"
|
||||||
|
];
|
||||||
|
center = [
|
||||||
|
"position-percentage"
|
||||||
|
"total-line-numbers"
|
||||||
|
"register"
|
||||||
|
];
|
||||||
|
right = [
|
||||||
|
"spinner"
|
||||||
|
"diagnostics"
|
||||||
|
"selections"
|
||||||
|
"primary-selection-length"
|
||||||
|
"register"
|
||||||
|
"position"
|
||||||
|
"file-encoding"
|
||||||
|
];
|
||||||
|
# separator = " ";
|
||||||
|
mode = {
|
||||||
|
normal = "NORMAL";
|
||||||
|
insert = "INSERT";
|
||||||
|
select = "SELECT";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lsp = {
|
||||||
|
enable = true;
|
||||||
|
display-messages = false;
|
||||||
|
auto-signature-help = true;
|
||||||
|
display-inlay-hints = true;
|
||||||
|
};
|
||||||
cursor-shape = {
|
cursor-shape = {
|
||||||
normal = "block";
|
normal = "block";
|
||||||
insert = "bar";
|
insert = "bar";
|
||||||
select = "underline";
|
select = "underline";
|
||||||
};
|
};
|
||||||
soft-wrap = {
|
file-picker = {
|
||||||
enable = true;
|
hidden = false; # Enables ignoring hidden files
|
||||||
|
follow-symlinks = true; # Follow symlinks instead of ignoring them
|
||||||
|
deduplicate-links = true; # Ignore symlinks that point at files already shown in the picker
|
||||||
|
parents = true; # Enables reading ignore files from parent directories
|
||||||
|
ignore = true; # Enables reading .ignore files
|
||||||
|
git-ignore = true; # Enables reading .gitignore files
|
||||||
|
git-global = true; # Enables reading global .gitignore, whose path is specified in git's config: core.excludesfile option
|
||||||
|
git-exclude = true; # Enables reading .git/info/exclude files
|
||||||
|
# max-depth unset = ; # Set with an integer value for maximum depth to recurse
|
||||||
|
};
|
||||||
|
auto-pairs = {
|
||||||
|
"(" = ")";
|
||||||
|
"{" = "}";
|
||||||
|
"[" = "]";
|
||||||
|
"\"" = "\"";
|
||||||
|
"`" = "`";
|
||||||
|
"<" = ">";
|
||||||
|
# "/* " = " */";
|
||||||
|
};
|
||||||
|
auto-save = {
|
||||||
|
focus-lost = false;
|
||||||
|
after-delay = {
|
||||||
|
enable = false;
|
||||||
|
timeout = 3000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
search = {
|
||||||
|
smart-case = true;
|
||||||
|
wrap-around = true;
|
||||||
|
};
|
||||||
|
whitespace = {
|
||||||
|
render = {
|
||||||
|
skip-levels = "none";
|
||||||
|
space = "none";
|
||||||
|
nbsp = "none";
|
||||||
|
nnbsp = "none";
|
||||||
|
tab = "none";
|
||||||
|
newline = "none";
|
||||||
|
tabpad = "none";
|
||||||
|
};
|
||||||
|
characters = {
|
||||||
|
skip-levels = 1;
|
||||||
|
space = "·";
|
||||||
|
nbsp = "⍽";
|
||||||
|
nnbsp = "␣";
|
||||||
|
tab = "→";
|
||||||
|
newline = "⏎";
|
||||||
|
tabpad = "·";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
line-number = "relative";
|
|
||||||
color-modes = true;
|
|
||||||
bufferline = "always";
|
|
||||||
popup-border = "all";
|
|
||||||
completion-trigger-len = 1;
|
|
||||||
completion-timeout = 5;
|
|
||||||
file-picker.hidden = false;
|
|
||||||
middle-click-paste = false;
|
|
||||||
cursorline = true;
|
|
||||||
indent-guides = {
|
indent-guides = {
|
||||||
render = true;
|
render = true;
|
||||||
character = "╎";
|
character = "╎";
|
||||||
|
skip-levels = 0;
|
||||||
};
|
};
|
||||||
lsp.display-inlay-hints = true;
|
gutters = [
|
||||||
statusline.center = [ "position-percentage" ];
|
"diagnostics"
|
||||||
true-color = true;
|
"spacer"
|
||||||
whitespace.characters = {
|
"line-numbers"
|
||||||
newline = "↴";
|
"spacer"
|
||||||
tab = "⇥";
|
"diff"
|
||||||
skip-levels = 1;
|
];
|
||||||
|
# line-numbers = {};
|
||||||
|
# layout.minwidth = 3;
|
||||||
|
# diagnostics = {};
|
||||||
|
# diff = {};
|
||||||
|
# spacer = {};
|
||||||
|
soft-wrap = {
|
||||||
|
enable = true;
|
||||||
|
max-wrap = 20;
|
||||||
|
max-indent-retain = 40;
|
||||||
|
wrap-indicator = "↪";
|
||||||
|
wrap-at-text-width = false;
|
||||||
|
};
|
||||||
|
smart-tab = {
|
||||||
|
enable = false;
|
||||||
|
supersede-menu = false;
|
||||||
|
};
|
||||||
|
inline-diagnostics = {
|
||||||
|
cursor-line = "warning";
|
||||||
|
other-lines = "disable";
|
||||||
|
prefix-len = 1;
|
||||||
|
# max-wrap = set above
|
||||||
|
max-diagnostics = 20;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
keys.normal = {
|
keys = {
|
||||||
C-g = [":new" ":insert-output lazygit" ":buffer-close!" ":redraw"];
|
normal = {
|
||||||
|
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
|
||||||
|
"C-i" = [ ":pipe fgl" "toggle_comments" ];
|
||||||
|
"A-`" = [ "no_op" ];
|
||||||
|
"`" = [ "no_op" ];
|
||||||
|
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
||||||
|
};
|
||||||
|
select = {
|
||||||
|
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
languages = {
|
||||||
|
language = [
|
||||||
|
{
|
||||||
|
name = "nix";
|
||||||
|
language-servers = [ "nixd" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "latex";
|
||||||
|
language-servers = [ "texlab" "language-tool" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "typst";
|
||||||
|
language-servers = [ "language-tool" "tinymist" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "markdown";
|
||||||
|
language-servers = [ "language-tool" "marksman" ];
|
||||||
|
file-types = [ "md" "MD" ];
|
||||||
|
scope = "text.<name>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "python";
|
||||||
|
language-servers = [ "pyright" "ruff" ];
|
||||||
|
formatter = {
|
||||||
|
command = "ruff";
|
||||||
|
args = [
|
||||||
|
"format"
|
||||||
|
"--line-length"
|
||||||
|
"120"
|
||||||
|
"-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
debugger = {
|
||||||
|
name = "debugpy";
|
||||||
|
transport = "stdio";
|
||||||
|
command = "python";
|
||||||
|
args = [ "-m" "debugpy.adapter" ];
|
||||||
|
templates = [{
|
||||||
|
name = "source";
|
||||||
|
request = "launch";
|
||||||
|
completion = [{
|
||||||
|
name = "entrypoint";
|
||||||
|
completion = "filename";
|
||||||
|
default = ".";
|
||||||
|
}];
|
||||||
|
args = {
|
||||||
|
mode = "debug";
|
||||||
|
program = "{0}";
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "go";
|
||||||
|
language-servers = [
|
||||||
|
"gopls"
|
||||||
|
# "llm"
|
||||||
|
];
|
||||||
|
# formatter = {
|
||||||
|
# command = "gofmt";
|
||||||
|
# };
|
||||||
|
}
|
||||||
|
];
|
||||||
|
language-server = {
|
||||||
|
"nixd" = {
|
||||||
|
command = "nixd";
|
||||||
|
};
|
||||||
|
"style-check" = {
|
||||||
|
command = lib.getExe pkgs.vale-ls;
|
||||||
|
};
|
||||||
|
"language-tool" = {
|
||||||
|
command = "${pkgs.ltex-ls}/bin/ltex-ls";
|
||||||
|
};
|
||||||
|
"ruff" = {
|
||||||
|
command = "ruff-lsp";
|
||||||
|
config.settings.args = [
|
||||||
|
# Set line length
|
||||||
|
"--line-length"
|
||||||
|
"240"
|
||||||
|
# Enable custom ruff rules
|
||||||
|
# "--select" lib.concatStringsSep [ ]
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"llm" = {
|
||||||
|
command = lib.getExe pkgs.helix-gpt;
|
||||||
|
args = [
|
||||||
|
"--handler"
|
||||||
|
"ollama"
|
||||||
|
"--ollamaModel"
|
||||||
|
"codellama:7b"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
languages.language = [{
|
|
||||||
name = "nix";
|
|
||||||
}];
|
|
||||||
themes = {
|
themes = {
|
||||||
base16 = with rice.color; {
|
base16 = with rice.color; {
|
||||||
"attributes" = foreground;
|
"attributes" = foreground;
|
||||||
"comment" = {
|
"comment" = {
|
||||||
"fg" = white.dark;
|
fg = black.bright;
|
||||||
"modifiers" = [ "italic" ];
|
modifiers = [ "italic" ];
|
||||||
};
|
};
|
||||||
"constant" = accent.bright;
|
"constant" = accent.bright;
|
||||||
"constant.character.escape" = special.bright;
|
"constant.character.escape" = special.bright;
|
||||||
"constant.numeric" = foreground;
|
"constant.numeric" = foreground;
|
||||||
"constructor" = blue.dark;
|
"constructor" = weird.base;
|
||||||
"debug" = yellow.base;
|
"debug" = yellow.base;
|
||||||
"diagnostic.modifiers" = [ "underlined" ];
|
"diagnostic.modifiers" = [ "underline" ];
|
||||||
"diff.delta" = blue.bright;
|
"diff.delta" = blue.bright;
|
||||||
"diff.minus" = negative.bright;
|
"diff.minus" = negative.bright;
|
||||||
"diff.plus" = positive.bright;
|
"diff.plus" = positive.bright;
|
||||||
@@ -80,143 +314,141 @@
|
|||||||
"function" = secondary.bright;
|
"function" = secondary.bright;
|
||||||
"hint" = tertiary.bright;
|
"hint" = tertiary.bright;
|
||||||
"info" = foreground;
|
"info" = foreground;
|
||||||
"keyword" = secondary.base;
|
"keyword" = special.base;
|
||||||
|
"keyword.modifiers" = [ "italic" ];
|
||||||
"label" = foreground;
|
"label" = foreground;
|
||||||
"namespace" = weird.bright;
|
"namespace" = weird.bright;
|
||||||
"operator" = foreground;
|
"operator" = foreground;
|
||||||
"special" = special.base;
|
"special" = special.base;
|
||||||
"string" = secondary.bright;
|
"string" = secondary.bright;
|
||||||
"type" = red.dark;
|
"type" = red.base;
|
||||||
"variable" = accent.base;
|
"variable" = accent.base;
|
||||||
"variableother.member" = foreground;
|
"variableother.member" = foreground;
|
||||||
"warning" = red.base;
|
"warning" = red.base;
|
||||||
|
|
||||||
"markup.heading" = accent.base;
|
"markup.heading" = accent.base;
|
||||||
"markup.bold" = {
|
"markup.bold" = {
|
||||||
"fg" = tertiary.bright;
|
fg = tertiary.bright;
|
||||||
"modifiers" = [ "bold" ];
|
modifiers = [ "bold" ];
|
||||||
};
|
};
|
||||||
"italic" = {
|
"italic" = {
|
||||||
"fg" = secondary.bright;
|
fg = secondary.bright;
|
||||||
"modifiers" = [ "italic" ];
|
modifiers = [ "italic" ];
|
||||||
};
|
};
|
||||||
"markup.linktext" = accent.base;
|
"markup.linktext" = accent.base;
|
||||||
"markup.linkurl" = {
|
"markup.linkurl" = {
|
||||||
"fg" = tertiary.dark;
|
fg = tertiary.dark;
|
||||||
"modifiers" = [ "underlined" ];
|
modifiers = [ "underlined" ];
|
||||||
};
|
};
|
||||||
"markup.list" = accent.bright;
|
"markup.list" = accent.bright;
|
||||||
"markup.quote" = weird.bright;
|
"markup.quote" = weird.bright;
|
||||||
"markup.raw" = special.bright;
|
"markup.raw" = special.bright;
|
||||||
"markup.strikethrough" = {
|
"markup.strikethrough".modifiers = [ "crossed_out" ];
|
||||||
"modifiers" = [ "crossed_out" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"diagnostic.hint" = {
|
"diagnostic.hint".underline.style = "curl";
|
||||||
"underline" = { style = "curl"; };
|
"diagnostic.info".underline.style = "curl";
|
||||||
};
|
"diagnostic.warning".underline.style = "curl";
|
||||||
"diagnostic.info" = {
|
"diagnostic.error".underline.style = "curl";
|
||||||
"underline" = { style = "curl"; };
|
|
||||||
};
|
|
||||||
"diagnostic.warning" = {
|
|
||||||
"underline" = { style = "curl"; };
|
|
||||||
};
|
|
||||||
"diagnostic.error" = {
|
|
||||||
"underline" = { style = "curl"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
"ui.background" = { # general background of the editor window
|
"ui.background" = { # general background of the editor window
|
||||||
"bg" = background;
|
# bg = background;
|
||||||
};
|
};
|
||||||
"ui.bufferline" = { # the top line ("tab"-line)
|
"ui.bufferline" = { # the top line ("tab"-line)
|
||||||
"fg" = accent.base;
|
fg = accent.base;
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.bufferline.active" = { # the active "tab"
|
"ui.bufferline.active" = { # the active "tab"
|
||||||
"fg" = background;
|
fg = background;
|
||||||
"bg" = accent.base;
|
bg = accent.base;
|
||||||
"modifiers" = [ "bold" ];
|
modifiers = [ "bold" ];
|
||||||
};
|
};
|
||||||
"ui.cursor" = { # the cursor in Normal mode
|
"ui.cursor" = { # the cursor in Normal mode
|
||||||
"fg" = foreground;
|
fg = foreground;
|
||||||
"modifiers" = [ "reversed" ];
|
modifiers = [ "reversed" ];
|
||||||
};
|
};
|
||||||
"ui.cursorline.primary" = { # the line on which the cursor is on
|
"ui.cursorline.primary" = { # the line on which the cursor is on
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.cursor.match" = { # Matching bracket etc.
|
"ui.cursor.match" = { # Matching bracket etc.
|
||||||
"bg" = green.dark;
|
bg = green.dark;
|
||||||
"modifiers" = [ "reversed" ];
|
modifiers = [ ];
|
||||||
};
|
};
|
||||||
"ui.gutter" = {
|
"ui.gutter" = {
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.help" = {
|
"ui.help" = {
|
||||||
"fg" = green.base;
|
fg = green.base;
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.linenr" = {
|
"ui.linenr" = {
|
||||||
"fg" = white.dark;
|
fg = white.dark;
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.linenr.selected" = {
|
"ui.linenr.selected" = {
|
||||||
"fg" = accent.bright;
|
fg = accent.bright;
|
||||||
"modifiers" = [ "bold" ];
|
modifiers = [ "bold" ];
|
||||||
};
|
};
|
||||||
"ui.menu" = {
|
"ui.menu" = {
|
||||||
"fg" = accent.base;
|
fg = accent.base;
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.menu.scroll" = {
|
"ui.menu.scroll" = {
|
||||||
"fg" = yellow.dark;
|
fg = yellow.dark;
|
||||||
"bg" = background;
|
bg = background;
|
||||||
};
|
};
|
||||||
"ui.menu.selected" = {
|
"ui.menu.selected" = {
|
||||||
"fg" = red.base;
|
fg = red.base;
|
||||||
"bg" = blue.dark;
|
bg = blue.dark;
|
||||||
};
|
};
|
||||||
"ui.popup" = {
|
"ui.popup" = {
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.selection" = {
|
"ui.selection" = {
|
||||||
"bg" = white.dark;
|
bg = white.dark;
|
||||||
};
|
};
|
||||||
"ui.selection.primary" = {
|
"ui.selection.primary" = {
|
||||||
"bg" = black.bright;
|
bg = black.bright;
|
||||||
};
|
};
|
||||||
"ui.statusline" = {
|
"ui.statusline" = {
|
||||||
"fg" = blue.bright;
|
fg = blue.bright;
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
"ui.statusline.inactive" = {
|
"ui.statusline.inactive" = {
|
||||||
"fg" = red.bright;
|
fg = red.bright;
|
||||||
"bg" = red.dark;
|
bg = red.dark;
|
||||||
};
|
};
|
||||||
"ui.statusline.insert" = {
|
"ui.statusline.insert" = {
|
||||||
"fg" = green.bright;
|
fg = green.bright;
|
||||||
"bg" = green.dark;
|
bg = green.dark;
|
||||||
};
|
};
|
||||||
"ui.statusline.normal" = {
|
"ui.statusline.normal" = {
|
||||||
"fg" = yellow.bright;
|
fg = yellow.bright;
|
||||||
"bg" = yellow.dark;
|
bg = yellow.dark;
|
||||||
};
|
};
|
||||||
"ui.statusline.select" = {
|
"ui.statusline.select" = {
|
||||||
"fg" = cyan.bright;
|
fg = cyan.bright;
|
||||||
"bg" = cyan.dark;
|
bg = cyan.dark;
|
||||||
};
|
};
|
||||||
"ui.text" = foreground;
|
"ui.text" = foreground;
|
||||||
"ui.text.focus" = accent.base;
|
"ui.text.focus" = accent.base;
|
||||||
"ui.virtual.indent-guide" = {
|
"ui.virtual.indent-guide" = {
|
||||||
"fg" = black.bright;
|
fg = black.bright;
|
||||||
};
|
};
|
||||||
"ui.virtual.inlay-hint" = {
|
"ui.virtual.inlay-hint" = {
|
||||||
"fg" = black.bright;
|
fg = subtle.base;
|
||||||
|
bg = subtle.dark;
|
||||||
};
|
};
|
||||||
"ui.virtual.ruler" = {
|
"ui.virtual.ruler" = {
|
||||||
"bg" = background;
|
bg = background;
|
||||||
|
};
|
||||||
|
"ui.virtual.jump-label" = {
|
||||||
|
fg = special.base;
|
||||||
|
underline = {
|
||||||
|
style = "dotted";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
"ui.window" = {
|
"ui.window" = {
|
||||||
"bg" = black.base;
|
bg = black.base;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
173
home-modules/hyprland-autoname-workspaces.nix
Executable file → Normal file
173
home-modules/hyprland-autoname-workspaces.nix
Executable file → Normal file
@@ -1,104 +1,105 @@
|
|||||||
{pkgs-unstable, lib, user, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = [
|
home = {
|
||||||
pkgs-unstable.hyprland-autoname-workspaces
|
packages = with pkgs; [ hyprland-autoname-workspaces ];
|
||||||
];
|
file.".config/hyprland-autoname-workspaces/config.toml".text = let
|
||||||
|
icons = /* toml */ ''
|
||||||
home.file.".config/hyprland-autoname-workspaces/config.toml".text = ''
|
DEFAULT = "{class}"
|
||||||
version = "1.1.14"
|
"Alacritty" = ""
|
||||||
|
"Bitwarden" = ""
|
||||||
|
"blueman-manager" = ""
|
||||||
|
"chatterino" = ""
|
||||||
|
"Chromium" = ""
|
||||||
|
"chromium-browser" = ""
|
||||||
|
"code" = ""
|
||||||
|
"code-oss" = ""
|
||||||
|
"codium" = ""
|
||||||
|
"codium-url-handler" = ""
|
||||||
|
"com.mitchellh.ghostty" = ""
|
||||||
|
"com.obsproject.Studio" = ""
|
||||||
|
"discord" = ""
|
||||||
|
"Element" = ""
|
||||||
|
"epicgameslauncher.exe" = ""
|
||||||
|
".*.exe" = ""
|
||||||
|
"firefox" = ""
|
||||||
|
"galaxyclient.exe" = ""
|
||||||
|
"\\.?[gG]imp-.*" = ""
|
||||||
|
"F?imv.*" = ""
|
||||||
|
"KiCad" = ""
|
||||||
|
"kitty" = ""
|
||||||
|
"libreoffice-calc" = ""
|
||||||
|
"libreoffice-writer" = ""
|
||||||
|
"lutris" = ""
|
||||||
|
"mpv" = ""
|
||||||
|
"obsidian" = ""
|
||||||
|
"org.inkscape.Inkscape" = ""
|
||||||
|
"org.remmina.Remmina" = ""
|
||||||
|
"org.prismlauncher.*" = ""
|
||||||
|
"pavucontrol" = ""
|
||||||
|
"pcbnew" = ""
|
||||||
|
"Signal" = ""
|
||||||
|
"spotify" = ""
|
||||||
|
"Spotify" = ""
|
||||||
|
"steam" = ""
|
||||||
|
"thunar" = ""
|
||||||
|
"thunderbird" = ""
|
||||||
|
"Tor Browser" = ""
|
||||||
|
"vesktop" = ""
|
||||||
|
"virt-manager" = ""
|
||||||
|
"VirtualBox" = ""
|
||||||
|
"VirtualBox Machine" = ""
|
||||||
|
"VirtualBox Manager" = ""
|
||||||
|
"VSCodium" = ""
|
||||||
|
"Xsane" = ""
|
||||||
|
"zathura" = ""
|
||||||
|
"zoom" = ""
|
||||||
|
'';
|
||||||
|
in /* toml */ ''
|
||||||
|
version = "1.1.15"
|
||||||
|
|
||||||
[class]
|
[format]
|
||||||
VirtualBox = ""
|
dedup = false
|
||||||
steam = ""
|
dedup_inactive_fullscreen = false
|
||||||
"VirtualBox Manager" = ""
|
delim = " "
|
||||||
"com.obsproject.Studio" = ""
|
workspace = "{id}:{clients}"
|
||||||
"[Ff]irefox" = ""
|
workspace_empty = "{id}"
|
||||||
"[Tt]hunderbird" = ""
|
client = "{icon}"
|
||||||
pcbnew = ""
|
client_fullscreen = "F{icon}"
|
||||||
".*.exe" = ""
|
client_active = "<u>{icon}</u>"
|
||||||
Element = ""
|
client_dup = "{icon}x{counter}"
|
||||||
Signal = ""
|
client_dup_active = "<u>{icon}</u>{delim}{icon}x{counter_unfocused}"
|
||||||
Gimp = ""
|
client_dup_fullscreen = "F{icon}{delim}{icon}x{counter_unfocused}"
|
||||||
VSCodium = ""
|
|
||||||
"[sS]potify" = ""
|
|
||||||
virt-manager = ""
|
|
||||||
lutris = ""
|
|
||||||
DEFAULT = "{class}"
|
|
||||||
"epicgameslauncher.exe" = ""
|
|
||||||
"[Cc]ode" = ""
|
|
||||||
"galaxyclient.exe" = ""
|
|
||||||
pavucontrol = ""
|
|
||||||
"Tor Browser" = ""
|
|
||||||
mpv = ""
|
|
||||||
chatterino = ""
|
|
||||||
libreoffice-writer = ""
|
|
||||||
kitty = ""
|
|
||||||
"cyberpunk2077.exe" = ""
|
|
||||||
KiCad = ""
|
|
||||||
"[tT]hunar" = ""
|
|
||||||
"riotclientux.exe" = ""
|
|
||||||
libreoffice-calc = ""
|
|
||||||
"org.remmina.Remmina" = ""
|
|
||||||
"org.inkscape.Inkscape" = ""
|
|
||||||
"VirtualBox Machine" = ""
|
|
||||||
Bitwarden = ""
|
|
||||||
"[gG]imp-.*" = ""
|
|
||||||
Chromium = ""
|
|
||||||
obsidian = ""
|
|
||||||
"leagueclientux.exe" = ""
|
|
||||||
zathura = ""
|
|
||||||
code-oss = ""
|
|
||||||
discord = ""
|
|
||||||
vesktop = ""
|
|
||||||
blueman-manager = ""
|
|
||||||
Alacritty = ""
|
|
||||||
zoom = ""
|
|
||||||
|
|
||||||
[class_active]
|
[exclude]
|
||||||
"(?i)ExampleOneTerm" = "icon"
|
"steam" = "^(Friends List.*)?$"
|
||||||
|
"fcitx" = ".*"
|
||||||
|
|
||||||
[initial_class]
|
[class]
|
||||||
|
${icons}
|
||||||
|
|
||||||
[initial_class_active]
|
[class_active]
|
||||||
|
|
||||||
[workspaces_name]
|
[initial_class]
|
||||||
|
|
||||||
[title_in_class]
|
[initial_class_active]
|
||||||
|
|
||||||
[title_in_class_active]
|
[workspaces_name]
|
||||||
|
|
||||||
[title_in_initial_class]
|
[title_in_class]
|
||||||
|
|
||||||
[title_in_initial_class_active]
|
[title_in_class_active]
|
||||||
|
|
||||||
[initial_title_in_class]
|
[title_in_initial_class]
|
||||||
|
|
||||||
[initial_title_in_class_active]
|
[title_in_initial_class_active]
|
||||||
|
|
||||||
[initial_title_in_initial_class]
|
[initial_title_in_class]
|
||||||
|
|
||||||
[initial_title_in_initial_class_active]
|
[initial_title_in_class_active]
|
||||||
|
|
||||||
[exclude]
|
[initial_title_in_initial_class]
|
||||||
aProgram = "^$"
|
|
||||||
"" = "^$"
|
|
||||||
"(?i)fcitx" = ".*"
|
|
||||||
"[Ss]team" = "^(Friends List.*)?$"
|
|
||||||
"explorer.exe" = ".*"
|
|
||||||
"(?i)TestApp" = ""
|
|
||||||
|
|
||||||
[format]
|
[initial_title_in_initial_class_active]
|
||||||
dedup = false
|
|
||||||
dedup_inactive_fullscreen = false
|
|
||||||
delim = " "
|
|
||||||
workspace = "{id}:{clients}"
|
|
||||||
workspace_empty = "{id}"
|
|
||||||
client = "{icon}"
|
|
||||||
client_fullscreen = "{icon}"
|
|
||||||
client_active = "{icon}"
|
|
||||||
client_dup = "{icon}{counter_sup}"
|
|
||||||
client_dup_active = "*{icon}*{delim}{icon}{counter_unfocused_sup}"
|
|
||||||
client_dup_fullscreen = "[{icon}]{delim}{icon}{counter_unfocused_sup}"
|
|
||||||
'';
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
818
home-modules/hyprland.nix
Executable file → Normal file
818
home-modules/hyprland.nix
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
51
home-modules/kitty.nix
Executable file → Normal file
51
home-modules/kitty.nix
Executable file → Normal file
@@ -1,37 +1,32 @@
|
|||||||
{ config, pkgs, rice, lib, user, ... }:
|
{ rice, ... }:
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
|
||||||
kitty
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
font = {
|
font = {
|
||||||
name = rice.font.code.name2;
|
name = rice.font.code.name;
|
||||||
package = rice.font.code.package;
|
package = rice.font.code.package;
|
||||||
};
|
};
|
||||||
settings = {
|
settings = with rice.color; {
|
||||||
background = rice.color.background;
|
background = background;
|
||||||
foreground = rice.color.foreground;
|
foreground = foreground;
|
||||||
cursor = rice.color.foreground;
|
cursor = foreground;
|
||||||
color0 = rice.color.black.base;
|
color0 = black.base;
|
||||||
color8 = rice.color.black.bright;
|
color8 = black.bright;
|
||||||
color1 = rice.color.red.base;
|
color1 = red.base;
|
||||||
color9 = rice.color.red.bright;
|
color9 = red.bright;
|
||||||
color2 = rice.color.green.base;
|
color2 = green.base;
|
||||||
color10 = rice.color.green.bright;
|
color10 = green.bright;
|
||||||
color3 = rice.color.yellow.base;
|
color3 = yellow.base;
|
||||||
color11 = rice.color.yellow.bright;
|
color11 = yellow.bright;
|
||||||
color4 = rice.color.blue.base;
|
color4 = blue.base;
|
||||||
color12 = rice.color.blue.bright;
|
color12 = blue.bright;
|
||||||
color5 = rice.color.magenta.base;
|
color5 = magenta.base;
|
||||||
color13 = rice.color.magenta.bright;
|
color13 = magenta.bright;
|
||||||
color6 = rice.color.cyan.base;
|
color6 = cyan.base;
|
||||||
color14 = rice.color.cyan.bright;
|
color14 = cyan.bright;
|
||||||
color7 = rice.color.white.base;
|
color7 = white.base;
|
||||||
color15 = rice.color.white.bright;
|
color15 = white.bright;
|
||||||
background_opacity = builtins.toString rice.transparency;
|
background_opacity = builtins.toString rice.transparency;
|
||||||
window_padding_width = 5;
|
window_padding_width = 5;
|
||||||
remember_window_size = false;
|
remember_window_size = false;
|
||||||
};
|
};
|
||||||
|
|||||||
5
home-modules/latex.nix
Executable file → Normal file
5
home-modules/latex.nix
Executable file → Normal file
@@ -1,7 +1,8 @@
|
|||||||
{ config, pkgs, lib, host, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (hyper.host != "NxACE")
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
texlab # LSP
|
||||||
(texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; })
|
(texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; })
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
31
home-modules/mako.nix
Executable file → Normal file
31
home-modules/mako.nix
Executable file → Normal file
@@ -1,20 +1,17 @@
|
|||||||
{ pkgs, rice, lib, user, ... }:
|
{ config, pkgs, ... }@all: with all; {
|
||||||
lib.mkIf (user != "tv")
|
home.packages = with pkgs; [ libnotify ];
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
pkgs.mako
|
|
||||||
pkgs.libnotify
|
|
||||||
];
|
|
||||||
services.mako = with rice; {
|
services.mako = with rice; {
|
||||||
enable = true;
|
enable = if config.programs.hyprpanel.enable then false else true;
|
||||||
defaultTimeout = 5000; # in ms
|
settings = {
|
||||||
backgroundColor = color.background;
|
default-timeout = 5000; # in ms
|
||||||
textColor = color.foreground;
|
background-color = color.background;
|
||||||
borderColor = color.border;
|
text-color = color.foreground;
|
||||||
borderSize = border-width;
|
font = font.code.name;
|
||||||
font = font.code.name2;
|
border-size = border-width;
|
||||||
borderRadius = rounding;
|
border-radius = rounding;
|
||||||
anchor = "bottom-right";
|
border-color = color.border;
|
||||||
margin = builtins.toString (gap-size * 2) ;
|
anchor = "top-right";
|
||||||
|
margin = builtins.toString (gap-size * 2) ;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
87
home-modules/matrix.nix
Normal file
87
home-modules/matrix.nix
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# cinny-desktop
|
||||||
|
(weechat.override {
|
||||||
|
configure = { availablePlugins, ... }: {
|
||||||
|
scripts = with pkgs.weechatScripts; [
|
||||||
|
weechat-matrix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
sops.secrets."weechat/passphrase" = { path = "%r/secrets/weechat/passphrase"; };
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/weechat/sec.conf".text = ''
|
||||||
|
[crypt]
|
||||||
|
cipher = aes256
|
||||||
|
hash_algo = sha256
|
||||||
|
passphrase_command = "cat $XDG_RUNTIME_DIR/secrets/weechat/passphrase"
|
||||||
|
salt = on
|
||||||
|
|
||||||
|
[data]
|
||||||
|
__passphrase__ = on
|
||||||
|
matrix_nx2site_password = "AD1FDBA557C3C2BA41A0BAAD43FBE91E35830A7779A82DE4C3C34204133459512B2008E83A5FDDA9C1209F9DEF833819DF5E9726AEB01162B421864DD3F08F4F9900DADB"
|
||||||
|
'';
|
||||||
|
".config/weechat/matrix.conf".text = ''
|
||||||
|
[network]
|
||||||
|
autoreconnect_delay_growing = 2
|
||||||
|
autoreconnect_delay_max = 600
|
||||||
|
debug_buffer = off
|
||||||
|
debug_category = all
|
||||||
|
debug_level = error
|
||||||
|
fetch_backlog_on_pgup = on
|
||||||
|
lag_min_show = 500
|
||||||
|
lag_reconnect = 90
|
||||||
|
lazy_load_room_users = off
|
||||||
|
max_backlog_sync_events = 10
|
||||||
|
max_initial_sync_events = 30
|
||||||
|
max_nicklist_users = 5000
|
||||||
|
print_unconfirmed_messages = on
|
||||||
|
read_markers_conditions = "''${markers_enabled}"
|
||||||
|
resending_ignores_devices = on
|
||||||
|
typing_notice_conditions = "''${typing_enabled}"
|
||||||
|
|
||||||
|
[look]
|
||||||
|
bar_item_typing_notice_prefix = "Typing: "
|
||||||
|
busy_sign = "⏳"
|
||||||
|
code_block_margin = 2
|
||||||
|
code_blocks = on
|
||||||
|
disconnect_sign = "❌"
|
||||||
|
encrypted_room_sign = "🔐"
|
||||||
|
encryption_warning_sign = "⚠️ "
|
||||||
|
human_buffer_names = off
|
||||||
|
markdown_input = on
|
||||||
|
max_typing_notice_item_length = 50
|
||||||
|
new_channel_position = none
|
||||||
|
pygments_style = "native"
|
||||||
|
quote_wrap = 67
|
||||||
|
redactions = strikethrough
|
||||||
|
server_buffer = merge_with_core
|
||||||
|
|
||||||
|
[color]
|
||||||
|
error_message_bg = default
|
||||||
|
error_message_fg = darkgray
|
||||||
|
nick_prefixes = "admin=lightgreen;mod=lightgreen;power=yellow"
|
||||||
|
quote_bg = default
|
||||||
|
quote_fg = lightgreen
|
||||||
|
unconfirmed_message_bg = default
|
||||||
|
unconfirmed_message_fg = darkgray
|
||||||
|
untagged_code_bg = default
|
||||||
|
untagged_code_fg = blue
|
||||||
|
|
||||||
|
[server]
|
||||||
|
nx2site.autoconnect = off
|
||||||
|
nx2site.address = "nx2.site"
|
||||||
|
nx2site.port = 443
|
||||||
|
nx2site.proxy = ""
|
||||||
|
nx2site.ssl_verify = on
|
||||||
|
nx2site.username = "nx2"
|
||||||
|
nx2site.password = "''${sec.data.matrix_nx2site_password}"
|
||||||
|
nx2site.device_name = "Weechat@${hyper.host}"
|
||||||
|
nx2site.autoreconnect_delay = 10
|
||||||
|
nx2site.sso_helper_listening_port = 0
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
80
home-modules/mpv.nix
Normal file
80
home-modules/mpv.nix
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
programs.mpv = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.mpv;
|
||||||
|
config = {
|
||||||
|
# osc = false; # Disables the on-screen controller (seekbar, volume, etc.)
|
||||||
|
# osd-bar = false; # Disables the on-screen display progress bar
|
||||||
|
demuxer-max-back-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking backwards
|
||||||
|
demuxer-max-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking forwards
|
||||||
|
interpolation = true; # Enables frame interpolation for smoother playback
|
||||||
|
video-sync = "display-resample"; # Synchronizes video playback to the display's refresh rate
|
||||||
|
sub-visibility = true; # Hides subtitles by default
|
||||||
|
sub-auto = "fuzzy"; # Automatically loads subtitles if their filename is similar to the video file
|
||||||
|
sub-font = rice.font.base.name;
|
||||||
|
# sub-blur = 10; # this blurs the whole thing, text aswell
|
||||||
|
sub-color = rice.color.accent.bright;
|
||||||
|
sub-back-color = "${rice.color.background}${rice.lib.float-to-drune 0.8}"; # does not seem to work
|
||||||
|
# sub-border-size = 0;
|
||||||
|
sub-border-style = "opaque-box";
|
||||||
|
background-color = "${rice.color.background}"; # transparency breaks blur on hyprland sometimes, so just rgb
|
||||||
|
alang = "en,eng,de,ger"; # Sets preferred audio languages in order
|
||||||
|
slang = "en,eng,de,ger"; # Sets preferred subtitle languages in order
|
||||||
|
vlang = "en,eng,de,ger"; # Sets preferred video languages in order
|
||||||
|
save-position-on-quit = true; # Saves the playback position when quitting
|
||||||
|
ignore-path-in-watch-later-config = true; # Ignores the path in the watch-later configuration
|
||||||
|
ytdl-format = "bestvideo[height<=?1080]+bestaudio/best"; # Sets the format for downloading YouTube videos
|
||||||
|
vo = pkgs.lib.mkIf hyper.nvidia.enable "gpu";
|
||||||
|
hwdec = if hyper.nvidia.enable then "no" else "no"; # bugged
|
||||||
|
};
|
||||||
|
scripts = with pkgs.mpvScripts; [
|
||||||
|
mpris # use media keys
|
||||||
|
thumbfast # thumbnails on timeline hover
|
||||||
|
# uosc # custom ui
|
||||||
|
sponsorblock
|
||||||
|
];
|
||||||
|
bindings = {
|
||||||
|
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
|
||||||
|
# "tab" = ''script-binding uosc/toggle-ui'';
|
||||||
|
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
|
||||||
|
# "right" = ''seek 5'';
|
||||||
|
# "left" = ''seek -5'';
|
||||||
|
# "shift+right" = ''seek 30; script-binding uosc/flash-timeline'';
|
||||||
|
# "shift+left" = ''seek -30; script-binding uosc/flash-timeline'';
|
||||||
|
# "m" = ''no-osd cycle mute; script-binding uosc/flash-volume'';
|
||||||
|
# "up" = ''no-osd add volume 10; script-binding uosc/flash-volume'';
|
||||||
|
# "down" = ''no-osd add volume -10; script-binding uosc/flash-volume'';
|
||||||
|
# "[" = ''no-osd add speed -0.25; script-binding uosc/flash-speed'';
|
||||||
|
# "]" = ''no-osd add speed 0.25; script-binding uosc/flash-speed'';
|
||||||
|
# "\\" = ''no-osd set speed 1; script-binding uosc/flash-speed'';
|
||||||
|
# ">" = ''script-binding uosc/next; script-message-to uosc flash-elements top_bar,timeline'';
|
||||||
|
# "<" = ''script-binding uosc/prev; script-message-to uosc flash-elements top_bar,timeline>'';
|
||||||
|
};
|
||||||
|
scriptOpts = {
|
||||||
|
thumbfast = {
|
||||||
|
spawn_first = true;
|
||||||
|
network = true;
|
||||||
|
hwdec = true;
|
||||||
|
};
|
||||||
|
uosc = {
|
||||||
|
timeline_size = 25;
|
||||||
|
timeline_persistency = "paused,audio";
|
||||||
|
progress = "always";
|
||||||
|
progress_size = 4;
|
||||||
|
progress_line_width = 4;
|
||||||
|
controls = "subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality";
|
||||||
|
top_bar = "never";
|
||||||
|
refine = "text_width";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdg.configFile."mpv/shaders/invert.glsl".text = /* glsl */ ''
|
||||||
|
//!HOOK LUMA
|
||||||
|
//!BIND HOOKED
|
||||||
|
vec4 hook()
|
||||||
|
{
|
||||||
|
float luma = LUMA_texOff(0).x;
|
||||||
|
return vec4(1.0 - luma);
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
6
home-modules/nh.nix
Executable file → Normal file
6
home-modules/nh.nix
Executable file → Normal file
@@ -1,13 +1,13 @@
|
|||||||
{ config, pkgs-unstable, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs-unstable; [
|
packages = with pkgs; [
|
||||||
nh
|
nh
|
||||||
nix-output-monitor
|
nix-output-monitor
|
||||||
nvd
|
nvd
|
||||||
];
|
];
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
FLAKE = "${config.home.homeDirectory}/nix-dots";
|
NH_FLAKE = "${hyper.home}/nix-dots";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
6
home-modules/nixd.nix
Normal file
6
home-modules/nixd.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nixd
|
||||||
|
];
|
||||||
|
}
|
||||||
35
home-modules/nvidia.nix
Normal file
35
home-modules/nvidia.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
lib.mkIf (hyper.nvidia.enable == true)
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
nvtopPackages.full
|
||||||
|
];
|
||||||
|
sessionVariables = {
|
||||||
|
NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland
|
||||||
|
WLR_NO_HARDWARE_CURSORS = "1"; # Fix cursor rendering issue on wlr nvidia.
|
||||||
|
|
||||||
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
|
|
||||||
|
GBM_BACKEND = "nvidia-drm";
|
||||||
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||||
|
LIBVA_DRIVER_NAME = "nvidia";
|
||||||
|
__GL_GSYNC_ALLOWED = "1";
|
||||||
|
__GL_VRR_ALLOWED = "0";
|
||||||
|
WLR_DRM_NO_ATOMIC = "1";
|
||||||
|
|
||||||
|
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
QT_QPA_PLATFORMTHEME = "qt5ct";
|
||||||
|
|
||||||
|
GDK_SCALE = "2";
|
||||||
|
|
||||||
|
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
||||||
|
|
||||||
|
NVD_BACKEND = "direct";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
11
home-modules/nx-gcal-event.nix
Executable file → Normal file
11
home-modules/nx-gcal-event.nix
Executable file → Normal file
@@ -1,9 +1,6 @@
|
|||||||
{ config, pkgs, secrets, lib, user, ... }:
|
{ pkgs, ... }@all: with all; let
|
||||||
let
|
sep = " ";
|
||||||
sep = " ";
|
in {
|
||||||
in
|
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
|
||||||
home = {
|
home = {
|
||||||
file."${config.xdg.dataHome}/nx-gcal-event-credentials.json".text = ''
|
file."${config.xdg.dataHome}/nx-gcal-event-credentials.json".text = ''
|
||||||
{
|
{
|
||||||
@@ -26,7 +23,7 @@ lib.mkIf (user != "tv")
|
|||||||
# (pkgs.python311.withPackages (python-pkgs: [
|
# (pkgs.python311.withPackages (python-pkgs: [
|
||||||
# python-pkgs.google
|
# python-pkgs.google
|
||||||
# ]))
|
# ]))
|
||||||
(writeScriptBin "nx_gcal_event" ''
|
(writeScriptBin "nx_gcal_event" /* python */ ''
|
||||||
#!${pkgs.python3}/bin/python3
|
#!${pkgs.python3}/bin/python3
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
|
|||||||
66
home-modules/nx2site-backup.nix
Normal file
66
home-modules/nx2site-backup.nix
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "nx_backup";
|
||||||
|
runtimeInputs = [ ];
|
||||||
|
text = let
|
||||||
|
web-root = hyper.webroot;
|
||||||
|
gitea-backup = "/var/backup/gitea";
|
||||||
|
postgres-backup = "/var/backup/postgresql";
|
||||||
|
in /* bash */ ''
|
||||||
|
DIRECTORIES=(
|
||||||
|
"${web-root}"
|
||||||
|
"${gitea-backup}"
|
||||||
|
"${postgres-backup}"
|
||||||
|
)
|
||||||
|
|
||||||
|
NOW=$(date +%Y_%m_%d-%H_%M)
|
||||||
|
TEMP_BAK_DIR=$(mktemp -d)
|
||||||
|
TEMP_WORKING_DIR=$(mktemp -d)
|
||||||
|
ZIP_NAME="nx2site-backup-''${NOW}.zip"
|
||||||
|
ZIP_FILE="$TEMP_WORKING_DIR/$ZIP_NAME"
|
||||||
|
ENCRYPTED_NAME="''${ZIP_NAME}.asc"
|
||||||
|
ENCRYPTED_FILE="$TEMP_WORKING_DIR/$ENCRYPTED_NAME"
|
||||||
|
DESTINATION="/vault/$ENCRYPTED_NAME"
|
||||||
|
WEBROOT="${web-root}"
|
||||||
|
|
||||||
|
echo "Fixing Permissions of Gitea dump"
|
||||||
|
sudo chmod -R g+r "${gitea-backup}"
|
||||||
|
|
||||||
|
echo "Fixing Permissions of Postgres dump"
|
||||||
|
sudo chmod -R g+r "${postgres-backup}"
|
||||||
|
sudo chmod g+x "${postgres-backup}"
|
||||||
|
echo "Fixing Ownership of Postgres dump"
|
||||||
|
sudo chown -R postgres:postgres "${postgres-backup}"
|
||||||
|
|
||||||
|
echo "Copying files to backup to tempoary directory $TEMP_BAK_DIR ..."
|
||||||
|
for DIR in "''${DIRECTORIES[@]}"; do
|
||||||
|
rsync -aR "$DIR" "$TEMP_BAK_DIR"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create the zip file
|
||||||
|
echo "Adding files to $ZIP_NAME ..."
|
||||||
|
zip -qr "$ZIP_FILE" "$TEMP_BAK_DIR"
|
||||||
|
|
||||||
|
# Encrypt the zip file using GPG
|
||||||
|
echo "Encryping file with gpg"
|
||||||
|
gpg -e -r gpg@nx2.site -o "$ENCRYPTED_FILE" "$ZIP_FILE"
|
||||||
|
|
||||||
|
echo "Moving file to Destination $DESTINATION"
|
||||||
|
mv "$ENCRYPTED_FILE" "$DESTINATION"
|
||||||
|
|
||||||
|
echo "Updating latest-bakup path in $WEBROOT"
|
||||||
|
echo "$DESTINATION" > "$WEBROOT/latest-backup"
|
||||||
|
|
||||||
|
echo "Cleaning up tempoary files and directories"
|
||||||
|
rm -rf "$TEMP_BAK_DIR" "$TEMP_WORKING_DIR" "$ZIP_FILE"
|
||||||
|
|
||||||
|
echo "Backup and encryption complete: $DESTINATION"
|
||||||
|
|
||||||
|
echo "Space remaining:"
|
||||||
|
dysk
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
99
home-modules/nx2site.nix
Normal file
99
home-modules/nx2site.nix
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(writeShellApplication {
|
||||||
|
name = "nxmd";
|
||||||
|
text = let
|
||||||
|
ascii_size = (pkgs.writers.writePython3Bin "ascii_size" {
|
||||||
|
# libraries = with pkgs.python311Packages; [ ];
|
||||||
|
flakeIgnore = [];
|
||||||
|
} /* python */ ''
|
||||||
|
from sys import argv
|
||||||
|
|
||||||
|
with open(argv[1], "r", encoding='utf-8') as f:
|
||||||
|
raw = f.read()
|
||||||
|
|
||||||
|
sraw = raw.split("\n")
|
||||||
|
|
||||||
|
linestart = 0
|
||||||
|
lineend = 0
|
||||||
|
started = False
|
||||||
|
for linenum in range(len(sraw)):
|
||||||
|
if sraw[linenum].strip() == "```ascii":
|
||||||
|
linestart = linenum
|
||||||
|
started = True
|
||||||
|
|
||||||
|
if started and sraw[linenum].strip() == "```":
|
||||||
|
lineend = linenum
|
||||||
|
break
|
||||||
|
|
||||||
|
maxwidth = 0
|
||||||
|
for linenum in range(linestart, lineend):
|
||||||
|
linewidth = len(sraw[linenum])
|
||||||
|
if linewidth > maxwidth:
|
||||||
|
maxwidth = linewidth
|
||||||
|
|
||||||
|
print(f"Maximum length of the `ascii` code clock is {maxwidth} characters.")
|
||||||
|
|
||||||
|
px = (1 / maxwidth) * 1500
|
||||||
|
vw = (1 / maxwidth) * 150
|
||||||
|
|
||||||
|
snew = sraw
|
||||||
|
snew[3] = "aaw: " + str(round(vw, 2))
|
||||||
|
snew[4] = "aawm: " + str(round(px, 2))
|
||||||
|
|
||||||
|
new = "\n".join(snew)
|
||||||
|
|
||||||
|
with open(argv[1], "w", encoding='utf-8') as f:
|
||||||
|
f.write(new)
|
||||||
|
print(f"The resulting font sizes are {px}px (aawm) and {vw}vw (aam).")
|
||||||
|
print(f"You can now use the push operation on {argv[1]}.")
|
||||||
|
''
|
||||||
|
);
|
||||||
|
in /* bash */ ''
|
||||||
|
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
||||||
|
nxdate="$(date +'%A the ')"
|
||||||
|
nxdate="$nxdate""$ord"
|
||||||
|
nxdate="$nxdate""$(date +' of %B %Y')"
|
||||||
|
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
echo "Error: No arguments provided."
|
||||||
|
echo "Usage: $0 push <markdown-file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$1" == "push" ]]; then
|
||||||
|
if [[ ! "$2" =~ \.md$ ]]; then
|
||||||
|
echo "Error: Second argument must be a markdown (.md) file"
|
||||||
|
echo "Usage: $0 push <markdown-file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
pandoc \
|
||||||
|
"$2" \
|
||||||
|
--highlight-style=breezeDark \
|
||||||
|
--standalone \
|
||||||
|
--mathjax \
|
||||||
|
--ascii \
|
||||||
|
--template /var/nginx/assets/template.html \
|
||||||
|
--metadata pdate="$nxdate" \
|
||||||
|
--verbose --from markdown-markdown_in_html_blocks+raw_html \
|
||||||
|
-o /var/nginx/webroot/"$(basename "$2" .md )".html
|
||||||
|
|
||||||
|
echo pushed "$2"
|
||||||
|
elif [[ "$1" == "ascii-size" ]]; then
|
||||||
|
if [[ ! "$2" =~ \.md$ ]]; then
|
||||||
|
echo "Error: Second argument must be a markdown (.md) file"
|
||||||
|
echo "Usage: $0 ascii-size <markdown-file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
${ascii_size}/bin/ascii_size "$2"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: First argument must be 'push'"
|
||||||
|
echo "Usage: $0 push <markdown-file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
51
home-modules/nxgs.nix
Normal file
51
home-modules/nxgs.nix
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ghostscript
|
||||||
|
(writeShellApplication rec {
|
||||||
|
name = "nxgs";
|
||||||
|
text = /* bash */ ''
|
||||||
|
print_help() {
|
||||||
|
echo "Usage: ${name} {flip <file(s)>|rotate <file(s)>|merge <Out File Name> <files>}"
|
||||||
|
}
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
print_help; exit 1;
|
||||||
|
fi
|
||||||
|
case "$1" in
|
||||||
|
flip)
|
||||||
|
for FILE in "''${@:2}"; do
|
||||||
|
NXGSTEMP=$(mktemp)
|
||||||
|
gs -o "$NXGSTEMP" -sDEVICE=pdfwrite -c "<</Orientation 2>> setpagedevice" -f "$FILE"
|
||||||
|
mv "$NXGSTEMP" "$FILE"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
rotate)
|
||||||
|
for FILE in "''${@:2}"; do
|
||||||
|
NXGSTEMP=$(mktemp)
|
||||||
|
gs -o "$NXGSTEMP" -sDEVICE=pdfwrite -c "<</Orientation 1>> setpagedevice" -f "$FILE"
|
||||||
|
mv "$NXGSTEMP" "$FILE"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
merge)
|
||||||
|
gs -dBATCH -dNOPAUSE -q -sOUTPUTFILE="$3" -sDEVICE=pdfwrite "''${@:3}"
|
||||||
|
;;
|
||||||
|
interactive-merge)
|
||||||
|
echo -n "Enter Name of the merged file without extension: "; read -r MERGED
|
||||||
|
NXGSTEMP=$(mktemp)
|
||||||
|
echo "''${@:2}" | tr " " "\n" > "$NXGSTEMP"
|
||||||
|
$EDITOR "$NXGSTEMP"
|
||||||
|
mapfile -t FILES < "$NXGSTEMP"
|
||||||
|
gs -dBATCH -dNOPAUSE -q -sOUTPUTFILE="''${MERGED}.pdf" -sDEVICE=pdfwrite "''${FILES[@]}"
|
||||||
|
rm "$NXGSTEMP"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown command '$1'"
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{ pkgs, lib, host, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host != "NxACE")
|
|
||||||
{
|
{
|
||||||
# home.packages = with pkgs; [
|
# home.packages = with pkgs; [
|
||||||
# obs-studio
|
# obs-studio
|
||||||
|
|||||||
3
home-modules/office.nix
Executable file → Normal file
3
home-modules/office.nix
Executable file → Normal file
@@ -1,5 +1,4 @@
|
|||||||
{ config, pkgs, lib, user, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
libreoffice
|
libreoffice
|
||||||
|
|||||||
38
home-modules/ollama.nix
Normal file
38
home-modules/ollama.nix
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ollama
|
||||||
|
(writers.writePython3Bin "ooo" {
|
||||||
|
libraries = [ pkgs.python3Packages.ollama ];
|
||||||
|
flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" ];
|
||||||
|
} /* python */ ''
|
||||||
|
import sys
|
||||||
|
import ollama
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("Usage: ./ooo.py <system_message>")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
system_message = sys.argv[1]
|
||||||
|
input_text = sys.stdin.read()
|
||||||
|
try:
|
||||||
|
response = ollama.chat(model='gemma3:4b', messages=[
|
||||||
|
{
|
||||||
|
'role': 'system',
|
||||||
|
'content': system_message,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'role': 'user',
|
||||||
|
'content': input_text,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
print(response['message']['content'])
|
||||||
|
sys.exit(0)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"An error occurred: {e}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
29
home-modules/opencode.nix
Normal file
29
home-modules/opencode.nix
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
opencode
|
||||||
|
];
|
||||||
|
file.".config/opencode/opencode.json".text = let
|
||||||
|
model = "qwen2.5-coder:7b";
|
||||||
|
in builtins.toJSON {
|
||||||
|
"$schema" = "https://opencode.ai/config.json";
|
||||||
|
model = "ollama/${model}";
|
||||||
|
theme = "matrix";
|
||||||
|
provider = {
|
||||||
|
ollama = {
|
||||||
|
name = "Ollama (local)";
|
||||||
|
npm = "@ai-sdk/openai-compatible";
|
||||||
|
options = {
|
||||||
|
baseURL = "http://localhost:11434/v1";
|
||||||
|
};
|
||||||
|
models = {
|
||||||
|
"${model}" = {
|
||||||
|
tools = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
pandoc
|
pandoc
|
||||||
|
|||||||
18
home-modules/pkgs-list/desktop.nix
Normal file
18
home-modules/pkgs-list/desktop.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xdg-desktop-portal
|
||||||
|
brightnessctl
|
||||||
|
blueman
|
||||||
|
fontpreview
|
||||||
|
gtk3
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
imv
|
||||||
|
pavucontrol
|
||||||
|
playerctl
|
||||||
|
swww
|
||||||
|
wev
|
||||||
|
wl-clipboard
|
||||||
|
xclip
|
||||||
|
wlr-randr
|
||||||
|
];
|
||||||
|
}
|
||||||
20
home-modules/pkgs-list/programs.nix
Normal file
20
home-modules/pkgs-list/programs.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{ pkgs, hyper, ... }: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
chromium
|
||||||
|
gnome-clocks
|
||||||
|
gnome-calculator
|
||||||
|
gnome-characters
|
||||||
|
gnome-2048
|
||||||
|
element-desktop
|
||||||
|
qbittorrent
|
||||||
|
wl-clipboard
|
||||||
|
xfce.thunar
|
||||||
|
] ++ (if (hyper.host != "NxACE") then [
|
||||||
|
signal-desktop
|
||||||
|
unstable.code-cursor-fhs
|
||||||
|
obsidian
|
||||||
|
zoom-us
|
||||||
|
inkscape
|
||||||
|
audacity
|
||||||
|
] else []);
|
||||||
|
}
|
||||||
40
home-modules/pkgs-list/shell.nix
Normal file
40
home-modules/pkgs-list/shell.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
bat
|
||||||
|
cmake
|
||||||
|
cmatrix
|
||||||
|
dig
|
||||||
|
du-dust
|
||||||
|
dysk
|
||||||
|
exiftool
|
||||||
|
eza
|
||||||
|
ffmpeg
|
||||||
|
figlet
|
||||||
|
fzf
|
||||||
|
gh
|
||||||
|
glib
|
||||||
|
glow
|
||||||
|
gnumake
|
||||||
|
htop
|
||||||
|
imagemagick
|
||||||
|
jq
|
||||||
|
lolcat
|
||||||
|
lynx
|
||||||
|
mediainfo
|
||||||
|
neofetch
|
||||||
|
pastel
|
||||||
|
pdfgrep
|
||||||
|
pipes
|
||||||
|
pv
|
||||||
|
reflex
|
||||||
|
ripgrep
|
||||||
|
screen
|
||||||
|
speedtest-go
|
||||||
|
sssnake
|
||||||
|
systemctl-tui
|
||||||
|
tldr
|
||||||
|
w3m
|
||||||
|
which
|
||||||
|
yt-dlp
|
||||||
|
];
|
||||||
|
}
|
||||||
14
home-modules/pnx.nix
Executable file → Normal file
14
home-modules/pnx.nix
Executable file → Normal file
@@ -1,5 +1,5 @@
|
|||||||
{ config, pkgs, lib, system, user, host, allowed, secrets, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (hyper.host != "NxACE")
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.remmina
|
pkgs.remmina
|
||||||
@@ -7,7 +7,7 @@ lib.mkIf (host != "NxACE")
|
|||||||
|
|
||||||
(pkgs.writeShellScriptBin "connect_to_pnx" ''
|
(pkgs.writeShellScriptBin "connect_to_pnx" ''
|
||||||
pushd ~/.vpn/
|
pushd ~/.vpn/
|
||||||
sudo openvpn --config /home/nx2/.vpn/ljk-pnx.ovpn --auth-user-pass ~/.vpn/ljk-pnx-pass.txt #gets put there by home-manager
|
sudo openvpn --config ${hyper.home}/.vpn/ljk-pnx.ovpn --auth-user-pass ~/.vpn/ljk-pnx-pass.txt #gets put there by home-manager
|
||||||
popd
|
popd
|
||||||
'')
|
'')
|
||||||
|
|
||||||
@@ -22,9 +22,9 @@ lib.mkIf (host != "NxACE")
|
|||||||
".vpn/ljk-pnx-pass.txt".text = secrets.pnxVpn.pass;
|
".vpn/ljk-pnx-pass.txt".text = secrets.pnxVpn.pass;
|
||||||
|
|
||||||
# Remmina
|
# Remmina
|
||||||
".local/share/remmina/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina".source = ./pnx/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina;
|
".local/share/remmina/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina".source = ./assets/pnx/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina;
|
||||||
".local/share/remmina/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina".source = ./pnx/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina;
|
".local/share/remmina/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina".source = ./assets/pnx/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina;
|
||||||
".local/share/remmina/pnx_rdp_srv-phoenix2_192-168-1-101.remmina".source = ./pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina;
|
".local/share/remmina/pnx_rdp_srv-phoenix2_192-168-1-101.remmina".source = ./assets/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina;
|
||||||
".local/share/remmina/pnx_rdp_srv-remote_192-168-1-21.remmina".source = ./pnx/pnx_rdp_srv-remote_192-168-1-21.remmina;
|
".local/share/remmina/pnx_rdp_srv-remote_192-168-1-21.remmina".source = ./assets/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
12
home-modules/programming.nix
Normal file
12
home-modules/programming.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./programming/c.nix
|
||||||
|
./programming/gleam.nix
|
||||||
|
./programming/glsl.nix
|
||||||
|
./programming/go.nix
|
||||||
|
./programming/java.nix
|
||||||
|
./programming/js.nix
|
||||||
|
./programming/python.nix
|
||||||
|
./programming/rust.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
libclang
|
glibc_multi
|
||||||
glibc
|
glib
|
||||||
# clang-tools
|
gcc
|
||||||
|
# pkgsi686Linux.glibc
|
||||||
|
clang-tools
|
||||||
];
|
];
|
||||||
sessionVariables = {
|
sessionVariables = with pkgs; {
|
||||||
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib:${pkgs.glibc.dev}/include";
|
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib:${pkgs.glibc.dev}/include:${glibc_multi.dev}/include";
|
||||||
C_INCLUDE_PATH = "${pkgs.llvmPackages.libclang.lib}/lib:${pkgs.glibc.dev}/include";
|
C_INCLUDE_PATH = "${llvmPackages.libclang.lib}/lib:${pkgs.glibc.dev}/include:${glibc_multi.dev}/include";
|
||||||
|
CLANG_RESOURCE_DIR = "${llvmPackages.clang-unwrapped}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
9
home-modules/programming/gleam.nix
Normal file
9
home-modules/programming/gleam.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
lib.mkIf (hyper.host != "NxACE")
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
erlang
|
||||||
|
rebar3
|
||||||
|
gleam
|
||||||
|
];
|
||||||
|
}
|
||||||
8
home-modules/programming/glsl.nix
Normal file
8
home-modules/programming/glsl.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
glsl_analyzer
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
7
home-modules/programming/go.nix
Normal file
7
home-modules/programming/go.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
programs.go = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.go;
|
||||||
|
goPath = "${config.xdg.dataHome}/go";
|
||||||
|
};
|
||||||
|
}
|
||||||
8
home-modules/programming/java.nix
Normal file
8
home-modules/programming/java.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
jdk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
7
home-modules/programming/js.nix
Normal file
7
home-modules/programming/js.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nodejs
|
||||||
|
typescript-language-server
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ pkgs, lib, host, ... }:
|
|
||||||
lib.mkIf (host != "NxACE")
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nodejs
|
|
||||||
];
|
|
||||||
}
|
|
||||||
35
home-modules/programming/python.nix
Executable file → Normal file
35
home-modules/programming/python.nix
Executable file → Normal file
@@ -1,19 +1,22 @@
|
|||||||
{ config, pkgs, lib, user, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
let
|
|
||||||
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
|
||||||
ipython
|
|
||||||
pipdeptree
|
|
||||||
requests
|
|
||||||
google google-api-python-client google-auth-httplib2 google-auth-oauthlib
|
|
||||||
]);
|
|
||||||
in
|
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = [
|
home = let
|
||||||
python-with-packages
|
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
||||||
];
|
ipython
|
||||||
|
requests
|
||||||
home.sessionVariables = {
|
debugpy
|
||||||
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
|
black
|
||||||
|
]);
|
||||||
|
in {
|
||||||
|
packages = [
|
||||||
|
python-with-packages
|
||||||
|
] ++ (with pkgs; [
|
||||||
|
python311Packages.python-lsp-server
|
||||||
|
ruff
|
||||||
|
pyright
|
||||||
|
]);
|
||||||
|
sessionVariables = {
|
||||||
|
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
11
home-modules/programming/rust.nix
Normal file
11
home-modules/programming/rust.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
cargo
|
||||||
|
clippy
|
||||||
|
rustc
|
||||||
|
rustfmt
|
||||||
|
rust-analyzer
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
7
home-modules/qt.nix
Executable file → Normal file
7
home-modules/qt.nix
Executable file → Normal file
@@ -1,7 +1,8 @@
|
|||||||
{ pkgs, lib, user, ... }:
|
{ ... }:
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
qt = {
|
qt = {
|
||||||
platformTheme = "gtk";
|
enable = true;
|
||||||
|
platformTheme.name = "qtct";
|
||||||
|
style.name = "adwaita-dark";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
31
home-modules/rclone.nix
Normal file
31
home-modules/rclone.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
home.packages = with pkgs; [ rclone ];
|
||||||
|
sops.secrets."nx2site/copyparty/user-password/${hyper.user}".path = "%r/secrets/copyparty/user-password/${hyper.user}";
|
||||||
|
programs.rclone = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.rclone;
|
||||||
|
remotes = {
|
||||||
|
"file.${hyper.domain}" = {
|
||||||
|
config = {
|
||||||
|
type = "webdav";
|
||||||
|
vendor = "owncloud"; # copyparty
|
||||||
|
url = "https://file.${hyper.domain}/";
|
||||||
|
user = hyper.user;
|
||||||
|
pacer_min_sleep = "0.01ms";
|
||||||
|
};
|
||||||
|
mounts = {
|
||||||
|
"" = {
|
||||||
|
enable = true;
|
||||||
|
mountPoint = "${hyper.home}/file.nx2.site/";
|
||||||
|
options = {
|
||||||
|
vfs-cache-mode = "writes";
|
||||||
|
dir-cache-time = "5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
secrets.pass = "/run/user/1000/secrets/copyparty/user-password/${hyper.user}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
198
home-modules/rofi.nix
Executable file → Normal file
198
home-modules/rofi.nix
Executable file → Normal file
@@ -1,112 +1,114 @@
|
|||||||
{ config, pkgs, rice, lib, user, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
let
|
|
||||||
trdr = "${rice.lib.float-to-drune rice.transparency}";
|
|
||||||
in
|
|
||||||
lib.mkIf (user != "tv")
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
rofi-wayland
|
rofi-wayland
|
||||||
];
|
];
|
||||||
home.file.".config/rofi/config.rasi".text = ''
|
home.file = let
|
||||||
configuration {
|
trdr = "${rice.lib.float-to-drune rice.transparency}";
|
||||||
show-icons: false;
|
in with rice.color; {
|
||||||
display-drun: "";
|
".config/rofi/config.rasi".text = ''
|
||||||
disable-history: false;
|
configuration {
|
||||||
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>] [<span weight='light' size='small'><i>({exec})</i></span>]";
|
show-icons: false;
|
||||||
}
|
display-drun: "";
|
||||||
|
disable-history: false;
|
||||||
|
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>] [<span weight='light' size='small'><i>({exec})</i></span>]";
|
||||||
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font: "${rice.font.code.name2} 12";
|
font: "${rice.font.code.name} 12";
|
||||||
foreground: ${rice.color.foreground};
|
foreground: ${foreground};
|
||||||
background-color: ${rice.color.background}${trdr};
|
background-color: ${background}${trdr};
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
spacing: 0px;
|
spacing: 0px;
|
||||||
border-width: 0px;
|
border-width: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#window {
|
#window {
|
||||||
background-color: ${rice.color.background}${trdr};
|
background-color: ${background}${trdr};
|
||||||
border: ${builtins.toString rice.border-width}px;
|
border: ${builtins.toString rice.border-width}px;
|
||||||
border-radius: ${builtins.toString rice.rounding};
|
border-radius: ${builtins.toString rice.rounding};
|
||||||
border-color: ${rice.color.blue.base};
|
border-color: ${border};
|
||||||
}
|
}
|
||||||
#mainbox {
|
#mainbox {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
#message {
|
#message {
|
||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
#textbox {
|
#textbox {
|
||||||
text-color: ${rice.color.foreground};
|
text-color: ${foreground};
|
||||||
}
|
}
|
||||||
#listview {
|
#listview {
|
||||||
fixed-height: 0;
|
fixed-height: 0;
|
||||||
border: 0px;
|
border: 0px;
|
||||||
spacing: 0px ;
|
spacing: 0px ;
|
||||||
scrollbar: false;
|
scrollbar: false;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#element {
|
#element {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 0px ;
|
padding: 0px;
|
||||||
}
|
border-radius: ${if rice.rounding > 0 then "2" else "0"}px;
|
||||||
|
}
|
||||||
|
|
||||||
#element.normal.normal { background-color: ${rice.color.background}${trdr}; text-color: ${rice.color.foreground}; }
|
#element.normal.normal { background-color: ${background}${trdr}; text-color: ${accent.base}; }
|
||||||
#element.selected.normal { background-color: ${rice.color.blue.base}${trdr}; text-color: ${rice.color.background}; }
|
#element.selected.normal { background-color: ${tertiary.base}${trdr}; text-color: ${background}; }
|
||||||
#element.alternate.normal { background-color: ${rice.color.black.base}${trdr}; text-color: ${rice.color.foreground}; }
|
#element.alternate.normal { background-color: ${background}${trdr}; text-color: ${secondary.base}; }
|
||||||
|
|
||||||
|
|
||||||
#scrollbar {
|
#scrollbar {
|
||||||
width: ${builtins.toString rice.border-width}px ;
|
width: ${builtins.toString rice.border-width}px ;
|
||||||
border: 0;
|
border: 0;
|
||||||
handle-width: 8px ;
|
handle-width: 8px ;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
#sidebar {
|
#sidebar {
|
||||||
border: ${builtins.toString rice.border-width}px dash;
|
border: ${builtins.toString rice.border-width}px dash;
|
||||||
}
|
}
|
||||||
#button.selected {
|
#button.selected {
|
||||||
text-color: ${rice.color.foreground};
|
text-color: ${foreground};
|
||||||
}
|
}
|
||||||
#inputbar {
|
#inputbar {
|
||||||
spacing: 0;
|
spacing: 0;
|
||||||
text-color: ${rice.color.background};
|
text-color: ${background};
|
||||||
background-color: ${rice.color.red.base}${trdr};
|
background-color: ${accent.base}${trdr};
|
||||||
padding: 0;
|
padding: 0;
|
||||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
margine-bottom: 2px;
|
||||||
}
|
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
||||||
#prompt {
|
}
|
||||||
spacing: 0;
|
#prompt {
|
||||||
background-color: transparent;
|
spacing: 0;
|
||||||
text-color: ${rice.color.foreground};
|
background-color: transparent;
|
||||||
}
|
text-color: ${foreground};
|
||||||
#textbox-prompt-colon {
|
}
|
||||||
expand: false;
|
#textbox-prompt-colon {
|
||||||
str: ">";
|
expand: false;
|
||||||
margin: 0px 0.3em 0em 0em ;
|
str: ">";
|
||||||
text-color: ${rice.color.background};
|
margin: 0px 0.3em 0em 0em ;
|
||||||
background-color: transparent;
|
text-color: ${background};
|
||||||
}
|
background-color: transparent;
|
||||||
#case-indicator {
|
}
|
||||||
spacing: 0;
|
#case-indicator {
|
||||||
text-color: ${rice.color.foreground};
|
spacing: 0;
|
||||||
background-color: transparent;
|
text-color: ${foreground};
|
||||||
}
|
background-color: transparent;
|
||||||
#entry {
|
}
|
||||||
spacing: 0;
|
#entry {
|
||||||
text-color: ${rice.color.background};
|
spacing: 0;
|
||||||
background-color: transparent;
|
text-color: ${background};
|
||||||
placeholder: "";
|
background-color: transparent;
|
||||||
}
|
placeholder: "";
|
||||||
|
}
|
||||||
|
|
||||||
element-text, element-icon {
|
element-text, element-icon {
|
||||||
background-color: inherit;
|
background-color: inherit;
|
||||||
text-color: inherit;
|
text-color: inherit;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
6
home-modules/scanning.nix
Normal file
6
home-modules/scanning.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xsane
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,35 +1,22 @@
|
|||||||
{ pkgs, rice, user, ... }:
|
{ pkgs, ... }@all: with all;
|
||||||
let
|
let
|
||||||
my-sent = pkgs.sent.override {
|
my-sent = pkgs.sent.override {
|
||||||
patches = [
|
patches = [
|
||||||
./sent.patch
|
./sent.patch
|
||||||
# /home/${user}/.local/share/sent.patch
|
|
||||||
# (builtins.toFile "/home/${user}/
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
packages = [
|
packages = [
|
||||||
# pkgs.sent
|
|
||||||
my-sent
|
my-sent
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "nxsent";
|
||||||
|
text = with rice.color; let
|
||||||
|
in /* bash */ ''
|
||||||
|
echo "$@" | sent -c "${accent.base}" -b "${background}"
|
||||||
|
'';
|
||||||
|
})
|
||||||
];
|
];
|
||||||
file.".local/share/sent.patch".text = ''
|
|
||||||
diff --git a/config.def.h b/config.def.h
|
|
||||||
index 60eb376..64e7f05 100644
|
|
||||||
--- a/config.def.h
|
|
||||||
+++ b/config.def.h
|
|
||||||
@@ -9,8 +9,8 @@ static char *fontfallbacks[] = {
|
|
||||||
#define FONTSZ(x) ((int)(10.0 * powf(1.1288, (x)))) /* x in [0, NUMFONTSCALES-1] */
|
|
||||||
|
|
||||||
static const char *colors[] = {
|
|
||||||
- "#000000", /* foreground color */
|
|
||||||
- "#FFFFFF", /* background color */
|
|
||||||
+ "${rice.color.foreground}", /* foreground color */
|
|
||||||
+ "${rice.color.background}", /* background color */
|
|
||||||
};
|
|
||||||
|
|
||||||
static const float linespacing = 1.4;
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,7 @@
|
|||||||
{ user, inputs, ... }:
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
imports = [ inputs.sops-nix.homeManagerModules.sops ];
|
||||||
imports = [
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
|
||||||
];
|
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
# age.keyFile = "/home/${user}/.config/sops/age/keys.txt";
|
age.keyFile = "${hyper.home}/vault/age/sopsnix-${hyper.host}-home.key";
|
||||||
gnupg.home = "/home/${user}/.gnupg";
|
|
||||||
defaultSopsFile = ../sops-secrets.yaml;
|
defaultSopsFile = ../sops-secrets.yaml;
|
||||||
|
|
||||||
# %r is $XDG_RUNTIME_DIR
|
|
||||||
secrets = {
|
|
||||||
"example" = {
|
|
||||||
path = "%r/secrets/example";
|
|
||||||
};
|
|
||||||
# "sops-age-private-key" = { # Bootstrapping doens't work
|
|
||||||
# mode = "0400";
|
|
||||||
# path = "/home/${user}/.config/sops/age/keys.txt";
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
56
home-modules/spotify.nix
Normal file
56
home-modules/spotify.nix
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
unstable.spotify
|
||||||
|
];
|
||||||
|
services.librespot = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.librespot;
|
||||||
|
};
|
||||||
|
sops.secrets."spotify/spotiy-player-clinet-id" = { path = "%r/secrets/spotify/spotiy-player-clinet-id"; };
|
||||||
|
programs.spotify-player = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.spotify-player;
|
||||||
|
settings = {
|
||||||
|
border_type = "Rounded";
|
||||||
|
client_id_command = "cat $XDG_RUNTIME_DIR/secrets/spotify/spotiy-player-clinet-id";
|
||||||
|
copy_command.command = "wl-copy";
|
||||||
|
cover_img_length = 20;
|
||||||
|
cover_img_scale = 1; # if this is not 1 it doesnt fit in the box (for me)
|
||||||
|
cover_img_width = 9; # this ratio depends on your terminal font
|
||||||
|
device.normalization = true;
|
||||||
|
genre_num = 32; # all of them
|
||||||
|
liked_icon = "";
|
||||||
|
name = "spotify-player-${hyper.host}";
|
||||||
|
pause_icon = "";
|
||||||
|
playback_window_position = "Bottom";
|
||||||
|
play_icon = "";
|
||||||
|
progress_bar_position = "Right"; # "Bottom"
|
||||||
|
progress_bar_type = "Rectangle"; # "Line"
|
||||||
|
theme = "${hyper.user}";
|
||||||
|
};
|
||||||
|
themes = [{
|
||||||
|
name = "${hyper.user}";
|
||||||
|
component_style = with rice.color; {
|
||||||
|
block_title = { fg = accent.bright; };
|
||||||
|
border = { fg = border; };
|
||||||
|
current_playing = { fg = special.base; bg = special.darker; modifiers = ["Italic"]; };
|
||||||
|
like = { fg = positive.base; };
|
||||||
|
lyrics_played = { fg = subtle.base; };
|
||||||
|
lyrics_playing = { fg = special.base; };
|
||||||
|
page_desc = { fg = secondary.base; };
|
||||||
|
playback_album = { fg = secondary.base; };
|
||||||
|
playback_artists = { fg = secondary.base; };
|
||||||
|
playback_genres = { fg = subtle.base; };
|
||||||
|
playback_metadata = { fg = accent.base; bg = background; };
|
||||||
|
playback_progress_bar = { fg = accent.brighter; bg = accent.dark; modifiers = ["Bold"]; };
|
||||||
|
playback_status = { fg = accent.bright; };
|
||||||
|
playback_track = { fg = accent.bright; modifiers = ["Bold"]; };
|
||||||
|
secondary_row = { fg = secondary.base; };
|
||||||
|
selection = { bg = accent.dark; };
|
||||||
|
table_header = { fg = tertiary.bright; };
|
||||||
|
# playback_progress_bar_unfilled (Specific to progress_bar_type as Line) = "";
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user