main
1{
2 den.aspects.desktop.noctalia = {
3 persistHome = {config, ...}: {
4 directories = [
5 "${config.xdg.state.directory}/noctalia"
6 ];
7 };
8
9 hjem = {
10 user,
11 pkgs,
12 lib,
13 ...
14 }: let
15 in {
16 packages = [pkgs.noctalia];
17
18 xdg.config.files."noctalia/config.toml" = {
19 generator = value: let
20 rawConfig = (pkgs.formats.toml {}).generate "noctalia-config.toml" value;
21 in
22 pkgs.runCommand "noctalia-config-validated.toml" {} ''
23 ${lib.getExe pkgs.noctalia} config validate ${rawConfig}
24 cp ${rawConfig} $out
25 '';
26 value = {
27 battery.warning_threshold = 20;
28 notification.layer = "overlay";
29 osd = {
30 background_opacity = 0.9;
31 position_vertical = "top_right";
32 };
33 desktop_widgets.enabled = false;
34 shell = {
35 avatar_path = lib.mkIf (user.identity.avatar != null) user.identity.avatar;
36 lang = "zh_CN.UTF-8";
37 panel = {
38 open_near_click_control_center = true;
39 transparency_mode = "glass";
40 };
41 };
42 bar = {
43 order = ["default"];
44 default = {
45 background_opacity = 0.9;
46 margin_edge = 8;
47 margin_ends = 8;
48 radius = 14;
49 start = ["launcher" "privacy" "media"];
50 center = ["workspaces"];
51 end = [
52 "tray"
53 "notifications"
54 "clipboard"
55 "network"
56 "bluetooth"
57 "volume"
58 "brightness"
59 "battery"
60 "clock"
61 "control-center"
62 ];
63 };
64 };
65 widget = {
66 battery = {
67 display_mode = "graphic";
68 show_label = false;
69 };
70 brightness.show_label = false;
71 clock = {
72 capsule = true;
73 capsule_opacity = 0.9;
74 capsule_padding = 10.0;
75 format = "{:%Y-%m-%d %H:%M}";
76 };
77 control-center = {
78 capsule = true;
79 capsule_opacity = 0.9;
80 custom_image = "${pkgs.nixos-icons}/share/icons/hicolor/64x64/apps/nix-snowflake.png";
81 };
82 launcher = {
83 capsule = true;
84 capsule_opacity = 0.9;
85 };
86 media = {
87 capsule = true;
88 capsule_opacity = 0.9;
89 };
90 network.show_label = false;
91 privacy = {
92 capsule = true;
93 capsule_opacity = 0.9;
94 };
95 tray = {drawer = true;};
96 volume.show_label = false;
97 workspaces.hide_when_empty = true;
98 };
99 };
100 };
101 };
102 };
103
104 den.aspects.desktop.noctalia.themes = {
105 catppuccin = {
106 hjem = {pkgs, ...}: {
107 xdg.config.files."noctalia/config.toml".value = {
108 theme = {
109 source = "builtin";
110 builtin = "Catppuccin";
111 };
112 wallpaper.default = pkgs.nixos-artwork.wallpapers.catppuccin-mocha;
113 };
114 };
115 };
116 };
117}