Compare commits
460 Commits
d89c8d8eae
...
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
|
7
.gitattributes
vendored
7
.gitattributes
vendored
@@ -1,5 +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
|
|
||||||
etcnixos/secrets/disk-password filter=git-crypt diff=git-crypt
|
|
||||||
etcnixos/secrets/password-hash filter=git-crypt diff=git-crypt
|
|
||||||
|
|||||||
10
README.md
10
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)
|
||||||
|
|
||||||
@@ -20,3 +16,7 @@ There is more that I'm using, but those are the main ones! Read my configs to ge
|
|||||||
|
|
||||||
### Background
|
### 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
|
- 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,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" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.distrobox
|
|
||||||
pkgs.podman-compose
|
|
||||||
];
|
|
||||||
}
|
|
||||||
440
etcnixos/flake.lock
generated
440
etcnixos/flake.lock
generated
@@ -1,440 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"agenix": {
|
|
||||||
"inputs": {
|
|
||||||
"darwin": "darwin",
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1736955230,
|
|
||||||
"narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=",
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"chaotic": {
|
|
||||||
"inputs": {
|
|
||||||
"fenix": "fenix",
|
|
||||||
"flake-schemas": "flake-schemas",
|
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"jovian": "jovian",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742736978,
|
|
||||||
"narHash": "sha256-wagSECZiMywU2KcyM/V0cDZAkBJLOFCqL7fGCUzLR+E=",
|
|
||||||
"owner": "chaotic-cx",
|
|
||||||
"repo": "nyx",
|
|
||||||
"rev": "1aea029a74c8f3a683451c882e24dc1218e0d682",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "chaotic-cx",
|
|
||||||
"ref": "nyxpkgs-unstable",
|
|
||||||
"repo": "nyx",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"crane": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1741148495,
|
|
||||||
"narHash": "sha256-EV8KUaIZ2/CdBXlutXrHoZYbWPeB65p5kKZk71gvDRI=",
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"rev": "75390a36cd0c2cdd5f1aafd8a9f827d7107f2e53",
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"disko": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1736864502,
|
|
||||||
"narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"rev": "0141aabed359f063de7413f80d906e1d98c0c123",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "latest",
|
|
||||||
"repo": "disko",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fenix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"chaotic",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"rust-analyzer-src": "rust-analyzer-src"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742452566,
|
|
||||||
"narHash": "sha256-sVuLDQ2UIWfXUBbctzrZrXM2X05YjX08K7XHMztt36E=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "fenix",
|
|
||||||
"rev": "7d9ba794daf5e8cc7ee728859bc688d8e26d5f06",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "fenix",
|
|
||||||
"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-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740872218,
|
|
||||||
"narHash": "sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "3876f6b87db82f33775b1ef5ea343986105db764",
|
|
||||||
"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": 1742701794,
|
|
||||||
"narHash": "sha256-bJIFFa6/4vBGoNmCwjO5TCIbiveV2BRxVLqHcxk5jXw=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "9172a6f956f7e0f7810861b9b1146f1c43d9abcb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jovian": {
|
|
||||||
"inputs": {
|
|
||||||
"nix-github-actions": "nix-github-actions",
|
|
||||||
"nixpkgs": [
|
|
||||||
"chaotic",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742465245,
|
|
||||||
"narHash": "sha256-gpjtkoeq5Ye9J8GoR+rWg3NL4bbEtcLvvF4nN6MtxdU=",
|
|
||||||
"owner": "Jovian-Experiments",
|
|
||||||
"repo": "Jovian-NixOS",
|
|
||||||
"rev": "a95606cae5c9e1f5b84debe7865ef171d4deb287",
|
|
||||||
"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": 1741442524,
|
|
||||||
"narHash": "sha256-tVcxLDLLho8dWcO81Xj/3/ANLdVs0bGyCPyKjp70JWk=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "lanzaboote",
|
|
||||||
"rev": "d8099586d9a84308ffedac07880e7f07a0180ff4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "lanzaboote",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-github-actions": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"chaotic",
|
|
||||||
"jovian",
|
|
||||||
"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": 1742631601,
|
|
||||||
"narHash": "sha256-yJ3OOAmsGAxSl0bTmKUp3+cEYtSS+V6hUPK2rYhIPr8=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"rev": "380ed15bcd6440606c6856db44a99140d422b46f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742669843,
|
|
||||||
"narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1e5b653dff12029333a6546c11e108ede13052eb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pre-commit-hooks-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": [
|
|
||||||
"lanzaboote",
|
|
||||||
"flake-compat"
|
|
||||||
],
|
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740915799,
|
|
||||||
"narHash": "sha256-JvQvtaphZNmeeV+IpHgNdiNePsIpHD5U/7QN5AeY44A=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"rev": "42b1ba089d2034d910566bf6b40830af6b8ec732",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"agenix": "agenix",
|
|
||||||
"chaotic": "chaotic",
|
|
||||||
"disko": "disko",
|
|
||||||
"lanzaboote": "lanzaboote",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-analyzer-src": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742296961,
|
|
||||||
"narHash": "sha256-gCpvEQOrugHWLimD1wTFOJHagnSEP6VYBDspq96Idu0=",
|
|
||||||
"owner": "rust-lang",
|
|
||||||
"repo": "rust-analyzer",
|
|
||||||
"rev": "15d87419f1a123d8f888d608129c3ce3ff8f13d4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "rust-lang",
|
|
||||||
"ref": "nightly",
|
|
||||||
"repo": "rust-analyzer",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1741228283,
|
|
||||||
"narHash": "sha256-VzqI+k/eoijLQ5am6rDFDAtFAbw8nltXfLBC6SIEJAE=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "38e9826bc4296c9daf18bc1e6aa299f3e932a403",
|
|
||||||
"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,64 +0,0 @@
|
|||||||
{
|
|
||||||
description = "System 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";
|
|
||||||
|
|
||||||
agenix = {
|
|
||||||
url = "github:ryantm/agenix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
chaotic = {
|
|
||||||
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
disko = {
|
|
||||||
url = "github:nix-community/disko/latest";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs =
|
|
||||||
{
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
lanzaboote,
|
|
||||||
nixos-hardware,
|
|
||||||
agenix,
|
|
||||||
...
|
|
||||||
}@inputs:
|
|
||||||
let
|
|
||||||
username = "primary";
|
|
||||||
system = "x86_64-linux";
|
|
||||||
hostnames = [
|
|
||||||
"mreow"
|
|
||||||
"yarn"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style;
|
|
||||||
nixosConfigurations = nixpkgs.lib.foldl' (
|
|
||||||
config: hostname:
|
|
||||||
config
|
|
||||||
// {
|
|
||||||
"${hostname}" = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs username hostname;
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
./system-${hostname}.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
) { } hostnames;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -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/games" = {
|
|
||||||
device = "/dev/disk/by-uuid/1878136e-765d-4784-b204-3536ab4fdac8";
|
|
||||||
fsType = "f2fs";
|
|
||||||
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,19 +0,0 @@
|
|||||||
{ hostname, ... }:
|
|
||||||
{
|
|
||||||
hostName = hostname;
|
|
||||||
|
|
||||||
networkmanager = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
insertNameservers = [
|
|
||||||
"1.1.1.1"
|
|
||||||
"9.9.9.9"
|
|
||||||
];
|
|
||||||
|
|
||||||
wifi = {
|
|
||||||
scanRandMacAddress = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wireless.networks = import ./secrets/wifi-passwords.nix;
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,122 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
username,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
untar = pkgs.callPackage ./util/untar.nix;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./common.nix
|
|
||||||
./hardware_laptop.nix
|
|
||||||
|
|
||||||
inputs.nixos-hardware.nixosModules.framework-12th-gen-intel
|
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
|
||||||
];
|
|
||||||
|
|
||||||
# hardware.framework.laptop13.audioEnhancement = {
|
|
||||||
# enable = true;
|
|
||||||
|
|
||||||
# # seems audio doesn't work without this
|
|
||||||
# hideRawDevice = false;
|
|
||||||
# };
|
|
||||||
|
|
||||||
services.tlp = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
CPU_SCALING_GOVERNOR_ON_AC = "powersave";
|
|
||||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
|
||||||
|
|
||||||
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
|
||||||
CPU_ENERGY_PERF_POLICY_ON_AC = "default";
|
|
||||||
|
|
||||||
PCIE_ASPM_ON_BAT = "powersupersave";
|
|
||||||
PCIE_ASPM_ON_AC = "default";
|
|
||||||
PLATFORM_PROFILE_ON_BAT = "low-power";
|
|
||||||
PLATFORM_PROFILE_ON_AC = "balanced";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
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 niri-session";
|
|
||||||
user = username;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
lanzaboote = {
|
|
||||||
enable = true;
|
|
||||||
# TODO: proper secrets management so this is not stored in nix store
|
|
||||||
pkiBundle = "${(untar { src = "${./secrets/secureboot.tar}"; })}";
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.gamescope = {
|
|
||||||
enable = true;
|
|
||||||
capSysNice = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.steam = {
|
|
||||||
gamescopeSession.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
};
|
|
||||||
|
|
||||||
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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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 = { };
|
|
||||||
|
|
||||||
# disable framework kernel module
|
|
||||||
# https://github.com/NixOS/nixos-hardware/issues/1330
|
|
||||||
hardware.framework.enableKmod = false;
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
username,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./common.nix
|
|
||||||
./hardware_desktop.nix
|
|
||||||
./no-rgb.nix
|
|
||||||
./vr.nix
|
|
||||||
|
|
||||||
inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate
|
|
||||||
inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
|
||||||
];
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
networking.hostId = "abf570f9";
|
|
||||||
boot = {
|
|
||||||
# fixes zenpower driver issue
|
|
||||||
kernelPackages = lib.mkForce pkgs.linuxPackages_latest;
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
|
|
||||||
autoLogin = {
|
|
||||||
enable = true;
|
|
||||||
user = username;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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"
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
programs.steam = {
|
|
||||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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" ];
|
|
||||||
|
|
||||||
# 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/bus/pci/drivers/amdgpu/0000:0c: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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
stdenv,
|
|
||||||
gnutar,
|
|
||||||
src,
|
|
||||||
}:
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
pname = "untar";
|
|
||||||
version = "1.0";
|
|
||||||
|
|
||||||
inherit src;
|
|
||||||
|
|
||||||
buildInputs = [ gnutar ];
|
|
||||||
|
|
||||||
# input is a file, not a directory, skip unpackPhase
|
|
||||||
unpackPhase = "true";
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
tar xf ${src} -C $out/
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
username,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# https://github.com/quickemu-project/quickemu
|
|
||||||
(quickemu.overrideAttrs (old: {
|
|
||||||
patches = [
|
|
||||||
# patch to allow forcing a specific ISO file via an environment variable `FILE_NAME`
|
|
||||||
(pkgs.fetchpatch {
|
|
||||||
url = "https://github.com/Titaniumtown/quickemu/commit/f96d52a6b6f4b3187171d8cab61a273475da3b6c.diff";
|
|
||||||
sha256 = "vXVI4EeJGhOlx8ARTCvB98Ajalk0bVakL98WojqcI3c=";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}))
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.virt-manager.enable = true;
|
|
||||||
|
|
||||||
users.groups.libvirtd.members = [ username ];
|
|
||||||
|
|
||||||
virtualisation.libvirtd = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
package = pkgs.libvirt;
|
|
||||||
|
|
||||||
qemu = {
|
|
||||||
package = (
|
|
||||||
pkgs.qemu_kvm.overrideAttrs (old: {
|
|
||||||
patches = old.patches ++ [
|
|
||||||
# amd?
|
|
||||||
# (pkgs.fetchpatch {
|
|
||||||
# url = "https://github.com/Scrut1ny/Hypervisor-Phantom/raw/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/QEMU/amd-qemu-9.2.0.patch";
|
|
||||||
# sha256 = "BbzgjRa3qaYH1yXXqU6M/S68SxXWpAc9ObTG5qXu6YA=";
|
|
||||||
# })
|
|
||||||
|
|
||||||
# or intel!
|
|
||||||
(pkgs.fetchpatch {
|
|
||||||
url = "https://github.com/Scrut1ny/Hypervisor-Phantom/raw/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/QEMU/intel-qemu-9.2.0.patch";
|
|
||||||
sha256 = "kXY6R/0Tsotf0mGUIevDLlLWHEznnF1dt0K2ayX7XAg=";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
ovmf.packages = lib.mkForce [
|
|
||||||
(pkgs.OVMF.overrideAttrs (old: {
|
|
||||||
secureBoot = true;
|
|
||||||
tpmSupport = true;
|
|
||||||
# TODO! add patches from: https://github.com/Scrut1ny/Hypervisor-Phantom/tree/main/Hypervisor-Phantom/patches/EDK2
|
|
||||||
})).fd
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
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=";
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
}
|
|
||||||
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
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
261
home-manager/flake.lock
generated
261
home-manager/flake.lock
generated
@@ -1,261 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"agenix": {
|
|
||||||
"inputs": {
|
|
||||||
"darwin": "darwin",
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1736955230,
|
|
||||||
"narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=",
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ryantm",
|
|
||||||
"repo": "agenix",
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742756669,
|
|
||||||
"narHash": "sha256-55QHo/lETkGO4lUfxhJ6TUs5OLOz5Ks7JDNAKDzpt4I=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "0e75a40458d065d1e5c6a10d0b74b9e35b550ae6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"niri": {
|
|
||||||
"inputs": {
|
|
||||||
"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": 1742723611,
|
|
||||||
"narHash": "sha256-Xy6+LQwqNkukjFUeOBKToNKhAffLnHWtEpx5hO3rdDs=",
|
|
||||||
"owner": "sodiboo",
|
|
||||||
"repo": "niri-flake",
|
|
||||||
"rev": "ea05bfe7a7c67c5e664769e77edd86c677b30acb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "sodiboo",
|
|
||||||
"repo": "niri-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"niri-stable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740117926,
|
|
||||||
"narHash": "sha256-mTTHA0RAaQcdYe+9A3Jx77cmmyLFHmRoZdd8RpWa+m8=",
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"repo": "niri",
|
|
||||||
"rev": "b94a5db8790339cf9134873d8b490be69e02ac71",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"ref": "v25.02",
|
|
||||||
"repo": "niri",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"niri-unstable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742719554,
|
|
||||||
"narHash": "sha256-zBB/Niset99u6/b6z9hS2IYfDigDI9huiG0QXvDKDS4=",
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"repo": "niri",
|
|
||||||
"rev": "c709696237f3e963225b8df248538cc691ccba3d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "YaLTeR",
|
|
||||||
"repo": "niri",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742669843,
|
|
||||||
"narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1e5b653dff12029333a6546c11e108ede13052eb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742512142,
|
|
||||||
"narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "7105ae3957700a9646cc4b766f5815b23ed0c682",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-24.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"agenix": "agenix",
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"niri": "niri",
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"rust-overlay": "rust-overlay",
|
|
||||||
"zen-browser": "zen-browser"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742697269,
|
|
||||||
"narHash": "sha256-Lpp0XyAtIl1oGJzNmTiTGLhTkcUjwSkEb0gOiNzYFGM=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "01973c84732f9275c50c5f075dd1f54cc04b3316",
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xwayland-satellite-stable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1739246919,
|
|
||||||
"narHash": "sha256-/hBM43/Gd0/tW+egrhlWgOIISeJxEs2uAOIYVpfDKeU=",
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"rev": "44590a416d4a3e8220e19e29e0b6efe64a80315d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"ref": "v0.5.1",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xwayland-satellite-unstable": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742671548,
|
|
||||||
"narHash": "sha256-nJK70IyhyOXth5Dcyv7DKtv95TTZkqcAYHVj4Uq2Blw=",
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"rev": "0fa13c6fb43ae26a597103989a42e44a03d2d827",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Supreeeme",
|
|
||||||
"repo": "xwayland-satellite",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zen-browser": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742736106,
|
|
||||||
"narHash": "sha256-wzdYoYASPlITYBiw2xDyE56DnOcLNsO6QHRGUDj6kq4=",
|
|
||||||
"owner": "0xc000022070",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"rev": "7c3008fcc5a436c885d3faaf6d058afc41ae3762",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "0xc000022070",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
@@ -1,119 +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";
|
|
||||||
};
|
|
||||||
|
|
||||||
zen-browser = {
|
|
||||||
url = "github:0xc000022070/zen-browser-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
# 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.clang19Stdenv;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
pkgs' =
|
|
||||||
(import nixpkgs {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
}).applyPatches
|
|
||||||
{
|
|
||||||
name = "nixpkgs";
|
|
||||||
src = inputs.nixpkgs;
|
|
||||||
patches = [
|
|
||||||
# https://github.com/NixOS/nixpkgs/pull/67576
|
|
||||||
# gimp 3.0
|
|
||||||
(builtins.fetchurl {
|
|
||||||
url = "https://github.com/NixOS/nixpkgs/pull/67576.diff";
|
|
||||||
sha256 = "02fk89563m2xfrl7kl9s1hh4bcppwrmd60j542kyl64nd2cvp9ss";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
pkgs = import pkgs' {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
|
|
||||||
homeConfigurations."${username}" = home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit
|
|
||||||
inputs
|
|
||||||
username
|
|
||||||
homeDirectory
|
|
||||||
optimizeWithFlags
|
|
||||||
;
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
./system-${hostname}.nix
|
|
||||||
niri.homeModules.config
|
|
||||||
agenix.homeManagerModules.age
|
|
||||||
|
|
||||||
(
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
rust-overlay.overlays.default
|
|
||||||
inputs.niri.overlays.niri
|
|
||||||
];
|
|
||||||
|
|
||||||
# home-manager stuff
|
|
||||||
home = {
|
|
||||||
inherit username homeDirectory;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -7,52 +7,73 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./no-gui.nix
|
./no-gui.nix
|
||||||
|
# ./progs/ghostty.nix
|
||||||
./progs/alacritty.nix
|
./progs/alacritty.nix
|
||||||
./progs/gpt4all/gpt4all.nix
|
./progs/emacs.nix
|
||||||
# ./progs/trezor.nix # - broken
|
# ./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"
|
||||||
|
"grayjay"
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages =
|
home.packages =
|
||||||
with pkgs;
|
with pkgs;
|
||||||
|
lib.concatLists [
|
||||||
|
# libreoffice
|
||||||
|
[
|
||||||
|
libreoffice
|
||||||
|
hunspell # spellcheck
|
||||||
|
hunspellDicts.en_US # spellcheck dictionary
|
||||||
|
]
|
||||||
|
|
||||||
|
# browsers
|
||||||
|
[
|
||||||
|
tor-browser
|
||||||
|
inputs.zen-browser.packages."${system}".twilight
|
||||||
|
grayjay
|
||||||
|
]
|
||||||
|
|
||||||
|
# music library management
|
||||||
|
[
|
||||||
|
picard
|
||||||
|
puddletag
|
||||||
|
lrcget
|
||||||
|
]
|
||||||
|
|
||||||
|
# image editing
|
||||||
|
[
|
||||||
|
darktable
|
||||||
|
rawtherapee
|
||||||
|
hugin
|
||||||
|
|
||||||
|
gimp3
|
||||||
|
pinta
|
||||||
|
]
|
||||||
|
|
||||||
[
|
[
|
||||||
#calculator
|
#calculator
|
||||||
gnome-calculator
|
gnome-calculator
|
||||||
|
|
||||||
#productivity stuff
|
# audio editing
|
||||||
libreoffice
|
|
||||||
hunspell # spellcheck
|
|
||||||
hunspellDicts.en_US # spellcheck dictionary
|
|
||||||
|
|
||||||
#video and audio downloading
|
|
||||||
parabolic
|
|
||||||
|
|
||||||
#soulseek client
|
|
||||||
nicotine-plus
|
|
||||||
|
|
||||||
#dark web browsing deep web browsing
|
|
||||||
tor-browser
|
|
||||||
|
|
||||||
#audio editing
|
|
||||||
audacity
|
audacity
|
||||||
|
|
||||||
#fonts
|
#fonts
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
liberation_ttf
|
liberation_ttf
|
||||||
|
|
||||||
#for ebook reading
|
#for ebook reading
|
||||||
foliate
|
foliate
|
||||||
|
|
||||||
#audio mixer (pavucontrol but for pipewire)
|
#audio mixer (pavucontrol but for pipewire)
|
||||||
# pwvucontrol # - broken
|
pwvucontrol
|
||||||
|
|
||||||
#minecraft launcher
|
# minecraft launcher
|
||||||
prismlauncher
|
prismlauncher
|
||||||
|
|
||||||
mpv
|
mpv
|
||||||
@@ -65,7 +86,7 @@
|
|||||||
|
|
||||||
signal-desktop
|
signal-desktop
|
||||||
|
|
||||||
#accounting
|
# accounting
|
||||||
# gnucash
|
# gnucash
|
||||||
|
|
||||||
# image tools
|
# image tools
|
||||||
@@ -81,40 +102,17 @@
|
|||||||
libnotify # notifications library
|
libnotify # notifications library
|
||||||
xdg-utils # xdg utils
|
xdg-utils # xdg utils
|
||||||
|
|
||||||
# music tagging utility
|
|
||||||
picard
|
|
||||||
|
|
||||||
# music lyric fetcher
|
|
||||||
lrcget
|
|
||||||
|
|
||||||
inputs.zen-browser.packages."${system}".default
|
|
||||||
|
|
||||||
# freecad-wayland
|
|
||||||
puddletag
|
|
||||||
|
|
||||||
mcaselector
|
|
||||||
|
|
||||||
wireshark
|
wireshark
|
||||||
|
|
||||||
darktable
|
nautilus
|
||||||
rawtherapee
|
|
||||||
hugin
|
|
||||||
|
|
||||||
# nufraw
|
|
||||||
nufraw-thumbnailer
|
nufraw-thumbnailer
|
||||||
gdk-pixbuf
|
gdk-pixbuf
|
||||||
nautilus
|
|
||||||
|
|
||||||
enblend-enfuse
|
enblend-enfuse
|
||||||
|
|
||||||
savvycan
|
|
||||||
|
|
||||||
# simple screen recording on wayland
|
# simple screen recording on wayland
|
||||||
wl-screenrec
|
wl-screenrec
|
||||||
|
|
||||||
gimp
|
|
||||||
pinta
|
|
||||||
|
|
||||||
# wayland-compatible color picker
|
# wayland-compatible color picker
|
||||||
hyprpicker
|
hyprpicker
|
||||||
|
|
||||||
@@ -125,8 +123,23 @@
|
|||||||
# for mod organizer 2
|
# for mod organizer 2
|
||||||
zenity
|
zenity
|
||||||
p7zip
|
p7zip
|
||||||
|
|
||||||
|
# password manager
|
||||||
|
keepassxc
|
||||||
|
|
||||||
|
freecad-wayland
|
||||||
|
|
||||||
|
localsend
|
||||||
|
|
||||||
|
# openstreetmap
|
||||||
|
josm
|
||||||
|
|
||||||
|
# in unstable ATM, gotta wait for it to hit stable
|
||||||
|
# video-trimmer
|
||||||
]
|
]
|
||||||
++ (builtins.filter lib.isDerivation (builtins.attrValues nerd-fonts));
|
# all the fonts
|
||||||
|
(builtins.filter lib.isDerivation (builtins.attrValues nerd-fonts))
|
||||||
|
];
|
||||||
|
|
||||||
# programs.zed-editor = {
|
# programs.zed-editor = {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
@@ -158,7 +171,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
TERMINAL = "alacritty";
|
|
||||||
BROWSER = "zen";
|
BROWSER = "zen";
|
||||||
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
|
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
|
||||||
pkgs.stdenv.cc.cc
|
pkgs.stdenv.cc.cc
|
||||||
|
|||||||
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,23 +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.enableNixpkgsReleaseCheck = false;
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# hex viewer
|
|
||||||
hexyl
|
|
||||||
|
|
||||||
# rust stuff
|
|
||||||
(rust-bin.stable.latest.default.override ({
|
|
||||||
extensions = [
|
extensions = [
|
||||||
"rust-src"
|
"rust-src"
|
||||||
"rust-analyzer"
|
"rust-analyzer"
|
||||||
@@ -30,32 +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-expand
|
||||||
|
cargo-edit # cargo upgrade and stuff
|
||||||
cargo-pgo
|
cargo-pgo
|
||||||
rust-script
|
rust-script
|
||||||
bolt_19
|
bolt_19
|
||||||
libllvm # llvm-profdata
|
libllvm # llvm-profdata
|
||||||
cargo-show-asm
|
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
|
];
|
||||||
go
|
|
||||||
|
|
||||||
|
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
|
||||||
@@ -66,32 +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`
|
||||||
lurk # better strace
|
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
|
|
||||||
compsize
|
|
||||||
killall
|
|
||||||
|
|
||||||
sshfs
|
sshfs
|
||||||
|
|
||||||
# nix formatter
|
# nix formatter
|
||||||
nixfmt-rfc-style
|
nixfmt-tree
|
||||||
|
|
||||||
# serial viewer
|
# serial viewer
|
||||||
minicom
|
minicom
|
||||||
@@ -99,22 +155,18 @@
|
|||||||
# "~~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
|
||||||
|
|
||||||
mypy # type checking
|
|
||||||
|
|
||||||
pyserial
|
pyserial
|
||||||
|
|
||||||
numpy
|
numpy
|
||||||
@@ -125,28 +177,13 @@
|
|||||||
]
|
]
|
||||||
))
|
))
|
||||||
|
|
||||||
# dep fails to build
|
binwalk
|
||||||
# binwalk
|
|
||||||
|
|
||||||
smartmontools
|
|
||||||
|
|
||||||
nil # nix lsp
|
|
||||||
yaml-language-server # yaml lsp
|
|
||||||
marksman # markdown lsp
|
|
||||||
typescript-language-server # typescript lsp
|
|
||||||
cmake-language-server # cmake lsp
|
|
||||||
|
|
||||||
# clang-format and clang-tidy
|
# clang-format and clang-tidy
|
||||||
clang-tools
|
clang-tools
|
||||||
clang
|
clang
|
||||||
gdb
|
gdb
|
||||||
|
|
||||||
# broken
|
|
||||||
# lldb
|
|
||||||
|
|
||||||
fio
|
|
||||||
|
|
||||||
age
|
|
||||||
git-crypt
|
git-crypt
|
||||||
|
|
||||||
imagemagick
|
imagemagick
|
||||||
@@ -157,60 +194,54 @@
|
|||||||
|
|
||||||
# terminal image viewer
|
# terminal image viewer
|
||||||
timg
|
timg
|
||||||
lsof
|
|
||||||
|
|
||||||
tcpdump
|
tcpdump
|
||||||
|
|
||||||
cargo-flamegraph
|
|
||||||
linuxKernel.packages.linux_6_11.perf
|
|
||||||
|
|
||||||
borgbackup
|
borgbackup
|
||||||
|
|
||||||
tinyxxd
|
# used to deploy nix system to server
|
||||||
|
# (and in the future, desktop)
|
||||||
|
deploy-rs
|
||||||
|
|
||||||
bfc
|
# power stuff
|
||||||
|
powerstat
|
||||||
|
|
||||||
# java assembler
|
nodePackages_latest.nodejs
|
||||||
jasmin
|
|
||||||
|
yt-dlp
|
||||||
|
]
|
||||||
|
rust_pkgs
|
||||||
|
lsps
|
||||||
|
java_tools
|
||||||
|
common_tools
|
||||||
];
|
];
|
||||||
|
|
||||||
# https://github.com/flamegraph-rs/flamegraph
|
# 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 = "${lib.getExe pkgs.clang}"
|
linker = "${lib.getExe pkgs.clang}"
|
||||||
rustflags = ["-Clink-arg=-Wl,--no-rosegment"]
|
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
|
|
||||||
delta.enable = true;
|
|
||||||
|
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
|
|
||||||
extraConfig = {
|
ignores = [ ".sisyphus" ];
|
||||||
|
|
||||||
|
settings = {
|
||||||
init = {
|
init = {
|
||||||
# master -> main
|
# 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
|
||||||
@@ -220,5 +251,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
# better way to view diffs
|
||||||
|
programs.delta = {
|
||||||
|
enable = true;
|
||||||
|
enableGitIntegration = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
|
home.sessionVariables = {
|
||||||
|
TERMINAL = "alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
programs.alacritty = {
|
programs.alacritty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.alacritty;
|
package = pkgs.alacritty;
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
{ homeDirectory, borgPasswordFile }:
|
{ pkgs, homeDirectory, ... }:
|
||||||
{
|
{
|
||||||
|
programs.borgmatic = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.borgmatic;
|
||||||
|
backups = {
|
||||||
home = {
|
home = {
|
||||||
location = {
|
location = {
|
||||||
sourceDirectories = (
|
sourceDirectories = (
|
||||||
@@ -12,7 +15,6 @@
|
|||||||
"projects"
|
"projects"
|
||||||
"Pictures"
|
"Pictures"
|
||||||
"school"
|
"school"
|
||||||
"justfile"
|
|
||||||
]
|
]
|
||||||
++ (map (f: ".config/Signal/${f}") [
|
++ (map (f: ".config/Signal/${f}") [
|
||||||
"stickers.noindex"
|
"stickers.noindex"
|
||||||
@@ -24,7 +26,6 @@
|
|||||||
"Local Storage"
|
"Local Storage"
|
||||||
"SharedStorage"
|
"SharedStorage"
|
||||||
"config.json"
|
"config.json"
|
||||||
"ephemeral.json"
|
|
||||||
"Preferences"
|
"Preferences"
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
@@ -38,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)
|
||||||
@@ -13,12 +13,16 @@
|
|||||||
origin = "top-right";
|
origin = "top-right";
|
||||||
|
|
||||||
# 0 is the most opaque, 100 is completely transparent
|
# 0 is the most opaque, 100 is completely transparent
|
||||||
transparency = 40;
|
transparency = 60;
|
||||||
|
|
||||||
# have consistancy between niri frame color and dunst
|
# have consistancy between niri frame color and dunst
|
||||||
frame_color = config.programs.niri.settings.layout.focus-ring.active.color;
|
frame_color = config.programs.niri.settings.layout.focus-ring.active.color;
|
||||||
|
|
||||||
|
background = "#404040";
|
||||||
|
|
||||||
font = "JetBrains Mono Nerd Font 9";
|
font = "JetBrains Mono Nerd Font 9";
|
||||||
|
|
||||||
|
corner_radius = 10;
|
||||||
};
|
};
|
||||||
|
|
||||||
urgency_normal = {
|
urgency_normal = {
|
||||||
|
|||||||
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
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
(defwindow dashboard
|
|
||||||
:monitor 0
|
|
||||||
:stacking "bg"
|
|
||||||
:exclusive false
|
|
||||||
:geometry (geometry
|
|
||||||
:y "50%"
|
|
||||||
:x "50%"
|
|
||||||
:width "20%"
|
|
||||||
:height "20%"
|
|
||||||
|
|
||||||
)(dashboard))
|
|
||||||
|
|
||||||
|
|
||||||
(defwidget dashboard []
|
|
||||||
(box
|
|
||||||
(label :text "hi"))
|
|
||||||
)
|
|
||||||
@@ -1,2 +1 @@
|
|||||||
(include "./statusbar.yuck")
|
(include "./statusbar.yuck")
|
||||||
(include "./dashboard.yuck")
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
if wl-paste | iconv -f UTF8 > /dev/null; then
|
|
||||||
case $1 in
|
|
||||||
head)
|
|
||||||
wl-paste 2> /dev/null |
|
|
||||||
head -1 |
|
|
||||||
awk 'length > 20{$0 = substr($0, 1, 17) "..."} {printf "%s", $0}' |
|
|
||||||
sed 's/^[[:space:]]*//g'
|
|
||||||
echo "";;
|
|
||||||
all)
|
|
||||||
wl-paste 2> /dev/null
|
|
||||||
true;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env fish
|
|
||||||
name=$(niri msg focused-window | rg Title | sed -E "s/[[:space:]]+Title\: //g" | sed "s/\"//g")
|
|
||||||
proc_name=$(echo "$name" | head -c 55)
|
|
||||||
|
|
||||||
# TODO! fix this logic, add a '...' at the end
|
|
||||||
if ["$name" != "$proc_name"]
|
|
||||||
proc_name="$proc_name..."
|
|
||||||
end
|
|
||||||
|
|
||||||
echo "$proc_name"
|
|
||||||
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"
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env fish
|
|
||||||
|
|
||||||
niri msg workspaces | rg "^ \*" | sed -E 's/[[:space:]]+\* //g'
|
|
||||||
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
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
wpctl inspect @DEFAULT_SINK@ | rg "node.description" | cut -d' ' -f6-
|
wpctl inspect @DEFAULT_SINK@ | grep -E "^ +\* node\.description" | cut -d' ' -f6- | tr -d '"'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
output=$(wpctl get-volume @DEFAULT_SINK@ | cut -d' ' -f2- | sed -E 's/\.//g' | sed 's/^0*//g')
|
output=$(wpctl get-volume @DEFAULT_SINK@ | cut -d' ' -f2- | sed -E 's/\.//g' | sed 's/^0*//g')
|
||||||
count=$(echo "$output" | cut -d' ' -f1)
|
count=$(echo "$output" | awk -F, '{print $1+0}')
|
||||||
muted=$(echo "$output" | cut -d'[' -f2 | cut -d ']' -f1)
|
muted=$(echo "$output" | cut -d'[' -f2 | cut -d ']' -f1)
|
||||||
|
|
||||||
# if not muted, set to empty string
|
# if not muted, set to empty string
|
||||||
@@ -8,11 +8,6 @@ if [ "$muted" == "$count" ]; then
|
|||||||
muted=""
|
muted=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# fix removal of zero padding if volume is zero
|
|
||||||
if [ "$count" == "" ]; then
|
|
||||||
count="0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
color="green"
|
color="green"
|
||||||
if ((count > 75)); then color="yellow"; fi
|
if ((count > 75)); then color="yellow"; fi
|
||||||
if ((count > 90)); then color="peach"; fi
|
if ((count > 90)); then color="peach"; fi
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
(box :space-evenly false :halign 'end' :class 'padded'
|
(box :space-evenly false :halign 'end' :class 'padded'
|
||||||
(brightness-ctl)
|
(brightness-ctl)
|
||||||
(brightness-ctl-opener)
|
(brightness-ctl-opener)
|
||||||
; (clipboard)
|
|
||||||
(volume)
|
(volume)
|
||||||
(battery)
|
(battery)
|
||||||
(bluetooth)
|
(bluetooth)
|
||||||
@@ -34,7 +33,7 @@
|
|||||||
:onchange command)
|
:onchange command)
|
||||||
(label :text "${value}%" :class color)))
|
(label :text "${value}%" :class color)))
|
||||||
|
|
||||||
(defpoll windowtitle :interval "1s" `scripts/currentWindow.fish`)
|
(defpoll windowtitle :interval "1s" `scripts/currentWindow.sh`)
|
||||||
|
|
||||||
(defwidget window-title []
|
(defwidget window-title []
|
||||||
(label
|
(label
|
||||||
@@ -62,11 +61,6 @@
|
|||||||
:onclick `${EWW_CMD} update brightnessctl-open=${!brightnessctl-open}`
|
:onclick `${EWW_CMD} update brightnessctl-open=${!brightnessctl-open}`
|
||||||
"")))
|
"")))
|
||||||
|
|
||||||
(defwidget clipboard []
|
|
||||||
(label :text clipboard-short :tooltip clipboard :class "clipboard"))
|
|
||||||
(defpoll clipboard :interval "5s" `scripts/clipboardInfo.zsh all`)
|
|
||||||
(defpoll clipboard-short :interval "5s" `scripts/clipboardInfo.zsh head`)
|
|
||||||
|
|
||||||
(defwidget wifi []
|
(defwidget wifi []
|
||||||
(eventbox
|
(eventbox
|
||||||
:class "button ${wifi-strength.colour}"
|
:class "button ${wifi-strength.colour}"
|
||||||
@@ -84,7 +78,8 @@
|
|||||||
(label
|
(label
|
||||||
:text "${bluetooth-name} ")))
|
:text "${bluetooth-name} ")))
|
||||||
|
|
||||||
(defpoll bluetooth-name :interval "10s" `bluetoothctl devices Connected | awk '{print $3}'`)
|
; `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 []
|
(defwidget time []
|
||||||
(box
|
(box
|
||||||
@@ -97,8 +92,7 @@
|
|||||||
|
|
||||||
(defpoll time :interval "1s" `date +'{"long":"%a %b %e %H:%M:%S %Z %Y","hour":"%H","minute":"%M"}'`)
|
(defpoll time :interval "1s" `date +'{"long":"%a %b %e %H:%M:%S %Z %Y","hour":"%H","minute":"%M"}'`)
|
||||||
|
|
||||||
; TODO: make this a package or something, not using rust-script
|
(defpoll powerstats :interval "2s" `power_bat`)
|
||||||
(defpoll powerstats :interval "2s" `~/Documents/power_bat.rs`)
|
|
||||||
|
|
||||||
(defwidget battery []
|
(defwidget battery []
|
||||||
(box :space-evenly false
|
(box :space-evenly false
|
||||||
@@ -133,5 +127,4 @@
|
|||||||
(label :text "${volumevalue.count}" :class {volumevalue.color})))
|
(label :text "${volumevalue.count}" :class {volumevalue.color})))
|
||||||
|
|
||||||
|
|
||||||
(defpoll currentworkspace :interval "1s" `scripts/currentWorkspace.fish`)
|
(defpoll currentworkspace :interval "1s" `scripts/currentWorkspace.sh`)
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,40 @@
|
|||||||
{ pkgs, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
zsh
|
zsh
|
||||||
bluez
|
bluez
|
||||||
brightnessctl
|
brightnessctl
|
||||||
|
(callPackage ./power_bat.nix { })
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.eww = {
|
programs.eww = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configDir = ./config;
|
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} "$@"
|
||||||
|
''
|
||||||
@@ -49,6 +49,7 @@ in
|
|||||||
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"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
125
home-manager/progs/framework-13-easyeffects.nix
Normal file
125
home-manager/progs/framework-13-easyeffects.nix
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
|
# 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 PK Fc 150.0 Hz Gain 4.02 dB Q 3.0
|
||||||
|
# Filter: ON PK Fc 600.0 Hz Gain -5.07 dB Q 4.000000000000008
|
||||||
|
# Filter: ON PK Fc 1200.0 Hz Gain -3.49 dB Q 4.17
|
||||||
|
# Filter: ON PK Fc 2000.0 Hz Gain 1.43 dB Q 4.0
|
||||||
|
# Filter: ON PK Fc 5300.0 Hz Gain 3.84 dB Q 2.64
|
||||||
|
# Filter: ON HSC Fc 6000.0 Hz Gain 4.02 dB Q 4.36
|
||||||
|
# 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 900.0 Hz Gain -4.12 dB Q 5.909999999999967
|
||||||
|
home.file.".config/easyeffects/output/${config.services.easyeffects.preset}.json".text =
|
||||||
|
let
|
||||||
|
baseBand = {
|
||||||
|
mode = "RLC (BT)";
|
||||||
|
mute = false;
|
||||||
|
solo = false;
|
||||||
|
slope = "1x";
|
||||||
|
type = "Bell";
|
||||||
|
};
|
||||||
|
|
||||||
|
bandList = [
|
||||||
|
{
|
||||||
|
frequency = 100.0;
|
||||||
|
gain = 0.0;
|
||||||
|
q = 1.0;
|
||||||
|
slope = "x4";
|
||||||
|
type = "Hi-pass";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 150.0;
|
||||||
|
gain = 4.02;
|
||||||
|
q = 3.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 600.0;
|
||||||
|
gain = -5.07;
|
||||||
|
q = 4.000000000000008;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 1200.0;
|
||||||
|
gain = -3.49;
|
||||||
|
q = 4.17;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 2000.0;
|
||||||
|
gain = 1.43;
|
||||||
|
q = 4.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 5300.0;
|
||||||
|
gain = 3.84;
|
||||||
|
q = 2.64;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 6000.0;
|
||||||
|
gain = 4.02;
|
||||||
|
q = 4.36;
|
||||||
|
type = "Hi-shelf";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 7500.0;
|
||||||
|
gain = -2.09;
|
||||||
|
q = 3.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 8000.0;
|
||||||
|
gain = 2.01;
|
||||||
|
q = 4.36;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
frequency = 900.0;
|
||||||
|
gain = -4.12;
|
||||||
|
q = 5.909999999999967;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
bands = builtins.listToAttrs (
|
||||||
|
map (f: {
|
||||||
|
name = "band${toString f.snd}";
|
||||||
|
value = baseBand // f.fst;
|
||||||
|
}) (lib.lists.zipLists bandList (lib.range 0 (lib.length (bandList))))
|
||||||
|
);
|
||||||
|
|
||||||
|
in
|
||||||
|
builtins.toJSON {
|
||||||
|
output = {
|
||||||
|
blocklist = [ ];
|
||||||
|
equalizer = {
|
||||||
|
balance = 0.0;
|
||||||
|
bypass = false;
|
||||||
|
input-gain = 0.0;
|
||||||
|
left = bands;
|
||||||
|
right = bands;
|
||||||
|
mode = "IIR";
|
||||||
|
num-bands = 10;
|
||||||
|
output-gain = -1.5;
|
||||||
|
pitch-left = 0.0;
|
||||||
|
pitch-right = 0.0;
|
||||||
|
split-channels = false;
|
||||||
|
};
|
||||||
|
plugins_order = [
|
||||||
|
"equalizer"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.easyeffects = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.easyeffects;
|
||||||
|
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,17 +0,0 @@
|
|||||||
diff --git a/gpt4all-chat/main.qml b/gpt4all-chat/main.qml
|
|
||||||
index 1e685385..31cf7efd 100644
|
|
||||||
--- a/main.qml
|
|
||||||
+++ b/main.qml
|
|
||||||
@@ -95,10 +95,12 @@ Window {
|
|
||||||
}
|
|
||||||
|
|
||||||
// check for new version
|
|
||||||
+ /*
|
|
||||||
if (Download.hasNewerRelease && !firstStartDialog.opened) {
|
|
||||||
newVersionDialog.open();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
+ */
|
|
||||||
}
|
|
||||||
|
|
||||||
PopupDialog {
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
optimizeWithFlags,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
models = [
|
|
||||||
rec {
|
|
||||||
name = "DeepSeek-R1-Distill-Qwen-14B-IQ4_XS";
|
|
||||||
filename = src.name;
|
|
||||||
context_length = 131072;
|
|
||||||
gen_length = 32768;
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://huggingface.co/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF/resolve/main/DeepSeek-R1-Distill-Qwen-14B-IQ4_XS.gguf";
|
|
||||||
sha256 = "031b190e7aa81770b5d069de181dcfe4b284bf5d75fa12f82f5e54a3178adcfd";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
# https://github.com/nomic-ai/gpt4all/issues/3540
|
|
||||||
# rec {
|
|
||||||
# name = "Gemma_3_27b_it";
|
|
||||||
# filename = src.name;
|
|
||||||
# context_length = 131072;
|
|
||||||
# gen_length = 32768;
|
|
||||||
# src = pkgs.fetchurl {
|
|
||||||
# url = "https://huggingface.co/bartowski/google_gemma-3-27b-it-GGUF/resolve/main/google_gemma-3-27b-it-IQ4_XS.gguf";
|
|
||||||
# sha256 = "bd2f188c66d8ccb0bffcb0c91e4dbbb72754bb1732e0bca323a2f266a35e01c8";
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
|
|
||||||
gpt4all_package = (
|
|
||||||
optimizeWithFlags
|
|
||||||
(pkgs.gpt4all.overrideAttrs (old: {
|
|
||||||
patches = old.patches ++ [
|
|
||||||
./disable-settings-err.patch
|
|
||||||
./disable-version-check.patch
|
|
||||||
];
|
|
||||||
}))
|
|
||||||
# compile flags
|
|
||||||
[
|
|
||||||
"-O3"
|
|
||||||
"-march=native"
|
|
||||||
"-mtune=native"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
system_prompt = "You are a helpful and harmless assistant. You should think step-by-step. Explore multiple trains of thought and methods (to completion) in order to derive the correct answer.";
|
|
||||||
chat_name_prompt = "Make a 3 word headline for this conversation";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
gpt4all_package
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file =
|
|
||||||
lib.recursiveUpdate
|
|
||||||
{
|
|
||||||
".config/nomic.ai/GPT4All.ini".text =
|
|
||||||
''
|
|
||||||
[General]
|
|
||||||
chatTheme=Dark
|
|
||||||
suggestionMode=Off
|
|
||||||
threadCount=8
|
|
||||||
userDefaultModel=${
|
|
||||||
# select the first element of `models` to be the default model
|
|
||||||
(builtins.elemAt models 0).name
|
|
||||||
}
|
|
||||||
|
|
||||||
[download]
|
|
||||||
lastVersionStarted=${gpt4all_package.version}
|
|
||||||
''
|
|
||||||
+ (lib.concatMapStringsSep "\n" (model: ''
|
|
||||||
[model-${model.name}]
|
|
||||||
contextLength=${builtins.toString model.context_length}
|
|
||||||
filename=${model.filename}
|
|
||||||
maxLength=${builtins.toString model.gen_length}
|
|
||||||
promptBatchSize=256
|
|
||||||
chatNamePrompt=${chat_name_prompt}
|
|
||||||
systemMessage="${
|
|
||||||
# replace newlines with the string literal "\n" for gpt4all to properly parse
|
|
||||||
builtins.replaceStrings [ "\n" ] [ "\\n" ] system_prompt
|
|
||||||
}"
|
|
||||||
'') models)
|
|
||||||
+ ''
|
|
||||||
|
|
||||||
[network]
|
|
||||||
isActive=false
|
|
||||||
usageStatsActive=false
|
|
||||||
|
|
||||||
[localdocs]
|
|
||||||
fileExtensions=${
|
|
||||||
lib.concatStringsSep ", " [
|
|
||||||
"docx"
|
|
||||||
"pdf"
|
|
||||||
"txt"
|
|
||||||
"md"
|
|
||||||
"rst"
|
|
||||||
"rs"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
(
|
|
||||||
builtins.listToAttrs (
|
|
||||||
map (f: {
|
|
||||||
name = ".local/share/nomic.ai/GPT4All/${f.filename}";
|
|
||||||
value.source = f.src;
|
|
||||||
}) models
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -2,11 +2,28 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
|
inputs,
|
||||||
|
niri-package,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
invert_image_avg = pkgs.callPackage ../util/inverse_color.nix;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.niri.homeModules.config
|
||||||
|
(
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
inputs.niri.overlays.niri
|
||||||
|
];
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
programs.niri = {
|
programs.niri = {
|
||||||
package = pkgs.niri;
|
package = niri-package;
|
||||||
settings = {
|
settings = {
|
||||||
prefer-no-csd = true;
|
prefer-no-csd = true;
|
||||||
|
|
||||||
@@ -16,8 +33,8 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment = {
|
clipboard = {
|
||||||
DISPLAY = ":0";
|
disable-primary = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# skip the hotkey menu thingy
|
# skip the hotkey menu thingy
|
||||||
@@ -34,39 +51,14 @@
|
|||||||
focus-ring = {
|
focus-ring = {
|
||||||
enable = true;
|
enable = true;
|
||||||
active = {
|
active = {
|
||||||
color = "#bf7778";
|
color = builtins.readFile (invert_image_avg {
|
||||||
|
src = ../wallpaper.png;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
spawn-at-startup = [
|
xwayland-satellite.path = lib.getExe pkgs.xwayland-satellite;
|
||||||
{
|
|
||||||
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}"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
# Xwayland on niri via xwayland-satellite
|
|
||||||
{
|
|
||||||
command = [
|
|
||||||
"${lib.getExe pkgs.xwayland-satellite}"
|
|
||||||
config.programs.niri.settings.environment.DISPLAY
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
window-rules = [
|
window-rules = [
|
||||||
{ draw-border-with-background = false; }
|
{ draw-border-with-background = false; }
|
||||||
@@ -86,9 +78,12 @@
|
|||||||
{
|
{
|
||||||
matches = [
|
matches = [
|
||||||
{
|
{
|
||||||
app-id = "zen$";
|
app-id = "^zen";
|
||||||
title = "^Picture-in-Picture$";
|
title = "^Picture-in-Picture$";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
app-id = "Mullvad VPN";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
open-floating = true;
|
open-floating = true;
|
||||||
@@ -108,27 +103,30 @@
|
|||||||
|
|
||||||
# https://github.com/sodiboo/niri-flake/issues/591
|
# https://github.com/sodiboo/niri-flake/issues/591
|
||||||
switch-events = with config.lib.niri.actions; {
|
switch-events = with config.lib.niri.actions; {
|
||||||
"lid-close".action = spawn "${pkgs.swaylock}/bin/swaylock";
|
"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.fuzzel}/bin/fuzzel"
|
|
||||||
];
|
# TODO! make this work
|
||||||
|
"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 = [ ];
|
||||||
|
|
||||||
# https://github.com/sodiboo/niri-flake/commit/a7949bd0f5551fdfffd04cb9735ad3cd3167d624#r153571513
|
# https://github.com/sodiboo/niri-flake/commit/a7949bd0f5551fdfffd04cb9735ad3cd3167d624#r153571513
|
||||||
# "Ctrl+Print".action = screenshot-screen;
|
# "Ctrl+Print".action = screenshot-screen;
|
||||||
"Alt+Print".action = screenshot-window;
|
"Alt+Print".action.screenshot-window = [ ];
|
||||||
|
|
||||||
# Volume control
|
# Volume control
|
||||||
"XF86AudioRaiseVolume".action = spawn [
|
"XF86AudioRaiseVolume".action = spawn [
|
||||||
@@ -161,7 +159,7 @@
|
|||||||
|
|
||||||
# color picker and copies to clipboard
|
# color picker and copies to clipboard
|
||||||
"Mod+Ctrl+Alt+C".action = spawn [
|
"Mod+Ctrl+Alt+C".action = spawn [
|
||||||
"${pkgs.hyprpicker}/bin/hyprpicker"
|
(lib.getExe pkgs.hyprpicker)
|
||||||
"-za"
|
"-za"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
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,81 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
title = "Stratechery";
|
|
||||||
url = "https://stratechery.passport.online/feed/rss/2gi1tPZ8Ta36Tsx7rDLM5P";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Factorio Blog";
|
|
||||||
url = "https://www.factorio.com/blog/rss";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
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 = "GioCities";
|
|
||||||
url = "https://blog.giovanh.com/feeds/atom.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "mcyoung";
|
|
||||||
url = "https://mcyoung.xyz/atom.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";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
title = "Jellyfin Blog";
|
|
||||||
url = "https://jellyfin.org/posts/rss.xml";
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -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
|
|
||||||
BIN
home-manager/secrets/openrouter_api_key
Normal file
BIN
home-manager/secrets/openrouter_api_key
Normal file
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
|
|
||||||
];
|
|
||||||
})
|
|
||||||
[
|
|
||||||
"borg-laptop-password.age"
|
|
||||||
]
|
|
||||||
))
|
|
||||||
BIN
home-manager/secrets/steam-user-id
Normal file
BIN
home-manager/secrets/steam-user-id
Normal file
Binary file not shown.
@@ -1,65 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
homeDirectory,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./gui.nix
|
|
||||||
|
|
||||||
# niri wayland compositor
|
|
||||||
./progs/niri.nix
|
|
||||||
|
|
||||||
# statusbar
|
|
||||||
./progs/eww/eww.nix
|
|
||||||
|
|
||||||
# lockscreen
|
|
||||||
./progs/swaylock.nix
|
|
||||||
|
|
||||||
# notification daemon
|
|
||||||
./progs/dunst.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
wdisplays
|
|
||||||
intel-gpu-tools
|
|
||||||
|
|
||||||
blueman
|
|
||||||
|
|
||||||
# used by /etc/nixos logic to launch niri
|
|
||||||
config.programs.niri.package
|
|
||||||
];
|
|
||||||
|
|
||||||
# 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";
|
|
||||||
};
|
|
||||||
|
|
||||||
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 = import ./progs/borg.nix {
|
|
||||||
borgPasswordFile = config.age.secrets.borg-laptop-password.path;
|
|
||||||
inherit homeDirectory;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.niri.settings.outputs = {
|
|
||||||
"BOE 0x095F Unknown" = {
|
|
||||||
scale = 1.5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ./gui.nix ];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
protontricks
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/pull/339370#issuecomment-2731336341
|
|
||||||
bs-manager
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.alacritty.settings = {
|
|
||||||
window.decorations = lib.mkForce "full";
|
|
||||||
window.opacity = lib.mkForce 1.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.obs-studio = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
|
||||||
wlrobs
|
|
||||||
obs-backgroundremoval
|
|
||||||
obs-pipewire-audio-capture
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
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
|
||||||
|
'';
|
||||||
|
}
|
||||||
15
justfile
15
justfile
@@ -1,15 +0,0 @@
|
|||||||
update_all: system_update home_update
|
|
||||||
|
|
||||||
format_home:
|
|
||||||
nixfmt ./home-manager
|
|
||||||
|
|
||||||
format_system:
|
|
||||||
nixfmt ./etcnixos
|
|
||||||
|
|
||||||
system_update:
|
|
||||||
nh os boot -u ./etcnixos
|
|
||||||
|
|
||||||
home_update:
|
|
||||||
rm -fr ~/.gtkrc-2.0
|
|
||||||
nh home switch -u ./home-manager -- --impure
|
|
||||||
|
|
||||||
@@ -6,27 +6,65 @@
|
|||||||
system,
|
system,
|
||||||
hostname,
|
hostname,
|
||||||
inputs,
|
inputs,
|
||||||
|
niri-package,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./declarative-nm.nix
|
|
||||||
./distrobox.nix
|
|
||||||
./vm.nix
|
./vm.nix
|
||||||
./steam.nix
|
./steam.nix
|
||||||
|
./networking.nix
|
||||||
|
|
||||||
inputs.agenix.nixosModules.default
|
|
||||||
inputs.nixos-hardware.nixosModules.common-pc-ssd
|
|
||||||
inputs.chaotic.nixosModules.default
|
|
||||||
inputs.disko.nixosModules.disko
|
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
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.nix-ld = {
|
# 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;
|
enable = true;
|
||||||
libraries = with pkgs; [
|
capSysNice = true;
|
||||||
stdenv.cc.cc
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
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 = {
|
nix = {
|
||||||
# optimize the store
|
# optimize the store
|
||||||
@@ -39,40 +77,58 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# https://github.com/viperML/nh
|
|
||||||
programs.nh = {
|
|
||||||
enable = true;
|
|
||||||
clean.enable = true;
|
|
||||||
clean.extraArgs = "--keep-since 4d --keep 3";
|
|
||||||
};
|
|
||||||
|
|
||||||
# kernel options
|
# kernel options
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxPackages_cachyos-lto;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
# kernelPackages = pkgs.linuxPackages_latest;
|
# kernelPackages = pkgs.linuxPackages;
|
||||||
|
|
||||||
kernel.sysctl = {
|
lanzaboote = {
|
||||||
# dmesg shushhhhh
|
enable = true;
|
||||||
"kernel.printk" = "2 4 1 7";
|
# TODO: proper secrets management so this is not stored in nix store
|
||||||
|
pkiBundle = "/var/lib/sbctl";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = true;
|
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
timeout = 1;
|
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 = {
|
initrd = {
|
||||||
|
systemd.enable = true;
|
||||||
compressor = "zstd";
|
compressor = "zstd";
|
||||||
|
availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"nvme"
|
||||||
|
"usbhid"
|
||||||
|
"amdgpu"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
kernelModules = [
|
kernelModules = [
|
||||||
|
"kvm-amd"
|
||||||
"ip_tables"
|
"ip_tables"
|
||||||
"iptable_nat"
|
"iptable_nat"
|
||||||
"msr"
|
"msr"
|
||||||
|
"btusb"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
kernelParams = [
|
||||||
|
# 1gb huge pages
|
||||||
|
"hugepagesz=1G"
|
||||||
|
"hugepages=3"
|
||||||
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
@@ -97,18 +153,26 @@
|
|||||||
# Enable CUPS to print documents.
|
# Enable CUPS to print documents.
|
||||||
printing = {
|
printing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# disabled, build broken
|
drivers = with pkgs; [ hplip ];
|
||||||
# drivers = with pkgs; [ hplip ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# disable fprintd (doesn't compile, idk)
|
# I don't want fingerprint login
|
||||||
fprintd.enable = false;
|
fprintd.enable = false;
|
||||||
|
|
||||||
# Making sure mullvad works on boot
|
# Making sure mullvad works on boot
|
||||||
# mullvad-vpn.enable = true;
|
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Set your time zone.
|
# EST
|
||||||
time.timeZone = "America/New_York";
|
time.timeZone = "America/New_York";
|
||||||
|
|
||||||
security = {
|
security = {
|
||||||
@@ -125,26 +189,9 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# age.identityPaths = [ "/home/${username}/.ssh/id_ed25519" ];
|
|
||||||
|
|
||||||
# networking
|
|
||||||
networking = import ./networking.nix { inherit hostname; };
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
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
|
# Enable Bluetooth
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -159,7 +206,8 @@
|
|||||||
|
|
||||||
# Enable sound with pipewire.
|
# Enable sound with pipewire.
|
||||||
services.pulseaudio.enable = false; # pipewire >>>>>>> pulseaudio
|
services.pulseaudio.enable = false; # pipewire >>>>>>> pulseaudio
|
||||||
security.rtkit.enable = true;
|
# BUG! disable rtkit in order to fix mumble: https://github.com/NixOS/nixpkgs/issues/392992#issuecomment-2799867278
|
||||||
|
security.rtkit.enable = false;
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
@@ -177,14 +225,13 @@
|
|||||||
"camera"
|
"camera"
|
||||||
"adbusers"
|
"adbusers"
|
||||||
];
|
];
|
||||||
|
# TODO! this is really bad :( I should really figure out how to do proper secrets management
|
||||||
hashedPasswordFile = "${./secrets/password-hash}";
|
hashedPasswordFile = "${./secrets/password-hash}";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gvfs.enable = true;
|
services.gvfs.enable = true;
|
||||||
programs.gphoto2.enable = true;
|
programs.gphoto2.enable = true;
|
||||||
|
|
||||||
programs.adb.enable = true;
|
|
||||||
|
|
||||||
# Enable thermal data
|
# Enable thermal data
|
||||||
services.thermald.enable = true;
|
services.thermald.enable = true;
|
||||||
|
|
||||||
@@ -197,15 +244,13 @@
|
|||||||
|
|
||||||
# System packages
|
# System packages
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# mullvad-vpn
|
# mullvad-vpn is provided by services.mullvad-vpn.enable
|
||||||
|
|
||||||
#secureboot ctl
|
#secureboot ctl
|
||||||
sbctl
|
sbctl
|
||||||
|
|
||||||
dmidecode
|
dmidecode
|
||||||
|
|
||||||
# (inputs.agenix.packages.${pkgs.system}.default.override { ageBin = "${pkgs.rage}/bin/rage"; })
|
|
||||||
|
|
||||||
doas-sudo-shim
|
doas-sudo-shim
|
||||||
|
|
||||||
glib
|
glib
|
||||||
@@ -217,10 +262,8 @@
|
|||||||
# needed for home-manager
|
# needed for home-manager
|
||||||
git
|
git
|
||||||
|
|
||||||
home-manager
|
tmux
|
||||||
|
android-tools
|
||||||
# https://github.com/chaotic-cx/nyx/issues/972
|
|
||||||
# config.boot.kernelPackages.perf
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# wayland with electron/chromium applications
|
# wayland with electron/chromium applications
|
||||||
@@ -233,22 +276,19 @@
|
|||||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||||
then
|
then
|
||||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
exec ${lib.getExe pkgs.fish} $LOGIN_OPTION
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
# 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.enable = true;
|
||||||
documentation.man.enable = true;
|
documentation.man.enable = true;
|
||||||
documentation.dev.enable = true;
|
documentation.dev.enable = true;
|
||||||
|
|
||||||
swapDevices = [
|
|
||||||
{
|
|
||||||
device = "/var/lib/swapfile";
|
|
||||||
size = 64 * 1024;
|
|
||||||
randomEncryption.enable = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
@@ -6,15 +6,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"xhci_pci"
|
|
||||||
"thunderbolt"
|
|
||||||
"nvme"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
disko.devices = {
|
disko.devices = {
|
||||||
disk = {
|
disk = {
|
||||||
main = {
|
main = {
|
||||||
@@ -59,17 +50,4 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
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.enableRedistributableFirmware = true;
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
}
|
||||||
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
BIN
system/secrets/wifi-passwords.nix
Normal file
BIN
system/secrets/wifi-passwords.nix
Normal file
Binary file not shown.
@@ -5,7 +5,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate =
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
pkg:
|
pkg:
|
||||||
builtins.elem (lib.getName pkg) [
|
builtins.elem (lib.getName pkg) [
|
||||||
@@ -17,11 +16,13 @@
|
|||||||
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
|
||||||
extraCompatPackages = with pkgs; [ proton-ge-bin ];
|
extraCompatPackages = with pkgs; [ proton-ge-bin ];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
steamtinkerlaunch
|
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=";
|
||||||
|
# };
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
}
|
||||||
@@ -14,14 +14,6 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
|
|
||||||
package = (
|
|
||||||
pkgs.wivrn.overrideAttrs (old: {
|
|
||||||
cmakeFlags = old.cmakeFlags ++ [
|
|
||||||
(lib.cmakeFeature "OPENCOMPOSITE_SEARCH_PATH" "${pkgs.opencomposite}/lib/opencomposite")
|
|
||||||
];
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
# Write information to /etc/xdg/openxr/1/active_runtime.json, VR applications
|
# Write information to /etc/xdg/openxr/1/active_runtime.json, VR applications
|
||||||
# will automatically read this and work with wivrn
|
# will automatically read this and work with wivrn
|
||||||
defaultRuntime = true;
|
defaultRuntime = true;
|
||||||
@@ -50,7 +42,7 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
application = [ pkgs.wlx-overlay-s ];
|
application = [ pkgs.wayvr ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user