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
126 # --- FONTS ARE IMPORTANT ---
127 noto-fonts
128 noto-fonts-cjk-sans
129 noto-fonts-emoji
130 font-awesome # For icons in waybar, etc.
131 nerd-fonts.jetbrains-mono
132 # --- POLKIT AGENT (for 1Password GUI, etc.) ---
133 lxqt.lxqt-policykit # Lightweight polkit agent
134 ];
135
136 services.udiskie = {
137 enable = true;
138 tray = "auto";
139 automount = true;
140 };
141
142 programs.zen-browser.enable = true;
143 # programs.swww.enable = true;
144 programs.zoxide = {
145 enable = true;
146 enableFishIntegration = true;
147 };
148
149 # Program configurations
150 programs.git = {
151 enable = true;
152 userName = "seanaye";
153 userEmail = "hello@seanaye.ca";
154 extraConfig = {
155 init.defaultBranch = "main";
156 };
157 };
158 programs.jujutsu = {
159 enable = true;
160 settings.user = {
161 email = "hello@seanaye.ca";
162 name = "Sean Aye";
163 };
164 };
165
166 programs.home-manager.enable = true;
167
168 programs.fish = {
169 enable = true;
170 interactiveShellInit = ''
171 set fish_greeting
172 '';
173 };
174
175 programs.starship = {
176 enable = true;
177 enableFishIntegration = true;
178 };
179
180 programs.helix = {
181 enable = true;
182 settings = {
183 theme = "catppuccin_frappe";
184 editor = {
185 bufferline = "multiple";
186 file-picker = {
187 hidden = true;
188 git-ignore = false;
189 };
190 cursor-shape = {
191 insert = "bar";
192 normal = "block";
193 select = "underline";
194 };
195 line-number = "relative";
196 cursorline = true;
197 auto-format = true;
198 end-of-line-diagnostics = "hint";
199 soft-wrap = {
200 enable = true;
201 };
202 lsp = {
203 display-inlay-hints = true;
204 display-messages = true;
205 display-progress-messages = true;
206 };
207 inline-diagnostics = {
208 cursor-line = "hint";
209 };
210 };
211 keys = {
212 normal = {
213 esc = [
214 "keep_primary_selection"
215 "collapse_selection"
216 ];
217 };
218
219 };
220 };
221 languages = {
222 language = [
223 {
224 name = "nix";
225 auto-format = true;
226 formatter = {
227 command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
228 };
229 }
230 {
231 name = "rust";
232 auto-format = true;
233 formatter = {
234 command = "${pkgs.rustfmt}/bin/rustfmt --edition 2024";
235 };
236 indent = {
237 tab-width = 4;
238 unit = "t";
239 };
240 }
241 ];
242 };
243 };
244
245 # Session variables
246 home.sessionVariables = {
247 EDITOR = "hx";
248 VISUAL = "hx";
249 SUDO_EDITOR = "hx";
250 NIXOS_OZONE_WL = "1";
251 QT_QPA_PLATFORM = "wayland;xcb";
252 QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
253 SDL_VIDEODRIVER = "wayland";
254 XDG_CURRENT_DESKTOP = "Niri";
255 XDG_SESSION_TYPE = "wayland";
256 SSH_AUTH_SOCK = "~/.1password/agent.sock";
257 };
258
259 # Set the state version for Home Manager
260 home.stateVersion = "25.05";
261}