Compare commits
419 Commits
ed18e8bd51
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60fab5ff9a | ||
|
|
1a662d9acf | ||
|
|
6b7f4459fc | ||
|
|
7f1e43699b | ||
|
|
1acf1773d9 | ||
|
|
e97e9b62b0 | ||
|
|
5211c953a3 | ||
|
|
e054ee5be4 | ||
|
|
aefa5a48bb | ||
|
|
be40aca44b | ||
|
|
8228bd1f72 | ||
|
|
63af2c4f4e | ||
|
|
6a5863ee52 | ||
|
|
c28c40c972 | ||
|
|
e0bd80722c | ||
|
|
6157666be9 | ||
|
|
07782f60d1 | ||
|
|
2fbf06da7a | ||
|
|
47cc5c881c | ||
|
|
f757727858 | ||
|
|
bf074967e5 | ||
|
|
674c83d3ae | ||
|
|
ee46aca691 | ||
|
|
fa89fe57b0 | ||
|
|
f7306130ed | ||
|
|
dc3f30d94c | ||
|
|
f7fb8121fd | ||
|
|
f4ae5eae27 | ||
|
|
5fe9578d72 | ||
|
|
fc9122be42 | ||
|
|
6ab89d09b7 | ||
|
|
b32a79bdac | ||
|
|
fd5e639b17 | ||
|
|
419bd8fc12 | ||
|
|
1b18252813 | ||
|
|
245fdbb60f | ||
|
|
6ab13007de | ||
|
|
789ed570cf | ||
|
|
901839dcd1 | ||
|
|
ae9ae15f3a | ||
|
|
b17f7d95b6 | ||
|
|
b3a0e2914b | ||
|
|
9ab9034a02 | ||
|
|
b2a322b269 | ||
|
|
27d47179ef | ||
|
|
ea1fd6a81f | ||
|
|
2ae3ec3b9b | ||
|
|
9ccabedbb2 | ||
|
|
5cc13c9b9a | ||
|
|
ea608bd665 | ||
|
|
e6fc668413 | ||
|
|
12714021b6 | ||
|
|
23b1e6f8cc | ||
|
|
375d42d0ed | ||
|
|
8e5da6e966 | ||
|
|
62d7d91dc0 | ||
|
|
4a977f7076 | ||
|
|
3f7877d5b8 | ||
|
|
d7a1f55a34 | ||
|
|
a2f5e9828c | ||
|
|
fa98f9eb2e | ||
|
|
2ba41d37fb | ||
|
|
ba1a5a5c10 | ||
|
|
ba1bce57c5 | ||
|
|
4951ee898d | ||
|
|
2e02069629 | ||
|
|
9108c8689a | ||
|
|
b6853648d6 | ||
|
|
f77d0d2301 | ||
|
|
bfa820a82a | ||
|
|
113931d088 | ||
|
|
1651f7debf | ||
|
|
bc0d1eed79 | ||
|
|
16ca72ff24 | ||
|
|
b977aea25f | ||
|
|
8745f42f80 | ||
|
|
f3e4b617ff | ||
|
|
014a29a7e0 | ||
|
|
1e2a0fd591 | ||
|
|
5a24fc9fda | ||
|
|
958b1d71ad | ||
|
|
fe70e6c1e3 | ||
|
|
e7b4b5fc3a | ||
|
|
5fafc9e8a3 | ||
|
|
78fb91c311 | ||
|
|
bf67e7d396 | ||
|
|
89428b966b | ||
|
|
809ce39ad3 | ||
|
|
bcd04b836a | ||
|
|
1d23337ed1 | ||
|
|
70c8dfd953 | ||
|
|
ce690c3cad | ||
|
|
18719bdc2e | ||
|
|
68a6a18fcf | ||
|
|
7c6907f077 | ||
|
|
db6dc48ebf | ||
|
|
ae6b0e483f | ||
|
|
f54754c792 | ||
|
|
30a3308b6b | ||
|
|
39c03c6c62 | ||
|
|
ee28eadb3b | ||
|
|
edbc5c0393 | ||
|
|
68ec133681 | ||
|
|
87292666b1 | ||
|
|
7d1ca1d174 | ||
|
|
3fcf02646a | ||
|
|
485a554e10 | ||
|
|
f02686b687 | ||
|
|
070695fa4d | ||
|
|
951d03e0b7 | ||
|
|
0dd8e27fcb | ||
|
|
66ef93c612 | ||
|
|
627604d3f7 | ||
|
|
2598b7562f | ||
|
|
b1c16c99ec | ||
|
|
47cce625be | ||
|
|
9a2eeb694e | ||
|
|
3b84087084 | ||
|
|
ccff2e66bb | ||
|
|
cad9c3e5f5 | ||
|
|
b913c05267 | ||
|
|
21a1efa978 | ||
|
|
f9ea18fd81 | ||
|
|
def172c79d | ||
|
|
ec2ea43523 | ||
|
|
03e3f877a6 | ||
|
|
28cd7a1ac3 | ||
|
|
03a53b006b | ||
|
|
2bac83ec14 | ||
|
|
0953c65a9f | ||
|
|
02231f2693 | ||
|
|
48f246429b | ||
|
|
bff8042d85 | ||
|
|
040f988530 | ||
|
|
3be3a7a80a | ||
|
|
8a5604e87b | ||
|
|
336eadc732 | ||
|
|
511d46f527 | ||
|
|
42685cce35 | ||
|
|
bb754e99f7 | ||
|
|
4f57d39171 | ||
|
|
4ed036b5d0 | ||
|
|
6d8a7e7194 | ||
|
|
f2dae2ee81 | ||
|
|
b23cc9ce7c | ||
|
|
f25ff57b5b | ||
|
|
1403c57356 | ||
|
|
fe2a7569c3 | ||
|
|
66977c7f04 | ||
|
|
879239cfd0 | ||
|
|
9ce989abe1 | ||
|
|
eca9490eea | ||
|
|
c41e9f4f17 | ||
|
|
adc912624d | ||
|
|
4bddec49af | ||
|
|
b89f7960df | ||
|
|
6c5e125452 | ||
|
|
59bde2cc37 | ||
|
|
4d2f244d4b | ||
|
|
f03e92a7ce | ||
|
|
1e20d645eb | ||
|
|
edda49ee66 | ||
|
|
5d65da4fca | ||
|
|
9914f62871 | ||
|
|
ff91701431 | ||
|
|
f49d802bc2 | ||
|
|
0f83584124 | ||
|
|
744688e2a5 | ||
|
|
47b0e9125a | ||
|
|
8cda4ed98a | ||
|
|
8683e608e6 | ||
|
|
3603fbdf41 | ||
|
|
43c8782c6c | ||
|
|
fe89a049bd | ||
|
|
5bd5c97e4e | ||
|
|
1b8155c9c9 | ||
|
|
79b2493f23 | ||
|
|
3a6e1ce3c6 | ||
|
|
c621faf09a | ||
|
|
51d7589975 | ||
|
|
4761258eed | ||
|
|
487f3ff6f0 | ||
|
|
f1f591368d | ||
|
|
ed74ebac4e | ||
|
|
bfae6a5800 | ||
|
|
1115e3e4a4 | ||
|
|
3b48f4d623 | ||
|
|
aa62213ef6 | ||
|
|
28f3fc54c9 | ||
|
|
ea753c0ebb | ||
|
|
79851fa223 | ||
|
|
f35d0efada | ||
|
|
c39663adee | ||
|
|
8057a6f2ee | ||
|
|
e73b7333fc | ||
|
|
fcfc125373 | ||
|
|
3418cfd8f3 | ||
|
|
68ac093e4a | ||
|
|
8f7d685a8b | ||
|
|
851846197d | ||
|
|
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 |
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:
|
||||
- &users:
|
||||
- &nx2backup age1sgzc2jh8af30a3cp6g7l4hyzusqrn3x3xw7frghc4akvjaplwa3stfemxc
|
||||
- &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634
|
||||
- &nx2_key_13 age1x2lpsennl74n0f5jl60uv2ffjcuqymzf9ap3frlz2quyv0x3hq3scnewwq
|
||||
- &xps-home age1pn4utvwpqdrswn0xurfdexn5nks9cd06jxzwg3m3m6za25ap4vxqxd0p3k
|
||||
- &ace-home age1ur5zpr325cv7w0yn49azz9f48xsxd73w2sytt22yrnw5qs9r34nsv3vl05
|
||||
- &north-home age1jr72q042ccgxpdgdaaev0arzc0vh3r02etv2tzhhsejl0mfaxs3q9hhlaz
|
||||
- &hosts:
|
||||
- &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e
|
||||
- &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6
|
||||
@@ -13,6 +16,9 @@ creation_rules:
|
||||
- *north
|
||||
- *xps
|
||||
- *ace
|
||||
- *nx2backup
|
||||
- *nx2_key_13
|
||||
- *xps-home
|
||||
- *ace-home
|
||||
- *north-home
|
||||
pgp:
|
||||
- *nx2
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# ❄️ NixOS Dotfiles
|
||||
|
||||

|
||||

