tangled
alpha
login
or
join now
bwc9876.dev
/
nixos-config
1
fork
atom
Flake for my NixOS devices
1
fork
atom
overview
issues
pulls
pipelines
Update
bwc9876.dev
2 months ago
5633530f
26a2ea84
verified
This commit was signed with the committer's
known signature
.
bwc9876.dev
SSH Key Fingerprint:
SHA256:DanMEP/RNlSC7pAVbnXO6wzQV00rqyKj053tz4uH5gQ=
+146
-141
8 changed files
expand all
collapse all
unified
split
flake.lock
homeModules
dev.nix
firefox.nix
utils.nix
nixosConfigurations
black-mesa.nix
nixosModules
imperm.nix
user-bean.nix
packages
packwiz.nix
+31
-31
flake.lock
···
135
135
"rust-analyzer-src": "rust-analyzer-src"
136
136
},
137
137
"locked": {
138
138
-
"lastModified": 1764571808,
139
139
-
"narHash": "sha256-+oo9W5rz03TjfpNqDSLEQwgKiuBbjrHdORyTHli2RuM=",
138
138
+
"lastModified": 1767250179,
139
139
+
"narHash": "sha256-PnQdWvPZqHp+7yaHWDFX3NYSKaOy0fjkwpR+rIQC7AY=",
140
140
"owner": "nix-community",
141
141
"repo": "fenix",
142
142
-
"rev": "df3c2e78ec13418f85c1f26e77a50f865ec57d38",
142
142
+
"rev": "a3eaf682db8800962943a77ab77c0aae966f9825",
143
143
"type": "github"
144
144
},
145
145
"original": {
···
401
401
]
402
402
},
403
403
"locked": {
404
404
-
"lastModified": 1767048910,
405
405
-
"narHash": "sha256-KLFTeA/xquN+F3XHLAXcserk0L0nijbhzuldxNDF1eE=",
404
404
+
"lastModified": 1767104570,
405
405
+
"narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=",
406
406
"owner": "nix-community",
407
407
"repo": "home-manager",
408
408
-
"rev": "d99b4ca5debaa082c7d76015aa2b7f3fc7e8b5f7",
408
408
+
"rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf",
409
409
"type": "github"
410
410
},
411
411
"original": {
···
480
480
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
481
481
},
482
482
"locked": {
483
483
-
"lastModified": 1767077227,
484
484
-
"narHash": "sha256-wdUitn3XbaC99X0ctfHf0q5lGQ/1ogUwzjqTD4bkrDg=",
483
483
+
"lastModified": 1767257541,
484
484
+
"narHash": "sha256-eAZD0o5eC85jES3k8S0e1NlJJv+rTgofhl0QajhFjyM=",
485
485
"owner": "sodiboo",
486
486
"repo": "niri-flake",
487
487
-
"rev": "9c4cb4a2b1adf7a24064a8cf5c829f464622d520",
487
487
+
"rev": "0eb70f38f02923ff59743a0978fed88f04c98c7d",
488
488
"type": "github"
489
489
},
490
490
"original": {
···
513
513
"niri-unstable": {
514
514
"flake": false,
515
515
"locked": {
516
516
-
"lastModified": 1767072131,
517
517
-
"narHash": "sha256-JEpNneZyi8ydU0VVpxrHis2panjmeagFLGAiqigWMbE=",
516
516
+
"lastModified": 1767160009,
517
517
+
"narHash": "sha256-aTj88rDBdhmzaGXoFPOsHjXYM2OjNttixsGftT/X0dI=",
518
518
"owner": "YaLTeR",
519
519
"repo": "niri",
520
520
-
"rev": "1ab1737653d8727c63252fb569e011c0903a9ace",
520
520
+
"rev": "cf0b4bc0ca93ab5c18b562ada1d8609b67b3c4e3",
521
521
"type": "github"
522
522
},
523
523
"original": {
···
548
548
},
549
549
"nixos-hardware": {
550
550
"locked": {
551
551
-
"lastModified": 1767070591,
552
552
-
"narHash": "sha256-b0aM3221Pw6vbACFqZrVzZjMNqXVPi1dvgLr8QTbajc=",
551
551
+
"lastModified": 1767185284,
552
552
+
"narHash": "sha256-ljDBUDpD1Cg5n3mJI81Hz5qeZAwCGxon4kQW3Ho3+6Q=",
553
553
"owner": "NixOS",
554
554
"repo": "nixos-hardware",
555
555
-
"rev": "9b3c38bf6c260d0e88154ef07fa833fa845bfd14",
555
555
+
"rev": "40b1a28dce561bea34858287fbb23052c3ee63fe",
556
556
"type": "github"
557
557
},
558
558
"original": {
···
563
563
},
564
564
"nixpkgs": {
565
565
"locked": {
566
566
-
"lastModified": 1766902085,
567
567
-
"narHash": "sha256-coBu0ONtFzlwwVBzmjacUQwj3G+lybcZ1oeNSQkgC0M=",
566
566
+
"lastModified": 1767116409,
567
567
+
"narHash": "sha256-5vKw92l1GyTnjoLzEagJy5V5mDFck72LiQWZSOnSicw=",
568
568
"owner": "NixOS",
569
569
"repo": "nixpkgs",
570
570
-
"rev": "c0b0e0fddf73fd517c3471e546c0df87a42d53f4",
570
570
+
"rev": "cad22e7d996aea55ecab064e84834289143e44a0",
571
571
"type": "github"
572
572
},
573
573
"original": {
···
579
579
},
580
580
"nixpkgs-stable": {
581
581
"locked": {
582
582
-
"lastModified": 1766885793,
583
583
-
"narHash": "sha256-P6RVkrM9JLCW6xBjSwHfgTOQ1JwBUma5xe5LI8xAPC0=",
582
582
+
"lastModified": 1767047869,
583
583
+
"narHash": "sha256-tzYsEzXEVa7op1LTnrLSiPGrcCY6948iD0EcNLWcmzo=",
584
584
"owner": "NixOS",
585
585
"repo": "nixpkgs",
586
586
-
"rev": "9ef261221d1e72399f2036786498d78c38185c46",
586
586
+
"rev": "89dbf01df72eb5ebe3b24a86334b12c27d68016a",
587
587
"type": "github"
588
588
},
589
589
"original": {
···
602
602
"systems": "systems"
603
603
},
604
604
"locked": {
605
605
-
"lastModified": 1767002962,
606
606
-
"narHash": "sha256-HGFRwMRUwt56E+SiVX9YQOzpOwHy0/rtEqMoEbkF8Yg=",
605
605
+
"lastModified": 1767185101,
606
606
+
"narHash": "sha256-gyNczVfQMoi+OQghxBik6wx8XLsCelok9SMl1bMLUoc=",
607
607
"owner": "nix-community",
608
608
"repo": "nixvim",
609
609
-
"rev": "63c957603751f0a107c4d9c2cbaff1c8749fc9f1",
609
609
+
"rev": "df9d3637e80b98c5b937fc73a465d0eea2c3aa88",
610
610
"type": "github"
611
611
},
612
612
"original": {
···
765
765
"rust-analyzer-src": {
766
766
"flake": false,
767
767
"locked": {
768
768
-
"lastModified": 1764525349,
769
769
-
"narHash": "sha256-vR3vU9AwzMsBvjNeeG2inA5W/2MwseFk5NIIrLFEMHk=",
768
768
+
"lastModified": 1767191410,
769
769
+
"narHash": "sha256-cCZGjubgDWmstvFkS6eAw2qk2ihgWkycw55u2dtLd70=",
770
770
"owner": "rust-lang",
771
771
"repo": "rust-analyzer",
772
772
-
"rev": "d646b23f000d099d845f999c2c1e05b15d9cdc78",
772
772
+
"rev": "a9026e6d5068172bf5a0d52a260bb290961d1cb4",
773
773
"type": "github"
774
774
},
775
775
"original": {
···
838
838
"prismlauncher-meta": "prismlauncher-meta"
839
839
},
840
840
"locked": {
841
841
-
"lastModified": 1767100171,
842
842
-
"narHash": "sha256-/6khjDUAlCRa7dgyCxO/TECCKvhtlSsNjcE0Nz+MfEs=",
841
841
+
"lastModified": 1767240050,
842
842
+
"narHash": "sha256-NHV78UUI3BPyelMwwgfgMb5RH0+h5zZ+RwusBRAyVQs=",
843
843
"ref": "refs/heads/main",
844
844
-
"rev": "1b24a1dfdbfa14af6ded52420dd77266e025abf1",
845
845
-
"revCount": 354,
844
844
+
"rev": "85763f8fd86b6e08dd3436346d4edb1ebb8f1bc8",
845
845
+
"revCount": 357,
846
846
"type": "git",
847
847
"url": "https://codeberg.org/spoonbaker/mono"
848
848
},
+11
-7
homeModules/dev.nix
···
1
1
-
{inputs, outputs, ...}: {
1
1
+
{
2
2
+
inputs,
3
3
+
outputs,
4
4
+
...
5
5
+
}: {
2
6
config,
3
7
lib,
4
8
pkgs,
···
16
20
python = mkLangOpt "Python dev stuff";
17
21
dotnet = mkLangOpt ".NET dev stuff";
18
22
cutter = mkLangOpt "Cutter";
19
19
-
mc = lib.mkEnableOption "Minecraft modpack stuff";
23
23
+
mc = lib.mkEnableOption "Minecraft modpack stuff";
20
24
};
21
25
22
26
config = let
···
69
73
gcc
70
74
gdb
71
75
])
72
72
-
++ (lib.optionals conf.mc [
73
73
-
outputs.packages.${pkgs.system}.packwiz
74
74
-
inputs.spoon.packages.${pkgs.system}.mc-srv-git-hook.passthru.mrpack-install'
75
75
-
jre
76
76
-
])
76
76
+
++ (lib.optionals conf.mc [
77
77
+
outputs.packages.${pkgs.system}.packwiz
78
78
+
inputs.spoon.packages.${pkgs.system}.mc-srv-git-hook.passthru.mrpack-install'
79
79
+
jre
80
80
+
])
77
81
++ (lib.optionals conf.rust [
78
82
(pkgs.fenix.complete.withComponents [
79
83
"cargo"
+5
-5
homeModules/firefox.nix
···
175
175
);
176
176
in "${noPath}/favicon.${iconExt}"
177
177
));
178
178
-
mkModrinth = aliases: type: mkEngine aliases "https://modrinth.com/discover/${type}?q={searchTerms}" "ico";
178
178
+
mkModrinth = aliases: type: mkEngine aliases "https://modrinth.com/discover/${type}?q={searchTerms}" "ico";
179
179
in {
180
180
# Dev
181
181
"GitHub Repos" =
···
293
293
"Netflix" = mkEngine ["@nfx"] "https://www.netflix.com/search?q={searchTerms}" "ico";
294
294
"IMDb" = mkEngine ["@imdb"] "https://www.imdb.com/find?q={searchTerms}" "ico";
295
295
296
296
-
# Minecraft
297
297
-
"Modrinth" = mkModrinth ["@mr"] "mods";
298
298
-
"Modrinth Resource Packs" = mkModrinth ["@mrr"] "resourcepacks";
299
299
-
"Modrinth Data Packs" = mkModrinth ["@mrd"] "datapacks";
296
296
+
# Minecraft
297
297
+
"Modrinth" = mkModrinth ["@mr"] "mods";
298
298
+
"Modrinth Resource Packs" = mkModrinth ["@mrr"] "resourcepacks";
299
299
+
"Modrinth Data Packs" = mkModrinth ["@mrd"] "datapacks";
300
300
301
301
# Misc
302
302
"Firefox Add-ons" = mkEngine [
-1
homeModules/utils.nix
···
29
29
dust
30
30
zip
31
31
inputs.gh-grader-preview.packages.${pkgs.system}.default
32
32
-
wol
33
32
libqalculate
34
33
p7zip
35
34
poop
+87
-89
nixosConfigurations/black-mesa.nix
···
2
2
inputs,
3
3
outputs,
4
4
...
5
5
-
}:
6
6
-
{
5
5
+
}: {
7
6
system = "x86_64-linux";
8
8
-
specialArgs.inputs = inputs // inputs.spoon.inputs // { inherit (inputs) self; };
7
7
+
specialArgs.inputs = inputs // inputs.spoon.inputs // {inherit (inputs) self;};
9
8
10
10
-
modules = (builtins.attrValues outputs.nixosModules) ++ [
11
11
-
inputs.nixos-hardware.nixosModules.common-gpu-amd
12
12
-
inputs.nixos-hardware.nixosModules.common-cpu-amd
13
13
-
inputs.spoon.nixosModules.black-mesa
14
14
-
(
15
15
-
{ config, ... }:
16
16
-
{
17
17
-
home-manager.users.bean.home.stateVersion = "25.05";
18
18
-
system.stateVersion = "25.05";
19
19
-
networking.hostName = "black-mesa";
9
9
+
modules =
10
10
+
(builtins.attrValues outputs.nixosModules)
11
11
+
++ [
12
12
+
inputs.nixos-hardware.nixosModules.common-gpu-amd
13
13
+
inputs.nixos-hardware.nixosModules.common-cpu-amd
14
14
+
inputs.spoon.nixosModules.black-mesa
15
15
+
(
16
16
+
{config, ...}: {
17
17
+
home-manager.users.bean.home.stateVersion = "25.05";
18
18
+
system.stateVersion = "25.05";
19
19
+
networking.hostName = "black-mesa";
20
20
21
21
-
powerManagement.cpuFreqGovernor = "performance";
21
21
+
powerManagement.cpuFreqGovernor = "performance";
22
22
23
23
-
boot.initrd.availableKernelModules = [
24
24
-
"nvme"
25
25
-
"xhci_pci"
26
26
-
"ahci"
27
27
-
"usbhid"
28
28
-
"usb_storage"
29
29
-
"sd_mod"
30
30
-
];
31
31
-
boot.kernelModules = [ "kvm-amd" ];
32
32
-
boot.extraModulePackages = [ ];
23
23
+
boot.initrd.availableKernelModules = [
24
24
+
"nvme"
25
25
+
"xhci_pci"
26
26
+
"ahci"
27
27
+
"usbhid"
28
28
+
"usb_storage"
29
29
+
"sd_mod"
30
30
+
];
31
31
+
boot.kernelModules = ["kvm-amd"];
32
32
+
boot.extraModulePackages = [];
33
33
34
34
-
hardware.enableRedistributableFirmware = true;
34
34
+
hardware.enableRedistributableFirmware = true;
35
35
36
36
-
# Other disks handled by cow.disks
37
37
-
fileSystems."/mnt/storage" = {
38
38
-
device = "/dev/sda1";
39
39
-
fsType = "btrfs";
40
40
-
};
36
36
+
# Other disks handled by cow.disks
37
37
+
fileSystems."/mnt/storage" = {
38
38
+
device = "/dev/sda1";
39
39
+
fsType = "btrfs";
40
40
+
};
41
41
42
42
-
users.users =
43
43
-
let
42
42
+
users.users = let
44
43
secureRoot = "/nix/persist/secure";
45
45
-
in
46
46
-
{
44
44
+
in {
47
45
bean.hashedPasswordFile = "${secureRoot}/hashed-passwd";
48
46
root = {
49
49
-
openssh.authorizedKeys.keys = [ config.cow.bean.pubkey ];
47
47
+
openssh.authorizedKeys.keys = [config.cow.bean.pubkey];
50
48
hashedPasswordFile = "${secureRoot}/hashed-passwd";
51
49
};
52
50
};
53
51
54
54
-
home-manager.users.bean.cow = {
55
55
-
sync.enable = true;
56
56
-
dev.enable = true;
57
57
-
};
58
58
-
59
59
-
cow = {
60
60
-
bean.sudoer = true;
61
61
-
lanzaboote.enable = true;
62
62
-
ssh-server.enable = true;
63
63
-
role-desktop.enable = true;
64
64
-
gaming.enable = true;
65
65
-
imperm.enable = true;
66
66
-
disks = {
67
67
-
enable = true;
68
68
-
partition-prefix = "cow-bm";
69
69
-
swap = false;
70
70
-
luks = true;
52
52
+
home-manager.users.bean.cow = {
53
53
+
sync.enable = true;
54
54
+
dev.enable = true;
71
55
};
72
72
-
};
73
73
-
}
74
74
-
)
75
75
-
{
76
76
-
# Bingus!
77
77
-
imports = [ inputs.bingus.nixosModules.default ];
78
78
-
nixpkgs.overlays = [ inputs.bingus.overlays.default ];
79
56
80
80
-
cow.imperm.keep = [
81
81
-
"/var/lib/private/bingus"
82
82
-
];
57
57
+
cow = {
58
58
+
bean.sudoer = true;
59
59
+
lanzaboote.enable = true;
60
60
+
ssh-server.enable = true;
61
61
+
role-desktop.enable = true;
62
62
+
gaming.enable = true;
63
63
+
imperm.enable = true;
64
64
+
disks = {
65
65
+
enable = true;
66
66
+
partition-prefix = "cow-bm";
67
67
+
swap = false;
68
68
+
luks = true;
69
69
+
};
70
70
+
};
71
71
+
}
72
72
+
)
73
73
+
{
74
74
+
# Bingus!
75
75
+
imports = [inputs.bingus.nixosModules.default];
76
76
+
nixpkgs.overlays = [inputs.bingus.overlays.default];
83
77
84
84
-
services.bingus-bot = {
85
85
-
enable = true;
86
86
-
tokenFile = "/nix/persist/secure/bingus-token";
87
87
-
replyChannels = [
88
88
-
1295447496948191262
89
89
-
1295245646542143489
78
78
+
cow.imperm.keep = [
79
79
+
"/var/lib/private/bingus"
90
80
];
91
91
-
};
92
92
-
}
93
93
-
{
94
94
-
# for WOL
95
95
-
systemd.network.links."79-eth-wol" = {
96
96
-
matchConfig = {
97
97
-
Type = "ether";
98
98
-
Driver = "!veth";
99
99
-
Virtualization = "false";
81
81
+
82
82
+
services.bingus-bot = {
83
83
+
enable = true;
84
84
+
tokenFile = "/nix/persist/secure/bingus-token";
85
85
+
replyChannels = [
86
86
+
1295447496948191262
87
87
+
1295245646542143489
88
88
+
];
100
89
};
101
101
-
linkConfig = {
102
102
-
WakeOnLan = "magic";
103
103
-
NamePolicy = "keep kernel database onboard slot path";
104
104
-
AlternativeNamesPolicy = "database onboard slot path mac";
105
105
-
MACAddressPolicy = "persistent";
90
90
+
}
91
91
+
{
92
92
+
# for WOL
93
93
+
systemd.network.links."79-eth-wol" = {
94
94
+
matchConfig = {
95
95
+
Type = "ether";
96
96
+
Driver = "!veth";
97
97
+
Virtualization = "false";
98
98
+
};
99
99
+
linkConfig = {
100
100
+
WakeOnLan = "magic";
101
101
+
NamePolicy = "keep kernel database onboard slot path";
102
102
+
AlternativeNamesPolicy = "database onboard slot path mac";
103
103
+
MACAddressPolicy = "persistent";
104
104
+
};
106
105
};
107
107
-
};
108
108
-
}
109
109
-
{
110
110
-
virtualisation.podman.enable = true;
106
106
+
}
107
107
+
{
108
108
+
virtualisation.podman.enable = true;
111
109
112
112
-
cow.imperm.keep = [ "/var/lib/containers" ];
113
113
-
}
114
114
-
];
110
110
+
cow.imperm.keep = ["/var/lib/containers"];
111
111
+
}
112
112
+
];
115
113
}
+1
-1
nixosModules/imperm.nix
···
67
67
"/var/lib/systemd/timers"
68
68
"/var/lib/systemd/rfkill"
69
69
"/var/lib/systemd/backlight"
70
70
-
"/var/tmp"
70
70
+
"/var/tmp"
71
71
]
72
72
++ config.cow.imperm.keepCache;
73
73
users =
+5
-5
nixosModules/user-bean.nix
···
9
9
options.cow.bean = {
10
10
enable = lib.mkEnableOption "Bean user";
11
11
sudoer = lib.mkEnableOption "Bean being a sudoer";
12
12
-
pubkey = lib.mkOption {
13
13
-
type = lib.types.str;
14
14
-
description = "Public Key to Add for Bean";
15
15
-
default = pubkey;
16
16
-
};
12
12
+
pubkey = lib.mkOption {
13
13
+
type = lib.types.str;
14
14
+
description = "Public Key to Add for Bean";
15
15
+
default = pubkey;
16
16
+
};
17
17
};
18
18
19
19
config = lib.mkIf config.cow.bean.enable {
+6
-2
packages/packwiz.nix
···
1
1
-
{ packwiz, fetchFromGitHub, ... }:
1
1
+
{
2
2
+
packwiz,
3
3
+
fetchFromGitHub,
4
4
+
...
5
5
+
}:
2
6
packwiz.overrideAttrs (prev: next: {
3
3
-
version = "0-unstable-2025-11-24";
7
7
+
version = "0-unstable-2025-11-24";
4
8
5
9
src = fetchFromGitHub {
6
10
owner = "packwiz";