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 };
52 outputs = {
53 "DP-1" = {
54 scale = 2.0;
55 };
56 };
57 spawn-at-startup = [
58 { command = [ "xwayland-satellite" ]; }
59 { command = [ "mako" ]; }
60 { command = [ "waybar" ]; }
61 { command = [ "/usr/bin/lxqt-policykit-agent" ]; }
62 { command = [ "wl-paste --watch cliphist store" ]; }
63 ];
64 environment = {
65 DISPLAY = ":0";
66 };
67 };
68 };
69
70 programs.waybar = {
71 enable = true;
72 };
73
74 # Catppuccin theme for Waybar
75 catppuccin.waybar = {
76 enable = true;
77 flavor = "mocha";
78 };
79
80 programs.ssh = {
81 enable = true;
82 extraConfig = ''
83 Host *
84 IdentityAgent ~/.1password/agent.sock
85 '';
86 };
87
88 # All your user-specific packages
89 home.packages = with pkgs; [
90 helix
91 git
92 jujutsu
93 htop
94 zellij # terminal multiplexer
95 # --- ESSENTIAL HYPRLAND ECOSYSTEM TOOLS ---
96 alacritty
97 wofi # Application launcher (or pkgs.rofi-wayland)
98 waybar # Status bar (highly recommended)
99 mako # Notification daemon
100 swww # For setting wallpapers
101 cliphist # Clipboard history manager
102 slurp # For selecting a region for screenshots
103 grim # For taking screenshots
104 pavucontrol # GUI for PulseAudio/PipeWire volume control
105 fd
106 ripgrep
107 yazi
108 gh
109 signal-desktop
110 xwayland-satellite # for running x11 apps
111 nixfmt-rfc-style # nix formatter
112 nil # nix language server
113 atac # postman-like TUI
114 rsync # file sync utility
115
116 # --- FONTS ARE IMPORTANT ---
117 noto-fonts
118 noto-fonts-cjk-sans
119 noto-fonts-emoji
120 font-awesome # For icons in waybar, etc.
121 nerd-fonts.jetbrains-mono
122 # --- POLKIT AGENT (for 1Password GUI, etc.) ---
123 lxqt.lxqt-policykit # Lightweight polkit agent
124 ];
125
126 services.udiskie = {
127 enable = true;
128 tray = "auto";
129 automount = true;
130 };
131
132 programs.zen-browser.enable = true;
133 # programs.swww.enable = true;
134
135 # Program configurations
136 programs.git = {
137 enable = true;
138 userName = "seanaye";
139 userEmail = "hello@seanaye.ca";
140 extraConfig = {
141 init.defaultBranch = "main";
142 };
143 };
144 programs.jujutsu = {
145 enable = true;
146 settings.user = {
147 email = "hello@seanaye.ca";
148 name = "Sean Aye";
149 };
150 };
151
152 programs.home-manager.enable = true;
153
154 programs.fish = {
155 enable = true;
156 interactiveShellInit = ''
157 set fish_greeting
158 '';
159 };
160
161 programs.starship = {
162 enable = true;
163 enableFishIntegration = true;
164 };
165
166 programs.helix = {
167 enable = true;
168 settings = {
169 theme = "catppuccin_frappe";
170 editor = {
171 bufferline = "multiple";
172 file-picker = {
173 hidden = true;
174 git-ignore = false;
175 };
176 cursor-shape = {
177 insert = "bar";
178 normal = "block";
179 select = "underline";
180 };
181 line-number = "relative";
182 cursorline = true;
183 auto-format = true;
184 end-of-line-diagnostics = "hint";
185 soft-wrap = {
186 enable = true;
187 };
188 lsp = {
189 display-inlay-hints = true;
190 display-messages = true;
191 display-progress-messages = true;
192 };
193 inline-diagnostics = {
194 cursor-line = "hint";
195 };
196 };
197 keys = {
198 normal = {
199 esc = [
200 "keep_primary_selection"
201 "collapse_selection"
202 ];
203 };
204
205 };
206 };
207 languages = {
208 language = [
209 {
210 name = "nix";
211 auto-format = true;
212 formatter = {
213 command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
214 };
215 }
216 {
217 name = "rust";
218 auto-format = true;
219 formatter = {
220 command = "${pkgs.rustfmt}/bin/rustfmt --edition 2024";
221 };
222 indent = {
223 tab-width = 4;
224 unit = "t";
225 };
226 }
227 ];
228 };
229 };
230
231 # Session variables
232 home.sessionVariables = {
233 EDITOR = "hx";
234 VISUAL = "hx";
235 SUDO_EDITOR = "hx";
236 NIXOS_OZONE_WL = "1";
237 QT_QPA_PLATFORM = "wayland;xcb";
238 QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
239 SDL_VIDEODRIVER = "wayland";
240 XDG_CURRENT_DESKTOP = "Niri";
241 XDG_SESSION_TYPE = "wayland";
242 SSH_AUTH_SOCK = "~/.1password/agent.sock";
243 };
244
245 # Set the state version for Home Manager
246 home.stateVersion = "25.05";
247}