Evie Litherland-Smith
c006895344
Move emacs dependencies into home/emacs/default.nix to avoid having two files Don't start emacs server from hyprland startup now Remove firefox home module, use system module only
303 lines
10 KiB
Nix
303 lines
10 KiB
Nix
{ config, lib, pkgs, ... }: {
|
|
imports = [
|
|
../default.nix
|
|
../accounts/default.nix
|
|
../swaylock/default.nix
|
|
../waybar/default.nix
|
|
../rofi/default.nix
|
|
../swaync/default.nix
|
|
../emacs/default.nix
|
|
../nyxt/default.nix
|
|
../obs/default.nix
|
|
];
|
|
services = {
|
|
gpg-agent.pinentryFlavor = "gnome3";
|
|
avizo.enable = true;
|
|
syncthing.enable = true;
|
|
udiskie = {
|
|
enable = true;
|
|
notify = true;
|
|
automount = true;
|
|
tray = "never";
|
|
};
|
|
};
|
|
programs.foot = {
|
|
enable = true;
|
|
settings = {
|
|
main = {
|
|
pad = "10x10";
|
|
locked-title = false;
|
|
notify-focus-inhibit = true;
|
|
selection-target = "both";
|
|
};
|
|
bell = {
|
|
urgent = true;
|
|
notify = true;
|
|
};
|
|
mouse = { hide-when-typing = "yes"; };
|
|
};
|
|
};
|
|
gtk = {
|
|
enable = true;
|
|
cursorTheme = {
|
|
package = pkgs.catppuccin-cursors.mochaDark;
|
|
name = "Catppuccin-Mocha-Dark-Cursors";
|
|
size = 24;
|
|
};
|
|
iconTheme = {
|
|
package = pkgs.papirus-icon-theme;
|
|
name = "Papirus-Dark";
|
|
};
|
|
theme = {
|
|
package = pkgs.catppuccin-gtk.override {
|
|
accents = [ "lavender" ];
|
|
size = "standard";
|
|
variant = "mocha";
|
|
};
|
|
name = "Catppuccin-Mocha-Standard-Lavender-Dark";
|
|
};
|
|
};
|
|
xdg.configFile = {
|
|
"hypr/extra.conf" = lib.mkDefault { text = ""; };
|
|
"hypr/hyprpaper.conf".text = ''
|
|
preload = ${config.stylix.image}
|
|
wallpaper = ,${config.stylix.image}
|
|
'';
|
|
};
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
xwayland.enable = true;
|
|
systemd.enable = true;
|
|
settings = {
|
|
monitor = [ ",preferred,auto,auto" ];
|
|
env = with config; [
|
|
"XDG_CURRENT_DESKTOP=Hyprland"
|
|
"XDG_SESSION_TYPE=wayland"
|
|
"XDG_SESSION_DESKTOP=Hyprland"
|
|
"GDK_BACKEND=wayland,x11"
|
|
"GTK_THEME,${gtk.theme.name}"
|
|
"XCURSOR_THEME,${gtk.cursorTheme.name}"
|
|
"XCURSOR_SIZE,${toString gtk.cursorTheme.size}"
|
|
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
|
"QT_QPA_PLATFORM,wayland"
|
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
|
"MOZ_ENABLE_WAYLAND,1"
|
|
"GRIM_DEFAULT_DIR=${xdg.userDirs.pictures}/Grim"
|
|
];
|
|
exec-once = with config; [
|
|
"hyprctl setcursor ${gtk.theme.name} ${toString gtk.cursorTheme.size}"
|
|
"git -C $HOME/.emacs pull --ff-only"
|
|
"swaync"
|
|
"${pkgs.hyprpaper}/bin/hyprpaper"
|
|
"${pkgs.dex}/bin/dex --autostart"
|
|
];
|
|
gestures.workspace_swipe = true;
|
|
input = {
|
|
kb_layout = "gb";
|
|
kb_options = "ctrl:nocaps";
|
|
follow_mouse = 1;
|
|
touchpad.natural_scroll = "yes";
|
|
};
|
|
master = {
|
|
allow_small_split = true;
|
|
special_scale_factor = 0.95;
|
|
mfact = 0.5;
|
|
new_is_master = false;
|
|
new_on_top = false;
|
|
no_gaps_when_only = 0;
|
|
orientation = "left";
|
|
inherit_fullscreen = false;
|
|
smart_resizing = false;
|
|
drop_at_cursor = true;
|
|
};
|
|
general = {
|
|
"col.active_border" = "rgb(b4befe)";
|
|
"col.inactive_border" = "rgb(313244)";
|
|
gaps_in = 5;
|
|
gaps_out = 10;
|
|
border_size = 1;
|
|
cursor_inactive_timeout = 5;
|
|
layout = "master";
|
|
};
|
|
decoration = {
|
|
rounding = 10;
|
|
"col.shadow" = "rgba(0d0e1c99)";
|
|
drop_shadow = "yes";
|
|
shadow_ignore_window = true;
|
|
shadow_range = 4;
|
|
shadow_render_power = 3;
|
|
blur = {
|
|
enabled = true;
|
|
size = 5;
|
|
passes = 3;
|
|
new_optimizations = true;
|
|
brightness = 1.0;
|
|
noise = 2.0e-2;
|
|
};
|
|
};
|
|
animations = {
|
|
enabled = true;
|
|
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
|
animation = [
|
|
"windows, 1, 7, myBezier"
|
|
"windowsOut, 1, 7, default, popin 80%"
|
|
"border, 1, 10, default"
|
|
"borderangle, 1, 8, default"
|
|
"fade, 1, 7, default"
|
|
"workspaces, 1, 6, default"
|
|
];
|
|
};
|
|
misc = {
|
|
disable_splash_rendering = true;
|
|
disable_autoreload = true;
|
|
mouse_move_enables_dpms = true;
|
|
key_press_enables_dpms = true;
|
|
};
|
|
xwayland.force_zero_scaling = true;
|
|
layerrule = let
|
|
blur = x: "blur, ^(${x})$";
|
|
ignorealpha = x: "ignorealpha 0.3, ^(${x})$";
|
|
layers = [
|
|
"waybar"
|
|
"system-menu"
|
|
"rofi"
|
|
"gtk-layer-shell"
|
|
"notifications"
|
|
"swaync-.*"
|
|
];
|
|
in (lib.lists.forEach layers blur)
|
|
++ (lib.lists.forEach layers ignorealpha);
|
|
windowrule = [
|
|
# Float + move system windows
|
|
"float,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"center,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"pin,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"dimaround,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"stayfocused,(org.kde.polkit-kde-authentication-agent-1|Pinentry)"
|
|
"float,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)"
|
|
"size 800 600,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)"
|
|
"move onscreen 100%-820 60,(pavucontrol|.blueman-manager-wrapped|nm-connection-editor)"
|
|
|
|
# LibreOffice
|
|
"nomaximizerequest, (libreoffice|soffice)(.*)"
|
|
"nofullscreenrequest, (libreoffice|soffice)(.*)"
|
|
|
|
# Remmina / NoMachine
|
|
"nofullscreenrequest,(org.remmina.Remmina|Nxplayer.bin)"
|
|
"nomaximizerequest,(org.remmina.Remmina|Nxplayer.bin)"
|
|
];
|
|
windowrulev2 = [
|
|
# Firefox PIP
|
|
"float,title:(Picture-in-Picture|Library),class:(firefox)"
|
|
"size 750 400,title:(Picture-in-Picture),class:(firefox)"
|
|
"size 800 800,title:(Library),class:(firefox)"
|
|
"move onscreen 100%-775 100%-425,title:(Picture-in-Picture),class:(firefox)"
|
|
"center,title:(Library),class:(firefox)"
|
|
"pin,title:(Picture-in-Picture),class:(firefox)"
|
|
|
|
# LibreOffice
|
|
"float,title:(Open),class:(libreoffice|soffice)(.*))"
|
|
|
|
# Steam
|
|
"float,title:(Friends List),class:(steam)"
|
|
"float,title:(Steam Settings),class:(steam)"
|
|
|
|
# Remmina / NoMachine
|
|
"float,title:(Remmina Remote Desktop Client|Remmina Preferences),class:(org.remmina.Remmina)"
|
|
"size 800 600,title:(Remmina Remote Desktop Client|Remmina Preferences),class:(org.remmina.Remmina)"
|
|
"move onscreen 100%-820 60,title:(Remmina Remote Desktop Client|Remmina Preferences),class:(org.remmina.Remmina)"
|
|
];
|
|
bind = let
|
|
workspace = w: [
|
|
"SUPER, ${toString w}, moveworkspacetomonitor, ${toString w} current"
|
|
"SUPER, ${toString w}, workspace, ${toString w}"
|
|
"SUPER SHIFT, ${toString w}, movetoworkspace, ${toString w}"
|
|
];
|
|
in with lib.lists;
|
|
flatten (forEach (range 1 9) workspace) ++ [
|
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
"SUPER, F1, exec, ${pkgs.swaylock-effects}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse"
|
|
"SUPER, Q, killactive,"
|
|
"SUPER SHIFT, Q, exec, rofi -replace -show power-menu"
|
|
"SUPER, V, togglefloating"
|
|
"SUPER, M, fullscreen, 0"
|
|
"SUPER SHIFT, M, fullscreen, 1"
|
|
"SUPER, tab, exec, rofi -replace -show window"
|
|
"SUPER, P, exec, pkill rofi || rofi-pass"
|
|
"SUPER SHIFT, P, exec, pkill rofi || rofi-pass --last-used"
|
|
"SUPER ALT, P, exec, pkill rofi || rofi-pass --insert"
|
|
"SUPER, Z, exec, swaync-client -t -sw"
|
|
"SUPER SHIFT, Z, exec, swaync-client -d -sw"
|
|
|
|
# Common program shortcuts
|
|
"SUPER, Space, exec, rofi -replace -show combi"
|
|
"SUPER, Return, exec, foot"
|
|
"SUPER SHIFT, Return, exec, emacsclient -c"
|
|
"SUPER, S, exec, foot -e btm --group --battery"
|
|
"SUPER, W, exec, nyxt --no-socket --with-file bookmarks=${
|
|
../nyxt/bookmarks.lisp
|
|
}"
|
|
"SUPER, F, exec, thunar $HOME"
|
|
|
|
# Misc useful binds
|
|
'',Print,exec,${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)"''
|
|
",XF86Calculator,exec,rofi -replace -show calc"
|
|
|
|
# Movement binds
|
|
"SUPER, H, movefocus, l"
|
|
"SUPER, L, movefocus, r"
|
|
"SUPER, K, movefocus, u"
|
|
"SUPER, J, movefocus, d"
|
|
"SUPER SHIFT, H, movewindow, l"
|
|
"SUPER SHIFT, L, movewindow, r"
|
|
"SUPER SHIFT, K, movewindow, u"
|
|
"SUPER SHIFT, J, movewindow, d"
|
|
|
|
# Special workspaces
|
|
"SUPER, comma, workspace, r-1"
|
|
"SUPER SHIFT, comma, movetoworkspace, r-1"
|
|
"SUPER, period, workspace, r+1"
|
|
"SUPER SHIFT, period, movetoworkspace, r+1"
|
|
"SUPER, N, workspace, empty"
|
|
"SUPER SHIFT, N, movetoworkspace, empty"
|
|
"SUPER, minus, togglespecialworkspace"
|
|
"SUPER SHIFT, minus, movetoworkspace, special"
|
|
"SUPER, bracketright, focusmonitor, +1"
|
|
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
|
|
"SUPER, bracketleft, focusmonitor, -1"
|
|
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
|
|
"SUPER, O, focusurgentorlast"
|
|
];
|
|
bindl = [
|
|
# Sound
|
|
",XF86AudioMute,exec,${pkgs.avizo}/bin/volumectl %"
|
|
",XF86AudioMicMute,exec,${pkgs.avizo}/bin/volumectl -m %"
|
|
|
|
# Playback
|
|
",XF86AudioPlay,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
|
",XF86AudioStop,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
|
",XF86AudioPrev,exec,${pkgs.playerctl}/bin/playerctl previous"
|
|
",XF86AudioNext,exec,${pkgs.playerctl}/bin/playerctl next"
|
|
];
|
|
bindle = [
|
|
# Sound
|
|
",XF86AudioRaiseVolume,exec,${pkgs.avizo}/bin/volumectl -u + 5"
|
|
",XF86AudioLowerVolume,exec,${pkgs.avizo}/bin/volumectl -u - 5"
|
|
|
|
# Brightness
|
|
",XF86MonBrightnessUp,exec,${pkgs.avizo}/bin/lightctl + 5"
|
|
",XF86MonBrightnessDown,exec,${pkgs.avizo}/bin/lightctl - 5"
|
|
];
|
|
bindm = [
|
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
"SUPER, mouse:272, movewindow"
|
|
"SUPER, mouse:273, resizewindow"
|
|
];
|
|
};
|
|
extraConfig = ''
|
|
exec-once = systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME
|
|
exec-once = systemctl --user restart "xdg-desktop-portal*"
|
|
'';
|
|
};
|
|
}
|