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 # All your user-specific packages
80 home.packages = with pkgs; [
81 atool
82 httpie
83 helix
84 git
85 jujutsu
86 htop
87 zellij # terminal multiplexer
88 # --- ESSENTIAL HYPRLAND ECOSYSTEM TOOLS ---
89 alacritty
90 wofi # Application launcher (or pkgs.rofi-wayland)
91 waybar # Status bar (highly recommended)
92 mako # Notification daemon
93 swaybg # For setting wallpapers (or pkgs.hyprpaper, pkgs.swww)
94 cliphist # Clipboard history manager
95 slurp # For selecting a region for screenshots
96 grim # For taking screenshots
97 pavucontrol # GUI for PulseAudio/PipeWire volume control
98 fd
99 ripgrep
100 yazi
101 firefox
102 gh
103 signal-desktop
104 xwayland-satellite
105 nixfmt-rfc-style
106 nil
107
108 # --- FONTS ARE IMPORTANT ---
109 noto-fonts
110 noto-fonts-cjk-sans
111 noto-fonts-emoji
112 font-awesome # For icons in waybar, etc.
113 nerd-fonts.jetbrains-mono
114 # --- POLKIT AGENT (for 1Password GUI, etc.) ---
115 lxqt.lxqt-policykit # Lightweight polkit agent
116 ];
117
118 # Program configurations
119 programs.git = {
120 enable = true;
121 userName = "seanaye";
122 userEmail = "hello@seanaye.ca";
123 extraConfig = {
124 init.defaultBranch = "main";
125 };
126 };
127 programs.jujutsu = {
128 enable = true;
129 settings.user = {
130 email = "hello@seanaye.ca";
131 name = "Sean Aye";
132 };
133 };
134
135 programs.home-manager.enable = true;
136
137 programs.fish = {
138 enable = true;
139 interactiveShellInit = ''
140 set fish_greeting
141 '';
142 };
143
144 programs.starship = {
145 enable = true;
146 enableFishIntegration = true;
147 };
148
149 programs.helix = {
150 enable = true;
151 languages = {
152 language = [
153 {
154 name = "nix";
155 auto-format = true;
156 formatter = {
157 command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
158 };
159 }
160 ];
161 };
162 };
163
164 # Session variables
165 home.sessionVariables = {
166 EDITOR = "hx";
167 VISUAL = "hx";
168 SUDO_EDITOR = "hx";
169 NIXOS_OZONE_WL = "1";
170 QT_QPA_PLATFORM = "wayland;xcb";
171 QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
172 SDL_VIDEODRIVER = "wayland";
173 XDG_CURRENT_DESKTOP = "Niri";
174 XDG_SESSION_TYPE = "wayland";
175 };
176
177 # Set the state version for Home Manager
178 home.stateVersion = "25.05";
179}