···
1
1
-
{ config, pkgs, inputs, ... }:
1
1
+
{
2
2
+
config,
3
3
+
pkgs,
4
4
+
inputs,
5
5
+
...
6
6
+
}:
2
7
3
8
{
4
4
-
imports =
5
5
-
[ # Include the results of the hardware scan.
6
6
-
./hardware-configuration.nix
7
7
-
];
9
9
+
imports = [
10
10
+
# Include the results of the hardware scan.
11
11
+
./hardware-configuration.nix
12
12
+
];
8
13
9
9
-
nix.settings.experimental-features = [ "nix-command" "flakes" ];
14
14
+
nix.settings.experimental-features = [
15
15
+
"nix-command"
16
16
+
"flakes"
17
17
+
];
10
18
11
19
# Bootloader.
12
20
boot.loader.systemd-boot.enable = true;
···
44
52
};
45
53
46
54
programs.niri = {
47
47
-
enable = true;
48
48
-
package = pkgs.niri;
55
55
+
enable = true;
56
56
+
package = pkgs.niri;
49
57
};
50
58
51
59
services.greetd = {
···
60
68
61
69
xdg.portal = {
62
70
enable = true;
63
63
-
71
71
+
64
72
# Specify the backends you want to use.
65
73
# The order matters, the first one is the primary.
66
74
extraPortals = with pkgs; [
···
70
78
# Set the default portal for common interfaces.
71
79
# "wlr" is for wlroots-based compositors like niri.
72
80
# "gtk" is a fallback for file pickers and other things.
73
73
-
config.common.default = [ "wlr" "gtk" ];
81
81
+
config.common.default = [
82
82
+
"wlr"
83
83
+
"gtk"
84
84
+
];
74
85
};
75
75
-
86
86
+
76
87
# Enable CUPS to print documents.
77
88
services.printing.enable = true;
78
89
79
90
# Enable sound with pipewire.
80
91
services.pulseaudio.enable = false;
92
92
+
security.polkit.enable = true;
81
93
security.rtkit.enable = true;
82
94
services.pipewire = {
83
95
enable = true;
···
92
104
#media-session.enable = true;
93
105
};
94
106
95
95
-
96
96
-
97
97
-
# Enable touchpad support (enabled default in most desktopManager).
98
98
-
# services.xserver.libinput.enable = true;
107
107
+
services.udisks2.enable = true;
99
108
100
109
# Define a user account. Don't forget to set a password with ‘passwd’.
101
110
users.users.sean = {
102
111
isNormalUser = true;
103
112
description = "Sean Aye";
104
104
-
extraGroups = [ "networkmanager" "wheel" "video" ];
113
113
+
extraGroups = [
114
114
+
"networkmanager"
115
115
+
"wheel"
116
116
+
"video"
117
117
+
"disk"
118
118
+
"storage"
119
119
+
];
105
120
shell = pkgs.fish;
106
121
};
107
122
···
109
124
programs._1password.enable = true;
110
125
programs._1password-gui = {
111
126
enable = true;
112
112
-
polkitPolicyOwners = ["sean"];
127
127
+
polkitPolicyOwners = [ "sean" ];
113
128
};
114
129
115
130
programs.steam = {
···
130
145
VISUAL = "hx";
131
146
SUDO_EDITOR = "hx";
132
147
};
133
133
-
134
148
135
149
# List services that you want to enable:
136
150
nixarr = {
···
222
236
# services.openssh.enable = true;
223
237
224
238
# Open ports in the firewall.
225
225
-
networking.firewall.allowedTCPPorts = [ 8096 5055 ];
226
226
-
networking.firewall.allowedUDPPorts = [ 8096 5055 ];
239
239
+
networking.firewall.allowedTCPPorts = [
240
240
+
8096
241
241
+
5055
242
242
+
];
243
243
+
networking.firewall.allowedUDPPorts = [
244
244
+
8096
245
245
+
5055
246
246
+
];
227
247
# Or disable the firewall altogether.
228
248
# networking.firewall.enable = false;
229
249
···
39
39
"type": "github"
40
40
}
41
41
},
42
42
+
"home-manager_2": {
43
43
+
"inputs": {
44
44
+
"nixpkgs": [
45
45
+
"zen-browser",
46
46
+
"nixpkgs"
47
47
+
]
48
48
+
},
49
49
+
"locked": {
50
50
+
"lastModified": 1743604125,
51
51
+
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=",
52
52
+
"owner": "nix-community",
53
53
+
"repo": "home-manager",
54
54
+
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a",
55
55
+
"type": "github"
56
56
+
},
57
57
+
"original": {
58
58
+
"owner": "nix-community",
59
59
+
"repo": "home-manager",
60
60
+
"type": "github"
61
61
+
}
62
62
+
},
42
63
"niri": {
43
64
"inputs": {
44
65
"niri-stable": "niri-stable",
···
201
222
"home-manager": "home-manager",
202
223
"niri": "niri",
203
224
"nixarr": "nixarr",
204
204
-
"nixpkgs": "nixpkgs_4"
225
225
+
"nixpkgs": "nixpkgs_4",
226
226
+
"zen-browser": "zen-browser"
205
227
}
206
228
},
207
229
"vpnconfinement": {
···
270
292
"original": {
271
293
"owner": "Supreeeme",
272
294
"repo": "xwayland-satellite",
295
295
+
"type": "github"
296
296
+
}
297
297
+
},
298
298
+
"zen-browser": {
299
299
+
"inputs": {
300
300
+
"home-manager": "home-manager_2",
301
301
+
"nixpkgs": [
302
302
+
"nixpkgs"
303
303
+
]
304
304
+
},
305
305
+
"locked": {
306
306
+
"lastModified": 1751858709,
307
307
+
"narHash": "sha256-xghd1GDPRSa6aD6tEk2JCuQDZWdHITlCA/stwSVoZJQ=",
308
308
+
"owner": "0xc000022070",
309
309
+
"repo": "zen-browser-flake",
310
310
+
"rev": "216dd333fa41aa013bf8aab9322d7c1a2aee5b4a",
311
311
+
"type": "github"
312
312
+
},
313
313
+
"original": {
314
314
+
"owner": "0xc000022070",
315
315
+
"repo": "zen-browser-flake",
273
316
"type": "github"
274
317
}
275
318
}
···
3
3
4
4
inputs = {
5
5
# Nixpkgs (stable or unstable)
6
6
-
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; # Or "nixos-24.05" for stable
6
6
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
7
7
8
8
# Home Manager
9
9
home-manager = {
10
10
url = "github:nix-community/home-manager/release-25.05";
11
11
inputs.nixpkgs.follows = "nixpkgs"; # Ensures Home Manager uses the same nixpkgs
12
12
};
13
13
-
14
13
catppuccin.url = "github:catppuccin/nix";
15
15
-
16
14
niri.url = "github:sodiboo/niri-flake";
17
17
-
18
18
-
# media server things
19
15
nixarr.url = "github:rasmus-kirk/nixarr";
16
16
+
zen-browser = {
17
17
+
url = "github:0xc000022070/zen-browser-flake";
18
18
+
inputs.nixpkgs.follows = "nixpkgs";
19
19
+
};
20
20
};
21
21
22
22
-
outputs = { self, nixpkgs, home-manager, catppuccin, niri, nixarr, ... }@inputs: {
23
23
-
nixosConfigurations = {
24
24
-
# Replace "nixos" with your actual desired hostname if it's different
25
25
-
# This "nixos" must match the `networking.hostName` in your configuration.nix
26
26
-
nixos = nixpkgs.lib.nixosSystem {
27
27
-
system = "x86_64-linux"; # Or your system's architecture
28
28
-
specialArgs = { inherit inputs; }; # Pass inputs to your modules
29
29
-
modules = [
30
30
-
# Your main configuration file
31
31
-
./configuration.nix
22
22
+
outputs =
23
23
+
{
24
24
+
self,
25
25
+
nixpkgs,
26
26
+
home-manager,
27
27
+
catppuccin,
28
28
+
niri,
29
29
+
nixarr,
30
30
+
...
31
31
+
}@inputs:
32
32
+
{
33
33
+
nixosConfigurations = {
34
34
+
# Replace "nixos" with your actual desired hostname if it's different
35
35
+
# This "nixos" must match the `networking.hostName` in your configuration.nix
36
36
+
nixos = nixpkgs.lib.nixosSystem {
37
37
+
system = "x86_64-linux"; # Or your system's architecture
38
38
+
specialArgs = { inherit inputs; }; # Pass inputs to your modules
39
39
+
modules = [
40
40
+
# Your main configuration file
41
41
+
./configuration.nix
32
42
33
33
-
({
34
34
-
nixpkgs.overlays = [ niri.overlays.niri ];
35
35
-
})
43
43
+
({
44
44
+
nixpkgs.overlays = [ niri.overlays.niri ];
45
45
+
})
36
46
37
37
-
# nixarr module
38
38
-
nixarr.nixosModules.default
47
47
+
# nixarr module
48
48
+
nixarr.nixosModules.default
39
49
40
40
-
# Home Manager module
41
41
-
home-manager.nixosModules.home-manager {
42
42
-
home-manager.extraSpecialArgs = { inherit inputs; };
43
43
-
home-manager.users.sean = import ./home.nix;
44
44
-
}
45
45
-
];
50
50
+
# Home Manager module
51
51
+
home-manager.nixosModules.home-manager
52
52
+
{
53
53
+
home-manager.extraSpecialArgs = { inherit inputs; };
54
54
+
home-manager.users.sean = import ./home.nix;
55
55
+
}
56
56
+
];
57
57
+
};
46
58
};
47
59
};
48
48
-
};
49
60
}
···
6
6
imports = [
7
7
inputs.catppuccin.homeModules.catppuccin
8
8
inputs.niri.homeModules.niri
9
9
+
inputs.zen-browser.homeModules.beta
9
10
];
10
11
11
12
# Niri window manager settings, now controlled by the imported module
···
86
87
87
88
# All your user-specific packages
88
89
home.packages = with pkgs; [
89
89
-
atool
90
90
-
httpie
91
90
helix
92
91
git
93
92
jujutsu
···
98
97
wofi # Application launcher (or pkgs.rofi-wayland)
99
98
waybar # Status bar (highly recommended)
100
99
mako # Notification daemon
101
101
-
swaybg # For setting wallpapers (or pkgs.hyprpaper, pkgs.swww)
100
100
+
swww # For setting wallpapers
102
101
cliphist # Clipboard history manager
103
102
slurp # For selecting a region for screenshots
104
103
grim # For taking screenshots
···
106
105
fd
107
106
ripgrep
108
107
yazi
109
109
-
firefox
110
108
gh
111
109
signal-desktop
112
112
-
xwayland-satellite
113
113
-
nixfmt-rfc-style
114
114
-
nil
110
110
+
xwayland-satellite # for running x11 apps
111
111
+
nixfmt-rfc-style # nix formatter
112
112
+
nil # nix language server
113
113
+
atac # postman-like TUI
114
114
+
rsync # file sync utility
115
115
116
116
# --- FONTS ARE IMPORTANT ---
117
117
noto-fonts
···
123
123
lxqt.lxqt-policykit # Lightweight polkit agent
124
124
];
125
125
126
126
+
services.udiskie = {
127
127
+
enable = true;
128
128
+
tray = "auto";
129
129
+
automount = true;
130
130
+
};
131
131
+
132
132
+
programs.zen-browser.enable = true;
133
133
+
# programs.swww.enable = true;
134
134
+
126
135
# Program configurations
127
136
programs.git = {
128
137
enable = true;
···
156
165
157
166
programs.helix = {
158
167
enable = true;
168
168
+
settings = {
169
169
+
theme = "catppuccin_frappe";
170
170
+
editor = {
171
171
+
bufferline = "multiple";
172
172
+
file-picker = {
173
173
+
hidden = true;
174
174
+
git-ignore = false;
175
175
+
};
176
176
+
cursor-shape = {
177
177
+
insert = "bar";
178
178
+
normal = "block";
179
179
+
select = "underline";
180
180
+
};
181
181
+
line-number = "relative";
182
182
+
cursorline = true;
183
183
+
auto-format = true;
184
184
+
end-of-line-diagnostics = "hint";
185
185
+
soft-wrap = {
186
186
+
enable = true;
187
187
+
};
188
188
+
lsp = {
189
189
+
display-inlay-hints = true;
190
190
+
display-messages = true;
191
191
+
display-progress-messages = true;
192
192
+
};
193
193
+
inline-diagnostics = {
194
194
+
cursor-line = "hint";
195
195
+
};
196
196
+
};
197
197
+
keys = {
198
198
+
normal = {
199
199
+
esc = [
200
200
+
"keep_primary_selection"
201
201
+
"collapse_selection"
202
202
+
];
203
203
+
};
204
204
+
205
205
+
};
206
206
+
};
159
207
languages = {
160
208
language = [
161
209
{
···
163
211
auto-format = true;
164
212
formatter = {
165
213
command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
214
214
+
};
215
215
+
}
216
216
+
{
217
217
+
name = "rust";
218
218
+
auto-format = true;
219
219
+
formatter = {
220
220
+
command = "${pkgs.rustfmt}/bin/rustfmt --edition 2024";
221
221
+
};
222
222
+
indent = {
223
223
+
tab-width = 4;
224
224
+
unit = "t";
166
225
};
167
226
}
168
227
];