forked from emily/nixfiles
557 lines
18 KiB
Nix
557 lines
18 KiB
Nix
{ config, pkgs, lib, inputs, ... }: {
|
|
imports = [
|
|
inputs.home-manager.nixosModules.home-manager
|
|
];
|
|
|
|
kyouma.machine-type.graphical = true;
|
|
|
|
services.geoclue2.enable = true;
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
pulse.enable = true;
|
|
};
|
|
environment.variables = {
|
|
SDL_VIDEODRIVER = "wayland";
|
|
QT_QPA_PLATFORM = "wayland";
|
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
GDK_BACKEND = "wayland,x11";
|
|
MOZ_ENABLE_WAYLAND = "1";
|
|
CLUTTER_BACKEND = "wayland";
|
|
};
|
|
xdg.portal.wlr.enable = true;
|
|
|
|
home-manager.users.emily = {
|
|
home.keyboard = {
|
|
layout = "de";
|
|
variant = "neo_qwerty";
|
|
};
|
|
|
|
home.file.".local/bin/hypr/playerctl.sh" = let
|
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
|
title = "$(${playerctl} metadata --format '{{markup_escape(title)}}')";
|
|
artist = "$(${playerctl} metadata --format '{{markup_escape(artist)}}')";
|
|
status = "$(${playerctl} status 2> /dev/null)";
|
|
in {
|
|
enable = true;
|
|
executable = true;
|
|
text = ''
|
|
#!${pkgs.bash}/bin/bash
|
|
if [ "${status}" = "Playing" ]; then
|
|
echo -e " ${title}\nPlaying: ${artist} - ${title}\nplaying"
|
|
elif [ "${status}" = "Paused" ]; then
|
|
echo -e " ${title}\nPaused: ${artist} - ${title}\npaused"
|
|
else
|
|
echo -e ""
|
|
fi
|
|
'';
|
|
};
|
|
home.file.".local/bin/hypr" = {
|
|
enable = true;
|
|
executable = true;
|
|
recursive = true;
|
|
source = ./files/scripts;
|
|
};
|
|
home.file.".config/mako-icons/" = {
|
|
enable = true;
|
|
recursive = true;
|
|
source = ./files/icons;
|
|
};
|
|
home.file.".config/rofi" = {
|
|
enable = true;
|
|
recursive = true;
|
|
source = .files/rofi;
|
|
};
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
settings = let
|
|
kitty = "${pkgs.kitty}/bin/kitty";
|
|
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
|
notifysend = "${pkgs.libnotify}/bin/notify-send";
|
|
swaylock = "${pkgs.swaylock}/bin/swaylock";
|
|
dolphin = "${pkgs.libsForQt5.dolphin}/bin/dolphin";
|
|
firefox = "${pkgs.firefox}/bin/firefox";
|
|
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
|
|
screenshot = "~/.local/bin/hypr/screenshot.sh";
|
|
rofi = "${pkgs.rofi-wayland}/bin/rofi";
|
|
in {
|
|
general = {
|
|
border_size = 1;
|
|
gaps_in = 4;
|
|
gaps_out = 8;
|
|
"col.active_border" = "0xFFB4A1DB 0xFFD04E9D 45deg";
|
|
"col.inactive_border" = "1e2030 1e2030 45deg";
|
|
cursor_inactive_timeout = 30;
|
|
layout = "dwindle";
|
|
};
|
|
decoration = {
|
|
rounding = 8;
|
|
shadow_range = 10;
|
|
"col.shadow" = "0x66000000";
|
|
"col.shadow_inactive" = "0x66000000";
|
|
blur = {
|
|
enabled = true;
|
|
passes = 2;
|
|
};
|
|
};
|
|
animations = {
|
|
bezier = [
|
|
"wind, 0.05, 0.9, 0.1, 1.05"
|
|
"winMov, 0.05, 0.9, 0.1, 1.1"
|
|
"winIn, 0.1, 1.1, 0.1, 1.1"
|
|
"winOut, 0.3, -0.3, 0, 1"
|
|
"liner, 1, 1, 1, 1"
|
|
];
|
|
animation = [
|
|
"windows, 1, 6, wind, slide"
|
|
"windowsIn, 1, 8, winIn, slide"
|
|
"windowsOut, 1, 5, winOut, slide"
|
|
"windowsMove, 1, 6, winMov, slide"
|
|
"border, 1, 1, liner"
|
|
"borderangle, 1, 30, liner, loop"
|
|
"fade, 1, 10, default"
|
|
"workspaces, 1, 8, wind"
|
|
];
|
|
};
|
|
|
|
input = {
|
|
kb_layout = "de";
|
|
kb_variant = "neo_qwerty";
|
|
kb_options = "grp:alt_shift_toggle";
|
|
accel_profile = "adaptive";
|
|
scroll_method = "2fg";
|
|
float_switch_override_focus = 2;
|
|
touchpad = {
|
|
natural_scroll = true;
|
|
scroll_factor = 0;
|
|
tap-to-click = false;
|
|
drag_lock = true;
|
|
};
|
|
};
|
|
gestures = {
|
|
workspace_swipe = true;
|
|
workspace_swipe_min_speed_to_force = 15;
|
|
workspace_swipe_cancel_ratio = 0.3;
|
|
workspace_swipe_forever = true;
|
|
};
|
|
group = {
|
|
"col.border_inactive" = "0xFFDB695B";
|
|
"col.border_active" = "0xFF4BC66D";
|
|
groupbar = {
|
|
render_titles = false;
|
|
};
|
|
};
|
|
misc = {
|
|
disable_hyprland_logo = true;
|
|
vrr = 1;
|
|
};
|
|
xwayland = {
|
|
use_nearest_neighbor = false;
|
|
force_zero_scaling = true;
|
|
};
|
|
"device:syna8013:00-06cb:ce69-touchpad" = {
|
|
sensitivity = 0.3;
|
|
};
|
|
"device:logitech-m705" = {
|
|
sensitivity = 0.1;
|
|
accel_profile = "flat";
|
|
};
|
|
"device:tpps/2-ibm-trackpoint" = {
|
|
sensitivity = 0.2;
|
|
scroll_method = "on_button_down";
|
|
accel_profile = "flat";
|
|
};
|
|
"device:tpps/2-elan-trackpoint" = {
|
|
sensitivity = 0;
|
|
scroll_method = "on_button_down";
|
|
accel_profile = "flat";
|
|
};
|
|
"device:tpps/2-elan-trackpoint" = {
|
|
sensitivity = 0;
|
|
scroll_method = "on_button_down";
|
|
accel_profile = "flat";
|
|
};
|
|
monitor = [
|
|
"eDP-1, 3840x2400@60, 0x0, 1, bitdepth, 10"
|
|
"eDP-1, addreserved,-8,0,0,0"
|
|
"desc:ASUSTek COMPUTER INC ASUS VA24E M7LMTF021529, 1920x1080@60, -320x-1080, 1"
|
|
"desc:ASUSTek COMPUTER INC ASUS VA24E M7LMTF021525, 1920x1080@60, 1600x-1080, 1"
|
|
",preferred,auto,1"
|
|
];
|
|
workspace = [
|
|
"1, monitor:eDP-1, default:true"
|
|
"2, monitor:eDP-1"
|
|
"3, monitor:eDP-1"
|
|
"8, monitor:DP-2"
|
|
"9, monitor:DP-3"
|
|
"10, monitor:eDP-1"
|
|
];
|
|
windowrule = [
|
|
"float, foot-float"
|
|
"float, yad|nm-connection-editor|pavucontrol"
|
|
"float, xfce-polkit|kvantummanager|qt5ct|zenity|waypaper"
|
|
"float, feh|com.github.weclaw1.ImageRoll|Gpicview|Gimp|MPlayer"
|
|
"float, VirtualBox Manager|qemu|Qemu-system-x86_64|PacketTracer"
|
|
"float, title:File Operation Progress|Open Files|Media viewer"
|
|
"float, title:Confirm to replace files"
|
|
"size 60% 64%, com.github.weclaw1.ImageRoll "
|
|
"center, com.github.weclaw1.ImageRoll"
|
|
"animation slide down,foot-full"
|
|
"animation slide up,Rofi"
|
|
];
|
|
|
|
"$mod" = "SUPER";
|
|
"$notifycmd" = "${notifysend} -h string:x-canonical-private-synchronous:hypr-cfg -u low";
|
|
bind = [
|
|
"$mod, Return, exec, ${kitty}"
|
|
"$mod, F1, exec, ${dolphin}"
|
|
"$mod, F2, exec, ${firefox}"
|
|
|
|
# Rofi
|
|
"$mod, D, exec, ${rofi} -show drun -theme ~/.config/rofi/launcher.rasi"
|
|
"$mod, R, exec, ${rofi} -show run -theme ~/.config/rofi/runner.rasi"
|
|
"$mod, X, exec, ~/.local/bin/hypr/rofi_powermenu.sh"
|
|
"$mod, A, exec, ~/.local/bin/hypr/rofi_screenshot.sh"
|
|
|
|
# Misc
|
|
"$mod, C, exec, ~/.local/bin/hypr/colorpicker.sh"
|
|
"CTRL_ALT, L, exec, ${swaylock} -f -i ~/Pictures/wallpapers/lockscreen.png"
|
|
|
|
# Function keys
|
|
", XF86MonBrightnessUp, exec, ${brightnessctl} s +10%"
|
|
", XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-"
|
|
", XF86AudioRaiseVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ +2dB"
|
|
", XF86AudioLowerVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ -2dB"
|
|
", XF86AudioMute, exec, ${pactl} set-sink-mute @DEFAULT_SINK@ toggle"
|
|
", XF86AudioMicMute, exec, ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
|
|
", XF86AudioNext, exec, ${playerctl} next"
|
|
", XF86AudioPrev, exec, ${playerctl} previous"
|
|
", XF86AudioPlay, exec, ${playerctl} play"
|
|
", XF86AudioStop, exec, ${playerctl} pause"
|
|
|
|
# Scratchpad
|
|
"$mod SHIFT, MINUS, movetoworkspace,special"
|
|
"$mod, MINUS, togglespecialworkspace,"
|
|
|
|
# Screenshots
|
|
", Print, exec, ${screenshot} --now"
|
|
"ALT, Print, exec, ${screenshot} --in5"
|
|
"SHIFT, Print, exec, ${screenshot} --in10"
|
|
"CTRL, Print, exec, ${screenshot} --win"
|
|
"$mod, Print, exec, ${screenshot} --area"
|
|
|
|
# Hyprland
|
|
"$mod SHIFT, Q, killactive,"
|
|
"CTRL_ALT, Delete, exit,"
|
|
"$mod, F, fullscreen, 0"
|
|
"$mod, F, exec, $notifycmd 'Fullscreen Mode'"
|
|
"$mod, S, pseudo,"
|
|
"$mod, S, exec, $notifycmd 'Pseudo Mode'"
|
|
"$mod SHIFT, Space, togglefloating,"
|
|
"$mod SHIFT, Space, centerwindow,"
|
|
|
|
# windowgroup
|
|
"$mod, G, togglegroup"
|
|
"$mod, G, exec, $notifycmd 'Toggled Group Mode'"
|
|
"$mod, H, changegroupactive, b"
|
|
"$mod, L, changegroupactive, f"
|
|
|
|
# Change Focusconfig
|
|
"$mod, left, movefocus, l"
|
|
"$mod, H, movefocus, l"
|
|
"$mod, right, movefocus, r"
|
|
"$mod, L, movefocus, r"
|
|
"$mod, up, movefocus, u"
|
|
"$mod, K, movefocus, u"
|
|
"$mod, down, movefocus, d"
|
|
"$mod, J, movefocus, d"
|
|
|
|
# Move Active
|
|
"$mod SHIFT, left, movewindow, l"
|
|
"$mod SHIFT, H, movewindow, l"
|
|
"$mod SHIFT, right, movewindow, r"
|
|
"$mod SHIFT, L, movewindow, r"
|
|
"$mod SHIFT, up, movewindow, u"
|
|
"$mod SHIFT, K, movewindow, u"
|
|
"$mod SHIFT, down, movewindow, d"
|
|
"$mod SHIFT, J, movewindow, d"
|
|
|
|
# Switch between windows
|
|
"$mod,Tab,cyclenext,"
|
|
"$mod,Tab,bringactivetotop,"
|
|
|
|
# Workspaces
|
|
"$mod, 1, workspace, 1"
|
|
"$mod, 2, workspace, 2"
|
|
"$mod, 3, workspace, 3"
|
|
"$mod, 4, workspace, 4"
|
|
"$mod, 5, workspace, 5"
|
|
"$mod, 6, workspace, 6"
|
|
"$mod, 7, workspace, 7"
|
|
"$mod, 8, workspace, 8"
|
|
"$mod, 9, workspace, 9"
|
|
"$mod, 0, workspace, 10"
|
|
|
|
# Send to Workspaces
|
|
"$mod SHIFT, 1, movetoworkspace, 1"
|
|
"$mod SHIFT, 2, movetoworkspace, 2"
|
|
"$mod SHIFT, 3, movetoworkspace, 3"
|
|
"$mod SHIFT, 4, movetoworkspace, 4"
|
|
"$mod SHIFT, 5, movetoworkspace, 5"
|
|
"$mod SHIFT, 6, movetoworkspace, 6"
|
|
"$mod SHIFT, 7, movetoworkspace, 7"
|
|
"$mod SHIFT, 8, movetoworkspace, 8"
|
|
"$mod SHIFT, 9, movetoworkspace, 9"
|
|
"$mod SHIFT, 0, movetoworkspace, 10"
|
|
|
|
# Change Workspace Mode
|
|
"$mod CTRL, F, workspaceopt, allfloat"
|
|
"$mod CTRL, F, exec, $notifycmd 'Toggled All Float Mode'"
|
|
"$mod CTRL, S, workspaceopt, allpseudo"
|
|
"$mod CTRL, S, exec, $notifycmd 'Toggled All Pseudo Mode'"
|
|
|
|
# Misc
|
|
"$mod SHIFT, P, pin,"
|
|
"$mod SHIFT, P, exec, $notifycmd 'Toggled Pin'"
|
|
"$mod SHIFT, S, swapnext"
|
|
"$mod SHIFT, O, toggleopaque"
|
|
];
|
|
binde = [
|
|
# Resize Active
|
|
"$mod CTRL, left, resizeactive, -20 0"
|
|
"$mod CTRL, H, resizeactive, -20 0"
|
|
"$mod CTRL, right, resizeactive, 20 0"
|
|
"$mod CTRL, L, resizeactive, 20 0"
|
|
"$mod CTRL, up, resizeactive, 0 -20"
|
|
"$mod CTRL, K, resizeactive, 0 -20"
|
|
"$mod CTRL, down, resizeactive, 0 20"
|
|
"$mod CTRL, J, resizeactive, 0 20"
|
|
|
|
# Move Active (Floating Only)
|
|
"$mod ALT, left, moveactive, -80 0"
|
|
"$mod ALT, H, moveactive, -80 0"
|
|
"$mod ALT, right, moveactive, 80 0"
|
|
"$mod ALT, L, moveactive, 80 0"
|
|
"$mod ALT, up, moveactive, 0 -80"
|
|
"$mod ALT, K, moveactive, 0 -80"
|
|
"$mod ALT, down, moveactive, 0 80"
|
|
"$mod ALT, J, moveactive, 0 80"
|
|
];
|
|
bindl = [
|
|
",switch:Lid Switch, exec, ${swaylock} -f -i ~/Pictures/wallpapers/lockscreen.png"
|
|
];
|
|
bindm = [
|
|
"$mod, mouse:272, movewindow"
|
|
"$mod, mouse:273, resizewindow"
|
|
];
|
|
};
|
|
};
|
|
|
|
programs.imv.enable = true;
|
|
|
|
programs.wpaperd = {
|
|
enable = true;
|
|
settings.default = {
|
|
path = "/home/emily/Pictures/wallpapers/sylviaritter/";
|
|
duration = "60m";
|
|
sorting = "random";
|
|
};
|
|
};
|
|
programs.waybar = {
|
|
enable = true;
|
|
style = ./waybar-style.css;
|
|
systemd = {
|
|
enable = true;
|
|
target = "hyprland-session.target";
|
|
};
|
|
settings = {
|
|
hyprbar = {
|
|
layer = "top";
|
|
position = "top";
|
|
output = "eDP-1";
|
|
margin = "0 0 0 0";
|
|
modules-left = [ "hyprland/workspaces" "custom/playerctl" "tray" ];
|
|
modules-center = [ "clock" ];
|
|
modules-right = [ "backlight" "pulseaudio" "temperature" "cpu" "memory" "battery" "network" ];
|
|
|
|
"hyprland/workspaces" = {
|
|
format = "{icon}";
|
|
sort-by-number = true;
|
|
active-only = false;
|
|
on-click = "activate";
|
|
format-icons = {
|
|
"10" = "0";
|
|
urgent = "";
|
|
focused = "";
|
|
default = "";
|
|
};
|
|
};
|
|
idle_inhibitor = {
|
|
format = "{icon}";
|
|
format-icons = {
|
|
activated = "";
|
|
deactivated = "";
|
|
};
|
|
};
|
|
tray = {
|
|
icon-size = 18;
|
|
spacing = 8;
|
|
};
|
|
clock = {
|
|
tooltip-format = "{:%A %d %B | %H:%M}";
|
|
format = " {:%Y-%m-%d %H:%M:%OS}";
|
|
format-alt = " {:%Y %b %d %a %H:%M:%OS}";
|
|
interval = 1;
|
|
};
|
|
cpu = {
|
|
format = " {usage:02}";
|
|
interval = 2;
|
|
on-click = "kitty -e htop";
|
|
};
|
|
memory = {
|
|
format = " {used:0.2f}";
|
|
on-click = "kitty -e htop";
|
|
};
|
|
temperature = {
|
|
hwmon-path = "/sys/class/hwmon/hwmon1/temp1_input";
|
|
critical-threshold = 80;
|
|
format = " {temperatureC}°C";
|
|
};
|
|
backlight = {
|
|
format = "{icon} {percent: >3}%";
|
|
format-icons = ["", ""];
|
|
on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -c backlight set 1%-";
|
|
on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -c backlight set +1%";
|
|
};
|
|
battery = {
|
|
states = {
|
|
good = 90;
|
|
warning = 30;
|
|
critical = 15;
|
|
};
|
|
format = "\uf1e6";
|
|
format-discharging = "{icon} {capacity: >3}% {power:0.1f}W";
|
|
format-charging = "\uf1e6 {capacity: >3}% {power:0.1f}W";
|
|
interval = 3;
|
|
format-icons = ["", "", "", "", ""];
|
|
};
|
|
network = {
|
|
format = "⚠ Disabled";
|
|
format-wifi = " {essid}";
|
|
format-ethernet = " Wired";
|
|
format-disconnected = "⚠ Disconnected";
|
|
on-click = "nm-connection-editor";
|
|
};
|
|
pulseaudio = {
|
|
scroll-step = 5;
|
|
format = "{icon} {volume: >3}%";
|
|
format-bluetooth = "{icon} {volume: >3}%";
|
|
format-muted = " muted";
|
|
format-icons = {
|
|
headphones = "";
|
|
handsfree = "";
|
|
headset = "";
|
|
phone = "";
|
|
portable = "";
|
|
car = "";
|
|
default = ["", ""];
|
|
};
|
|
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
};
|
|
"custom/playerctl" = {
|
|
interval = 1;
|
|
exec = "~/.local/bin/hypr/playerctl.sh";
|
|
on-click-middle = "${pkgs.playerctl}/bin/playerctl play-pause";
|
|
on-click-right = "${pkgs.playerctl}/bin/playerctl next";
|
|
on-click = "${pkgs.playerctl}/bin/playerctl previous";
|
|
escape = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
programs.kitty = {
|
|
enable = true;
|
|
font.size = "11";
|
|
font.name = "JetBrains Mono";
|
|
settings = {
|
|
enable_audio_bell = false;
|
|
scrollback_lines = 65536;
|
|
remember_window_size = false;
|
|
initial_window_width = 1200;
|
|
initial_window_height = 800;
|
|
|
|
bold_font = "auto";
|
|
italic_font = "auto";
|
|
bold_italic_font = "auto";
|
|
|
|
background = "#090312";
|
|
background_opacity = "0.7";
|
|
};
|
|
keybindings = {
|
|
"shift+right" = "next_tab";
|
|
"ctrl+l" = "next_tab";
|
|
"shift+left" = "previous_tab";
|
|
"ctrl+h" = "previous_tab";
|
|
};
|
|
};
|
|
programs.rofi = {
|
|
enable = true;
|
|
package = pkgs.rofi-wayland;
|
|
};
|
|
services.gammastep = {
|
|
enable = true;
|
|
provider = "geoclue2";
|
|
temperature.day = "6500";
|
|
temperature.night = "3700";
|
|
settings.general.adjustment-method = "wayland";
|
|
};
|
|
services.mako = {
|
|
enable = true;
|
|
anchor = "top-right";
|
|
backgroundColor = "#24273a";
|
|
borderColor = "#c6a0f6";
|
|
borderRadius = 15;
|
|
borderSize = 2;
|
|
defaultTimeout = 5000;
|
|
layer = "overlay";
|
|
maxIconSize = 48;
|
|
padding = "15";
|
|
progressColor = "over #B4A1DB";
|
|
sort = "-time";
|
|
textColor = "#cad3f5";
|
|
extraConfig = ''
|
|
max-history=100
|
|
on-button-left=dismiss
|
|
on-button-right=dismiss-all
|
|
on-notify=exec ${pkgs.mpv}/bin/mpv /usr/share/sounds/freedesktop/stereo/message.oga
|
|
|
|
[urgency=low]
|
|
border-color=#B4A1DB
|
|
default-timeout=2000
|
|
|
|
[urgency=normal]
|
|
border-color=#B4A1DB
|
|
default-timeout=5000
|
|
|
|
[urgency=high]
|
|
border-color=#D04E9D
|
|
text-color=#D04E9D
|
|
default-timeout=0
|
|
|
|
[category=mpd]
|
|
border-color=#E49186
|
|
default-timeout=2000
|
|
group-by=category
|
|
'';
|
|
};
|
|
services.gpg-agent = {
|
|
enable = true;
|
|
enableSshSupport = true;
|
|
};
|
|
services.syncthing = {
|
|
enable = true;
|
|
tray.enable = true;
|
|
};
|
|
};
|
|
}
|