me like nix
1{ inputs, ... }:
2
3{
4 flake.modules.homeManager.noctalia =
5 { pkgs, config, ... }:
6 let
7 niriPackage = inputs.niri.packages.${pkgs.stdenv.hostPlatform.system}.niri-unstable;
8 in
9 {
10 imports = [ inputs.noctalia.homeModules.default ];
11
12 programs.noctalia = {
13 enable = true;
14 systemd.enable = true;
15 settings = {
16 bar.default = {
17 auto_hide = true;
18 center = [
19 "clock"
20 "weather"
21 ];
22 end = [
23 "media"
24 "notifications"
25 "clipboard"
26 "network"
27 "bluetooth"
28 "volume"
29 "battery"
30 "control-center"
31 "tray"
32 "session"
33 ];
34 margin_edge = 0;
35 reserve_space = false;
36 start = [
37 "wallpaper"
38 "workspaces"
39 ];
40 widget_spacing = 12;
41 };
42
43 location.auto_locate = true;
44
45 lockscreen = {
46 allow_empty_password = true;
47 blurred_desktop = true;
48 };
49
50 lockscreen_widgets = {
51 enabled = true;
52 schema_version = 2;
53 widget_order = [
54 "lockscreen-login-box@DP-7"
55 "lockscreen-login-box@eDP-1"
56 "lockscreen-widget-0000000000000001"
57 "lockscreen-widget-0000000000000002"
58 ];
59 grid = {
60 cell_size = 16;
61 major_interval = 4;
62 visible = true;
63 };
64 widget = {
65 "lockscreen-login-box@DP-7" = {
66 box_height = 0.0;
67 box_width = 0.0;
68 cx = 1280.0;
69 cy = 957.0;
70 output = "DP-7";
71 rotation = 0.0;
72 type = "login_box";
73 settings = {
74 background_color = "surface_variant";
75 background_opacity = 0.88;
76 background_radius = 12.0;
77 input_opacity = 1.0;
78 input_radius = 6.0;
79 show_login_button = true;
80 };
81 };
82 "lockscreen-login-box@eDP-1" = {
83 box_height = 0.0;
84 box_width = 0.0;
85 cx = 854.0;
86 cy = 944.0;
87 output = "eDP-1";
88 rotation = 0.0;
89 type = "login_box";
90 settings = {
91 background_color = "surface_variant";
92 background_opacity = 0.88;
93 background_radius = 12.0;
94 input_opacity = 1.0;
95 input_radius = 6.0;
96 show_login_button = true;
97 };
98 };
99 lockscreen-widget-0000000000000001 = {
100 box_height = 0.0;
101 box_width = 0.0;
102 cx = 723.0;
103 cy = 217.5;
104 output = "eDP-1";
105 rotation = 0.0;
106 type = "clock";
107 settings = {
108 background = true;
109 clock_style = "digital";
110 font_family = "BerkeleyMono Nerd Font";
111 };
112 };
113 lockscreen-widget-0000000000000002 = {
114 box_height = 0.0;
115 box_width = 0.0;
116 cx = 985.5;
117 cy = 219.5;
118 output = "eDP-1";
119 rotation = 0.0;
120 type = "weather";
121 };
122 };
123 };
124
125 notification = {
126 background_opacity = 0.97;
127 enable_daemon = true;
128 layer = "top";
129 offset_x = 20;
130 offset_y = 8;
131 scale = 1.0;
132 show_actions = true;
133 show_app_name = true;
134 };
135
136 osd = {
137 orientation = "vertical";
138 position = "top_right";
139 kinds = {
140 keyboard_layout = false;
141 lock_keys = false;
142 };
143 };
144
145 plugins.enabled = [
146 "noctalia/bongocat"
147 "noctalia/screen_recorder"
148 "noctalia/timer"
149 ];
150
151 shell = {
152 font_family = "BerkeleyMono Nerd Font";
153 launch_apps_as_systemd_services = true;
154 niri_overview_type_to_launch_enabled = true;
155 polkit_agent = true;
156 screen_corners.enabled = true;
157 };
158
159 theme = {
160 mode = "dark";
161 source = "builtin";
162 builtin = "Gruvbox";
163 templates = {
164 builtin_ids = [
165 "alacritty"
166 "btop"
167 "gtk3"
168 "gtk4"
169 "helix"
170 "niri"
171 "qt"
172 "starship"
173 ];
174 community_ids = [
175 "pi-agent"
176 "zen-browser"
177 "discord"
178 "steam"
179 "yazi"
180 ];
181 enable_builtin_templates = false;
182 user = {
183 alacritty = {
184 input_path = "${inputs.noctalia}/assets/templates/alacritty/alacritty.toml";
185 output_path = "$XDG_CONFIG_HOME/alacritty/themes/noctalia.toml";
186 };
187 helix = {
188 input_path = "${inputs.noctalia}/assets/templates/helix/helix.toml";
189 output_path = "$XDG_CONFIG_HOME/helix/themes/noctalia.toml";
190 };
191 starship = {
192 input_path = "${inputs.noctalia}/assets/templates/starship/starship.toml";
193 output_path = "$XDG_CONFIG_HOME/starship/noctalia.toml";
194 post_hook = ''
195 ${pkgs.runtimeShell} -c '
196 file="''${XDG_CONFIG_HOME:-$HOME/.config}/starship/noctalia.toml"
197 ${pkgs.gnugrep}/bin/grep -qE "^palette[[:space:]]*=" "$file" \
198 || ${pkgs.gnused}/bin/sed -i "1ipalette = \"noctalia\"" "$file"
199 '
200 '';
201 };
202 niri = {
203 input_path = "${inputs.noctalia}/assets/templates/niri/niri.kdl";
204 output_path = "$XDG_CONFIG_HOME/niri/noctalia.kdl";
205 post_hook = ''
206 ${pkgs.runtimeShell} -c '
207 ${niriPackage}/bin/niri msg action load-config-file >/dev/null 2>&1 || true
208 '
209 '';
210 };
211 zellij = {
212 input_path = "${inputs.noctalia-template-zellij}/zellij.kdl";
213 output_path = "$XDG_CONFIG_HOME/zellij/themes/noctalia.kdl";
214 };
215 };
216 };
217 };
218
219 wallpaper = {
220 enabled = true;
221 directory = "${config.home.homeDirectory}/Pictures/Wallpapers";
222 automation = {
223 enabled = true;
224 interval_minutes = 15;
225 order = "random";
226 recursive = true;
227 };
228 default.path = "${config.home.homeDirectory}/Pictures/Wallpapers/car.png";
229 last.path = "${config.home.homeDirectory}/Pictures/Wallpapers/car.png";
230 monitors = {
231 DP-7.path = "${config.home.homeDirectory}/Pictures/Wallpapers/car.png";
232 eDP-1.path = "${config.home.homeDirectory}/Pictures/Wallpapers/monogatari.png";
233 };
234 };
235
236 widget = {
237 bluetooth.capsule_padding = 14.0;
238 media.hide_when_no_media = true;
239 network.show_label = false;
240 tray.drawer = true;
241 };
242 };
243 };
244 };
245}