nix-conf/home/user/caelestia-shell.nix
danny 9c0fdc9b60 update: zen browser flake
Fix Caelestia shell gtk settings
2025-08-21 22:40:58 +08:00

209 lines
6 KiB
Nix

{
pkgs,
lib,
...
}:
let
caelestiaDot = pkgs.fetchFromGitHub {
owner = "caelestia-dots";
repo = "caelestia";
rev = "main";
sha256 = "sha256-pRLcbh81iBp9fH3Zq7HrNtAfDD46ErGZ3wID8Q65Wlg=";
};
in
{
home.packages = with pkgs; [
cliphist
inotify-tools
app2unit
wireplumber
trash-cli
foot
fastfetch
jq
socat
imagemagick
papirus-icon-theme
nerd-fonts.jetbrains-mono
fuzzel
];
xdg.configFile = {
"hypr/hyprland".source = "${caelestiaDot}/hypr/hyprland";
"hypr/scheme" = {
source = "${caelestiaDot}/hypr/scheme";
recursive = true;
};
"hypr/scripts" = {
source = "${caelestiaDot}/hypr/scripts";
executable = true;
};
"hypr/variables.conf".source = "${caelestiaDot}/hypr/variables.conf";
};
wayland.windowManager.hyprland = {
settings = {
"$hypr" = "~/.config/hypr";
"$hl" = "$hypr/hyprland";
"$cConf" = "~/.config/caelestia";
# ### Hyprland ###
# Apps
"$terminal" = "ghostty";
"$browser" = "nvidia-offload zen";
"$editor" = "nvim";
"$fileExplorer" = "yazi";
# Touchpad
"$touchpadDisableTyping" = "true";
"$touchpadScrollFactor" = "0.3";
"$workSpaceSwipeFingers" = "4";
# Blur
"$blurEnabled" = "true";
"$blurSpecialWs" = "false";
"$blurPopups" = "true";
"$blurInputMethods" = "true";
"$blurSize" = "8";
"$blurPasses" = "2";
"$blurXray" = "false";
# Shadow
"$shadowEnabled" = "true";
"$shadowRange" = "20";
"$shadowRenderPower" = "3";
"$shadowColour" = "rgba($surfaced4)";
# Gaps
"$workspaceGaps" = "20";
"$windowGapsIn" = "10";
"$windowGapsOut" = "10";
"$singleWindowGapsOut" = "10";
# Window styling
"$windowOpacity" = "0.95";
"$windowRounding" = "10";
"$windowBorderSize" = "3";
"$activeWindowBorderColour" = "rgba($primarye6)";
"$inactiveWindowBorderColour" = "rgba($onSurfaceVariant11)";
# Misc
"$volumeStep" = "5 # In percent";
"$kbGoToWs" = "SUPER";
"$wsaction" = "~/.config/hypr/scripts/wsaction.fish";
source = [
"$hypr/scheme/current.conf"
"$hl/env.conf"
"$hl/input.conf"
"$hl/misc.conf"
"$hl/animations.conf"
"$hl/decoration.conf"
"$hl/group.conf"
"$hl/rules.conf"
"${pkgs.writeText "keybinds.conf" ''
exec = hyprctl dispatch submap global
submap = global
# ## Shell keybinds
# Launcher
bind = Super+CTRL, K, global, caelestia:showall
bindi = Super, Super_L, global, caelestia:launcher
bindin = Super, catchall, global, caelestia:launcherInterrupt
bindin = Super, mouse:272, global, caelestia:launcherInterrupt
bindin = Super, mouse:273, global, caelestia:launcherInterrupt
bindin = Super, mouse:274, global, caelestia:launcherInterrupt
bindin = Super, mouse:275, global, caelestia:launcherInterrupt
bindin = Super, mouse:276, global, caelestia:launcherInterrupt
bindin = Super, mouse:277, global, caelestia:launcherInterrupt
bindin = Super, mouse_up, global, caelestia:launcherInterrupt
bindin = Super, mouse_down, global, caelestia:launcherInterrupt
bind = Super, DELETE, global, caelestia:lock
bind = Super, Q, killactive,
bind = Super , RETURN, exec, app2unit -- $terminal
bind = Super, F, exec, app2unit -- $browser
bind = Super, V, togglefloating,
bind = Super, P, pseudo
bind = Super, S, togglesplit
bindl = , XF86AudioPlay, global, caelestia:mediaToggle
bindl = , XF86AudioPause, global, caelestia:mediaToggle
bindl = , XF86AudioNext, global, caelestia:mediaNext
bindl = , XF86AudioPrev, global, caelestia:mediaPrev
bindl = , XF86AudioStop, global, caelestia:mediaStop
bind = Super+SHIFT, s, global, caelestia:screenshot
bind = CTRL SHIFT, s, exec, hyprshot -m window
bind = CTRL SHIFT Super, s, exec, hyprshot -m output
bind = CTRL ALT, s, exec, hyprshot -m active -m window
bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindle = , XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ $volumeStep%+
bindle = , XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ $volumeStep%-
bind = Super, Period, exec, pkill fuzzel || caelestia emoji -p
bind = Super+Shift, V, exec, pkill fuzzel || caelestia clipboard
''}"
];
bindm = [
# Move/resize windows with mainMod + LMB/RMB and dragging
''SUPER, mouse:272, movewindow''
''SUPER, mouse:273, resizewindow''
];
exec = [
"cp -L --no-preserve=mode --update=none $hypr/scheme/default.conf $hypr/scheme/current.conf"
];
misc = {
vrr = 0;
vfr = true;
};
};
};
home.activation.writeConfigFile =
lib.hm.dag.entryAfter [ "writeBoundary" ]
# bash
''
configList=("btop" "fastfetch" "thunar")
for config in "''\${configList[@]}"; do
if [ ! -d "$XDG_CONFIG_HOME/$config" ]; then
install -Dm666 "${caelestiaDot}/$config" "$XDG_CONFIG_HOME/$config"
fi
done
'';
fonts.fontconfig.enable = true;
programs.caelestia = {
enable = true;
settings = { };
cli = {
enable = true;
settings = { };
};
};
gtk = {
enable = lib.mkDefault true;
iconTheme = {
name = lib.mkDefault "Papirus-Dark";
package = lib.mkDefault pkgs.papirus-icon-theme;
};
};
systemd.user.services.caelestia = {
Service = {
Environment = [
"QT_QPA_PLATFORMTHEME=gtk3"
];
};
};
services.swww.enable = lib.mkForce false;
programs.waybar.enable = lib.mkForce false;
services.swaync.enable = lib.mkForce false;
}