alpha
Login
or
Join now
seanaye.bsky.social
/
nixos-config
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
me like nix
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
Remove services replaced by Noctalia
author
Sean Aye
date
1 week ago
(Jun 16, 2026, 10:14 AM -0400)
commit
d84f28c6
d84f28c6e4e10b593d5099cb18199fb897f2ca39
parent
45d4c7ae
45d4c7ae93224fe1a6360e7f5ba9b81c9f231e4b
change-id
tpvvxlsk
tpvvxlskwpqmmknmqyulttovnrzvknny
+25
-501
8 changed files
Expand all
Collapse all
Unified
Split
flake.lock
flake.nix
hosts
common
waybar
config.jsonc
power_menu.xml
style.css
modules
desktop.nix
framework-laptop.nix
lenovo-ideapad5.nix
+4
-115
flake.lock
Reviewed
···
76
76
},
77
77
"crane": {
78
78
"locked": {
79
79
-
"lastModified": 1773857772,
80
80
-
"narHash": "sha256-5xsK26KRHf0WytBtsBnQYC/lTWDhQuT57HJ7SzuqZcM=",
81
81
-
"owner": "ipetkov",
82
82
-
"repo": "crane",
83
83
-
"rev": "b556d7bbae5ff86e378451511873dfd07e4504cd",
84
84
-
"type": "github"
85
85
-
},
86
86
-
"original": {
87
87
-
"owner": "ipetkov",
88
88
-
"repo": "crane",
89
89
-
"type": "github"
90
90
-
}
91
91
-
},
92
92
-
"crane_2": {
93
93
-
"locked": {
94
79
"lastModified": 1777242778,
95
80
"narHash": "sha256-VWTeqWeb8Sel/QiWyaPvCa9luAbcGawR+Rw09FJoHz0=",
96
81
"owner": "ipetkov",
···
152
137
"fenix_2": {
153
138
"inputs": {
154
139
"nixpkgs": [
155
155
-
"mako-tui",
156
156
-
"nixpkgs"
157
157
-
],
158
158
-
"rust-analyzer-src": "rust-analyzer-src_2"
159
159
-
},
160
160
-
"locked": {
161
161
-
"lastModified": 1773818109,
162
162
-
"narHash": "sha256-Wsk92HrZODmCgBb+v7XfTMUAIEhqU+Obwj+09IKRTpU=",
163
163
-
"owner": "nix-community",
164
164
-
"repo": "fenix",
165
165
-
"rev": "b8b443c5a1bd8dd99df899b4ac786a7f410193e5",
166
166
-
"type": "github"
167
167
-
},
168
168
-
"original": {
169
169
-
"owner": "nix-community",
170
170
-
"repo": "fenix",
171
171
-
"type": "github"
172
172
-
}
173
173
-
},
174
174
-
"fenix_3": {
175
175
-
"inputs": {
176
176
-
"nixpkgs": [
177
140
"trmnl-rs",
178
141
"nixpkgs"
179
142
],
180
180
-
"rust-analyzer-src": "rust-analyzer-src_3"
143
143
+
"rust-analyzer-src": "rust-analyzer-src_2"
181
144
},
182
145
"locked": {
183
146
"lastModified": 1777190237,
···
277
240
"type": "github"
278
241
}
279
242
},
280
280
-
"flake-utils_4": {
281
281
-
"inputs": {
282
282
-
"systems": "systems_4"
283
283
-
},
284
284
-
"locked": {
285
285
-
"lastModified": 1731533236,
286
286
-
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
287
287
-
"owner": "numtide",
288
288
-
"repo": "flake-utils",
289
289
-
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
290
290
-
"type": "github"
291
291
-
},
292
292
-
"original": {
293
293
-
"owner": "numtide",
294
294
-
"repo": "flake-utils",
295
295
-
"type": "github"
296
296
-
}
297
297
-
},
298
243
"fsel": {
299
244
"inputs": {
300
245
"flake-utils": "flake-utils_2",
···
395
340
"type": "github"
396
341
}
397
342
},
398
398
-
"mako-tui": {
399
399
-
"inputs": {
400
400
-
"crane": "crane",
401
401
-
"fenix": "fenix_2",
402
402
-
"flake-utils": "flake-utils_3",
403
403
-
"nixpkgs": [
404
404
-
"nixpkgs"
405
405
-
]
406
406
-
},
407
407
-
"locked": {
408
408
-
"lastModified": 1773925569,
409
409
-
"narHash": "sha256-YxBuMvOJcntRT7BSfDLK3tNr2NFhgOOm25aaUHf9ARY=",
410
410
-
"ref": "refs/heads/main",
411
411
-
"rev": "cc512df992b8acb92010c2257e6a65d9c3cb4ace",
412
412
-
"revCount": 4,
413
413
-
"type": "git",
414
414
-
"url": "https://codeberg.org/seanaye/mako-tui"
415
415
-
},
416
416
-
"original": {
417
417
-
"type": "git",
418
418
-
"url": "https://codeberg.org/seanaye/mako-tui"
419
419
-
}
420
420
-
},
421
343
"naersk": {
422
344
"inputs": {
423
345
"fenix": "fenix",
···
813
735
"fsel": "fsel",
814
736
"home-manager": "home-manager_2",
815
737
"import-tree": "import-tree",
816
816
-
"mako-tui": "mako-tui",
817
738
"niri": "niri",
818
739
"nixarr": "nixarr",
819
740
"nixos-hardware": "nixos-hardware",
···
844
765
}
845
766
},
846
767
"rust-analyzer-src_2": {
847
847
-
"flake": false,
848
848
-
"locked": {
849
849
-
"lastModified": 1773775226,
850
850
-
"narHash": "sha256-413aE+fhubk1GA2v4IlRrpdZZzW/b89wJGuDfZCVtEs=",
851
851
-
"owner": "rust-lang",
852
852
-
"repo": "rust-analyzer",
853
853
-
"rev": "4eac290b58a70961e78f2e0c04f61a08b995b2cb",
854
854
-
"type": "github"
855
855
-
},
856
856
-
"original": {
857
857
-
"owner": "rust-lang",
858
858
-
"ref": "nightly",
859
859
-
"repo": "rust-analyzer",
860
860
-
"type": "github"
861
861
-
}
862
862
-
},
863
863
-
"rust-analyzer-src_3": {
864
768
"flake": false,
865
769
"locked": {
866
770
"lastModified": 1776800521,
···
943
847
"type": "github"
944
848
}
945
849
},
946
946
-
"systems_4": {
947
947
-
"locked": {
948
948
-
"lastModified": 1681028828,
949
949
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
950
950
-
"owner": "nix-systems",
951
951
-
"repo": "default",
952
952
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
953
953
-
"type": "github"
954
954
-
},
955
955
-
"original": {
956
956
-
"owner": "nix-systems",
957
957
-
"repo": "default",
958
958
-
"type": "github"
959
959
-
}
960
960
-
},
961
850
"treefmt-nix": {
962
851
"inputs": {
963
852
"nixpkgs": [
···
981
870
},
982
871
"trmnl-rs": {
983
872
"inputs": {
984
984
-
"crane": "crane_2",
985
985
-
"fenix": "fenix_3",
986
986
-
"flake-utils": "flake-utils_4",
873
873
+
"crane": "crane",
874
874
+
"fenix": "fenix_2",
875
875
+
"flake-utils": "flake-utils_3",
987
876
"nixpkgs": [
988
877
"nixpkgs"
989
878
],
-4
flake.nix
Reviewed
···
50
50
url = "path:./berkeley-mono-stub";
51
51
inputs.nixpkgs.follows = "nixpkgs";
52
52
};
53
53
-
mako-tui = {
54
54
-
url = "git+https://codeberg.org/seanaye/mako-tui";
55
55
-
inputs.nixpkgs.follows = "nixpkgs";
56
56
-
};
57
53
opencodex = {
58
54
url = "git+https://codeberg.org/seanaye/opencodex";
59
55
inputs.nixpkgs.follows = "nixpkgs";
-205
hosts/common/waybar/config.jsonc
Reviewed
···
1
1
-
// -*- mode: jsonc -*-
2
2
-
{
3
3
-
// "layer": "top", // Waybar at top layer
4
4
-
// "position": "bottom", // Waybar position (top|bottom|left|right)
5
5
-
"height": 8, // Waybar height (to be removed for auto height)
6
6
-
// "width": 1280, // Waybar width
7
7
-
"spacing": 0, // Gaps between modules (4px)
8
8
-
// Choose the order of the modules
9
9
-
"modules-left": [
10
10
-
"custom/media"
11
11
-
],
12
12
-
"modules-right": [
13
13
-
"mpd",
14
14
-
// "idle_inhibitor",
15
15
-
"pulseaudio",
16
16
-
"network",
17
17
-
"power-profiles-daemon",
18
18
-
"cpu",
19
19
-
"memory",
20
20
-
"temperature",
21
21
-
"backlight",
22
22
-
// "keyboard-state",
23
23
-
"battery",
24
24
-
"battery#bat2",
25
25
-
"clock",
26
26
-
"custom/power"
27
27
-
],
28
28
-
// Modules configuration
29
29
-
"keyboard-state": {
30
30
-
"numlock": true,
31
31
-
"capslock": true,
32
32
-
"format": "{name} {icon}",
33
33
-
"format-icons": {
34
34
-
"locked": " ",
35
35
-
"unlocked": " "
36
36
-
}
37
37
-
},
38
38
-
"mpd": {
39
39
-
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
40
40
-
"format-disconnected": "Disconnected ",
41
41
-
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
42
42
-
"unknown-tag": "N/A",
43
43
-
"interval": 5,
44
44
-
"consume-icons": {
45
45
-
"on": " "
46
46
-
},
47
47
-
"random-icons": {
48
48
-
"off": "<span color=\"#f53c3c\"></span> ",
49
49
-
"on": " "
50
50
-
},
51
51
-
"repeat-icons": {
52
52
-
"on": " "
53
53
-
},
54
54
-
"single-icons": {
55
55
-
"on": "1 "
56
56
-
},
57
57
-
"state-icons": {
58
58
-
"paused": "",
59
59
-
"playing": ""
60
60
-
},
61
61
-
"tooltip-format": "MPD (connected)",
62
62
-
"tooltip-format-disconnected": "MPD (disconnected)"
63
63
-
},
64
64
-
"idle_inhibitor": {
65
65
-
"format": "{icon}",
66
66
-
"format-icons": {
67
67
-
"activated": " ",
68
68
-
"deactivated": " "
69
69
-
}
70
70
-
},
71
71
-
"tray": {
72
72
-
// "icon-size": 21,
73
73
-
"spacing": 10
74
74
-
},
75
75
-
"clock": {
76
76
-
// "timezone": "America/New_York",
77
77
-
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
78
78
-
"format-alt": "{:%Y-%m-%d}"
79
79
-
},
80
80
-
"cpu": {
81
81
-
"format": "{usage}% ",
82
82
-
"tooltip": false
83
83
-
},
84
84
-
"memory": {
85
85
-
"format": "{}% "
86
86
-
},
87
87
-
"temperature": {
88
88
-
// "thermal-zone": 2,
89
89
-
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
90
90
-
"critical-threshold": 80,
91
91
-
// "format-critical": "{temperatureC}°C {icon}",
92
92
-
"format": "{temperatureC}°C {icon}",
93
93
-
"format-icons": [
94
94
-
"",
95
95
-
"",
96
96
-
""
97
97
-
]
98
98
-
},
99
99
-
"backlight": {
100
100
-
// "device": "acpi_video1",
101
101
-
"format": "{percent}% {icon}",
102
102
-
"format-icons": [
103
103
-
"",
104
104
-
"",
105
105
-
"",
106
106
-
"",
107
107
-
"",
108
108
-
"",
109
109
-
"",
110
110
-
"",
111
111
-
""
112
112
-
]
113
113
-
},
114
114
-
"battery": {
115
115
-
"states": {
116
116
-
// "good": 95,
117
117
-
"warning": 30,
118
118
-
"critical": 15
119
119
-
},
120
120
-
"format": "{capacity}% {icon}",
121
121
-
"format-full": "{capacity}% {icon}",
122
122
-
"format-charging": "{capacity}% ",
123
123
-
"format-plugged": "{capacity}% ",
124
124
-
"format-alt": "{time} {icon}",
125
125
-
// "format-good": "", // An empty format will hide the module
126
126
-
// "format-full": "",
127
127
-
"format-icons": [
128
128
-
"",
129
129
-
"",
130
130
-
"",
131
131
-
"",
132
132
-
""
133
133
-
]
134
134
-
},
135
135
-
"battery#bat2": {
136
136
-
"bat": "BAT2"
137
137
-
},
138
138
-
"power-profiles-daemon": {
139
139
-
"format": "{icon}",
140
140
-
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
141
141
-
"tooltip": true,
142
142
-
"format-icons": {
143
143
-
"default": "",
144
144
-
"performance": "",
145
145
-
"balanced": " ",
146
146
-
"power-saver": " "
147
147
-
}
148
148
-
},
149
149
-
"network": {
150
150
-
// "interface": "wlp2*", // (Optional) To force the use of this interface
151
151
-
"format-wifi": "{essid} ({signalStrength}%) ",
152
152
-
"format-ethernet": "{ipaddr}/{cidr} ",
153
153
-
"tooltip-format": "{ifname} via {gwaddr} ",
154
154
-
"format-linked": "{ifname} (No IP) ",
155
155
-
"format-disconnected": "Disconnected ⚠",
156
156
-
"format-alt": "{ifname}: {ipaddr}/{cidr}"
157
157
-
},
158
158
-
"pulseaudio": {
159
159
-
// "scroll-step": 1, // %, can be a float
160
160
-
"format": "{volume}% {icon} {format_source}",
161
161
-
"format-bluetooth": "{volume}% {icon} {format_source}",
162
162
-
"format-bluetooth-muted": " {icon} {format_source}",
163
163
-
"format-muted": " {format_source}",
164
164
-
"format-source": "{volume}% ",
165
165
-
"format-source-muted": " ",
166
166
-
"format-icons": {
167
167
-
"headphone": "",
168
168
-
"hands-free": "",
169
169
-
"headset": "",
170
170
-
"phone": "",
171
171
-
"portable": "",
172
172
-
"car": "",
173
173
-
"default": [
174
174
-
"",
175
175
-
" ",
176
176
-
" "
177
177
-
]
178
178
-
},
179
179
-
"on-click": "pavucontrol"
180
180
-
},
181
181
-
"custom/media": {
182
182
-
"format": "{icon} {text}",
183
183
-
"return-type": "json",
184
184
-
"max-length": 40,
185
185
-
"format-icons": {
186
186
-
"spotify": " ",
187
187
-
"default": "🎜 "
188
188
-
},
189
189
-
"escape": true,
190
190
-
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
191
191
-
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
192
192
-
},
193
193
-
"custom/power": {
194
194
-
"format": "⏻ ",
195
195
-
"tooltip": false,
196
196
-
"menu": "on-click",
197
197
-
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
198
198
-
"menu-actions": {
199
199
-
"shutdown": "shutdown",
200
200
-
"reboot": "reboot",
201
201
-
"suspend": "systemctl suspend",
202
202
-
"hibernate": "systemctl hibernate"
203
203
-
}
204
204
-
}
205
205
-
}
-28
hosts/common/waybar/power_menu.xml
Reviewed
···
1
1
-
<?xml version="1.0" encoding="UTF-8"?>
2
2
-
<interface>
3
3
-
<object class="GtkMenu" id="menu">
4
4
-
<child>
5
5
-
<object class="GtkMenuItem" id="suspend">
6
6
-
<property name="label">Suspend</property>
7
7
-
</object>
8
8
-
</child>
9
9
-
<child>
10
10
-
<object class="GtkMenuItem" id="hibernate">
11
11
-
<property name="label">Hibernate</property>
12
12
-
</object>
13
13
-
</child>
14
14
-
<child>
15
15
-
<object class="GtkMenuItem" id="shutdown">
16
16
-
<property name="label">Shutdown</property>
17
17
-
</object>
18
18
-
</child>
19
19
-
<child>
20
20
-
<object class="GtkSeparatorMenuItem" id="delimiter1"/>
21
21
-
</child>
22
22
-
<child>
23
23
-
<object class="GtkMenuItem" id="reboot">
24
24
-
<property name="label">Reboot</property>
25
25
-
</object>
26
26
-
</child>
27
27
-
</object>
28
28
-
</interface>
-123
hosts/common/waybar/style.css
Reviewed
···
1
1
-
* {
2
2
-
font-family: "BerkeleyMono Nerd Font", "Font Awesome 7 Free", "Symbols Nerd Font", monospace;
3
3
-
font-size: 14px;
4
4
-
font-weight: normal;
5
5
-
min-height: 0;
6
6
-
}
7
7
-
8
8
-
#waybar {
9
9
-
background: transparent;
10
10
-
color: @text;
11
11
-
margin: 4px 4px;
12
12
-
}
13
13
-
14
14
-
#workspaces {
15
15
-
border-radius: 1rem;
16
16
-
margin: 4px;
17
17
-
background-color: @surface0;
18
18
-
margin-left: 1rem;
19
19
-
}
20
20
-
21
21
-
#workspaces button {
22
22
-
color: @lavender;
23
23
-
border-radius: 1rem;
24
24
-
padding: 0.4rem;
25
25
-
}
26
26
-
27
27
-
#workspaces button.active {
28
28
-
color: @sky;
29
29
-
border-radius: 1rem;
30
30
-
}
31
31
-
32
32
-
#workspaces button:hover {
33
33
-
color: @sapphire;
34
34
-
border-radius: 1rem;
35
35
-
}
36
36
-
37
37
-
#custom-music,
38
38
-
#tray,
39
39
-
#backlight,
40
40
-
#clock,
41
41
-
#battery,
42
42
-
#pulseaudio,
43
43
-
#network,
44
44
-
#power-profiles-daemon,
45
45
-
#cpu,
46
46
-
#memory,
47
47
-
#temperature,
48
48
-
#custom-lock,
49
49
-
#custom-power {
50
50
-
background-color: @surface0;
51
51
-
padding: 0.5rem 1rem;
52
52
-
margin: 4px 0;
53
53
-
}
54
54
-
55
55
-
#clock {
56
56
-
color: @blue;
57
57
-
border-radius: 0px 1rem 1rem 0px;
58
58
-
margin-right: 1rem;
59
59
-
}
60
60
-
61
61
-
#battery {
62
62
-
color: @green;
63
63
-
}
64
64
-
65
65
-
#battery.charging {
66
66
-
color: @green;
67
67
-
}
68
68
-
69
69
-
#battery.warning:not(.charging) {
70
70
-
color: @red;
71
71
-
}
72
72
-
73
73
-
#network {
74
74
-
color: @green;
75
75
-
}
76
76
-
77
77
-
#cpu {
78
78
-
color: @peach;
79
79
-
}
80
80
-
81
81
-
#memory {
82
82
-
color: @mauve;
83
83
-
}
84
84
-
85
85
-
#temperature {
86
86
-
color: @red;
87
87
-
}
88
88
-
89
89
-
#backlight {
90
90
-
color: @yellow;
91
91
-
}
92
92
-
93
93
-
#backlight,
94
94
-
#battery {
95
95
-
border-radius: 0;
96
96
-
}
97
97
-
98
98
-
#pulseaudio {
99
99
-
color: @maroon;
100
100
-
border-radius: 1rem 0px 0px 1rem;
101
101
-
margin-left: 1rem;
102
102
-
}
103
103
-
104
104
-
#custom-music {
105
105
-
color: @mauve;
106
106
-
border-radius: 1rem;
107
107
-
}
108
108
-
109
109
-
#custom-lock {
110
110
-
border-radius: 1rem 0px 0px 1rem;
111
111
-
color: @lavender;
112
112
-
}
113
113
-
114
114
-
#custom-power {
115
115
-
margin-right: 1rem;
116
116
-
border-radius: 0px 1rem 1rem 0px;
117
117
-
color: @red;
118
118
-
}
119
119
-
120
120
-
#tray {
121
121
-
margin-right: 1rem;
122
122
-
border-radius: 1rem;
123
123
-
}
+21
-21
modules/desktop.nix
Reviewed
···
89
89
home.packages = with pkgs; [
90
90
inputs.fsel.packages.${pkgs.stdenv.hostPlatform.system}.default
91
91
bemoji
92
92
-
networkmanager_dmenu
93
92
(import ../packages/cclip.nix { inherit pkgs; })
94
94
-
pavucontrol
95
95
-
playerctl
96
93
xwayland-satellite
97
94
];
98
95
···
244
241
"noctalia.service"
245
242
];
246
243
"XF86AudioPlay".action.spawn = [
247
247
-
"playerctl"
248
248
-
"play-pause"
244
244
+
"noctalia"
245
245
+
"msg"
246
246
+
"media"
247
247
+
"toggle"
249
248
];
250
249
"XF86AudioStop".action.spawn = [
251
251
-
"playerctl"
250
250
+
"noctalia"
251
251
+
"msg"
252
252
+
"media"
252
253
"stop"
253
254
];
254
255
"XF86AudioNext".action.spawn = [
255
255
-
"playerctl"
256
256
+
"noctalia"
257
257
+
"msg"
258
258
+
"media"
256
259
"next"
257
260
];
258
261
"XF86AudioPrev".action.spawn = [
259
259
-
"playerctl"
262
262
+
"noctalia"
263
263
+
"msg"
264
264
+
"media"
260
265
"previous"
261
266
];
262
267
"XF86AudioMute".action.spawn = [
···
277
282
"5%"
278
283
];
279
284
"XF86MonBrightnessDown".action.spawn = [
280
280
-
"brightnessctl"
281
281
-
"set"
282
282
-
"5%-"
285
285
+
"noctalia"
286
286
+
"msg"
287
287
+
"brightness-down"
288
288
+
"5%"
283
289
];
284
290
"XF86MonBrightnessUp".action.spawn = [
285
285
-
"brightnessctl"
286
286
-
"set"
287
287
-
"+5%"
291
291
+
"noctalia"
292
292
+
"msg"
293
293
+
"brightness-up"
294
294
+
"5%"
288
295
];
289
296
};
290
297
outputs = {
···
446
453
enable = true;
447
454
tray = "never";
448
455
automount = true;
449
449
-
};
450
450
-
451
451
-
dconf.settings = {
452
452
-
"org/gnome/desktop/interface" = {
453
453
-
color-scheme = "prefer-dark";
454
454
-
enable-hot-corners = false;
455
455
-
};
456
456
};
457
457
458
458
home.pointerCursor = {
-1
modules/framework-laptop.nix
Reviewed
···
28
28
'';
29
29
30
30
environment.systemPackages = with pkgs; [
31
31
-
brightnessctl
32
31
gdm
33
32
];
34
33
-4
modules/lenovo-ideapad5.nix
Reviewed
···
21
21
services.power-profiles-daemon.enable = true;
22
22
services.fstrim.enable = true;
23
23
24
24
-
environment.systemPackages = with pkgs; [
25
25
-
brightnessctl
26
26
-
];
27
27
-
28
24
# SSH
29
25
services.openssh = {
30
26
enable = true;