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