|
||||
|
||||
## Information
|
||||
|
||||
|
||||
@@ -1,157 +1,84 @@
|
||||
{ pkgs, hyper, inputs, ... }:
|
||||
{
|
||||
imports = ([
|
||||
{ pkgs, ... }@all: with all; {
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
./system-modules/adb.nix
|
||||
./system-modules/auto-mount.nix
|
||||
./system-modules/calendar.nix
|
||||
./system-modules/hardware-configuration.nix
|
||||
./system-modules/fuse.nix
|
||||
./system-modules/games.nix
|
||||
./system-modules/nvidia.nix
|
||||
./system-modules/users.nix
|
||||
./system-modules/sound.nix
|
||||
./system-modules/fonts.nix
|
||||
./system-modules/boot.nix
|
||||
./system-modules/gc.nix
|
||||
./system-modules/tz.nix
|
||||
./system-modules/bluetooth.nix
|
||||
./system-modules/boot.nix
|
||||
./system-modules/cache.nix
|
||||
./system-modules/calendar.nix
|
||||
./system-modules/dm.nix
|
||||
./system-modules/davfs.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/hsmw.nix
|
||||
./system-modules/kanata.nix
|
||||
./system-modules/terminal.nix
|
||||
./system-modules/kodi.nix
|
||||
./system-modules/networking.nix
|
||||
./system-modules/nixd.nix
|
||||
./system-modules/nix.nix
|
||||
./system-modules/nvidia.nix
|
||||
./system-modules/obs.nix
|
||||
./system-modules/ollama.nix
|
||||
./system-modules/qmk.nix
|
||||
./system-modules/scanning.nix
|
||||
./system-modules/sops.nix
|
||||
./system-modules/sound.nix
|
||||
./system-modules/sshd.nix
|
||||
./system-modules/input.nix
|
||||
./system-modules/syncthing.nix
|
||||
./system-modules/tuda.nix
|
||||
./system-modules/gui.nix
|
||||
./system-modules/editor.nix
|
||||
./system-modules/printing.nix
|
||||
./system-modules/security.nix
|
||||
./system-modules/users.nix
|
||||
./system-modules/virtualisation.nix
|
||||
./system-modules/ydotool.nix
|
||||
]) ++ (if (hyper.host == "NxACE") then [
|
||||
|
||||
./system-modules/simple-postgres.nix
|
||||
] ++ (if hyper.isServer then [
|
||||
./system-modules/stay-up.nix
|
||||
|
||||
./system-modules/nx2site.nix
|
||||
./system-modules/hugo.nix
|
||||
./system-modules/postgres.nix
|
||||
./system-modules/nx2site/proxy.nix
|
||||
# ./system-modules/nx2site/smtp.nix
|
||||
# ./system-modules/nx2site/imap.nix
|
||||
# ./system-modules/nx2site/vmail.nix
|
||||
./system-modules/nx2site/maddy.nix
|
||||
|
||||
./system-modules/nx2site/audiobookshelf.nix
|
||||
# ./system-modules/nx2site/dyn_dns.nix
|
||||
# ./system-modules/nx2site/baikal.nix
|
||||
./system-modules/nx2site/nextcloud.nix
|
||||
./system-modules/nx2site/nxcaldav.nix
|
||||
./system-modules/nx2site/copyparty.nix
|
||||
./system-modules/nx2site/gitea.nix
|
||||
./system-modules/nx2site/open-web-calendar.nix
|
||||
./system-modules/nx2site/radicale.nix
|
||||
# ./system-modules/nx2site/nextcloud.nix
|
||||
./system-modules/nx2site/vaultwarden.nix
|
||||
./system-modules/nx2site/paperless.nix
|
||||
./system-modules/calendar/publish.nix
|
||||
./system-modules/calendar/lec.nix
|
||||
# ./system-modules/calendar/lr.nix
|
||||
] else [ ]);
|
||||
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
|
||||
|
||||
./system-modules/calendar-publish.nix
|
||||
./system-modules/calendar-lec.nix
|
||||
./system-modules/calendar-lr.nix
|
||||
./system-modules/calendar-dicos.nix
|
||||
] else []);
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console.font = "Lat2-Terminus16";
|
||||
console.keyMap = "de";
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
xkb = {
|
||||
layout = "de";
|
||||
options = "eurosign:e,caps:escape";
|
||||
};
|
||||
# lightdm in lightdm.nix
|
||||
};
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
# rtkit is optional but recommended
|
||||
security.rtkit.enable = true;
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
services.libinput.enable = true;
|
||||
hardware.uinput.enable = true;
|
||||
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
package = pkgs.bluez5-experimental;
|
||||
settings.Policy.AutoEnable = "true";
|
||||
settings.General.Enable = "Source,Sink,Media,Socket";
|
||||
};
|
||||
services.blueman.enable = true;
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; ([
|
||||
git
|
||||
git-crypt
|
||||
lazygit # home-manager module is bugged
|
||||
wget
|
||||
curlHTTP3
|
||||
zip
|
||||
unzip
|
||||
p7zip
|
||||
unar
|
||||
nano
|
||||
htop
|
||||
direnv
|
||||
openssl
|
||||
blueman
|
||||
dmidecode
|
||||
file
|
||||
parallel
|
||||
# ]) ++ (with pkgs-unstable; [
|
||||
# # sendme
|
||||
]);
|
||||
|
||||
environment.variables = {
|
||||
EDITOR = "hx";
|
||||
VISUAL = "hx";
|
||||
};
|
||||
|
||||
|
||||
programs.hyprland = {
|
||||
# config is done with home-manager
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
systemd.extraConfig = "DefaultLimitNOFILE=2048";
|
||||
boot.tmp.useTmpfs = false;
|
||||
|
||||
system.stateVersion = "25.05";
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
nix = {
|
||||
settings = {
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
substitute = true;
|
||||
substituters = [
|
||||
"https://yazi.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||
];
|
||||
};
|
||||
};
|
||||
system.stateVersion = hyper.main-pkgs-version;
|
||||
|
||||
programs.nix-ld.enable = true;
|
||||
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
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -1,43 +1,31 @@
|
||||
pkgs: rec {
|
||||
predicate = pkg: (
|
||||
builtins.elem (pkgs.lib.getName pkg) unfree.packages || builtins.all (
|
||||
license: license.free || builtins.elem license.shortName unfree.licenses
|
||||
) (if builtins.isList pkg.meta.license then pkg.meta.license else [ pkg.meta.license ])
|
||||
);
|
||||
unfree = {
|
||||
packages = [
|
||||
"antigravity"
|
||||
"cursor"
|
||||
"discord"
|
||||
"obsidian"
|
||||
"spotify"
|
||||
"steam"
|
||||
"steam-unwrapped"
|
||||
"vscode-extension-mhutchie-git-graph"
|
||||
"zoom"
|
||||
"zoom-us"
|
||||
|
||||
{
|
||||
unfree = [
|
||||
"discord"
|
||||
"spotify"
|
||||
"obsidian"
|
||||
"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"
|
||||
];
|
||||
|
||||
inecure = [
|
||||
# "electron-25.9.0"
|
||||
];
|
||||
"nvidia-x11"
|
||||
"nvidia-settings"
|
||||
];
|
||||
licenses = [
|
||||
"CUDA EULA"
|
||||
"cuDNN EULA"
|
||||
"cuTENSOR EULA"
|
||||
"NVidia OptiX EULA"
|
||||
];
|
||||
};
|
||||
# insecure = [ ];
|
||||
}
|
||||
|
||||
@@ -1,13 +1,54 @@
|
||||
{
|
||||
"base": {
|
||||
"foreground": "#dbd2f8",
|
||||
"background": "#0f062c"
|
||||
"NxXPS": {
|
||||
"base": {
|
||||
"foreground": "#fccee9",
|
||||
"background": "#18010e"
|
||||
},
|
||||
"to_alter": {
|
||||
"accent": "#f43da7",
|
||||
"secondary": "#3269ff",
|
||||
"tertiary": "#d744ed",
|
||||
"special": "#3cf48a",
|
||||
"weird": "#f4c63c"
|
||||
}
|
||||
},
|
||||
"to_alter": {
|
||||
"accent": "#724ce5",
|
||||
"secondary": "#ff3271",
|
||||
"tertiary": "#ffc932",
|
||||
"special": "#bfe54b",
|
||||
"weird": "#e54b8b"
|
||||
"NxACE": {
|
||||
"base": {
|
||||
"foreground": "#dddddd",
|
||||
"background": "#111111"
|
||||
},
|
||||
"to_alter": {
|
||||
"accent": "#ff6666",
|
||||
"secondary": "#ff8866",
|
||||
"tertiary": "#ff6688",
|
||||
"special": "#8888ff",
|
||||
"weird": "#88ff66"
|
||||
}
|
||||
},
|
||||
"NxNORTH": {
|
||||
"base": {
|
||||
"foreground": "#dbe7ef",
|
||||
"background": "#070d11"
|
||||
},
|
||||
"to_alter": {
|
||||
"accent": "#72a2bf",
|
||||
"secondary": "#fc3535",
|
||||
"tertiary": "#83ae8a",
|
||||
"special": "#bf8f71",
|
||||
"weird": "#a871bf"
|
||||
}
|
||||
},
|
||||
"NxDCS": {
|
||||
"base": {
|
||||
"foreground": "#ddcccc",
|
||||
"background": "#080707"
|
||||
},
|
||||
"to_alter": {
|
||||
"accent": "#d23f36",
|
||||
"secondary": "#355273",
|
||||
"tertiary": "#1b789b",
|
||||
"special": "#66dd66",
|
||||
"weird": "#dddd66"
|
||||
}
|
||||
}
|
||||
}
|
||||
46
flake-modules/hyper.nix
Normal file
46
flake-modules/hyper.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
let hyper-base = rec {
|
||||
host = "BaseHost";
|
||||
system = "x86_64-linux";
|
||||
user = "nx2";
|
||||
domain = "nx2.site";
|
||||
home = "/home/${user}";
|
||||
webroot = "/var/lib/hugo/nx2site/public";
|
||||
main-pkgs-version = "25.11";
|
||||
isServer = false;
|
||||
isMobile = false;
|
||||
isPersonal = false;
|
||||
isNOD = false;
|
||||
isWorkstation = false;
|
||||
nvidia = {
|
||||
enable = false;
|
||||
prime = false;
|
||||
};
|
||||
}; in host: if host == "NxNORTH" then hyper-base // { inherit host;
|
||||
nvidia = {
|
||||
enable = true;
|
||||
prime = false;
|
||||
};
|
||||
isPersonal = true;
|
||||
isWorkstation = true;
|
||||
} else if host == "NxXPS" then hyper-base // { inherit host;
|
||||
nvidia = {
|
||||
enable = true;
|
||||
prime = true;
|
||||
};
|
||||
isMobile = true;
|
||||
isPersonal = true;
|
||||
isWorkstation = true;
|
||||
} else if host == "NxACE" then hyper-base // { inherit host;
|
||||
isServer = true;
|
||||
} else if host == "NxDCS" then hyper-base // { inherit host;
|
||||
isWorkstation = true;
|
||||
isMobile = true;
|
||||
} else if host == "NxS23U" then hyper-base // { inherit host;
|
||||
isMobile = true;
|
||||
isNOD = true;
|
||||
isPersonal = true;
|
||||
main-pkgs-version = "24.05";
|
||||
system = "aarch64-linux";
|
||||
user = "nix-on-droid";
|
||||
home = "/data/data/com.termux.nix/files/home";
|
||||
} else assert false "unkown host"; {}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
enable = false;
|
||||
prime = false;
|
||||
}
|
||||
43
flake-modules/nxlib/ricelib.nix
Normal file
43
flake-modules/nxlib/ricelib.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
lib: let
|
||||
# takes in "ff0044" (no hash!) and returns { r = "ff", g = "00", b = "44" }
|
||||
slice-hex = hex: with builtins; { r = substring 0 2 hex; g = substring 2 2 hex; b = substring 4 2 hex; };
|
||||
|
||||
# takes in "44" and returns 64
|
||||
drune-to-255 = drune: with builtins; (rune-to-num (substring 0 1 drune)) * 16 + (rune-to-num (substring 1 1 drune));
|
||||
num-to-drune = num: "${num-to-rune (num / 16)}${num-to-rune (num - ((num / 16) * 16))}";
|
||||
|
||||
# takes in "D" and returns 13
|
||||
# inspiration from https://github.com/bertof/nix-rice
|
||||
rune-to-num = rune: let
|
||||
dict = { "0" = 0; "1" = 1; "2" = 2; "3" = 3; "4" = 4; "5" = 5; "6" = 6; "7" = 7; "8" = 8; "9" = 9; "A" = 10; "B" = 11; "C" = 12; "D" = 13; "E" = 14; "F" = 15; };
|
||||
in assert(builtins.hasAttr (lib.strings.toUpper rune) dict); builtins.getAttr (lib.strings.toUpper rune) dict;
|
||||
|
||||
# takes in 15 and returns "F"
|
||||
num-to-rune = num: let
|
||||
num-string = builtins.toString num;
|
||||
dict = { "0" = "0"; "1" = "1"; "2" = "2"; "3" = "3"; "4" = "4"; "5" = "5"; "6" = "6"; "7" = "7"; "8" = "8"; "9" = "9"; "10" = "A"; "11" = "B"; "12" = "C"; "13" = "D"; "14" = "E"; "15" = "F"; };
|
||||
in assert(builtins.hasAttr num-string dict); builtins.getAttr num-string dict;
|
||||
|
||||
# Keeps num between 0 and 255
|
||||
# Make sure to pass in an int not a float
|
||||
cap-255 = num: (if (num>255) then 255 else if (num<0) then 0 else num);
|
||||
nohash = hex: with builtins; assert((stringLength hex) == 7); substring 1 6 hex;
|
||||
in {
|
||||
## USEFUL FUNCTIONS
|
||||
# takes in a string like "#ff0044" and returns "ff0044" symbol
|
||||
inherit nohash;
|
||||
|
||||
# This takes in something like "#ff0044" and returns "255,0,64"
|
||||
hex-to-rgb-comma-string = hex: with (slice-hex (nohash hex)); with builtins; assert(isString hex); "${toString (drune-to-255 r)},${toString (drune-to-255 g)},${toString (drune-to-255 b)}";
|
||||
|
||||
# This is useful if you have a float (like a transparency value) and want a drune representation of it
|
||||
# So 0.0 -> "00" and 1.0 -> "FF"
|
||||
float-to-drune = f: with builtins; assert(isFloat f); "${num-to-rune (floor((255*f) / 16))}${num-to-rune (floor(255*f) - (floor((255*f) / 16) * 16))}";
|
||||
|
||||
# Takes in hex and a float. 0.5 is +50% brightness and (-0.5) is -50% brightness.
|
||||
# So "#ff0044": 0.3 -> "#ff0055"
|
||||
alter-luminace-hex = hex: amount: let
|
||||
color-num = with (slice-hex (nohash hex)); { r = drune-to-255 r; g = drune-to-255 g; b = drune-to-255 b; };
|
||||
alter = num: (num-to-drune (cap-255 (builtins.floor ((125 * amount) + (num * (1+amount))) )));
|
||||
in with color-num; "#${alter r}${alter g}${alter b}";
|
||||
}
|
||||
29
flake-modules/pkgs.nix
Normal file
29
flake-modules/pkgs.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
inputs: simple-pkgs: hyper: let
|
||||
args = {
|
||||
system = hyper.system;
|
||||
config = {
|
||||
allowUnfreePredicate = (import ./allowed.nix simple-pkgs).predicate;
|
||||
cudaSupport = hyper.nvidia.enable;
|
||||
cudaForwardCompat = hyper.nvidia.enable;
|
||||
};
|
||||
};
|
||||
overlays = [(final: prev: {
|
||||
unstable = import inputs.nixpkgs-unstable args;
|
||||
latest = import inputs.nixpkgs-latest args;
|
||||
pkgs-version = hyper.main-pkgs-version;
|
||||
})] ++ (if hyper.isServer then [
|
||||
inputs.copyparty.overlays.default
|
||||
] else []);
|
||||
in if !hyper.isNOD then
|
||||
(import inputs.nixpkgs (args // { inherit overlays; }))
|
||||
else (
|
||||
(import inputs.nixpkgs (args // { inherit overlays; })) // # normal as base
|
||||
(import inputs.nixpkgs24 (args // { # overwrite with old versions
|
||||
overlays = [(final: prev: {
|
||||
pkgs-version = "24.05";
|
||||
})];
|
||||
}))
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,33 @@
|
||||
pkgs: rec {
|
||||
pkgs: hyper: rec {
|
||||
|
||||
lib = import ../nxlib/ricelib.nix pkgs.lib;
|
||||
lib = import ./nxlib/ricelib.nix pkgs.lib;
|
||||
|
||||
transparency = 0.8;
|
||||
rounding = 3;
|
||||
gap-size = 5;
|
||||
border-width = 2;
|
||||
color = let
|
||||
dark = (-0.5);
|
||||
bright = (0.5);
|
||||
alter-set = let f = 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 = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
|
||||
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 = "#111111"; # "#111111" "#001100";
|
||||
black = "#040404"; # "#111111" "#001100";
|
||||
white = "#dddddd"; # "#dddddd" "#66dd66";
|
||||
blue = "#4444dd"; # "#3333dd" "#003300";
|
||||
cyan = "#44dddd"; # "#11dddd" "#00dd55";
|
||||
@@ -22,17 +36,13 @@ pkgs: rec {
|
||||
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;
|
||||
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json))."${hyper.host}".to_alter;
|
||||
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json))."${hyper.host}".base;
|
||||
fcolor = facolor // fbcolor;
|
||||
xcolor = with ccolor; with fcolor; {
|
||||
background = "#000000";
|
||||
# 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;
|
||||
@@ -40,17 +50,14 @@ pkgs: rec {
|
||||
};
|
||||
in ccolor // fcolor // xcolor;
|
||||
font = {
|
||||
code = {
|
||||
code = rec {
|
||||
name = "JetBrainsMono Nerd Font";
|
||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||
# name = "CascadiaCove-NF";
|
||||
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
|
||||
regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf";
|
||||
};
|
||||
base = {
|
||||
# name = "NewComputerModern08";
|
||||
# package = pkgs.newcomputermodern;
|
||||
name = "Atkinson Hyperlegible";
|
||||
package = pkgs.atkinson-hyperlegible;
|
||||
package = pkgs.atkinson-hyperlegible-next;
|
||||
};
|
||||
};
|
||||
cursor = {
|
||||
|
||||
900
flake.lock
generated
900
flake.lock
generated
File diff suppressed because it is too large
Load Diff
149
flake.nix
149
flake.nix
@@ -2,111 +2,90 @@
|
||||
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
||||
|
||||
inputs = {
|
||||
nixpkgs = { url = "nixpkgs/nixos-25.05"; };
|
||||
nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; };
|
||||
nixpkgs-latest = { url = "github:nixos/nixpkgs?ref=master"; };
|
||||
nixpkgs.url = "nixpkgs/nixos-25.11";
|
||||
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
||||
nixpkgs-latest.url = "github:nixos/nixpkgs?ref=master";
|
||||
nixpkgs24.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||
|
||||
home-manager = { url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
home-manager24 = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs24"; };
|
||||
|
||||
nixos-wsl = { url = "github:nix-community/NixOS-WSL/main"; };
|
||||
nix-on-droid = { url = "github:nix-community/nix-on-droid/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
nix-on-droid = {
|
||||
url = "github:nix-community/nix-on-droid/release-24.05";
|
||||
inputs = { nixpkgs.follows = "nixpkgs24"; home-manager.follows = "home-manager24"; };
|
||||
};
|
||||
|
||||
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; };
|
||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||
|
||||
hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; };
|
||||
hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
|
||||
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
|
||||
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
||||
|
||||
yazi = { url = "github:sxyazi/yazi"; };
|
||||
yazi-plugins = { url = "github:lordkekz/nix-yazi-plugins"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
zen-browser = { url = "github:MarceColl/zen-browser-flake"; };
|
||||
ghostty = { url = "github:ghostty-org/ghostty"; };
|
||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||
yazi.url = "github:sxyazi/yazi";
|
||||
copyparty.url = "github:9001/copyparty";
|
||||
};
|
||||
|
||||
outputs = { self, ... }@inputs: with inputs; let
|
||||
|
||||
outputs = { ... }@inputs: with inputs; let
|
||||
system = "x86_64-linux";
|
||||
config = { allowUnfree = true; allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
|
||||
|
||||
hyper-base = rec {
|
||||
inherit system;
|
||||
user = "nx2";
|
||||
domain = "nx2.site";
|
||||
home = "/home/${user}/";
|
||||
};
|
||||
|
||||
pkgs = import nixpkgs { inherit system config; } // {
|
||||
unstable = import nixpkgs-unstable { inherit system config; };
|
||||
latest = import nixpkgs-latest { inherit system config; };
|
||||
version = "25.05";
|
||||
};
|
||||
|
||||
nvidia-base = import ./flake-modules/nvidia.nix;
|
||||
secrets = import ./git-crypt/secrets.nix;
|
||||
rice = import ./flake-modules/rice.nix pkgs;
|
||||
|
||||
simple-pkgs = import nixpkgs { inherit system; };
|
||||
get-pkgs = import ./flake-modules/pkgs.nix inputs simple-pkgs;
|
||||
get-hyper = import ./flake-modules/hyper.nix;
|
||||
secrets = import ./git-crypt/secrets.nix;
|
||||
get-rice = import ./flake-modules/rice.nix simple-pkgs;
|
||||
in {
|
||||
nixosConfigurations = let
|
||||
make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
make-nixos-system = host: let
|
||||
hyper = get-hyper host;
|
||||
rice = get-rice hyper;
|
||||
in nixpkgs.lib.nixosSystem {
|
||||
pkgs = get-pkgs hyper;
|
||||
modules = [ ./configuration.nix ];
|
||||
specialArgs = let
|
||||
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
|
||||
in { inherit pkgs inputs hyper rice secrets; };
|
||||
specialArgs = { inherit inputs hyper rice secrets; };
|
||||
};
|
||||
make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [ ./nixos-wsl.nix ];
|
||||
specialArgs = let
|
||||
hyper = hyper-base // { inherit host; };
|
||||
in { inherit pkgs inputs hyper rice; };
|
||||
};
|
||||
make-nixondroid-system = host: nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [ ./nix-on-droid.nix ];
|
||||
specialArgs = let
|
||||
pkgs.version = "24.05";
|
||||
hyper = hyper-base // {
|
||||
inherit host;
|
||||
system = "aarch64-linux";
|
||||
home = assert 1 == 2; "";
|
||||
};
|
||||
in { inherit pkgs inputs hyper rice; };
|
||||
make-nixos-wsl-system = host: let hyper = get-hyper host; in nixpkgs.lib.nixosSystem {
|
||||
pkgs = get-pkgs hyper;
|
||||
modules = [ ./wsl.nix ];
|
||||
specialArgs = { 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; };
|
||||
|
||||
NxWSL = make-nixos-wsl-system "NxWSL";
|
||||
|
||||
NxS23U = make-nixondroid-system "NxS23U";
|
||||
NxNORTH = make-nixos-system "NxNORTH";
|
||||
NxXPS = make-nixos-system "NxXPS";
|
||||
NxACE = make-nixos-system "NxACE";
|
||||
NxDCS = make-nixos-wsl-system "NxDCS";
|
||||
};
|
||||
|
||||
homeConfigurations = let
|
||||
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = let
|
||||
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
|
||||
in { inherit pkgs inputs hyper rice secrets; };
|
||||
nixOnDroidConfigurations = let
|
||||
makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
|
||||
hyper = get-hyper host;
|
||||
pkgs = get-pkgs hyper;
|
||||
modules = [ ./nod.nix ];
|
||||
home-manager-path = home-manager24.outPath;
|
||||
extraSpecialArgs = { inherit inputs hyper rice; };
|
||||
};
|
||||
make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
in { NxS23U = makeNODConfiguration "NxS23U"; };
|
||||
|
||||
homeConfigurations = let
|
||||
make-home-configuration = host: let
|
||||
hyper = get-hyper host;
|
||||
rice = get-rice hyper;
|
||||
in home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = get-pkgs hyper;
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = { inherit inputs hyper rice secrets; };
|
||||
};
|
||||
make-shell-configuration = host: let
|
||||
hyper = get-hyper host;
|
||||
rice = get-rice hyper;
|
||||
in home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = get-pkgs hyper;
|
||||
modules = [ ./shell-only.nix ];
|
||||
extraSpecialArgs = let
|
||||
hyper = hyper-base // { inherit host; };
|
||||
in { inherit pkgs inputs hyper rice secrets; };
|
||||
extraSpecialArgs = { 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}@NxS23U" = make-shell-configuration "NxS23U" hyper-base.user;
|
||||
|
||||
"${hyper-base.user}@NxWSL" = make-shell-configuration "NxWSL" hyper-base.user;
|
||||
"nx2@NxXPS" = make-home-configuration "NxXPS";
|
||||
"nx2@NxNORTH" = make-home-configuration "NxNORTH";
|
||||
"nx2@NxACE" = make-home-configuration "NxACE";
|
||||
"nx2@NxDCS" = make-shell-configuration "NxDCS";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Binary file not shown.
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' $@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
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
|
||||
];
|
||||
}
|
||||
136
home-modules/bar/caldav-event.nix
Normal file
136
home-modules/bar/caldav-event.nix
Normal file
@@ -0,0 +1,136 @@
|
||||
{ pkgs, ... }@all: with all; let
|
||||
username = "lennart";
|
||||
in {
|
||||
sops.secrets = {
|
||||
"nx2site/nextcloud/lennart_pass" = { };
|
||||
};
|
||||
home.packages = [
|
||||
(pkgs.writers.writePython3Bin "caldav_event" {
|
||||
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
||||
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
|
||||
} /* python */ ''
|
||||
import json
|
||||
from caldav import DAVClient
|
||||
from datetime import datetime, timezone, timedelta
|
||||
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):
|
||||
try:
|
||||
with open(cache_file, "r") as file:
|
||||
return json.load(file, object_hook=datetime_parser)
|
||||
except (json.JSONDecodeError, FileNotFoundError):
|
||||
return None
|
||||
|
||||
def save_cache(cache_file, data):
|
||||
with open(cache_file, "w") as file:
|
||||
data['last_checked'] = datetime.now(timezone.utc)
|
||||
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):
|
||||
if "VEVENT" not in event.data:
|
||||
continue
|
||||
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}: {str(e)}".splitlines()[0])
|
||||
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)
|
||||
|
||||
def is_too_old(event_dict: dict) -> bool:
|
||||
last_checked = event_dict['last_checked']
|
||||
now = datetime.now(timezone.utc)
|
||||
return now - last_checked >= timedelta(minutes=10)
|
||||
|
||||
if __name__ == "__main__":
|
||||
password_file = "${config.sops.secrets."nx2site/nextcloud/lennart_pass".path}" # Path to password file
|
||||
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||
url = "https://n.${hyper.domain}/remote.php/dav/calendars/${username}/"
|
||||
username = "${username}"
|
||||
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) or is_too_old(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}".splitlines()[0])
|
||||
'')
|
||||
];
|
||||
}
|
||||
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}); }
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
{ ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.bash = {
|
||||
programs.bash = let
|
||||
init = /* bash */ ''
|
||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
'';
|
||||
in {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
ll = "ls -l";
|
||||
@@ -15,5 +19,10 @@
|
||||
"checkjobs"
|
||||
];
|
||||
enableCompletion = false;
|
||||
};
|
||||
|
||||
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
|
||||
shellInit = init;
|
||||
} // pkgs.lib.mkIf (pkgs.version != "25.11") {
|
||||
profileExtra = init;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
bitwarden
|
||||
bitwarden-desktop
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, user, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = let
|
||||
u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" {
|
||||
@@ -20,22 +20,21 @@ def replace_campus_timezone(directory):
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
if 'TZID:Europe/Berlin' in content or 'TZID="Europe/Berlin"' in content:
|
||||
# Remove VTIMEZONE block for CampusNetZeit (optional depending on needs)
|
||||
# Use a regex if multiple VTIMEZONE blocks may exist
|
||||
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'):]
|
||||
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:Europe/Berlin', 'TZID:Europe/Berlin')
|
||||
content = content.replace('TZID="Europe/Berlin"', 'TZID="Europe/Berlin"')
|
||||
# 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)
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
print(f"Updated time zone in: {filename}")
|
||||
print(f"Updated time zone in: {filename}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
@@ -49,7 +48,7 @@ if __name__ == "__main__":
|
||||
text = /*bash*/ ''
|
||||
echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY
|
||||
read -r -p "Continue?"
|
||||
sudo chown -R ${user} "$1"
|
||||
sudo chown -R ${hyper.user} "$1"
|
||||
${u}/bin/nx_fix_campuszeit_python "$1"
|
||||
sudo chown -R radicale "$1"
|
||||
'';
|
||||
|
||||
@@ -1,31 +1,44 @@
|
||||
{ pkgs, hyper, secrets, ... }: let
|
||||
calendars = with hyper; [
|
||||
{ pkgs, ... }@all: with all; let
|
||||
v = "nxc";
|
||||
user = "lennart";
|
||||
domain = hyper.domain;
|
||||
calendars = let
|
||||
bs = "https://n.${domain}/remote.php/dav/calendars/lennart";
|
||||
in [
|
||||
{
|
||||
name = "Preservation";
|
||||
primary = true;
|
||||
url = "https://dav.${domain}/${user}/preservation/";
|
||||
url = "${bs}/preservation/";
|
||||
color = "#dddddd";
|
||||
}
|
||||
{
|
||||
name = "Effort";
|
||||
url = "https://dav.${domain}/${user}/effort/";
|
||||
url = "${bs}/effort/";
|
||||
color = "#dd2222";
|
||||
}
|
||||
{
|
||||
name = "Experience";
|
||||
url = "https://dav.${domain}/${user}/experience/";
|
||||
url = "${bs}/experience/";
|
||||
color = "#2222dd";
|
||||
}
|
||||
{
|
||||
name = "Exposure";
|
||||
url = "https://dav.${domain}/${user}/exposure/";
|
||||
name = "Leisure";
|
||||
# name = "Exposure";
|
||||
url = "${bs}/leisure/";
|
||||
# url = "https://${v}.${domain}/${user}/exposure/";
|
||||
color = "#22aa22";
|
||||
}
|
||||
{
|
||||
name = "Engagement";
|
||||
url = "https://dav.${domain}/${user}/engagement/";
|
||||
color = "#8800CC";
|
||||
}
|
||||
# {
|
||||
# name = "Engagement";
|
||||
# url = "https://${v}.${domain}/${user}/engagement/";
|
||||
# color = "#8800CC";
|
||||
# }
|
||||
# {
|
||||
# {
|
||||
# name = "Family";
|
||||
# url = "${bs}/family/";
|
||||
# color = "#dddd22";
|
||||
# }
|
||||
{
|
||||
name = "Sleep as Android";
|
||||
url = secrets.calendar.sleep-as-android-url;
|
||||
@@ -40,13 +53,6 @@
|
||||
read-only = true;
|
||||
type = "ics";
|
||||
}
|
||||
{
|
||||
name = "LR";
|
||||
url = "https://${domain}/lr.ics";
|
||||
color = "#005040";
|
||||
read-only = true;
|
||||
type = "ics";
|
||||
}
|
||||
{
|
||||
name = "Feiertage Hessen";
|
||||
url = "https://ics.tools/Feiertage/hessen.ics";
|
||||
@@ -54,13 +60,6 @@
|
||||
read-only = true;
|
||||
type = "ics";
|
||||
}
|
||||
# {
|
||||
# name = "Handball Männer";
|
||||
# url = "http://i.cal.to/ical/108/dhb/handball-nationalmannschaft/c687e97f.bc7c3eb6-11a0e356.ics";
|
||||
# color = "#880023";
|
||||
# read-only = true;
|
||||
# type = "ics";
|
||||
# }
|
||||
];
|
||||
default_set = {
|
||||
# name =
|
||||
@@ -82,10 +81,10 @@ in {
|
||||
inherit primary;
|
||||
remote = {
|
||||
inherit url name;
|
||||
userName = hyper.user; # my globally set username
|
||||
userName = user;
|
||||
};
|
||||
};
|
||||
in pkgs.lib.attrsets.mergeAttrsList (
|
||||
in lib.attrsets.mergeAttrsList (
|
||||
map (calendar: {
|
||||
"${calendar.name}" = transform_caledar_set ( default_set // calendar );
|
||||
}) calendars
|
||||
@@ -93,7 +92,7 @@ in {
|
||||
|
||||
programs.thunderbird.settings = let
|
||||
to_safe_name = name: (builtins.replaceStrings ["."] ["-"]) name;
|
||||
in (pkgs.lib.attrsets.mergeAttrsList (
|
||||
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;
|
||||
@@ -102,11 +101,11 @@ in {
|
||||
"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}.username" = user;
|
||||
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
|
||||
}) calendars
|
||||
) // {
|
||||
"calendar.list.sortOrder" = pkgs.lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
|
||||
"calendar.list.sortOrder" = lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
|
||||
"calendar.week.start" = 1;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,30 +1,35 @@
|
||||
{ config, pkgs, rice, user, secrets, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
let
|
||||
channels = [
|
||||
"Caedrel"
|
||||
"Caedrel247"
|
||||
# "agurin"
|
||||
# "asmongold"
|
||||
# "Caedrel"
|
||||
# "EintrachtSpandau"
|
||||
"GamesDoneQuick"
|
||||
"gdolphn"
|
||||
# "GamesDoneQuick"
|
||||
# "Odoamne"
|
||||
# "iwdominate"
|
||||
# "imls"
|
||||
# "gdolphn"
|
||||
"GRONKH"
|
||||
"handofblood"
|
||||
"HisWattson"
|
||||
"Jankos"
|
||||
# "handofblood"
|
||||
# "HisWattson"
|
||||
# "Jankos"
|
||||
# "KuruHS"
|
||||
"LEC"
|
||||
"lol_nemesis"
|
||||
# "NASA"
|
||||
"NoWay4u_Sir"
|
||||
"OfficialMikeShinoda"
|
||||
"Rekkles"
|
||||
# "nattynattlol"
|
||||
# "NoWay4u_Sir"
|
||||
# "OfficialMikeShinoda"
|
||||
# "Rekkles"
|
||||
"riotgames"
|
||||
"thebausffs"
|
||||
"ThePrimeagen"
|
||||
"Tolkin"
|
||||
# "TSM_ImperialHal"
|
||||
"velja_lol"
|
||||
# "thebausffs"
|
||||
# "ThePrimeagen"
|
||||
# "Tolkin"
|
||||
# "imperialhal__"
|
||||
# "velja_lol"
|
||||
# "Xisuma"
|
||||
"zackrawrr"
|
||||
];
|
||||
@@ -43,13 +48,13 @@ let
|
||||
};
|
||||
};
|
||||
in {
|
||||
sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; };
|
||||
# sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; };
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
chatterino2
|
||||
streamlink
|
||||
mpv
|
||||
unstable.chatterino2
|
||||
unstable.streamlink
|
||||
# mpv
|
||||
];
|
||||
file = {
|
||||
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
|
||||
@@ -74,18 +79,27 @@ in {
|
||||
"separateMessages": true,
|
||||
"showTimestamps": false,
|
||||
"timestampFormat": "h =mm",
|
||||
"usernameDisplayMode": 1
|
||||
"usernameDisplayMode": 1,
|
||||
"findAllUsernames": true
|
||||
},
|
||||
"showReplyButton": false,
|
||||
"showTabCloseButton": false,
|
||||
"showTabLiveButton": false,
|
||||
"splitheader": {
|
||||
"showGame": true,
|
||||
"showTitle": true,
|
||||
"showUptime": true,
|
||||
"showViewerCount": true
|
||||
},
|
||||
"tabStyle": "compact",
|
||||
"tabVisibility": 0,
|
||||
"theme": { "name": "nxtheme.json" }
|
||||
},
|
||||
"behaviour": {
|
||||
"autocopletion": {
|
||||
"ShowUsernameCompeltionMenu": false,
|
||||
"userCompletinOnlyWithAt": true
|
||||
},
|
||||
"pauseOnHoverDuration": 5.0,
|
||||
"showJoins": false,
|
||||
"usernameRightClickBehavior": 0,
|
||||
@@ -100,13 +114,13 @@ in {
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
|
||||
],
|
||||
"selfMessageHighlight": { "color": "#73008cff", "enabled": true }
|
||||
},
|
||||
"hotkeys": {
|
||||
"addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
|
||||
"addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open overlay", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle overlay click-through", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
|
||||
|
||||
"change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
|
||||
"close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
|
||||
@@ -127,6 +141,7 @@ in {
|
||||
"new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
|
||||
"next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
|
||||
"open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
|
||||
"open overlay": { "action": "popupOverlay", "arguments": [], "category": "split", "keySequence": "Ctrl+Alt+N" },
|
||||
"open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
|
||||
"open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
|
||||
"popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
|
||||
@@ -169,15 +184,16 @@ in {
|
||||
"send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
|
||||
"show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
|
||||
"show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
|
||||
"toggle live tabs only": { "action": "setTabVisibility", "arguments": [ "toggleLiveOnly" ], "category": "window", "keySequence": "Ctrl+Shift+L" },
|
||||
"toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
|
||||
"toggle overlay click-through": { "action": "toggleOverlayInertia", "arguments": [ "all" ], "category": "split", "keySequence": "Ctrl+Shift+U" },
|
||||
"toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
|
||||
"zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
|
||||
"zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
|
||||
"zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
|
||||
},
|
||||
"misc": {
|
||||
"currentVersion": "2.5.3",
|
||||
"askOnTabVisibilityToggle": false,
|
||||
"currentVersion": "2.5.5",
|
||||
"lockNotebookLayout": false
|
||||
},
|
||||
"similarity": {
|
||||
@@ -193,7 +209,7 @@ in {
|
||||
"external": {
|
||||
"streamlink": {
|
||||
"quality": "",
|
||||
"options": "--config /home/${user}/.config/streamlink/config"
|
||||
"options": "--config ${hyper.home}/.config/streamlink/config"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -315,10 +331,9 @@ in {
|
||||
]
|
||||
}
|
||||
'';
|
||||
".config/streamlink/config".text = ''
|
||||
twitch-api-header=Authorization=OAuth='$(cat ${config.sops.secrets."streamlink/twitch-oauth".path})'
|
||||
".config/streamlink/config".text = /* ini */ ''
|
||||
twitch-api-header=Authorization=OAuth ${secrets.streamlink.twitch-oauth}
|
||||
player=mpv
|
||||
player-args='--no-terminal'
|
||||
twitch-low-latency
|
||||
default-stream=best
|
||||
'';
|
||||
|
||||
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;
|
||||
};
|
||||
}
|
||||
@@ -3,20 +3,30 @@
|
||||
home.file.".config/color-pallete.html".text = with rice.color; let
|
||||
cb = color-set: color-name: size: /* html */ ''
|
||||
<div class="color-container" style="border-color: ${color-set.base}">
|
||||
<div class="color-box" style="background: ${color-set.darker}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.bright}"> ${color-name}.darker </p>
|
||||
<p sktyle="color: ${color-set.bright}"> ${color-set.darker} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.bright}"> ${color-name}.dark </p>
|
||||
<p style="color: ${color-set.bright}"> ${color-set.dark} </p>
|
||||
<p style="color: ${color-set.brighter}"> ${color-name}.dark </p>
|
||||
<p style="color: ${color-set.brighter}"> ${color-set.dark} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
|
||||
<p class="dynamic-text"> ${color-name}.base </p>
|
||||
<p class="dynamic-text"> ${color-set.base} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.dark}"> ${color-name}.bright </p>
|
||||
<p style="color: ${color-set.dark}"> ${color-set.bright} </p>
|
||||
<p style="color: ${color-set.darker}"> ${color-name}.bright </p>
|
||||
<p style="color: ${color-set.darker}"> ${color-set.bright} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.brighter}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.dark}"> ${color-name}.brighter </p>
|
||||
<p style="color: ${color-set.dark}"> ${color-set.brighter} </p>
|
||||
</div>
|
||||
</div>
|
||||
'';
|
||||
rgb = rice.lib.hex-to-rgb-comma-string;
|
||||
s = builtins.toString;
|
||||
in /* html */ ''
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
@@ -30,27 +40,26 @@
|
||||
padding: 0px;
|
||||
}
|
||||
html {
|
||||
background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
|
||||
padding: auto;
|
||||
background: transparent;
|
||||
}
|
||||
body {
|
||||
font-family: ${rice.font.base.name};
|
||||
color: ${foreground};
|
||||
width: fit-content;
|
||||
margin: 10px auto 10px auto;
|
||||
background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
|
||||
border: ${builtins.toString rice.border-width}px solid ${border};
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
padding: ${builtins.toString rice.gap-size}px;
|
||||
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: ${builtins.toString rice.gap-size}px;
|
||||
margin: ${s rice.gap-size}px;
|
||||
}
|
||||
.color-container {
|
||||
font-family: ${rice.font.code.name};
|
||||
display: flex;
|
||||
gap: ${builtins.toString rice.gap-size}px;
|
||||
margin: ${builtins.toString rice.gap-size}px;
|
||||
gap: ${s rice.gap-size}px;
|
||||
margin: ${s rice.gap-size}px;
|
||||
}
|
||||
.color-box {
|
||||
width: 200px;
|
||||
@@ -58,7 +67,7 @@
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
border-radius: ${s rice.rounding}px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
@@ -67,8 +76,9 @@
|
||||
${cb accent "accent" 100}
|
||||
${cb secondary "secondary" 100}
|
||||
${cb tertiary "tertiary" 100}
|
||||
${cb weird "weird" 100}
|
||||
${cb special "special" 100}
|
||||
${cb weird "weird" 80}
|
||||
${cb special "special" 80}
|
||||
${cb subtle "subtle" 80}
|
||||
<br>
|
||||
${cb positive "positive" 70}
|
||||
${cb negative "negative" 70}
|
||||
|
||||
28
home-modules/contact.nix
Normal file
28
home-modules/contact.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
|
||||
# sops.secrets."nx2site/nextcloud/lennart_pass".path = "nx2site/nextcloud/lennart_pass";
|
||||
# accounts.contact = {
|
||||
# basePath = "~/.local/share/contacts";
|
||||
# accounts = let
|
||||
# nc = name: { "${name}" = let
|
||||
# un = "lennart";
|
||||
# in {
|
||||
# inherit name;
|
||||
# remote = {
|
||||
# url = "https://n.${hyper.domain}/remote.php/dav/addressbooks/users/${un}/${name}/";
|
||||
# type = "carddav";
|
||||
# username = un;
|
||||
# passwordCommand = "cat /run/user/1000/secrets/nx2site/nextcloud/lennart_pass";
|
||||
# thunderbird = {
|
||||
# enable = builtins.trace config.programs.thunderbird.enable config.programs.thunderbird.enable;
|
||||
# prifiles = [ hyper.user ];
|
||||
# };
|
||||
# };
|
||||
# local = {
|
||||
# type = "filesystem";
|
||||
# path = "${name}";
|
||||
# };
|
||||
# };};
|
||||
# in (pkgs.lib.mergeAttrsList (builtins.map nc [ "TUDa" "CWG" "HSMW" "DICOS" "Accounts" "Familie & Freunde" "Friedrich Schiller Grundschule" "Handball" "Phönix" "Util & Miscellaneous" ]));
|
||||
# };
|
||||
# };
|
||||
}
|
||||
@@ -1,199 +1,200 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
vesktop
|
||||
# discord
|
||||
];
|
||||
|
||||
file.".config/vesktop/settings/settings.json".text = let
|
||||
settingsSyncVersion = "1729179678715";
|
||||
in /* json */ ''{
|
||||
"notifyAboutUpdates": true,
|
||||
"autoUpdate": false,
|
||||
"autoUpdateNotification": true,
|
||||
"useQuickCss": true,
|
||||
"themeLinks": [
|
||||
"https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
|
||||
],
|
||||
"enabledThemes": [],
|
||||
"enableReactDevtools": false,
|
||||
"frameless": false,
|
||||
"transparent": true,
|
||||
"winCtrlQ": false,
|
||||
"macosTranslucency": false,
|
||||
"disableMinSize": false,
|
||||
"winNativeTitleBar": false,
|
||||
"plugins": {
|
||||
"BadgeAPI": { "enabled": true },
|
||||
"CommandsAPI": { "enabled": true },
|
||||
"ContextMenuAPI": { "enabled": true },
|
||||
"MemberListDecoratorsAPI": { "enabled": false },
|
||||
"MessageAccessoriesAPI": { "enabled": false },
|
||||
"MessageDecorationsAPI": { "enabled": false },
|
||||
"MessageEventsAPI": { "enabled": false },
|
||||
"MessagePopoverAPI": { "enabled": false },
|
||||
"NoticesAPI": { "enabled": true },
|
||||
"ServerListAPI": { "enabled": false },
|
||||
"NoTrack": { "enabled": true },
|
||||
"Settings": {
|
||||
"enabled": true,
|
||||
"settingsLocation": "aboveActivity"
|
||||
},
|
||||
"SupportHelper": { "enabled": true },
|
||||
"ChatInputButtonAPI": { "enabled": false },
|
||||
"AlwaysAnimate": { "enabled": true },
|
||||
"AlwaysTrust": { "enabled": true },
|
||||
"AnonymiseFileNames": { "enabled": false },
|
||||
"WebRichPresence (arRPC)": { "enabled": false },
|
||||
"BANger": { "enabled": false },
|
||||
"BetterFolders": { "enabled": false },
|
||||
"BetterGifAltText": { "enabled": false },
|
||||
"BetterGifPicker": { "enabled": false },
|
||||
"BetterNotesBox": { "enabled": false },
|
||||
"BetterRoleDot": { "enabled": false },
|
||||
"BetterUploadButton": { "enabled": false },
|
||||
"BiggerStreamPreview": { "enabled": false },
|
||||
"BlurNSFW": { "enabled": false },
|
||||
"CallTimer": { "enabled": false },
|
||||
"ClearURLs": { "enabled": false },
|
||||
"ClientTheme": { "enabled": false },
|
||||
"ColorSighted": { "enabled": false },
|
||||
"ConsoleShortcuts": { "enabled": false },
|
||||
"CopyUserURLs": { "enabled": false },
|
||||
"CrashHandler": { "enabled": true },
|
||||
"CustomRPC": { "enabled": false },
|
||||
"Dearrow": { "enabled": false },
|
||||
"Decor": { "enabled": false },
|
||||
"DisableCallIdle": { "enabled": false },
|
||||
"EmoteCloner": { "enabled": false },
|
||||
"Experiments": { "enabled": false },
|
||||
"F8Break": { "enabled": false },
|
||||
"FakeNitro": { "enabled": false },
|
||||
"FakeProfileThemes": { "enabled": true },
|
||||
"FavoriteEmojiFirst": { "enabled": false },
|
||||
"FavoriteGifSearch": { "enabled": false },
|
||||
"FixCodeblockGap": { "enabled": false },
|
||||
"FixSpotifyEmbeds": { "enabled": false },
|
||||
"FixYoutubeEmbeds": { "enabled": false },
|
||||
"ForceOwnerCrown": { "enabled": false },
|
||||
"FriendInvites": { "enabled": false },
|
||||
"GameActivityToggle": { "enabled": false },
|
||||
"GifPaste": { "enabled": false },
|
||||
"GreetStickerPicker": { "enabled": false },
|
||||
"HideAttachments": { "enabled": false },
|
||||
"iLoveSpam": { "enabled": false },
|
||||
"IgnoreActivities": { "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": ${settingsSyncVersion}
|
||||
}
|
||||
}
|
||||
'';
|
||||
# file.".config/vesktop/settings/settings.json".text = let
|
||||
# settingsSyncVersion = "1729179678715";
|
||||
# in /* json */ ''{
|
||||
# "notifyAboutUpdates": true,
|
||||
# "autoUpdate": false,
|
||||
# "autoUpdateNotification": true,
|
||||
# "useQuickCss": true,
|
||||
# "themeLinks": [
|
||||
# "https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
|
||||
# ],
|
||||
# "enabledThemes": [],
|
||||
# "enableReactDevtools": false,
|
||||
# "frameless": false,
|
||||
# "transparent": true,
|
||||
# "winCtrlQ": false,
|
||||
# "macosTranslucency": false,
|
||||
# "disableMinSize": false,
|
||||
# "winNativeTitleBar": false,
|
||||
# "plugins": {
|
||||
# "BadgeAPI": { "enabled": true },
|
||||
# "CommandsAPI": { "enabled": true },
|
||||
# "ContextMenuAPI": { "enabled": true },
|
||||
# "MemberListDecoratorsAPI": { "enabled": false },
|
||||
# "MessageAccessoriesAPI": { "enabled": false },
|
||||
# "MessageDecorationsAPI": { "enabled": false },
|
||||
# "MessageEventsAPI": { "enabled": false },
|
||||
# "MessagePopoverAPI": { "enabled": false },
|
||||
# "NoticesAPI": { "enabled": true },
|
||||
# "ServerListAPI": { "enabled": false },
|
||||
# "NoTrack": { "enabled": true },
|
||||
# "Settings": {
|
||||
# "enabled": true,
|
||||
# "settingsLocation": "aboveActivity"
|
||||
# },
|
||||
# "SupportHelper": { "enabled": true },
|
||||
# "ChatInputButtonAPI": { "enabled": false },
|
||||
# "AlwaysAnimate": { "enabled": true },
|
||||
# "AlwaysTrust": { "enabled": true },
|
||||
# "AnonymiseFileNames": { "enabled": false },
|
||||
# "WebRichPresence (arRPC)": { "enabled": false },
|
||||
# "BANger": { "enabled": false },
|
||||
# "BetterFolders": { "enabled": false },
|
||||
# "BetterGifAltText": { "enabled": false },
|
||||
# "BetterGifPicker": { "enabled": false },
|
||||
# "BetterNotesBox": { "enabled": false },
|
||||
# "BetterRoleDot": { "enabled": false },
|
||||
# "BetterUploadButton": { "enabled": false },
|
||||
# "BiggerStreamPreview": { "enabled": false },
|
||||
# "BlurNSFW": { "enabled": false },
|
||||
# "CallTimer": { "enabled": false },
|
||||
# "ClearURLs": { "enabled": false },
|
||||
# "ClientTheme": { "enabled": false },
|
||||
# "ColorSighted": { "enabled": false },
|
||||
# "ConsoleShortcuts": { "enabled": false },
|
||||
# "CopyUserURLs": { "enabled": false },
|
||||
# "CrashHandler": { "enabled": true },
|
||||
# "CustomRPC": { "enabled": false },
|
||||
# "Dearrow": { "enabled": false },
|
||||
# "Decor": { "enabled": false },
|
||||
# "DisableCallIdle": { "enabled": false },
|
||||
# "EmoteCloner": { "enabled": false },
|
||||
# "Experiments": { "enabled": false },
|
||||
# "F8Break": { "enabled": false },
|
||||
# "FakeNitro": { "enabled": false },
|
||||
# "FakeProfileThemes": { "enabled": true },
|
||||
# "FavoriteEmojiFirst": { "enabled": false },
|
||||
# "FavoriteGifSearch": { "enabled": false },
|
||||
# "FixCodeblockGap": { "enabled": false },
|
||||
# "FixSpotifyEmbeds": { "enabled": false },
|
||||
# "FixYoutubeEmbeds": { "enabled": false },
|
||||
# "ForceOwnerCrown": { "enabled": false },
|
||||
# "FriendInvites": { "enabled": false },
|
||||
# "GameActivityToggle": { "enabled": false },
|
||||
# "GifPaste": { "enabled": false },
|
||||
# "GreetStickerPicker": { "enabled": false },
|
||||
# "HideAttachments": { "enabled": false },
|
||||
# "iLoveSpam": { "enabled": false },
|
||||
# "IgnoreActivities": { "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": ${settingsSyncVersion}
|
||||
# }
|
||||
# }
|
||||
# '';
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,102 +1,12 @@
|
||||
{ pkgs, hyper, rice, secrets, ... }:
|
||||
pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
thunderbird
|
||||
];
|
||||
|
||||
programs.thunderbird = let
|
||||
inherit (pkgs.lib.generators) toJSON;
|
||||
extensions = toJSON {} {
|
||||
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
|
||||
};
|
||||
in {
|
||||
enable = true;
|
||||
profiles = {
|
||||
"${hyper.user}" = {
|
||||
isDefault = true;
|
||||
settings = with rice.color; {
|
||||
"calendar.alarms.showmissed" = false;
|
||||
"calendar.alarms.playsound" = false;
|
||||
"calendar.alarms.show" = false;
|
||||
"extensions.webextensions.uuids" = extensions;
|
||||
"mail.startup.enabledMailCheckOnce" = true;
|
||||
"mailnews.mark_message_read.delay" = true;
|
||||
"mailnews.mark_message_read.delay.interval" = 3;
|
||||
"mailnews.tags.$label1.color" = red.base;
|
||||
"mailnews.tags.$label1.tag" = "Important";
|
||||
"mailnews.tags.$label2.color" = yellow.base;
|
||||
"mailnews.tags.$label2.tag" = "Work";
|
||||
"mailnews.tags.$label3.color" = green.base;
|
||||
"mailnews.tags.$label3.tag" = "Personal";
|
||||
"mailnews.tags.$label4.color" = cyan.base;
|
||||
"mailnews.tags.$label4.tag" = "To Do";
|
||||
"mailnews.tags.$label5.color" = blue.base;
|
||||
"mailnews.tags.$label5.tag" = "Later";
|
||||
"mailnews.headers.showMessageId" = true;
|
||||
"mailnews.headers.showOrganization" = true;
|
||||
"mailnews.headers.showReferences" = true;
|
||||
"mailnews.headers.showSender" = 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;
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
|
||||
accounts.email.accounts = let
|
||||
OAuth2Settings = id: {
|
||||
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
||||
"mail.server.server_${id}.authMethod" = 10;
|
||||
};
|
||||
in {
|
||||
gmail-online = {
|
||||
address = secrets.email.gmail-online.mail;
|
||||
gmail-online-accounts = {
|
||||
address = secrets.email.gmail-online-accounts.mail;
|
||||
realName = "Lennart J. Kurzweg";
|
||||
flavor = "gmail.com";
|
||||
primary = true;
|
||||
@@ -117,8 +27,8 @@ pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
};
|
||||
};
|
||||
|
||||
gmail-business = {
|
||||
address = secrets.email.gmail-business.mail;
|
||||
gmail-ljk = {
|
||||
address = secrets.email.gmail-ljk.mail;
|
||||
realName = "Lennart J. Kurzweg";
|
||||
flavor = "gmail.com";
|
||||
signature = {
|
||||
@@ -136,38 +46,24 @@ pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
settings = OAuth2Settings;
|
||||
};
|
||||
};
|
||||
|
||||
hsmw = with secrets.email.hsmw; {
|
||||
address = "${un}@hs-mittweida.de";
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
# pnx-nix = {
|
||||
# address = secrets.email.pnx.mail;
|
||||
# realName = "Lennart J. Kurzweg";
|
||||
# flavor = "outlook.office365.com";
|
||||
# signature = {
|
||||
# text = ''
|
||||
# Phönix Metallbau GmbH
|
||||
# Tel: 036374 2270
|
||||
# '';
|
||||
# showSignature = "append";
|
||||
# };
|
||||
# thunderbird = mkIf config.thunderbird.enable {
|
||||
# enable = true;
|
||||
# profiles = [ "nx2" ];
|
||||
# # The id given as argument is an automatically generated account identifier.
|
||||
# # settings = OAuth2Settings;
|
||||
# };
|
||||
# };
|
||||
tuda = with secrets.email.tuda; {
|
||||
address = "${un}@stud.tu-darmstadt.de";
|
||||
userName = tuid;
|
||||
@@ -195,9 +91,37 @@ pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
profiles = [ "nx2" ];
|
||||
settings = id: {
|
||||
"mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
||||
};
|
||||
settings = id: { };
|
||||
};
|
||||
};
|
||||
nx2site = {
|
||||
address = "lennart@${hyper.domain}";
|
||||
userName = "lennart@${hyper.domain}";
|
||||
realName = "Lennart J. Kurzweg";
|
||||
imap = {
|
||||
port = 993;
|
||||
host = "ssh.${hyper.domain}";
|
||||
tls.enable = true;
|
||||
};
|
||||
smtp = {
|
||||
port = 465;
|
||||
host = "mail-eu.smtp2go.com";
|
||||
tls.enable = true;
|
||||
# port = 587;
|
||||
# host = "mail.${hyper.domain}";
|
||||
# tls.useStartTls = true;
|
||||
};
|
||||
signature = {
|
||||
text = ''
|
||||
About Me: https://nx2.site/about-me
|
||||
Contact: https://nx2.site/contact
|
||||
GPG: https://nx2.site/gpg
|
||||
'';
|
||||
showSignature = "append";
|
||||
};
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
profiles = [ "nx2" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -205,3 +129,35 @@ pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
|
||||
|
||||
|
||||
|
||||
# hsmw = with secrets.email.hsmw; {
|
||||
# address = "${un}@hs-mittweida.de";
|
||||
# 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";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
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 "nxfgl" ''
|
||||
figlet -f ${hyper.home}/.local/share/figlet/nx2.flf -w 9999
|
||||
'')
|
||||
];
|
||||
file.".local/share/figlet/nx2.flf".text = builtins.readFile ./assets/nx2.flf;
|
||||
};
|
||||
}
|
||||
@@ -1,262 +1,16 @@
|
||||
{ pkgs, hyper, rice, ... }:
|
||||
# browser.tabs.allow_transparent_browser
|
||||
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
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;
|
||||
in {
|
||||
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = /* css */ ''
|
||||
:root{
|
||||
/* Popup panels */
|
||||
--arrowpanel-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--arrowpanel-border-color : ${border} !important;
|
||||
--arrowpanel-color : ${secondary.base} !important;
|
||||
--arrowpanel-dimmed : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
|
||||
--arrowpanel-dimmed-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.6) !important;
|
||||
--arrowpanel-dimmed-even-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.8) !important;
|
||||
|
||||
/* Autocomplete */
|
||||
--autocomplete-popup-background : rgba(${rice.lib.hex-to-rgb-comma-string 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 : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
|
||||
--toolbar-non-lwt-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string 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(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--lwt-sidebar-text-color : ${foreground} !important;
|
||||
--sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string 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(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--toolbar-field-focus-background-color : rgba(${rice.lib.hex-to-rgb-comma-string 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(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.2) !important;
|
||||
--toolbarbutton-active-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.4) !important;
|
||||
|
||||
/* Notification and panel */
|
||||
--panel-disabled-color : rgba(${rice.lib.hex-to-rgb-comma-string foreground},0.3) !important;
|
||||
--panel-separator-color : ${border} !important;
|
||||
|
||||
/* New tab page */
|
||||
--newtab-background-color : ${background} !important;
|
||||
--newtab-background-color-secondary : ${background} !important;
|
||||
--newtab-text-primary-color : ${foreground} !important;
|
||||
--newtab-text-secondary-color : ${secondary.base} !important;
|
||||
--newtab-search-icon-color : ${accent.base} !important;
|
||||
|
||||
--tabpanel-background-color : transparent !important;
|
||||
background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
}
|
||||
.tabbrowser-tab[selected="true"] {
|
||||
color: ${background} !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;
|
||||
}
|
||||
'';
|
||||
|
||||
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = /* 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: ${background} !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: ${background} !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(${rice.lib.hex-to-rgb-comma-string 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{
|
||||
background-color: transparent !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(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 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;
|
||||
}
|
||||
}
|
||||
'';
|
||||
file = {
|
||||
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
|
||||
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice;
|
||||
};
|
||||
};
|
||||
}
|
||||
# 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; };
|
||||
};
|
||||
}
|
||||
107
home-modules/firefox/userChrome.nix
Normal file
107
home-modules/firefox/userChrome.nix
Normal file
@@ -0,0 +1,107 @@
|
||||
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 : transparent !important;
|
||||
}
|
||||
body {
|
||||
background-color: unset !important;
|
||||
background-color: transparent !important;
|
||||
background-image: linear-gradient(0deg,rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 100%) !important;
|
||||
background-size: 100% 150% !important;
|
||||
background-position: 0% 0% !important;
|
||||
will-change: background-position;
|
||||
transition: background-position 300ms !important;
|
||||
&:-moz-window-inactive {
|
||||
background-position: 0% 50% !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
.tabbrowser-tab[selected="true"], .tab-text[selected=""],
|
||||
.tab-close-button[selected=""] {
|
||||
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;
|
||||
}
|
||||
''
|
||||
271
home-modules/firefox/userContent.nix
Normal file
271
home-modules/firefox/userContent.nix
Normal file
@@ -0,0 +1,271 @@
|
||||
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 url-prefix("https://n.nx2.site/") {
|
||||
:root, [data-theme-dark] {
|
||||
--color-main-background: #00000055;
|
||||
--color-main-background-rgb: 0,0,0;
|
||||
--color-primary-element-light: #550000;
|
||||
}
|
||||
.app-navigation, .app-content {
|
||||
background: rgba(0,0,0,0.8) !important;
|
||||
backdrop-filter: blur(5px) !important;
|
||||
}
|
||||
.files-list__row-head, .files-list__tfoot {
|
||||
background: rgba(0,0,0,0.5) !important;
|
||||
}
|
||||
.fc-day-today {
|
||||
background: #ff000055 !important;
|
||||
}
|
||||
.files-list__thead {
|
||||
background: transparent !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;
|
||||
}
|
||||
#search-dropdown-results-container {
|
||||
background: rgba(${f background},0.8) !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 {
|
||||
|
||||
}
|
||||
}
|
||||
@-moz-document domain(gemini.google.com) {
|
||||
input-container, input-container::before {
|
||||
background: transparent !important;
|
||||
}
|
||||
bard-sidenav {
|
||||
background: rgba(${rice.lib.hex-to-rgb-comma-string background},0.5) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@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,0.5) !important;
|
||||
backdrop-filter: blur(100px);
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
}
|
||||
}
|
||||
@-moz-document domain(notebooklm.google.com) {
|
||||
body, html, notebook, omnibar {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
header, footer, .studio-panel, .chat-panel, .source-panel {
|
||||
background-color: rgba(0,0,0,0.5) !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;
|
||||
# }
|
||||
# }
|
||||
@@ -1,36 +1,37 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
fish
|
||||
any-nix-shell
|
||||
|
||||
(writeShellScriptBin "nxfetch" ''
|
||||
(writeShellScriptBin "nxfetch" /* bash */ ''
|
||||
logo=$(echo -e "
|
||||
|
||||
⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS
|
||||
⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM
|
||||
⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM
|
||||
⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL
|
||||
⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL
|
||||
⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL
|
||||
⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR
|
||||
⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM
|
||||
⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT
|
||||
⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS
|
||||
⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM
|
||||
⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM
|
||||
⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL
|
||||
⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL
|
||||
⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL
|
||||
⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR
|
||||
⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM
|
||||
⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT
|
||||
|
||||
" | lolcat --force 2> /dev/null)
|
||||
" | lolcat --force 2> /dev/null)
|
||||
|
||||
msg="
|
||||
$(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^}
|
||||
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
||||
$(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 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
|
||||
$(echo -e "$logo" | sed -n 8p): ''$(uname -r)
|
||||
$(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 "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
|
||||
"
|
||||
echo -e "$msg"
|
||||
release_line=$(cat /etc/*-release 2> /dev/null || echo 'PRETTY_NAME="[No Release]"')
|
||||
|
||||
msg="
|
||||
$(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 4p): ''${XDG_CURRENT_DESKTOP^}
|
||||
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
||||
$(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 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\&/')
|
||||
$(echo -e "$logo" | sed -n 8p): ''$(uname -r | sed -E 's=(.+-.+-.+-.+)-.+=\1=g')
|
||||
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | awk '{print toupper(substr($0,1,1)) substr($0,2)}')
|
||||
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
|
||||
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | awk '{print toupper(substr($0,1,1)) substr($0,2)}')
|
||||
"
|
||||
echo -e "$msg"
|
||||
'')
|
||||
];
|
||||
|
||||
@@ -38,6 +39,7 @@
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
package = pkgs.fish;
|
||||
shellAliases = let
|
||||
base-eza = "eza --icons --git --smart-group --group-directories-first";
|
||||
in {
|
||||
@@ -80,9 +82,12 @@
|
||||
gsw = "git switch";
|
||||
gft = "git fetch";
|
||||
ns = "nix-shell";
|
||||
nd = "nix develop -c fish";
|
||||
lzd = "lazydocker";
|
||||
d = "docker";
|
||||
dcmp = "docker compose";
|
||||
stui = "sudo systemctl-tui";
|
||||
wlc = "wl-copy";
|
||||
# nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
|
||||
|
||||
# ya = "yazi"; # function
|
||||
@@ -91,9 +96,11 @@
|
||||
interactiveShellInit = /* fish */ ''
|
||||
set -g fish_greeting
|
||||
if not set -q IN_NIX_SHELL
|
||||
if set -q SESSION_FROM_DE
|
||||
if set -q SESSION_FROM_DE; or set -q SESSION_CLONED_FROM_YAZI
|
||||
set -e SESSION_FROM_DE
|
||||
set -e SESSION_CLONED_FROM_YAZI
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||
yazi --cwd-file="$tmp"
|
||||
yazi --cwd-file="$tmp" ~
|
||||
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
builtin cd -- "$cwd"
|
||||
end
|
||||
@@ -107,6 +114,23 @@
|
||||
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.isPersonal) /* fish */ ''
|
||||
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}
|
||||
'';
|
||||
nx_yazi_into_fish = /* fish */ ''
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||
echo "$PWD" > "$tmp"
|
||||
yazi --cwd-file="$tmp"
|
||||
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
builtin cd -- "$cwd"
|
||||
end
|
||||
rm -f "$tmp"
|
||||
set -g SESSION_CLONED_FROM_YAZI TRUE
|
||||
'';
|
||||
|
||||
# gpg = '';
|
||||
# set bold \e[1m
|
||||
# set green \e[32m
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.host == "NxNORTH")
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = {
|
||||
packages = (with pkgs.unstable; [
|
||||
protonup
|
||||
mangohud
|
||||
|
||||
prismlauncher
|
||||
|
||||
# heroic
|
||||
|
||||
packages = (with pkgs; [
|
||||
unstable.protonup-ng
|
||||
unstable.mangohud
|
||||
]) ++ (if hyper.host == "NxNORTH" then (with pkgs; [
|
||||
unstable.prismlauncher
|
||||
heroic
|
||||
# mindustry-wayland
|
||||
]) ++ [ pkgs.heroic ];
|
||||
sessionVariables = {
|
||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
||||
};
|
||||
]) else if hyper.host == "NxXPS" then (with pkgs; [
|
||||
heroic
|
||||
]) else if hyper.host == "NxACE" then (with pkgs; [
|
||||
heroic
|
||||
]) else []);
|
||||
|
||||
sessionVariables.STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.host == "NxXPS")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host == "NxXPS")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
libinput-gestures
|
||||
|
||||
@@ -1,54 +1,49 @@
|
||||
{ config, rice, hyper, inputs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = [ inputs.ghostty.packages.${hyper.system}.default ];
|
||||
file."${config.xdg.configHome}/ghostty/config".text = with rice.color; /* ini */ ''
|
||||
font-family="${rice.font.code.name}"
|
||||
clipboard-read=allow
|
||||
# clipboard-write=allow
|
||||
# clipboard-read=deny
|
||||
# clipboard-write=deny
|
||||
clipboard-trim-trailing-spaces=true
|
||||
clipboard-paste-protection=false
|
||||
|
||||
window-decoration=false
|
||||
confirm-close-surface=false
|
||||
|
||||
window-padding-x=5
|
||||
window-padding-y=5
|
||||
|
||||
keybind=ctrl+comma=reload_config
|
||||
keybind=ctrl+equal=increase_font_size:1
|
||||
keybind=ctrl+minus=decrease_font_size:1
|
||||
keybind=ctrl+shift+v=paste_from_clipboard
|
||||
|
||||
background=${background}
|
||||
foreground=${foreground}
|
||||
|
||||
background-opacity=${builtins.toString rice.transparency}
|
||||
|
||||
cursor-color=${special.bright}
|
||||
cursor-opacity=0.8
|
||||
|
||||
palette=0=${black.base}
|
||||
palette=8=${black.bright}
|
||||
palette=1=${red.base}
|
||||
palette=9=${red.bright}
|
||||
palette=2=${green.base}
|
||||
palette=10=${green.bright}
|
||||
palette=3=${yellow.base}
|
||||
palette=11=${yellow.bright}
|
||||
palette=4=${blue.base}
|
||||
palette=12=${blue.bright}
|
||||
palette=5=${magenta.base}
|
||||
palette=13=${magenta.bright}
|
||||
palette=6=${cyan.base}
|
||||
palette=14=${cyan.bright}
|
||||
palette=7=${white.base}
|
||||
palette=15=${white.bright}
|
||||
|
||||
selection-background=${accent.base}
|
||||
selection-foreground=${background}
|
||||
'';
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
package = pkgs.ghostty;
|
||||
settings = with rice.color; {
|
||||
background = background;
|
||||
window-padding-color = "extend";
|
||||
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;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
# (gimp-with-plugins.override {
|
||||
# plugins = with gimpPlugins; [ bimp ];
|
||||
# })
|
||||
gimp
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,17 +1,31 @@
|
||||
{ pkgs, hyper, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
delta
|
||||
(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 = {
|
||||
enable = true;
|
||||
package = pkgs.gitFull;
|
||||
userName = ''Lennart J. Kurzweg (Nx2)'';
|
||||
userEmail = "git@${hyper.domain}";
|
||||
programs = {
|
||||
git = {
|
||||
enable = true;
|
||||
package = pkgs.gitFull;
|
||||
settings = {
|
||||
user = {
|
||||
Name = ''Lennart J. Kurzweg (Nx2)'';
|
||||
Email = "git@${hyper.domain}";
|
||||
};
|
||||
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
|
||||
};
|
||||
};
|
||||
delta = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
options = {
|
||||
line-numbers = true;
|
||||
side-by-side = false;
|
||||
@@ -19,34 +33,27 @@
|
||||
whitespace-error-style = "22 reverse";
|
||||
};
|
||||
};
|
||||
extraConfig = {
|
||||
credential = {
|
||||
"https://git.da.dicos.de".username = pkgs.lib.mkIf (hyper.host =="NxWSL") "lkurzweg";
|
||||
"https://git.da.dicos.de".password = pkgs.lib.mkIf (hyper.host =="NxWSL") "Test";
|
||||
};
|
||||
url."ssh://git@git.da.dicos.de/".insteadOf = pkgs.lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/";
|
||||
pull.rebase = false; # true
|
||||
};
|
||||
};
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = {
|
||||
windowSize = "normal";
|
||||
gui.theme = with rice.color; {
|
||||
lightTheme = false;
|
||||
activeBorderColor = [ foreground "bold" ];
|
||||
inactiveBorderColor = [ border ];
|
||||
optionsTextColor = [ tertiary.base ];
|
||||
selectedLineBgColor = [ secondary.base ];
|
||||
selectedRangeByColor = [ weird.bright ];
|
||||
showRandomTip = 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
|
||||
lazygit = {
|
||||
enable = true;
|
||||
package = pkgs.lazygit;
|
||||
settings = {
|
||||
windowSize = "normal";
|
||||
gui.theme = with rice.color; {
|
||||
lightTheme = false;
|
||||
activeBorderColor = [ foreground "bold" ];
|
||||
inactiveBorderColor = [ border ];
|
||||
optionsTextColor = [ tertiary.base ];
|
||||
selectedLineBgColor = [ secondary.base ];
|
||||
selectedRangeByColor = [ weird.bright ];
|
||||
showRandomTip = 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,17 +1,41 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# there also is a system module
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
gnupg
|
||||
gpg-tui
|
||||
pinentry-all
|
||||
# pinentry-all
|
||||
# pinentry-curses
|
||||
pinentry-gtk2
|
||||
# pinentry-tty
|
||||
];
|
||||
|
||||
# services.pcscd.enable = true;
|
||||
services.gpg-agent = let
|
||||
min2sec = min: (min * 60);
|
||||
in {
|
||||
programs.gpg = {
|
||||
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;
|
||||
sshKeys = [
|
||||
"97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey
|
||||
@@ -20,48 +44,8 @@
|
||||
enableFishIntegration = true;
|
||||
defaultCacheTtlSsh = min2sec 60;
|
||||
defaultCacheTtl = min2sec 30;
|
||||
# pinentryPackage = pkgs.pinentry-curses;
|
||||
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
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
let
|
||||
# theme-name = "Colloid-Pink-Dark-Compact";
|
||||
# theme-package = pkgs.colloid-gtk-theme.override {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{ pkgs, hyper, rice, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
# nixfmt-classic # nix formater
|
||||
@@ -7,10 +6,7 @@
|
||||
# nixd # specified in nixd.nix
|
||||
gopls
|
||||
delve
|
||||
python311Packages.python-lsp-server
|
||||
jdt-language-server
|
||||
ruff
|
||||
pyright
|
||||
lldb # debugger for llvm stuff
|
||||
yaml-language-server # yaml
|
||||
marksman # markdown
|
||||
@@ -102,7 +98,6 @@
|
||||
cursor-shape = {
|
||||
normal = "block";
|
||||
insert = "bar";
|
||||
select = "underline";
|
||||
};
|
||||
file-picker = {
|
||||
hidden = false; # Enables ignoring hidden files
|
||||
@@ -181,10 +176,10 @@
|
||||
};
|
||||
smart-tab = {
|
||||
enable = false;
|
||||
supersend-menu = false;
|
||||
supersede-menu = false;
|
||||
};
|
||||
inline-diagnostics = {
|
||||
cursor-line = "hint";
|
||||
cursor-line = "warning";
|
||||
other-lines = "disable";
|
||||
prefix-len = 1;
|
||||
# max-wrap = set above
|
||||
@@ -194,6 +189,7 @@
|
||||
keys = {
|
||||
normal = {
|
||||
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
|
||||
"C-m" = [ ":pipe nxfgl" "toggle_comments" ];
|
||||
"A-`" = [ "no_op" ];
|
||||
"`" = [ "no_op" ];
|
||||
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
||||
@@ -207,22 +203,41 @@
|
||||
language = [
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = [
|
||||
"nixd"
|
||||
# "llm"
|
||||
];
|
||||
language-servers = [ "nixd" ];
|
||||
}
|
||||
{
|
||||
name = "latex";
|
||||
language-servers = [ "texlab" "language-tool" ];
|
||||
}
|
||||
{
|
||||
name = "typst";
|
||||
language-servers = [ "tinymist" ];
|
||||
# language-servers = [ "language-tool" "tinymist" ];
|
||||
}
|
||||
{
|
||||
name = "typst-with-language-tool";
|
||||
scope = "";
|
||||
language-servers = [ "language-tool" "tinymist" ];
|
||||
injection-regex = "";
|
||||
file-types = [""];
|
||||
comment-tokens = "//";
|
||||
indent = { tab-width = 2; unit = " "; };
|
||||
}
|
||||
{
|
||||
name = "markdown";
|
||||
# language-servers = [ "marksman" "style-check" "language-tool" ];
|
||||
language-servers = [ "language-tool" "marksman" ];
|
||||
language-servers = [ "marksman" ];
|
||||
file-types = [ "md" "MD" ];
|
||||
scope = "text.<name>";
|
||||
}
|
||||
{
|
||||
name = "markdown-with-language-tool";
|
||||
language-servers = [ "language-tool" "marksman" ];
|
||||
scope = "text.<name>";
|
||||
injection-regex = "";
|
||||
file-types = [""];
|
||||
# blcok-comment-tokens = { start = "<!--"; end = "-->"; };
|
||||
indent = { tab-width = 2; unit = " "; };
|
||||
}
|
||||
{
|
||||
name = "python";
|
||||
language-servers = [ "pyright" "ruff" ];
|
||||
@@ -271,7 +286,7 @@
|
||||
command = "nixd";
|
||||
};
|
||||
"style-check" = {
|
||||
command = pkgs.lib.getExe pkgs.vale-ls;
|
||||
command = lib.getExe pkgs.vale-ls;
|
||||
};
|
||||
"language-tool" = {
|
||||
command = "${pkgs.ltex-ls}/bin/ltex-ls";
|
||||
@@ -287,7 +302,7 @@
|
||||
];
|
||||
};
|
||||
"llm" = {
|
||||
command = pkgs.lib.getExe pkgs.helix-gpt;
|
||||
command = lib.getExe pkgs.helix-gpt;
|
||||
args = [
|
||||
"--handler"
|
||||
"ollama"
|
||||
@@ -301,37 +316,45 @@
|
||||
base16 = with rice.color; {
|
||||
"attributes" = foreground;
|
||||
"comment" = {
|
||||
fg = black.bright;
|
||||
fg = subtle.base;
|
||||
modifiers = [ "italic" ];
|
||||
};
|
||||
"constant" = accent.bright;
|
||||
"constant.character.escape" = special.bright;
|
||||
"constant.numeric" = foreground;
|
||||
"constructor" = weird.base;
|
||||
"constructor" = secondary.bright;
|
||||
"debug" = yellow.base;
|
||||
"diagnostic.modifiers" = [ "underline" ];
|
||||
"diff.delta" = blue.bright;
|
||||
"diff.delta" = subtle.bright;
|
||||
"diff.minus" = negative.bright;
|
||||
"diff.plus" = positive.bright;
|
||||
"error" = red.base;
|
||||
"error" = negative.base;
|
||||
"function" = secondary.bright;
|
||||
"hint" = tertiary.bright;
|
||||
"info" = foreground;
|
||||
"keyword" = special.base;
|
||||
"keyword.modifiers" = [ "italic" ];
|
||||
"keyword" = {
|
||||
fg = special.base;
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"label" = foreground;
|
||||
"namespace" = weird.bright;
|
||||
"operator" = foreground;
|
||||
"special" = special.base;
|
||||
"string" = secondary.bright;
|
||||
"type" = red.base;
|
||||
"variable" = accent.base;
|
||||
"variableother.member" = foreground;
|
||||
"warning" = red.base;
|
||||
"type" = {
|
||||
fg = tertiary.base;
|
||||
};
|
||||
"variable" = { fg = accent.base; };
|
||||
"variable.builtin" = { fg = accent.base; bg = subtle.darker; };
|
||||
"variable.parameter" = { fg = accent.base; bg = accent.darker; };
|
||||
"warning" = yellow.base;
|
||||
|
||||
"markup.heading" = accent.base;
|
||||
"markup.heading" = {
|
||||
fg = accent.base;
|
||||
bg = accent.darker;
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"markup.bold" = {
|
||||
fg = tertiary.bright;
|
||||
fg = secondary.bright;
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"italic" = {
|
||||
@@ -341,7 +364,7 @@
|
||||
"markup.linktext" = accent.base;
|
||||
"markup.linkurl" = {
|
||||
fg = tertiary.dark;
|
||||
modifiers = [ "underlined" ];
|
||||
underline.style = "line";
|
||||
};
|
||||
"markup.list" = accent.bright;
|
||||
"markup.quote" = weird.bright;
|
||||
@@ -358,7 +381,7 @@
|
||||
};
|
||||
"ui.bufferline" = { # the top line ("tab"-line)
|
||||
fg = accent.base;
|
||||
bg = black.base;
|
||||
bg = accent.darker;
|
||||
};
|
||||
"ui.bufferline.active" = { # the active "tab"
|
||||
fg = background;
|
||||
@@ -370,22 +393,22 @@
|
||||
modifiers = [ "reversed" ];
|
||||
};
|
||||
"ui.cursorline.primary" = { # the line on which the cursor is on
|
||||
bg = black.base;
|
||||
bg = secondary.darker;
|
||||
};
|
||||
"ui.cursor.match" = { # Matching bracket etc.
|
||||
bg = green.dark;
|
||||
bg = special.dark;
|
||||
modifiers = [ ];
|
||||
};
|
||||
"ui.gutter" = {
|
||||
bg = black.base;
|
||||
bg = accent.darker;
|
||||
};
|
||||
"ui.help" = {
|
||||
fg = green.base;
|
||||
bg = black.base;
|
||||
fg = accent.base;
|
||||
bg = accent.darker;
|
||||
};
|
||||
"ui.linenr" = {
|
||||
fg = white.dark;
|
||||
bg = black.base;
|
||||
fg = accent.bright;
|
||||
bg = accent.darker;
|
||||
};
|
||||
"ui.linenr.selected" = {
|
||||
fg = accent.bright;
|
||||
@@ -393,32 +416,32 @@
|
||||
};
|
||||
"ui.menu" = {
|
||||
fg = accent.base;
|
||||
bg = black.base;
|
||||
bg = accent.darker;
|
||||
};
|
||||
"ui.menu.scroll" = {
|
||||
fg = yellow.dark;
|
||||
fg = subtle.base;
|
||||
bg = background;
|
||||
};
|
||||
"ui.menu.selected" = {
|
||||
fg = red.base;
|
||||
bg = blue.dark;
|
||||
fg = secondary.bright;
|
||||
bg = secondary.darker;
|
||||
};
|
||||
"ui.popup" = {
|
||||
bg = black.base;
|
||||
bg = accent.darker;
|
||||
};
|
||||
"ui.selection" = {
|
||||
bg = white.dark;
|
||||
bg = accent.dark;
|
||||
};
|
||||
"ui.selection.primary" = {
|
||||
bg = black.bright;
|
||||
bg = accent.dark;
|
||||
};
|
||||
"ui.statusline" = {
|
||||
fg = blue.bright;
|
||||
bg = black.base;
|
||||
fg = accent.bright;
|
||||
bg = accent.darker;
|
||||
};
|
||||
"ui.statusline.inactive" = {
|
||||
fg = red.bright;
|
||||
bg = red.dark;
|
||||
fg = secondary.bright;
|
||||
bg = secondary.dark;
|
||||
};
|
||||
"ui.statusline.insert" = {
|
||||
fg = green.bright;
|
||||
@@ -435,23 +458,23 @@
|
||||
"ui.text" = foreground;
|
||||
"ui.text.focus" = accent.base;
|
||||
"ui.virtual.indent-guide" = {
|
||||
fg = black.bright;
|
||||
fg = subtle.dark;
|
||||
};
|
||||
"ui.virtual.inlay-hint" = {
|
||||
fg = weird.dark;
|
||||
bg = weird.base;
|
||||
fg = subtle.base;
|
||||
bg = subtle.dark;
|
||||
};
|
||||
"ui.virtual.ruler" = {
|
||||
bg = background;
|
||||
};
|
||||
"ui.virtual.jump-label" = {
|
||||
fg = special.base;
|
||||
underline = {
|
||||
style = "dotted";
|
||||
};
|
||||
bg = special.dark;
|
||||
underline.style = "dotted";
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"ui.window" = {
|
||||
bg = black.base;
|
||||
bg = accent.darker;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [ hyprland-autoname-workspaces ];
|
||||
@@ -10,6 +10,7 @@
|
||||
"blueman-manager" = ""
|
||||
"chatterino" = ""
|
||||
"Chromium" = ""
|
||||
"chromium-browser" = ""
|
||||
"code" = ""
|
||||
"code-oss" = ""
|
||||
"codium" = ""
|
||||
@@ -22,7 +23,7 @@
|
||||
".*.exe" = ""
|
||||
"firefox" = ""
|
||||
"galaxyclient.exe" = ""
|
||||
"\\.?gimp-.*" = ""
|
||||
"\\.?[gG]imp-.*" = ""
|
||||
"F?imv.*" = ""
|
||||
"KiCad" = ""
|
||||
"kitty" = ""
|
||||
@@ -33,6 +34,7 @@
|
||||
"obsidian" = ""
|
||||
"org.inkscape.Inkscape" = ""
|
||||
"org.remmina.Remmina" = ""
|
||||
"org.prismlauncher.*" = ""
|
||||
"pavucontrol" = ""
|
||||
"pcbnew" = ""
|
||||
"Signal" = ""
|
||||
|
||||
@@ -1,84 +1,68 @@
|
||||
{ config, pkgs, hyper, inputs, rice, ... }:
|
||||
let
|
||||
{ pkgs, ... }@all: with all; let
|
||||
animation-speed = "5";
|
||||
transparency = builtins.toString rice.transparency;
|
||||
terminal = "ghostty";
|
||||
terminal-exec = "ghostty --command=";
|
||||
monitors = {
|
||||
xps = {
|
||||
main = {
|
||||
name = "eDP-1";
|
||||
resolution = "1920x1200";
|
||||
position = "0x1080";
|
||||
scale = "1.0";
|
||||
};
|
||||
second = {
|
||||
name = "DP-3";
|
||||
resolution = "1920x1080";
|
||||
position = "0x0";
|
||||
scale = "1.0";
|
||||
};
|
||||
# def
|
||||
# main = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; };
|
||||
# second = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; };
|
||||
# third = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; };
|
||||
|
||||
# Home
|
||||
main = { name = "eDP-1"; resolution = "1920x1200"; position = "0x1080"; scale = "1.0"; };
|
||||
second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
||||
third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
|
||||
|
||||
# Presentation
|
||||
# main = { name = "eDP-1"; resolution = "1920x1080"; position = "1920x1080"; scale = "1.0"; };
|
||||
# second = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
|
||||
# third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
|
||||
|
||||
# thunderbolt docking
|
||||
# main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1200"; scale = "1.0"; };
|
||||
# second = { name = "DP-5"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; };
|
||||
# third = { name = "DP-4"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; };
|
||||
# second = { name = "DP-6"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; };
|
||||
# third = { name = "DP-7"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; };
|
||||
};
|
||||
north = {
|
||||
main = {
|
||||
name = "DP-4";
|
||||
resolution = "2560x1440";
|
||||
position = "1920x150";
|
||||
scale = "1.0";
|
||||
};
|
||||
left = {
|
||||
name = "HDMI-A-2";
|
||||
resolution = "1920x1080";
|
||||
position = "0x0";
|
||||
scale = "1.0";
|
||||
};
|
||||
# right = {
|
||||
# name = "HDMI-A-2";
|
||||
# resolution = "1920x1080";
|
||||
# position = "4480x360";
|
||||
# scale = "1.0";
|
||||
# };
|
||||
};
|
||||
ace = {
|
||||
main = {
|
||||
name = "HDMI-A-1";
|
||||
resolution = "3840x2160";
|
||||
position = "0x0";
|
||||
scale = "2.0";
|
||||
};
|
||||
main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x0"; scale = "1.0"; };
|
||||
left = { name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
||||
# right = { name = "HDMI-A-2"; resolution = "1920x1080"; position = "4480x360"; scale = "1.0"; };
|
||||
};
|
||||
ace.main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; };
|
||||
};
|
||||
in {
|
||||
home.packages = (with pkgs; [
|
||||
# hyprland itself is a system package
|
||||
home.packages = with pkgs; [
|
||||
grim
|
||||
hyprcursor
|
||||
hypridle
|
||||
hyprland-protocols
|
||||
hyprlock
|
||||
hypridle
|
||||
hyprpicker
|
||||
hyprcursor
|
||||
|
||||
grim
|
||||
hyprshade
|
||||
hyprshot
|
||||
slurp
|
||||
|
||||
# ]) ++ (with pkgs-unstable; [
|
||||
|
||||
]) ++ (with inputs; [
|
||||
hyprswitch.packages.x86_64-linux.default
|
||||
]);
|
||||
# xdg-desktop-portal-hyprland
|
||||
];
|
||||
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
# package = pkgs-unstable.hyprland;
|
||||
package = pkgs.hyprland;
|
||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
# package = pkgs.hyprland;
|
||||
package = inputs.hyprland.packages.${hyper.system}.hyprland;
|
||||
# package = config.programs.hyprland.package;
|
||||
xwayland.enable = true;
|
||||
systemd.enable = true;
|
||||
plugins = [
|
||||
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo
|
||||
# inputs.hyprfocus.packages.${pkgs.system}.hyprfocus
|
||||
# inputs.hycov.packages.${pkgs.system}.hycov
|
||||
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
|
||||
plugins = let s = pkgs.stdenv.hostPlatform.system; in [
|
||||
# inputs.hyprland-plugins.packages.${s}.hyprexpo
|
||||
# inputs.hyprfocus.packages.${s}.hyprfocus
|
||||
# inputs.hycov.packages.${s}.hycov
|
||||
# inputs.hyprspace.packages.${s}.Hyprspace
|
||||
# inputs.hyprtasking.packages.${s}.hyprtasking
|
||||
# inputs.hyprland-easymotion.packages.${s}.hyprland-easymotion
|
||||
];
|
||||
|
||||
settings = {
|
||||
@@ -86,6 +70,7 @@ in {
|
||||
if hyper.host == "NxXPS" then (with monitors.xps; [
|
||||
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
|
||||
"${second.name}, ${second.resolution}, ${second.position}, ${second.scale}"
|
||||
"${third.name}, ${third.resolution}, ${third.position}, ${third.scale}"
|
||||
]) else (if hyper.host == "NxNORTH" then (with monitors.north; [
|
||||
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
|
||||
"${left.name}, ${left.resolution}, ${left.position}, ${left.scale}"
|
||||
@@ -97,7 +82,7 @@ in {
|
||||
workspace = let
|
||||
d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||
d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
|
||||
d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||
d3 = if hyper.host == "NxXPS" then monitors.xps.third.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||
# d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
|
||||
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
|
||||
in [
|
||||
@@ -121,8 +106,8 @@ in {
|
||||
"27, monitor:${d2}"
|
||||
"28, monitor:${d2}"
|
||||
"29, monitor:${d2}"
|
||||
"20, monitor:${d2}"
|
||||
"31, monitor:${d3}, default:${let x = if hyper.host == "NxNORTH" then "true" else "false"; in x}"
|
||||
"20, monitor:${d2}, ${compact}"
|
||||
"31, monitor:${d3}, default:${let x = if hyper.host == "NxNORTH" then "true" else "false"; in x}, ${compact}"
|
||||
"32, monitor:${d3}"
|
||||
"33, monitor:${d3}"
|
||||
"34, monitor:${d3}"
|
||||
@@ -194,10 +179,12 @@ in {
|
||||
dim_strength = "0.2";
|
||||
dim_around = "0.8";
|
||||
|
||||
# screen_shader = "/home/nx2/.config/hypr/shaders/e.glsl";
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = "3";
|
||||
passes = "2";
|
||||
size = "2";
|
||||
passes = "4";
|
||||
xray = false;
|
||||
vibrancy = 0.5;
|
||||
ignore_opacity = true;
|
||||
@@ -206,9 +193,10 @@ in {
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
# bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
|
||||
bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
|
||||
# bezier = "myBezier, 0.83, 0, 0.17, 1"; # io
|
||||
bezier = "myBezier, 0.33, 1, 0.68, 1";
|
||||
# bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
# bezier = "myBezier, 0.33, 1, 0.68, 1";
|
||||
animation = let direction = if hyper.host == "NxXPS" then "slide" else "slidevert"; in [
|
||||
"windows, 1, ${animation-speed}, myBezier, slide"
|
||||
"border, 1, ${animation-speed}, myBezier"
|
||||
@@ -218,10 +206,10 @@ in {
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_fingers = "4";
|
||||
workspace_swipe_distance = "300";
|
||||
# workspace_swipe_touch = true;
|
||||
workspace_swipe_invert = true;
|
||||
# workspace_swipe_touch_invert = true;
|
||||
workspace_swipe_min_speed_to_force = "30";
|
||||
workspace_swipe_cancel_ratio = "0.5";
|
||||
workspace_swipe_create_new = false;
|
||||
@@ -231,6 +219,14 @@ in {
|
||||
workspace_swipe_use_r = false;
|
||||
};
|
||||
|
||||
|
||||
gesture = [
|
||||
"4, horizontal, workspace"
|
||||
# "3, down, mod: ALT, close"
|
||||
# "3, up, mod: SUPER, scale: 1.5, fullscreen"
|
||||
# "3, left, scale: 1.5, float"
|
||||
];
|
||||
|
||||
dwindle = {
|
||||
preserve_split = true; # you probably want this
|
||||
};
|
||||
@@ -247,90 +243,85 @@ in {
|
||||
exec-once = [
|
||||
"waybar"
|
||||
"swww-daemon"
|
||||
"hyprland-autoname-workspaces"
|
||||
# "hyprland-autoname-workspaces"
|
||||
"/usr/lib/polkit-kde-authentication-agent-1 "
|
||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
"syncthing -no-browser"
|
||||
"mako"
|
||||
"fcitx5"
|
||||
# "ibus engine xkb:de::deu"
|
||||
"libinput-gestures"
|
||||
"systemctl --user start hyprpanel"
|
||||
# "hyprswitch --daemon"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
|
||||
|
||||
"noanim, class:^(presenter)$" # sent
|
||||
"float, class:^(presenter)$" # sent
|
||||
|
||||
"noanim, class:^(imv)$"
|
||||
"float, class:^(imv)$"
|
||||
"fullscreen, class:^(imv)$"
|
||||
|
||||
# "float, initialTitle:^(Edit Item)$" # thunderbid calendar
|
||||
# "dimaround on, initialTitle:^(Edit Item)$" # thunderbid calendar
|
||||
"float,class:^(thunderbird)$"
|
||||
# "float,class:^(thunderbird)$,title:^(.*)(Reminder)(.*)$"
|
||||
# "float,class:^(thunderbird)$,title:^About(.*)$"
|
||||
# "float,class:^(thunderbird)$,title:^(Check Spelling)$"
|
||||
|
||||
"center 1,class:^(gimp)$"
|
||||
] ++ [
|
||||
"bordersize 0, floating:0, onworkspace:w[tv1]"
|
||||
"rounding 0, floating:0, onworkspace:w[tv1]"
|
||||
"bordersize 0, floating:0, onworkspace:f[1]"
|
||||
"rounding 0, floating:0, onworkspace:f[1]"
|
||||
];
|
||||
|
||||
windowrule = [
|
||||
# "opacity ${transparency}, firefox"
|
||||
"opacity ${transparency}, code-oss"
|
||||
"opacity ${transparency}, VSCodium"
|
||||
"opacity ${transparency}, Code"
|
||||
# "opacity ${transparency}, sent"
|
||||
"opacity ${transparency}, neovide"
|
||||
"opacity ${transparency}, obsidian"
|
||||
# "opacity ${transparency}, zathura"
|
||||
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
|
||||
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), ${terminal}"
|
||||
"opacity ${transparency}, discord"
|
||||
"opacity ${transparency}, vesktop"
|
||||
"opacity ${transparency}, Element"
|
||||
"opacity ${transparency}, lutris"
|
||||
"opacity ${transparency}, element"
|
||||
# "opacity ${transparency}, ^([sS]potify)$"
|
||||
# "opacity ${transparency}, virt-manager"
|
||||
# "opacity ${transparency}, thunar"
|
||||
"opacity ${transparency}, title:^(wlogout)$"
|
||||
"opaque, title:^(GNU Image Manipulation Program)$"
|
||||
"float, title:^(Picture-in-Picture)$"
|
||||
"float, title:^(Ibus-ui.*)$"
|
||||
"float, ^(ibus-ui.*)$"
|
||||
"float, ^(ibus-ui-gtk3)$"
|
||||
"float, title:^(Ibus-ui-gtk3)$"
|
||||
"pin, title:^(Picture-in-Picture)$"
|
||||
"float, org.kde.polkit-kde-authentication-agent-1"
|
||||
"float, title:^(wlogout)$"
|
||||
"float, imv"
|
||||
"float, title:^(Page Info — .*)$"
|
||||
"float, title:^(Compact folders)$"
|
||||
"tile, sent"
|
||||
"fullscreen, wlogout"
|
||||
"fullscreen, sent"
|
||||
"workspace 14, lutris"
|
||||
"workspace 100, title:^(Apex Legends)$"
|
||||
"workspace 100, ^(cyberpunk2077.exe)$"
|
||||
"workspace 100, title:^(No Man.s Sky)$"
|
||||
"workspace 100, gamescope"
|
||||
];
|
||||
"border_color rgba(${rice.lib.nohash rice.color.special.bright}ff) rgba(${rice.lib.nohash rice.color.special.brighter}ff), match:pin 1"
|
||||
|
||||
"border_size 0, match:float 0, match:workspace w[tv1]"
|
||||
"rounding 0, match:float 0, match:workspace w[tv1]"
|
||||
"border_size 0, match:float 0, match:workspace f[1]"
|
||||
"rounding 0, match:float 0, match:workspace f[1]"
|
||||
] ++ [
|
||||
"center 1,match:class ^(gimp)$"
|
||||
|
||||
"float on, match:class ^(ibus-ui.*)$"
|
||||
"float on, match:class ^(ibus-ui-gtk3)$"
|
||||
"float on, match:class ^(imv)$"
|
||||
"float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||
"float on, match:class ^(presenter)$" # sent
|
||||
"float on, match:class ^(thunderbird)$"
|
||||
"float on, match:title ^(Compact folders)$"
|
||||
"float on, match:title ^(Ibus-ui.*)$"
|
||||
"float on, match:title ^(Ibus-ui-gtk3)$"
|
||||
"float on, match:title ^(Page Info — .*)$"
|
||||
"float on, match:title ^(Picture-in-Picture)$"
|
||||
"float on, match:title ^(wlogout)$"
|
||||
|
||||
"fullscreen on, match:class ^(imv)$"
|
||||
"fullscreen on, match:class ^(sent)$"
|
||||
"fullscreen on, match:class ^(wlogout)$"
|
||||
|
||||
"no_anim on, match:class ^(imv)$"
|
||||
"no_anim on, match:class ^(presenter)$" # sent
|
||||
|
||||
"opacity ${transparency}, match:class ^(Code)$"
|
||||
"opacity ${transparency}, match:class ^(code-oss)$"
|
||||
"opacity ${transparency}, match:class ^(discord)$"
|
||||
# "opacity ${transparency}, match:class ^(vesktop)$"
|
||||
# "opacity ${transparency}, match:class ^(Element)$"
|
||||
"opacity ${transparency}, match:class ^(lutris)$"
|
||||
"opacity ${transparency}, match:class ^(neovide)$"
|
||||
# "opacity ${transparency}, match:class ^(obsidian)$"
|
||||
"opacity ${transparency}, match:class ^(VSCodium)$"
|
||||
"opacity ${transparency}, match:title ^(wlogout)$"
|
||||
"opaque on, match:title ^(GNU Image Manipulation Program)$"
|
||||
"opaque on, match:fullscreen 1"
|
||||
|
||||
"pin on, match:title ^(Picture-in-Picture)$"
|
||||
|
||||
"tile on, match:class ^(sent)$"
|
||||
|
||||
"workspace 100, match:class ^(gamescope)$"
|
||||
|
||||
"float on, match:title ^(terminal-file-picker)$"
|
||||
"dim_around on, match:title ^(terminal-file-picker)$"
|
||||
"center on, match:title ^(terminal-file-picker)$"
|
||||
"size 80% 80%, match:title ^(terminal-file-picker)$"
|
||||
|
||||
"float on, match:initial_title ^(Select Calendar)$"
|
||||
"size 30% 30%, match:initial_title ^(Select Calendar)$"
|
||||
];
|
||||
|
||||
|
||||
layerrule = [
|
||||
"blur,waybar"
|
||||
"dimaround,rofi"
|
||||
"blur,rofi"
|
||||
"xray,rofi"
|
||||
"blur on, match:namespace waybar"
|
||||
"blur on, match:namespace bar-0" # hyprpanel
|
||||
"blur on, match:namespace bar-1"
|
||||
"blur on, match:namespace bar-2"
|
||||
"blur on, match:namespace bar-3"
|
||||
"blur on, match:namespace bar-4"
|
||||
"blur on, match:namespace rofi"
|
||||
"dim_around on, match:namespace rofi"
|
||||
];
|
||||
|
||||
|
||||
@@ -344,18 +335,17 @@ in {
|
||||
###########################################################################
|
||||
## ROW 0:
|
||||
bind = [
|
||||
"SUPER SHIFT, Escape, exit, "
|
||||
"SUPER, F1, workspace, 100"
|
||||
"SUPER SHIFT, F1, movetoworkspace, 100"
|
||||
# "SUPER, F2,"
|
||||
# "SUPER, F3, toggleopaque"
|
||||
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'Cleared Saved Event!' ''"
|
||||
"SUPER, F5, exec, nx_gcal_event force-lookup"
|
||||
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
||||
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'NxCaldavEvent' 'Cleared saved event cache!' ''"
|
||||
# "SUPER, F5, exec, nx_gcal_event force-lookup"
|
||||
# "SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
||||
"SUPER, F6, exec, ${terminal-exec}'htop'"
|
||||
"SUPER, F7, exec, ${terminal-exec}'nmtui'"
|
||||
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
|
||||
"SUPER, F9, execr, waybar_mode set ' '"
|
||||
"SUPER, F9, execr, submap_indicator set ' '"
|
||||
"SUPER, F9, submap, color"
|
||||
# "SUPER, F10, hyprload,update"
|
||||
"SUPER, F11, exec, waybar"
|
||||
@@ -395,26 +385,29 @@ in {
|
||||
###########################################################################
|
||||
## ROW 2:
|
||||
|
||||
#bind = SUPER, TAB, hycov:toggleoverview
|
||||
# "SUPER, TAB, hycov:toggleoverview"
|
||||
# "SUPER, TAB, overview:toggle"
|
||||
# "SUPER, TAB, hyprexpo:expo, toggle"
|
||||
# "SUPER, TAB, hyprtasking:killhovered"
|
||||
# ", Escape, hyprtasking:if_active, hyprtasking:toggle cursor"
|
||||
"ALT, TAB, focuscurrentorlast"
|
||||
# "SUPER, TAB, exec, hyprswitch --daemon"
|
||||
"SUPER, Q, killactive"
|
||||
"SUPER, W, exec, waybar_mode set ' '"
|
||||
"SUPER, W, exec, submap_indicator set ' '"
|
||||
"SUPER, W, submap, browserSM "
|
||||
"SUPER, E, exec, element-desktop"
|
||||
# "SUPER, E, exec, element-desktop"
|
||||
"SUPER, R, exec, rofi -show drun"
|
||||
"SUPER SHIFT, R, exec, rofi -show drun"
|
||||
# "SUPER, T, exec, alacritty"
|
||||
# "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace""
|
||||
"SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
|
||||
"SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
|
||||
''SUPER SHIFT, T, exec, ${terminal-exec}'echo -e "\\e]11;#${rice.color.secondary.darker}\\e\\\\" && ssh nxace' '' # yes this is a double hash.
|
||||
"SUPER, Z, exec, zathura"
|
||||
"SUPER, U, exec, [tile] thunderbird "
|
||||
"SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
|
||||
"SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
|
||||
"SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
|
||||
"SUPER, O, exec, obsidian "
|
||||
# "SUPER, O, exec, obsidian "
|
||||
"SUPER, P, pin "
|
||||
# "SUPER, Ü,"
|
||||
# "SUPER, +,"
|
||||
@@ -424,12 +417,13 @@ in {
|
||||
###########################################################################
|
||||
## ROW 3:
|
||||
|
||||
"SUPER, A, execr, waybar_mode set ' '"
|
||||
"SUPER, A, execr, submap_indicator set ' '"
|
||||
"SUPER, A, submap, scrL"
|
||||
"SUPER, S, exec, spotify"
|
||||
"SUPER, D, exec, vesktop --disable-gpu-compositing"
|
||||
"SUPER, D, exec, vesktop"
|
||||
# "SUPER, D, exec, discord"
|
||||
"SUPER, F, fullscreen"
|
||||
# "SUPER, G,"
|
||||
# "SUPER, G, action:hyprctl dispatch focuswindow address:{}"
|
||||
"SUPER, H, movefocus, l"
|
||||
"SUPER, J, movefocus, d"
|
||||
"SUPER, K, movefocus, u"
|
||||
@@ -442,16 +436,18 @@ in {
|
||||
## ROW 4:
|
||||
|
||||
# "SUPER, <, overview:toggle"
|
||||
"SUPER, Y, execr, waybar_mode set ' '"
|
||||
"SUPER, Y, execr, submap_indicator set ' '"
|
||||
"SUPER, Y, submap, scrR"
|
||||
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
|
||||
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
|
||||
"SUPER, C, exec, chatterino"
|
||||
"SUPER SHIFT, C, exec, hyprpicker -n -a"
|
||||
"SUPER, V, togglefloating, "
|
||||
"SUPER, B, exec, bitwarden"
|
||||
"SUPER, N, togglesplit"
|
||||
# "SUPER, B, exec, bitwarden"
|
||||
"SUPER, N, layoutmsg, togglesplit"
|
||||
# "SUPER, M, exec, /home/nx2/scripts/meme-full-screen/meme-full-screen.sh "
|
||||
''SUPER, M, exec, sh -c "hyprshade on $(find ${hyper.home}/.config/hypr/shaders -type f | sed -E 's-.*shaders/(.+)\.glsl-\1-g' | rofi -dmenu)"''
|
||||
"SUPER Shift, M, exec, hyprshade off"
|
||||
# "SUPER, comma, exec, /home/nx2/scripts/change-language.sh"
|
||||
"SUPER, ., exec, echo key x:Prior | dotool"
|
||||
"SUPER, -, exec, echo key x:Next | dotool"
|
||||
@@ -461,7 +457,7 @@ in {
|
||||
|
||||
# bindr = SUPER, Ctrl, exec, # ??
|
||||
# bindr = SUPERALT, Alt_L, exec,
|
||||
"SUPER, Space, cyclenext"
|
||||
# "SUPER, Space, cyclenext"
|
||||
"SUPER SHIFT, Space, swapnext"
|
||||
# "SUPER, , "
|
||||
# "SUPER, , "
|
||||
@@ -481,7 +477,9 @@ in {
|
||||
###########################################################################
|
||||
## MEGA KEYS:
|
||||
|
||||
'' , Print, exec, grim -g "$(slurp)"''
|
||||
", Print, execr, submap_indicator set ' '"
|
||||
", Print, submap, screenshot"
|
||||
|
||||
# "SUPER, Next, resizeactive, 5% 5%" # binde
|
||||
# "SUPER, Prior, resizeactive, -5% -5%" # binde
|
||||
|
||||
@@ -517,7 +515,97 @@ in {
|
||||
# "SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute"
|
||||
"SUPER, Next, resizeactive, 10% 10%"
|
||||
"SUPER, Prior, resizeactive, -10% -10%"
|
||||
"SUPER ALT, j, resizeactive, 0% 7%"
|
||||
"SUPER ALT, k, resizeactive, 0% -7%"
|
||||
"SUPER ALT, l, resizeactive, 7% 0%"
|
||||
"SUPER ALT, h, resizeactive, -7% 0%"
|
||||
];
|
||||
plugin = {
|
||||
overview = {
|
||||
# panelHeight =
|
||||
# panelBorderWidth =
|
||||
onBottom = false; # whether if panel should be on bottom instead of top
|
||||
# workspaceMargin = # spacing of workspaces with eachother and the edge of the panel
|
||||
# reservedArea = # padding on top of the panel, for Macbook camera notch
|
||||
workspaceBorderSize = rice.border-width; #
|
||||
centerAligned = true; # whether if workspaces should be aligned at the center (KDE / macOS style) or at the left (Windows style)
|
||||
hideBackgroundLayers = true; # do not draw background and bottom layers in overview
|
||||
hideTopLayers = false; # do not draw top layers in overview
|
||||
hideOverlayLayers = false; # do not draw overlay layers in overview
|
||||
hideRealLayers = false; # whether to hide layers in actual workspace
|
||||
drawActiveWorkspace = true; # draw the active workspace in overview as-is
|
||||
overrideGaps = false; # whether if overview should override the layout gaps in the current workspace using the following values
|
||||
# gapsIn = #
|
||||
# gapsOut = #
|
||||
affectStrut = false; # whether the panel should push window aside, disabling this option also
|
||||
|
||||
dots_center = true;
|
||||
autoDrag = true; # mouse click always drags window when overview is open
|
||||
autoScroll = true; # mouse scroll on active workspace area always switch workspace
|
||||
exitOnClick = true; # mouse click without dragging exits overview
|
||||
switchOnDrop = true; # switch to the workspace when a window is droppped into it
|
||||
exitOnSwitch = true; # overview exits when overview is switched by clicking on workspace view or by switchOnDrop
|
||||
showNewWorkspace = false; # add a new empty workspace at the end of workspaces view
|
||||
showEmptyWorkspace = false; # show empty workspaces that are inbetween non-empty workspaces
|
||||
showSpecialWorkspace = false; # defaults to false
|
||||
disableGestures = true;
|
||||
reverseSwipe = true; # reverses the direction of swipe gesture, for macOS peeps?
|
||||
exitKey = true;
|
||||
};
|
||||
hypertasking = {
|
||||
layout = "grid";
|
||||
gap_size = 20;
|
||||
bg_color = "0xff${rice.color.background}";
|
||||
border_size = 4;
|
||||
exit_on_hovered = false;
|
||||
warp_on_move_window = 1;
|
||||
close_overview_on_reload = true;
|
||||
|
||||
drag_button = "0x110"; # left mouse button
|
||||
select_button = "0x111"; # right mouse button
|
||||
# for other mouse buttons see <linux/input-event-codes.h>
|
||||
|
||||
gestures = {
|
||||
enabled = true;
|
||||
move_fingers = 3;
|
||||
move_distance = 300;
|
||||
open_fingers = 4;
|
||||
open_distance = 300;
|
||||
open_positive = true;
|
||||
};
|
||||
grid = {
|
||||
rows = 3;
|
||||
cols = 3;
|
||||
loop = false;
|
||||
layers = 2;
|
||||
loop_layers = true;
|
||||
gaps_use_aspect_ratio = false;
|
||||
};
|
||||
linear ={
|
||||
top = false;
|
||||
height = 400;
|
||||
scroll_speed = 1.0;
|
||||
blur = false;
|
||||
};
|
||||
};
|
||||
easymotion = {
|
||||
textsize = 15;
|
||||
textcolor = "rgba(ffffffff)";
|
||||
bgcolor = "rgba(000000ff)";
|
||||
blur = 0;
|
||||
blurA = 1.0;
|
||||
xray = 0;
|
||||
textfont = "Sans";
|
||||
textpadding = 0;
|
||||
bordersize = 0;
|
||||
bordercolor = "rgba(ffffffff)";
|
||||
rounding = 0;
|
||||
fullscreen_action = "none";
|
||||
motionkeys = "abcdefghijklmnopqrstuvwxyz1234567890";
|
||||
motionlabels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
||||
only_special = "true";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -530,18 +618,18 @@ in {
|
||||
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
|
||||
extraConfig = let
|
||||
action_simple = { mods ? "", key, cmd }: ''
|
||||
bind=${mods},${key},execr,waybar_mode unset
|
||||
bind=${mods},${key},execr,submap_indicator unset
|
||||
bind=${mods},${key},${cmd}
|
||||
bind=${mods},${key},submap,reset
|
||||
'';
|
||||
extra_workspace = { key, wsnumber }: ''
|
||||
bind=,${key},execr,waybar_mode unset
|
||||
bind=,${key},execr,submap_indicator unset
|
||||
bind=,${key},workspace,${wsnumber}
|
||||
bind=,${key},submap,reset
|
||||
bind=SUPER,${key},execr,waybar_mode unset
|
||||
bind=SUPER,${key},execr,submap_indicator unset
|
||||
bind=SUPER,${key},workspace,${wsnumber}
|
||||
bind=SUPER,${key},submap,reset
|
||||
bind=SUPER SHIFT,${key},execr, waybar_mode unset
|
||||
bind=SUPER SHIFT,${key},execr, submap_indicator unset
|
||||
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
|
||||
bind=SUPER SHIFT,${key},submap,reset
|
||||
'';
|
||||
@@ -564,35 +652,35 @@ in {
|
||||
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
|
||||
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
||||
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
||||
bind=,Z,exec,waybar_mode set ' '
|
||||
bind=,Z,exec,submap_indicator set ' '
|
||||
bind=,Z,submap,tuda
|
||||
bind=,Z,submap,reset
|
||||
bind=,Escape,exec,waybar_mode unset
|
||||
bind=,Escape,exec,submap_indicator unset
|
||||
bind=,Escape,submap,reset
|
||||
submap = reset
|
||||
|
||||
|
||||
submap = scrL
|
||||
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||
bind = , A, execr, waybar_mode unset
|
||||
bind = , A, execr, submap_indicator unset
|
||||
bind = , A, submap, reset
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
submap = scrR
|
||||
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||
bind = , Y, execr, waybar_mode unset
|
||||
bind = , Y, execr, submap_indicator unset
|
||||
bind = , Y, submap, reset
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
submap = color
|
||||
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'change_colors_json img successfull' ''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'change_colors_json manual successfull' ''; }}
|
||||
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'NxTheme' 'change_colors_json img successfull' ''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'NxTheme' 'change_colors_json manual successfull' ''; }}
|
||||
${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
@@ -600,10 +688,19 @@ in {
|
||||
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
|
||||
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
submap = screenshot
|
||||
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
|
||||
${action_simple { key = "S"; cmd = ''exec,hyprshot -m output''; }}
|
||||
${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
|
||||
${action_simple { key = "A"; cmd = ''exec,hyprshot -m region''; }}
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
'';
|
||||
};
|
||||
@@ -681,7 +778,7 @@ in {
|
||||
valign = bottom
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
texlab # LSP
|
||||
(texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; })
|
||||
|
||||
5
home-modules/logitech.nix
Normal file
5
home-modules/logitech.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
solaar
|
||||
];
|
||||
}
|
||||
@@ -1,16 +1,15 @@
|
||||
{ pkgs, rice, ... }:
|
||||
{
|
||||
{ config, pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [ libnotify ];
|
||||
services.mako = with rice; {
|
||||
enable = true;
|
||||
enable = if config.programs.hyprpanel.enable then false else true;
|
||||
settings = {
|
||||
defaultTimeout = 10000; # in ms
|
||||
backgroundColor = color.background;
|
||||
textColor = color.foreground;
|
||||
borderColor = color.border;
|
||||
borderSize = border-width;
|
||||
default-timeout = 5000; # in ms
|
||||
background-color = color.background;
|
||||
text-color = color.foreground;
|
||||
font = font.code.name;
|
||||
borderRadius = rounding;
|
||||
border-size = border-width;
|
||||
border-radius = rounding;
|
||||
border-color = color.border;
|
||||
anchor = "top-right";
|
||||
margin = builtins.toString (gap-size * 2) ;
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# cinny-desktop
|
||||
|
||||
82
home-modules/mpv.nix
Normal file
82
home-modules/mpv.nix
Normal file
@@ -0,0 +1,82 @@
|
||||
{ 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
|
||||
# visualizer
|
||||
];
|
||||
bindings = {
|
||||
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
|
||||
"F5" = ''set contrast 0;set brightness 0;set gamma 0;set saturation 0;set hue 0;set sub-pos 100;set sub-scale 1;set panscan 0;set zoom 0;show-text default'';
|
||||
# "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);
|
||||
}
|
||||
'';
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
nixd
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.nvidia.enable == true)
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.nvidia.enable == true)
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, secrets, ... }: let
|
||||
{ pkgs, ... }@all: with all; let
|
||||
sep = " ";
|
||||
in {
|
||||
home = {
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "nx_backup";
|
||||
runtimeInputs = [ ];
|
||||
text = let
|
||||
web-root = "/var/nginx/webroot";
|
||||
web-root = hyper.webroot;
|
||||
gitea-backup = "/var/backup/gitea";
|
||||
postgres-backup = "/var/backup/postgresql";
|
||||
in /* bash */ ''
|
||||
@@ -59,8 +58,7 @@
|
||||
echo "Backup and encryption complete: $DESTINATION"
|
||||
|
||||
echo "Space remaining:"
|
||||
df -h | head -n 1
|
||||
df -h | grep -P "^/dev.+? "
|
||||
dysk
|
||||
'';
|
||||
})
|
||||
];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
ghostscript
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
# home.packages = with pkgs; [
|
||||
# obs-studio
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
libreoffice
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
ollama
|
||||
@@ -16,10 +16,10 @@ if len(sys.argv) < 2:
|
||||
system_message = sys.argv[1]
|
||||
input_text = sys.stdin.read()
|
||||
try:
|
||||
response = ollama.chat(model='llama3.1:8b', messages=[
|
||||
response = ollama.chat(model='gemma3:4b', messages=[
|
||||
{
|
||||
'role': 'system',
|
||||
'content': "You are a text transformer. Follow the folling instruction:\n\n" + system_message + "\n\nOnly output the transformed text. Do not add any addidional conversation around the output. Just the result.",
|
||||
'content': system_message,
|
||||
},
|
||||
{
|
||||
'role': 'user',
|
||||
|
||||
60
home-modules/opencode.nix
Normal file
60
home-modules/opencode.nix
Normal file
@@ -0,0 +1,60 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
programs.opencode = {
|
||||
enable = true;
|
||||
package = pkgs.opencode;
|
||||
themes.theme = with rice.color; let
|
||||
dl = color: { dark = color; light = color; };
|
||||
in {
|
||||
accent = dl accent.base;
|
||||
background = dl background;
|
||||
backgroundElement = dl subtle.dark;
|
||||
backgroundPanel = dl subtle.darker;
|
||||
border = dl subtle.base;
|
||||
borderActive = dl border;
|
||||
borderSubtle = dl subtle.dark;
|
||||
diffAdded = dl positive.base;
|
||||
diffAddedBg = dl positive.darker;
|
||||
diffAddedLineNumberBg = dl positive.dark;
|
||||
diffContext = dl foreground;
|
||||
diffContextBg = dl subtle.dark;
|
||||
diffHighlightAdded = dl positive.bright;
|
||||
diffHighlightRemoved = dl negative.bright;
|
||||
diffHunkHeader = dl foreground;
|
||||
diffLineNumber = dl subtle.base;
|
||||
diffRemoved = dl negative.base;
|
||||
diffRemovedBg = dl negative.darker;
|
||||
diffRemovedLineNumberBg = dl negative.dark;
|
||||
error = dl negative.dark;
|
||||
info = dl special.base;
|
||||
markdownBlockQuote = dl accent.base;
|
||||
markdownCode = dl secondary.base;
|
||||
markdownCodeBlock = dl secondary.base;
|
||||
markdownEmph = dl accent.base;
|
||||
markdownHeading = dl accent.base;
|
||||
markdownHorizontalRule = dl border;
|
||||
markdownImage = dl accent.base;
|
||||
markdownImageText = dl accent.bright;
|
||||
markdownLink = dl accent.base;
|
||||
markdownLinkText = dl accent.bright;
|
||||
markdownListEnumeration = dl foreground;
|
||||
markdownListItem = dl foreground;
|
||||
markdownStrong = dl accent.base;
|
||||
markdownText = dl foreground;
|
||||
primary = dl accent.base;
|
||||
secondary = dl secondary.base;
|
||||
success = dl positive.base;
|
||||
syntaxComment = dl subtle.base;
|
||||
syntaxFunction = dl accent.base;
|
||||
syntaxKeyword = dl special.base;
|
||||
syntaxNumber = dl tertiary.base;
|
||||
syntaxOperator = dl accent.base;
|
||||
syntaxPunctuation = dl foreground;
|
||||
syntaxString = dl accent.base;
|
||||
syntaxType = dl tertiary.base;
|
||||
syntaxVariable = dl accent.base;
|
||||
text = dl foreground;
|
||||
textMuted = dl subtle.bright;
|
||||
warning = dl weird.base;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
pandoc
|
||||
|
||||
19
home-modules/pkgs-list/desktop.nix
Normal file
19
home-modules/pkgs-list/desktop.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ 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
|
||||
cava
|
||||
];
|
||||
}
|
||||
22
home-modules/pkgs-list/programs.nix
Normal file
22
home-modules/pkgs-list/programs.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ pkgs, hyper, ... }: {
|
||||
home.packages = (with pkgs; [
|
||||
chromium
|
||||
gnome-clocks
|
||||
gnome-calculator
|
||||
gnome-characters
|
||||
gnome-2048
|
||||
qbittorrent
|
||||
wl-clipboard
|
||||
xfce.thunar
|
||||
]) ++ (if hyper.isWorkstation then (with pkgs; [
|
||||
signal-desktop
|
||||
unstable.code-cursor-fhs
|
||||
latest.antigravity
|
||||
element-desktop
|
||||
obsidian
|
||||
fontforge-gtk
|
||||
inkscape
|
||||
audacity
|
||||
libreoffice
|
||||
]) else []);
|
||||
}
|
||||
@@ -1,28 +1,33 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
asciinema
|
||||
bat
|
||||
browsh
|
||||
cmake
|
||||
cmatrix
|
||||
dig
|
||||
du-dust
|
||||
dust
|
||||
dysk
|
||||
exiftool
|
||||
eza
|
||||
ffmpeg
|
||||
figlet
|
||||
fzf
|
||||
gh
|
||||
glib
|
||||
glow
|
||||
gnumake
|
||||
htop
|
||||
imagemagick
|
||||
jq
|
||||
libxml2
|
||||
lolcat
|
||||
lynx
|
||||
mediainfo
|
||||
mpv
|
||||
neofetch
|
||||
nmap
|
||||
pastel
|
||||
pdfgrep
|
||||
pdftk
|
||||
pipes
|
||||
pv
|
||||
reflex
|
||||
@@ -32,7 +37,11 @@
|
||||
sssnake
|
||||
systemctl-tui
|
||||
tldr
|
||||
unstable.gemini-cli
|
||||
unstable.gemini-cli
|
||||
unstable.yt-dlp
|
||||
unstable.yt-dlp
|
||||
w3m
|
||||
yt-dlp
|
||||
which
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, hyper, secrets, ... }:
|
||||
pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.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,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
erlang
|
||||
rebar3
|
||||
|
||||
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
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
go
|
||||
];
|
||||
{ pkgs, ... }@all: with all; {
|
||||
programs.go = {
|
||||
enable = true;
|
||||
package = pkgs.go;
|
||||
env.goPath = "${config.xdg.dataHome}/go";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
nodejs
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = let
|
||||
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
||||
ipython
|
||||
pipdeptree
|
||||
requests
|
||||
google google-api-python-client google-auth-httplib2 google-auth-oauthlib
|
||||
debugpy
|
||||
# debugpy
|
||||
black
|
||||
uv
|
||||
uv-build
|
||||
]);
|
||||
in {
|
||||
packages = [
|
||||
python-with-packages
|
||||
];
|
||||
] ++ (with pkgs; [
|
||||
python313Packages.python-lsp-server
|
||||
ruff
|
||||
pyright
|
||||
]);
|
||||
sessionVariables = {
|
||||
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
|
||||
};
|
||||
|
||||
12
home-modules/programming/rust.nix
Normal file
12
home-modules/programming/rust.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
gdb
|
||||
cargo
|
||||
clippy
|
||||
rustc
|
||||
rustfmt
|
||||
rust-analyzer
|
||||
];
|
||||
};
|
||||
}
|
||||
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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,113 +1,46 @@
|
||||
{ pkgs, rice, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
rofi-wayland
|
||||
];
|
||||
home.file = let
|
||||
trdr = "${rice.lib.float-to-drune rice.transparency}";
|
||||
in with rice.color; {
|
||||
".config/rofi/config.rasi".text = ''
|
||||
configuration {
|
||||
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.name} 12";
|
||||
foreground: ${foreground};
|
||||
background-color: ${background}${trdr};
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
spacing: 0px;
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
#window {
|
||||
background-color: ${background}${trdr};
|
||||
border: ${builtins.toString rice.border-width}px;
|
||||
border-radius: ${builtins.toString rice.rounding};
|
||||
border-color: ${border};
|
||||
}
|
||||
#mainbox {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#message {
|
||||
border: 0px;
|
||||
}
|
||||
#textbox {
|
||||
text-color: ${foreground};
|
||||
}
|
||||
#listview {
|
||||
fixed-height: 0;
|
||||
border: 0px;
|
||||
spacing: 0px ;
|
||||
scrollbar: false;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#element {
|
||||
border: 0;
|
||||
padding: 0px;
|
||||
border-radius: ${if rice.rounding > 0 then "2" else "0"}px;
|
||||
}
|
||||
|
||||
#element.normal.normal { background-color: ${background}${trdr}; text-color: ${accent.base}; }
|
||||
#element.selected.normal { background-color: ${tertiary.base}${trdr}; text-color: ${background}; }
|
||||
#element.alternate.normal { background-color: ${background}${trdr}; text-color: ${secondary.base}; }
|
||||
|
||||
|
||||
#scrollbar {
|
||||
width: ${builtins.toString rice.border-width}px ;
|
||||
border: 0;
|
||||
handle-width: 8px ;
|
||||
padding: 0;
|
||||
}
|
||||
#sidebar {
|
||||
border: ${builtins.toString rice.border-width}px dash;
|
||||
}
|
||||
#button.selected {
|
||||
text-color: ${foreground};
|
||||
}
|
||||
#inputbar {
|
||||
spacing: 0;
|
||||
text-color: ${background};
|
||||
background-color: ${accent.base}${trdr};
|
||||
padding: 0;
|
||||
margine-bottom: 2px;
|
||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
||||
}
|
||||
#prompt {
|
||||
spacing: 0;
|
||||
background-color: transparent;
|
||||
text-color: ${foreground};
|
||||
}
|
||||
#textbox-prompt-colon {
|
||||
expand: false;
|
||||
str: ">";
|
||||
margin: 0px 0.3em 0em 0em ;
|
||||
text-color: ${background};
|
||||
background-color: transparent;
|
||||
}
|
||||
#case-indicator {
|
||||
spacing: 0;
|
||||
text-color: ${foreground};
|
||||
background-color: transparent;
|
||||
}
|
||||
#entry {
|
||||
spacing: 0;
|
||||
text-color: ${background};
|
||||
background-color: transparent;
|
||||
placeholder: "";
|
||||
}
|
||||
|
||||
element-text, element-icon {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
'';
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = {
|
||||
packages = with pkgs; [ rofi ];
|
||||
file = let # the home-manager module sucks
|
||||
trdr = "${rice.lib.float-to-drune rice.transparency}";
|
||||
ts = builtins.toString;
|
||||
in with rice.color; {
|
||||
".config/rofi/config.rasi".text = ''
|
||||
configuration {
|
||||
show-icons: false;
|
||||
display-drun: "";
|
||||
disable-history: false;
|
||||
}
|
||||
* {
|
||||
font: "${rice.font.code.name} 12";
|
||||
foreground: ${foreground};
|
||||
text-color: ${foreground};
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
spacing: 0px;
|
||||
border-width: 0px;
|
||||
}
|
||||
window {
|
||||
background-color: ${background}${trdr};
|
||||
border: ${ts rice.border-width}px;
|
||||
border-radius: ${ts rice.rounding}px;
|
||||
border-color: ${ts rice.color.border};
|
||||
}
|
||||
listview { scrollbar: false; }
|
||||
element { border-radius: ${ts rice.rounding}px; }
|
||||
element.normal.normal { background-color: ${accent.darker}; text-color: ${accent.base}; }
|
||||
element.selected.normal { background-color: ${accent.base}; text-color: ${accent.darker}; }
|
||||
element.alternate.normal { background-color: ${secondary.darker}; text-color: ${secondary.base}; }
|
||||
inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; }
|
||||
prompt { }
|
||||
textbox-prompt-colon {
|
||||
expand: false;
|
||||
str: ">";
|
||||
}
|
||||
case-indicator { }
|
||||
entry { placeholder: ""; }
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
xsane
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
let
|
||||
my-sent = pkgs.sent.override {
|
||||
patches = [
|
||||
|
||||
@@ -1,23 +1,7 @@
|
||||
{ hyper, inputs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
];
|
||||
|
||||
{ pkgs, ... }@all: with all; {
|
||||
imports = [ inputs.sops-nix.homeManagerModules.sops ];
|
||||
sops = {
|
||||
# age.keyFile = "/home/${user}/.config/sops/age/keys.txt";
|
||||
gnupg.home = "${hyper.home}/.gnupg";
|
||||
age.keyFile = "${hyper.home}/vault/age/sopsnix-${hyper.host}-home.key";
|
||||
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";
|
||||
# };
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
57
home-modules/spotify.nix
Normal file
57
home-modules/spotify.nix
Normal file
@@ -0,0 +1,57 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
unstable.spotify
|
||||
unstable.spicetify-cli
|
||||
];
|
||||
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 = accent.brighter; };
|
||||
selection = { bg = accent.dark; };
|
||||
table_header = { fg = tertiary.bright; };
|
||||
# playback_progress_bar_unfilled (Specific to progress_bar_type as Line) = "";
|
||||
};
|
||||
}];
|
||||
};
|
||||
}
|
||||
@@ -1,27 +1,52 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [ sshfs ];
|
||||
file.".ssh/config".text = ''
|
||||
HOST nxace
|
||||
HostName ssh.${hyper.domain}
|
||||
User ${hyper.user}
|
||||
Port 50022
|
||||
|
||||
HOST nxacel
|
||||
HostName 10.0.1.1
|
||||
User ${hyper.user}
|
||||
Port 50022
|
||||
|
||||
HOST nxrpil
|
||||
HostName 10.0.1.31
|
||||
User ${hyper.user}
|
||||
Port 22
|
||||
|
||||
HOST nxgit
|
||||
HostName ssh.${hyper.domain}
|
||||
User git
|
||||
Port 50022
|
||||
'';
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [ sshfs ];
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
package = pkgs.openssh;
|
||||
enableDefaultConfig = false;
|
||||
matchBlocks = let
|
||||
default = {
|
||||
addKeysToAgent = "yes";
|
||||
forwardAgent = false;
|
||||
compression = false;
|
||||
serverAliveInterval = 0;
|
||||
serverAliveCountMax = 3;
|
||||
hashKnownHosts = false;
|
||||
userKnownHostsFile = "~/.ssh/known_hosts";
|
||||
controlMaster = "no";
|
||||
controlPath = "~/.ssh/master-%r@%n:%p";
|
||||
controlPersist = "no";
|
||||
};
|
||||
nxace = name: default // {
|
||||
host = name;
|
||||
hostname = "ssh.${hyper.domain}";
|
||||
user = "nx2";
|
||||
port = 50022;
|
||||
identityFile = [ "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}" ];
|
||||
};
|
||||
in {
|
||||
"*" = default;
|
||||
"ssh.nx2.site" = default // { identityFile = [
|
||||
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"
|
||||
"${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}"
|
||||
]; };
|
||||
"tg.dm.informatik.tu-darmstadt.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/tg-dm-informatik-tuda" ]; };
|
||||
"git.da.dicos.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/dcsgit-lkurzweg-${hyper.host}" ]; };
|
||||
"github.com" = default // { identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ]; };
|
||||
"nxace" = (nxace "nxace" );
|
||||
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
|
||||
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
|
||||
"nx2s-email-relay" = default // {
|
||||
identityFile = "${hyper.home}/vault/ssh/nx2s-email-relay";
|
||||
hostname = "35.243.218.208";
|
||||
port = 22;
|
||||
user = secrets.ssh.nx2s-email-relay-user;
|
||||
};
|
||||
};
|
||||
};
|
||||
services.ssh-agent = {
|
||||
enable = true;
|
||||
# socket = "ssh-agent"; # suffix to $XDG_RUNTIME_DIR
|
||||
# package = pkgs.openssh;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
@@ -7,7 +7,7 @@
|
||||
enableFishIntegration = true;
|
||||
settings = with rice.color; {
|
||||
add_newline = false;
|
||||
format = pkgs.lib.strings.concatMapStrings (x: "$" + x) [
|
||||
format = lib.strings.concatMapStrings (x: "$" + x) [
|
||||
"jobs"
|
||||
"battery"
|
||||
"username"
|
||||
|
||||
84
home-modules/thunderbird.nix
Normal file
84
home-modules/thunderbird.nix
Normal file
@@ -0,0 +1,84 @@
|
||||
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
|
||||
programs.thunderbird = let
|
||||
inherit (lib.generators) toJSON;
|
||||
extensions = toJSON {} {
|
||||
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
|
||||
};
|
||||
in {
|
||||
enable = true;
|
||||
profiles = {
|
||||
"${hyper.user}" = {
|
||||
isDefault = true;
|
||||
settings = with rice.color; {
|
||||
"calendar.alarms.showmissed" = false;
|
||||
"calendar.alarms.playsound" = false;
|
||||
"calendar.alarms.show" = false;
|
||||
"extensions.webextensions.uuids" = extensions;
|
||||
"mail.startup.enabledMailCheckOnce" = true;
|
||||
"mailnews.mark_message_read.delay" = true;
|
||||
"mailnews.mark_message_read.delay.interval" = 3;
|
||||
"mailnews.tags.$label1.color" = red.base;
|
||||
"mailnews.tags.$label1.tag" = "Important";
|
||||
"mailnews.tags.$label2.color" = yellow.base;
|
||||
"mailnews.tags.$label2.tag" = "Work";
|
||||
"mailnews.tags.$label3.color" = green.base;
|
||||
"mailnews.tags.$label3.tag" = "Personal";
|
||||
"mailnews.tags.$label4.color" = cyan.base;
|
||||
"mailnews.tags.$label4.tag" = "To Do";
|
||||
"mailnews.tags.$label5.color" = blue.base;
|
||||
"mailnews.tags.$label5.tag" = "Later";
|
||||
"mailnews.headers.showMessageId" = true;
|
||||
"mailnews.headers.showOrganization" = true;
|
||||
"mailnews.headers.showReferences" = true;
|
||||
"mailnews.headers.showSender" = 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;
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication {
|
||||
|
||||
8
home-modules/typst.nix
Normal file
8
home-modules/typst.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
typst
|
||||
tinymist
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }: let
|
||||
{ pkgs, ... }@all: with all; let
|
||||
vws = pkgs.vale.withStyles (s: [ s.alex s.google ]);
|
||||
in {
|
||||
home = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
pkgs.lib.mkIf (hyper.host == "NxNORTH")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host == "NxNORTH")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
virt-manager
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, pkgs, hyper, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
config = pkgs.lib.mkIf (hyper.host != "NxACE") {
|
||||
config = lib.mkIf (hyper.host != "NxACE") {
|
||||
home.packages = [
|
||||
pkgs.vscodium
|
||||
pkgs.nixpkgs-fmt
|
||||
@@ -92,13 +92,13 @@
|
||||
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix";
|
||||
# sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8";
|
||||
# })
|
||||
# { inherit config pkgs; lib = pkgs.lib; })
|
||||
# { inherit config pkgs; lib = lib; })
|
||||
|
||||
# (import
|
||||
# (builtins.fetchurl {
|
||||
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix";
|
||||
# sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f";
|
||||
# })
|
||||
# { inherit config pkgs; lib = pkgs.lib; })
|
||||
# { inherit config pkgs; lib = lib; })
|
||||
# ] else [];
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(writers.writePython3Bin "change_colors_json" {
|
||||
libraries = with python3Packages; [ numpy pillow scikit-learn ];
|
||||
home.packages = [
|
||||
(pkgs.writers.writePython3Bin "change_colors_json" {
|
||||
libraries = with pkgs.python3Packages; [ numpy pillow scikit-learn ];
|
||||
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||
} /*python */ ''
|
||||
from colorsys import hls_to_rgb, rgb_to_hls
|
||||
@@ -119,7 +119,7 @@
|
||||
return Palette(colors)
|
||||
|
||||
def hyprpicker() -> Color:
|
||||
ret = str(subprocess.run(["${pkgs.hyprpicker}/bin/hyprpicker", "-n", "-f", "rgb"], capture_output=True).stdout)[2:-3]
|
||||
ret = str(subprocess.run(["bash", "-c", "${pkgs.hyprpicker}/bin/hyprpicker -n -f rgb | tail -n 1"], capture_output=True).stdout)[2:-3]
|
||||
return Color([int(c) for c in ret.split(" ")])
|
||||
|
||||
if __name__ == "__main__":
|
||||
@@ -139,9 +139,12 @@
|
||||
weird = alter_hue(ilist=accent, hue=80)
|
||||
special = alter_hue(ilist=accent, hue=180)
|
||||
foreground = alter_l(accent, 0.9)
|
||||
background = alter_l(accent, 0.1)
|
||||
background = alter_l(accent, 0.05)
|
||||
|
||||
d = {
|
||||
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "r") as f:
|
||||
full_d = json.load(f)
|
||||
|
||||
full_d['${hyper.host}'] = {
|
||||
"base": {
|
||||
"foreground": list_to_hex(foreground),
|
||||
"background": list_to_hex(background)
|
||||
@@ -155,8 +158,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f:
|
||||
f.write(json.dumps(d, indent=4))
|
||||
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "w") as f:
|
||||
f.write(json.dumps(full_d, indent=4))
|
||||
'')
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,372 +0,0 @@
|
||||
{ pkgs, hyper, rice, ... }:
|
||||
let
|
||||
sep = " ";
|
||||
in {
|
||||
sops.secrets = {
|
||||
"nx2site/radicale/password" = { };
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
|
||||
print_help() {
|
||||
echo "Usage: waybar_mode {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/waybar-mode
|
||||
pkill -RTMIN+8 waybar
|
||||
else
|
||||
echo "Error: 'set' operation requires exactly one string argument."
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
unset)
|
||||
echo "" > /tmp/waybar-mode
|
||||
pkill -RTMIN+8 waybar
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown command '$1'"
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
'';})
|
||||
(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
|
||||
'';})
|
||||
(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)
|
||||
|
||||
|
||||
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.events():
|
||||
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
|
||||
|
||||
if __name__ == "__main__":
|
||||
password_file = "/home/nx2/.config/sops-nix/secrets/nx2site/radicale/password" # Path to password file
|
||||
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||
url = "https://dav.${hyper.domain}/"
|
||||
username = "${hyper.user}"
|
||||
password = get_password(password_file)
|
||||
|
||||
event_dict = load_cache(cache_file)
|
||||
now = datetime.now(timezone.utc).timestamp()
|
||||
|
||||
if event_dict is None or event_dict['event_begin'].timestamp() <= now and now < event_dict['event_end'].timestamp():
|
||||
event_dict = get_ongoing_or_next_event(url, username, password)
|
||||
if event_dict is None:
|
||||
print("No upcoming events found.")
|
||||
exit(0)
|
||||
cache_data = {
|
||||
"event_name": event_dict['event_name'] if event_dict is not None else None,
|
||||
"event_begin": event_dict['event_begin'] if event_dict is not None else None,
|
||||
"event_end": event_dict['event_end'] if event_dict is not None else None
|
||||
}
|
||||
save_cache(cache_file, cache_data)
|
||||
|
||||
if event_dict:
|
||||
event_start = event_dict['event_begin'].timestamp()
|
||||
event_end = event_dict['event_end'].timestamp()
|
||||
|
||||
if event_start <= now <= event_end:
|
||||
time_remaining = event_end - now
|
||||
hours, rem = divmod(int(time_remaining), 3600)
|
||||
minutes, _ = divmod(rem, 60)
|
||||
print(f"{event_dict['event_name']} ends in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
|
||||
else:
|
||||
time_until_start = event_start - now
|
||||
hours, rem = divmod(int(time_until_start), 3600)
|
||||
minutes, _ = divmod(rem, 60)
|
||||
print(f"{event_dict['event_name']} starts in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
|
||||
else:
|
||||
print("No upcoming events found.")
|
||||
'')
|
||||
];
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
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/waybar-mode";
|
||||
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 ''
|
||||
* {
|
||||
font-family: ${rice.font.code.name};
|
||||
font-size: 1em;
|
||||
min-height: 0px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(${f background},${builtins.toString rice.transparency});
|
||||
transition-duration: 5s;
|
||||
transition-property: background-color;
|
||||
/* border: ${builtins.toString rice.border-width}px solid rgb(${f border}); */
|
||||
/* margin: ${builtins.toString rice.gap-size}px; */
|
||||
/* border-radius: ${builtins.toString rice.rounding}px; */
|
||||
}
|
||||
|
||||
#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 {
|
||||
font-family: ${rice.font.code.name};
|
||||
}
|
||||
|
||||
#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});
|
||||
}
|
||||
|
||||
#custom-mode {
|
||||
color: rgb(${f red.base});
|
||||
}
|
||||
|
||||
#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});
|
||||
}
|
||||
'';
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, rice,... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [ wlogout ];
|
||||
|
||||
32
home-modules/xdg.nix
Normal file
32
home-modules/xdg.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
xdg = {
|
||||
enable = true;
|
||||
configHome = "${hyper.home}/.config";
|
||||
cacheHome = "${hyper.home}/.cache";
|
||||
dataHome = "${hyper.home}/.local/share";
|
||||
stateHome = "${hyper.home}/.local/state";
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = let
|
||||
browser = "firefox.desktop";
|
||||
image = "imv.desktop";
|
||||
in {
|
||||
"default-web-browser" = [ browser ];
|
||||
"text/html" = [ browser ];
|
||||
"text/htm" = [ browser ];
|
||||
"x-scheme-handler/http" = [ browser ];
|
||||
"x-scheme-handler/https" = [ browser ];
|
||||
"x-scheme-handler/about" = [ browser ];
|
||||
"x-scheme-handler/unknown" = [ browser ];
|
||||
"x-scheme-handler/mailto" = "thunderbird.desktop";
|
||||
"image/png" = image;
|
||||
"image/jpg" = image;
|
||||
"image/jpeg" = image;
|
||||
"image/webp" = image;
|
||||
"image/gif" = image;
|
||||
"application/pdf" = "zathura.desktop";
|
||||
"inode/directory" = "thunar.desktop";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,23 +1,19 @@
|
||||
{ pkgs, hyper, rice, inputs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
unar
|
||||
{ pkgs, ... }@all: with all; let
|
||||
not-nod = (pkgs.pkgs-version != "24.05");
|
||||
tfc = pkgs.unstable.xdg-desktop-portal-termfilechooser;
|
||||
in {
|
||||
home.packages = [
|
||||
pkgs.unar
|
||||
tfc
|
||||
];
|
||||
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
# package = pkgs.yazi;
|
||||
package = inputs.yazi.packages.${hyper.system}.default;
|
||||
enableFishIntegration = true;
|
||||
shellWrapperName = "ya";
|
||||
plugins = with inputs.yazi-plugins.packages.${hyper.system}; {
|
||||
inherit
|
||||
# chmod
|
||||
starship;
|
||||
};
|
||||
# initLua = /* lua */ '' '';
|
||||
# initLua = /* lua */ '' ''; # down
|
||||
keymap = {
|
||||
manager.keymap = [
|
||||
mgr.keymap = [
|
||||
{ on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; }
|
||||
{ on = "q"; run = "quit"; desc = "Exit the process"; }
|
||||
{ on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; }
|
||||
@@ -34,22 +30,24 @@
|
||||
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||
{ on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; }
|
||||
{ on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; }
|
||||
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
||||
{ on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
|
||||
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
|
||||
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
|
||||
{ on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; }
|
||||
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; }
|
||||
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
|
||||
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp directory"; }
|
||||
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
|
||||
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
||||
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
|
||||
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
||||
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
|
||||
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; }
|
||||
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
||||
{ on = [ "g" "N" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
|
||||
{ on = [ "g" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
|
||||
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp directory"; }
|
||||
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
|
||||
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
||||
(pkgs.lib.mkIf (hyper.isServer) { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
|
||||
# Navigation
|
||||
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
|
||||
@@ -70,8 +68,10 @@
|
||||
# Operation
|
||||
{ on = "o"; run = "open"; desc = "Open selected files"; }
|
||||
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
||||
{ on = "<Enter>"; run = "plugin smart-enter"; desc = "Open selected files"; }
|
||||
# { on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
||||
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||
{ on = "y"; run = [ ''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'' "yank" ]; desc = "Yank selected files (copy)"; }
|
||||
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
||||
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
||||
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
||||
@@ -88,8 +88,8 @@
|
||||
{ on = ";"; run = "shell --interactive"; desc = "Run a shell command"; }
|
||||
{ on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; }
|
||||
{ on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; }
|
||||
{ on = "s"; run = "search fd"; desc = "Search files by name using fd"; }
|
||||
{ on = "S"; run = "search rg"; desc = "Search files by content using ripgrep"; }
|
||||
{ on = "s"; run = "search --via=fd"; desc = "Search files by name using fd"; }
|
||||
{ on = "S"; run = "search --via=rg"; desc = "Search files by content using ripgrep"; }
|
||||
{ on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; }
|
||||
{ on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; }
|
||||
{ on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; }
|
||||
@@ -158,8 +158,13 @@
|
||||
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; }
|
||||
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab wittab"; }
|
||||
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
|
||||
{ on = "<Tab>"; run = "spot"; desc = "Show Spot View"; }
|
||||
# Tasks
|
||||
{ on = "w"; run = "tasks_show"; desc = "Show task manager"; }
|
||||
{ on = "w"; run = "tasks:show"; desc = "Show Task View"; }
|
||||
# Magic
|
||||
{ on = "<C-h>"; run = "shell 'hx .' --block"; desc = "Open current directoy in Helix"; }
|
||||
{ on = "<C-g>"; run = "shell 'lazygit' --block"; desc = "Open current directoy in Lazygit"; }
|
||||
{ on = "<C-y>"; run = ''shell 'ghostty --command="fish -C nx_yazi_into_fish"' --orphan ''; desc = "Open current directoy in a new ghostty window"; }
|
||||
];
|
||||
tasks.keymap = [
|
||||
# Task
|
||||
@@ -168,8 +173,8 @@
|
||||
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; }
|
||||
{ on = "c"; run = "cancel"; desc = "Cancel Task"; }
|
||||
{ on = "i"; run = "inspect"; desc = "Inspect Task"; }
|
||||
{ on = "j"; run = "arrow -1"; desc = "Up in list"; }
|
||||
{ on = "k"; run = "arrow 1"; desc = "Down in list"; }
|
||||
{ on = "k"; run = "arrow -1"; desc = "Up in list"; }
|
||||
{ on = "j"; run = "arrow 1"; desc = "Down in list"; }
|
||||
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
|
||||
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
|
||||
];
|
||||
@@ -179,9 +184,22 @@
|
||||
{ on = "?"; run = "help"; desc = "Open help"; }
|
||||
{ on = "<F1>"; run = "help"; desc = "Open help"; }
|
||||
];
|
||||
spot.keymap = [
|
||||
# Spot
|
||||
{ on = "<Tab>"; run = "close"; desc = "Close Spot View"; }
|
||||
{ on = "q"; run = "close"; desc = "Close Spot View"; }
|
||||
{ on = "<Esc>"; run = "close"; desc = "Close Spot View"; }
|
||||
{ on = "k"; run = "arrow -1"; desc = "Up in list"; }
|
||||
{ on = "j"; run = "arrow 1"; desc = "Down in list"; }
|
||||
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
|
||||
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
|
||||
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
||||
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
|
||||
{ on = "c"; run = "copy cell"; desc = "Copy Selected Cell"; }
|
||||
];
|
||||
};
|
||||
settings = {
|
||||
manager = {
|
||||
mgr = {
|
||||
layout = [2 3 4];
|
||||
sort_by = "natural";
|
||||
sort_sensitive = true;
|
||||
@@ -193,74 +211,74 @@
|
||||
};
|
||||
opener = {
|
||||
"edit" = [
|
||||
{ run = ''hx "$@"''; desc = "helix"; block = true; }
|
||||
{ run = ''codium "$@"''; desc = "code"; orphan = true; }
|
||||
{ run = ''hx "$@"''; desc = "Helix"; block = true; }
|
||||
{ run = ''codium "$@"''; desc = "VS Code"; orphan = true; }
|
||||
{ run = ''cat "$@" | wl-copy''; desc = "Copy Contents"; }
|
||||
];
|
||||
"play" = [
|
||||
{ run = ''mpv "$@"''; desc = "mpv"; orphan = true; }
|
||||
{ run = ''mpv --vf=negate "$@"''; desc = "mpv inverted"; orphan = true; }
|
||||
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; }
|
||||
{ run = ''mpv "$@"''; desc = "MPV"; orphan = true; }
|
||||
{ run = ''mpv --vf=negate "$@"''; desc = "MPV inverted"; orphan = true; }
|
||||
{ run = ''mediainfo "$1"; echo "Press enter to return to yazi"; read''; block = true; desc = "Show mediainfo"; }
|
||||
];
|
||||
"archive" = [
|
||||
{ run = ''unar "$1"''; desc = "Extract here"; }
|
||||
{ run = ''tar -x "$1"''; desc = "tar -x"; }
|
||||
{ run = ''unzip "$1"''; desc = "unzip"; }
|
||||
{ run = ''unar "$@"''; desc = "Extract here"; }
|
||||
{ run = ''tar -x "$@"''; desc = "tar -x"; }
|
||||
{ run = ''unzip "$@"''; desc = "unzip"; }
|
||||
];
|
||||
"image" = [
|
||||
{ run = ''imv "$@"''; desc = "imv"; orphan = true; }
|
||||
{ run = ''gimp "$@"''; desc = "gimp"; orphan = true; }
|
||||
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; }
|
||||
{ run = ''exiftool "$@"; echo "Press enter to exit"; read''; desc = "View Exif Data"; }
|
||||
{ run = ''for f in "$@"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
|
||||
{ run = ''imv "$@"''; desc = "IMV"; orphan = true; }
|
||||
{ run = ''gimp "$@"''; desc = "Gimp"; orphan = true; }
|
||||
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$1"''; desc = "swww wallpaper"; }
|
||||
{ run = ''exiftool "$1"; echo "Press enter to return to yazi"; read''; desc = "View Exif Data"; }
|
||||
{ run = ''for f in "$1"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
|
||||
];
|
||||
"svg" = [
|
||||
{ run = ''inkscape "$@"''; desc = "inkscape"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||
{ run = ''inkscape "$@"''; desc = "Inkscape"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
|
||||
];
|
||||
"font" = [
|
||||
{ run = ''fontpreview "$@"''; desc = "fontpreview"; orphan = true; }
|
||||
{ run = ''fontforge "$@"''; desc = "fortforge"; orphan = true; }
|
||||
{ run = ''fontpreview "$@"''; desc = "Fontpreview"; orphan = true; }
|
||||
{ run = ''fontforge "$@"''; desc = "Fortforge"; orphan = true; }
|
||||
];
|
||||
"document" = [
|
||||
{ run = ''zathura "$@"''; desc = "zathura"; orphan = true; }
|
||||
{ run = ''xournal "$@"''; desc = "xournal"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||
{ run = ''zathura "$@"''; desc = "Zathura"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
|
||||
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
|
||||
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
|
||||
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
|
||||
];
|
||||
"browser" = [
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||
{ run = ''zen "$@"''; desc = "zen"; orphan = true; }
|
||||
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
|
||||
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "Chromium"; orphan = true; }
|
||||
{ run = ''w3m "$@"''; desc = "w3m"; }
|
||||
{ run = ''lynx "$@"''; desc = "lynx"; }
|
||||
{ run = ''lynx "$@"''; desc = "Lynx"; }
|
||||
];
|
||||
"office" = [
|
||||
{ run = ''libreoffice "$@"''; desc = "libreoffice"; orphan = true; }
|
||||
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; orphan = true; }
|
||||
{ run = ''libreoffice "$@"''; desc = "LibreOffice"; orphan = true; }
|
||||
{ run = ''libreoffice --view "$@"''; desc = "LibreOffice read-only"; orphan = true; }
|
||||
];
|
||||
"shell" = [
|
||||
{ run = ''bash -c "$@"''; desc = "bash -c"; }
|
||||
{ run = ''fish -c "$@"''; desc = "fish -c"; }
|
||||
{ run = ''sh -c "$@"''; desc = "sh -c"; }
|
||||
{ run = ''bash -c "$1"; echo "Press enter to return to yazi"; read''; desc = "bash -c"; }
|
||||
{ run = ''fish -c "$1"; echo "Press enter to return to yazi"; read''; desc = "fish -c"; }
|
||||
{ run = ''sh -c "$1"; echo "Press enter to return to yazi"; read''; desc = "sh -c"; }
|
||||
];
|
||||
"python" = [
|
||||
{ run = ''python "$@"''; desc = "python"; }
|
||||
{ run = ''python "$@"; echo "Press enter to return to yazi"; read''; desc = "Python"; block = true; }
|
||||
];
|
||||
"directory" = [
|
||||
{ run = ''lazygit "$@"''; desc = "python"; }
|
||||
{ run = ''lazygit "$1"''; desc = "LazyGit"; }
|
||||
];
|
||||
};
|
||||
open.rules = [
|
||||
{ mime = "text/html"; use = [ "edit" "browser" ]; }
|
||||
{ mime = "text/htm"; use = [ "edit" "browser" ]; }
|
||||
{ mime = "text/x-python"; use = "python"; }
|
||||
{ mime = "text/x-script.python"; use = [ "edit" "python" ]; }
|
||||
{ mime = "text/script.python"; use = [ "edit" "python" ]; }
|
||||
{ mime = "text/*"; use = "edit"; }
|
||||
{ mime = "text"; use = "edit"; }
|
||||
|
||||
{ mine = "inode/x-empty"; use = "edit"; }
|
||||
{ mine = "inode/directory"; use = "edit"; }
|
||||
{ mime = "inode/x-empty"; use = "directory"; }
|
||||
{ mime = "inode/directory"; use = "directory"; }
|
||||
|
||||
{ mime = "image/*"; use = "image"; }
|
||||
{ mime = "image/svg"; use = [ "image" "edit" ]; }
|
||||
@@ -293,7 +311,7 @@
|
||||
];
|
||||
};
|
||||
theme = with rice.color; {
|
||||
manager = {
|
||||
mgr = {
|
||||
cwd = { fg = foreground; bg = background; };
|
||||
hovered = { fg = background; bg = accent.base; };
|
||||
preview_hovered = { underline = false; };
|
||||
@@ -308,26 +326,76 @@
|
||||
border_symbol = "│";
|
||||
border_style = { fg = border; };
|
||||
};
|
||||
tabs = {
|
||||
active = { fg = secondary.dark; bg = secondary.base; };
|
||||
inactive = { fg = secondary.base; bg = secondary.dark; };
|
||||
# sep_inner = { open = "[", close = "]" };
|
||||
# sep_outer = { open = "[", close = "]" };
|
||||
};
|
||||
mode = {
|
||||
main_main = { fg = yellow.bright; bg = yellow.dark; };
|
||||
select_main = { fg = cyan.bright; bg = cyan.dark; };
|
||||
unset_main = { fg = blue.bright; bg = blue.dark; };
|
||||
main_alternative = { fg = yellow.brighter; bg = yellow.dark; };
|
||||
select_alternative = { fg = cyan.brighter; bg = cyan.dark; };
|
||||
unset_alternative = { fg = blue.brighter; bg = blue.dark; };
|
||||
};
|
||||
confirm = {
|
||||
border = { fg = border; };
|
||||
title = { fg = accent.bright; };
|
||||
body = { fg = "#ff0000"; };
|
||||
list = { fg = "#ff0000"; };
|
||||
btn_yes = { fg = positive.base; bg = positive.dark; };
|
||||
btn_no = { fg = negative.base; bg = negative.dark; };
|
||||
btn_labels = [ " BET " " HELLNAW " ];
|
||||
};
|
||||
spot = {
|
||||
border = { fg = border; };
|
||||
title = { fg = accent.bright; };
|
||||
tbl_col = { fg = accent.base; };
|
||||
tbl_cell = { fg = secondary.base; };
|
||||
};
|
||||
notify = {
|
||||
title_info = { fg = accent.base; };
|
||||
title_warn = { fg = weird.base; };
|
||||
title_error = { fg = special.base; };
|
||||
};
|
||||
pick = {
|
||||
border = { fg = border; };
|
||||
active = { fg = accent.bright; };
|
||||
inactive = { fg = subtle.bright; };
|
||||
};
|
||||
status = {
|
||||
separator_open = " "; #"";
|
||||
separator_close = " "; #"";
|
||||
separator_style = { fg = accent.base; bg = black.base; };
|
||||
mode_normal = { fg = yellow.bright; bg = yellow.dark; };
|
||||
mode_select = { fg = cyan.bright; bg = cyan.dark; };
|
||||
mode_unset = { fg = blue.bright; bg = blue.dark; };
|
||||
# sep_right = { open = ""; close = ""; };
|
||||
# sep_left = { open = ""; close = ""; };
|
||||
sepr_style = { fg = accent.base; bg = black.base; };
|
||||
progress_label = { fg = secondary.base; bold = true; };
|
||||
progress_normal = { fg = accent.base; bg = black.base; };
|
||||
progress_error = { fg = negative.base; bg = black.base; };
|
||||
permissions_t = { fg = special.base; };
|
||||
permissions_r = { fg = accent.base; };
|
||||
permissions_w = { fg = secondary.base; };
|
||||
permissions_x = { fg = tertiary.base; };
|
||||
permissions_s = { fg = special.base; };
|
||||
perm_type = { fg = special.base; };
|
||||
perm_read = { fg = accent.base; };
|
||||
perm_write = { fg = secondary.base; };
|
||||
perm_exec = { fg = tertiary.base; };
|
||||
perm_sep = { fg = special.base; };
|
||||
};
|
||||
indicator = { # your "cursor"
|
||||
parent = { fg = secondary.darker; bg = secondary.base; };
|
||||
current = { fg = accent.darker; bg = accent.base; };
|
||||
preview = { fg = secondary.base; bg = secondary.darker; };
|
||||
# padding = { open = " "; close = " "; };
|
||||
};
|
||||
cmp = {
|
||||
border = { fg = border; };
|
||||
active = { fg = accent.base; };
|
||||
inactive = { fg = subtle.base; };
|
||||
# icon_file =
|
||||
# icon_folder =
|
||||
# icon_command
|
||||
};
|
||||
input = {
|
||||
border = { fg = border; };
|
||||
title = {};
|
||||
value = {};
|
||||
title = { fg = accent.bright; };
|
||||
value = { fg = foreground; };
|
||||
selected = { reversed = true; };
|
||||
};
|
||||
select = {
|
||||
@@ -337,8 +405,8 @@
|
||||
};
|
||||
tasks = {
|
||||
border = { fg = border2; };
|
||||
title = {};
|
||||
hovered = { underline = true; };
|
||||
title = { fg = accent.base; bold = true; };
|
||||
hovered = { fg = accent.bright; };
|
||||
};
|
||||
which = {
|
||||
mask = { bg = black.base; };
|
||||
@@ -349,11 +417,11 @@
|
||||
separator_style = { fg = foreground; };
|
||||
};
|
||||
help = {
|
||||
on = { fg = "#fe8019"; };
|
||||
exec = { fg = "#83a598"; };
|
||||
desc = { fg = "#928374"; };
|
||||
hovered = { bg = "#504945"; bold = true; };
|
||||
footer = { fg = "#3c3836"; bg = "#a89984"; };
|
||||
on = { fg = accent.base; };
|
||||
run = { fg = secondary.base; };
|
||||
desc = { fg = tertiary.base; italic = true; };
|
||||
hovered = { bg = accent.bright; bold = true; };
|
||||
footer = { fg = accent.base; bg = subtle.dark; };
|
||||
};
|
||||
filetype = {
|
||||
rules = [
|
||||
@@ -361,19 +429,75 @@
|
||||
{ mime = "inode/x-empty"; fg = white.dark; }
|
||||
{ mime = "inode/directory"; fg = accent.base; }
|
||||
|
||||
{ name = "*"; is = "link"; fg = tertiary.base; }
|
||||
{ name = "*"; is = "orphan"; fg = negative.base; }
|
||||
{ name = "*"; is = "block"; fg = special.base; }
|
||||
{ name = "*"; is = "char"; fg = special.bright; }
|
||||
{ name = "*"; is = "exec"; fg = secondary.base; }
|
||||
{ name = "*"; is = "fifo"; fg = weird.base; }
|
||||
{ name = "*"; is = "sock"; fg = weird.bright; }
|
||||
{ name = "*"; is = "sticky"; fg = special.base; }
|
||||
{ url = "*"; is = "link"; fg = tertiary.base; }
|
||||
{ url = "*"; is = "orphan"; fg = negative.base; }
|
||||
{ url = "*"; is = "block"; fg = special.base; }
|
||||
{ url = "*"; is = "char"; fg = special.bright; }
|
||||
{ url = "*"; is = "exec"; fg = secondary.base; }
|
||||
{ url = "*"; is = "fifo"; fg = weird.base; }
|
||||
{ url = "*"; is = "sock"; fg = weird.bright; }
|
||||
{ url = "*"; is = "sticky"; fg = special.base; }
|
||||
|
||||
# Fallback
|
||||
{ name = "*"; fg = foreground; }
|
||||
{ url = "*"; fg = foreground; }
|
||||
];
|
||||
};
|
||||
};
|
||||
} // (if not-nod then {
|
||||
shellWrapperName = "ya";
|
||||
initLua = /* lua */ ''
|
||||
require("zoxide"):setup {
|
||||
update_db = true,
|
||||
}
|
||||
Status:children_add(function()
|
||||
local h = cx.active.current.hovered
|
||||
if not h or ya.target_family() ~= "unix" then
|
||||
return ""
|
||||
end
|
||||
|
||||
return ui.Line {
|
||||
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
||||
":",
|
||||
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
||||
" ",
|
||||
}
|
||||
end, 500, Status.RIGHT)
|
||||
|
||||
Header:children_add(function()
|
||||
if ya.target_family() ~= "unix" then
|
||||
return ""
|
||||
end
|
||||
return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
|
||||
end, 500, Header.LEFT)
|
||||
'';
|
||||
plugins = { inherit (pkgs.yaziPlugins)
|
||||
glow git smart-enter;
|
||||
};
|
||||
} else {});
|
||||
|
||||
xdg = {
|
||||
configFile."xdg-desktop-portal-termfilechooser/config" = {
|
||||
force = true;
|
||||
text = ''
|
||||
[filechooser]
|
||||
cmd=${tfc}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
|
||||
default_dir=$HOME
|
||||
env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
||||
open_mode=suggested
|
||||
save_mode=suggested
|
||||
'';
|
||||
};
|
||||
portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
|
||||
extraPortals = [ tfc ] ++ (with pkgs; [
|
||||
xdg-desktop-portal
|
||||
xdg-desktop-portal-gnome
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-wlr
|
||||
]);
|
||||
};
|
||||
};
|
||||
home.sessionVariables."GTK_USE_PORTAL" = "1";
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
completion-fg = foreground;
|
||||
completion-highlight-bg = background;
|
||||
completion-highlight-fg = accent.base;
|
||||
default-bg = "rgba(${f background},${t})";
|
||||
default-bg = "rgba(${f accent.dark},${t})";
|
||||
default-fg = foreground;
|
||||
highlight-active-color = "rgba(${f accent.base},0.5)";
|
||||
highlight-color = "rgba(${f secondary.base},0.5)";
|
||||
|
||||
138
home.nix
138
home.nix
@@ -1,16 +1,19 @@
|
||||
{ pkgs, hyper, inputs, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
imports = [
|
||||
./home-modules/auto-mount.nix
|
||||
./home-modules/bar.nix
|
||||
./home-modules/bash.nix
|
||||
./home-modules/bitwarden.nix
|
||||
./home-modules/calendar.nix
|
||||
./home-modules/chatterino.nix
|
||||
./home-modules/clipboard.nix
|
||||
./home-modules/color-pallete.nix
|
||||
./home-modules/contact.nix
|
||||
./home-modules/direnv.nix
|
||||
./home-modules/discord.nix
|
||||
./home-modules/email.nix
|
||||
./home-modules/firefox.nix
|
||||
./home-modules/figlet.nix
|
||||
./home-modules/firefox/firefox.nix
|
||||
./home-modules/fish.nix
|
||||
./home-modules/games.nix
|
||||
./home-modules/gestures.nix
|
||||
@@ -23,143 +26,54 @@
|
||||
./home-modules/hyprland-autoname-workspaces.nix
|
||||
./home-modules/hyprland.nix
|
||||
./home-modules/kitty.nix
|
||||
./home-modules/latex.nix
|
||||
# ./home-modules/latex.nix
|
||||
./home-modules/logitech.nix
|
||||
./home-modules/mako.nix
|
||||
# ./home-modules/matrix.nix
|
||||
# ./home-modules/nm.nix
|
||||
./home-modules/mpv.nix
|
||||
./home-modules/nh.nix
|
||||
./home-modules/nixd.nix
|
||||
./home-modules/nvidia.nix
|
||||
./home-modules/nxgs.nix
|
||||
./home-modules/obs.nix
|
||||
./home-modules/office.nix
|
||||
# ./home-modules/office.nix
|
||||
./home-modules/ollama.nix
|
||||
./home-modules/opencode.nix
|
||||
./home-modules/pandoc.nix
|
||||
./home-modules/pnx.nix
|
||||
./home-modules/programming/c.nix
|
||||
./home-modules/programming/gleam.nix
|
||||
./home-modules/programming/go.nix
|
||||
./home-modules/programming/java.nix
|
||||
./home-modules/programming/js.nix
|
||||
./home-modules/programming/python.nix
|
||||
./home-modules/pkgs-list/desktop.nix
|
||||
./home-modules/pkgs-list/programs.nix
|
||||
./home-modules/pkgs-list/shell.nix
|
||||
# ./home-modules/pnx.nix
|
||||
./home-modules/programming.nix
|
||||
./home-modules/qt.nix
|
||||
./home-modules/rclone.nix
|
||||
./home-modules/rofi.nix
|
||||
./home-modules/scanning.nix
|
||||
./home-modules/sent.nix
|
||||
./home-modules/sops.nix
|
||||
./home-modules/spotify.nix
|
||||
./home-modules/ssh.nix
|
||||
./home-modules/starship.nix
|
||||
./home-modules/thunderbird.nix
|
||||
./home-modules/tts.nix
|
||||
./home-modules/typst.nix
|
||||
./home-modules/vale.nix
|
||||
./home-modules/virt-manager.nix
|
||||
./home-modules/vscode.nix
|
||||
./home-modules/wallpaper-to-colors.nix
|
||||
./home-modules/waybar.nix
|
||||
./home-modules/wlogout.nix
|
||||
./home-modules/xdg.nix
|
||||
./home-modules/yazi.nix
|
||||
./home-modules/zathura.nix
|
||||
./home-modules/zoxide.nix
|
||||
] ++ (if (hyper.host == "NxACE") then [
|
||||
] ++ (if hyper.isServer then [
|
||||
./home-modules/nx2site.nix
|
||||
./home-modules/nx2site-backup.nix
|
||||
./home-modules/calendar-campuszeit-fix.nix
|
||||
] else []);
|
||||
home.username = hyper.user;
|
||||
# home.homeDirectory = hyper.home; # for some reason you cant use hyper.home here
|
||||
home.homeDirectory = "/home/${hyper.user}";
|
||||
home.stateVersion = pkgs.version;
|
||||
home.packages = with pkgs; [
|
||||
bat
|
||||
brightnessctl
|
||||
browsh
|
||||
chromium
|
||||
cmake
|
||||
dig
|
||||
du-dust
|
||||
exiftool
|
||||
eza
|
||||
ffmpeg
|
||||
figlet
|
||||
fontpreview
|
||||
fzf
|
||||
glib
|
||||
glow
|
||||
gnumake
|
||||
gsettings-desktop-schemas
|
||||
imagemagick
|
||||
imv
|
||||
jq
|
||||
lolcat
|
||||
lynx
|
||||
mediainfo
|
||||
mpv
|
||||
neofetch
|
||||
pavucontrol
|
||||
pdfgrep
|
||||
piper-tts
|
||||
pipes
|
||||
playerctl
|
||||
pv
|
||||
qbittorrent
|
||||
reflex
|
||||
ripgrep
|
||||
screen
|
||||
# speedtest-go
|
||||
spicetify-cli
|
||||
sssnake
|
||||
swww
|
||||
systemctl-tui
|
||||
tldr
|
||||
unstable.firefox
|
||||
unstable.spotify
|
||||
w3m
|
||||
wev
|
||||
wl-clipboard
|
||||
xclip
|
||||
xfce.thunar
|
||||
# xournal
|
||||
yt-dlp
|
||||
|
||||
inputs.zen-browser.packages."${system}".default
|
||||
|
||||
] ++ (if (hyper.host != "NxACE") then [
|
||||
signal-desktop
|
||||
obsidian
|
||||
zoom-us
|
||||
inkscape
|
||||
] else []);
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
configHome = "${hyper.home}.config";
|
||||
cacheHome = "${hyper.home}.cache";
|
||||
dataHome = "${hyper.home}.local/share";
|
||||
stateHome = "${hyper.home}.local/state";
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = let
|
||||
browser = "firefox.desktop";
|
||||
in {
|
||||
"default-web-browser" = [ browser ];
|
||||
"text/html" = [ browser ];
|
||||
"text/htm" = [ browser ];
|
||||
"x-scheme-handler/http" = [ browser ];
|
||||
"x-scheme-handler/https" = [ browser ];
|
||||
"x-scheme-handler/about" = [ browser ];
|
||||
"x-scheme-handler/unknown" = [ browser ];
|
||||
"x-scheme-handler/mailto" = "thunderbird.desktop";
|
||||
"image/png" = "imv.desktop";
|
||||
"image/jpg" = "imv.desktop";
|
||||
"image/jpeg" = "imv.desktop";
|
||||
"image/webp" = "imv.desktop";
|
||||
"image/gif" = "imv.desktop";
|
||||
"application/pdf" = "zathura.desktop";
|
||||
"inode/directory" = "thunar.desktop";
|
||||
};
|
||||
};
|
||||
};
|
||||
# Wayland, X, etc. support for session vars
|
||||
# systemd.user.sessionVariables = home.sessionVariables;
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
home.homeDirectory = hyper.home;
|
||||
# home.homeDirectory = "/home/${hyper.user}";
|
||||
home.stateVersion = hyper.main-pkgs-version;
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
{ pkgs, hyper, inputs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixos-wsl.nixosModules.default
|
||||
./system-modules/users.nix
|
||||
./system-modules/gc.nix
|
||||
./system-modules/docker.nix
|
||||
./system-modules/gpg.nix
|
||||
./system-modules/networking.nix
|
||||
./system-modules/nixd.nix
|
||||
# ./system-modules/sops.nix
|
||||
# ./system-modules/sshd.nix
|
||||
# ./system-modules/syncthing.nix
|
||||
];
|
||||
system.stateVersion = pkgs.version;
|
||||
# system.stateVersion = "24.11";
|
||||
wsl = {
|
||||
defaultUser = hyper.user;
|
||||
enable = true;
|
||||
};
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
}
|
||||
32
nod.nix
Normal file
32
nod.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
environment = {
|
||||
packages = import ./system-modules/base-packages.nix pkgs;
|
||||
etcBackupExtension = ".bak";
|
||||
motd = "";
|
||||
};
|
||||
terminal = {
|
||||
font = rice.font.code.regular-path;
|
||||
};
|
||||
android-integration = {
|
||||
termux-setup-storage.enable = true;
|
||||
};
|
||||
system.stateVersion = pkgs.version;
|
||||
nix.extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
user ={
|
||||
shell = "${pkgs.fish}/bin/fish";
|
||||
# userName = pkgs.lib.mkForce hyper.user; if its read-only, whats the point of this option???
|
||||
};
|
||||
|
||||
|
||||
# Set your time zone
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
home-manager = {
|
||||
config = import ./shell-only.nix;
|
||||
useGlobalPkgs = true;
|
||||
backupFileExtension = "backup";
|
||||
extraSpecialArgs = { inherit (all) inputs hyper rice; };
|
||||
};
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user