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 ];
10
11 # Niri window manager settings, now controlled by the imported module
12 programs.niri = {
13 enable = true;
14 settings = {
15 binds = {
16 "Mod+d".action.spawn = [
17 "wofi"
18 "--show"
19 "drun"
20 "--prompt"
21 "Search..."
22 ];
23 "Mod+a".action.spawn = "alacritty";
24 "Mod+h".action = {
25 focus-column-left = { };
26 };
27 "Mod+j".action = {
28 focus-workspace-down = { };
29 };
30 "Mod+k".action = {
31 focus-workspace-up = { };
32 };
33 "Mod+l".action = {
34 focus-column-right = { };
35 };
36 "Mod+p".action = {
37 show-hotkey-overlay = { };
38 };
39 "Mod+o".action = {
40 toggle-overview = { };
41 };
42 "Mod+q".action = {
43 close-window = { };
44 };
45 "Mod+s".action = {
46 screenshot = {
47 show-pointer = true;
48 };
49 };
50 };
51 outputs = {
52 "DP-1" = {
53 scale = 2.0;
54 };
55 };
56 spawn-at-startup = [
57 { command = [ "xwayland-satellite" ]; }
58 { command = [ "mako" ]; }
59 { command = [ "waybar" ]; }
60 { command = [ "/usr/bin/lxqt-policykit-agent" ]; }
61 { command = [ "wl-paste --watch cliphist store" ]; }
62 ];
63 environment = {
64 DISPLAY = ":0";
65 };
66 };
67 };
68
69 programs.waybar = {
70 enable = true;
71 };
72
73 # Catppuccin theme for Waybar
74 catppuccin.waybar = {
75 enable = true;
76 flavor = "mocha";
77 };
78
79 programs.ssh = {
80 enable = true;
81 extraConfig = ''
82 Host *
83 IdentityAgent ~/.1password/agent.sock
84 '';
85 };
86
87 # All your user-specific packages
88 home.packages = with pkgs; [
89 atool
90 httpie
91 helix
92 git
93 jujutsu
94 htop
95 zellij # terminal multiplexer
96 # --- ESSENTIAL HYPRLAND ECOSYSTEM TOOLS ---
97 alacritty
98 wofi # Application launcher (or pkgs.rofi-wayland)
99 waybar # Status bar (highly recommended)
100 mako # Notification daemon
101 swaybg # For setting wallpapers (or pkgs.hyprpaper, pkgs.swww)
102 cliphist # Clipboard history manager
103 slurp # For selecting a region for screenshots
104 grim # For taking screenshots
105 pavucontrol # GUI for PulseAudio/PipeWire volume control
106 fd
107 ripgrep
108 yazi
109 firefox
110 gh
111 signal-desktop
112 xwayland-satellite
113 nixfmt-rfc-style
114 nil
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 # Program configurations
127 programs.git = {
128 enable = true;
129 userName = "seanaye";
130 userEmail = "hello@seanaye.ca";
131 extraConfig = {
132 init.defaultBranch = "main";
133 };
134 };
135 programs.jujutsu = {
136 enable = true;
137 settings.user = {
138 email = "hello@seanaye.ca";
139 name = "Sean Aye";
140 };
141 };
142
143 programs.home-manager.enable = true;
144
145 programs.fish = {
146 enable = true;
147 interactiveShellInit = ''
148 set fish_greeting
149 '';
150 };
151
152 programs.starship = {
153 enable = true;
154 enableFishIntegration = true;
155 };
156
157 programs.helix = {
158 enable = true;
159 languages = {
160 language = [
161 {
162 name = "nix";
163 auto-format = true;
164 formatter = {
165 command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
166 };
167 }
168 ];
169 };
170 };
171
172 # Session variables
173 home.sessionVariables = {
174 EDITOR = "hx";
175 VISUAL = "hx";
176 SUDO_EDITOR = "hx";
177 NIXOS_OZONE_WL = "1";
178 QT_QPA_PLATFORM = "wayland;xcb";
179 QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
180 SDL_VIDEODRIVER = "wayland";
181 XDG_CURRENT_DESKTOP = "Niri";
182 XDG_SESSION_TYPE = "wayland";
183 SSH_AUTH_SOCK = "~/.1password/agent.sock";
184 };
185
186 # Set the state version for Home Manager
187 home.stateVersion = "25.05";
188}