Compare commits
585 Commits
3050956041
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
05b237f49c
|
|||
|
daee9c3246
|
|||
|
70ca2d3323
|
|||
|
86ac120d54
|
|||
|
201436ef28
|
|||
|
d453bc1bdd
|
|||
|
b8be06a8c7
|
|||
|
d85434dff2
|
|||
|
b0fe816465
|
|||
|
eaf550ded6
|
|||
|
a877826a68
|
|||
|
1b0bd9b7f8
|
|||
|
6c12b580e3
|
|||
|
fae2e84c99
|
|||
|
2e11bf7f31
|
|||
|
b6350e1170
|
|||
|
00c98599d8
|
|||
|
52af5b3f47
|
|||
|
99d51e77f0
|
|||
|
32174c3ccb
|
|||
|
eab28b1c44
|
|||
|
9d663b346e
|
|||
|
de8da30b71
|
|||
|
5c7b5c8e9d
|
|||
|
d8b380a9c0
|
|||
|
b0650b59b7
|
|||
|
ee5bba25b1
|
|||
|
13b65784b0
|
|||
|
c767e881ba
|
|||
|
7d93b84ca5
|
|||
|
587412b0be
|
|||
|
8950ee4644
|
|||
|
e2b9e27504
|
|||
|
fc15c1369f
|
|||
|
c505a71ab1
|
|||
|
d5eda18b84
|
|||
|
d6f7dab062
|
|||
|
d0de943224
|
|||
|
22823ff55f
|
|||
|
d1ceb9fa6f
|
|||
|
f776045d82
|
|||
|
ff4192b3fc
|
|||
|
d8e3ed76ee
|
|||
|
c4656c11d5
|
|||
|
f648c7444d
|
|||
|
bc6e196548
|
|||
|
498154eb15
|
|||
|
83a5e1b278
|
|||
|
70ddbb1bf5
|
|||
|
94f98ae34c
|
|||
|
aae9549f8a
|
|||
|
1052b54dfb
|
|||
|
0e3b77cc59
|
|||
|
39352b10bc
|
|||
|
c31a6cc09e
|
|||
|
cb031d3d66
|
|||
|
5cbb10b245
|
|||
|
8297cd01f4
|
|||
|
2b912cc38e
|
|||
|
60317ef61e
|
|||
|
0a868cf3dd
|
|||
|
3c6c3592a3
|
|||
|
2b38c0ecdc
|
|||
|
980f5feadd
|
|||
|
3da2197134
|
|||
|
78a02d9e3d
|
|||
|
91f3c88347
|
|||
|
9571c1a321
|
|||
|
3614d12466
|
|||
|
a29b92984d
|
|||
|
8f3ad44d34
|
|||
|
43fce477fd
|
|||
|
3b5f4b8fa4
|
|||
|
681cbcb117
|
|||
|
b52af2bea8
|
|||
|
9cc7c52061
|
|||
|
d83ca9a3f5
|
|||
|
72cff90ae0
|
|||
|
e34911fda4
|
|||
|
f51e6789f3
|
|||
|
ac129e39ed
|
|||
|
a022550c4e
|
|||
|
237612fd4c
|
|||
|
61325ee8d7
|
|||
|
ee4fce8541
|
|||
|
63f6aa0f65
|
|||
|
896310a2d4
|
|||
|
d2f7e1a376
|
|||
|
a6a67b8543
|
|||
|
b65bf47e90
|
|||
|
ae0c0f0914
|
|||
|
507ec8ffd9
|
|||
|
6c96ba0e0f
|
|||
|
67102b0967
|
|||
|
2fc8710264
|
|||
|
c5c0b7b797
|
|||
|
fd58681a07
|
|||
|
1d6b1fb341
|
|||
|
6edbeb167b
|
|||
|
fecc2d8652
|
|||
|
5419adee40
|
|||
|
9132392d92
|
|||
|
9bb15ae4d2
|
|||
|
8708d16dac
|
|||
|
567657e500
|
|||
|
85b8906afa
|
|||
|
f6b9e81440
|
|||
|
7d95bb4a75
|
|||
|
accb90ca63
|
|||
|
f15f664b4e
|
|||
|
94f261cf6f
|
|||
|
c9c98cd6e6
|
|||
|
dd9bcc009a
|
|||
|
2c6036f39f
|
|||
|
c3e1e8d1b9
|
|||
|
9ae8b73a02
|
|||
|
6d7564e860
|
|||
|
f083a22def
|
|||
|
c72cc5de43
|
|||
|
bcd65b482f
|
|||
|
f91b94872d
|
|||
|
fa1b610684
|
|||
|
3eaae0b22d
|
|||
|
eb3b4f7531
|
|||
|
c432a022cf
|
|||
|
1f6d73234d
|
|||
|
4c1a40a877
|
|||
|
2e70156bae
|
|||
|
662d8068f9
|
|||
|
b218f3aaea
|
|||
|
66b4931d08
|
|||
|
594f7abdca
|
|||
|
59278188da
|
|||
|
7532efdc28
|
|||
|
6204949bdc
|
|||
|
2f89e5f8c4
|
|||
|
924bd28512
|
|||
|
85dab64bcd
|
|||
|
71d5a5f44b
|
|||
|
26f39cf61e
|
|||
|
35900f858d
|
|||
|
6625a545ea
|
|||
|
8a06e4560d
|
|||
|
946d72b66b
|
|||
|
4e46b7fd3a
|
|||
|
236cb914c5
|
|||
|
426a79f3a1
|
|||
|
2b16ceb583
|
|||
|
6597665864
|
|||
|
43f069962a
|
|||
|
8359fa14e2
|
|||
|
f9f1e027e4
|
|||
|
b7dc8a7345
|
|||
|
efa66e7347
|
|||
|
13c0c4926f
|
|||
|
727fc66b7d
|
|||
|
aa411bb43b
|
|||
|
122f813a48
|
|||
|
916adf37ee
|
|||
|
6d3736c6db
|
|||
|
ca3242c568
|
|||
|
ff84a3bb94
|
|||
|
84136a4af6
|
|||
|
9c42e82508
|
|||
|
90c2a071cd
|
|||
|
ef6d2e2179
|
|||
|
7a67120d15
|
|||
|
0758715282
|
|||
|
7bfdc0f222
|
|||
|
5806ad0bc0
|
|||
|
89f2be5a48
|
|||
|
3313cb76cb
|
|||
|
2993952882
|
|||
|
06a7210579
|
|||
|
8f0492f03b
|
|||
|
1db6fe09da
|
|||
|
8667e9b168
|
|||
|
ce481fbc9e
|
|||
|
4790958b4d
|
|||
|
1b76daf66a
|
|||
|
cc710bc74f
|
|||
|
4d34992d81
|
|||
|
711aa3e3e0
|
|||
|
1ccafaf534
|
|||
|
e0d7305d3c
|
|||
|
9723f07d80
|
|||
|
ba23808419
|
|||
|
f1faaabd1d
|
|||
|
16c5c65001
|
|||
|
13d57aebfa
|
|||
|
8cfb2d4f54
|
|||
|
ab40e8e3ec
|
|||
|
49166c19b9
|
|||
|
b7feeff19c
|
|||
|
4509ba8a61
|
|||
|
d840d5dbca
|
|||
|
a8ec0e6b10
|
|||
|
d15a13c429
|
|||
|
181c3780df
|
|||
|
a72524ce22
|
|||
|
f60d4b9bc9
|
|||
|
bcf208b08e
|
|||
|
6fa2e207a0
|
|||
|
4adbeb5e17
|
|||
|
8a091a2bfe
|
|||
|
b59ee1ed72
|
|||
|
9279a2ed8b
|
|||
|
d23aff0cbe
|
|||
|
fc3e982361
|
|||
|
d6c6ac50b8
|
|||
|
e4e5e1d05c
|
|||
|
4cc39dffe8
|
|||
|
28f4f66000
|
|||
|
6a29e1f28c
|
|||
|
55a71bebe7
|
|||
|
f23daec694
|
|||
|
6c19f3e4cc
|
|||
|
4b2d334b10
|
|||
|
6c9bfe7cc3
|
|||
|
b6254def9a
|
|||
|
5a723026c5
|
|||
|
cbcab377a5
|
|||
|
23bcc73328
|
|||
|
a2c74228c9
|
|||
|
f5b62cb53e
|
|||
|
cac8156ba7
|
|||
|
e0cd3738ad
|
|||
|
5ca0482629
|
|||
|
5489c00b49
|
|||
|
d73b0151d8
|
|||
|
83ac78a690
|
|||
|
9c4b0705ee
|
|||
|
9ccf97fc44
|
|||
|
4a409ef44f
|
|||
|
5e40304e58
|
|||
|
c4175535b2
|
|||
|
1cf86b8bd0
|
|||
|
0a53c6933e
|
|||
|
183d351cea
|
|||
|
8cd7d14a2c
|
|||
|
355c92bd08
|
|||
|
5f73b13b2a
|
|||
|
d01338fd0a
|
|||
|
ca4db80ebb
|
|||
|
6a5afb5e35
|
|||
|
6d77b3a944
|
|||
|
8b07a2c595
|
|||
|
79f2d70cd4
|
|||
|
5158b5bca8
|
|||
|
24605db7d2
|
|||
|
089bf04648
|
|||
|
9f736de85c
|
|||
|
acfb7ee3ac
|
|||
|
cf73a64a29
|
|||
|
6206d9abbf
|
|||
|
d966b53c4f
|
|||
|
c3427e1850
|
|||
|
44188b7c09
|
|||
|
e13f09d3f2
|
|||
|
8479fc55eb
|
|||
|
2bba1763a1
|
|||
|
8c15cb56d4
|
|||
|
0248bde57c
|
|||
|
1c00460d78
|
|||
|
1e3a5cf331
|
|||
|
dab72b1511
|
|||
|
6ab2271eeb
|
|||
|
13f91cc813
|
|||
|
81f0c9ea0b
|
|||
|
d3b3a0aa2f
|
|||
|
465dbce272
|
|||
|
111e864511
|
|||
|
54201f002b
|
|||
|
1cc7af1df8
|
|||
|
fc88934c60
|
|||
|
355bf7d977
|
|||
|
8ba623647d
|
|||
|
119deeaa23
|
|||
|
b3e280ab23
|
|||
|
bcfb5772e4
|
|||
|
f920b9bb6f
|
|||
|
f6e5878ec2
|
|||
|
937cc9af99
|
|||
|
4371f44292
|
|||
|
e2a0989724
|
|||
|
25748b4f74
|
|||
|
365037f64b
|
|||
|
70869ff8dd
|
|||
|
e079f9abe4
|
|||
|
caaa7405e1
|
|||
|
98c7d4d641
|
|||
|
302fe11e1d
|
|||
|
e9fe3fd22e
|
|||
|
0834ce4711
|
|||
|
43f8d26936
|
|||
|
488fbe3518
|
|||
|
3735cb4e8e
|
|||
|
9e26797617
|
|||
|
f8ca8299a0
|
|||
|
cdcdbdea96
|
|||
|
d286aa0739
|
|||
|
ab4bb5da86
|
|||
|
ff36737bae
|
|||
|
cd35a5debc
|
|||
|
297cfc700b
|
|||
|
24a5e442ef
|
|||
|
afa8946dbe
|
|||
|
ec170e2538
|
|||
|
35ca8b27be
|
|||
|
21e4c5b10d
|
|||
|
b21d161ed7
|
|||
|
a373917950
|
|||
|
bf6510bdae
|
|||
|
2cc9f73f48
|
|||
|
01026ee08f
|
|||
|
fa15eb9b08
|
|||
|
bcb3ccaf0b
|
|||
|
f21fef1a51
|
|||
|
1fdc25ca4e
|
|||
|
b370184767
|
|||
|
e269c50306
|
|||
|
73b56555a6
|
|||
|
4560acb90b
|
|||
|
3b0d577f3b
|
|||
|
836159960c
|
|||
|
0058f4553e
|
|||
|
437adced36
|
|||
|
5fbbd9df03
|
|||
|
7c49e1900b
|
|||
|
1979b59b15
|
|||
|
22458bb31e
|
|||
|
9088b99862
|
|||
|
5968147b06
|
|||
|
b938b8854f
|
|||
|
04b930865a
|
|||
|
f5f30c476a
|
|||
|
26ffcc4053
|
|||
|
154e8a388f
|
|||
|
b91dbe924c
|
|||
|
9fe158da7b
|
|||
|
849903f08d
|
|||
|
e924ce866f
|
|||
|
e394e74094
|
|||
|
afef5aeb72
|
|||
|
4388783312
|
|||
|
009136a417
|
|||
|
bf59582afd
|
|||
|
a69e21083b
|
|||
|
c685458237
|
|||
|
e2c4bcacc0
|
|||
|
44e53e22f2
|
|||
|
868aa00d7d
|
|||
|
c008c1234a
|
|||
|
e7271c6134
|
|||
|
f83ef0d7d9
|
|||
|
9d089208a7
|
|||
|
8ad4e3bd42
|
|||
|
c017cfb33d
|
|||
|
8bf0b445c7
|
|||
|
33b805f752
|
|||
|
3e1d98ccfc
|
|||
|
354fbd88bc
|
|||
|
ea178718b2
|
|||
|
61a6fde32d
|
|||
|
ddf86a7f75
|
|||
|
ee7a650e57
|
|||
|
52ce9b4cb2
|
|||
|
2092341d9e
|
|||
|
22885e8f45
|
|||
|
cd3220132b
|
|||
|
9510f884f7
|
|||
|
a3023f51b7
|
|||
|
7733cb5ae7
|
|||
|
b2ce27fdf2
|
|||
|
ef77cf720b
|
|||
|
ad4c3ef111
|
|||
|
b4e08cc659
|
|||
|
0dcc08f364
|
|||
|
e0fb9f6c55
|
|||
|
fb890e8fec
|
|||
|
405104d23f
|
|||
|
7b4bb06da1
|
|||
|
f51ab5f57b
|
|||
|
e875de29d2
|
|||
|
9b32cf7f0f
|
|||
|
453de9f47d
|
|||
|
812eff873b
|
|||
|
e110f60de6
|
|||
|
75f94963ba
|
|||
|
d88d010f72
|
|||
|
b44f259d71
|
|||
|
0c387def14
|
|||
|
9afac0d38c
|
|||
|
16f01a26db
|
|||
|
cdd8e24424
|
|||
|
62f7fe6113
|
|||
|
6178bdafd1
|
|||
|
aa27a7185e
|
|||
|
3f1aa0a7ba
|
|||
|
e47a9cba87
|
|||
|
a1cdc235d6
|
|||
|
89ffb6300d
|
|||
|
74d03ea71f
|
|||
|
eaf2c4cfe6
|
|||
|
ca135e2181
|
|||
|
fe5fe33f5f
|
|||
|
bf48d7dfb2
|
|||
|
a640a63f02
|
|||
|
9170ab1a0e
|
|||
|
26c9deb861
|
|||
|
bdb20ed5fe
|
|||
|
0e7a6ddcbe
|
|||
|
4b34ceda9c
|
|||
|
8fcea238e5
|
|||
|
a2d0d747fa
|
|||
|
1e3dc2c586
|
|||
|
0a34bc0ff4
|
|||
|
ffe20b83a3
|
|||
|
81f8759b1a
|
|||
|
ca5061d42c
|
|||
|
89645f6f3a
|
|||
|
9fa5f51236
|
|||
|
afe6cc0f5b
|
|||
|
8b95e6e0a0
|
|||
|
635b3d4271
|
|||
|
8d59f140cd
|
|||
|
d13ba86697
|
|||
|
7e062aa064
|
|||
|
d83c115db0
|
|||
|
9feaf613b6
|
|||
|
0b4fa1043b
|
|||
|
b48968f625
|
|||
|
cc3ca4c68b
|
|||
|
876d111e34
|
|||
|
6fe19e9f9e
|
|||
|
3434088041
|
|||
|
3ecda9136c
|
|||
|
108924e571
|
|||
|
781df641c6
|
|||
|
97588fe9de
|
|||
|
fab2f50790
|
|||
|
f5ae145d41
|
|||
|
09d314f49e
|
|||
|
ee3bfc43d8
|
|||
|
56c4ed4068
|
|||
|
a3583e7f22
|
|||
|
e1061a6fbc
|
|||
|
70fed38988
|
|||
|
445723db18
|
|||
|
c57a4f00d7
|
|||
|
777a6fd9c1
|
|||
|
2c5d877a9a
|
|||
|
551a87372f
|
|||
|
9454b2723d
|
|||
|
5dbbfc7f74
|
|||
|
e66a57d835
|
|||
|
f80ba290a0
|
|||
|
4a6d2eaa86
|
|||
|
3743a1db68
|
|||
|
41c67240e3
|
|||
|
d89c8d8eae
|
|||
|
6993dcff68
|
|||
|
23abe3986a
|
|||
|
1d76c06fac
|
|||
|
0d40e2757a
|
|||
|
efc780aaf5
|
|||
|
4a1d3d9c20
|
|||
|
2caf63f1d9
|
|||
|
6437bd375a
|
|||
|
8b40db5f6e
|
|||
|
3ed6daaf2f
|
|||
|
31e73bb3d1
|
|||
|
32bea7a44c
|
|||
|
7a715ae563
|
|||
|
df2ccf9f9d
|
|||
|
20c47da380
|
|||
|
5cb473d279
|
|||
|
2b66f1a774
|
|||
|
508a3ccc9b
|
|||
|
9426dc77a7
|
|||
|
8dd6f08304
|
|||
|
04b5fdd17c
|
|||
|
27543f41ad
|
|||
|
7bb0b8a312
|
|||
|
af09e1e1f9
|
|||
|
ed160b8280
|
|||
|
c95bed4536
|
|||
|
934a0dc51f
|
|||
|
69297e60af
|
|||
|
b5ae17bf36
|
|||
|
ad8059b30c
|
|||
|
56ca40cc7a
|
|||
|
8f8bc5ae7d
|
|||
|
7daaefb1dc
|
|||
|
06fb4b686f
|
|||
|
34a09327ad
|
|||
|
63341f404f
|
|||
|
8035c74d44
|
|||
|
5fb62e7dcc
|
|||
|
42cd641f30
|
|||
|
6815ec12ce
|
|||
|
2084f190da
|
|||
|
0667de38fe
|
|||
|
e07472a466
|
|||
|
df710631ad
|
|||
|
41d3167311
|
|||
|
e52ddc3314
|
|||
|
d81f31d96b
|
|||
|
7f805ed24e
|
|||
|
2ebe2f9697
|
|||
|
1e9c9e22a5
|
|||
|
d18ca3b150
|
|||
|
5c87cfbec8
|
|||
|
555a049637
|
|||
|
b4106472e3
|
|||
|
3607c6a38c
|
|||
|
2dc26c1775
|
|||
|
6b83e2416c
|
|||
|
c820135518
|
|||
|
466b73104c
|
|||
|
6e7c4e0dce
|
|||
|
a704c3cf06
|
|||
|
1f4141d43c
|
|||
|
bf16403b9f
|
|||
|
9e85e4fa22
|
|||
|
e789fc824d
|
|||
|
bfa8fb6184
|
|||
|
b25b92296e
|
|||
|
861d7e5574
|
|||
|
2e761cb0c2
|
|||
|
641fca8001
|
|||
|
206860d43b
|
|||
|
56bd250fb5
|
|||
|
5fe5ed376f
|
|||
|
18e68f8a70
|
|||
|
0352ac4f5e
|
|||
|
95514bf7dd
|
|||
|
1ba1355745
|
|||
|
2981b0bf7e
|
|||
|
c2217fe90b
|
|||
|
ab6aadcda5
|
|||
|
4e4f69484f
|
|||
|
9849e6d22b
|
|||
|
51a984f518
|
|||
|
a194ea6eb9
|
|||
|
4a3106009a
|
|||
|
295155cbd7
|
|||
|
0262e2cc07
|
|||
|
df9428efac
|
|||
|
385c0ff0c1
|
|||
|
49220edd9a
|
|||
|
3a37ae17c6
|
|||
|
b4f5f53140
|
|||
|
472018b6bc
|
|||
|
ab5dd30454
|
|||
|
da95b82ce6
|
|||
|
705e31e76c
|
|||
|
fddb34888a
|
|||
|
d96d1e2367
|
|||
|
14a6dfe032
|
|||
|
5b71bca1fe
|
|||
|
7f06577962
|
|||
|
d3d7a5a45a
|
|||
|
3c08138ccc
|
|||
|
7ba187dff3
|
|||
|
75afef7bd3
|
|||
|
31ae19a9f8
|
|||
|
5e5b59011c
|
|||
|
b546387116
|
|||
|
a78d333f96
|
|||
|
a869b33aad
|
|||
|
e359ff0ffc
|
|||
|
08d288b48e
|
|||
|
94c61311f2
|
|||
|
a5d96bd1a2
|
|||
|
e82e944cc2
|
|||
|
cddefd5c7e
|
|||
|
840febfc16
|
|||
|
09a04528a6
|
|||
|
f0343bf173
|
|||
|
ab79d22daf
|
|||
|
aeec3128d1
|
|||
|
3ffb753d56
|
|||
|
e63c95d319
|
|||
|
3408de28a2
|
5
.gitattributes
vendored
5
.gitattributes
vendored
@@ -1,3 +1,2 @@
|
|||||||
home-manager/secrets/factorio.nix filter=git-crypt diff=git-crypt
|
/system/secrets/** filter=git-crypt diff=git-crypt
|
||||||
etcnixos/secrets/secureboot.tar filter=git-crypt diff=git-crypt
|
/home-manager/secrets/** filter=git-crypt diff=git-crypt
|
||||||
etcnixos/secrets/wifi-passwords.nix filter=git-crypt diff=git-crypt
|
|
||||||
|
|||||||
13
README.md
13
README.md
@@ -1,14 +1,10 @@
|
|||||||
# My Dotfiles ✨
|
# My Dotfiles ✨
|
||||||
These are my dotfiles for my laptop and desktop (which I use [NixOS](https://nixos.org/) and [home-manager](https://github.com/nix-community/home-manager) on).
|
These are my dotfiles for my laptop and desktop (which I use [NixOS](https://nixos.org/) and [home-manager](https://github.com/nix-community/home-manager) on).
|
||||||
|
|
||||||
## Structure
|
|
||||||
The `nix` folder contains two sub directories, `etcnixos` and `home-manager`. The former is the contents of `/etc/nixos` (hence the name), whereas the latter is the contents of `~/.config/home-manager`.
|
|
||||||
`justfile` is the [just](https://github.com/casey/just) script I use for updating my NixOS system and syncing the changes with this repo.
|
|
||||||
|
|
||||||
## What do I use?
|
## What do I use?
|
||||||
Browser: Firefox 🦊 (actually [Zen Browser](https://github.com/zen-browser/desktop) :p)
|
Browser: Firefox 🦊 (actually [Zen Browser](https://github.com/zen-browser/desktop) :p)
|
||||||
|
|
||||||
Text Editor: [helix](https://github.com/helix-editor/helix)
|
Text Editor: [Doom Emacs](https://github.com/doomemacs/doomemacs)
|
||||||
|
|
||||||
Terminal: [alacritty](https://github.com/alacritty/alacritty)
|
Terminal: [alacritty](https://github.com/alacritty/alacritty)
|
||||||
|
|
||||||
@@ -17,3 +13,10 @@ Shell: [fish](https://fishshell.com/) with the [pure](https://github.com/pure-fi
|
|||||||
WM: [niri](https://github.com/YaLTeR/niri) (KDE on my desktop)
|
WM: [niri](https://github.com/YaLTeR/niri) (KDE on my desktop)
|
||||||
|
|
||||||
There is more that I'm using, but those are the main ones! Read my configs to get more into the specifics.
|
There is more that I'm using, but those are the main ones! Read my configs to get more into the specifics.
|
||||||
|
|
||||||
|
### Background
|
||||||
|
- Got my background from [here](https://old.reddit.com/r/celestegame/comments/11dtgwg/all_most_of_the_backgrounds_in_celeste_edited/) and used the command `magick input.png -filter Point -resize 2880x1920! output.png` to upscale it bilinearly
|
||||||
|
|
||||||
|
## TODO!
|
||||||
|
- [ ] further unify desktop and laptop configs
|
||||||
|
- [ ] Seperate out common shell utilities into a module or some sort (could be used on other machines)
|
||||||
|
|||||||
8
deploy.sh
Executable file
8
deploy.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
ARG="$*"
|
||||||
|
if [ "$ARG" = "" ]; then
|
||||||
|
ARG="boot"
|
||||||
|
fi
|
||||||
|
|
||||||
|
nixos-rebuild "$ARG" --flake . --use-remote-sudo
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
username,
|
|
||||||
system,
|
|
||||||
hostname,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ./declarative-nm.nix ];
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
#garbage collection and cleanup stuff
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 7d";
|
|
||||||
};
|
|
||||||
|
|
||||||
#optimize the store
|
|
||||||
optimise.automatic = true;
|
|
||||||
|
|
||||||
#enable flakes!
|
|
||||||
settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
#kernel options
|
|
||||||
boot = {
|
|
||||||
# kernelPackages = pkgs.linuxPackages_cachyos-lto;
|
|
||||||
kernelPackages = pkgs.linuxPackages_6_10;
|
|
||||||
|
|
||||||
supportedFilesystems = [ "zfs" ];
|
|
||||||
|
|
||||||
kernel.sysctl = {
|
|
||||||
#for profiling
|
|
||||||
"kernel.perf_event_paranoid" = 1;
|
|
||||||
"kernel.kptr_restrict" = 0;
|
|
||||||
|
|
||||||
#dmesg shushhhhh
|
|
||||||
"kernel.printk" = "2 4 1 7";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
loader = {
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
initrd = {
|
|
||||||
compressor = "zstd";
|
|
||||||
compressorArgs = [ "-19" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.etc = {
|
|
||||||
#override default nixos /etc/issue
|
|
||||||
"issue".text = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
#fwupd for updating firmware
|
|
||||||
fwupd = {
|
|
||||||
enable = true;
|
|
||||||
extraRemotes = [ "lvfs-testing" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
#auto detect network printers
|
|
||||||
avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
printing = {
|
|
||||||
enable = true;
|
|
||||||
drivers = with pkgs; [ hplip ];
|
|
||||||
};
|
|
||||||
|
|
||||||
#disable fprintd (doesn't compile, idk)
|
|
||||||
fprintd.enable = false;
|
|
||||||
|
|
||||||
#Making sure mullvad works on boot
|
|
||||||
mullvad-vpn.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "America/New_York";
|
|
||||||
|
|
||||||
security = {
|
|
||||||
#lets use doas and not sudo!
|
|
||||||
doas.enable = true;
|
|
||||||
sudo.enable = false;
|
|
||||||
# Configure doas
|
|
||||||
doas.extraRules = [
|
|
||||||
{
|
|
||||||
users = [ username ];
|
|
||||||
keepEnv = true;
|
|
||||||
persist = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
age.identityPaths = [ "/home/${username}/.ssh/id_ed25519" ];
|
|
||||||
|
|
||||||
age.secrets.primary-password = {
|
|
||||||
file = ./secrets/primary-password.age;
|
|
||||||
path = "/etc/secrets/primary-password";
|
|
||||||
};
|
|
||||||
|
|
||||||
#networking
|
|
||||||
networking = import ./networking.nix { inherit hostname; };
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable Bluetooth
|
|
||||||
hardware.bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
powerOnBoot = true;
|
|
||||||
|
|
||||||
#Enable experimental features for battery % of bluetooth devices
|
|
||||||
settings.General.Experimental = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
#apply gtk themes by enabling dconf
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
|
||||||
hardware.pulseaudio.enable = false; # pipewire >>>>>>> pulseaudio
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
# If you want to use JACK applications, uncomment this
|
|
||||||
# jack.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Define my user account (the rest of the configuration if found in `~/.config/home-manager/...`)
|
|
||||||
users.users.${username} = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
"video"
|
|
||||||
"camera"
|
|
||||||
"adbusers"
|
|
||||||
];
|
|
||||||
hashedPasswordFile = config.age.secrets.primary-password.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gvfs.enable = true;
|
|
||||||
programs.gphoto2.enable = true;
|
|
||||||
|
|
||||||
programs.adb.enable = true;
|
|
||||||
|
|
||||||
# Enable thermal data
|
|
||||||
services.thermald.enable = true;
|
|
||||||
|
|
||||||
services.pcscd.enable = true;
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
pinentryPackage = pkgs.pinentry-curses;
|
|
||||||
enableSSHSupport = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
#System packages
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
mullvad-vpn
|
|
||||||
|
|
||||||
#secureboot ctl
|
|
||||||
sbctl
|
|
||||||
|
|
||||||
dmidecode
|
|
||||||
|
|
||||||
(inputs.agenix.packages.${pkgs.system}.default.override { ageBin = "${pkgs.rage}/bin/rage"; })
|
|
||||||
|
|
||||||
doas-sudo-shim
|
|
||||||
|
|
||||||
glib
|
|
||||||
usbutils
|
|
||||||
libmtp
|
|
||||||
];
|
|
||||||
|
|
||||||
#wayland with electron/chromium applications
|
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
# from: https://discourse.nixos.org/t/imperative-declarative-wifi-networks-with-wpa-supplicant/12394/6
|
|
||||||
let
|
|
||||||
cfg = config.networking.networkmanager;
|
|
||||||
|
|
||||||
getFileName = stringAsChars (x: if x == " " then "-" else x);
|
|
||||||
|
|
||||||
createWifi = ssid: opt: {
|
|
||||||
name = "NetworkManager/system-connections/${getFileName ssid}.nmconnection";
|
|
||||||
value = {
|
|
||||||
mode = "0400";
|
|
||||||
source = pkgs.writeText "${ssid}.nmconnection" ''
|
|
||||||
[connection]
|
|
||||||
id=${ssid}
|
|
||||||
type=wifi
|
|
||||||
|
|
||||||
[wifi]
|
|
||||||
ssid=${ssid}
|
|
||||||
|
|
||||||
[wifi-security]
|
|
||||||
${optionalString (opt.psk != null) ''
|
|
||||||
key-mgmt=wpa-psk
|
|
||||||
psk=${opt.psk}''}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keyFiles = mapAttrs' createWifi config.networking.wireless.networks;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
environment.etc = keyFiles;
|
|
||||||
|
|
||||||
systemd.services.NetworkManager-predefined-connections = {
|
|
||||||
restartTriggers = mapAttrsToList (name: value: value.source) keyFiles;
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStart = "${pkgs.coreutils}/bin/true";
|
|
||||||
ExecReload = "${pkgs.networkmanager}/bin/nmcli connection reload";
|
|
||||||
};
|
|
||||||
reloadIfChanged = true;
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
458
etcnixos/flake.lock
generated
458
etcnixos/flake.lock
generated
@@ -1,458 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"agenix": {
|
|
||||||
"inputs": {
|
|
||||||
"darwin": "darwin",
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1723293904,
|
|
||||||
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"alvr": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727023213,
|
|
||||||
"narHash": "sha256-KPghRPcTbqCMktw9ahrtiq7a/seajAyLkEI2GS1x+sg=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "7c2572e5cf4329ad9fa50d33015aa7be394b4026",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "pull/308097/head",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"chaotic": {
|
|
||||||
"inputs": {
|
|
||||||
"fenix": "fenix",
|
|
||||||
"flake-schemas": "flake-schemas",
|
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"jovian": "jovian",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727620986,
|
|
||||||
"narHash": "sha256-4RlJt1MJmZcuP3ROlrb2YvG8WfH0BM/nGqDgNT/DAwE=",
|
|
||||||
"owner": "chaotic-cx",
|
|
||||||
"repo": "nyx",
|
|
||||||
"rev": "0eee1b2134e9aa3427081715ada883f3523a9608",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "chaotic-cx",
|
|
||||||
"ref": "nyxpkgs-unstable",
|
|
||||||
"repo": "nyx",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"crane": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721842668,
|
|
||||||
"narHash": "sha256-k3oiD2z2AAwBFLa4+xfU+7G5fisRXfkvrMTCJrjZzXo=",
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"rev": "529c1a0b1f29f0d78fa3086b8f6a134c71ef3aaf",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1700795494,
|
|
||||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lnl7",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fenix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"chaotic",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"rust-analyzer-src": "rust-analyzer-src"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727591515,
|
|
||||||
"narHash": "sha256-ar9oGR8kT3S5K3b0EJrcZp1LjfYQdzWl/bBLCp2o50Y=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "fenix",
|
|
||||||
"rev": "c31647aab5e8a16087da6283ef9b2e6a9aae6772",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "fenix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1719994518,
|
|
||||||
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-schemas": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721999734,
|
|
||||||
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
|
|
||||||
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
|
|
||||||
"revCount": 75,
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"pre-commit-hooks-nix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709087332,
|
|
||||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1703113217,
|
|
||||||
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"chaotic",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727383923,
|
|
||||||
"narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "ffe2d07e771580a005e675108212597e5b367d2d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jovian": {
|
|
||||||
"inputs": {
|
|
||||||
"nix-github-actions": "nix-github-actions",
|
|
||||||
"nixpkgs": [
|
|
||||||
"chaotic",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727453186,
|
|
||||||
"narHash": "sha256-nZRCfVEZ9osWXsCD0xCpU66M8JkabMTukBzPRrD/CTA=",
|
|
||||||
"owner": "Jovian-Experiments",
|
|
||||||
"repo": "Jovian-NixOS",
|
|
||||||
"rev": "3390ff2632d0d8a14c92473db60fa52bf881f979",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Jovian-Experiments",
|
|
||||||
"repo": "Jovian-NixOS",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lanzaboote": {
|
|
||||||
"inputs": {
|
|
||||||
"crane": "crane",
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
|
||||||
"rust-overlay": "rust-overlay"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1725379389,
|
|
||||||
"narHash": "sha256-qS1H/5/20ewJIXmf8FN2A5KTOKKU9elWvCPwdBi1P/U=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "lanzaboote",
|
|
||||||
"rev": "e7bd94e0b5ff3c1e686f2101004ebf4fcea9d871",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "lanzaboote",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-github-actions": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"chaotic",
|
|
||||||
"jovian",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1690328911,
|
|
||||||
"narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=",
|
|
||||||
"owner": "zhaofengli",
|
|
||||||
"repo": "nix-github-actions",
|
|
||||||
"rev": "96df4a39c52f53cb7098b923224d8ce941b64747",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "zhaofengli",
|
|
||||||
"ref": "matrix-name",
|
|
||||||
"repo": "nix-github-actions",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727613673,
|
|
||||||
"narHash": "sha256-qqIffTQfxMYo3MKQ9BoY2s2mdKZNnUiksdnxv81js9U=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"rev": "f5c239fa9acb27f0a5326ba2949c00fada89ca9f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727348695,
|
|
||||||
"narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1720386169,
|
|
||||||
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-24.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pre-commit-hooks-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": [
|
|
||||||
"lanzaboote",
|
|
||||||
"flake-compat"
|
|
||||||
],
|
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nixpkgs-stable": "nixpkgs-stable"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1721042469,
|
|
||||||
"narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"rev": "f451c19376071a90d8c58ab1a953c6e9840527fd",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"agenix": "agenix",
|
|
||||||
"alvr": "alvr",
|
|
||||||
"chaotic": "chaotic",
|
|
||||||
"lanzaboote": "lanzaboote",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-analyzer-src": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727465975,
|
|
||||||
"narHash": "sha256-jrr8r2CT9jsi6XDTTX+E39/CakTcQ9RYRp6rWGzLkk0=",
|
|
||||||
"owner": "rust-lang",
|
|
||||||
"repo": "rust-analyzer",
|
|
||||||
"rev": "546339a7be357b3e95fc4b79a8816dce540d477b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "rust-lang",
|
|
||||||
"ref": "nightly",
|
|
||||||
"repo": "rust-analyzer",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1722219664,
|
|
||||||
"narHash": "sha256-xMOJ+HW4yj6e69PvieohUJ3dBSdgCfvI0nnCEe6/yVc=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "a6fbda5d9a14fb5f7c69b8489d24afeb349c7bb4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
{
|
|
||||||
description = "A simple NixOS flake";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
||||||
lanzaboote = {
|
|
||||||
url = "github:nix-community/lanzaboote";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
|
||||||
|
|
||||||
alvr.url = "github:NixOS/nixpkgs/pull/308097/head";
|
|
||||||
|
|
||||||
chaotic = {
|
|
||||||
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
agenix = {
|
|
||||||
url = "github:ryantm/agenix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs =
|
|
||||||
{
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
lanzaboote,
|
|
||||||
nixos-hardware,
|
|
||||||
chaotic,
|
|
||||||
agenix,
|
|
||||||
...
|
|
||||||
}@inputs:
|
|
||||||
let
|
|
||||||
username = "primary";
|
|
||||||
hostname = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile /etc/hostname);
|
|
||||||
system = "x86_64-linux";
|
|
||||||
|
|
||||||
# pkgs = import nixpkgs {
|
|
||||||
# config.replaceStdenv = { pkgs }: pkgs.clangStdenv;
|
|
||||||
# };
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
config.allowUnfreePredicate =
|
|
||||||
pkg:
|
|
||||||
builtins.elem (nixpkgs.lib.getName pkg) [
|
|
||||||
"steam"
|
|
||||||
"steam-original"
|
|
||||||
"steam-run"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs username hostname;
|
|
||||||
};
|
|
||||||
inherit pkgs;
|
|
||||||
modules =
|
|
||||||
[
|
|
||||||
./system-${hostname}.nix
|
|
||||||
chaotic.nixosModules.default
|
|
||||||
agenix.nixosModules.default
|
|
||||||
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
if ("${hostname}" == "mreow") then # laptop
|
|
||||||
[
|
|
||||||
nixos-hardware.nixosModules.framework-12th-gen-intel
|
|
||||||
lanzaboote.nixosModules.lanzaboote
|
|
||||||
]
|
|
||||||
else
|
|
||||||
[ ]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"nvme"
|
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/ff51be5a-b87b-4e6a-9c1d-796ceeaca153";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/3D37-E610";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [
|
|
||||||
"fmask=0022"
|
|
||||||
"dmask=0022"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/media/steam" = {
|
|
||||||
device = "/dev/disk/by-uuid/df865fc2-6b26-4689-809b-1615f860507e";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "nofail" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
#if this is removed, then niri doesn't start, TODO! look into wtf this does
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"xhci_pci"
|
|
||||||
"thunderbolt"
|
|
||||||
"nvme"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/acbd96e3-e7c7-442d-82cc-ce2913a9e90c";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=@"
|
|
||||||
"compress=zstd"
|
|
||||||
"autodefrag"
|
|
||||||
"noatime"
|
|
||||||
"space_cache=v2"
|
|
||||||
"discard"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-0f481d5f-528c-4838-bd8a-d2780b4ba234".device = "/dev/disk/by-uuid/0f481d5f-528c-4838-bd8a-d2780b4ba234";
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/4D19-520E";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp166s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{ hostname, ... }:
|
|
||||||
{
|
|
||||||
hostName = hostname;
|
|
||||||
|
|
||||||
hostId = "cfe0ff46";
|
|
||||||
|
|
||||||
networkmanager = {
|
|
||||||
enable = true;
|
|
||||||
insertNameservers = [
|
|
||||||
"1.1.1.1"
|
|
||||||
"8.8.8.8"
|
|
||||||
];
|
|
||||||
wifi = {
|
|
||||||
scanRandMacAddress = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wireless.networks = import ./secrets/wifi-passwords.nix;
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,16 +0,0 @@
|
|||||||
let
|
|
||||||
laptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH";
|
|
||||||
desktop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJjT5QZ3zRDb+V6Em20EYpSEgPW5e/U+06uQGJdraxi";
|
|
||||||
in
|
|
||||||
(builtins.listToAttrs (
|
|
||||||
map
|
|
||||||
(f: {
|
|
||||||
f.publicKeys = [
|
|
||||||
laptop
|
|
||||||
desktop
|
|
||||||
];
|
|
||||||
})
|
|
||||||
[
|
|
||||||
"primary-password.age"
|
|
||||||
]
|
|
||||||
))
|
|
||||||
Binary file not shown.
@@ -1,109 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
username,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./common.nix
|
|
||||||
./hardware_laptop.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
services.tlp = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
|
||||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
|
||||||
|
|
||||||
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
|
||||||
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
|
||||||
|
|
||||||
CPU_MIN_PERF_ON_AC = 0;
|
|
||||||
CPU_MAX_PERF_ON_AC = 100;
|
|
||||||
CPU_MIN_PERF_ON_BAT = 0;
|
|
||||||
CPU_MAX_PERF_ON_BAT = 60;
|
|
||||||
|
|
||||||
CPU_BOOST_ON_BAT = 0;
|
|
||||||
START_CHARGE_THRESH_BAT0 = 90;
|
|
||||||
STOP_CHARGE_THRESH_BAT0 = 90;
|
|
||||||
RUNTIME_PM_ON_BAT = "auto";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
#using btrfs, so lets scrub!
|
|
||||||
btrfs.autoScrub = {
|
|
||||||
enable = true;
|
|
||||||
interval = "weekly";
|
|
||||||
fileSystems = [ "/" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
default_session = {
|
|
||||||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd ${pkgs.niri}/bin/niri-session";
|
|
||||||
user = "${username}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
lanzaboote = {
|
|
||||||
enable = true;
|
|
||||||
pkiBundle = "/etc/secureboot";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
loader = {
|
|
||||||
/*
|
|
||||||
Lanzaboote currently replaces the systemd-boot module.
|
|
||||||
This setting is usually set to true in configuration.nix
|
|
||||||
generated at installation time. So we force it to false
|
|
||||||
for now.
|
|
||||||
*/
|
|
||||||
systemd-boot.enable = lib.mkForce false;
|
|
||||||
};
|
|
||||||
|
|
||||||
kernelParams = [
|
|
||||||
"mitigations=off"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# this is a life saver.
|
|
||||||
# literally no documentation about this anywhere.
|
|
||||||
# might be good to write about this...
|
|
||||||
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
|
|
||||||
systemd.services.greetd.serviceConfig = {
|
|
||||||
Type = "idle";
|
|
||||||
StandardInput = "tty";
|
|
||||||
StandardOutput = "tty";
|
|
||||||
StandardError = "journal"; # Without this errors will spam on screen
|
|
||||||
# Without these bootlogs will spam on screen
|
|
||||||
TTYReset = true;
|
|
||||||
TTYVHangup = true;
|
|
||||||
TTYVTDisallocate = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
#weird hack to get swaylock working? idk, if you don't put this here, password entry doesnt work
|
|
||||||
#if I move to another lock screen program, i will have to replace `swaylock`
|
|
||||||
security.pam.services.swaylock = { };
|
|
||||||
|
|
||||||
system.activationScripts = {
|
|
||||||
# extract all my secureboot keys
|
|
||||||
"secureboot-keys".text =
|
|
||||||
let
|
|
||||||
secureboot_path = "/etc/secureboot";
|
|
||||||
in
|
|
||||||
''
|
|
||||||
#!/bin/sh
|
|
||||||
rm -fr ${secureboot_path} || true
|
|
||||||
mkdir -p ${secureboot_path}
|
|
||||||
${pkgs.gnutar}/bin/tar xf /etc/nixos/secrets/secureboot.tar -C ${secureboot_path}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
username,
|
|
||||||
system,
|
|
||||||
cpu_arch,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./common.nix
|
|
||||||
./hardware_desktop.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
kernelPatches = [
|
|
||||||
#for making ALVR support better :)
|
|
||||||
{
|
|
||||||
name = "amdgpu-ignore-ctx-privileges";
|
|
||||||
patch = pkgs.fetchpatch {
|
|
||||||
name = "cap_sys_nice_begone.patch";
|
|
||||||
url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch";
|
|
||||||
sha256 = "Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo=";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
kernelParams = [
|
|
||||||
# allow overclocking (I actually underclock but lol)
|
|
||||||
"amdgpu.ppfeaturemask=0xFFF7FFFF"
|
|
||||||
];
|
|
||||||
|
|
||||||
kernelModules = [
|
|
||||||
# kernel module for case fan control
|
|
||||||
"nct6775"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xserver.enable = false;
|
|
||||||
services.desktopManager.plasma6.enable = true;
|
|
||||||
services.displayManager.sddm = {
|
|
||||||
enable = true;
|
|
||||||
wayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
ports = [ 22 ];
|
|
||||||
settings = {
|
|
||||||
PasswordAuthentication = true;
|
|
||||||
AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ]
|
|
||||||
UseDns = true;
|
|
||||||
X11Forwarding = false;
|
|
||||||
PermitRootLogin = "no"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.no-rgb =
|
|
||||||
let
|
|
||||||
no-rgb = pkgs.writeScriptBin "no-rgb" ''
|
|
||||||
#!/bin/sh
|
|
||||||
NUM_DEVICES=$(${pkgs.openrgb}/bin/openrgb --noautoconnect --list-devices | grep -E '^[0-9]+: ' | wc -l)
|
|
||||||
|
|
||||||
for i in $(seq 0 $(($NUM_DEVICES - 1))); do
|
|
||||||
${pkgs.openrgb}/bin/openrgb --noautoconnect --device $i --mode direct --color 000000
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
description = "disable rgb";
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${no-rgb}/bin/no-rgb";
|
|
||||||
Type = "oneshot";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.hardware.openrgb.enable = true;
|
|
||||||
services.udev.packages = [ pkgs.openrgb ];
|
|
||||||
hardware.i2c.enable = true;
|
|
||||||
|
|
||||||
#System packages
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
openrgb-with-all-plugins
|
|
||||||
lact
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.alvr = {
|
|
||||||
enable = true;
|
|
||||||
package = inputs.alvr.legacyPackages.${pkgs.system}.alvr;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
|
||||||
# dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
|
||||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
|
||||||
};
|
|
||||||
|
|
||||||
# services.ollama = {
|
|
||||||
# enable = true;
|
|
||||||
# acceleration = "rocm";
|
|
||||||
# environmentVariables = {
|
|
||||||
# HCC_AMDGPU_TARGET = "gfx1031"; # used to be necessary, but doesn't seem to anymore
|
|
||||||
# };
|
|
||||||
# rocmOverrideGfx = "10.3.1";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# services.open-webui = {
|
|
||||||
# enable = true;
|
|
||||||
# openFirewall = true;
|
|
||||||
# port = 8082;
|
|
||||||
# environment = {
|
|
||||||
# # Disable authentication
|
|
||||||
# WEBUI_AUTH = "False";
|
|
||||||
# PYDANTIC_SKIP_VALIDATING_CORE_SCHEMAS = "True";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
systemd.packages = with pkgs; [ lact ];
|
|
||||||
systemd.services.lactd.wantedBy = [ "multi-user.target" ];
|
|
||||||
|
|
||||||
# control case fans with gpu temperature
|
|
||||||
# I have case fans attached to my gpu for better cooling
|
|
||||||
hardware.fancontrol = {
|
|
||||||
enable = true;
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
select_hwmon = "hwmon/hwmon[[:print:]]*";
|
|
||||||
gpu_path = "/sys/devices/pci0000:00/0000:00:03.1/0000:09:00.0/0000:0a:00.0/0000:0b:00.0/${select_hwmon}";
|
|
||||||
mobo_path = "/sys/devices/platform/nct6775.656/${select_hwmon}";
|
|
||||||
fan_speed = "${mobo_path}/pwm4";
|
|
||||||
|
|
||||||
in
|
|
||||||
''
|
|
||||||
INTERVAL=10
|
|
||||||
FCTEMPS=${fan_speed}=${gpu_path}/temp1_input
|
|
||||||
FCFANS= ${fan_speed}=${mobo_path}/fan4_input
|
|
||||||
MINTEMP=${fan_speed}=40
|
|
||||||
MAXTEMP=${fan_speed}=80
|
|
||||||
MINSTART=${fan_speed}=150
|
|
||||||
MINSTOP=${fan_speed}=0
|
|
||||||
MAXPWM=${fan_speed}=255
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
779
flake.lock
generated
Normal file
779
flake.lock
generated
Normal file
@@ -0,0 +1,779 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"blueprint": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"llm-agents",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771437256,
|
||||||
|
"narHash": "sha256-bLqwib+rtyBRRVBWhMuBXPCL/OThfokA+j6+uH7jDGU=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "blueprint",
|
||||||
|
"rev": "06ee7190dc2620ea98af9eb225aa9627b68b0e33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "blueprint",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"crane": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771121070,
|
||||||
|
"narHash": "sha256-aIlv7FRXF9q70DNJPI237dEDAznSKaXmL5lfK/Id/bI=",
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"rev": "a2812c19f1ed2e5ed5ce2ef7109798b575c180e1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deploy-rs": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"utils": "utils"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770019181,
|
||||||
|
"narHash": "sha256-hwsYgDnby50JNVpTRYlF3UR/Rrpt01OrxVuryF40CFY=",
|
||||||
|
"owner": "serokell",
|
||||||
|
"repo": "deploy-rs",
|
||||||
|
"rev": "77c906c0ba56aabdbc72041bf9111b565cdd6171",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "serokell",
|
||||||
|
"repo": "deploy-rs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"disko": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1768920986,
|
||||||
|
"narHash": "sha256-CNzzBsRhq7gg4BMBuTDObiWDH/rFYHEuDRVOwCcwXw4=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"rev": "de5708739256238fb912c62f03988815db89ec9a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "latest",
|
||||||
|
"repo": "disko",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"doomemacs": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771637851,
|
||||||
|
"narHash": "sha256-GmrqCINhfdO3EthpVG8ZsoTdfzj3vaEdz9soJwiI2HY=",
|
||||||
|
"owner": "doomemacs",
|
||||||
|
"repo": "doomemacs",
|
||||||
|
"rev": "ac649cce2abd1eb9d6d3f161928f9a7665b63310",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "doomemacs",
|
||||||
|
"repo": "doomemacs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emacs-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771728721,
|
||||||
|
"narHash": "sha256-03w1Ka71dJlerySoIT5ZGm/+bx0qONZIjELY4ghkxIo=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "emacs-overlay",
|
||||||
|
"rev": "d7e50ce0c6e1ca698217a251d432799683d23831",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "emacs-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733328505,
|
||||||
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"pre-commit",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771683283,
|
||||||
|
"narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"impermanence": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769548169,
|
||||||
|
"narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "impermanence",
|
||||||
|
"rev": "7b1d382faf603b6d264f58627330f9faa5cba149",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "impermanence",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jovian-nixos": {
|
||||||
|
"inputs": {
|
||||||
|
"nix-github-actions": "nix-github-actions",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772169624,
|
||||||
|
"narHash": "sha256-YHaTNllFu90LdXqiNNoeDFnKwioa6lT+gXGGBOAvlfo=",
|
||||||
|
"owner": "Titaniumtown",
|
||||||
|
"repo": "Jovian-NixOS",
|
||||||
|
"rev": "68f2a686a27f0b6899b085fd6e653fffa59db444",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Titaniumtown",
|
||||||
|
"ref": "pr/fix-sddm-switch-to-desktop",
|
||||||
|
"repo": "Jovian-NixOS",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"json2steamshortcut": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1763116114,
|
||||||
|
"narHash": "sha256-0gI7PnQUDZTFjhHgg0eP1SCJOvW5gw3sQ2UAMspipnQ=",
|
||||||
|
"owner": "ChrisOboe",
|
||||||
|
"repo": "json2steamshortcut",
|
||||||
|
"rev": "b829fe2871fd1736d2406724e4abbb492527cb08",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ChrisOboe",
|
||||||
|
"repo": "json2steamshortcut",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lanzaboote": {
|
||||||
|
"inputs": {
|
||||||
|
"crane": "crane",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"pre-commit": "pre-commit",
|
||||||
|
"rust-overlay": [
|
||||||
|
"rust-overlay"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771492583,
|
||||||
|
"narHash": "sha256-nQzvnU4BGu8dA6BsPPCqmVcab/3ebVmHtX3ZWbW3Hxc=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "lanzaboote",
|
||||||
|
"rev": "5e9380994665ef66c87ab8e22c913ff837174ce4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "lanzaboote",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"llm-agents": {
|
||||||
|
"inputs": {
|
||||||
|
"blueprint": "blueprint",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771730908,
|
||||||
|
"narHash": "sha256-AkmTeSJSGniBsCbc+Oy5emrQflyTzUweOVcQLf69z1A=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "llm-agents.nix",
|
||||||
|
"rev": "352ee8c439a3c2c7987f6cfaebddcf87c924959a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "llm-agents.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri": {
|
||||||
|
"inputs": {
|
||||||
|
"niri-stable": "niri-stable",
|
||||||
|
"niri-unstable": "niri-unstable",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771638124,
|
||||||
|
"narHash": "sha256-rIF69lE48tBvOMFiIyserOa0MF3SXh1ZiRqv7WqlUew=",
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"rev": "a1dac2b08c329af22200104c3c4b18de5ded6034",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756556321,
|
||||||
|
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"ref": "v25.08",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771305475,
|
||||||
|
"narHash": "sha256-lqweVTwHhYc+9T33cysp38gVwxaibGJHriOPZXWyhCY=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "a2a52911757cb3b497db9407592f9b4c439571ea",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-doom-emacs-unstraightened": {
|
||||||
|
"inputs": {
|
||||||
|
"doomemacs": "doomemacs",
|
||||||
|
"emacs-overlay": [
|
||||||
|
"emacs-overlay"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771663801,
|
||||||
|
"narHash": "sha256-gh0OVgAERhv1uSXzTgd0p7GioEG1Jg44FVxc72aM//A=",
|
||||||
|
"owner": "marienz",
|
||||||
|
"repo": "nix-doom-emacs-unstraightened",
|
||||||
|
"rev": "0bf7a181e28a8c3d1e89b18f79b15d516f2fb670",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "marienz",
|
||||||
|
"repo": "nix-doom-emacs-unstraightened",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-flatpak": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1768656715,
|
||||||
|
"narHash": "sha256-Sbh037scxKFm7xL0ahgSCw+X2/5ZKeOwI2clqrYr9j4=",
|
||||||
|
"owner": "gmodena",
|
||||||
|
"repo": "nix-flatpak",
|
||||||
|
"rev": "123fe29340a5b8671367055b75a6e7c320d6f89a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "gmodena",
|
||||||
|
"repo": "nix-flatpak",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-github-actions": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"jovian-nixos",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729697500,
|
||||||
|
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"ref": "matrix-name",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771423359,
|
||||||
|
"narHash": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "740a22363033e9f1bb6270fbfb5a9574067af15b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771369470,
|
||||||
|
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0182a361324364ae3f436a63005877674cf45efb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"noctalia": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771732280,
|
||||||
|
"narHash": "sha256-pwfFptl7m1Xu+I7eSjapRfIBtVH9rsLpzuaCouraz9U=",
|
||||||
|
"owner": "noctalia-dev",
|
||||||
|
"repo": "noctalia-shell",
|
||||||
|
"rev": "341c5ee138d688ac1a7ffb1543ce2a3c9801aa34",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "noctalia-dev",
|
||||||
|
"repo": "noctalia-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oh-my-opencode": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770618333,
|
||||||
|
"narHash": "sha256-7Y9e2nrsi4yKwBXZ7RUF1B5FN4RJUT4rYI1SvA0vDEw=",
|
||||||
|
"owner": "yebei199",
|
||||||
|
"repo": "oh-my-opencode",
|
||||||
|
"rev": "bde5264e4c3a91ded482acd35c8ed239d21d1de2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "yebei199",
|
||||||
|
"ref": "nix",
|
||||||
|
"repo": "oh-my-opencode",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pre-commit": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770726378,
|
||||||
|
"narHash": "sha256-kck+vIbGOaM/dHea7aTBxdFYpeUl/jHOy5W3eyRvVx8=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "5eaaedde414f6eb1aea8b8525c466dc37bba95ae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"deploy-rs": "deploy-rs",
|
||||||
|
"disko": "disko",
|
||||||
|
"emacs-overlay": "emacs-overlay",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"impermanence": "impermanence",
|
||||||
|
"jovian-nixos": "jovian-nixos",
|
||||||
|
"json2steamshortcut": "json2steamshortcut",
|
||||||
|
"lanzaboote": "lanzaboote",
|
||||||
|
"llm-agents": "llm-agents",
|
||||||
|
"niri": "niri",
|
||||||
|
"nix-doom-emacs-unstraightened": "nix-doom-emacs-unstraightened",
|
||||||
|
"nix-flatpak": "nix-flatpak",
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"noctalia": "noctalia",
|
||||||
|
"oh-my-opencode": "oh-my-opencode",
|
||||||
|
"rust-overlay": "rust-overlay",
|
||||||
|
"zen-browser": "zen-browser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771729765,
|
||||||
|
"narHash": "sha256-HNsDSR5bhLSrIpi9bTb2uTK1qnPo1xFSBxs6YmFyprk=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "be926cb1a76e8450ab2b92121b2e88d09fa4d41c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"llm-agents",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770228511,
|
||||||
|
"narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "337a4fe074be1042a35086f15481d763b8ddc0e7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755491097,
|
||||||
|
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"ref": "v0.7",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771195969,
|
||||||
|
"narHash": "sha256-BUE41HjLIGPjq3U8VXPjf8asH8GaMI7FYdgrIHKFMXA=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "536bd32efc935bf876d6de385ec18a1b715c9358",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zen-browser": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771719171,
|
||||||
|
"narHash": "sha256-ZDE3//9Hg+9X5xXcDJ4k/d6qcOVQ4MrTmvf1zv/omZY=",
|
||||||
|
"owner": "0xc000022070",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"rev": "2a71f2e720db962f2522b38704e23e11163e91ae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "0xc000022070",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
165
flake.nix
Normal file
165
flake.nix
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
{
|
||||||
|
description = "System nixOS flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
lanzaboote = {
|
||||||
|
url = "github:nix-community/lanzaboote";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.rust-overlay.follows = "rust-overlay";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
disko = {
|
||||||
|
url = "github:nix-community/disko/latest";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
rust-overlay = {
|
||||||
|
url = "github:oxalica/rust-overlay";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
zen-browser = {
|
||||||
|
url = "github:0xc000022070/zen-browser-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
niri = {
|
||||||
|
url = "github:sodiboo/niri-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.nixpkgs-stable.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
emacs-overlay = {
|
||||||
|
url = "github:nix-community/emacs-overlay";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.nixpkgs-stable.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-flatpak.url = "github:gmodena/nix-flatpak/";
|
||||||
|
|
||||||
|
nix-doom-emacs-unstraightened = {
|
||||||
|
url = "github:marienz/nix-doom-emacs-unstraightened";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.emacs-overlay.follows = "emacs-overlay";
|
||||||
|
};
|
||||||
|
|
||||||
|
impermanence = {
|
||||||
|
url = "github:nix-community/impermanence";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
deploy-rs = {
|
||||||
|
url = "github:serokell/deploy-rs";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
jovian-nixos = {
|
||||||
|
url = "github:Titaniumtown/Jovian-NixOS/pr/fix-sddm-switch-to-desktop";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
noctalia = {
|
||||||
|
url = "github:noctalia-dev/noctalia-shell";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
llm-agents = {
|
||||||
|
url = "github:numtide/llm-agents.nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# wait for https://github.com/code-yeongyu/oh-my-opencode/pull/921 to be merged
|
||||||
|
oh-my-opencode = {
|
||||||
|
url = "github:yebei199/oh-my-opencode/nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
json2steamshortcut = {
|
||||||
|
url = "github:ChrisOboe/json2steamshortcut";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
lanzaboote,
|
||||||
|
nixos-hardware,
|
||||||
|
home-manager,
|
||||||
|
deploy-rs,
|
||||||
|
jovian-nixos,
|
||||||
|
...
|
||||||
|
}@inputs:
|
||||||
|
let
|
||||||
|
username = "primary";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
hostnames = [
|
||||||
|
"mreow"
|
||||||
|
"yarn"
|
||||||
|
];
|
||||||
|
niri-package = inputs.niri.packages.${system}.niri-unstable;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-tree;
|
||||||
|
|
||||||
|
nixosConfigurations = nixpkgs.lib.foldl' (
|
||||||
|
config: hostname:
|
||||||
|
config
|
||||||
|
// {
|
||||||
|
"${hostname}" = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit
|
||||||
|
inputs
|
||||||
|
username
|
||||||
|
hostname
|
||||||
|
niri-package
|
||||||
|
;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
(
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
# home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = {
|
||||||
|
inherit
|
||||||
|
inputs
|
||||||
|
hostname
|
||||||
|
username
|
||||||
|
niri-package
|
||||||
|
;
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
stateVersion = config.system.stateVersion;
|
||||||
|
};
|
||||||
|
home-manager.users.${username} = import ./home-manager/home-${hostname}.nix;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
./system/system-${hostname}.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
) { } hostnames;
|
||||||
|
|
||||||
|
# Deploy-rs configuration for yarn host only
|
||||||
|
deploy.nodes.yarn = {
|
||||||
|
hostname = "desktop";
|
||||||
|
profiles.system = {
|
||||||
|
sshUser = "root";
|
||||||
|
path = deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.yarn;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
33
home-manager/desktop.nix
Normal file
33
home-manager/desktop.nix
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# niri wayland compositor
|
||||||
|
./progs/niri.nix
|
||||||
|
|
||||||
|
# statusbar
|
||||||
|
# ./progs/eww/eww.nix
|
||||||
|
|
||||||
|
# lockscreen
|
||||||
|
./progs/swaylock.nix
|
||||||
|
|
||||||
|
# notification daemon
|
||||||
|
./progs/dunst.nix
|
||||||
|
|
||||||
|
# noctalia desktop shell
|
||||||
|
./progs/noctalia.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
wdisplays
|
||||||
|
blueman
|
||||||
|
|
||||||
|
# used by /etc/nixos logic to launch niri
|
||||||
|
config.programs.niri.package
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
400
home-manager/flake.lock
generated
400
home-manager/flake.lock
generated
@@ -1,400 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"agenix": {
|
|
||||||
"inputs": {
|
|
||||||
"darwin": "darwin",
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1723293904,
|
|
||||||
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"binsider": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727595111,
|
|
||||||
"narHash": "sha256-i9Pz4vOnBdn1nqJmOL1+gP+A3nrK2WkOR8AO6RoIkQg=",
|
|
||||||
"owner": "orhun",
|
|
||||||
"repo": "binsider",
|
|
||||||
"rev": "b1116e6118d3b6c481d9d99b25c23e2155260b97",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "orhun",
|
|
||||||
"repo": "binsider",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1700795494,
|
|
||||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lnl7",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"firefox-mod-theme": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727035403,
|
|
||||||
"narHash": "sha256-xkVZOZRGrL5YKEXb0R701F71vGJ+K5BFpugtqPwf4XQ=",
|
|
||||||
"owner": "datguypiko",
|
|
||||||
"repo": "Firefox-Mod-Blur",
|
|
||||||
"rev": "694566afa267fe6d5eb5c97a87e116ba794ea293",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "datguypiko",
|
|
||||||
"repo": "Firefox-Mod-Blur",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726153070,
|
|
||||||
"narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1710146030,
|
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727383923,
|
|
||||||
"narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "ffe2d07e771580a005e675108212597e5b367d2d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"niri": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"niri-stable": "niri-stable",
|
|
||||||
"niri-unstable": "niri-unstable",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
|
||||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
|
||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727573335,
|
|
||||||
"narHash": "sha256-RCcDnBgJpP8GVdIrmS7IFhpUCWQjaYS4j7NBT6cbZ3s=",
|
|
||||||
"owner": "sodiboo",
|
|
||||||
"repo": "niri-flake",
|
|
||||||
"rev": "415bbec6b9482afa0605682cf31064964ae705c6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "sodiboo",
|
|
||||||
"repo": "niri-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"niri-stable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726304152,
|
|
||||||
"narHash": "sha256-4YDrKMwXGVOBkeaISbxqf24rLuHvO98TnqxWYfgiSeg=",
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"repo": "niri",
|
|
||||||
"rev": "6a48728ffb1e638839b07f9ab2f06b2adb41dc61",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"ref": "v0.1.9",
|
|
||||||
"repo": "niri",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"niri-unstable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727525902,
|
|
||||||
"narHash": "sha256-NUsPodaJn384rLdPawH1u1cxHzE25EdrXMLkpRTkGFA=",
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"repo": "niri",
|
|
||||||
"rev": "c04ccafd0a2cb26c1f6a4835f4cbb01ffdb926a6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"repo": "niri",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727348695,
|
|
||||||
"narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-lib": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1725233747,
|
|
||||||
"narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727540905,
|
|
||||||
"narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "fbca5e745367ae7632731639de5c21f29c8744ed",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-24.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"protontricks": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1722530921,
|
|
||||||
"narHash": "sha256-t794WEMJx/JNX3gTMHfgquFWB7yXkleW07+QURm1NPM=",
|
|
||||||
"owner": "Matoking",
|
|
||||||
"repo": "protontricks",
|
|
||||||
"rev": "f7b1fa33b0438dbd72f7222703f8442e40edc510",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Matoking",
|
|
||||||
"ref": "appinfo_v29",
|
|
||||||
"repo": "protontricks",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"agenix": "agenix",
|
|
||||||
"binsider": "binsider",
|
|
||||||
"firefox-mod-theme": "firefox-mod-theme",
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"niri": "niri",
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"protontricks": "protontricks",
|
|
||||||
"rust-overlay": "rust-overlay",
|
|
||||||
"vdf-patch": "vdf-patch",
|
|
||||||
"zen-browser": "zen-browser"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727577080,
|
|
||||||
"narHash": "sha256-2LPT76Acp6ebt7fCt90eq/M8T2+X09s/yTVgfVFrtno=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "73a833855442ce8cee710cf4d8d054fea1c81196",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vdf-patch": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1719784100,
|
|
||||||
"narHash": "sha256-OPonFrYrEFYtx0T2hvSYXl/idsm0iDPwqlnm1KbTPIo=",
|
|
||||||
"owner": "Matoking",
|
|
||||||
"repo": "vdf",
|
|
||||||
"rev": "981cad270c2558aeb8eccaf42cfcf9fabbbed199",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Matoking",
|
|
||||||
"ref": "support_new_bvdf",
|
|
||||||
"repo": "vdf",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xwayland-satellite-stable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1718165778,
|
|
||||||
"narHash": "sha256-dwF9nI54a6Fo9XU5s4qmvMXSgCid3YQVGxch00qEMvI=",
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"rev": "b6d281967cb0b7bf1dfdb8d0f597b517dc4aa5c5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"ref": "v0.4",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xwayland-satellite-unstable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726378112,
|
|
||||||
"narHash": "sha256-OANPb73V/RQDqtpIcbzeJ93KuOHKFQv+1xXC44Ut7tY=",
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"rev": "b962a0f33b503aa39c9cf6919f488b664e5b79b4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zen-browser": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727287465,
|
|
||||||
"narHash": "sha256-XQAf5M593WmxgaXagtkci/H9DA3jSVx1TJk6F3X5VQo=",
|
|
||||||
"owner": "MarceColl",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"rev": "96f1b5d80bf7360cb77c9b521f388324f18383a0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "MarceColl",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
{
|
|
||||||
description = "My nixOS flake for home-manager";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
niri = {
|
|
||||||
url = "github:sodiboo/niri-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
agenix = {
|
|
||||||
url = "github:ryantm/agenix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
inputs.home-manager.follows = "home-manager";
|
|
||||||
};
|
|
||||||
|
|
||||||
rust-overlay = {
|
|
||||||
url = "github:oxalica/rust-overlay";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
binsider = {
|
|
||||||
url = "github:orhun/binsider";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
zen-browser = {
|
|
||||||
url = "github:MarceColl/zen-browser-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
# sources to patch protontricks as it doesn't work with latest steam beta
|
|
||||||
# https://github.com/Matoking/protontricks/issues/304#issuecomment-2280920826
|
|
||||||
protontricks = {
|
|
||||||
url = "github:Matoking/protontricks/appinfo_v29";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
vdf-patch = {
|
|
||||||
url = "github:Matoking/vdf/support_new_bvdf";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
firefox-mod-theme = {
|
|
||||||
url = "github:datguypiko/Firefox-Mod-Blur";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs =
|
|
||||||
{
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
home-manager,
|
|
||||||
niri,
|
|
||||||
rust-overlay,
|
|
||||||
agenix,
|
|
||||||
...
|
|
||||||
}@inputs:
|
|
||||||
let
|
|
||||||
username = "primary";
|
|
||||||
homeDirectory = "/home/${username}";
|
|
||||||
hostname = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile /etc/hostname);
|
|
||||||
pkgs = import nixpkgs { };
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs username homeDirectory;
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
./system-${hostname}.nix
|
|
||||||
niri.homeModules.config
|
|
||||||
agenix.homeManagerModules.age
|
|
||||||
|
|
||||||
# add declarative rust modules
|
|
||||||
(
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
rust-overlay.overlays.default
|
|
||||||
niri.overlays.niri
|
|
||||||
];
|
|
||||||
|
|
||||||
# home-manager stuff
|
|
||||||
home = {
|
|
||||||
inherit username homeDirectory;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -7,44 +7,65 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./no-gui.nix
|
./no-gui.nix
|
||||||
./progs/gpt4all/gpt4all.nix
|
# ./progs/ghostty.nix
|
||||||
./progs/alacritty.nix
|
./progs/alacritty.nix
|
||||||
|
./progs/emacs.nix
|
||||||
|
# ./progs/trezor.nix # - broken
|
||||||
|
./progs/flatpak.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate =
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
pkg:
|
pkg:
|
||||||
builtins.elem (lib.getName pkg) [
|
builtins.elem (lib.getName pkg) [
|
||||||
"apple_cursor"
|
"apple_cursor"
|
||||||
"factorio-alpha"
|
"grayjay"
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages =
|
||||||
#calculator
|
with pkgs;
|
||||||
gnome-calculator
|
lib.concatLists [
|
||||||
|
# libreoffice
|
||||||
#productivity stuff
|
[
|
||||||
libreoffice
|
libreoffice
|
||||||
hunspell # spellcheck
|
hunspell # spellcheck
|
||||||
hunspellDicts.en_US # spellcheck dictionary
|
hunspellDicts.en_US # spellcheck dictionary
|
||||||
|
]
|
||||||
|
|
||||||
#video and audio downloading
|
# browsers
|
||||||
parabolic
|
[
|
||||||
|
|
||||||
#soulseek client
|
|
||||||
nicotine-plus
|
|
||||||
|
|
||||||
#dark web browsing deep web browsing
|
|
||||||
tor-browser
|
tor-browser
|
||||||
|
inputs.zen-browser.packages."${system}".twilight
|
||||||
|
grayjay
|
||||||
|
]
|
||||||
|
|
||||||
|
# music library management
|
||||||
|
[
|
||||||
|
picard
|
||||||
|
puddletag
|
||||||
|
lrcget
|
||||||
|
]
|
||||||
|
|
||||||
|
# image editing
|
||||||
|
[
|
||||||
|
darktable
|
||||||
|
rawtherapee
|
||||||
|
hugin
|
||||||
|
|
||||||
|
gimp3
|
||||||
|
pinta
|
||||||
|
]
|
||||||
|
|
||||||
|
[
|
||||||
|
#calculator
|
||||||
|
gnome-calculator
|
||||||
|
|
||||||
# audio editing
|
# audio editing
|
||||||
audacity
|
audacity
|
||||||
|
|
||||||
#fonts
|
#fonts
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
liberation_ttf
|
liberation_ttf
|
||||||
nerdfonts
|
|
||||||
jetbrains-mono
|
|
||||||
|
|
||||||
#for ebook reading
|
#for ebook reading
|
||||||
foliate
|
foliate
|
||||||
@@ -58,7 +79,6 @@
|
|||||||
mpv
|
mpv
|
||||||
mumble
|
mumble
|
||||||
system76-keyboard-configurator
|
system76-keyboard-configurator
|
||||||
mission-center
|
|
||||||
|
|
||||||
#jellyfin
|
#jellyfin
|
||||||
finamp # music player
|
finamp # music player
|
||||||
@@ -67,17 +87,13 @@
|
|||||||
signal-desktop
|
signal-desktop
|
||||||
|
|
||||||
# accounting
|
# accounting
|
||||||
gnucash
|
# gnucash
|
||||||
|
|
||||||
imagemagick
|
# image tools
|
||||||
inkscape
|
inkscape
|
||||||
nomacs
|
nomacs
|
||||||
|
|
||||||
lrcget
|
# partitioning utilities
|
||||||
|
|
||||||
#openstreetmap contributing
|
|
||||||
josm
|
|
||||||
|
|
||||||
gparted
|
gparted
|
||||||
gnome-disk-utility
|
gnome-disk-utility
|
||||||
|
|
||||||
@@ -86,13 +102,64 @@
|
|||||||
libnotify # notifications library
|
libnotify # notifications library
|
||||||
xdg-utils # xdg utils
|
xdg-utils # xdg utils
|
||||||
|
|
||||||
puddletag
|
wireshark
|
||||||
|
|
||||||
inputs.zen-browser.packages."${pkgs.system}".specific
|
nautilus
|
||||||
|
nufraw-thumbnailer
|
||||||
|
gdk-pixbuf
|
||||||
|
|
||||||
(factorio.override (import ./secrets/factorio.nix))
|
enblend-enfuse
|
||||||
|
|
||||||
|
# simple screen recording on wayland
|
||||||
|
wl-screenrec
|
||||||
|
|
||||||
|
# wayland-compatible color picker
|
||||||
|
hyprpicker
|
||||||
|
|
||||||
|
blender
|
||||||
|
|
||||||
|
ghidra-bin
|
||||||
|
|
||||||
|
# for mod organizer 2
|
||||||
|
zenity
|
||||||
|
p7zip
|
||||||
|
|
||||||
|
# password manager
|
||||||
|
keepassxc
|
||||||
|
|
||||||
|
freecad-wayland
|
||||||
|
|
||||||
|
localsend
|
||||||
|
|
||||||
|
# openstreetmap
|
||||||
|
josm
|
||||||
|
|
||||||
|
# in unstable ATM, gotta wait for it to hit stable
|
||||||
|
# video-trimmer
|
||||||
|
]
|
||||||
|
# all the fonts
|
||||||
|
(builtins.filter lib.isDerivation (builtins.attrValues nerd-fonts))
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# programs.zed-editor = {
|
||||||
|
# enable = true;
|
||||||
|
# userSettings = {
|
||||||
|
# ui_font_size = 16;
|
||||||
|
# buffer_font_size = 16;
|
||||||
|
# theme = {
|
||||||
|
# mode = "system";
|
||||||
|
# light = "Gruvbox Dark Hard";
|
||||||
|
# dark = "One Dark";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# extensions = [
|
||||||
|
# "nix"
|
||||||
|
# "sql"
|
||||||
|
# "CSV"
|
||||||
|
# "assembly"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
# make chromium-based stuff use wayland
|
# make chromium-based stuff use wayland
|
||||||
home.file.".config/chromium-flags.conf".text = "--ozone-platform-hint=auto";
|
home.file.".config/chromium-flags.conf".text = "--ozone-platform-hint=auto";
|
||||||
|
|
||||||
@@ -104,20 +171,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
TERMINAL = "alacritty";
|
|
||||||
BROWSER = "zen";
|
BROWSER = "zen";
|
||||||
|
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
|
||||||
|
pkgs.stdenv.cc.cc
|
||||||
|
]}";
|
||||||
};
|
};
|
||||||
|
|
||||||
#for trezor stuff
|
|
||||||
/*
|
|
||||||
trezor-udev-rules #trezor udev rules
|
|
||||||
trezord
|
|
||||||
trezor-suite
|
|
||||||
monero-gui
|
|
||||||
monero-cli
|
|
||||||
trezorctl
|
|
||||||
*/
|
|
||||||
|
|
||||||
# allow extra fonts to be detected by fontconfig
|
# allow extra fonts to be detected by fontconfig
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
@@ -135,14 +194,22 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#qt application theming
|
# qt application theming - BROKEN and on fire
|
||||||
qt = {
|
# qt = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
style = {
|
# platformTheme = {
|
||||||
name = "breeze-dark";
|
# name = "adwaita";
|
||||||
package = pkgs.kdePackages.breeze;
|
# package = [
|
||||||
};
|
# pkgs.adwaita-qt
|
||||||
};
|
# pkgs.adwaita-qt6
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# style = {
|
||||||
|
# name = "adwaita-dark";
|
||||||
|
# package = pkgs.adwaita-qt;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
# macOS cursor!
|
# macOS cursor!
|
||||||
home.pointerCursor = {
|
home.pointerCursor = {
|
||||||
@@ -151,4 +218,11 @@
|
|||||||
name = "macOS";
|
name = "macOS";
|
||||||
size = 24;
|
size = 24;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dconf.settings = {
|
||||||
|
"org/virt-manager/virt-manager/connections" = {
|
||||||
|
autoconnect = [ "qemu:///system" ];
|
||||||
|
uris = [ "qemu:///system" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
33
home-manager/home-mreow.nix
Normal file
33
home-manager/home-mreow.nix
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
homeDirectory,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./gui.nix
|
||||||
|
./desktop.nix
|
||||||
|
./progs/borg.nix
|
||||||
|
|
||||||
|
# effects headphones too
|
||||||
|
# ./progs/framework-13-easyeffects.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# media controls
|
||||||
|
systemd.user.services.mpris-proxy = {
|
||||||
|
Unit.Description = "Mpris proxy";
|
||||||
|
Install.After = [
|
||||||
|
"network.target"
|
||||||
|
"sound.target"
|
||||||
|
];
|
||||||
|
Install.WantedBy = [ "default.target" ];
|
||||||
|
Service.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.niri.settings.outputs = {
|
||||||
|
"BOE 0x095F Unknown" = {
|
||||||
|
scale = 1.5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
44
home-manager/home-yarn.nix
Normal file
44
home-manager/home-yarn.nix
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./gui.nix
|
||||||
|
./desktop.nix
|
||||||
|
inputs.json2steamshortcut.homeModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
protontricks
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/339370#issuecomment-2731336341
|
||||||
|
bs-manager
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
wlrobs
|
||||||
|
obs-backgroundremoval
|
||||||
|
obs-pipewire-audio-capture
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.steam-shortcuts = {
|
||||||
|
enable = true;
|
||||||
|
overwriteExisting = true;
|
||||||
|
steamUserId = lib.strings.toInt (lib.strings.trim (builtins.readFile ./secrets/steam-user-id));
|
||||||
|
shortcuts = [
|
||||||
|
{
|
||||||
|
AppName = "Prism Launcher";
|
||||||
|
Exe = "${pkgs.prismlauncher}/bin/prismlauncher";
|
||||||
|
Icon = "${pkgs.prismlauncher}/share/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg";
|
||||||
|
Tags = [ "Game" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,24 +4,13 @@
|
|||||||
lib,
|
lib,
|
||||||
homeDirectory,
|
homeDirectory,
|
||||||
config,
|
config,
|
||||||
|
username,
|
||||||
|
stateVersion,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
let
|
||||||
imports = [
|
rust_pkgs = with pkgs; [
|
||||||
./progs/fish.nix
|
(rust-bin.nightly.latest.default.override ({
|
||||||
./progs/helix.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.stateVersion = "24.11";
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
#hex viewer
|
|
||||||
hexyl
|
|
||||||
|
|
||||||
#rust stuff
|
|
||||||
(rust-bin.selectLatestNightlyWith (
|
|
||||||
toolchain:
|
|
||||||
toolchain.default.override {
|
|
||||||
extensions = [
|
extensions = [
|
||||||
"rust-src"
|
"rust-src"
|
||||||
"rust-analyzer"
|
"rust-analyzer"
|
||||||
@@ -31,26 +20,51 @@
|
|||||||
"cargo"
|
"cargo"
|
||||||
];
|
];
|
||||||
# thumbv7m-none-eabi target for stm32
|
# thumbv7m-none-eabi target for stm32
|
||||||
targets = [ "thumbv7m-none-eabi" ];
|
targets = [
|
||||||
}
|
"thumbv7m-none-eabi"
|
||||||
))
|
"wasm32-unknown-unknown"
|
||||||
|
];
|
||||||
|
}))
|
||||||
|
cargo-expand
|
||||||
|
cargo-edit # cargo upgrade and stuff
|
||||||
|
cargo-pgo
|
||||||
|
rust-script
|
||||||
|
bolt_19
|
||||||
|
libllvm # llvm-profdata
|
||||||
|
cargo-show-asm
|
||||||
|
cargo-flamegraph
|
||||||
|
];
|
||||||
|
|
||||||
#find typos in code
|
lsps = with pkgs; [
|
||||||
typos
|
# java
|
||||||
|
jdt-language-server
|
||||||
|
|
||||||
#python formatter
|
# HTML/CSS/JSON/ESLint language servers
|
||||||
ruff
|
vscode-langservers-extracted
|
||||||
|
nil # nix lsp
|
||||||
|
yaml-language-server # yaml lsp
|
||||||
|
marksman # markdown lsp
|
||||||
|
typescript-language-server # typescript lsp
|
||||||
|
cmake-language-server # cmake lsp
|
||||||
|
|
||||||
#for website generation
|
typescript
|
||||||
hugo
|
];
|
||||||
|
|
||||||
|
java_tools = with pkgs; [
|
||||||
# java development
|
# java development
|
||||||
google-java-format # formatter
|
google-java-format # formatter
|
||||||
jdk # java
|
jdk # java
|
||||||
jdt-language-server # lsp server
|
|
||||||
|
|
||||||
#for benchmaking stuff
|
# java assembler
|
||||||
hyperfine
|
jasmin
|
||||||
|
];
|
||||||
|
|
||||||
|
common_tools = with pkgs; [
|
||||||
|
# hex viewer
|
||||||
|
hexyl
|
||||||
|
|
||||||
|
# find typos in code
|
||||||
|
typos
|
||||||
|
|
||||||
# replacements for common posix tools
|
# replacements for common posix tools
|
||||||
eza # ls replacement
|
eza # ls replacement
|
||||||
@@ -61,34 +75,79 @@
|
|||||||
gping # `ping`... but with a graph!!
|
gping # `ping`... but with a graph!!
|
||||||
tldr # `man` but more straight-forward and simpler
|
tldr # `man` but more straight-forward and simpler
|
||||||
ripgrep # grep, but written in rust, respects .gitignore, and very very fast, command is `rg`
|
ripgrep # grep, but written in rust, respects .gitignore, and very very fast, command is `rg`
|
||||||
|
fd # alternative to `find`
|
||||||
|
|
||||||
|
# status tools
|
||||||
|
htop
|
||||||
|
bottom
|
||||||
|
|
||||||
|
# other tools
|
||||||
|
unzip
|
||||||
|
wget
|
||||||
|
killall
|
||||||
|
file
|
||||||
|
b3sum
|
||||||
|
|
||||||
|
# "A hexadecimal, binary, and ASCII dump utility with color support"
|
||||||
|
tinyxxd
|
||||||
|
|
||||||
|
# networking tool
|
||||||
|
lsof
|
||||||
|
|
||||||
|
# view SMART status of drives
|
||||||
|
smartmontools
|
||||||
|
|
||||||
# adds `sensors` command
|
# adds `sensors` command
|
||||||
lm_sensors
|
lm_sensors
|
||||||
|
|
||||||
#rssfeed
|
# lspci
|
||||||
newsboat
|
pciutils
|
||||||
|
|
||||||
#HTML/CSS/JSON/ESLint language servers
|
# convert between various units
|
||||||
vscode-langservers-extracted
|
units
|
||||||
|
|
||||||
just
|
jq
|
||||||
|
];
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./progs/fish.nix
|
||||||
|
./progs/helix.nix
|
||||||
|
./progs/opencode.nix
|
||||||
|
(
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
inputs.rust-overlay.overlays.default
|
||||||
|
];
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
home.stateVersion = stateVersion;
|
||||||
|
|
||||||
|
home.packages =
|
||||||
|
with pkgs;
|
||||||
|
lib.concatLists [
|
||||||
|
[
|
||||||
|
# python formatter
|
||||||
|
ruff
|
||||||
|
|
||||||
|
# for website generation
|
||||||
|
hugo
|
||||||
|
go
|
||||||
|
|
||||||
|
# for benchmaking stuff
|
||||||
|
hyperfine
|
||||||
|
|
||||||
pfetch-rs
|
pfetch-rs
|
||||||
waypipe
|
waypipe
|
||||||
htop
|
|
||||||
bottom
|
|
||||||
wget
|
|
||||||
unzip
|
|
||||||
mold
|
|
||||||
gcc
|
|
||||||
compsize
|
|
||||||
killall
|
|
||||||
gnumake
|
|
||||||
|
|
||||||
sshfs
|
sshfs
|
||||||
|
|
||||||
# nix formatter
|
# nix formatter
|
||||||
nixfmt-rfc-style
|
nixfmt-tree
|
||||||
|
|
||||||
# serial viewer
|
# serial viewer
|
||||||
minicom
|
minicom
|
||||||
@@ -96,78 +155,93 @@
|
|||||||
# "~~matt's~~ my trace route"
|
# "~~matt's~~ my trace route"
|
||||||
mtr
|
mtr
|
||||||
|
|
||||||
file
|
|
||||||
|
|
||||||
b3sum
|
|
||||||
|
|
||||||
ffmpeg-full
|
ffmpeg-full
|
||||||
|
|
||||||
# microcontroller tooling
|
# microcontroller tooling
|
||||||
probe-rs
|
probe-rs-tools
|
||||||
|
|
||||||
(python312.withPackages (
|
(python313.withPackages (
|
||||||
ps: with ps; [
|
ps: with ps; [
|
||||||
|
mypy # type checking
|
||||||
|
types-requests # add types for requests methods
|
||||||
|
|
||||||
python-lsp-server # lsp
|
python-lsp-server # lsp
|
||||||
python-lsp-ruff # ruff integration
|
python-lsp-ruff # ruff integration
|
||||||
|
pyserial
|
||||||
|
|
||||||
|
numpy
|
||||||
|
matplotlib
|
||||||
|
notebook
|
||||||
|
|
||||||
|
pandas
|
||||||
]
|
]
|
||||||
))
|
))
|
||||||
|
|
||||||
binwalk
|
binwalk
|
||||||
|
|
||||||
smartmontools
|
|
||||||
|
|
||||||
nil # nix lsp
|
|
||||||
yaml-language-server # yaml lsp
|
|
||||||
marksman # markdown lsp
|
|
||||||
|
|
||||||
# clang-format and clang-tidy
|
# clang-format and clang-tidy
|
||||||
clang-tools
|
clang-tools
|
||||||
|
clang
|
||||||
# inputs.binsider.packages.${pkgs.system}.binsider
|
gdb
|
||||||
|
|
||||||
lldb
|
|
||||||
|
|
||||||
fio
|
|
||||||
|
|
||||||
age
|
|
||||||
|
|
||||||
git-crypt
|
git-crypt
|
||||||
|
|
||||||
|
imagemagick
|
||||||
|
|
||||||
|
nixpkgs-review
|
||||||
|
|
||||||
|
nmap
|
||||||
|
|
||||||
|
# terminal image viewer
|
||||||
|
timg
|
||||||
|
|
||||||
|
tcpdump
|
||||||
|
|
||||||
|
borgbackup
|
||||||
|
|
||||||
|
# used to deploy nix system to server
|
||||||
|
# (and in the future, desktop)
|
||||||
|
deploy-rs
|
||||||
|
|
||||||
|
# power stuff
|
||||||
|
powerstat
|
||||||
|
|
||||||
|
nodePackages_latest.nodejs
|
||||||
|
|
||||||
|
yt-dlp
|
||||||
|
]
|
||||||
|
rust_pkgs
|
||||||
|
lsps
|
||||||
|
java_tools
|
||||||
|
common_tools
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# https://github.com/flamegraph-rs/flamegraph
|
||||||
home.file.".cargo/config.toml".text = ''
|
home.file.".cargo/config.toml".text = ''
|
||||||
[target.${lib.strings.removeSuffix "-linux" pkgs.system}-unknown-linux-gnu]
|
[target.${lib.strings.removeSuffix "-linux" pkgs.stdenv.hostPlatform.system}-unknown-linux-gnu]
|
||||||
linker = "${pkgs.clang}/bin/clang"
|
linker = "${lib.getExe pkgs.clang}"
|
||||||
rustflags = ["-C", "link-arg=-fuse-ld=${pkgs.mold}/bin/mold"]
|
rustflags = ["-Clink-arg=-Wl,--no-rosegment"]
|
||||||
'';
|
'';
|
||||||
|
|
||||||
#default applications
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "hx";
|
|
||||||
};
|
|
||||||
|
|
||||||
#feed reader
|
|
||||||
programs.newsboat = {
|
|
||||||
enable = true;
|
|
||||||
#store rss feeds in a separate file because it's *a lot*
|
|
||||||
urls = import ./progs/rss.nix;
|
|
||||||
};
|
|
||||||
|
|
||||||
# git (self explanatory)
|
# git (self explanatory)
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.git;
|
package = pkgs.git;
|
||||||
userName = "Simon Gardling";
|
|
||||||
userEmail = "titaniumtown@proton.me";
|
|
||||||
|
|
||||||
#better way to view diffs
|
lfs.enable = true;
|
||||||
delta.enable = true;
|
|
||||||
|
|
||||||
#master -> main
|
ignores = [ ".sisyphus" ];
|
||||||
extraConfig = {
|
|
||||||
|
settings = {
|
||||||
init = {
|
init = {
|
||||||
|
# master -> main
|
||||||
defaultBranch = "main";
|
defaultBranch = "main";
|
||||||
};
|
};
|
||||||
push.autoSetupRemote = true;
|
push.autoSetupRemote = true;
|
||||||
|
user = {
|
||||||
|
name = "Simon Gardling";
|
||||||
|
email = "titaniumtown@proton.me";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# gpg signing keys
|
# gpg signing keys
|
||||||
@@ -177,20 +251,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
age.secrets.serverpass = {
|
# better way to view diffs
|
||||||
file = ./secrets/server-password.age;
|
programs.delta = {
|
||||||
path = "${homeDirectory}/.secrets/serverpass";
|
enable = true;
|
||||||
|
enableGitIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
age.secrets.gnupg = {
|
|
||||||
file = ./secrets/my-gpg.age;
|
|
||||||
path = "${homeDirectory}/.secrets/my-gpg.asc";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.activation.extractGnuPG = ''
|
|
||||||
${pkgs.gnupg}/bin/gpg --import ${config.age.secrets.gnupg.path}
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
|
home.sessionVariables = {
|
||||||
|
TERMINAL = "alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
programs.alacritty = {
|
programs.alacritty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.alacritty;
|
package = pkgs.alacritty;
|
||||||
settings = {
|
settings = {
|
||||||
#use the fish shell
|
|
||||||
shell.program = "${pkgs.fish}/bin/fish";
|
|
||||||
|
|
||||||
# some programs can't handle alacritty
|
# some programs can't handle alacritty
|
||||||
env.TERM = "xterm-256color";
|
env.TERM = "xterm-256color";
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@
|
|||||||
decorations = "none";
|
decorations = "none";
|
||||||
|
|
||||||
# semi-transparent
|
# semi-transparent
|
||||||
opacity = 0.95;
|
opacity = 0.90;
|
||||||
|
|
||||||
# padding between the content of the terminal and the edge
|
# padding between the content of the terminal and the edge
|
||||||
padding = {
|
padding = {
|
||||||
|
|||||||
@@ -1,25 +1,33 @@
|
|||||||
{ homeDirectory, borgPasswordFile }:
|
{ pkgs, homeDirectory, ... }:
|
||||||
{
|
{
|
||||||
|
programs.borgmatic = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.borgmatic;
|
||||||
|
backups = {
|
||||||
home = {
|
home = {
|
||||||
location = {
|
location = {
|
||||||
sourceDirectories =
|
sourceDirectories = (
|
||||||
# stuff in my home directory:
|
|
||||||
(
|
|
||||||
map (f: "${homeDirectory}/${f}") [
|
map (f: "${homeDirectory}/${f}") [
|
||||||
".zen"
|
".zen"
|
||||||
".local/share/fish"
|
".local/share/fish"
|
||||||
".gnupg"
|
|
||||||
".config/Signal"
|
|
||||||
".wallpaper.png"
|
|
||||||
".ssh"
|
".ssh"
|
||||||
|
|
||||||
"Documents"
|
"Documents"
|
||||||
"projects"
|
"projects"
|
||||||
"Pictures"
|
"Pictures"
|
||||||
"school"
|
"school"
|
||||||
"justfile"
|
|
||||||
]
|
]
|
||||||
|
++ (map (f: ".config/Signal/${f}") [
|
||||||
|
"stickers.noindex"
|
||||||
|
"attachments.noindex"
|
||||||
|
"downloads.noindex"
|
||||||
|
"drafts.noindex"
|
||||||
|
"sql"
|
||||||
|
"IndexedDB"
|
||||||
|
"Local Storage"
|
||||||
|
"SharedStorage"
|
||||||
|
"config.json"
|
||||||
|
"Preferences"
|
||||||
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
excludeHomeManagerSymlinks = true;
|
excludeHomeManagerSymlinks = true;
|
||||||
@@ -31,15 +39,13 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
retention = {
|
retention = {
|
||||||
keepHourly = 48;
|
keepHourly = 10;
|
||||||
keepDaily = 30;
|
keepDaily = 30;
|
||||||
keepWeekly = 26;
|
keepWeekly = 8;
|
||||||
keepMonthly = 24;
|
keepMonthly = 2;
|
||||||
keepYearly = 10;
|
keepYearly = 0;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
storage = {
|
|
||||||
encryptionPasscommand = "cat ${borgPasswordFile}";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
86
home-manager/progs/doom.d/config.el
Normal file
86
home-manager/progs/doom.d/config.el
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||||
|
;; sync' after modifying this file!
|
||||||
|
|
||||||
|
|
||||||
|
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||||
|
;; clients, file templates and snippets. It is optional.
|
||||||
|
;; (setq user-full-name "John Doe"
|
||||||
|
;; user-mail-address "john@doe.com")
|
||||||
|
|
||||||
|
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||||
|
;;
|
||||||
|
;; - `doom-font' -- the primary font to use
|
||||||
|
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||||
|
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||||
|
;; presentations or streaming.
|
||||||
|
;; - `doom-symbol-font' -- for symbols
|
||||||
|
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||||
|
;;
|
||||||
|
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||||
|
;; accept. For example:
|
||||||
|
;;
|
||||||
|
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||||
|
;;
|
||||||
|
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||||
|
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||||
|
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||||
|
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||||
|
|
||||||
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
|
;; `load-theme' function. This is the default:
|
||||||
|
(setq doom-theme 'doom-one)
|
||||||
|
|
||||||
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
|
(setq display-line-numbers-type t)
|
||||||
|
|
||||||
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
|
;; change `org-directory'. It must be set before org loads!
|
||||||
|
(setq org-directory "~/org/")
|
||||||
|
|
||||||
|
|
||||||
|
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||||
|
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||||
|
;;
|
||||||
|
;; (after! PACKAGE
|
||||||
|
;; (setq x y))
|
||||||
|
;;
|
||||||
|
;; The exceptions to this rule:
|
||||||
|
;;
|
||||||
|
;; - Setting file/directory variables (like `org-directory')
|
||||||
|
;; - Setting variables which explicitly tell you to set them before their
|
||||||
|
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||||
|
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||||
|
;;
|
||||||
|
;; Here are some additional functions/macros that will help you configure Doom.
|
||||||
|
;;
|
||||||
|
;; - `load!' for loading external *.el files relative to this one
|
||||||
|
;; - `use-package!' for configuring packages
|
||||||
|
;; - `after!' for running code after a package has loaded
|
||||||
|
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||||
|
;; this file. Emacs searches the `load-path' when you load packages with
|
||||||
|
;; `require' or `use-package'.
|
||||||
|
;; - `map!' for binding new keys
|
||||||
|
;;
|
||||||
|
;; To get information about any of these functions/macros, move the cursor over
|
||||||
|
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||||
|
;; This will open documentation for it, including demos of how they are used.
|
||||||
|
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||||
|
;; etc).
|
||||||
|
;;
|
||||||
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
|
;; they are implemented.
|
||||||
|
|
||||||
|
|
||||||
|
;; Ctrl + Shift + / = redo
|
||||||
|
;; Ctrl + / = undo
|
||||||
|
(after! undo-fu
|
||||||
|
(map! :map undo-fu-mode-map "C-?" #'undo-fu-only-redo))
|
||||||
|
|
||||||
|
|
||||||
|
;; line wrapping
|
||||||
|
(visual-line-mode t)
|
||||||
195
home-manager/progs/doom.d/init.el
Normal file
195
home-manager/progs/doom.d/init.el
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
;;; init.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; This file controls what Doom modules are enabled and what order they load
|
||||||
|
;; in. Remember to run 'doom sync' after modifying it!
|
||||||
|
|
||||||
|
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||||
|
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||||
|
;; of our modules are listed, including what flags they support.
|
||||||
|
|
||||||
|
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||||
|
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||||
|
;; flags as well (those symbols that start with a plus).
|
||||||
|
;;
|
||||||
|
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||||
|
;; directory (for easy access to its source code).
|
||||||
|
|
||||||
|
(doom! :input
|
||||||
|
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||||
|
;;chinese
|
||||||
|
;;japanese
|
||||||
|
;;layout ; auie,ctsrnm is the superior home row
|
||||||
|
|
||||||
|
:completion
|
||||||
|
;;company ; the ultimate code completion backend
|
||||||
|
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
||||||
|
;;helm ; the *other* search engine for love and life
|
||||||
|
;;ido ; the other *other* search engine...
|
||||||
|
;;ivy ; a search engine for love and life
|
||||||
|
vertico ; the search engine of the future
|
||||||
|
|
||||||
|
:ui
|
||||||
|
;;deft ; notational velocity for Emacs
|
||||||
|
doom ; what makes DOOM look the way it does
|
||||||
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
|
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
|
;;(emoji +unicode) ; 🙂
|
||||||
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
|
indent-guides ; highlighted indent columns
|
||||||
|
ligatures ; ligatures and symbols to make your code pretty again
|
||||||
|
;;minimap ; show a map of the code on the side
|
||||||
|
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||||
|
;;nav-flash ; blink cursor line after big motions
|
||||||
|
;;neotree ; a project drawer, like NERDTree for vim
|
||||||
|
ophints ; highlight the region an operation acts on
|
||||||
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
smooth-scroll ; So smooth you won't believe it's not butter
|
||||||
|
;;tabs ; a tab bar for Emacs
|
||||||
|
;;treemacs ; a project drawer, like neotree but cooler
|
||||||
|
unicode ; extended unicode support for various languages
|
||||||
|
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||||
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
|
;;window-select ; visually switch windows
|
||||||
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
|
:editor
|
||||||
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
|
file-templates ; auto-snippets for empty files
|
||||||
|
fold ; (nigh) universal code folding
|
||||||
|
(format +onsave) ; automated prettiness
|
||||||
|
;;god ; run Emacs commands without modifier keys
|
||||||
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
|
;;multiple-cursors ; editing in many places at once
|
||||||
|
;;objed ; text object editing for the innocent
|
||||||
|
;;parinfer ; turn lisp into python, sort of
|
||||||
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
|
snippets ; my elves. They type so I don't have to
|
||||||
|
word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
|
:emacs
|
||||||
|
dired ; making dired pretty [functional]
|
||||||
|
electric ; smarter, keyword-based electric-indent
|
||||||
|
;;eww ; the internet is gross
|
||||||
|
;;ibuffer ; interactive buffer management
|
||||||
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
|
:term
|
||||||
|
;;eshell ; the elisp shell that works everywhere
|
||||||
|
;;shell ; simple shell REPL for Emacs
|
||||||
|
;;term ; basic terminal emulator for Emacs
|
||||||
|
;;vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
|
:checkers
|
||||||
|
syntax ; tasing you for every semicolon you forget
|
||||||
|
(spell +flyspell) ; tasing you for misspelling mispelling
|
||||||
|
grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
|
:tools
|
||||||
|
;;ansible
|
||||||
|
;;biblio ; Writes a PhD for you (citation needed)
|
||||||
|
;;collab ; buffers with friends
|
||||||
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
|
;;direnv
|
||||||
|
;;docker
|
||||||
|
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||||
|
;;ein ; tame Jupyter notebooks with emacs
|
||||||
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
|
lookup ; navigate your code and its documentation
|
||||||
|
;;llm ; when I said you needed friends, I didn't mean...
|
||||||
|
lsp ; M-x vscode
|
||||||
|
magit ; a git porcelain for Emacs
|
||||||
|
;;make ; run make tasks from Emacs
|
||||||
|
;;pass ; password manager for nerds
|
||||||
|
pdf ; pdf enhancements
|
||||||
|
;;terraform ; infrastructure as code
|
||||||
|
;;tmux ; an API for interacting with tmux
|
||||||
|
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||||
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
|
:os
|
||||||
|
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
|
||||||
|
;;tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
|
:lang
|
||||||
|
;;agda ; types of types of types of types...
|
||||||
|
;;beancount ; mind the GAAP
|
||||||
|
(cc +lsp) ; C > C++ == 1
|
||||||
|
;;clojure ; java with a lisp
|
||||||
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
|
;;coq ; proofs-as-programs
|
||||||
|
;;crystal ; ruby at the speed of c
|
||||||
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
|
;;data ; config/data formats
|
||||||
|
;;(dart +flutter) ; paint ui and not much else
|
||||||
|
;;dhall
|
||||||
|
;;elixir ; erlang done right
|
||||||
|
;;elm ; care for a cup of TEA?
|
||||||
|
emacs-lisp ; drown in parentheses
|
||||||
|
;;erlang ; an elegant language for a more civilized age
|
||||||
|
;;ess ; emacs speaks statistics
|
||||||
|
;;factor
|
||||||
|
;;faust ; dsp, but you get to keep your soul
|
||||||
|
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||||
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
|
;;gdscript ; the language you waited for
|
||||||
|
;;(go +lsp) ; the hipster dialect
|
||||||
|
;;(graphql +lsp) ; Give queries a REST
|
||||||
|
;;(haskell +lsp) ; a language that's lazier than I am
|
||||||
|
;;hy ; readability of scheme w/ speed of python
|
||||||
|
;;idris ; a language you can depend on
|
||||||
|
json ; At least it ain't XML
|
||||||
|
;;janet ; Fun fact: Janet is me!
|
||||||
|
(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||||
|
(javascript +lsp +tree-sitter) ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
|
;;julia ; a better, faster MATLAB
|
||||||
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
|
;;latex ; writing papers in Emacs has never been so fun
|
||||||
|
;;lean ; for folks with too much to prove
|
||||||
|
;;ledger ; be audit you can be
|
||||||
|
;;lua ; one-based indices? one-based indices
|
||||||
|
markdown ; writing docs for people to ignore
|
||||||
|
;;nim ; python + lisp at the speed of c
|
||||||
|
nix ; I hereby declare "nix geht mehr!"
|
||||||
|
;;ocaml ; an objective camel
|
||||||
|
org ; organize your plain life in plain text
|
||||||
|
;;php ; perl's insecure younger brother
|
||||||
|
;;plantuml ; diagrams for confusing people more
|
||||||
|
;;graphviz ; diagrams for confusing yourself even more
|
||||||
|
;;purescript ; javascript, but functional
|
||||||
|
python ; beautiful is better than ugly
|
||||||
|
;;qt ; the 'cutest' gui framework ever
|
||||||
|
;;racket ; a DSL for DSLs
|
||||||
|
;;raku ; the artist formerly known as perl6
|
||||||
|
;;rest ; Emacs as a REST client
|
||||||
|
rst ; ReST in peace
|
||||||
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
|
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
;;scala ; java, but good
|
||||||
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
;;sml
|
||||||
|
;;solidity ; do you need a blockchain? No.
|
||||||
|
;;swift ; who asked for emoji variables?
|
||||||
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
|
;;web ; the tubes
|
||||||
|
yaml ; JSON, but readable
|
||||||
|
;;zig ; C, but simpler
|
||||||
|
|
||||||
|
:email
|
||||||
|
;;(mu4e +org +gmail)
|
||||||
|
;;notmuch
|
||||||
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
|
:app
|
||||||
|
;;calendar
|
||||||
|
;;emms
|
||||||
|
;;everywhere ; *leave* Emacs!? You must be joking
|
||||||
|
;;irc ; how neckbeards socialize
|
||||||
|
;;(rss +org) ; emacs as an RSS reader
|
||||||
|
|
||||||
|
:config
|
||||||
|
;;literate
|
||||||
|
(default +bindings +smartparens))
|
||||||
52
home-manager/progs/doom.d/packages.el
Normal file
52
home-manager/progs/doom.d/packages.el
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; $DOOMDIR/packages.el
|
||||||
|
|
||||||
|
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||||
|
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||||
|
|
||||||
|
|
||||||
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
|
;; (package! some-package)
|
||||||
|
|
||||||
|
;; To install a package directly from a remote git repo, you must specify a
|
||||||
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||||
|
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||||
|
;; (package! another-package
|
||||||
|
;; :recipe (:host github :repo "username/repo"))
|
||||||
|
|
||||||
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||||
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||||
|
;; `:files' in the `:recipe':
|
||||||
|
;; (package! this-package
|
||||||
|
;; :recipe (:host github :repo "username/repo"
|
||||||
|
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||||
|
|
||||||
|
;; If you'd like to disable a package included with Doom, you can do so here
|
||||||
|
;; with the `:disable' property:
|
||||||
|
;; (package! builtin-package :disable t)
|
||||||
|
|
||||||
|
;; You can override the recipe of a built in package without having to specify
|
||||||
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||||
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||||
|
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||||
|
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||||
|
|
||||||
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||||
|
;; This is required for some packages whose default branch isn't 'master' (which
|
||||||
|
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||||
|
;; (package! builtin-package :recipe (:branch "develop"))
|
||||||
|
|
||||||
|
;; Use `:pin' to specify a particular commit to install.
|
||||||
|
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||||
|
|
||||||
|
|
||||||
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||||
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||||
|
;; (unpin! pinned-package)
|
||||||
|
;; ...or multiple packages
|
||||||
|
;; (unpin! pinned-package another-pinned-package)
|
||||||
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||||
|
;; (unpin! t)
|
||||||
|
|
||||||
|
|
||||||
|
(package! yuck-mode)
|
||||||
35
home-manager/progs/dunst.nix
Normal file
35
home-manager/progs/dunst.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.dunst;
|
||||||
|
|
||||||
|
# docs: https://dunst-project.org/documentation/
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
width = 300;
|
||||||
|
height = 300;
|
||||||
|
offset = "30x50";
|
||||||
|
origin = "top-right";
|
||||||
|
|
||||||
|
# 0 is the most opaque, 100 is completely transparent
|
||||||
|
transparency = 60;
|
||||||
|
|
||||||
|
# have consistancy between niri frame color and dunst
|
||||||
|
frame_color = config.programs.niri.settings.layout.focus-ring.active.color;
|
||||||
|
|
||||||
|
background = "#404040";
|
||||||
|
|
||||||
|
font = "JetBrains Mono Nerd Font 9";
|
||||||
|
|
||||||
|
corner_radius = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
urgency_normal = {
|
||||||
|
# background = "#37474f";
|
||||||
|
# foreground = "#eceff1";
|
||||||
|
timeout = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
43
home-manager/progs/emacs.nix
Normal file
43
home-manager/progs/emacs.nix
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nix-doom-emacs-unstraightened.homeModule
|
||||||
|
(
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
inputs.nix-doom-emacs-unstraightened.overlays.default
|
||||||
|
inputs.emacs-overlay.overlays.default
|
||||||
|
];
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.doom-emacs = {
|
||||||
|
enable = true;
|
||||||
|
doomDir = ./doom.d;
|
||||||
|
emacs = pkgs.emacs-unstable-pgtk;
|
||||||
|
extraPackages =
|
||||||
|
epkgs:
|
||||||
|
with epkgs;
|
||||||
|
[
|
||||||
|
dracula-theme
|
||||||
|
treesit-grammars.with-all-grammars
|
||||||
|
]
|
||||||
|
++ (with pkgs; [
|
||||||
|
shellcheck
|
||||||
|
shfmt
|
||||||
|
|
||||||
|
# for file search
|
||||||
|
fd
|
||||||
|
|
||||||
|
pandoc
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
}
|
||||||
109
home-manager/progs/eww/config/eww.scss
Normal file
109
home-manager/progs/eww/config/eww.scss
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
$background: #1e1e2e;
|
||||||
|
$pink: #f5c2e7;
|
||||||
|
$lavendar: #b4befe;
|
||||||
|
$red: #f38ba8;
|
||||||
|
$maroon: #eba0ac;
|
||||||
|
$peach: #fab387;
|
||||||
|
$yellow: #f9e2af;
|
||||||
|
$green: #a6e3a1;
|
||||||
|
$text: #cdd6f4;
|
||||||
|
$subtext: #a6adc8;
|
||||||
|
$surface: #585b70;
|
||||||
|
|
||||||
|
* {
|
||||||
|
color: $text;
|
||||||
|
font-family: CaskaydiaCove Nerd Font Mono;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 10pt;
|
||||||
|
padding: 0 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.red {
|
||||||
|
color: $red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.maroon {
|
||||||
|
color: $maroon;
|
||||||
|
}
|
||||||
|
|
||||||
|
.peach {
|
||||||
|
color: $peach;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yellow {
|
||||||
|
color: $yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.green {
|
||||||
|
color: $green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lavendar {
|
||||||
|
color: $lavendar;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol {
|
||||||
|
color: $lavendar;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
margin: 0 5px;
|
||||||
|
font-size: 14pt;
|
||||||
|
transition: color 0.2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover * {
|
||||||
|
color: $pink;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bluetooth * {
|
||||||
|
font-size: 10pt;
|
||||||
|
padding: 0 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.padded>*:not(:last-child) {
|
||||||
|
padding: 0 10px;
|
||||||
|
border-right: 1px solid $surface;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background {
|
||||||
|
border: 1px solid $pink;
|
||||||
|
background-color: $background;
|
||||||
|
border-radius: 12px;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
scale trough {
|
||||||
|
margin: 0 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: #FFF;
|
||||||
|
min-height: 3px;
|
||||||
|
min-width: 100px;
|
||||||
|
|
||||||
|
& slider {
|
||||||
|
box-shadow: none;
|
||||||
|
background-image: none;
|
||||||
|
border: none;
|
||||||
|
background-color: $pink;
|
||||||
|
min-width: 5pt;
|
||||||
|
min-height: 5pt;
|
||||||
|
margin: -5pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
& highlight {
|
||||||
|
border: none;
|
||||||
|
background-color: $lavendar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.clipboard {
|
||||||
|
color: $subtext;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
1
home-manager/progs/eww/config/eww.yuck
Normal file
1
home-manager/progs/eww/config/eww.yuck
Normal file
@@ -0,0 +1 @@
|
|||||||
|
(include "./statusbar.yuck")
|
||||||
17
home-manager/progs/eww/config/scripts/currentWindow.sh
Executable file
17
home-manager/progs/eww/config/scripts/currentWindow.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
niri_data=$(niri msg --json focused-window)
|
||||||
|
|
||||||
|
if [[ "$niri_data" == "null" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
name=$(echo "$niri_data" | jq -r '.["app_id"], .["title"]' | tr '\n' ' ' | sed 's/.$//')
|
||||||
|
proc_name=$(echo "$name" | head -c 55)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO! fix this logic, add a '...' at the end
|
||||||
|
if [[ "$name" != "$proc_name" ]]; then
|
||||||
|
proc_name="$proc_name..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$proc_name"
|
||||||
3
home-manager/progs/eww/config/scripts/currentWorkspace.sh
Executable file
3
home-manager/progs/eww/config/scripts/currentWorkspace.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
|
niri msg --json workspaces | jq -r '.[] | select(.is_focused == true) | .["id"]'
|
||||||
58
home-manager/progs/eww/config/scripts/power_bat.rs
Executable file
58
home-manager/progs/eww/config/scripts/power_bat.rs
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env rust-script
|
||||||
|
|
||||||
|
use std::{fmt, fs::read_to_string, str::FromStr};
|
||||||
|
|
||||||
|
const BASE_PATH: &str = "/sys/class/power_supply/BAT1/";
|
||||||
|
const CURRENT_NOW_PATH: &str = "current_now";
|
||||||
|
const VOLTAGE_NOW_PATH: &str = "voltage_now";
|
||||||
|
const STATUS_PATH: &str = "status";
|
||||||
|
const FACTOR: f32 = 1e6_f32;
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
enum Status {
|
||||||
|
Charging,
|
||||||
|
Discharging,
|
||||||
|
NotCharging,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FromStr for Status {
|
||||||
|
type Err = &'static str;
|
||||||
|
|
||||||
|
fn from_str(input: &str) -> Result<Status, Self::Err> {
|
||||||
|
match input {
|
||||||
|
"Charging" => Ok(Status::Charging),
|
||||||
|
"Discharging" => Ok(Status::Discharging),
|
||||||
|
"Not charging" => Ok(Status::NotCharging),
|
||||||
|
_ => Err("unknown state"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for Status {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
fmt::Debug::fmt(self, f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn fetch_and_trim_into<T: FromStr<Err = impl fmt::Debug>>(path: &str) -> T {
|
||||||
|
let mut content = read_to_string(BASE_PATH.to_owned() + path).unwrap();
|
||||||
|
content.pop();
|
||||||
|
T::from_str(&content).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn fetch_bat_info(path: &str) -> f32 {
|
||||||
|
let value: f32 = fetch_and_trim_into(path);
|
||||||
|
value / FACTOR
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let current_now: f32 = fetch_bat_info(CURRENT_NOW_PATH);
|
||||||
|
let voltage_now: f32 = fetch_bat_info(VOLTAGE_NOW_PATH);
|
||||||
|
let watts: f32 = current_now * voltage_now;
|
||||||
|
let status: Status = fetch_and_trim_into(STATUS_PATH);
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"voltage: {:.4}\ncurrent: {:.4}\nwatts: {:.4}\nstatus: {}",
|
||||||
|
voltage_now, current_now, watts, status
|
||||||
|
);
|
||||||
|
}
|
||||||
2
home-manager/progs/eww/config/scripts/sound/getSink.sh
Executable file
2
home-manager/progs/eww/config/scripts/sound/getSink.sh
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
wpctl inspect @DEFAULT_SINK@ | grep -E "^ +\* node\.description" | cut -d' ' -f6- | tr -d '"'
|
||||||
22
home-manager/progs/eww/config/scripts/sound/getVolume.sh
Executable file
22
home-manager/progs/eww/config/scripts/sound/getVolume.sh
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
output=$(wpctl get-volume @DEFAULT_SINK@ | cut -d' ' -f2- | sed -E 's/\.//g' | sed 's/^0*//g')
|
||||||
|
count=$(echo "$output" | awk -F, '{print $1+0}')
|
||||||
|
muted=$(echo "$output" | cut -d'[' -f2 | cut -d ']' -f1)
|
||||||
|
|
||||||
|
# if not muted, set to empty string
|
||||||
|
if [ "$muted" == "$count" ]; then
|
||||||
|
muted=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
color="green"
|
||||||
|
if ((count > 75)); then color="yellow"; fi
|
||||||
|
if ((count > 90)); then color="peach"; fi
|
||||||
|
if ((count > 100)); then color="maroon"; fi
|
||||||
|
if ((count > 110)); then color="red"; fi
|
||||||
|
|
||||||
|
output="${count}%"
|
||||||
|
if [ "$muted" != "" ]; then
|
||||||
|
output="${output} [${muted}]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "{\"count\":\"${output}\", \"color\":\"${color}\"}"
|
||||||
23
home-manager/progs/eww/config/scripts/wifiInfo.zsh
Executable file
23
home-manager/progs/eww/config/scripts/wifiInfo.zsh
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
export CHARSET=ASCII
|
||||||
|
case $1 in
|
||||||
|
name)
|
||||||
|
nmcli -f IN-USE,SSID d w | grep '*' | sed 's/[\* ]//g' | cat
|
||||||
|
exit 0;;
|
||||||
|
strength)
|
||||||
|
str=$(nmcli -f ACTIVE,BARS d w | grep 'yes' | tr -d ' yesno')
|
||||||
|
case ${str: 0:-1} in
|
||||||
|
'****')
|
||||||
|
icon=""; colour="green";;
|
||||||
|
'***')
|
||||||
|
icon=""; colour="yellow";;
|
||||||
|
'**')
|
||||||
|
icon=""; colour="peach";;
|
||||||
|
'*')
|
||||||
|
icon=""; colour="maroon";;
|
||||||
|
*)
|
||||||
|
icon=""; colour="red";;
|
||||||
|
esac
|
||||||
|
echo "{\"icon\":\"$icon\",\"colour\":\"$colour\"}"
|
||||||
|
exit 0;;
|
||||||
|
esac
|
||||||
130
home-manager/progs/eww/config/statusbar.yuck
Normal file
130
home-manager/progs/eww/config/statusbar.yuck
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
(defwindow statusbar
|
||||||
|
:monitor 0
|
||||||
|
:stacking "fg"
|
||||||
|
:exclusive true
|
||||||
|
:geometry (geometry
|
||||||
|
:y "0.5%"
|
||||||
|
:width "100%"
|
||||||
|
:height "24px"
|
||||||
|
:anchor "top center")
|
||||||
|
(statusbar))
|
||||||
|
|
||||||
|
(defwidget statusbar []
|
||||||
|
(centerbox
|
||||||
|
(box :space-evenly false :halign 'start' :class 'padded'
|
||||||
|
(window-title))
|
||||||
|
(time)
|
||||||
|
(box :space-evenly false :halign 'end' :class 'padded'
|
||||||
|
(brightness-ctl)
|
||||||
|
(brightness-ctl-opener)
|
||||||
|
(volume)
|
||||||
|
(battery)
|
||||||
|
(bluetooth)
|
||||||
|
(wifi))))
|
||||||
|
|
||||||
|
(defwidget cmd-slider [?symbol value command max color]
|
||||||
|
(box :space-evenly false
|
||||||
|
(label :text symbol :class "symbol")
|
||||||
|
(scale
|
||||||
|
:min 0 :max max
|
||||||
|
:value value
|
||||||
|
:round-digits 0
|
||||||
|
:timeout "200ms"
|
||||||
|
:onchange command)
|
||||||
|
(label :text "${value}%" :class color)))
|
||||||
|
|
||||||
|
(defpoll windowtitle :interval "1s" `scripts/currentWindow.sh`)
|
||||||
|
|
||||||
|
(defwidget window-title []
|
||||||
|
(label
|
||||||
|
:text {windowtitle == "" ? "" : "(${windowtitle})"}))
|
||||||
|
|
||||||
|
(defwidget brightness-ctl []
|
||||||
|
(box :visible brightnessctl-open
|
||||||
|
(cmd-slider :symbol "" :value brightness
|
||||||
|
:command `brightnessctl set {}%`
|
||||||
|
:max 101 :color {
|
||||||
|
brightness >= 80 ? "green" :
|
||||||
|
brightness >= 50 ? "yellow" :
|
||||||
|
brightness >= 30 ? "peach" :
|
||||||
|
brightness >= 10 ? "maroon" : "red"
|
||||||
|
})))
|
||||||
|
|
||||||
|
|
||||||
|
(defpoll brightness :interval "1s" :run-while brightnessctl-open `brightnessctl -m | awk -F, '{print $4+0}'`)
|
||||||
|
|
||||||
|
|
||||||
|
(defvar brightnessctl-open false)
|
||||||
|
(defwidget brightness-ctl-opener []
|
||||||
|
(eventbox :class "button"
|
||||||
|
(button
|
||||||
|
:onclick `${EWW_CMD} update brightnessctl-open=${!brightnessctl-open}`
|
||||||
|
"")))
|
||||||
|
|
||||||
|
(defwidget wifi []
|
||||||
|
(eventbox
|
||||||
|
:class "button ${wifi-strength.colour}"
|
||||||
|
(label
|
||||||
|
:text {wifi-strength.icon}
|
||||||
|
:tooltip "Connected To: ${wifi-name}")))
|
||||||
|
|
||||||
|
(defpoll wifi-strength :interval "10s" `scripts/wifiInfo.zsh strength`)
|
||||||
|
(defpoll wifi-name :interval "1m" `scripts/wifiInfo.zsh name`)
|
||||||
|
|
||||||
|
(defwidget bluetooth []
|
||||||
|
(eventbox
|
||||||
|
:class "bluetooth button ${ bluetooth-name != "" ? "green" : "lavendar" }"
|
||||||
|
:onclick `blueman-manager &`
|
||||||
|
(label
|
||||||
|
:text "${bluetooth-name} ")))
|
||||||
|
|
||||||
|
; `FNR == 1 + head -c 30` so the name doesn't explode the screen
|
||||||
|
(defpoll bluetooth-name :interval "10s" `bluetoothctl devices Connected | awk '$1 == "Device" {print $0}' | cut -d' ' -f3-`)
|
||||||
|
|
||||||
|
(defwidget time []
|
||||||
|
(box
|
||||||
|
:space-evenly false
|
||||||
|
:class "time"
|
||||||
|
:tooltip {time.long}
|
||||||
|
(label :class "yellow" :text {time.hour})
|
||||||
|
(label :text ":")
|
||||||
|
(label :class "yellow" :text {time.minute})))
|
||||||
|
|
||||||
|
(defpoll time :interval "1s" `date +'{"long":"%a %b %e %H:%M:%S %Z %Y","hour":"%H","minute":"%M"}'`)
|
||||||
|
|
||||||
|
(defpoll powerstats :interval "2s" `power_bat`)
|
||||||
|
|
||||||
|
(defwidget battery []
|
||||||
|
(box :space-evenly false
|
||||||
|
:tooltip powerstats
|
||||||
|
(label
|
||||||
|
:text {EWW_BATTERY.BAT1.status == "Charging" ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 90 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 80 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 70 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 60 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 50 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 40 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 30 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 20 ? "" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 10 ? "" : ""
|
||||||
|
}
|
||||||
|
:class {
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 80 ? "green" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 50 ? "yellow" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 30 ? "peach" :
|
||||||
|
EWW_BATTERY.BAT1.capacity >= 10 ? "maroon" : "red"
|
||||||
|
})
|
||||||
|
(label :text "${EWW_BATTERY.BAT1.capacity}%" :class "yellow")))
|
||||||
|
|
||||||
|
|
||||||
|
(defpoll volumevalue :interval "1s" `scripts/sound/getVolume.sh`)
|
||||||
|
(defpoll volumesink :interval "1s" `scripts/sound/getSink.sh`)
|
||||||
|
|
||||||
|
(defwidget volume []
|
||||||
|
(eventbox :tooltip volumesink
|
||||||
|
:onclick `pwvucontrol &`
|
||||||
|
(label :text "${volumevalue.count}" :class {volumevalue.color})))
|
||||||
|
|
||||||
|
|
||||||
|
(defpoll currentworkspace :interval "1s" `scripts/currentWorkspace.sh`)
|
||||||
40
home-manager/progs/eww/eww.nix
Normal file
40
home-manager/progs/eww/eww.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
zsh
|
||||||
|
bluez
|
||||||
|
brightnessctl
|
||||||
|
(callPackage ./power_bat.nix { })
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.eww = {
|
||||||
|
enable = true;
|
||||||
|
configDir = ./config;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.niri.settings.spawn-at-startup = [
|
||||||
|
{
|
||||||
|
command = [
|
||||||
|
(lib.getExe config.programs.eww.package)
|
||||||
|
"-c"
|
||||||
|
"${config.programs.eww.configDir}"
|
||||||
|
"open"
|
||||||
|
"statusbar"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
# swaybg works on more than just sway (sets a wallpaper)
|
||||||
|
{
|
||||||
|
command = [
|
||||||
|
(lib.getExe pkgs.swaybg)
|
||||||
|
"-i"
|
||||||
|
"${../wallpaper.png}"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
4
home-manager/progs/eww/power_bat.nix
Normal file
4
home-manager/progs/eww/power_bat.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
pkgs.writeShellScriptBin "power_bat" ''
|
||||||
|
exec ${lib.getExe pkgs.rust-script} ${./config/scripts/power_bat.rs} "$@"
|
||||||
|
''
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
eza = "${pkgs.eza}/bin/eza --color=always --group-directories-first";
|
eza = "${lib.getExe pkgs.eza} --color=always --group-directories-first";
|
||||||
cargo = "${pkgs.cargo}/bin/cargo";
|
cargo = "${lib.getExe pkgs.cargo}";
|
||||||
coreutil = "${pkgs.coreutils}/bin";
|
coreutils = "${pkgs.coreutils}/bin";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
@@ -13,10 +13,10 @@ in
|
|||||||
set fish_greeting
|
set fish_greeting
|
||||||
|
|
||||||
#fixes gnupg password entry
|
#fixes gnupg password entry
|
||||||
export GPG_TTY=(${coreutil}/tty)
|
export GPG_TTY=(${coreutils}/tty)
|
||||||
|
|
||||||
#pfetch on shell start (disable pkgs because of execution time)
|
#pfetch on shell start (disable pkgs because of execution time)
|
||||||
PF_INFO="ascii title os host kernel uptime memory editor wm" ${pkgs.pfetch-rs}/bin/pfetch
|
PF_INFO="ascii title os host kernel uptime memory editor wm" ${lib.getExe pkgs.pfetch-rs}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
@@ -24,9 +24,6 @@ in
|
|||||||
cr = "${cargo} run";
|
cr = "${cargo} run";
|
||||||
cb = "${cargo} build";
|
cb = "${cargo} build";
|
||||||
|
|
||||||
# I hate the red background
|
|
||||||
run0 = "run0 --background=\"\"";
|
|
||||||
|
|
||||||
# from DistroTube's dot files: Changing "ls" to "eza"
|
# from DistroTube's dot files: Changing "ls" to "eza"
|
||||||
ls = "${eza} -al";
|
ls = "${eza} -al";
|
||||||
la = "${eza} -a";
|
la = "${eza} -a";
|
||||||
@@ -35,23 +32,24 @@ in
|
|||||||
|
|
||||||
# gets the largest files in a git repo's history
|
# gets the largest files in a git repo's history
|
||||||
"git-size" = ''
|
"git-size" = ''
|
||||||
${pkgs.git}/bin/git rev-list --objects --all |
|
${lib.getExe pkgs.git} rev-list --objects --all |
|
||||||
${pkgs.git}/bin/git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |
|
${lib.getExe pkgs.git} cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |
|
||||||
${pkgs.gnused}/bin/sed -n 's/^blob //p' |
|
${lib.getExe pkgs.gnused} -n 's/^blob //p' |
|
||||||
${coreutil}/sort --numeric-sort --key=2 |
|
${coreutils}/sort --numeric-sort --key=2 |
|
||||||
${coreutil}/cut -c 1-12,41- |
|
${coreutils}/cut -c 1-12,41- |
|
||||||
${coreutil}/numfmt --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest'';
|
${coreutils}/numfmt --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest'';
|
||||||
|
|
||||||
# aliases for (I think) macos commands
|
# aliases for (I think) macos commands
|
||||||
pbcopy = "${pkgs.wl-clipboard}/bin/wl-copy";
|
pbcopy = "${pkgs.wl-clipboard}/bin/wl-copy";
|
||||||
pbpaste = "${pkgs.wl-clipboard}/bin/wl-paste";
|
pbpaste = "${pkgs.wl-clipboard}/bin/wl-paste";
|
||||||
|
|
||||||
nix-cleanup = "doas nix-collect-garbage --delete-older-than 1d && doas nix-store --optimise && doas nix-store --gc";
|
gcc-native = "${lib.getExe pkgs.gcc} -Q --help=target -mtune=native -march=native | ${lib.getExe pkgs.gnugrep} -E '^\\s+\-(mtune|march)=' | ${coreutils}/tr -d '[:blank:]'";
|
||||||
};
|
};
|
||||||
|
|
||||||
shellInit = ''
|
shellInit = ''
|
||||||
fish_add_path ~/.local/bin
|
fish_add_path ~/.local/bin
|
||||||
fish_add_path ~/.cargo/bin
|
fish_add_path ~/.cargo/bin
|
||||||
|
fish_add_path ~/.config/emacs/bin
|
||||||
set hydro_color_pwd 62A
|
set hydro_color_pwd 62A
|
||||||
set hydro_color_error red
|
set hydro_color_error red
|
||||||
set hydro_color_duration yellow
|
set hydro_color_duration yellow
|
||||||
|
|||||||
23
home-manager/progs/flatpak.nix
Normal file
23
home-manager/progs/flatpak.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
flatpak
|
||||||
|
];
|
||||||
|
|
||||||
|
services.flatpak = {
|
||||||
|
enable = true;
|
||||||
|
packages = [
|
||||||
|
"com.tdameritrade.ThinkOrSwim"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,72 +1,10 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
|
config,
|
||||||
lib,
|
lib,
|
||||||
homeDirectory,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [ ./gui.nix ];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
wdisplays
|
|
||||||
intel-gpu-tools
|
|
||||||
swaylock
|
|
||||||
|
|
||||||
#manage bluetooth devices
|
|
||||||
blueman
|
|
||||||
|
|
||||||
niri-unstable
|
|
||||||
];
|
|
||||||
|
|
||||||
#bluetooth manager
|
|
||||||
services.blueman-applet.enable = true;
|
|
||||||
|
|
||||||
#notification daemon
|
|
||||||
services.dunst = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.dunst;
|
|
||||||
};
|
|
||||||
|
|
||||||
#window manager
|
|
||||||
programs.niri = {
|
|
||||||
package = pkgs.niri-unstable;
|
|
||||||
settings = import ./progs/niri.nix { inherit config pkgs homeDirectory; };
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
settings = import ./progs/swaylock.nix;
|
|
||||||
};
|
|
||||||
|
|
||||||
#waybar for status bar
|
|
||||||
programs.waybar = import ./progs/waybar.nix { inherit pkgs; };
|
|
||||||
|
|
||||||
#rofi for application launcher
|
|
||||||
programs.rofi = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.rofi-wayland;
|
|
||||||
extraConfig = {
|
|
||||||
modi = "window,drun,ssh,combi";
|
|
||||||
combi-modi = "window,drun,ssh";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
age.secrets.borg-laptop-password = {
|
|
||||||
file = ./secrets/borg-laptop-password.age;
|
|
||||||
path = "${homeDirectory}/.secrets/borg_bak_pass";
|
|
||||||
};
|
|
||||||
|
|
||||||
#backup utility
|
|
||||||
programs.borgmatic = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.borgmatic;
|
|
||||||
backups =
|
|
||||||
let
|
|
||||||
borgPasswordFile = config.age.secrets.borg-laptop-password.path;
|
|
||||||
in
|
|
||||||
import ./progs/borg.nix { inherit homeDirectory borgPasswordFile; };
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://community.frame.work/t/speakers-sound-quality/1078/83
|
# https://community.frame.work/t/speakers-sound-quality/1078/83
|
||||||
# Filter: ON HPQ Fc 100.0 Hz Gain 0.0 dB Q 1.0
|
# Filter: ON HPQ Fc 100.0 Hz Gain 0.0 dB Q 1.0
|
||||||
@@ -79,7 +17,7 @@
|
|||||||
# Filter: ON PK Fc 7500.0 Hz Gain -2.09 dB Q 3.0
|
# Filter: ON PK Fc 7500.0 Hz Gain -2.09 dB Q 3.0
|
||||||
# Filter: ON PK Fc 8000.0 Hz Gain 2.01 dB Q 4.36
|
# Filter: ON PK Fc 8000.0 Hz Gain 2.01 dB Q 4.36
|
||||||
# Filter: ON PK Fc 900.0 Hz Gain -4.12 dB Q 5.909999999999967
|
# Filter: ON PK Fc 900.0 Hz Gain -4.12 dB Q 5.909999999999967
|
||||||
home.file.".config/easyeffects/output/framework.json".text =
|
home.file.".config/easyeffects/output/${config.services.easyeffects.preset}.json".text =
|
||||||
let
|
let
|
||||||
baseBand = {
|
baseBand = {
|
||||||
mode = "RLC (BT)";
|
mode = "RLC (BT)";
|
||||||
@@ -180,4 +118,8 @@
|
|||||||
package = pkgs.easyeffects;
|
package = pkgs.easyeffects;
|
||||||
preset = "framework";
|
preset = "framework";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# easyeffects has issues stopping quickly, causing hands on logout/poweroff
|
||||||
|
# It's safe to just kill easyeffects instantly
|
||||||
|
systemd.user.services.easyeffects.Service.TimeoutStopSec = 0;
|
||||||
}
|
}
|
||||||
16
home-manager/progs/ghostty.nix
Normal file
16
home-manager/progs/ghostty.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
# https://mynixos.com/home-manager/option/programs.ghostty
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
settings = {
|
||||||
|
theme = "Adventure";
|
||||||
|
background-opacity = 0.7;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
TERMINAL = "ghostty";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
diff --git a/main.qml b/main.qml
|
|
||||||
index 1e685385..7c747eba 100644
|
|
||||||
--- a/main.qml
|
|
||||||
+++ b/main.qml
|
|
||||||
@@ -72,12 +72,14 @@ Window {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
// check if we have access to settings and if not show an error
|
|
||||||
if (!hasShownSettingsAccess && !LLM.hasSettingsAccess()) {
|
|
||||||
errorSettingsAccess.open();
|
|
||||||
hasShownSettingsAccess = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
+ */
|
|
||||||
|
|
||||||
// check for first time start of this version
|
|
||||||
if (!hasCheckedFirstStart) {
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
diff --git a/main.qml b/main.qml
|
|
||||||
index 1e685385..7c747eba 100644
|
|
||||||
--- a/main.qml
|
|
||||||
+++ b/main.qml
|
|
||||||
@@ -72,12 +72,14 @@ Window {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
// check if we have access to settings and if not show an error
|
|
||||||
if (!hasShownSettingsAccess && !LLM.hasSettingsAccess()) {
|
|
||||||
errorSettingsAccess.open();
|
|
||||||
hasShownSettingsAccess = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
+ */
|
|
||||||
|
|
||||||
// check for first time start of this version
|
|
||||||
if (!hasCheckedFirstStart) {
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
commit 425b33877c819dd88f3692aae37452c767371f6b
|
|
||||||
Author: Simon Gardling <titaniumtown@proton.me>
|
|
||||||
Date: Thu Sep 19 10:00:39 2024 -0400
|
|
||||||
|
|
||||||
use locally downloaded embeddings
|
|
||||||
|
|
||||||
diff --git a/gpt4all-chat/CMakeLists.txt b/gpt4all-chat/CMakeLists.txt
|
|
||||||
index 900307ae..802fc31a 100644
|
|
||||||
--- a//CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -120,6 +120,7 @@ elseif (APPLE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Embedding model
|
|
||||||
+#[[
|
|
||||||
set(LOCAL_EMBEDDING_MODEL "nomic-embed-text-v1.5.f16.gguf")
|
|
||||||
set(LOCAL_EMBEDDING_MODEL_MD5 "a5401e7f7e46ed9fcaed5b60a281d547")
|
|
||||||
set(LOCAL_EMBEDDING_MODEL_PATH "${CMAKE_BINARY_DIR}/resources/${LOCAL_EMBEDDING_MODEL}")
|
|
||||||
@@ -134,6 +135,7 @@ message(STATUS "Embedding model downloaded to ${LOCAL_EMBEDDING_MODEL_PATH}")
|
|
||||||
if (APPLE)
|
|
||||||
list(APPEND CHAT_EXE_RESOURCES "${LOCAL_EMBEDDING_MODEL_PATH}")
|
|
||||||
endif()
|
|
||||||
+]]
|
|
||||||
|
|
||||||
set(QAPPLICATION_CLASS QGuiApplication)
|
|
||||||
add_subdirectory(deps/SingleApplication)
|
|
||||||
@@ -348,11 +350,13 @@ if (LLMODEL_CUDA)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
+#[[
|
|
||||||
if (NOT APPLE)
|
|
||||||
install(FILES "${LOCAL_EMBEDDING_MODEL_PATH}"
|
|
||||||
DESTINATION resources
|
|
||||||
COMPONENT ${COMPONENT_NAME_MAIN})
|
|
||||||
endif()
|
|
||||||
+]]
|
|
||||||
|
|
||||||
set(CPACK_GENERATOR "IFW")
|
|
||||||
set(CPACK_VERBATIM_VARIABLES YES)
|
|
||||||
diff --git a/gpt4all-chat/src/embllm.cpp b/gpt4all-chat/src/embllm.cpp
|
|
||||||
index 81b1e9e1..e3266cc7 100644
|
|
||||||
--- a/src/embllm.cpp
|
|
||||||
+++ b/src/embllm.cpp
|
|
||||||
@@ -84,7 +84,7 @@ bool EmbeddingLLMWorker::loadModel()
|
|
||||||
|
|
||||||
QString filePath = embPathFmt.arg(QCoreApplication::applicationDirPath(), LOCAL_EMBEDDING_MODEL);
|
|
||||||
if (!QFileInfo::exists(filePath)) {
|
|
||||||
- qWarning() << "embllm WARNING: Local embedding model not found";
|
|
||||||
+ qWarning() << "embllm WARNING: Local embedding model not found: " << filePath;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
{ pkgs, lib, ... }:
|
|
||||||
let
|
|
||||||
models = [
|
|
||||||
{
|
|
||||||
name = "Qwen2.5-14B-Instruct-Q4_K_S.gguf";
|
|
||||||
context_length = "32768";
|
|
||||||
gen_length = "8192";
|
|
||||||
source = pkgs.fetchurl {
|
|
||||||
url = "https://huggingface.co/bartowski/Qwen2.5-14B-Instruct-GGUF/resolve/main/Qwen2.5-14B-Instruct-Q4_K_S.gguf?download=true";
|
|
||||||
sha256 = "E1CmWUhMMbTXEjIRczzA3rSrVuR8qOL8BLagw7LiyZk=";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Qwen2.5-7B-Instruct-Q6_K_L.gguf";
|
|
||||||
context_length = "32768";
|
|
||||||
gen_length = "8192";
|
|
||||||
source = pkgs.fetchurl {
|
|
||||||
url = "https://huggingface.co/bartowski/Qwen2.5-7B-Instruct-GGUF/resolve/main/Qwen2.5-7B-Instruct-Q6_K_L.gguf?download=true";
|
|
||||||
sha256 = "thEXN06T/UVGfzdB83jlgpG7kuTzZtz1ZUAdupAnErM=";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# stolen from: https://stackoverflow.com/a/42398526
|
|
||||||
optimizeWithFlags =
|
|
||||||
pkg: flags:
|
|
||||||
pkgs.lib.overrideDerivation pkg (
|
|
||||||
old:
|
|
||||||
let
|
|
||||||
newflags = pkgs.lib.foldl' (acc: x: "${acc} ${x}") "" flags;
|
|
||||||
oldflags = if (pkgs.lib.hasAttr "NIX_CFLAGS_COMPILE" old) then "${old.NIX_CFLAGS_COMPILE}" else "";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
NIX_CFLAGS_COMPILE = "${oldflags} ${newflags}";
|
|
||||||
stdenv = pkgs.clangStdenv;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
model_files = builtins.listToAttrs (
|
|
||||||
map (f: {
|
|
||||||
name = ".local/share/nomic.ai/GPT4All/${f.name}";
|
|
||||||
value.source = f.source;
|
|
||||||
}) models
|
|
||||||
);
|
|
||||||
|
|
||||||
gpt4all_package = (
|
|
||||||
optimizeWithFlags
|
|
||||||
(pkgs.gpt4all.overrideAttrs (old: {
|
|
||||||
# https://github.com/NixOS/nixpkgs/pull/344001 3.2.1 -> 3.3.0
|
|
||||||
version = "3.4.0-dev0";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
fetchSubmodules = true;
|
|
||||||
owner = "nomic-ai";
|
|
||||||
repo = "gpt4all";
|
|
||||||
rev = "HEAD";
|
|
||||||
sha256 = "/w1VAfLYlhB5y08cVG2u9RT2kajtFtyTPziQXSwVFcE=";
|
|
||||||
};
|
|
||||||
|
|
||||||
patches = [
|
|
||||||
./gpt4all-HEAD-embeddings-model.patch
|
|
||||||
./gpt4all-HEAD-disable-settings-err.patch
|
|
||||||
];
|
|
||||||
}))
|
|
||||||
# compile flags
|
|
||||||
[
|
|
||||||
"-Ofast"
|
|
||||||
"-march=native"
|
|
||||||
"-mtune=native"
|
|
||||||
"-fno-protect-parens"
|
|
||||||
"-fno-finite-math-only" # https://github.com/ggerganov/llama.cpp/pull/7154#issuecomment-2143844461
|
|
||||||
]
|
|
||||||
);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
gpt4all_package
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file = lib.recursiveUpdate {
|
|
||||||
".config/nomic.ai/GPT4All.ini".text =
|
|
||||||
let
|
|
||||||
system_prompt = "You are an expert AI assistant who is thoughtful and works step-by-step from first principles derive an answer to the user's prompt. For each step, provide a title that describes what you're doing in that step, along with the content. Decide if you need another step or if you're ready to provide your answer to the user, make sure to exhaust ALL POSSIBILITIES before providing a response to the user. While your reasoning is not shown to the user, it is under high levels of scrutiny to ensure high-quality reasoning. WHEN YOU DETERMINE THAT YOU ARE READY TO GIVE A FINAL ANSWER TO THE USER GIVEN YOUR REASONING AND STEP-BY-STEP WORK. ONLY TEXT WRITTEN AFTER A SECTION NAMED \"Final Answer\" WILL BE SHOWN TO THE USER. ASSUME THAT NO REASONING STEPS ARE SHOWN TO THE USER. DO NOT THINK THAT THE USER CAN SEE YOUR INTERNAL REASONING STEPS.
|
|
||||||
USE AS MANY REASONING STEPS AS POSSIBLE. AT LEAST 3. BE AWARE OF YOUR LIMITATIONS AS AN LLM AND WHAT YOU CAN AND CANNOT DO. EXPLORE ALTERNATE ANSWERS AND CONSIDER THAT YOUR ANSWER MAY BE WRONG. IDENTIFY POSSIBLE ERRORS IN YOUR REASONING AND WHERE SUCH ERRORS MAY BE. FULLY TEST ALL OTHER POSSIBILITIES. YOU CAN BE WRONG. WHEN YOU SAY YOU ARE RE-EXAMINING, ACTUALLY RE-EXAMINE, AND USE ANOTHER APPROACH TO DO SO. DO NOT JUST SAY YOU ARE RE-EXAMINING. SHOW ALL YOUR WORK. USE AT LEAST 3 METHODS TO DERIVE THE ANSWER. USE BEST PRACTICES. WORK FROM FIRST PRINCIPLES TO CREATE YOUR ANSWER.";
|
|
||||||
in
|
|
||||||
''
|
|
||||||
[General]
|
|
||||||
chatTheme=Dark
|
|
||||||
height=940
|
|
||||||
suggestionMode=Off
|
|
||||||
threadCount=8
|
|
||||||
uniqueId=7096f2d2-448d-4272-a132-d37e77f8a781
|
|
||||||
userDefaultModel=${
|
|
||||||
# select the first element of `models` to be the default model
|
|
||||||
(builtins.elemAt models 0).name
|
|
||||||
}
|
|
||||||
width=1472
|
|
||||||
x=0
|
|
||||||
y=0
|
|
||||||
|
|
||||||
[download]
|
|
||||||
lastVersionStarted=${gpt4all_package.version}
|
|
||||||
''
|
|
||||||
+ (lib.concatStrings (
|
|
||||||
map (model: ''
|
|
||||||
[model-${model.name}]
|
|
||||||
contextLength=${model.context_length}
|
|
||||||
filename=${model.name}
|
|
||||||
maxLength=${model.gen_length}
|
|
||||||
promptBatchSize=256
|
|
||||||
promptTemplate=<|im_start|>user\n%1<|im_end|>\n<|im_start|>assistant\n
|
|
||||||
systemPrompt="<|im_start|>system\n${
|
|
||||||
# replace newlines with the string "\n" for gpt4all to properly parse
|
|
||||||
builtins.replaceStrings [ "\n" ] [ "\\n" ] system_prompt
|
|
||||||
}<|im_end|>
|
|
||||||
\n"
|
|
||||||
'') models
|
|
||||||
))
|
|
||||||
+ ''
|
|
||||||
[network]
|
|
||||||
isActive=true
|
|
||||||
usageStatsActive=true
|
|
||||||
'';
|
|
||||||
} model_files;
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
|
# set helix as default editor
|
||||||
|
home.sessionVariables.EDITOR = "hx";
|
||||||
|
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.helix;
|
package = pkgs.helix;
|
||||||
@@ -18,9 +21,15 @@
|
|||||||
|
|
||||||
# wrapping!!
|
# wrapping!!
|
||||||
soft-wrap.enable = true;
|
soft-wrap.enable = true;
|
||||||
|
|
||||||
|
end-of-line-diagnostics = "hint";
|
||||||
|
inline-diagnostics = {
|
||||||
|
cursor-line = "warning";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
languages = {
|
languages = {
|
||||||
language = [
|
language = [
|
||||||
{
|
{
|
||||||
@@ -34,6 +43,10 @@
|
|||||||
# modified fleet_dark theme
|
# modified fleet_dark theme
|
||||||
my_theme =
|
my_theme =
|
||||||
let
|
let
|
||||||
|
pastel-pink = "#c67C7E";
|
||||||
|
|
||||||
|
darkish-green = "#6B8D46";
|
||||||
|
|
||||||
white = "#ffffff";
|
white = "#ffffff";
|
||||||
gray-120 = "#d1d1d1";
|
gray-120 = "#d1d1d1";
|
||||||
gray-110 = "#c2c2c2";
|
gray-110 = "#c2c2c2";
|
||||||
@@ -104,7 +117,10 @@
|
|||||||
"constant.character" = yellow;
|
"constant.character" = yellow;
|
||||||
"constant.character.escape" = cyan;
|
"constant.character.escape" = cyan;
|
||||||
"constant.numeric" = yellow;
|
"constant.numeric" = yellow;
|
||||||
"string" = pink;
|
|
||||||
|
# string datatypes, also includes quoted attributes in nix
|
||||||
|
"string" = pastel-pink;
|
||||||
|
|
||||||
"string.regexp" = cyan;
|
"string.regexp" = cyan;
|
||||||
"string.special" = {
|
"string.special" = {
|
||||||
fg = yellow;
|
fg = yellow;
|
||||||
@@ -120,8 +136,13 @@
|
|||||||
# "variable.other" = {} # .member
|
# "variable.other" = {} # .member
|
||||||
"variable.other.member" = violet;
|
"variable.other.member" = violet;
|
||||||
"label" = yellow;
|
"label" = yellow;
|
||||||
"keyword" = cyan; # .operator / .directive / .function
|
|
||||||
|
# `keyword` in language, such as function declaration
|
||||||
|
"keyword" = darkish-green;
|
||||||
|
|
||||||
|
# function name color when calling the function
|
||||||
"function" = yellow;
|
"function" = yellow;
|
||||||
|
|
||||||
"function.declaration" = "#EFEFEF";
|
"function.declaration" = "#EFEFEF";
|
||||||
"function.macro" = lime;
|
"function.macro" = lime;
|
||||||
"function.builtin" = lime;
|
"function.builtin" = lime;
|
||||||
@@ -175,18 +196,22 @@
|
|||||||
"ui.statusline" = {
|
"ui.statusline" = {
|
||||||
fg = gray-120;
|
fg = gray-120;
|
||||||
bg = gray-20;
|
bg = gray-20;
|
||||||
}; # .inactive / .normal / .insert / .select
|
};
|
||||||
|
# NOR
|
||||||
"ui.statusline.normal" = {
|
"ui.statusline.normal" = {
|
||||||
fg = gray-120;
|
fg = gray-120;
|
||||||
bg = gray-20;
|
bg = gray-20;
|
||||||
};
|
};
|
||||||
|
# inactive
|
||||||
"ui.statusline.inactive" = {
|
"ui.statusline.inactive" = {
|
||||||
fg = gray-90;
|
fg = gray-90;
|
||||||
};
|
};
|
||||||
|
# INS
|
||||||
"ui.statusline.insert" = {
|
"ui.statusline.insert" = {
|
||||||
fg = gray-20;
|
fg = gray-20;
|
||||||
bg = blue-90;
|
bg = blue-90;
|
||||||
};
|
};
|
||||||
|
# SEL
|
||||||
"ui.statusline.select" = {
|
"ui.statusline.select" = {
|
||||||
fg = gray-20;
|
fg = gray-20;
|
||||||
bg = yellow-60;
|
bg = yellow-60;
|
||||||
@@ -194,27 +219,38 @@
|
|||||||
|
|
||||||
"ui.cursor" = {
|
"ui.cursor" = {
|
||||||
modifiers = [ "reversed" ];
|
modifiers = [ "reversed" ];
|
||||||
}; # .insert / .select / .match / .primary
|
};
|
||||||
|
|
||||||
|
# .insert / .select / .match / .primary
|
||||||
"ui.cursor.match" = {
|
"ui.cursor.match" = {
|
||||||
bg = blue-30;
|
bg = blue-30;
|
||||||
}; # .insert / .select / .match / .primary
|
};
|
||||||
|
# .insert / .select / .match / .primary
|
||||||
"ui.selection" = {
|
"ui.selection" = {
|
||||||
bg = gray-50;
|
bg = gray-50;
|
||||||
}; # .primary
|
};
|
||||||
|
|
||||||
|
# actual selection of text via visual mode or cursor (or search?)
|
||||||
"ui.selection.primary" = {
|
"ui.selection.primary" = {
|
||||||
bg = blue-40;
|
bg = blue-20;
|
||||||
};
|
};
|
||||||
|
|
||||||
"ui.cursorline" = {
|
"ui.cursorline" = {
|
||||||
bg = gray-15;
|
bg = gray-15;
|
||||||
};
|
};
|
||||||
"ui.linenr" = gray-70;
|
|
||||||
"ui.linenr.selected" = gray-110;
|
|
||||||
|
|
||||||
|
# line numbers
|
||||||
|
"ui.linenr" = yellow-30;
|
||||||
|
|
||||||
|
# line number of currently selected line
|
||||||
|
"ui.linenr.selected" = yellow-50;
|
||||||
|
|
||||||
|
# .info # .nor
|
||||||
"ui.popup" = {
|
"ui.popup" = {
|
||||||
fg = gray-120;
|
fg = gray-120;
|
||||||
bg = gray-20;
|
bg = gray-20;
|
||||||
}; # .info
|
};
|
||||||
|
|
||||||
"ui.window" = {
|
"ui.window" = {
|
||||||
fg = gray-50;
|
fg = gray-50;
|
||||||
};
|
};
|
||||||
@@ -222,20 +258,25 @@
|
|||||||
fg = gray-120;
|
fg = gray-120;
|
||||||
bg = gray-20;
|
bg = gray-20;
|
||||||
};
|
};
|
||||||
|
|
||||||
"ui.menu" = {
|
"ui.menu" = {
|
||||||
fg = gray-120;
|
fg = gray-120;
|
||||||
bg = gray-20;
|
bg = gray-20;
|
||||||
}; # .selected
|
};
|
||||||
|
|
||||||
|
#.selected
|
||||||
"ui.menu.selected" = {
|
"ui.menu.selected" = {
|
||||||
fg = white;
|
fg = white;
|
||||||
bg = blue-40;
|
bg = blue-40;
|
||||||
}; # .selected
|
};
|
||||||
|
|
||||||
# Calculated as #ffffff with 30% opacity
|
# Calculated as #ffffff with 30% opacity
|
||||||
"ui.menu.scroll" = {
|
"ui.menu.scroll" = {
|
||||||
fg = "#dfdfdf";
|
fg = "#dfdfdf";
|
||||||
};
|
};
|
||||||
|
|
||||||
"ui.text" = gray-120; # .focus / .info
|
"ui.text" = gray-120;
|
||||||
|
# .focus / .info
|
||||||
"ui.text.focus" = {
|
"ui.text.focus" = {
|
||||||
fg = white;
|
fg = white;
|
||||||
bg = blue-40;
|
bg = blue-40;
|
||||||
|
|||||||
@@ -1,58 +1,132 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
homeDirectory,
|
lib,
|
||||||
|
inputs,
|
||||||
|
niri-package,
|
||||||
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
invert_image_avg = pkgs.callPackage ../util/inverse_color.nix;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
prefer-no-csd = true;
|
imports = [
|
||||||
|
inputs.niri.homeModules.config
|
||||||
spawn-at-startup = [
|
(
|
||||||
#waybar
|
{ ... }:
|
||||||
{ command = [ "${pkgs.waybar}/bin/waybar" ]; }
|
|
||||||
|
|
||||||
#swaybg works on more than just sway (sets a wallpaper)
|
|
||||||
{
|
{
|
||||||
command = [
|
nixpkgs.overlays = [
|
||||||
"${pkgs.swaybg}/bin/swaybg"
|
inputs.niri.overlays.niri
|
||||||
"-m"
|
|
||||||
"center"
|
|
||||||
"-i"
|
|
||||||
"${homeDirectory}/.wallpaper.png"
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs.niri = {
|
||||||
|
package = niri-package;
|
||||||
|
settings = {
|
||||||
|
prefer-no-csd = true;
|
||||||
|
|
||||||
|
input = {
|
||||||
|
touchpad = {
|
||||||
|
scroll-factor = 0.4;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
clipboard = {
|
||||||
|
disable-primary = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# skip the hotkey menu thingy
|
||||||
|
hotkey-overlay.skip-at-startup = true;
|
||||||
|
|
||||||
|
layout = {
|
||||||
|
gaps = 16;
|
||||||
|
struts = {
|
||||||
|
# left = 16;
|
||||||
|
# right = 16;
|
||||||
|
top = -8;
|
||||||
|
# bottom = 16;
|
||||||
|
};
|
||||||
|
focus-ring = {
|
||||||
|
enable = true;
|
||||||
|
active = {
|
||||||
|
color = builtins.readFile (invert_image_avg {
|
||||||
|
src = ../wallpaper.png;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xwayland-satellite.path = lib.getExe pkgs.xwayland-satellite;
|
||||||
|
|
||||||
window-rules = [
|
window-rules = [
|
||||||
{ draw-border-with-background = false; }
|
{ draw-border-with-background = false; }
|
||||||
{
|
{
|
||||||
geometry-corner-radius = {
|
geometry-corner-radius =
|
||||||
top-left = 10.0;
|
let
|
||||||
top-right = 10.0;
|
radius = 10.0;
|
||||||
bottom-right = 10.0;
|
in
|
||||||
bottom-left = 10.0;
|
{
|
||||||
|
top-left = radius;
|
||||||
|
top-right = radius;
|
||||||
|
bottom-right = radius;
|
||||||
|
bottom-left = radius;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{ clip-to-geometry = true; }
|
{ clip-to-geometry = true; }
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
app-id = "^zen";
|
||||||
|
title = "^Picture-in-Picture$";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
app-id = "Mullvad VPN";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
open-floating = true;
|
||||||
|
default-column-width = {
|
||||||
|
fixed = 480;
|
||||||
|
};
|
||||||
|
default-window-height = {
|
||||||
|
fixed = 270;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# XF86AudioMedia allow-when-locked=true { spawn "playerctl" "play-pause"; }
|
||||||
|
# XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; }
|
||||||
|
# XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
|
||||||
|
# XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
|
||||||
|
|
||||||
|
# https://github.com/sodiboo/niri-flake/issues/591
|
||||||
|
switch-events = with config.lib.niri.actions; {
|
||||||
|
"lid-close".action = spawn (lib.getExe pkgs.swaylock);
|
||||||
|
};
|
||||||
|
|
||||||
binds = with config.lib.niri.actions; {
|
binds = with config.lib.niri.actions; {
|
||||||
#application launcher
|
# Application launcher
|
||||||
"Mod+Space".action = spawn [
|
"Mod+Space".action = spawn (lib.getExe pkgs.fuzzel);
|
||||||
"${pkgs.rofi-wayland}/bin/rofi"
|
|
||||||
"-show"
|
# TODO! make this work
|
||||||
"combi"
|
"Mod+E".action = spawn "${config.programs.doom-emacs.finalDoomPackage}/bin/doom-emacs";
|
||||||
];
|
|
||||||
|
"Mod+O".action = toggle-overview;
|
||||||
|
|
||||||
# open a terminal
|
# open a terminal
|
||||||
"Mod+T".action = spawn "${pkgs.alacritty}/bin/alacritty";
|
"Mod+T".action = spawn config.home.sessionVariables.TERMINAL;
|
||||||
|
|
||||||
# lock the screen
|
# lock the screen
|
||||||
"Mod+X".action = spawn "${pkgs.swaylock}/bin/swaylock";
|
"Mod+X".action = spawn (lib.getExe pkgs.swaylock);
|
||||||
|
|
||||||
# screenshotting
|
# screenshotting
|
||||||
"Print".action = screenshot;
|
"Print".action.screenshot = [ ];
|
||||||
"Ctrl+Print".action = screenshot-screen;
|
|
||||||
"Alt+Print".action = screenshot-window;
|
# https://github.com/sodiboo/niri-flake/commit/a7949bd0f5551fdfffd04cb9735ad3cd3167d624#r153571513
|
||||||
|
# "Ctrl+Print".action = screenshot-screen;
|
||||||
|
"Alt+Print".action.screenshot-window = [ ];
|
||||||
|
|
||||||
# Volume control
|
# Volume control
|
||||||
"XF86AudioRaiseVolume".action = spawn [
|
"XF86AudioRaiseVolume".action = spawn [
|
||||||
@@ -60,53 +134,49 @@
|
|||||||
"-u"
|
"-u"
|
||||||
"up"
|
"up"
|
||||||
];
|
];
|
||||||
|
|
||||||
"XF86AudioLowerVolume".action = spawn [
|
"XF86AudioLowerVolume".action = spawn [
|
||||||
"${pkgs.avizo}/bin/volumectl"
|
"${pkgs.avizo}/bin/volumectl"
|
||||||
"-u"
|
"-u"
|
||||||
"down"
|
"down"
|
||||||
];
|
];
|
||||||
|
|
||||||
"XF86AudioMute".action = spawn [
|
"XF86AudioMute".action = spawn [
|
||||||
"${pkgs.avizo}/bin/volumectl"
|
"${pkgs.avizo}/bin/volumectl"
|
||||||
"toggle-mute"
|
"toggle-mute"
|
||||||
];
|
];
|
||||||
"XF86AudioMicMute".action = spawn [
|
|
||||||
"${pkgs.avizo}/bin/volumectl"
|
|
||||||
"-m"
|
|
||||||
"toggle-mute"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Display Brightness control
|
# Display Brightness control
|
||||||
"XF86MonBrightnessUp".action = spawn [
|
"XF86MonBrightnessUp".action = spawn [
|
||||||
"${pkgs.avizo}/bin/lightctl"
|
"${pkgs.avizo}/bin/lightctl"
|
||||||
"up"
|
"up"
|
||||||
];
|
];
|
||||||
|
|
||||||
"XF86MonBrightnessDown".action = spawn [
|
"XF86MonBrightnessDown".action = spawn [
|
||||||
"${pkgs.avizo}/bin/lightctl"
|
"${pkgs.avizo}/bin/lightctl"
|
||||||
"down"
|
"down"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# color picker and copies to clipboard
|
||||||
|
"Mod+Ctrl+Alt+C".action = spawn [
|
||||||
|
(lib.getExe pkgs.hyprpicker)
|
||||||
|
"-za"
|
||||||
|
];
|
||||||
|
|
||||||
|
# "Framework" key (F12)
|
||||||
|
# "XF86AudioMedia".action = spawn [];
|
||||||
|
|
||||||
# Force close a window
|
# Force close a window
|
||||||
"Mod+Q".action = close-window;
|
"Mod+Q".action = close-window;
|
||||||
|
|
||||||
"Mod+Shift+Q".action = quit;
|
"Mod+Shift+Q".action = quit;
|
||||||
|
|
||||||
#bindings for like window management ig
|
# bindings for window management
|
||||||
|
|
||||||
"Mod+Left".action = focus-column-left;
|
|
||||||
"Mod+Down".action = focus-window-down;
|
|
||||||
"Mod+Up".action = focus-window-up;
|
|
||||||
"Mod+Right".action = focus-column-right;
|
|
||||||
|
|
||||||
"Mod+H".action = focus-column-left;
|
"Mod+H".action = focus-column-left;
|
||||||
"Mod+J".action = focus-window-down;
|
"Mod+J".action = focus-window-down;
|
||||||
"Mod+K".action = focus-window-up;
|
"Mod+K".action = focus-window-up;
|
||||||
"Mod+L".action = focus-column-right;
|
"Mod+L".action = focus-column-right;
|
||||||
|
|
||||||
"Mod+Ctrl+Left".action = move-column-left;
|
|
||||||
"Mod+Ctrl+Down".action = move-window-down;
|
|
||||||
"Mod+Ctrl+Up".action = move-window-up;
|
|
||||||
"Mod+Ctrl+Right".action = move-column-right;
|
|
||||||
|
|
||||||
"Mod+Ctrl+H".action = move-column-left;
|
"Mod+Ctrl+H".action = move-column-left;
|
||||||
"Mod+Ctrl+J".action = move-window-down;
|
"Mod+Ctrl+J".action = move-window-down;
|
||||||
"Mod+Ctrl+K".action = move-window-up;
|
"Mod+Ctrl+K".action = move-window-up;
|
||||||
@@ -123,21 +193,11 @@
|
|||||||
"Mod+Ctrl+Home".action = move-column-to-first;
|
"Mod+Ctrl+Home".action = move-column-to-first;
|
||||||
"Mod+Ctrl+End".action = move-column-to-last;
|
"Mod+Ctrl+End".action = move-column-to-last;
|
||||||
|
|
||||||
"Mod+Shift+Left".action = focus-monitor-left;
|
|
||||||
"Mod+Shift+Down".action = focus-monitor-down;
|
|
||||||
"Mod+Shift+Up".action = focus-monitor-up;
|
|
||||||
"Mod+Shift+Right".action = focus-monitor-right;
|
|
||||||
|
|
||||||
"Mod+Shift+H".action = focus-monitor-left;
|
"Mod+Shift+H".action = focus-monitor-left;
|
||||||
"Mod+Shift+J".action = focus-monitor-down;
|
"Mod+Shift+J".action = focus-monitor-down;
|
||||||
"Mod+Shift+K".action = focus-monitor-up;
|
"Mod+Shift+K".action = focus-monitor-up;
|
||||||
"Mod+Shift+L".action = focus-monitor-right;
|
"Mod+Shift+L".action = focus-monitor-right;
|
||||||
|
|
||||||
"Mod+Shift+Ctrl+Left".action = move-column-to-monitor-left;
|
|
||||||
"Mod+Shift+Ctrl+Down".action = move-column-to-monitor-down;
|
|
||||||
"Mod+Shift+Ctrl+Up".action = move-column-to-monitor-up;
|
|
||||||
"Mod+Shift+Ctrl+Right".action = move-column-to-monitor-right;
|
|
||||||
|
|
||||||
"Mod+Shift+Ctrl+H".action = move-column-to-monitor-left;
|
"Mod+Shift+Ctrl+H".action = move-column-to-monitor-left;
|
||||||
"Mod+Shift+Ctrl+J".action = move-column-to-monitor-down;
|
"Mod+Shift+Ctrl+J".action = move-column-to-monitor-down;
|
||||||
"Mod+Shift+Ctrl+K".action = move-column-to-monitor-up;
|
"Mod+Shift+Ctrl+K".action = move-column-to-monitor-up;
|
||||||
@@ -164,4 +224,6 @@
|
|||||||
"Mod+Shift+F".action = fullscreen-window;
|
"Mod+Shift+F".action = fullscreen-window;
|
||||||
"Mod+C".action = center-column;
|
"Mod+C".action = center-column;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
92
home-manager/progs/noctalia.nix
Normal file
92
home-manager/progs/noctalia.nix
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.noctalia.homeModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.noctalia-shell = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
bar = {
|
||||||
|
position = "top";
|
||||||
|
floating = true;
|
||||||
|
backgroundOpacity = 0.93;
|
||||||
|
};
|
||||||
|
general = {
|
||||||
|
animationSpeed = 1.5;
|
||||||
|
radiusRatio = 1.2;
|
||||||
|
};
|
||||||
|
colorSchemes = {
|
||||||
|
darkMode = true;
|
||||||
|
useWallpaperColors = true;
|
||||||
|
};
|
||||||
|
location = {
|
||||||
|
weatherEnabled = false;
|
||||||
|
};
|
||||||
|
wallpaper = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".cache/noctalia/wallpapers.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
defaultWallpaper = "${../wallpaper.png}";
|
||||||
|
wallpapers = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.niri.settings = {
|
||||||
|
spawn-at-startup = [
|
||||||
|
{
|
||||||
|
command = [
|
||||||
|
"noctalia-shell"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]; # place noctalia overview wallpaper on the backdrop layer
|
||||||
|
layer-rules = [
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{ namespace = "^noctalia-overview*"; }
|
||||||
|
];
|
||||||
|
place-within-backdrop = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# allow notification actions and window activation from noctalia
|
||||||
|
debug = {
|
||||||
|
honor-xdg-activation-with-invalid-serial = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
binds =
|
||||||
|
with config.lib.niri.actions;
|
||||||
|
let
|
||||||
|
noctalia =
|
||||||
|
cmd:
|
||||||
|
[
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
]
|
||||||
|
++ (lib.splitString " " cmd);
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
# noctalia shell keybinds
|
||||||
|
"Mod+D".action = spawn (noctalia "launcher toggle");
|
||||||
|
"Mod+A".action = spawn (noctalia "controlCenter toggle");
|
||||||
|
"Mod+Escape".action = spawn (noctalia "sessionMenu toggle");
|
||||||
|
"Mod+Shift+X".action = spawn (noctalia "lockScreen lock");
|
||||||
|
"Mod+N".action = spawn (noctalia "notifications toggleHistory");
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
206
home-manager/progs/opencode.nix
Normal file
206
home-manager/progs/opencode.nix
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
# what model should be used in place of haiku?
|
||||||
|
haiku-model = "zai-coding-plan/glm-5";
|
||||||
|
|
||||||
|
opus-model = "zai-coding-plan/glm-5";
|
||||||
|
|
||||||
|
ohMyOpencodeConfig = {
|
||||||
|
"$schema" =
|
||||||
|
"https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json";
|
||||||
|
agents = {
|
||||||
|
sisyphus.model = opus-model;
|
||||||
|
sisyphus-junior.model = opus-model;
|
||||||
|
oracle = opus-model;
|
||||||
|
librarian.model = haiku-model;
|
||||||
|
explore.model = haiku-model;
|
||||||
|
multimodal-looker.model = "openrouter/qwen/qwen3-vl-30b-a3b-thinking";
|
||||||
|
|
||||||
|
prometheus.model = opus-model;
|
||||||
|
metis.model = opus-model;
|
||||||
|
momus = opus-model;
|
||||||
|
atlas.model = opus-model;
|
||||||
|
};
|
||||||
|
categories = {
|
||||||
|
visual-engineering.model = "openrouter/google/gemini-3-pro";
|
||||||
|
ultrabrain = opus-model;
|
||||||
|
artistry = {
|
||||||
|
model = "openrouter/google/gemini-3-pro";
|
||||||
|
variant = "max";
|
||||||
|
};
|
||||||
|
quick.model = haiku-model;
|
||||||
|
deep.model = opus-model;
|
||||||
|
writing.model = "openrouter/google/gemini-3-flash-preview";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages =
|
||||||
|
let
|
||||||
|
ohMyOpencode =
|
||||||
|
let
|
||||||
|
orig = inputs.oh-my-opencode.packages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
fixed-node_modules = orig.node_modules.overrideAttrs (_: {
|
||||||
|
outputHash = "sha256-qq/eEoxFELVdt4qaJkrw8XNZ/Ph/RJdsyIp7LteQE5A=";
|
||||||
|
});
|
||||||
|
in
|
||||||
|
orig.oh-my-opencode.overrideAttrs (_: {
|
||||||
|
buildPhase = ''
|
||||||
|
cp -r ${fixed-node_modules}/node_modules .
|
||||||
|
chmod -R u+w node_modules
|
||||||
|
patchShebangs node_modules/
|
||||||
|
export HOME=$(mktemp -d)
|
||||||
|
bun run build
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
in
|
||||||
|
[
|
||||||
|
ohMyOpencode
|
||||||
|
pkgs.playwright-driver.browsers
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";
|
||||||
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."opencode/oh-my-opencode.json".text = builtins.toJSON ohMyOpencodeConfig;
|
||||||
|
|
||||||
|
xdg.configFile."opencode/skills/playwright.md".text =
|
||||||
|
let
|
||||||
|
browsers = pkgs.playwright-driver.browsers;
|
||||||
|
chromiumDir = builtins.head (
|
||||||
|
builtins.filter (n: builtins.match "chromium-[0-9]+" n != null) (
|
||||||
|
builtins.attrNames browsers.passthru.entries
|
||||||
|
)
|
||||||
|
);
|
||||||
|
chromiumPath = "${browsers}/${chromiumDir}/chrome-linux64/chrome";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
---
|
||||||
|
name: playwright
|
||||||
|
description: "MUST USE for any browser-related tasks. Browser automation via Playwright MCP - verification, browsing, information gathering, web scraping, testing, screenshots, and all browser interactions."
|
||||||
|
mcp:
|
||||||
|
playwright:
|
||||||
|
command: npx
|
||||||
|
args:
|
||||||
|
- "@playwright/mcp@latest"
|
||||||
|
- "--executable-path"
|
||||||
|
- "${chromiumPath}"
|
||||||
|
- "--user-data-dir"
|
||||||
|
- "${config.home.homeDirectory}/.cache/playwright-mcp"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Playwright Browser Automation
|
||||||
|
|
||||||
|
This skill provides browser automation capabilities via the Playwright MCP server.
|
||||||
|
'';
|
||||||
|
|
||||||
|
programs.opencode = {
|
||||||
|
package = inputs.llm-agents.packages.${pkgs.stdenv.targetPlatform.system}.opencode;
|
||||||
|
enable = true;
|
||||||
|
rules = ''
|
||||||
|
You are an intelligent and observant agent.
|
||||||
|
If instructed to commit, disable gpg signing.
|
||||||
|
You are on nixOS, if you don't have access to a tool, you can access it via the `nix-shell` command.
|
||||||
|
|
||||||
|
## Think deeply about everything.
|
||||||
|
When given a problem, break it down, abstract it out, understand the fundamentals, then solve it in the real world.
|
||||||
|
|
||||||
|
## Misc
|
||||||
|
For long-running commands, make sure you set the timeout of the Bash tool provided to a larger value.
|
||||||
|
Do NOT read secret files. Do not directly read files that are api keys or are contextually sensitive.
|
||||||
|
Do NOT run `skill_mcp [mcp_name=playwright, tool_name=browser_install]` as browsers are provided by NixOS via PLAYWRIGHT_BROWSERS_PATH.
|
||||||
|
|
||||||
|
## Behavior
|
||||||
|
Do not be sycophantic in your responses.
|
||||||
|
Do not use emojis unless explicitly asked to. This includes in code.
|
||||||
|
Use Test Driven Development methodology.
|
||||||
|
|
||||||
|
## Nix
|
||||||
|
For using `nix build` append `-L` to get better visibility into the logs.
|
||||||
|
If you get an error that a file can't be found, always try to `git add` the file before trying other troubleshooting steps.
|
||||||
|
|
||||||
|
|
||||||
|
## Android UI Interaction Workflow Summary
|
||||||
|
1. Taking Screenshots
|
||||||
|
adb exec-out screencap -p > /tmp/screen.png
|
||||||
|
Captures the current screen state as a PNG image.
|
||||||
|
|
||||||
|
2. Analyzing Screenshots
|
||||||
|
I delegate screenshot analysis to an explore agent rather than analyzing images directly:
|
||||||
|
mcp_task(subagent_type="explore", prompt="Analyze /tmp/screen.png. What screen is this? What elements are visible?")
|
||||||
|
The agent describes the UI, identifies elements, and estimates Y coordinates.
|
||||||
|
|
||||||
|
3. Getting Precise Element Coordinates
|
||||||
|
UI Automator dump - extracts the full UI hierarchy as XML:
|
||||||
|
adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml /tmp/ui.xml
|
||||||
|
Then grep for specific elements:
|
||||||
|
# Find by text
|
||||||
|
grep -oP 'text="Login".*?bounds="[^"]*"' /tmp/ui.xml
|
||||||
|
# Find by class
|
||||||
|
grep -oP 'class="android.widget.EditText".*?bounds="[^"]*"' /tmp/ui.xml
|
||||||
|
Bounds format: [left,top][right,bottom] → tap center: ((left+right)/2, (top+bottom)/2)
|
||||||
|
|
||||||
|
4. Tapping Elements
|
||||||
|
adb shell input tap X Y
|
||||||
|
Where X, Y are pixel coordinates from the bounds.
|
||||||
|
|
||||||
|
5. Text Input
|
||||||
|
adb shell input text "some_text"
|
||||||
|
Note: Special characters need escaping (\!, \;, etc.)
|
||||||
|
|
||||||
|
6. Other Gestures
|
||||||
|
# Swipe/scroll
|
||||||
|
adb shell input swipe startX startY endX endY duration_ms
|
||||||
|
# Key events
|
||||||
|
adb shell input keyevent KEYCODE_BACK
|
||||||
|
adb shell input keyevent KEYCODE_ENTER
|
||||||
|
|
||||||
|
7. WebView Limitation
|
||||||
|
- UI Automator can see WebView content if accessibility is enabled
|
||||||
|
- Touch events on iframe content (like Cloudflare Turnstile) often fail due to cross-origin isolation
|
||||||
|
- Form fields in WebViews work if you get exact bounds from the UI dump
|
||||||
|
|
||||||
|
Typical Flow
|
||||||
|
1. Take screenshot → analyze with explore agent (get rough layout)
|
||||||
|
2. Dump UI hierarchy → grep for exact element bounds
|
||||||
|
- NEVER ASSUME COORDINATES. You must ALWAYS check first.
|
||||||
|
- Do this before ANY tap action as elements on the screen may of changed.
|
||||||
|
3. Calculate center coordinates from bounds
|
||||||
|
4. Tap/interact
|
||||||
|
5. Wait → screenshot → verify result
|
||||||
|
'';
|
||||||
|
settings = {
|
||||||
|
theme = "opencode";
|
||||||
|
|
||||||
|
model = opus-model;
|
||||||
|
# small model used for titles
|
||||||
|
small_model = "openrouter/openai/gpt-oss-20b:free";
|
||||||
|
|
||||||
|
autoshare = false;
|
||||||
|
# note: this updates opencode (and plugins like oh-my-opencode) at launch,
|
||||||
|
# bypassing the version pinned in flake.lock
|
||||||
|
autoupdate = true;
|
||||||
|
agent = { };
|
||||||
|
plugin = [ "oh-my-opencode" ];
|
||||||
|
provider = {
|
||||||
|
openrouter = {
|
||||||
|
models = {
|
||||||
|
"openai/gpt-oss-20b:free" = { };
|
||||||
|
};
|
||||||
|
options = {
|
||||||
|
# TODO! use agenix here instead
|
||||||
|
apiKey = "{file:${../secrets/openrouter_api_key}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
title = "Stratechery";
|
|
||||||
url = "https://stratechery.passport.online/feed/rss/2gi1tPZ8Ta36Tsx7rDLM5P";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Factorio Blog";
|
|
||||||
url = "https://www.factorio.com/blog/rss";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Firefox Nightly News";
|
|
||||||
url = "https://blog.nightly.mozilla.org/feed/";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Servo Blog";
|
|
||||||
url = "https://servo.org/blog/feed.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Alyssa Rosenzweig";
|
|
||||||
url = "https://rosenzweig.io/feed.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Marc's Blog";
|
|
||||||
url = "https://brooker.co.za/blog/rss.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Fabien Sanglard";
|
|
||||||
url = "https://fabiensanglard.net/rss.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Xuanwo's Blog";
|
|
||||||
url = "https://xuanwo.io/index.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Carlos Galdino";
|
|
||||||
url = "https://blog.carlosgaldino.com/atom.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "soatok";
|
|
||||||
url = "https://soatok.blog/feed/";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Jack Garbus";
|
|
||||||
url = "https://jarbus.net/index.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Terence Eden";
|
|
||||||
url = "https://shkspr.mobi/blog/feed/atom/";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "GioCities";
|
|
||||||
url = "https://blog.giovanh.com/feeds/atom.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "mcyoung";
|
|
||||||
url = "https://mcyoung.xyz/atom.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Embrace the Red";
|
|
||||||
url = "https://embracethered.com/blog/index.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Chips and Cheese";
|
|
||||||
url = "https://chipsandcheese.com/feed/";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "System5";
|
|
||||||
url = "https://blogsystem5.substack.com/feed";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "lwn";
|
|
||||||
url = "https://lwn.net/headlines/Features";
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,31 +1,50 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
blur = pkgs.callPackage ../util/blur.nix;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
programs.swaylock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
color = "24273a";
|
color = "24273a";
|
||||||
|
ring-color = "b7bdf8";
|
||||||
|
|
||||||
bs-hl-color = "f4dbd6";
|
bs-hl-color = "f4dbd6";
|
||||||
caps-lock-bs-hl-color = "f4dbd6";
|
caps-lock-bs-hl-color = "f4dbd6";
|
||||||
|
text-clear-color = "f4dbd6";
|
||||||
|
ring-clear-color = "f4dbd6";
|
||||||
|
|
||||||
|
text-caps-lock-color = "f5a97f";
|
||||||
|
ring-caps-lock-color = "f5a97f";
|
||||||
|
|
||||||
|
ring-ver-color = "8aadf4";
|
||||||
|
text-ver-color = "8aadf4";
|
||||||
|
|
||||||
|
ring-wrong-color = "ee99a0";
|
||||||
|
text-wrong-color = "ee99a0";
|
||||||
|
|
||||||
|
layout-text-color = "cad3f5";
|
||||||
|
text-color = "cad3f5";
|
||||||
|
|
||||||
caps-lock-key-hl-color = "a6da95";
|
caps-lock-key-hl-color = "a6da95";
|
||||||
|
key-hl-color = "a6da95";
|
||||||
|
|
||||||
inside-color = 0;
|
inside-color = 0;
|
||||||
inside-clear-color = 0;
|
inside-clear-color = 0;
|
||||||
inside-caps-lock-color = 0;
|
inside-caps-lock-color = 0;
|
||||||
inside-ver-color = 0;
|
inside-ver-color = 0;
|
||||||
inside-wrong-color = 0;
|
inside-wrong-color = 0;
|
||||||
key-hl-color = "a6da95";
|
|
||||||
layout-bg-color = 0;
|
layout-bg-color = 0;
|
||||||
layout-border-color = 0;
|
layout-border-color = 0;
|
||||||
layout-text-color = "cad3f5";
|
|
||||||
line-color = 0;
|
line-color = 0;
|
||||||
line-clear-color = 0;
|
line-clear-color = 0;
|
||||||
line-caps-lock-color = 0;
|
line-caps-lock-color = 0;
|
||||||
line-ver-color = 0;
|
line-ver-color = 0;
|
||||||
line-wrong-color = 0;
|
line-wrong-color = 0;
|
||||||
ring-color = "b7bdf8";
|
|
||||||
ring-clear-color = "f4dbd6";
|
|
||||||
ring-caps-lock-color = "f5a97f";
|
|
||||||
ring-ver-color = "8aadf4";
|
|
||||||
ring-wrong-color = "ee99a0";
|
|
||||||
separator-color = 0;
|
separator-color = 0;
|
||||||
text-color = "cad3f5";
|
image = builtins.toString (blur {
|
||||||
text-clear-color = "f4dbd6";
|
src = ../wallpaper.png;
|
||||||
text-caps-lock-color = "f5a97f";
|
});
|
||||||
text-ver-color = "8aadf4";
|
};
|
||||||
text-wrong-color = "ee99a0";
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
12
home-manager/progs/trezor.nix
Normal file
12
home-manager/progs/trezor.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
trezor-udev-rules
|
||||||
|
trezord
|
||||||
|
trezor-suite
|
||||||
|
monero-gui
|
||||||
|
monero-cli
|
||||||
|
trezorctl
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,253 +0,0 @@
|
|||||||
{ pkgs }:
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
settings.mainBar = {
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
# mod = "dock";
|
|
||||||
# exclusive = true;
|
|
||||||
# gtk-layer-shell = true;
|
|
||||||
margin-bottom = -1;
|
|
||||||
# passthrough = false;
|
|
||||||
height = 32;
|
|
||||||
modules-left =
|
|
||||||
[
|
|
||||||
];
|
|
||||||
modules-center = [ "clock" ];
|
|
||||||
modules-right = [
|
|
||||||
"cpu"
|
|
||||||
"memory"
|
|
||||||
"tray"
|
|
||||||
"pulseaudio"
|
|
||||||
"network"
|
|
||||||
"battery"
|
|
||||||
];
|
|
||||||
cpu = {
|
|
||||||
interval = 5;
|
|
||||||
format = " {usage}%";
|
|
||||||
max-length = 10;
|
|
||||||
};
|
|
||||||
memory = {
|
|
||||||
interval = 10;
|
|
||||||
format = " {percentage}%";
|
|
||||||
max-length = 10;
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-format = "RAM - {used:0.1f}GiB used";
|
|
||||||
};
|
|
||||||
tray = {
|
|
||||||
icon-size = 18;
|
|
||||||
spacing = 3;
|
|
||||||
};
|
|
||||||
clock = {
|
|
||||||
format = " {:%R\n %d.%m.%Y}";
|
|
||||||
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
|
||||||
calendar = {
|
|
||||||
mode = "year";
|
|
||||||
mode-mon-col = 3;
|
|
||||||
weeks-pos = "right";
|
|
||||||
on-scroll = 1;
|
|
||||||
on-click-right = "mode";
|
|
||||||
format = {
|
|
||||||
months = "<span color='#ffead3'><b>{}</b></span>";
|
|
||||||
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
|
||||||
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
|
||||||
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
|
||||||
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
actions = {
|
|
||||||
on-click-right = "mode";
|
|
||||||
on-click-forward = "tz_up";
|
|
||||||
on-click-backward = "tz_down";
|
|
||||||
on-scroll-up = "shift_up";
|
|
||||||
on-scroll-down = "shift_down";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
format-wifi = " {icon}";
|
|
||||||
format-ethernet = " ";
|
|
||||||
format-disconnected = " ";
|
|
||||||
format-icons = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
states = {
|
|
||||||
good = 95;
|
|
||||||
warning = 30;
|
|
||||||
critical = 20;
|
|
||||||
};
|
|
||||||
format = " {icon} {capacity}%";
|
|
||||||
format-charging = " {capacity}%";
|
|
||||||
format-plugged = " {capacity}%";
|
|
||||||
format-alt = "{time} {icon}";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# not actually pulseaudio-specific
|
|
||||||
pulseaudio = {
|
|
||||||
max-volume = 100;
|
|
||||||
scroll-step = 10;
|
|
||||||
format = "{icon}";
|
|
||||||
tooltip-format = "{volume}%";
|
|
||||||
format-muted = "🔇";
|
|
||||||
format-icons = {
|
|
||||||
default = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
};
|
|
||||||
on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
style = ''
|
|
||||||
/*base background color*/
|
|
||||||
@define-color bg_main rgba(25, 25, 25, 1.0);
|
|
||||||
@define-color bg_main_tooltip rgba(0, 0, 0, 0.7);
|
|
||||||
|
|
||||||
|
|
||||||
/*base background color of selections */
|
|
||||||
@define-color bg_hover rgba(200, 200, 200, 0.3);
|
|
||||||
/*base background color of active elements */
|
|
||||||
@define-color bg_active rgba(100, 100, 100, 0.5);
|
|
||||||
|
|
||||||
/*base border color*/
|
|
||||||
@define-color border_main rgba(255, 255, 255, 0.2);
|
|
||||||
|
|
||||||
/*text color for entries, views and content in general */
|
|
||||||
@define-color content_main white;
|
|
||||||
/*text color for entries that are unselected */
|
|
||||||
@define-color content_inactive rgba(255, 255, 255, 0.25);
|
|
||||||
|
|
||||||
* {
|
|
||||||
text-shadow: none;
|
|
||||||
box-shadow: none;
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
font-family: "Segoe UI", "Ubuntu";
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 12.7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
background: @bg_main;
|
|
||||||
border-top: 0;
|
|
||||||
color: @content_main;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
background: @bg_main_tooltip;
|
|
||||||
border-radius: 5px;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: @border_main;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip label {
|
|
||||||
color: @content_main;
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar {
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar button {
|
|
||||||
min-width: 130px;
|
|
||||||
border-bottom: 3px solid rgba(255, 255, 255, 0.3);
|
|
||||||
margin-left: 2px;
|
|
||||||
margin-right: 2px;
|
|
||||||
padding-left: 8px;
|
|
||||||
padding-right: 8px;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar button.active {
|
|
||||||
border-bottom: 3px solid white;
|
|
||||||
background: @bg_active;
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar button:hover {
|
|
||||||
border-bottom: 3px solid white;
|
|
||||||
background: @bg_hover;
|
|
||||||
color: @content_main;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu, #memory {
|
|
||||||
padding:3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
border-radius: 10px;
|
|
||||||
margin-left: 20px;
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
margin-left: 5px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray > .passive {
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray > .active {
|
|
||||||
border-bottom: 3px solid white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray > .needs-attention {
|
|
||||||
border-bottom: 3px solid @warning_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray > widget {
|
|
||||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray > widget:hover {
|
|
||||||
background: @bg_hover;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio {
|
|
||||||
font-family: "JetBrains Mono Nerd Font";
|
|
||||||
padding-left: 3px;
|
|
||||||
padding-right: 3px;
|
|
||||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio:hover {
|
|
||||||
background: @bg_hover;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network {
|
|
||||||
padding-left: 3px;
|
|
||||||
padding-right: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
padding-right: 5px;
|
|
||||||
padding-left: 5px;
|
|
||||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock:hover {
|
|
||||||
background: @bg_hover;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 JlUYaQ 0zR1i7aaaTiNatQ64adSfLAes3mxyErq3kZUziRInVc
|
|
||||||
A8sfonsw2iodHRFsmYbmMNAviEUFSy9mkXuq6jefki8
|
|
||||||
-> ssh-ed25519 dHDJgQ CmnVM06YvF+mzPNF1LsHdyL1hk+d/yH3HTBcdRlX/2c
|
|
||||||
79u1EAd+g/Cmb9TzAifO4VHqJZk5T88nP4DWfsJEuIw
|
|
||||||
-> >=ei241-grease co`|!7_c lx{qy
|
|
||||||
A6d8YS1s8NZojKmRVWhmJDzOOFT/AEO/IRZN0LI30QP3jImoTJ4EFDQUm4p+0IWk
|
|
||||||
dam3RKxF7XzF6dNigGDKKeIVXcSX1SiEgHyIo0+hPm2nZbM/p1IJ6fsACbTB6Q
|
|
||||||
--- /Za+90oVP7/fGDLBRr6s56UopJjz8f851js/htBcYWA
|
|
||||||
6e0Y¼ìT0|`Hö”à>`æbª.å XãG«<47>Xs1ãn.µï$×o
|
|
||||||
Binary file not shown.
Binary file not shown.
BIN
home-manager/secrets/openrouter_api_key
Normal file
BIN
home-manager/secrets/openrouter_api_key
Normal file
Binary file not shown.
@@ -1,18 +0,0 @@
|
|||||||
let
|
|
||||||
laptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH";
|
|
||||||
desktop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJjT5QZ3zRDb+V6Em20EYpSEgPW5e/U+06uQGJdraxi";
|
|
||||||
in
|
|
||||||
(builtins.listToAttrs (
|
|
||||||
map
|
|
||||||
(f: {
|
|
||||||
f.publicKeys = [
|
|
||||||
laptop
|
|
||||||
desktop
|
|
||||||
];
|
|
||||||
})
|
|
||||||
[
|
|
||||||
"server-password.age"
|
|
||||||
"borg-laptop-password.age"
|
|
||||||
"my-gpg.age"
|
|
||||||
]
|
|
||||||
))
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 JlUYaQ u9duGBEW7wp7aG5cqd1gfB8w+MDAirki9ZVSsotqtRM
|
|
||||||
9gyL9k29ytNJZ6Kp90309bDim1fZNqcLhPTVqs1py5s
|
|
||||||
-> ssh-ed25519 dHDJgQ ytHA01CSY/0dD6F8XC9ilzNaivZS84PsCmr5GFWAE1o
|
|
||||||
4jLi+spahOIExkrUyfpX8cYJFEKvWfErWskYJ2btBkw
|
|
||||||
-> Q-grease
|
|
||||||
n1QvV95VRYZ7CiOl6KOedEKr2L7tjTdj8aahF/DHOifCyWnc
|
|
||||||
--- iV/7+IbpWvsgrZIs2yPwOL0Xa6AlvkIfwbDotCh7iiQ
|
|
||||||
‡'<27>F¬’h¸2¬¾ÚmÊêY¸´iuáL/D*<2A>àƒ:•@Í;f 9…v{×À2aÇ«ÝÕÿÞ&³
|
|
||||||
BIN
home-manager/secrets/steam-user-id
Normal file
BIN
home-manager/secrets/steam-user-id
Normal file
Binary file not shown.
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ./gui.nix ];
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
# Add a protontricks-beta package so we can use protontricks with latest steam beta
|
|
||||||
# https://github.com/Matoking/protontricks/issues/304#issuecomment-2280920826
|
|
||||||
|
|
||||||
# nixpkgs update: https://github.com/NixOS/nixpkgs/pull/343068
|
|
||||||
(
|
|
||||||
final: prev:
|
|
||||||
let
|
|
||||||
ps = prev.python312Packages;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
vdf-patch = ps.vdf.overrideAttrs (oldAttrs: {
|
|
||||||
src = inputs.vdf-patch;
|
|
||||||
});
|
|
||||||
protontricks-beta = prev.protontricks.overrideAttrs (oldAttrs: {
|
|
||||||
src = inputs.protontricks;
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
ps.setuptools # implicit dependency, used to find data/icon_placeholder.png
|
|
||||||
final.vdf-patch
|
|
||||||
ps.pillow
|
|
||||||
];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
protontricks-beta
|
|
||||||
beatsabermodmanager
|
|
||||||
protonup-qt
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.alacritty.settings = {
|
|
||||||
window.decorations = lib.mkForce "full";
|
|
||||||
window.opacity = lib.mkForce 1.0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
25
home-manager/util/blur.nix
Normal file
25
home-manager/util/blur.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
imagemagick,
|
||||||
|
src,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "blur-image";
|
||||||
|
version = "1.0";
|
||||||
|
|
||||||
|
inherit src;
|
||||||
|
|
||||||
|
buildInputs = [ imagemagick ];
|
||||||
|
|
||||||
|
# input is a file, not a directory, skip unpackPhase
|
||||||
|
unpackPhase = "true";
|
||||||
|
|
||||||
|
# command taken from: https://old.reddit.com/r/swaywm/comments/oz3t7v/setting_a_blurred_background_with_swaylock_and/
|
||||||
|
buildPhase = ''
|
||||||
|
magick ${src} -filter Gaussian -resize 20% -blur 0x2.5 -resize 500% output.png
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mv output.png $out
|
||||||
|
'';
|
||||||
|
}
|
||||||
26
home-manager/util/inverse_color.nix
Normal file
26
home-manager/util/inverse_color.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
imagemagick,
|
||||||
|
gawk,
|
||||||
|
src,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "invert-image-avg";
|
||||||
|
version = "1.0";
|
||||||
|
|
||||||
|
inherit src;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
imagemagick
|
||||||
|
gawk
|
||||||
|
];
|
||||||
|
|
||||||
|
# input is a file, not a directory, skip unpackPhase
|
||||||
|
unpackPhase = "true";
|
||||||
|
|
||||||
|
# command taken from: https://old.reddit.com/r/swaywm/comments/oz3t7v/setting_a_blurred_background_with_swaylock_and/
|
||||||
|
buildPhase = ''
|
||||||
|
rm -fr $out
|
||||||
|
magick ${src} -channel RGB -negate -resize 1x1 txt: | awk 'FNR == 2 {print $3}' > $out
|
||||||
|
'';
|
||||||
|
}
|
||||||
BIN
home-manager/wallpaper.png
Normal file
BIN
home-manager/wallpaper.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
21
justfile
21
justfile
@@ -1,21 +0,0 @@
|
|||||||
update_all: system_update home_update sync_configs
|
|
||||||
|
|
||||||
format_home:
|
|
||||||
nixfmt ~/.config/home-manager
|
|
||||||
|
|
||||||
format_system:
|
|
||||||
doas nixfmt /etc/nixos
|
|
||||||
|
|
||||||
system_update:
|
|
||||||
doas nix flake update /etc/nixos
|
|
||||||
doas nixos-rebuild boot --impure
|
|
||||||
|
|
||||||
home_update:
|
|
||||||
nix flake update ~/.config/home-manager
|
|
||||||
rm -fr ~/.gtkrc-2.0
|
|
||||||
home-manager switch --impure
|
|
||||||
|
|
||||||
sync_configs: format_home format_system
|
|
||||||
rsync -a --delete /etc/nixos/ ~/projects/configs/dotfiles/etcnixos/
|
|
||||||
rsync -a --delete ~/.config/home-manager/ ~/projects/configs/dotfiles/home-manager/
|
|
||||||
|
|
||||||
294
system/common.nix
Normal file
294
system/common.nix
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
system,
|
||||||
|
hostname,
|
||||||
|
inputs,
|
||||||
|
niri-package,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./vm.nix
|
||||||
|
./steam.nix
|
||||||
|
./networking.nix
|
||||||
|
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
inputs.lanzaboote.nixosModules.lanzaboote
|
||||||
|
|
||||||
|
inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||||
|
inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||||
|
inputs.nixos-hardware.nixosModules.common-pc-ssd
|
||||||
|
];
|
||||||
|
|
||||||
|
# allow overclocking (I actually underclock but lol)
|
||||||
|
hardware.amdgpu.overdrive.ppfeaturemask = "0xFFFFFFFF";
|
||||||
|
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
hardware.cpu.amd.updateMicrocode = true;
|
||||||
|
|
||||||
|
services.kmscon.enable = true;
|
||||||
|
|
||||||
|
# Add niri to display manager session packages
|
||||||
|
services.displayManager.sessionPackages = [ niri-package ];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
gamescope = {
|
||||||
|
enable = true;
|
||||||
|
capSysNice = true;
|
||||||
|
};
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.activationScripts = {
|
||||||
|
# FIX: https://github.com/NixOS/nix/issues/2982
|
||||||
|
"profile-channel-dummy".text = ''
|
||||||
|
#!/bin/sh
|
||||||
|
mkdir -p /nix/var/nix/profiles/per-user/root/channels
|
||||||
|
'';
|
||||||
|
|
||||||
|
# extract all my secureboot keys
|
||||||
|
# TODO! proper secrets management
|
||||||
|
"secureboot-keys".text = ''
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
rm -fr ${config.boot.lanzaboote.pkiBundle} || true
|
||||||
|
mkdir -p ${config.boot.lanzaboote.pkiBundle}
|
||||||
|
${lib.getExe pkgs.gnutar} xf ${./secrets/secureboot.tar} -C ${config.boot.lanzaboote.pkiBundle}
|
||||||
|
chown -R root:wheel ${config.boot.lanzaboote.pkiBundle}
|
||||||
|
chmod -R 500 ${config.boot.lanzaboote.pkiBundle}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
# optimize the store
|
||||||
|
optimise.automatic = true;
|
||||||
|
|
||||||
|
# enable flakes!
|
||||||
|
settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# kernel options
|
||||||
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
# kernelPackages = pkgs.linuxPackages;
|
||||||
|
|
||||||
|
lanzaboote = {
|
||||||
|
enable = true;
|
||||||
|
# TODO: proper secrets management so this is not stored in nix store
|
||||||
|
pkiBundle = "/var/lib/sbctl";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
loader = {
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
timeout = 1;
|
||||||
|
/*
|
||||||
|
Lanzaboote currently replaces the systemd-boot module.
|
||||||
|
This setting is usually set to true in configuration.nix
|
||||||
|
generated at installation time. So we force it to false
|
||||||
|
for now.
|
||||||
|
*/
|
||||||
|
systemd-boot.enable = lib.mkForce false;
|
||||||
|
systemd-boot.configurationLimit = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
initrd = {
|
||||||
|
systemd.enable = true;
|
||||||
|
compressor = "zstd";
|
||||||
|
availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"nvme"
|
||||||
|
"usbhid"
|
||||||
|
"amdgpu"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
kernelModules = [
|
||||||
|
"kvm-amd"
|
||||||
|
"ip_tables"
|
||||||
|
"iptable_nat"
|
||||||
|
"msr"
|
||||||
|
"btusb"
|
||||||
|
];
|
||||||
|
|
||||||
|
kernelParams = [
|
||||||
|
# 1gb huge pages
|
||||||
|
"hugepagesz=1G"
|
||||||
|
"hugepages=3"
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = {
|
||||||
|
# override default nixos /etc/issue
|
||||||
|
"issue".text = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
# fwupd for updating firmware
|
||||||
|
fwupd = {
|
||||||
|
enable = true;
|
||||||
|
extraRemotes = [ "lvfs-testing" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# auto detect network printers
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = with pkgs; [ hplip ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# I don't want fingerprint login
|
||||||
|
fprintd.enable = false;
|
||||||
|
|
||||||
|
# Making sure mullvad works on boot
|
||||||
|
mullvad-vpn.enable = true;
|
||||||
|
|
||||||
|
# power statistics
|
||||||
|
upower.enable = true;
|
||||||
|
|
||||||
|
# power profiles for noctalia shell
|
||||||
|
power-profiles-daemon.enable = true;
|
||||||
|
|
||||||
|
# geolocation (uses beacondb.net by default)
|
||||||
|
geoclue2.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# EST
|
||||||
|
time.timeZone = "America/New_York";
|
||||||
|
|
||||||
|
security = {
|
||||||
|
# lets use doas and not sudo!
|
||||||
|
doas.enable = true;
|
||||||
|
sudo.enable = false;
|
||||||
|
# Configure doas
|
||||||
|
doas.extraRules = [
|
||||||
|
{
|
||||||
|
users = [ username ];
|
||||||
|
keepEnv = true;
|
||||||
|
persist = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
# Enable Bluetooth
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
|
||||||
|
# Enable experimental features for battery % of bluetooth devices
|
||||||
|
settings.General.Experimental = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Apply gtk themes by enabling dconf
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
|
||||||
|
# Enable sound with pipewire.
|
||||||
|
services.pulseaudio.enable = false; # pipewire >>>>>>> pulseaudio
|
||||||
|
# BUG! disable rtkit in order to fix mumble: https://github.com/NixOS/nixpkgs/issues/392992#issuecomment-2799867278
|
||||||
|
security.rtkit.enable = false;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Define my user account (the rest of the configuration if found in `~/.config/home-manager/...`)
|
||||||
|
users.users.${username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [
|
||||||
|
"networkmanager"
|
||||||
|
"wheel"
|
||||||
|
"video"
|
||||||
|
"camera"
|
||||||
|
"adbusers"
|
||||||
|
];
|
||||||
|
# TODO! this is really bad :( I should really figure out how to do proper secrets management
|
||||||
|
hashedPasswordFile = "${./secrets/password-hash}";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gvfs.enable = true;
|
||||||
|
programs.gphoto2.enable = true;
|
||||||
|
|
||||||
|
# Enable thermal data
|
||||||
|
services.thermald.enable = true;
|
||||||
|
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
pinentryPackage = pkgs.pinentry-curses;
|
||||||
|
enableSSHSupport = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# System packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# mullvad-vpn is provided by services.mullvad-vpn.enable
|
||||||
|
|
||||||
|
#secureboot ctl
|
||||||
|
sbctl
|
||||||
|
|
||||||
|
dmidecode
|
||||||
|
|
||||||
|
doas-sudo-shim
|
||||||
|
|
||||||
|
glib
|
||||||
|
usbutils
|
||||||
|
libmtp
|
||||||
|
man-pages
|
||||||
|
man-pages-posix
|
||||||
|
|
||||||
|
# needed for home-manager
|
||||||
|
git
|
||||||
|
|
||||||
|
tmux
|
||||||
|
android-tools
|
||||||
|
];
|
||||||
|
|
||||||
|
# wayland with electron/chromium applications
|
||||||
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell
|
||||||
|
programs.fish.enable = true;
|
||||||
|
programs.bash = {
|
||||||
|
interactiveShellInit = ''
|
||||||
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||||
|
then
|
||||||
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
|
exec ${lib.getExe pkgs.fish} $LOGIN_OPTION
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# port 53317 for localsend
|
||||||
|
networking.firewall.allowedUDPPorts = [ 53317 ];
|
||||||
|
networking.firewall.allowedTCPPorts = [ 53317 ];
|
||||||
|
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
|
||||||
|
documentation.enable = true;
|
||||||
|
documentation.man.enable = true;
|
||||||
|
documentation.dev.enable = true;
|
||||||
|
}
|
||||||
53
system/disk_mreow.nix
Normal file
53
system/disk_mreow.nix
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-path/pci-0000:01:00.0-nvme-1";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [ "umask=0077" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
luks = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
passwordFile = "${./secrets/disk-password}";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "f2fs";
|
||||||
|
mountpoint = "/";
|
||||||
|
extraArgs = [
|
||||||
|
"-O"
|
||||||
|
"extra_attr,inode_checksum,sb_checksum,compression"
|
||||||
|
];
|
||||||
|
mountOptions = [
|
||||||
|
"compress_algorithm=zstd:6,compress_chksum,atgc,gc_merge,lazytime,nodiscard"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
52
system/disk_yarn.nix
Normal file
52
system/disk_yarn.nix
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
type = "EF00";
|
||||||
|
size = "500M";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
persistent = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "f2fs";
|
||||||
|
mountpoint = "/persistent";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nix = {
|
||||||
|
size = "200G";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "f2fs";
|
||||||
|
mountpoint = "/nix";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nodev = {
|
||||||
|
"/" = {
|
||||||
|
fsType = "tmpfs";
|
||||||
|
mountOptions = [
|
||||||
|
"defaults"
|
||||||
|
"size=2G"
|
||||||
|
"mode=755"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/persistent".neededForBoot = true;
|
||||||
|
fileSystems."/nix".neededForBoot = true;
|
||||||
|
}
|
||||||
38
system/impermanence.nix
Normal file
38
system/impermanence.nix
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
environment.persistence."/persistent" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/var/log"
|
||||||
|
"/var/lib/systemd/coredump"
|
||||||
|
"/var/lib/nixos"
|
||||||
|
"/var/lib/systemd/timers"
|
||||||
|
];
|
||||||
|
|
||||||
|
files = [
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key"
|
||||||
|
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||||
|
"/etc/machine-id"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Bind mount entire home directory from persistent storage
|
||||||
|
# (impermanence doesn't support "." so we do this directly)
|
||||||
|
fileSystems."/home/${username}" = {
|
||||||
|
device = "/persistent/home/${username}";
|
||||||
|
fsType = "none";
|
||||||
|
options = [ "bind" ];
|
||||||
|
neededForBoot = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /etc 755 root"
|
||||||
|
];
|
||||||
|
}
|
||||||
26
system/networking.nix
Normal file
26
system/networking.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ hostname, ... }:
|
||||||
|
{
|
||||||
|
# speed up boot times (by about three seconds)
|
||||||
|
systemd.services.NetworkManager-wait-online.enable = false;
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = hostname;
|
||||||
|
|
||||||
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
insertNameservers = [
|
||||||
|
"1.1.1.1"
|
||||||
|
"9.9.9.9"
|
||||||
|
];
|
||||||
|
|
||||||
|
wifi = {
|
||||||
|
scanRandMacAddress = true;
|
||||||
|
# fix suspend issue
|
||||||
|
# powersave = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
ensureProfiles.profiles = import ./secrets/wifi-passwords.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
43
system/no-rgb.nix
Normal file
43
system/no-rgb.nix
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
systemd.services.no-rgb =
|
||||||
|
let
|
||||||
|
no-rgb = (
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "no-rgb";
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
openrgb
|
||||||
|
coreutils
|
||||||
|
gnugrep
|
||||||
|
];
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
NUM_DEVICES=$(openrgb --noautoconnect --list-devices | grep -cE '^[0-9]+: ')
|
||||||
|
|
||||||
|
for i in $(seq 0 $((NUM_DEVICES - 1))); do
|
||||||
|
openrgb --noautoconnect --device "$i" --mode direct --color 000000
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
description = "disable rgb";
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${lib.getExe no-rgb}";
|
||||||
|
Type = "oneshot";
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.hardware.openrgb.enable = true;
|
||||||
|
services.udev.packages = [ pkgs.openrgb ];
|
||||||
|
hardware.i2c.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openrgb-with-all-plugins
|
||||||
|
];
|
||||||
|
}
|
||||||
BIN
system/secrets/disk-password
Normal file
BIN
system/secrets/disk-password
Normal file
Binary file not shown.
BIN
system/secrets/password-hash
Normal file
BIN
system/secrets/password-hash
Normal file
Binary file not shown.
BIN
system/secrets/wifi-passwords.nix
Normal file
BIN
system/secrets/wifi-passwords.nix
Normal file
Binary file not shown.
28
system/steam.nix
Normal file
28
system/steam.nix
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
|
pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"steam"
|
||||||
|
"steam-original"
|
||||||
|
"steam-unwrapped"
|
||||||
|
"steam-run"
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
extraCompatPackages = with pkgs; [ proton-ge-bin ];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
steamtinkerlaunch
|
||||||
|
mangohud
|
||||||
|
goverlay
|
||||||
|
yad
|
||||||
|
];
|
||||||
|
}
|
||||||
43
system/system-mreow.nix
Normal file
43
system/system-mreow.nix
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./common.nix
|
||||||
|
./disk_mreow.nix
|
||||||
|
|
||||||
|
inputs.nixos-hardware.nixosModules.framework-amd-ai-300-series
|
||||||
|
];
|
||||||
|
|
||||||
|
# Disable PSR, PSR-SU, and Panel Replay to fix display hangs and corruption.
|
||||||
|
# Panel Replay requires PSR/PSR-SU to also be disabled to avoid issues.
|
||||||
|
# This overrides nixos-hardware's 0x10 with 0x410 (last value wins in kernel cmdline).
|
||||||
|
# https://github.com/NixOS/nixos-hardware/pull/1692
|
||||||
|
boot.kernelParams = lib.mkAfter [ "amdgpu.dcdebugmask=0x410" ];
|
||||||
|
|
||||||
|
hardware.framework.laptop13.audioEnhancement.rawDeviceName =
|
||||||
|
lib.mkDefault "alsa_output.pci-0000_c1_00.6.analog-stereo";
|
||||||
|
|
||||||
|
# PST
|
||||||
|
# time.timeZone = lib.mkForce "America/Los_Angeles";
|
||||||
|
|
||||||
|
# weird hack to get swaylock working? idk, if you don't put this here, password entry doesnt work
|
||||||
|
# if I move to another lock screen program, i will have to replace `swaylock`
|
||||||
|
security.pam.services.swaylock = { };
|
||||||
|
|
||||||
|
# Greetd display manager
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = "${lib.getExe pkgs.tuigreet} --time";
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
175
system/system-yarn.nix
Normal file
175
system/system-yarn.nix
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./disk_yarn.nix
|
||||||
|
./common.nix
|
||||||
|
./impermanence.nix
|
||||||
|
./no-rgb.nix
|
||||||
|
./vr.nix
|
||||||
|
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.jovian-nixos.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
fileSystems."/media/games" = {
|
||||||
|
device = "/dev/disk/by-uuid/1878136e-765d-4784-b204-3536ab4fdac8";
|
||||||
|
fsType = "f2fs";
|
||||||
|
options = [ "nofail" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.targets = {
|
||||||
|
sleep.enable = false;
|
||||||
|
suspend.enable = false;
|
||||||
|
hibernate.enable = false;
|
||||||
|
hybrid-sleep.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostId = "abf570f9";
|
||||||
|
|
||||||
|
# Static IP for consistent SSH access
|
||||||
|
networking.networkmanager.ensureProfiles.profiles.enp7s0-static = {
|
||||||
|
connection = {
|
||||||
|
id = "enp7s0-static";
|
||||||
|
type = "ethernet";
|
||||||
|
interface-name = "enp7s0";
|
||||||
|
autoconnect = true;
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "manual";
|
||||||
|
address1 = "192.168.1.223/24,192.168.1.1";
|
||||||
|
dns = "1.1.1.1;9.9.9.9;";
|
||||||
|
};
|
||||||
|
ipv6.method = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
ports = [ 22 ];
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
PermitRootLogin = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.${username}.openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH" # laptop
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.root.openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH" # laptop
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
localNetworkGameTransfers.openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# LACT (Linux AMDGPU Configuration Tool): https://github.com/ilya-zlobintsev/LACT
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
lact
|
||||||
|
];
|
||||||
|
systemd.packages = with pkgs; [ lact ];
|
||||||
|
systemd.services.lactd.wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
systemd.services.lactd.serviceConfig.ExecStartPre = "${lib.getExe pkgs.bash} -c \"sleep 3s\"";
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
|
pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
|
"steamdeck-hw-theme"
|
||||||
|
"steam-jupiter-unwrapped"
|
||||||
|
"steam"
|
||||||
|
"steam-original"
|
||||||
|
"steam-unwrapped"
|
||||||
|
"steam-run"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Override jovian-stubs to disable steamos-update kernel check
|
||||||
|
# This prevents Steam from requesting reboots for "system updates"
|
||||||
|
# Steam client updates will still work normally
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
jovian-stubs = prev.stdenv.mkDerivation {
|
||||||
|
name = "jovian-stubs-no-update";
|
||||||
|
dontUnpack = true;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
|
||||||
|
# steamos-update: always report "no update available" (exit 7)
|
||||||
|
# This disables the kernel mismatch check that triggers reboot prompts
|
||||||
|
cat > $out/bin/steamos-update << 'STUB'
|
||||||
|
#!/bin/sh
|
||||||
|
>&2 echo "[JOVIAN] $0: stub called with: $* (system updates disabled)"
|
||||||
|
exit 7
|
||||||
|
STUB
|
||||||
|
|
||||||
|
# steamos-reboot: reboot the system
|
||||||
|
cat > $out/bin/steamos-reboot << 'STUB'
|
||||||
|
#!/bin/sh
|
||||||
|
>&2 echo "[JOVIAN] $0: stub called with: $*"
|
||||||
|
systemctl reboot
|
||||||
|
STUB
|
||||||
|
|
||||||
|
# steamos-select-branch: no-op stub
|
||||||
|
cat > $out/bin/steamos-select-branch << 'STUB'
|
||||||
|
#!/bin/sh
|
||||||
|
>&2 echo "[JOVIAN] $0: stub called with: $*"
|
||||||
|
exit 0
|
||||||
|
STUB
|
||||||
|
|
||||||
|
# steamos-factory-reset-config: no-op stub
|
||||||
|
cat > $out/bin/steamos-factory-reset-config << 'STUB'
|
||||||
|
#!/bin/sh
|
||||||
|
>&2 echo "[JOVIAN] $0: stub called with: $*"
|
||||||
|
exit 0
|
||||||
|
STUB
|
||||||
|
|
||||||
|
# steamos-firmware-update: no-op stub
|
||||||
|
cat > $out/bin/steamos-firmware-update << 'STUB'
|
||||||
|
#!/bin/sh
|
||||||
|
>&2 echo "[JOVIAN] $0: stub called with: $*"
|
||||||
|
exit 0
|
||||||
|
STUB
|
||||||
|
|
||||||
|
# pkexec: pass through to real pkexec
|
||||||
|
cat > $out/bin/pkexec << 'STUB'
|
||||||
|
#!/bin/sh
|
||||||
|
exec /run/wrappers/bin/pkexec "$@"
|
||||||
|
STUB
|
||||||
|
|
||||||
|
# sudo: pass through to doas
|
||||||
|
cat > $out/bin/sudo << 'STUB'
|
||||||
|
#!/bin/sh
|
||||||
|
exec /run/wrappers/bin/doas "$@"
|
||||||
|
STUB
|
||||||
|
|
||||||
|
chmod 755 $out/bin/*
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
jovian = {
|
||||||
|
devices.steamdeck.enable = false;
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
autoStart = true;
|
||||||
|
desktopSession = "niri";
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Jovian-NixOS requires sddm
|
||||||
|
# https://github.com/Jovian-Experiments/Jovian-NixOS/commit/52f140c07493f8bb6cd0773c7e1afe3e1fd1d1fa
|
||||||
|
services.displayManager.sddm.wayland.enable = true;
|
||||||
|
|
||||||
|
# Disable gamescope from common.nix to avoid conflict with jovian-nixos
|
||||||
|
programs.gamescope.enable = lib.mkForce false;
|
||||||
|
}
|
||||||
39
system/vm.nix
Normal file
39
system/vm.nix
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
username,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# android virtualization
|
||||||
|
virtualisation.waydroid = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/466473
|
||||||
|
package = pkgs.waydroid-nftables;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.virt-manager.enable = true;
|
||||||
|
|
||||||
|
users.groups.libvirtd.members = [ username ];
|
||||||
|
|
||||||
|
virtualisation.libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.libvirt;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.spiceUSBRedirection.enable = true;
|
||||||
|
|
||||||
|
users.users."${username}".extraGroups = [ "libvirtd" ];
|
||||||
|
|
||||||
|
# boot.kernelPatches = [
|
||||||
|
# {
|
||||||
|
# name = "undetected-kvm";
|
||||||
|
# patch = pkgs.fetchurl {
|
||||||
|
# url = "https://raw.githubusercontent.com/Scrut1ny/Hypervisor-Phantom/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/Kernel/linux-6.13-svm.patch";
|
||||||
|
# sha256 = "zz18xerutulLGzlHhnu26WCY8rVQXApyeoDtCjbejIk=";
|
||||||
|
# };
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
}
|
||||||
49
system/vr.nix
Normal file
49
system/vr.nix
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
|
# for FO4 VR:
|
||||||
|
# doesn't work. it's like the wivrn stuff doesn't transfer past MO2
|
||||||
|
# `echo "PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/wivrn/comp_ipc %command%" | sed -r "s/proton waitforexitandrun .*/proton waitforexitandrun \/media\/games\/fallout4vr_essentials_overhaul\/ModOrganizer.exe \"moshortcut:\/\/:Play Fallout Essentials\" /" | sh`
|
||||||
|
|
||||||
|
services.wivrn = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
# Write information to /etc/xdg/openxr/1/active_runtime.json, VR applications
|
||||||
|
# will automatically read this and work with wivrn
|
||||||
|
defaultRuntime = true;
|
||||||
|
|
||||||
|
# Executing it through the systemd service executes WiVRn w/ CAP_SYS_NICE
|
||||||
|
# Resulting in no stutters!
|
||||||
|
autoStart = true;
|
||||||
|
|
||||||
|
# Config for WiVRn
|
||||||
|
config = {
|
||||||
|
enable = true;
|
||||||
|
json = {
|
||||||
|
# 1.0x display scaling
|
||||||
|
scale = 1.0;
|
||||||
|
# 100 Mb/s
|
||||||
|
bitrate = 100000000;
|
||||||
|
encoders = [
|
||||||
|
{
|
||||||
|
encoder = "vaapi";
|
||||||
|
codec = "h265";
|
||||||
|
# 1.0 x 1.0 scaling
|
||||||
|
width = 1.0;
|
||||||
|
height = 1.0;
|
||||||
|
offset_x = 0.0;
|
||||||
|
offset_y = 0.0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
application = [ pkgs.wayvr ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user