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
Remove uses of rec
bwc9876.dev
4 months ago
4bb9a877
7776d976
verified
This commit was signed with the committer's
known signature
.
bwc9876.dev
SSH Key Fingerprint:
SHA256:DanMEP/RNlSC7pAVbnXO6wzQV00rqyKj053tz4uH5gQ=
+199
-164
9 changed files
expand all
collapse all
unified
split
flake.lock
flake.nix
nixosModules
base
nushell.nix
dev
nix.nix
graphics
fonts.nix
hypr.nix
news.nix
shell.nix
systemConfigs
installer.nix
+43
-22
flake.lock
···
31
31
]
32
32
},
33
33
"locked": {
34
34
-
"lastModified": 1760468693,
35
35
-
"narHash": "sha256-JtXWEvA09PLiBOcNws3eUa6WSj/j1aDc1isWXka6ctk=",
34
34
+
"lastModified": 1760692571,
35
35
+
"narHash": "sha256-SgqC+B7F7hHDKug+zRUL83vhibCSknzhRl0+OxUYjn4=",
36
36
"owner": "catppuccin",
37
37
"repo": "nix",
38
38
-
"rev": "2b289e5837767dd9239e4469d6ba69ca4f98038b",
38
38
+
"rev": "8a084b86b6a4b2a1575e8cc67e07c4a687fce276",
39
39
"type": "github"
40
40
},
41
41
"original": {
···
303
303
]
304
304
},
305
305
"locked": {
306
306
-
"lastModified": 1753707310,
307
307
-
"narHash": "sha256-TX9dKD6VGmdBKUhvwGVmUN1Ry4cNyOmZOSMRmZlqmtc=",
306
306
+
"lastModified": 1760359755,
307
307
+
"narHash": "sha256-k7sJPDPio2vQuqSJ/3nOkBy6I2YqZvJYNhJJARLSxrg=",
308
308
"owner": "nix-community",
309
309
"repo": "flakelight",
310
310
-
"rev": "02eb89638e0420f1492ec9ad6b8c2c13f9e3a2ba",
310
310
+
"rev": "d8d6ce0774c3df8f7b58b4cd4b5cf4b63b4a9fe6",
311
311
"type": "github"
312
312
},
313
313
"original": {
···
381
381
"type": "github"
382
382
}
383
383
},
384
384
+
"hexecute": {
385
385
+
"inputs": {
386
386
+
"nixpkgs": [
387
387
+
"nixpkgs"
388
388
+
]
389
389
+
},
390
390
+
"locked": {
391
391
+
"lastModified": 1760538791,
392
392
+
"narHash": "sha256-1US+u81rwdTEN0s5u45FTLB2BB6lldYdrGZDjzkeyt4=",
393
393
+
"owner": "ThatOtherAndrew",
394
394
+
"repo": "Hexecute",
395
395
+
"rev": "72a14b49a61bbde0678ea37ff06974514181bb6b",
396
396
+
"type": "github"
397
397
+
},
398
398
+
"original": {
399
399
+
"owner": "ThatOtherAndrew",
400
400
+
"repo": "Hexecute",
401
401
+
"type": "github"
402
402
+
}
403
403
+
},
384
404
"hm": {
385
405
"inputs": {
386
406
"nixpkgs": [
···
388
408
]
389
409
},
390
410
"locked": {
391
391
-
"lastModified": 1760479847,
392
392
-
"narHash": "sha256-xOwdvpPSHw767aXyeo3GG8DjFbZ9YyRIVSr4TXADQ48=",
411
411
+
"lastModified": 1760662441,
412
412
+
"narHash": "sha256-mlDqR1Ntgs9uYYEAUR1IhamKBO0lxoNS4zGLzEZaY0A=",
393
413
"owner": "nix-community",
394
414
"repo": "home-manager",
395
395
-
"rev": "ed1eb4cfddba1be85cb16702d7a42803d1ff55e8",
415
415
+
"rev": "722792af097dff5790f1a66d271a47759f477755",
396
416
"type": "github"
397
417
},
398
418
"original": {
···
506
526
},
507
527
"nixpkgs": {
508
528
"locked": {
509
509
-
"lastModified": 1760284886,
510
510
-
"narHash": "sha256-TK9Kr0BYBQ/1P5kAsnNQhmWWKgmZXwUQr4ZMjCzWf2c=",
529
529
+
"lastModified": 1760524057,
530
530
+
"narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=",
511
531
"owner": "NixOS",
512
532
"repo": "nixpkgs",
513
513
-
"rev": "cf3f5c4def3c7b5f1fc012b3d839575dbe552d43",
533
533
+
"rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5",
514
534
"type": "github"
515
535
},
516
536
"original": {
···
530
550
"systems": "systems_2"
531
551
},
532
552
"locked": {
533
533
-
"lastModified": 1760472915,
534
534
-
"narHash": "sha256-8o8VoHB5IRiK+HmO387ICkkI5npIbDAoIqaIwIAy10E=",
553
553
+
"lastModified": 1760745926,
554
554
+
"narHash": "sha256-JdkryG8f774tJK6BLp8386zJ5a+GRtS4dulbvhK/OQE=",
535
555
"owner": "nix-community",
536
556
"repo": "nixvim",
537
537
-
"rev": "32a3fa118d187dc9c88f35a78e763a5b895b6227",
557
557
+
"rev": "4c4cac6445bc92ba560433c2843d1beb1a3a14ab",
538
558
"type": "github"
539
559
},
540
560
"original": {
···
551
571
]
552
572
},
553
573
"locked": {
554
554
-
"lastModified": 1754065413,
555
555
-
"narHash": "sha256-nrVQSXUkWd8mOBrXwHWMumENy33NrYQv+tiplUhjElg=",
574
574
+
"lastModified": 1760636396,
575
575
+
"narHash": "sha256-QHYUWrSpEd040JVBAoCK873nCNemT3gHNePka37FbpU=",
556
576
"owner": "Bwc9876",
557
577
"repo": "nu_plugin_dbus",
558
558
-
"rev": "c00d525ffdc4efd6aa80cec66dec4a8f497441e5",
578
578
+
"rev": "090be12d30371b46b9e7cbdb8ec8906a6fe16e60",
559
579
"type": "github"
560
580
},
561
581
"original": {
···
670
690
"fenix": "fenix",
671
691
"flakelight": "flakelight_2",
672
692
"gh-grader-preview": "gh-grader-preview",
693
693
+
"hexecute": "hexecute",
673
694
"hm": "hm",
674
695
"imperm": "imperm",
675
696
"lanzaboote": "lanzaboote",
···
737
758
]
738
759
},
739
760
"locked": {
740
740
-
"lastModified": 1760412458,
741
741
-
"narHash": "sha256-lu8v3ALvCwGKsIQ01L//CUDm0QBrXTuwPmLw/CvP/8o=",
761
761
+
"lastModified": 1760728397,
762
762
+
"narHash": "sha256-z6naEmNTmWQaGXm6tXJtvwVyv/TaJFNhtu5HNA05xP4=",
742
763
"ref": "refs/heads/main",
743
743
-
"rev": "6d841dac39f69d96fe15172143a06bae1263401b",
744
744
-
"revCount": 253,
764
764
+
"rev": "4999f91c4d6da229fc253004f449861246e92838",
765
765
+
"revCount": 264,
745
766
"type": "git",
746
767
"url": "https://codeberg.org/spoonbaker/mono"
747
768
},
+3
flake.nix
···
27
27
gh-grader-preview.inputs.nixpkgs.follows = "nixpkgs";
28
28
bingus.url = "github:Bwc9876/bingus-bot";
29
29
bingus.inputs.nixpkgs.follows = "nixpkgs";
30
30
+
hexecute.url = "github:ThatOtherAndrew/Hexecute";
31
31
+
hexecute.inputs.nixpkgs.follows = "nixpkgs";
30
32
31
33
spoon.url = "git+https://codeberg.org/spoonbaker/mono";
32
34
spoon.inputs = {
···
54
56
bingus,
55
57
spoon,
56
58
gh-grader-preview,
59
59
+
hexecute,
57
60
}:
58
61
flakelight ./. {
59
62
imports = [
+68
-65
nixosModules/base/nushell.nix
···
1
1
{
2
2
pkgs,
3
3
-
inputs,
4
3
lib,
4
4
+
config,
5
5
...
6
6
-
}: let
7
7
-
init-starship = pkgs.runCommand "starship-init" {} ''
6
6
+
}:
7
7
+
let
8
8
+
init-starship = pkgs.runCommand "starship-init" { } ''
8
9
${pkgs.starship}/bin/starship init nu > $out
9
10
'';
10
10
-
in rec {
11
11
-
home-manager.users.bean.programs.nushell = with lib; {
12
12
-
enable = true;
13
13
-
shellAliases = {
14
14
-
cd = "z";
15
15
-
sw = "zi";
16
16
-
py = "python";
17
17
-
cat = "bat";
18
18
-
pcat = "prettybat";
19
19
-
pbat = "prettybat";
20
20
-
dog = "doggo";
21
21
-
man = "__batman";
22
22
-
bgrep = "batgrep";
23
23
-
"🥺" = "sudo";
24
24
-
};
25
25
-
configFile.text = ''
26
26
-
let fish_completer = {|spans|
27
27
-
${pkgs.fish}/bin/fish --command $'complete "--do-complete=($spans | str join " ")"'
28
28
-
| $"value(char tab)description(char newline)" + $in
29
29
-
| from tsv --flexible --no-infer
30
30
-
}
31
31
-
let zoxide_completer = {|spans|
32
32
-
let query = $spans | skip 1
33
33
-
let z_results = $query | zoxide query -l ...$in | lines | where {|x| $x != $env.PWD}
34
34
-
let l_results = fish_completer $spans
35
35
-
$l_results | append $z_results
36
36
-
}
37
37
-
let multiple_completers = {|spans|
38
38
-
# if the current command is an alias, get it's expansion
39
39
-
let expanded_alias = (scope aliases | where name == $spans.0 | get -o 0 | get -o expansion)
11
11
+
shellAliases = {
12
12
+
cd = "z";
13
13
+
sw = "zi";
14
14
+
py = "python";
15
15
+
cat = "bat";
16
16
+
pcat = "prettybat";
17
17
+
pbat = "prettybat";
18
18
+
dog = "doggo";
19
19
+
man = "__batman";
20
20
+
bgrep = "batgrep";
21
21
+
"🥺" = "sudo";
22
22
+
};
23
23
+
configFile.text = ''
24
24
+
let fish_completer = {|spans|
25
25
+
${pkgs.fish}/bin/fish --command $'complete "--do-complete=($spans | str join " ")"'
26
26
+
| $"value(char tab)description(char newline)" + $in
27
27
+
| from tsv --flexible --no-infer
28
28
+
}
29
29
+
let zoxide_completer = {|spans|
30
30
+
let query = $spans | skip 1
31
31
+
let z_results = $query | zoxide query -l ...$in | lines | where {|x| $x != $env.PWD}
32
32
+
let l_results = fish_completer $spans
33
33
+
$l_results | append $z_results
34
34
+
}
35
35
+
let multiple_completers = {|spans|
36
36
+
# if the current command is an alias, get it's expansion
37
37
+
let expanded_alias = (scope aliases | where name == $spans.0 | get -o 0 | get -o expansion)
40
38
41
41
-
# overwrite
39
39
+
# overwrite
42
40
43
43
-
let spans = (if $expanded_alias != null {
44
44
-
# put the first word of the expanded alias first in the span
45
45
-
$spans | skip 1 | prepend ($expanded_alias | split row " ")
46
46
-
} else { $spans })
41
41
+
let spans = (if $expanded_alias != null {
42
42
+
# put the first word of the expanded alias first in the span
43
43
+
$spans | skip 1 | prepend ($expanded_alias | split row " ")
44
44
+
} else { $spans })
47
45
48
48
-
match $spans.0 {
49
49
-
z => $zoxide_completer
50
50
-
zi => $zoxide_completer
51
51
-
__zoxide_z => $zoxide_completer
52
52
-
__zoxide_zi => $zoxide_completer
53
53
-
_ => $fish_completer
54
54
-
} | do $in $spans
55
55
-
}
46
46
+
match $spans.0 {
47
47
+
z => $zoxide_completer
48
48
+
zi => $zoxide_completer
49
49
+
__zoxide_z => $zoxide_completer
50
50
+
__zoxide_zi => $zoxide_completer
51
51
+
_ => $fish_completer
52
52
+
} | do $in $spans
53
53
+
}
56
54
57
57
-
let command_not_found = ${fileContents ../../res/command_not_found.nu}
55
55
+
let command_not_found = ${lib.fileContents ../../res/command_not_found.nu}
58
56
59
59
-
def --env __batman [...rest:string] {
60
60
-
BAT_THEME="Monokai Extended" batman ...$rest
61
61
-
}
57
57
+
def --env __batman [...rest:string] {
58
58
+
BAT_THEME="Monokai Extended" batman ...$rest
59
59
+
}
62
60
63
63
-
$env.config = {
64
64
-
show_banner: false
65
65
-
completions: {
66
66
-
external: {
67
67
-
enable: true
68
68
-
completer: $multiple_completers
69
69
-
}
70
70
-
}
71
71
-
hooks: {
72
72
-
command_not_found: $command_not_found
73
73
-
}
74
74
-
}
61
61
+
$env.config = {
62
62
+
show_banner: false
63
63
+
completions: {
64
64
+
external: {
65
65
+
enable: true
66
66
+
completer: $multiple_completers
67
67
+
}
68
68
+
}
69
69
+
hooks: {
70
70
+
command_not_found: $command_not_found
71
71
+
}
72
72
+
}
75
73
76
76
-
source ${init-starship}
77
77
-
'';
74
74
+
source ${init-starship}
75
75
+
'';
76
76
+
in
77
77
+
{
78
78
+
home-manager.users.bean.programs.nushell = {
79
79
+
enable = true;
80
80
+
inherit configFile shellAliases;
78
81
};
79
79
-
home-manager.users.root.programs.nushell = with home-manager.users.bean.programs.nushell; {
82
82
+
home-manager.users.root.programs.nushell = {
80
83
enable = true;
81
84
inherit configFile shellAliases;
82
85
};
-5
nixosModules/dev/nix.nix
···
1
1
{pkgs, ...}: {
2
2
-
nix.settings = {
3
3
-
substituters = ["https://cache.garnix.io"];
4
4
-
trusted-public-keys = ["cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="];
5
5
-
};
6
6
-
7
2
environment.systemPackages = with pkgs; [
8
3
alejandra
9
4
];
+21
-7
nixosModules/graphics/fonts.nix
···
1
1
-
{pkgs, ...}: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
fonts = {
3
4
packages = with pkgs; [
4
5
fira-code
···
10
11
];
11
12
fontconfig = {
12
13
enable = true;
13
13
-
defaultFonts = rec {
14
14
-
serif = sansSerif;
15
15
-
sansSerif = ["FiraGO" "Symbols Nerd Font"];
16
16
-
monospace = ["Fira Code" "Symbols Nerd Font"];
17
17
-
emoji = ["Noto Color Emoji" "Symbols Nerd Font"];
18
18
-
};
14
14
+
defaultFonts =
15
15
+
let
16
16
+
mainFonts = [
17
17
+
"FiraGO"
18
18
+
"Symbols Nerd Font"
19
19
+
];
20
20
+
in
21
21
+
{
22
22
+
serif = mainFonts;
23
23
+
sansSerif = mainFonts;
24
24
+
monospace = [
25
25
+
"Fira Code"
26
26
+
"Symbols Nerd Font"
27
27
+
];
28
28
+
emoji = [
29
29
+
"Noto Color Emoji"
30
30
+
"Symbols Nerd Font"
31
31
+
];
32
32
+
};
19
33
};
20
34
};
21
35
}
+2
-2
nixosModules/graphics/hypr.nix
···
119
119
"SUPER,F,fullscreen,1"
120
120
"SUPER SHIFT,F,fullscreen,0"
121
121
",XF86RFKill,exec,rfkill toggle wifi"
122
122
-
"SUPER,left,workspace,m-1"
123
123
-
"SUPER,right,workspace,m+1"
122
122
+
"SUPER,left,workspace,r-1"
123
123
+
"SUPER,right,workspace,r+1"
124
124
"SUPER SHIFT,left,movetoworkspace,r-1"
125
125
"SUPER SHIFT,right,movetoworkspace,r+1"
126
126
]
-20
nixosModules/graphics/news.nix
···
27
27
"UCXq2nALoSbxLMehAvYTxt_A" # The Grumps
28
28
"UCBa659QWEk1AI4Tg--mrJ2A" # Tom Scott
29
29
"UCFLwN7vRu8M057qJF8TsBaA" # UpIsNotJump
30
30
-
"UCzfyYtgvkx5mLy8nlLlayYg" # SpindleHorse
31
30
"UCPsSoOCRNIj-eo2UbXfcdAw" # xen 42
32
31
"UCYBbrJH2H6tmQZ7VHyA_esA" # Saltydkdan
33
32
"UCBZb-2BHvUtZ-WzrEj16lug" # Raicuparta
···
143
142
tags = [
144
143
"dev"
145
144
"linux"
146
146
-
];
147
147
-
}
148
148
-
{
149
149
-
title = "Windows 11 Updates";
150
150
-
url = "https://support.microsoft.com/en-us/feed/rss/4ec863cc-2ecd-e187-6cb3-b50c6545db92";
151
151
-
tags = [
152
152
-
"dev"
153
153
-
];
154
154
-
}
155
155
-
{
156
156
-
title = "Windows Server 2025 Updates";
157
157
-
url = "https://support.microsoft.com/en-us/feed/rss/c7b7e227-e17e-8633-fd90-9d28fb739cc5";
158
158
-
tags = [
159
159
-
"dev"
160
145
];
161
146
}
162
147
{
···
358
343
{
359
344
title = "Lobste";
360
345
url = "https://lobste.rs/rss";
361
361
-
tags = ["tech"];
362
362
-
}
363
363
-
{
364
364
-
title = "Y Combinator";
365
365
-
url = "https://news.ycombinator.com/rss";
366
346
tags = ["tech"];
367
347
}
368
348
]
+4
nixosModules/graphics/shell.nix
···
25
25
hyprlock
26
26
hyprland-qtutils
27
27
28
28
+
# The best program ever made
29
29
+
inputs'.hexecute.packages.hexecute
30
30
+
28
31
## Waybar
29
32
qt6.qttools # For component
30
33
···
306
309
powerMenu = "rofi -modi 'p:${pkgs.rofi-power-menu}/bin/rofi-power-menu' -show p --symbols-font \"FiraMono Nerd Font Mono\"";
307
310
screenshot = "${pkgs.nushell}/bin/nu ${../../res/screenshot.nu}";
308
311
in [
312
312
+
"SUPER,SPACE,exec,${inputs'.hexecute.packages.default}/bin/hexecute"
309
313
"SUPER,S,exec,uwsm app -- rofi -show drun -icon-theme \"candy-icons\" -show-icons"
310
314
"SUPER SHIFT,E,exec,uwsm app -- rofi -modi emoji -show emoji"
311
315
"SUPER SHIFT,D,exec,swaync-client -d"
+58
-43
systemConfigs/installer.nix
···
1
1
-
{outputs, ...}: {
1
1
+
{ outputs, ... }:
2
2
+
{
2
3
system = "x86_64-linux";
3
4
modules = [
4
4
-
(outputs.lib.applyRoles ["base" "latest-linux" "dev" "fun"])
5
5
-
({
6
6
-
pkgs,
7
7
-
lib,
8
8
-
inputs,
9
9
-
edition,
10
10
-
config,
11
11
-
modulesPath,
12
12
-
...
13
13
-
}: {
14
14
-
system.stateVersion = "25.05";
15
15
-
networking.hostName = "nixos-installer-bwc9876";
5
5
+
(outputs.lib.applyRoles [
6
6
+
"base"
7
7
+
"latest-linux"
8
8
+
"dev"
9
9
+
"fun"
10
10
+
])
11
11
+
(
12
12
+
{
13
13
+
pkgs,
14
14
+
lib,
15
15
+
inputs,
16
16
+
edition,
17
17
+
config,
18
18
+
modulesPath,
19
19
+
...
20
20
+
}:
21
21
+
{
22
22
+
system.stateVersion = "25.05";
23
23
+
networking.hostName = "nixos-installer-bwc9876";
16
24
17
17
-
imports = [
18
18
-
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
19
19
-
];
20
20
-
21
21
-
services.kmscon = {
22
22
-
enable = true;
23
23
-
autologinUser = "bean";
24
24
-
fonts = [
25
25
-
{
26
26
-
name = "FiraMono Nerd Font Mono";
27
27
-
package = pkgs.nerd-fonts.fira-mono;
28
28
-
}
25
25
+
imports = [
26
26
+
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
29
27
];
30
30
-
};
31
28
32
32
-
boot = rec {
33
33
-
initrd.systemd.enable = false;
34
34
-
supportedFilesystems = {
35
35
-
btrfs = true;
36
36
-
reiserfs = lib.mkForce false;
37
37
-
vfat = true;
38
38
-
f2fs = true;
39
39
-
xfs = true;
40
40
-
ntfs = true;
41
41
-
cifs = true;
42
42
-
zfs = lib.mkForce false;
29
29
+
services.kmscon = {
30
30
+
enable = true;
31
31
+
autologinUser = "bean";
32
32
+
fonts = [
33
33
+
{
34
34
+
name = "FiraMono Nerd Font Mono";
35
35
+
package = pkgs.nerd-fonts.fira-mono;
36
36
+
}
37
37
+
];
43
38
};
44
44
-
initrd.supportedFilesystems = supportedFilesystems;
45
45
-
};
46
39
47
47
-
environment.systemPackages = with pkgs; [
48
48
-
gptfdisk
49
49
-
];
50
50
-
})
40
40
+
boot =
41
41
+
let
42
42
+
supportedFilesystems = {
43
43
+
btrfs = true;
44
44
+
reiserfs = lib.mkForce false;
45
45
+
vfat = true;
46
46
+
f2fs = true;
47
47
+
xfs = true;
48
48
+
ntfs = true;
49
49
+
cifs = true;
50
50
+
zfs = lib.mkForce false;
51
51
+
};
52
52
+
in
53
53
+
{
54
54
+
initrd.systemd.enable = false;
55
55
+
inherit supportedFilesystems;
56
56
+
initrd = {
57
57
+
inherit supportedFilesystems;
58
58
+
};
59
59
+
};
60
60
+
61
61
+
environment.systemPackages = with pkgs; [
62
62
+
gptfdisk
63
63
+
];
64
64
+
}
65
65
+
)
51
66
];
52
67
}