-1
homeModules/profiles/gui/default.nix
-1
homeModules/profiles/gui/default.nix
+3
homeModules/programs/git/default.nix
+3
homeModules/programs/git/default.nix
+29
-5
homeModules/wayland/default.nix
+29
-5
homeModules/wayland/default.nix
···
1
+
{
2
+
pkgs,
3
+
config,
4
+
osConfig,
5
+
lib,
6
+
...
7
+
}:
8
+
let
9
+
c = osConfig.py.programs.hyprland;
10
+
cfg = config.wayland.windowManager.hyprland;
11
+
in
1
12
{
2
13
imports = [
3
-
./sway.nix
4
-
./keybindings.nix
5
-
./waybar.nix
6
-
./swaylock.nix
7
-
./hyprland
14
+
./services.nix
15
+
./hypridle.nix
8
16
];
17
+
config = {
18
+
catppuccin.hyprland.enable = c.enable;
19
+
wayland.windowManager.hyprland = {
20
+
enable = c.enable;
21
+
# Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package
22
+
package = null;
23
+
systemd = {
24
+
enable = true;
25
+
enableXdgAutostart = true;
26
+
};
27
+
settings = import ./settings.nix;
28
+
plugins = [
29
+
pkgs.hyprlandPlugins.hy3
30
+
];
31
+
};
32
+
};
9
33
}
-33
homeModules/wayland/hyprland/default.nix
-33
homeModules/wayland/hyprland/default.nix
···
1
-
{
2
-
pkgs,
3
-
config,
4
-
osConfig,
5
-
lib,
6
-
...
7
-
}:
8
-
let
9
-
c = osConfig.py.programs.hyprland;
10
-
cfg = config.wayland.windowManager.hyprland;
11
-
in
12
-
{
13
-
imports = [
14
-
./services.nix
15
-
./hypridle.nix
16
-
];
17
-
config = {
18
-
catppuccin.hyprland.enable = c.enable;
19
-
wayland.windowManager.hyprland = {
20
-
enable = c.enable;
21
-
# Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package
22
-
package = null;
23
-
systemd = {
24
-
enable = true;
25
-
enableXdgAutostart = true;
26
-
};
27
-
settings = import ./settings.nix;
28
-
plugins = [
29
-
pkgs.hyprlandPlugins.hy3
30
-
];
31
-
};
32
-
};
33
-
}
homeModules/wayland/hyprland/env.nix
homeModules/wayland/env.nix
homeModules/wayland/hyprland/env.nix
homeModules/wayland/env.nix
+1
homeModules/wayland/hyprland/hypridle.nix
homeModules/wayland/hypridle.nix
+1
homeModules/wayland/hyprland/hypridle.nix
homeModules/wayland/hypridle.nix
-98
homeModules/wayland/hyprland/keybindings.nix
-98
homeModules/wayland/hyprland/keybindings.nix
···
1
-
{
2
-
"$mod" = "SUPER";
3
-
"$satty" = "satty -f -";
4
-
5
-
binde = [
6
-
# Media binds that can be held and repeated
7
-
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
8
-
", XF86MonBrightnessUp, exec, brightnessctl set +5%"
9
-
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
10
-
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
11
-
];
12
-
13
-
bind = [
14
-
"SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox"
15
-
"$mod, Return, exec, ghostty"
16
-
"$mod, X, global, caelestia:session"
17
-
"$mod, D, global, caelestia:launcher"
18
-
"SUPER_SHIFT, E, exit"
19
-
20
-
# Media Binds
21
-
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
22
-
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
23
-
", XF86AudioPlay, exec, playerctl play-pause"
24
-
", XF86AudioNext, exec, playerctl next"
25
-
", XF86AudioPrev, exec, playerctl previous"
26
-
27
-
# Workspace binds
28
-
"$mod, 1, workspace, 01"
29
-
"SUPER_SHIFT, 1, hy3:movetoworkspace, 01, follow, warp"
30
-
"$mod, 2, workspace, 02"
31
-
"SUPER_SHIFT, 2, hy3:movetoworkspace, 02, follow, warp"
32
-
"$mod, 3, workspace, 03"
33
-
"SUPER_SHIFT, 3, hy3:movetoworkspace, 03, follow, warp"
34
-
"$mod, 4, workspace, 04"
35
-
"SUPER_SHIFT, 4, hy3:movetoworkspace, 04, follow, warp"
36
-
"$mod, 5, workspace, 05"
37
-
"SUPER_SHIFT, 5, hy3:movetoworkspace, 05, follow, warp"
38
-
"$mod, 6, workspace, 06"
39
-
"SUPER_SHIFT, 6, hy3:movetoworkspace, 06, follow, warp"
40
-
"$mod, 7, workspace, 07"
41
-
"SUPER_SHIFT, 7, hy3:movetoworkspace, 07, follow, warp"
42
-
"$mod, 8, workspace, 08"
43
-
"SUPER_SHIFT, 8, hy3:movetoworkspace, 08, follow, warp"
44
-
"$mod, 9, workspace, 09"
45
-
"SUPER_SHIFT, 9, hy3:movetoworkspace, 09, follow, warp"
46
-
"$mod, 0, workspace, 10"
47
-
"SUPER_SHIFT, 0, hy3:movetoworkspace, 10, follow, warp"
48
-
# Scratchpad
49
-
"SUPER_SHIFT, -, movetoworkspace, special"
50
-
"$mod, -, togglespecialworkspace"
51
-
52
-
# Window Management
53
-
"SUPER_SHIFT, Up, hy3:movewindow, up, once, visible"
54
-
"SUPER_SHIFT, K, hy3:movewindow, up, once, visible"
55
-
"$mod, Up, hy3:movefocus, up, visible, warp"
56
-
"$mod, K, hy3:movefocus, up, visible, warp"
57
-
58
-
"SUPER_SHIFT, Right, hy3:movewindow, right, once, visible"
59
-
"SUPER_SHIFT, L, hy3:movewindow, right, once, visible"
60
-
"$mod, Right, hy3:movefocus, right, visible, warp"
61
-
"$mod, L, hy3:movefocus, right, visible, warp"
62
-
63
-
"SUPER_SHIFT, Left, hy3:movewindow, left, once, visible"
64
-
"SUPER_SHIFT, H, hy3:movewindow, left, once, visible"
65
-
"$mod, Left, hy3:movefocus, left, visible, warp"
66
-
"$mod, H, hy3:movefocus, left, visible, warp"
67
-
68
-
"SUPER_SHIFT, Down, hy3:movewindow, down, once, visible"
69
-
"SUPER_SHIFT, J, hy3:movewindow, down, once, visible"
70
-
"$mod, Down, hy3:movefocus, down, visible, warp"
71
-
"$mod, J, hy3:movefocus, down, visible, warp"
72
-
73
-
"SUPER_SHIFT, Q, killactive"
74
-
"$mod, F, fullscreen, 0"
75
-
"$mod, Space, hy3:togglefocuslayer"
76
-
"SUPER_SHIFT, Space, togglefloating, active"
77
-
78
-
# Screenshots
79
-
"SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty"
80
-
"SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty"
81
-
];
82
-
83
-
bindm = [
84
-
"$mod, mouse:272, movewindow"
85
-
];
86
-
87
-
# Unbind a bunch of default keybinds
88
-
unbind = [
89
-
"$mod, C"
90
-
"$mod, E"
91
-
"$mod, J"
92
-
"$mod, M"
93
-
"$mod, P"
94
-
"$mod, Q"
95
-
"$mod, R"
96
-
"$mod, V"
97
-
];
98
-
}
homeModules/wayland/hyprland/monitors.nix
homeModules/wayland/monitors.nix
homeModules/wayland/hyprland/monitors.nix
homeModules/wayland/monitors.nix
homeModules/wayland/hyprland/plugins.nix
homeModules/wayland/plugins.nix
homeModules/wayland/hyprland/plugins.nix
homeModules/wayland/plugins.nix
homeModules/wayland/hyprland/services.nix
homeModules/wayland/services.nix
homeModules/wayland/hyprland/services.nix
homeModules/wayland/services.nix
homeModules/wayland/hyprland/settings.nix
homeModules/wayland/settings.nix
homeModules/wayland/hyprland/settings.nix
homeModules/wayland/settings.nix
homeModules/wayland/hyprland/variables.nix
homeModules/wayland/variables.nix
homeModules/wayland/hyprland/variables.nix
homeModules/wayland/variables.nix
homeModules/wayland/hyprland/windowrules.nix
homeModules/wayland/windowrules.nix
homeModules/wayland/hyprland/windowrules.nix
homeModules/wayland/windowrules.nix
+96
-43
homeModules/wayland/keybindings.nix
+96
-43
homeModules/wayland/keybindings.nix
···
1
-
{ config, lib, ... }:
2
-
let
3
-
inherit (config.wayland.windowManager.sway.config) menu;
4
-
mod = config.wayland.windowManager.sway.config.modifier;
5
-
term = config.wayland.windowManager.sway.config.terminal;
6
-
grim = "grim -g";
7
-
slurp-screen = "\"$(slurp -c -b '#1e1e2e80' -o -r)\" -";
8
-
slurp-box = "\"$(slurp -c '#f38ba8ff' -b '#1e1e2e80' -w 1 -d -F 'IBM Plex Mono')\" -";
9
-
satty = "satty -f -";
10
-
cfg = config.py.profiles.gui;
11
-
in
12
1
{
13
-
config.wayland.windowManager.sway.config.keybindings = lib.mkIf cfg.enable (
14
-
lib.mkOptionDefault {
15
-
"${mod}+d" = "${menu}";
16
-
"${mod}+Shift+F" = "exec MOZ_DISABLE_RDD_SANDBOX=1 firefox";
17
-
"${mod}+Return" = "exec ${term}";
18
-
"${mod}+x" = "exec wlogout";
19
-
"${mod}+s" = null;
20
-
"${mod}+w" = null;
21
-
"XF86MonBrightnessDown" = "exec brightnessctl set 5%-";
22
-
"XF86MonBrightnessUp" = "exec brightnessctl set +5%";
23
-
"XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
24
-
"XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
25
-
"XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
26
-
"XF86AudioMicMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
27
-
"XF86AudioPlay" = "exec playerctl play-pause";
28
-
"XF86AudioNext" = "exec playerctl next";
29
-
"XF86AudioPrev" = "exec playerctl previous";
30
-
"Shift+F3" = "exec ${grim} ${slurp-screen} | ${satty}";
31
-
"Shift+F4" = "exec ${grim} ${slurp-box} | ${satty}";
32
-
"${mod}+Shift+1" = "move container to workspace number 1";
33
-
"${mod}+Shift+2" = "move container to workspace number 2";
34
-
"${mod}+Shift+3" = "move container to workspace number 3";
35
-
"${mod}+Shift+4" = "move container to workspace number 4";
36
-
"${mod}+Shift+5" = "move container to workspace number 5";
37
-
"${mod}+Shift+6" = "move container to workspace number 6";
38
-
"${mod}+Shift+7" = "move container to workspace number 7";
39
-
"${mod}+Shift+8" = "move container to workspace number 8";
40
-
"${mod}+Shift+9" = "move container to workspace number 9";
41
-
"${mod}+Shift+0" = "move container to workspace number 10";
42
-
"${mod}+0" = "workspace number 10";
43
-
}
44
-
);
2
+
"$mod" = "SUPER";
3
+
"$satty" = "satty -f -";
4
+
5
+
binde = [
6
+
# Media binds that can be held and repeated
7
+
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
8
+
", XF86MonBrightnessUp, exec, brightnessctl set +5%"
9
+
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
10
+
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
11
+
];
12
+
13
+
bind = [
14
+
"SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox"
15
+
"$mod, Return, exec, ghostty"
16
+
"$mod, X, global, caelestia:session"
17
+
"$mod, D, global, caelestia:launcher"
18
+
"SUPER_SHIFT, E, exit"
19
+
20
+
# Media Binds
21
+
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
22
+
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
23
+
", XF86AudioPlay, exec, playerctl play-pause"
24
+
", XF86AudioNext, exec, playerctl next"
25
+
", XF86AudioPrev, exec, playerctl previous"
26
+
27
+
# Workspace binds
28
+
"$mod, 1, workspace, 01"
29
+
"SUPER_SHIFT, 1, hy3:movetoworkspace, 01"
30
+
"$mod, 2, workspace, 02"
31
+
"SUPER_SHIFT, 2, hy3:movetoworkspace, 02"
32
+
"$mod, 3, workspace, 03"
33
+
"SUPER_SHIFT, 3, hy3:movetoworkspace, 03"
34
+
"$mod, 4, workspace, 04"
35
+
"SUPER_SHIFT, 4, hy3:movetoworkspace, 04"
36
+
"$mod, 5, workspace, 05"
37
+
"SUPER_SHIFT, 5, hy3:movetoworkspace, 05"
38
+
"$mod, 6, workspace, 06"
39
+
"SUPER_SHIFT, 6, hy3:movetoworkspace, 06"
40
+
"$mod, 7, workspace, 07"
41
+
"SUPER_SHIFT, 7, hy3:movetoworkspace, 07"
42
+
"$mod, 8, workspace, 08"
43
+
"SUPER_SHIFT, 8, hy3:movetoworkspace, 08"
44
+
"$mod, 9, workspace, 09"
45
+
"SUPER_SHIFT, 9, hy3:movetoworkspace, 09"
46
+
"$mod, 0, workspace, 10"
47
+
"SUPER_SHIFT, 0, hy3:movetoworkspace, 10"
48
+
# Scratchpad
49
+
"SUPER_SHIFT, -, hy3:movetoworkspace, special:default"
50
+
"$mod, -, togglespecialworkspace, default"
51
+
52
+
# Window Management
53
+
"SUPER_SHIFT, Up, hy3:movewindow, up, once, visible"
54
+
"SUPER_SHIFT, K, hy3:movewindow, up, once, visible"
55
+
"$mod, Up, hy3:movefocus, up, visible, warp"
56
+
"$mod, K, hy3:movefocus, up, visible, warp"
57
+
58
+
"SUPER_SHIFT, Right, hy3:movewindow, right, once, visible"
59
+
"SUPER_SHIFT, L, hy3:movewindow, right, once, visible"
60
+
"$mod, Right, hy3:movefocus, right, visible, warp"
61
+
"$mod, L, hy3:movefocus, right, visible, warp"
62
+
63
+
"SUPER_SHIFT, Left, hy3:movewindow, left, once, visible"
64
+
"SUPER_SHIFT, H, hy3:movewindow, left, once, visible"
65
+
"$mod, Left, hy3:movefocus, left, visible, warp"
66
+
"$mod, H, hy3:movefocus, left, visible, warp"
67
+
68
+
"SUPER_SHIFT, Down, hy3:movewindow, down, once, visible"
69
+
"SUPER_SHIFT, J, hy3:movewindow, down, once, visible"
70
+
"$mod, Down, hy3:movefocus, down, visible, warp"
71
+
"$mod, J, hy3:movefocus, down, visible, warp"
72
+
73
+
"SUPER_SHIFT, Q, killactive"
74
+
"$mod, F, fullscreen, 0"
75
+
"$mod, Space, hy3:togglefocuslayer"
76
+
"SUPER_SHIFT, Space, togglefloating, active"
77
+
78
+
# Screenshots
79
+
"SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty"
80
+
"SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty"
81
+
];
82
+
83
+
bindm = [
84
+
"$mod, mouse:272, movewindow"
85
+
];
86
+
87
+
# Unbind a bunch of default keybinds
88
+
unbind = [
89
+
"$mod, C"
90
+
"$mod, E"
91
+
"$mod, J"
92
+
"$mod, M"
93
+
"$mod, P"
94
+
"$mod, Q"
95
+
"$mod, R"
96
+
"$mod, V"
97
+
];
45
98
}
-156
homeModules/wayland/sway.nix
-156
homeModules/wayland/sway.nix
···
1
-
{
2
-
pkgs,
3
-
config,
4
-
lib,
5
-
...
6
-
}:
7
-
let
8
-
term = config.wayland.windowManager.sway.config.terminal;
9
-
homeDir = config.home.homeDirectory;
10
-
cfg = config.py.profiles.gui;
11
-
in
12
-
{
13
-
config = lib.mkIf cfg.enable {
14
-
catppuccin = {
15
-
sway.enable = true;
16
-
};
17
-
home.sessionVariables = {
18
-
XDG_CURRENT_DESKTOP = "sway";
19
-
};
20
-
wayland.windowManager.sway = {
21
-
enable = lib.mkDefault true;
22
-
package = null;
23
-
# nix-community/home-manager/issues/5311
24
-
checkConfig = false;
25
-
wrapperFeatures.base = true;
26
-
wrapperFeatures.gtk = true;
27
-
extraConfig = ''
28
-
default_border pixel
29
-
focus_on_window_activation smart
30
-
'';
31
-
systemd = {
32
-
enable = true;
33
-
xdgAutostart = true;
34
-
};
35
-
config = {
36
-
terminal = lib.getExe pkgs.ghostty;
37
-
menu = "exec ${lib.getExe pkgs.onagre}";
38
-
modifier = "Mod4";
39
-
bars = [ { command = "true"; } ];
40
-
focus = {
41
-
followMouse = true;
42
-
mouseWarping = true;
43
-
newWindow = "smart";
44
-
};
45
-
fonts = {
46
-
names = [ "Inter" ];
47
-
style = "Regular";
48
-
size = 12.0;
49
-
};
50
-
gaps = {
51
-
inner = 1;
52
-
outer = 1;
53
-
smartBorders = "on";
54
-
smartGaps = false;
55
-
};
56
-
input = {
57
-
"type:keyboard" = {
58
-
xkb_options = "caps:escape";
59
-
};
60
-
"type:mouse" = {
61
-
accel_profile = "flat";
62
-
};
63
-
"type:touchpad" = {
64
-
accel_profile = "adaptive";
65
-
scroll_factor = "1.5";
66
-
tap = "enabled";
67
-
};
68
-
};
69
-
modes = {
70
-
resize = {
71
-
Escape = "mode default";
72
-
Return = "mode default";
73
-
Up = "resize shrink height 10 px";
74
-
Down = "resize grow height 10 px";
75
-
Left = "resize shrink width 10 px";
76
-
Right = "resize grow width 10 px";
77
-
h = "resize shrink width 10 px";
78
-
j = "resize grow height 10 px";
79
-
k = "resize shrink height 10 px";
80
-
l = "resize grow width 10 px";
81
-
};
82
-
};
83
-
output = {
84
-
eDP-1 = {
85
-
scale = "1.2";
86
-
};
87
-
};
88
-
startup = [
89
-
{ command = "${pkgs.dex}/bin/dex -a"; }
90
-
{ command = "${homeDir}/scripts/unfuck-xdg-portals.fish"; }
91
-
{ command = "wl-paste -t text --watch clipman store --no-persist"; }
92
-
];
93
-
window = {
94
-
commands = [
95
-
{
96
-
command = "inhibit_idle fullscreen";
97
-
criteria = {
98
-
class = "Chromium|zoom|Firefox";
99
-
};
100
-
}
101
-
{
102
-
command = "floating enable, sticky enable, resize set 20 ppt 40 ppt, border pixel 4";
103
-
criteria = {
104
-
app_id = "^py.floating$";
105
-
};
106
-
}
107
-
{
108
-
command = "resize set 20 ppt";
109
-
criteria = {
110
-
title = "Mumble PTT";
111
-
};
112
-
}
113
-
];
114
-
};
115
-
colors = {
116
-
background = "$base";
117
-
focused = {
118
-
border = "$pink";
119
-
background = "$base";
120
-
text = "$text";
121
-
indicator = "$rosewater";
122
-
childBorder = "$pink";
123
-
};
124
-
focusedInactive = {
125
-
border = "$mauve";
126
-
background = "$base";
127
-
text = "$text";
128
-
indicator = "$rosewater";
129
-
childBorder = "$mauve";
130
-
};
131
-
unfocused = {
132
-
border = "$mauve";
133
-
background = "$base";
134
-
text = "$text";
135
-
indicator = "$rosewater";
136
-
childBorder = "$mauve";
137
-
};
138
-
urgent = {
139
-
border = "$peach";
140
-
background = "$base";
141
-
text = "$peach";
142
-
indicator = "$overlay0";
143
-
childBorder = "$peach";
144
-
};
145
-
placeholder = {
146
-
border = "$overlay0";
147
-
background = "$base";
148
-
text = "$text";
149
-
indicator = "$overlay0";
150
-
childBorder = "$overlay0";
151
-
};
152
-
};
153
-
};
154
-
};
155
-
};
156
-
}
-67
homeModules/wayland/swaylock.nix
-67
homeModules/wayland/swaylock.nix
···
1
-
{
2
-
lib,
3
-
config,
4
-
pkgs,
5
-
...
6
-
}:
7
-
let
8
-
cfg = config.py.profiles.gui;
9
-
in
10
-
{
11
-
catppuccin = {
12
-
swaylock.enable = false;
13
-
};
14
-
programs.swaylock = lib.mkIf cfg.enable {
15
-
enable = lib.mkDefault true;
16
-
package = pkgs.swaylock-effects;
17
-
settings = {
18
-
daemonize = true;
19
-
image = "/home/thehedgehog/bgs/ctp-waves.png";
20
-
scaling = "fill";
21
-
line-uses-ring = true;
22
-
ignore-empty-password = true;
23
-
clock = true;
24
-
timestr = "%T";
25
-
effect-blur = "5x5";
26
-
27
-
font = "IBM Plex Sans";
28
-
font-size = 20;
29
-
30
-
indicator = true;
31
-
indicator-idle-visible = true;
32
-
indicator-radius = 100;
33
-
indicator-thickness = 5;
34
-
35
-
# Catppuccin Theme(avoid IFD by vendoring it in here)
36
-
color = "1e1e2e";
37
-
bs-hl-color = "f5e0dc";
38
-
caps-lock-bs-hl-color = "f5e0dc";
39
-
caps-lock-key-hl-color = "a6e3a1";
40
-
inside-color = "00000000";
41
-
inside-clear-color = "00000000";
42
-
inside-caps-lock-color = "00000000";
43
-
inside-ver-color = "00000000";
44
-
inside-wrong-color = "00000000";
45
-
key-hl-color = "a6e3a1";
46
-
layout-bg-color = "00000000";
47
-
layout-border-color = "00000000";
48
-
layout-text-color = "cdd6f4";
49
-
line-color = "00000000";
50
-
line-clear-color = "00000000";
51
-
line-caps-lock-color = "00000000";
52
-
line-ver-color = "00000000";
53
-
line-wrong-color = "00000000";
54
-
ring-color = "b4befe";
55
-
ring-clear-color = "f5e0dc";
56
-
ring-caps-lock-color = "fab387";
57
-
ring-ver-color = "89b4fa";
58
-
ring-wrong-color = "eba0ac";
59
-
separator-color = "00000000";
60
-
text-color = "cdd6f4";
61
-
text-clear-color = "f5e0dc";
62
-
text-caps-lock-color = "fab387";
63
-
text-ver-color = "89b4fa";
64
-
text-wrong-color = "eba0ac";
65
-
};
66
-
};
67
-
}
-37
homeModules/wayland/waybar-mocha.css
-37
homeModules/wayland/waybar-mocha.css
···
1
-
/*
2
-
*
3
-
* Catppuccin Mocha palette
4
-
* Maintainer: rubyowo
5
-
*
6
-
*/
7
-
8
-
@define-color base #1e1e2e;
9
-
@define-color mantle #181825;
10
-
@define-color crust #11111b;
11
-
12
-
@define-color text #cdd6f4;
13
-
@define-color subtext0 #a6adc8;
14
-
@define-color subtext1 #bac2de;
15
-
16
-
@define-color surface0 #313244;
17
-
@define-color surface1 #45475a;
18
-
@define-color surface2 #585b70;
19
-
20
-
@define-color overlay0 #6c7086;
21
-
@define-color overlay1 #7f849c;
22
-
@define-color overlay2 #9399b2;
23
-
24
-
@define-color blue #89b4fa;
25
-
@define-color lavender #b4befe;
26
-
@define-color sapphire #74c7ec;
27
-
@define-color sky #89dceb;
28
-
@define-color teal #94e2d5;
29
-
@define-color green #a6e3a1;
30
-
@define-color yellow #f9e2af;
31
-
@define-color peach #fab387;
32
-
@define-color maroon #eba0ac;
33
-
@define-color red #f38ba8;
34
-
@define-color mauve #cba6f7;
35
-
@define-color pink #f5c2e7;
36
-
@define-color flamingo #f2cdcd;
37
-
@define-color rosewater #f5e0dc;
-128
homeModules/wayland/waybar-style.css
-128
homeModules/wayland/waybar-style.css
···
1
-
@import "mocha.css";
2
-
#waybar {
3
-
font-family:
4
-
BlexMono Nerd Font,
5
-
sans-serif;
6
-
font-size: 16px;
7
-
}
8
-
9
-
#window {
10
-
padding: 0 4px;
11
-
}
12
-
13
-
.modules-center {
14
-
padding-right: 20px;
15
-
}
16
-
17
-
window#waybar {
18
-
border: none;
19
-
border-radius: 0;
20
-
box-shadow: none;
21
-
text-shadow: none;
22
-
transition-duration: 0s;
23
-
color: @text;
24
-
background: @base;
25
-
}
26
-
27
-
#workspaces {
28
-
margin: 0 5px;
29
-
}
30
-
31
-
#workspaces button {
32
-
padding: 0 8px;
33
-
color: @text;
34
-
border-bottom: 2px solid @subtext0;
35
-
border-radius: 0px;
36
-
min-width: 25px;
37
-
margin-right: 8px;
38
-
}
39
-
40
-
#workspaces button.visible {
41
-
color: @subtext0;
42
-
}
43
-
44
-
#workspaces button.focused {
45
-
border-bottom: 3px solid @mauve;
46
-
font-weight: bold;
47
-
}
48
-
49
-
#workspaces button.urgent {
50
-
border: 2px solid @red;
51
-
}
52
-
53
-
#workspaces button:hover {
54
-
border-color: @blue;
55
-
color: @blue;
56
-
}
57
-
58
-
/* Repeat style here to ensure properties are overwritten as there's no !important and button:hover above resets the colour */
59
-
60
-
#workspaces button.focused {
61
-
color: @subtext0;
62
-
}
63
-
#workspaces button.focused:hover {
64
-
color: @text;
65
-
}
66
-
67
-
#tray,
68
-
#mode,
69
-
#battery,
70
-
#temperature,
71
-
#cpu,
72
-
#memory,
73
-
#network,
74
-
#wireplumber,
75
-
#clock,
76
-
#idle_inhibitor,
77
-
#sway-language,
78
-
#backlight {
79
-
padding: 2px 8px;
80
-
margin: 2px 5px;
81
-
color: @text;
82
-
}
83
-
84
-
#mode:hover,
85
-
#battery:hover,
86
-
#temperature:hover,
87
-
#cpu:hover,
88
-
#memory:hover,
89
-
#network:hover,
90
-
#wireplumber:hover,
91
-
#clock:hover,
92
-
#idle_inhibitor:hover,
93
-
#sway-language:hover,
94
-
#backlight:hover {
95
-
background-color: @subtext1;
96
-
color: @base;
97
-
}
98
-
99
-
#clock {
100
-
font-weight: bold;
101
-
}
102
-
103
-
#battery.warning {
104
-
color: @yellow;
105
-
}
106
-
107
-
#battery.critical {
108
-
color: @red;
109
-
}
110
-
111
-
#battery.charging,
112
-
#battery.full {
113
-
color: @green;
114
-
}
115
-
116
-
#battery.warning:hover,
117
-
#battery.critical:hover,
118
-
#battery.charging:hover,
119
-
#battery.full:hover {
120
-
color: @base;
121
-
}
122
-
123
-
@keyframes blink {
124
-
to {
125
-
background-color: #ffffff;
126
-
color: black;
127
-
}
128
-
}
-172
homeModules/wayland/waybar.nix
-172
homeModules/wayland/waybar.nix
···
1
-
{
2
-
pkgs,
3
-
lib,
4
-
config,
5
-
...
6
-
}:
7
-
let
8
-
cfg = config.py.profiles.gui;
9
-
sway = config.wayland.windowManager.sway;
10
-
in
11
-
{
12
-
config = {
13
-
xdg.configFile."waybar/mocha.css" = lib.mkIf (cfg.enable && sway.enable) {
14
-
source = ./waybar-mocha.css;
15
-
recursive = false;
16
-
};
17
-
catppuccin.waybar.enable = false;
18
-
programs.waybar = lib.mkIf (cfg.enable && sway.enable) {
19
-
enable = lib.mkDefault false;
20
-
systemd.enable = true;
21
-
systemd.target = "sway-session.target";
22
-
style = ./waybar-style.css;
23
-
settings = {
24
-
mainBar = {
25
-
layer = "top";
26
-
position = "top";
27
-
height = 32;
28
-
modules-left = [
29
-
"sway/workspaces"
30
-
"sway/mode"
31
-
];
32
-
modules-center = [ "mpris" ];
33
-
modules-right = [
34
-
"idle_inhibitor"
35
-
"wireplumber"
36
-
"network"
37
-
"temperature"
38
-
"backlight"
39
-
"battery"
40
-
"clock"
41
-
"tray"
42
-
];
43
-
"sway/workspaces" = {
44
-
disable-scroll = true;
45
-
enable-bar-scroll = false;
46
-
active-only = false;
47
-
all-outputs = false;
48
-
format = "{icon}";
49
-
};
50
-
"idle_inhibitor" = {
51
-
format = "{icon} ";
52
-
format-icons = {
53
-
"activated" = "";
54
-
"deactivated" = "";
55
-
};
56
-
};
57
-
"tray" = {
58
-
icon-size = 25;
59
-
spacing = 12;
60
-
};
61
-
"clock" = {
62
-
tooltip-format = "<tt><small>{calendar}</small></tt>";
63
-
format = " {:%H:%M:%S}";
64
-
format-alt = "{%d %b %Y}";
65
-
interval = 1;
66
-
calendar = {
67
-
format = {
68
-
today = "<span color='#89b4fa'><b><u>{}</u></b></span>";
69
-
};
70
-
};
71
-
};
72
-
"cpu" = {
73
-
format = " {usage}%";
74
-
interval = 5;
75
-
tooltip = false;
76
-
};
77
-
"memory" = {
78
-
format = " {}%";
79
-
};
80
-
"temperature" = {
81
-
critical-threshold = 80;
82
-
format = "{icon} {temperatureC}°C";
83
-
format-icons = [
84
-
""
85
-
""
86
-
""
87
-
""
88
-
""
89
-
];
90
-
};
91
-
"backlight" = {
92
-
format = "{icon} {percent}%";
93
-
format-icons = [
94
-
""
95
-
""
96
-
""
97
-
""
98
-
""
99
-
""
100
-
""
101
-
];
102
-
};
103
-
"battery" = {
104
-
states = {
105
-
good = 65;
106
-
warning = 30;
107
-
critical = 15;
108
-
};
109
-
full-at = 80;
110
-
format = "{icon} {capacity}%";
111
-
format-charging = " {capacity}%";
112
-
format-plugged = " {capacity}%";
113
-
format-alt = "{icon} {time}";
114
-
format-icons = [
115
-
""
116
-
""
117
-
""
118
-
""
119
-
""
120
-
""
121
-
""
122
-
""
123
-
""
124
-
""
125
-
""
126
-
];
127
-
};
128
-
"network" = {
129
-
format-wifi = "<big></big> {essid}";
130
-
format-ethernet = " {ifname}: {ipaddr}/{cidr}";
131
-
format-linked = " {ifname} (No IP)";
132
-
format-disconnected = "⚠ Disconnected!";
133
-
format-alt = "{ifname}: {ipaddr}/{cidr}";
134
-
on-click = lib.getExe pkgs.networkmanagerapplet;
135
-
};
136
-
"wireplumber" = {
137
-
format = "{icon} {volume}%";
138
-
format-muted = "";
139
-
format-icons = [
140
-
""
141
-
""
142
-
""
143
-
];
144
-
states = {
145
-
low = 15;
146
-
med = 40;
147
-
high = 60;
148
-
};
149
-
scroll-step = 5;
150
-
on-click = lib.getExe pkgs.pwvucontrol;
151
-
};
152
-
mpris = {
153
-
format = "{status_icon} {dynamic}";
154
-
max-length = 100;
155
-
format-paused = "{status_icon} <i>{dynamic}</i>";
156
-
dynamic-order = [
157
-
"artist"
158
-
"title"
159
-
];
160
-
status-icons = {
161
-
playing = "";
162
-
paused = "";
163
-
};
164
-
player-icons = {
165
-
firefox = "";
166
-
};
167
-
};
168
-
};
169
-
};
170
-
};
171
-
};
172
-
}
+5
-4
homeModules/xdg/default.nix
+5
-4
homeModules/xdg/default.nix
···
19
19
xdgOpenUsePortal = true;
20
20
extraPortals = [
21
21
pkgs.xdg-desktop-portal-gtk
22
-
pkgs.xdg-desktop-portal-wlr
23
22
];
24
23
config = {
25
24
common = {
26
-
default = [ "gtk" ];
27
-
"org.freedesktop.impl.portal.Screenshot" = [ "wlr" ];
28
-
"org.freedesktop.impl.portal.ScreenCast" = [ "wlr" ];
25
+
default = [
26
+
"hyprland"
27
+
"gtk"
28
+
];
29
+
"org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
29
30
};
30
31
};
31
32
};
+3
-4
hosts/zaphod/misc.nix
+3
-4
hosts/zaphod/misc.nix
···
39
39
"pyrox"
40
40
];
41
41
# users.extraGroups.libvirtd.members = ["thehedgehog" "pyrox"];
42
-
# xdg.portal.extraPortals = [
43
-
# pkgs.xdg-desktop-portal-gtk
44
-
# ];
45
-
xdg.portal.wlr.enable = true;
46
42
xdg.portal.xdgOpenUsePortal = true;
47
43
48
44
users.users.root.hashedPassword = "$6$6EtuZhVOJdfI9DYP$1Qnd7R8qdN.E5yE2kDQCNg2zgJ5cIjNBKsIW/qJgb8wcKlUpIoVg/fEKvBkAgCiLyojVG2kzfu4J9LR8rA8a2/";
···
59
55
percentageLow = 30;
60
56
percentageCritical = 15;
61
57
};
58
+
59
+
# For caelestia screen recording
60
+
programs.gpu-screen-recorder.enable = true;
62
61
}
+1
nixosModules/default-config/nixpkgsConfig.nix
+1
nixosModules/default-config/nixpkgsConfig.nix
+3
-9
nixosModules/homes/thehedgehog-zaphod/caelestia-cli.json
+3
-9
nixosModules/homes/thehedgehog-zaphod/caelestia-cli.json
···
13
13
"enableQt": false
14
14
},
15
15
"toggles": {
16
-
"communication": {
16
+
"discord": {
17
17
"discord": {
18
18
"enable": true,
19
19
"match": [
···
21
21
"class": "equibop"
22
22
}
23
23
],
24
-
"command": [
25
-
"equibop"
26
-
],
24
+
"command": ["equibop"],
27
25
"move": true
28
26
}
29
27
},
···
39
37
}
40
38
}
41
39
],
42
-
"command": [
43
-
"ghostty",
44
-
"-e",
45
-
"btop"
46
-
]
40
+
"command": ["ghostty", "-e", "btop"]
47
41
}
48
42
}
49
43
}
+94
-16
nixosModules/homes/thehedgehog-zaphod/caelestia-shell.json
+94
-16
nixosModules/homes/thehedgehog-zaphod/caelestia-shell.json
···
128
128
},
129
129
"general": {
130
130
"apps": {
131
-
"audio": ["pwvucontrol"],
132
-
"explorer": ["thunar"],
133
-
"playback": ["mpv"],
134
-
"terminal": ["ghostty"]
131
+
"audio": [
132
+
"pwvucontrol"
133
+
],
134
+
"explorer": [
135
+
"thunar"
136
+
],
137
+
"playback": [
138
+
"mpv"
139
+
],
140
+
"terminal": [
141
+
"ghostty"
142
+
]
135
143
},
136
144
"battery": {
137
145
"criticalLevel": 3,
···
171
179
"timeout": 600
172
180
},
173
181
{
174
-
"idleAction": ["systemctl", "suspend"],
182
+
"idleAction": [
183
+
"systemctl",
184
+
"suspend"
185
+
],
175
186
"timeout": 900
176
187
}
177
188
]
···
181
192
"actionPrefix": ">",
182
193
"actions": [
183
194
{
184
-
"command": ["autocomplete", "calc"],
195
+
"command": [
196
+
"autocomplete",
197
+
"calc"
198
+
],
185
199
"dangerous": false,
186
200
"description": "Do simple math equations (powered by Qalc)",
187
201
"enabled": true,
···
189
203
"name": "Calculator"
190
204
},
191
205
{
192
-
"command": ["systemctl", "poweroff"],
206
+
"name": "Wallpaper",
207
+
"icon": "image",
208
+
"description": "Change the current wallpaper",
209
+
"command": [
210
+
"autocomplete",
211
+
"wallpaper"
212
+
],
213
+
"enabled": true,
214
+
"dangerous": false
215
+
},
216
+
{
217
+
"name": "Random",
218
+
"icon": "casino",
219
+
"description": "Switch to a random wallpaper",
220
+
"command": [
221
+
"caelestia",
222
+
"wallpaper",
223
+
"-r"
224
+
],
225
+
"enabled": true,
226
+
"dangerous": false
227
+
},
228
+
{
229
+
"name": "Discord",
230
+
"icon": "d",
231
+
"description": "Open Discord",
232
+
"command": [
233
+
"caelestia",
234
+
"toggle",
235
+
"discord"
236
+
],
237
+
"enabled": true,
238
+
"dangerous": false
239
+
},
240
+
{
241
+
"command": [
242
+
"systemctl",
243
+
"poweroff"
244
+
],
193
245
"dangerous": true,
194
246
"description": "Shutdown the system",
195
247
"enabled": true,
···
197
249
"name": "Shutdown"
198
250
},
199
251
{
200
-
"command": ["systemctl", "reboot"],
252
+
"command": [
253
+
"systemctl",
254
+
"reboot"
255
+
],
201
256
"dangerous": true,
202
257
"description": "Reboot the system",
203
258
"enabled": true,
···
205
260
"name": "Reboot"
206
261
},
207
262
{
208
-
"command": ["loginctl", "terminate-user", ""],
263
+
"command": [
264
+
"loginctl",
265
+
"terminate-user",
266
+
""
267
+
],
209
268
"dangerous": true,
210
269
"description": "Log out of the current session",
211
270
"enabled": true,
···
213
272
"name": "Logout"
214
273
},
215
274
{
216
-
"command": ["loginctl", "lock-session"],
275
+
"command": [
276
+
"loginctl",
277
+
"lock-session"
278
+
],
217
279
"dangerous": false,
218
280
"description": "Lock the current session",
219
281
"enabled": true,
···
221
283
"name": "Lock"
222
284
},
223
285
{
224
-
"command": ["systemctl", "suspend"],
286
+
"command": [
287
+
"systemctl",
288
+
"suspend"
289
+
],
225
290
"dangerous": false,
226
291
"description": "Suspend",
227
292
"enabled": true,
···
264
329
"paths": {
265
330
"mediaGif": "",
266
331
"sessionGif": "",
267
-
"wallpaperDir": "~/bgs/wallpapers/xenia/"
332
+
"wallpaperDir": "~/bgs/wallpapers"
268
333
},
269
334
"services": {
270
335
"audioIncrement": 0.1,
···
284
349
},
285
350
"session": {
286
351
"commands": {
287
-
"hibernate": ["systemctl", "suspend"],
288
-
"logout": ["loginctl", "terminate-user", ""],
289
-
"reboot": ["systemctl", "reboot"],
290
-
"shutdown": ["systemctl", "poweroff"]
352
+
"hibernate": [
353
+
"systemctl",
354
+
"suspend"
355
+
],
356
+
"logout": [
357
+
"loginctl",
358
+
"terminate-user",
359
+
""
360
+
],
361
+
"reboot": [
362
+
"systemctl",
363
+
"reboot"
364
+
],
365
+
"shutdown": [
366
+
"systemctl",
367
+
"poweroff"
368
+
]
291
369
},
292
370
"dragThreshold": 30,
293
371
"enabled": true,
+5
nixosModules/homes/thehedgehog-zaphod/default.nix
+5
nixosModules/homes/thehedgehog-zaphod/default.nix
+1
overlays/default.nix
+1
overlays/default.nix
+12
overlays/hy3-fixes/default.nix
+12
overlays/hy3-fixes/default.nix
···
1
+
final: prev: {
2
+
hyprlandPlugins = prev.hyprlandPlugins // {
3
+
hy3 = prev.hyprlandPlugins.hy3.overrideAttrs (old: {
4
+
patches = (old.patches or [ ]) ++ [
5
+
(prev.fetchpatch {
6
+
url = "https://github.com/outfoxxed/hy3/commit/8a3f46a40984e74094f71b5bd38df3dbe5daa97f.patch?full_index=1";
7
+
hash = "sha256-zNGCMcidRx7zV3mnlQT4EjA36g7MeBf6A9gyvITeZ4c=";
8
+
})
9
+
];
10
+
});
11
+
};
12
+
}