me like nix
1# This is the configuration for your user 'sean'
2{ pkgs, inputs, ... }:
3
4{
5 # Import the home-manager modules you want to use
6 imports = [
7 inputs.catppuccin.homeModules.catppuccin
8 inputs.niri.homeModules.niri
9 inputs.zen-browser.homeModules.beta
10 ];
11
12 # Niri window manager settings, now controlled by the imported module
13 programs.niri = {
14 enable = true;
15 settings = {
16 binds = {
17 "Mod+d".action.spawn = [
18 "wofi"
19 "--show"
20 "drun"
21 "--prompt"
22 "Search..."
23 ];
24 "Mod+a".action.spawn = "alacritty";
25 "Mod+h".action = {
26 focus-column-left = { };
27 };
28 "Mod+j".action = {
29 focus-workspace-down = { };
30 };
31 "Mod+k".action = {
32 focus-workspace-up = { };
33 };
34 "Mod+l".action = {
35 focus-column-right = { };
36 };
37 "Mod+p".action = {
38 show-hotkey-overlay = { };
39 };
40 "Mod+o".action = {
41 toggle-overview = { };
42 };
43 "Mod+q".action = {
44 close-window = { };
45 };
46 "Mod+s".action = {
47 screenshot = {
48 show-pointer = true;
49 };
50 };
51 "Mod+1".action = {
52 set-column-width = "100%";
53 };
54 "Mod+2".action = {
55 set-column-width = "50%";
56 };
57 };
58 outputs = {
59 "DP-1" = {
60 scale = 2.0;
61 };
62 };
63 spawn-at-startup = [
64 { command = [ "xwayland-satellite" ]; }
65 { command = [ "swww-daemon" ]; }
66 { command = [ "mako" ]; }
67 { command = [ "waybar" ]; }
68 { command = [ "/usr/bin/lxqt-policykit-agent" ]; }
69 { command = [ "wl-paste --watch cliphist store" ]; }
70 ];
71 environment = {
72 DISPLAY = ":0";
73 };
74 };
75 };
76
77 programs.waybar = {
78 enable = true;
79 };
80
81 # Catppuccin theme for Waybar
82 catppuccin.waybar = {
83 enable = true;
84 flavor = "mocha";
85 };
86
87 programs.ssh = {
88 enable = true;
89 extraConfig = ''
90 Host *
91 IdentityAgent ~/.1password/agent.sock
92 '';
93 };
94
95 # All your user-specific packages
96 home.packages = with pkgs; [
97 helix
98 git
99 jujutsu
100 htop
101 zellij # terminal multiplexer
102 # --- ESSENTIAL HYPRLAND ECOSYSTEM TOOLS ---
103 alacritty
104 wofi # Application launcher (or pkgs.rofi-wayland)
105 waybar # Status bar (highly recommended)
106 mako # Notification daemon
107 swww # For setting wallpapers
108 cliphist # Clipboard history manager
109 slurp # For selecting a region for screenshots
110 grim # For taking screenshots
111 pavucontrol # GUI for PulseAudio/PipeWire volume control
112 fd
113 ripgrep
114 yazi
115 gh
116 signal-desktop
117 xwayland-satellite # for running x11 apps
118 nixfmt-rfc-style # nix formatter
119 nil # nix language server
120 atac # postman-like TUI
121 rsync # file sync utility
122 udiskie # for mounting external drives
123 darktable # photo editing
124 zoxide
125 chromium
126
127 # --- FONTS ARE IMPORTANT ---
128 noto-fonts
129 noto-fonts-cjk-sans
130 noto-fonts-emoji
131 font-awesome # For icons in waybar, etc.
132 nerd-fonts.jetbrains-mono
133 # --- POLKIT AGENT (for 1Password GUI, etc.) ---
134 lxqt.lxqt-policykit # Lightweight polkit agent
135 ];
136
137 services.udiskie = {
138 enable = true;
139 tray = "auto";
140 automount = true;
141 };
142
143 programs.zen-browser.enable = true;
144 # programs.swww.enable = true;
145 programs.zoxide = {
146 enable = true;
147 enableFishIntegration = true;
148 };
149
150 # Program configurations
151 programs.git = {
152 enable = true;
153 userName = "seanaye";
154 userEmail = "hello@seanaye.ca";
155 extraConfig = {
156 init.defaultBranch = "main";
157 };
158 };
159 programs.jujutsu = {
160 enable = true;
161 settings.user = {
162 email = "hello@seanaye.ca";
163 name = "Sean Aye";
164 };
165 };
166
167 programs.home-manager.enable = true;
168
169 programs.fish = {
170 enable = true;
171 interactiveShellInit = ''
172 set fish_greeting
173 '';
174 };
175
176 programs.starship = {
177 enable = true;
178 enableFishIntegration = true;
179 };
180
181 programs.alacritty = {
182 enable = true;
183 settings = {
184 window = {
185 decorations = "none";
186 };
187 };
188
189 };
190
191 programs.helix = {
192 enable = true;
193 settings = {
194 theme = "catppuccin_frappe";
195 editor = {
196 bufferline = "multiple";
197 file-picker = {
198 hidden = true;
199 git-ignore = false;
200 };
201 cursor-shape = {
202 insert = "bar";
203 normal = "block";
204 select = "underline";
205 };
206 line-number = "relative";
207 cursorline = true;
208 auto-format = true;
209 end-of-line-diagnostics = "hint";
210 soft-wrap = {
211 enable = true;
212 };
213 lsp = {
214 display-inlay-hints = true;
215 display-messages = true;
216 display-progress-messages = true;
217 };
218 inline-diagnostics = {
219 cursor-line = "hint";
220 };
221 };
222 keys = {
223 normal = {
224 esc = [
225 "keep_primary_selection"
226 "collapse_selection"
227 ];
228 };
229
230 };
231 };
232 languages = {
233 language = [
234 {
235 name = "nix";
236 auto-format = true;
237 formatter = {
238 command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
239 };
240 }
241 {
242 name = "rust";
243 auto-format = true;
244 formatter = {
245 command = "${pkgs.rustfmt}/bin/rustfmt --edition 2024";
246 };
247 indent = {
248 tab-width = 4;
249 unit = "t";
250 };
251 }
252 ];
253 };
254 };
255
256 # Session variables
257 home.sessionVariables = {
258 EDITOR = "hx";
259 VISUAL = "hx";
260 SUDO_EDITOR = "hx";
261 NIXOS_OZONE_WL = "1";
262 QT_QPA_PLATFORM = "wayland;xcb";
263 QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
264 SDL_VIDEODRIVER = "wayland";
265 XDG_CURRENT_DESKTOP = "Niri";
266 XDG_SESSION_TYPE = "wayland";
267 SSH_AUTH_SOCK = "~/.1password/agent.sock";
268 };
269
270 # Set the state version for Home Manager
271 home.stateVersion = "25.05";
272}