feat: add home manager hyprland module to enable hyprland plugins

This commit is contained in:
DACHXY 2024-12-30 18:15:09 +08:00
parent 6997c5a968
commit 64499a5e90
30 changed files with 456 additions and 365 deletions

62
flake.lock generated
View file

@ -1,5 +1,26 @@
{
"nodes": {
"Hyprspace": {
"inputs": {
"hyprland": [
"hyprland"
],
"systems": "systems"
},
"locked": {
"lastModified": 1734671517,
"narHash": "sha256-rTKZlNZP13zIy8eyHiTbCN15rON0FG9S8zxRE7jH+Ak=",
"owner": "KZDKM",
"repo": "Hyprspace",
"rev": "6d49cb495c3b0364fb6c4b50ab4c04a864aa6c43",
"type": "github"
},
"original": {
"owner": "KZDKM",
"repo": "Hyprspace",
"type": "github"
}
},
"aquamarine": {
"inputs": {
"hyprutils": [
@ -67,7 +88,7 @@
},
"flake-utils": {
"inputs": {
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1705309234,
@ -85,7 +106,7 @@
},
"flake-utils_2": {
"inputs": {
"systems": "systems_3"
"systems": "systems_4"
},
"locked": {
"lastModified": 1726560853,
@ -151,16 +172,15 @@
]
},
"locked": {
"lastModified": 1735344290,
"narHash": "sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM=",
"lastModified": 1735381016,
"narHash": "sha256-CyCZFhMUkuYbSD6bxB/r43EdmDE7hYeZZPTCv0GudO4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "613691f285dad87694c2ba1c9e6298d04736292d",
"rev": "10e99c43cdf4a0713b4e81d90691d22c6a58bdf2",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
@ -255,7 +275,7 @@
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems_2",
"systems": "systems_3",
"xdph": "xdph"
},
"locked": {
@ -523,16 +543,16 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1735264675,
"narHash": "sha256-MgdXpeX2GuJbtlBrH9EdsUeWl/yXEubyvxM1G+yO4Ak=",
"lastModified": 1735291276,
"narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d49da4c08359e3c39c4e27c74ac7ac9b70085966",
"rev": "634fd46801442d760e09493a794c4f15db2d0cbb",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
@ -579,6 +599,7 @@
},
"root": {
"inputs": {
"Hyprspace": "Hyprspace",
"ghostty": "ghostty",
"home-manager": "home-manager",
"hyprgrass": "hyprgrass",
@ -611,6 +632,21 @@
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -625,7 +661,7 @@
"type": "github"
}
},
"systems_2": {
"systems_3": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
@ -640,7 +676,7 @@
"type": "github"
}
},
"systems_3": {
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",

View file

@ -2,11 +2,9 @@
description = "danny NixOS";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
# nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager/release-24.11";
# home-manager.url = "github:nix-community/home-manager";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
nix-index-database.url = "github:nix-community/nix-index-database";
@ -20,7 +18,6 @@
url = "github:sxyazi/yazi";
};
# Not used yet due to some skill issue
hyprland = {
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
};
@ -34,13 +31,18 @@
url = "github:horriblename/hyprgrass";
inputs.hyprland.follows = "hyprland";
};
Hyprspace = {
url = "github:KZDKM/Hyprspace";
inputs.hyprland.follows = "hyprland";
};
};
outputs =
{ self, nixpkgs, nix-index-database, ... }@inputs:
let
system = "x86_64-linux";
nix-version = "24.11";
nix-version = "25.05";
in
{
formatter.x86_64-linux =

View file

@ -1,87 +0,0 @@
$mainMod = SUPER
$scripts = ~/.config/scripts/
$terminal = ghostty
$filemanager = thunar
$browser = firefox
bind = CTRL ALT, T, exec, $terminal
bind = $mainMod, Return, exec, $terminal
bind = $mainMod, Q, killactive,
bind = $mainMod, M, exec, wlogout --protocol layer-shell
bind = $mainMod, E, exec, $filemanager
bind = $mainMod, V, togglefloating,
bind = ALT, SPACE, exec, rofi -config ~/.config/rofi/apps.rasi -show drun
bind = $mainMod ALT, W, exec, $scripts/waybarRestart.sh
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, S, togglesplit, # dwindle
bind = CTRL&$mainMod&SHIFT, L, exec, swaylock
bind = $mainMod SHIFT, s, exec, hyprshot -m region --clipboard-only --freeze
bind = CTRL SHIFT, s, exec, hyprshot -m window --clipboard-only --freeze
bind = CTRL SHIFT $mainMod, s, exec, hyprshot -m output --clipboard-only --freeze
bind = $mainMod, PERIOD, exec, flatpak run it.mijorus.smile
bind = $mainMod, X, exec, sleep 0.1 && swaync-client -t -sw
bind = $mainMod SHIFT, C, centerwindow
bind = ,F11, fullscreen
bind = $mainMod, F, exec, $browser
bind = $mainMod, C, exec, NIXOS_OZONE_WL=1 code
# Cycle windows
bind = ALT, TAB, cyclenext
bind = ALT, TAB, bringactivetotop
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
# Workspace Scroll
bind = $mainMod, mouse_down, workspace, e-1
bind = $mainMod, mouse_up, workspace, e+1
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = $mainMod CTRL, l, resizeactive, 10 0
bind = $mainMod CTRL, h, resizeactive, -10 0
bind = $mainMod CTRL, k, resizeactive, 0 -10
bind = $mainMod CTRL, j, resizeactive, 0 10
bind = $mainMod SHIFT, l, movewindow, r
bind = $mainMod SHIFT, h, movewindow, l
bind = $mainMod SHIFT, k, movewindow, u
bind = $mainMod SHIFT, j, movewindow, d
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Media
bind = ,XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ 2%+
bind = ,XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ 2%-
bind = ,XF86MonBrightnessDown, exec, brightnessctl set 10%-
bind = ,XF86MonBrightnessUp, exec, brightnessctl set 10%+
bind = ,XF86AudioPrev, exec, playerctl previous
bind = ,XF86AudioNext, exec, playerctl next
bind = ,XF86AudioPlay, exec, playerctl play-pause
bind = ,XF86AudioStop, exec, playerctl stop
bind = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle

View file

@ -1,14 +0,0 @@
$scripts = ~/.config/scripts/
exec-once = swaync -s ~/.config/swaync/style.css -c ~/.config/swaync/config.json
exec-once = dbus-update-activation-environment --systemd --all
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = waybar -c ~/.config/waybar/config.json -s ~/.config/waybar/style.css
exec-once = hyprpaper
exec-once = swayidle -w
exec-once = sway-audio-idle-inhibit
exec-once = nwg-look -a
exec-once = [silent] fcitx5 -d -r &
exec-once = [silent] fcitx5-remote -r &
exec = hyprsunset -t 3000k &

View file

@ -1,8 +0,0 @@
debug:disable_logs = false
source = ~/.config/hypr/monitor.conf
source = ~/.config/hypr/exec.conf
source = ~/.config/hypr/bind.conf
source = ~/.config/hypr/input.conf
source = ~/.config/hypr/window.conf
source = ~/.config/hypr/windowrule.conf

View file

@ -1,4 +0,0 @@
preload = ~/.config/wallpapers/wall.png
wallpaper = , ~/.config/wallpapers/wall.png
splash = false
ipc = on

View file

@ -1,20 +0,0 @@
input {
kb_layout = us
kb_variant =
kb_model =
kb_rules =
follow_mouse = 1
accel_profile = flat
touchpad {
natural_scroll = true
}
sensitivity = -0.1 # -1.0 - 1.0, 0 means no modification.
}
cursor {
no_hardware_cursors = true
}

View file

@ -1,3 +0,0 @@
monitor=desc:ASUSTek COMPUTER INC ASUS VG32VQ1B 0x00002271,2560x1440@165, 0x0, 1
monitor=desc:Acer Technologies XV272U V3 7422007E54222, 2560x1440@144, -1440x-540, 1, transform, 1
monitor=desc:LG Display 0x0665, preferred, 0x0, 1.25

View file

@ -1,70 +0,0 @@
xwayland {
force_zero_scaling = true
}
general {
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgb(EBDBB2) rgb(24273A) rgb(24273A) rgb(EBDBB2) 45deg
col.inactive_border= rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg
layout = dwindle
allow_tearing = false
}
decoration {
rounding = 10
blur {
enabled = true
size = 5
passes = 3
new_optimizations = true
ignore_opacity = on
xray = false
}
active_opacity = 0.8
inactive_opacity = 0.8
fullscreen_opacity = 1.0
}
animations {
enabled = true
bezier = linear, 0, 0, 1, 1
bezier = md3_standard, 0.2, 0, 0, 1
bezier = md3_decel, 0.05, 0.7, 0.1, 1
bezier = md3_accel, 0.3, 0, 0.8, 0.15
bezier = overshot, 0.05, 0.9, 0.1, 1.1
bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
bezier = menu_decel, 0.1, 1, 0, 1
bezier = menu_accel, 0.38, 0.04, 1, 0.07
bezier = easeInOutCirc, 0.85, 0, 0.15, 1
bezier = easeOutCirc, 0, 0.55, 0.45, 1
bezier = easeOutExpo, 0.16, 1, 0.3, 1
bezier = softAcDecel, 0.26, 0.26, 0.15, 1
bezier = md2, 0.4, 0, 0.2, 1
animation = windows, 1, 3, md3_decel, popin 60%
animation = windowsIn, 1, 3, md3_decel, popin 60%
animation = windowsOut, 1, 3, md3_accel, popin 60%
animation = border, 1, 10, default
animation = fade, 1, 3, md3_decel
animation = workspaces, 1, 7, menu_decel, slide
animation = specialWorkspace, 1, 3, md3_decel, slidevert
}
dwindle {
pseudotile = yes
preserve_split = yes
}
master {
new_on_top = true
}
gestures {
workspace_swipe = true
}
misc {
force_default_wallpaper = 0
}

View file

@ -1,58 +0,0 @@
windowrule = pseudo, fcitx
windowrule = float, file_progress
windowrule = float, confirm
windowrule = float, dialog
windowrule = float, download
windowrule = float, notification
windowrule = float, error
windowrule = float, splash
windowrule = float, confirmreset
windowrule = float, title:Open File
windowrule = float, title:branchdialog
windowrule = float, viewnior
windowrule = float, pavucontrol-qt
windowrule = float, pavucontrol
windowrule = float, file-roller
windowrule = fullscreen, wlogout
windowrule = float, title:wlogout
windowrule = fullscreen, title:wlogout
windowrule = idleinhibit stayfocused, mpv
windowrulev2 = float, title:^(Media viewer)$
windowrulev2 = float, title:^(File Operation Progress)$
windowrulev2 = float, class:^(it.mijorus.smile)
windowrulev2 = float, class:^(xdg-desktop-portal-gtk)$
windowrulev2 = float, title:^(Steam Settings)$
# Picture in picture windows
windowrulev2 = float, title:^(Picture-in-Picture)$
windowrulev2 = pin, title:^(Picture-in-Picture)$
windowrulev2 = float, class:^(vesktop)$,title:^(Discord Popout)$
windowrulev2 = pin, class:^(vesktop)$,title:^(Discord Popout)$
windowrulev2 = float, class:^(steam)$,title:^(Friends List)$
# Workspace assign
windowrulev2 = workspace: 5, class:^(steam)$
# Line
windowrulev2 = workspace: 2, initialTitle:^(LINE)$
windowrulev2 = float, initialTitle:^(LINE)$
# VLC
windowrulev2 = workspace: 3, initialClass: ^(vlc)
layerrule = blur, waybar
layerrule = blur, logout_dialog
layerrule = unset, rofi
layerrule = blur, rofi
layerrule = ignorezero, rofi
layerrule = unset, swaync-control-center
layerrule = unset, swaync-notification-window
layerrule = blur, swaync-control-center
layerrule = blur, swaync-notification-window
layerrule = ignorezero, swaync-control-center
layerrule = ignorezero, swaync-notification-window
layerrule = ignorealpha 0.1, swaync-control-center
layerrule = ignorealpha 0.1, swaync-notification-window

View file

@ -5,4 +5,4 @@
killall .waybar-wrapped
killall .swaync-wrapped
waybar -c ~/.config/waybar/config.json -s ~/.config/waybar/style.css &
swaync -s ~/.config/swaync/style.css -c ~/.config/swaync/config.json &
swaync -c ~/.config/swaync/config.json -s ~/.config/swaync/style.css &

View file

@ -7,13 +7,13 @@
font-weight: bold;
font-size: 15px;
border-width: 3px;
border-color: #ebdbb2
border-color: #ebdbb2;
}
.control-center .notification-row:focus,
.control-center .notification-row:hover {
opacity: 1;
background: @bgc
background: @bgc;
}
.notification-row {
@ -50,8 +50,8 @@
box-shadow: none;
background: @borderc;
color: @textc;
transition: all .15s ease-in-out;
border: none
transition: all 0.15s ease-in-out;
border: none;
}
.notification-action {
@ -68,7 +68,7 @@
.time {
font-size: 11px;
color: @borderc;
margin-right: 40px
margin-right: 40px;
}
.body {
@ -86,15 +86,15 @@
}
.control-center-list-placeholder {
opacity: .5
opacity: 0.5;
}
.floating-notifications {
background: transparent
background: transparent;
}
.blank-window {
background: alpha(black, 0.1)
background: alpha(black, 0.1);
}
.widget-title {
@ -104,7 +104,7 @@
font-size: 1.5rem;
}
.widget-title>button {
.widget-title > button {
font-size: 1rem;
color: @borderc;
padding: 10px;
@ -114,7 +114,7 @@
border-radius: 5px;
}
.widget-title>button:hover {
.widget-title > button:hover {
background: @borderc;
color: #282828;
}
@ -123,7 +123,7 @@
margin: 10px 10px 10px 10px;
}
.widget-label>label {
.widget-label > label {
font-size: 1rem;
color: @textc;
}
@ -135,11 +135,11 @@
border-radius: 20px;
}
.widget-mpris>box>button {
.widget-mpris > box > button {
border-radius: 20px;
}
.widget-mpris-player {
padding: 5px 5px;
margin: 10px
margin: 10px;
}

View file

@ -10,7 +10,7 @@ in
".config/wallpapers".source = "${configDir}/wallpapers";
".config/kitty".source = "${configDir}/kitty";
".config/neofetch".source = "${configDir}/neofetch";
".config/hypr".source = "${configDir}/hypr";
# ".config/hypr".source = "${configDir}/hypr";
".config/swayidle".source = "${configDir}/swayidle";
".config/swaylock".source = "${configDir}/swaylock";
".config/wlogout".source = "${configDir}/wlogout";

87
home/user/hypr/bind.nix Normal file
View file

@ -0,0 +1,87 @@
{ mainMod }:
let
browser = "firefox";
terminal = "ghostty";
filemanager = "thunar";
scripts = "~/.config/scripts";
resizeStep = builtins.toString 20;
brightnessStep = builtins.toString 10;
volumeStep = builtins.toString 2;
in
[
''${mainMod}, F, exec, ${browser}''
''${mainMod}, RETURN, exec, ${terminal}''
''CTRL ALT, T, exec, ${terminal}''
''${mainMod}, Q, killactive, ''
''${mainMod}, M, exec, wlogout --protocol layer-shell''
''${mainMod}, E, exec, ${filemanager}''
''${mainMod}, V, togglefloating, ''
''ALT, SPACE, exec, rofi -config ~/.config/rofi/apps.rasi -show drun''
''${mainMod} ALT, W, exec, ${scripts}/waybarRestart.sh''
''${mainMod}, P, pseudo, # dwindle''
''${mainMod}, S, togglesplit, # dwindle''
''CTRL ${mainMod} SHIFT, L, exec, swaylock''
''${mainMod} SHIFT, s, exec, hyprshot -m region --clipboard-only --freeze''
''CTRL SHIFT, s, exec, hyprshot -m window --clipboard-only --freeze''
''CTRL SHIFT ${mainMod}, s, exec, hyprshot -m output --clipboard-only --freeze''
''${mainMod}, PERIOD, exec, flatpak run it.mijorus.smile ''
''${mainMod}, X, exec, sleep 0.1 && swaync-client -t -sw''
''${mainMod} SHIFT, C, centerwindow''
'',F11, fullscreen''
''${mainMod}, F, exec, ${browser}''
''${mainMod}, C, exec, NIXOS_OZONE_WL=1 code''
# Cycle windows
''ALT, TAB, cyclenext''
''ALT, TAB, bringactivetotop''
''${mainMod}, h, movefocus, l''
''${mainMod}, l, movefocus, r''
''${mainMod}, k, movefocus, u''
''${mainMod}, j, movefocus, d''
''${mainMod}, mouse_down, workspace, e-1''
''${mainMod}, mouse_up, workspace, e+1''
''${mainMod} CTRL, l, resizeactive, ${resizeStep} 0''
''${mainMod} CTRL, h, resizeactive, -${resizeStep} 0''
''${mainMod} CTRL, k, resizeactive, 0 -${resizeStep}''
''${mainMod} CTRL, j, resizeactive, 0 ${resizeStep}''
''${mainMod} SHIFT, l, movewindow, r''
''${mainMod} SHIFT, h, movewindow, l''
''${mainMod} SHIFT, k, movewindow, u''
''${mainMod} SHIFT, j, movewindow, d''
# Media
'',XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ ${volumeStep}%+''
'',XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ ${volumeStep}%-''
'',XF86MonBrightnessDown, exec, brightnessctl set ${brightnessStep}%-''
'',XF86MonBrightnessUp, exec, brightnessctl set ${brightnessStep}%+''
'',XF86AudioPrev, exec, playerctl previous''
'',XF86AudioNext, exec, playerctl next''
'',XF86AudioPlay, exec, playerctl play-pause''
'',XF86AudioStop, exec, playerctl stop''
'',XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle''
# ==== Plugins ==== #
# Overview
''${mainMod}, o, hyprexpo:expo, toggle''
] ++ (
# workspaces
# binds $mainMod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (builtins.genList
(i:
let ws = i + 1;
in
[
"${mainMod}, code:1${toString i}, workspace, ${toString ws}"
"${mainMod} SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]
)
9)
)

6
home/user/hypr/bindm.nix Normal file
View file

@ -0,0 +1,6 @@
{ mainMod }:
[
# Move/resize windows with mainMod + LMB/RMB and dragging
''${mainMod}, mouse:272, movewindow''
''${mainMod}, mouse:273, resizewindow''
]

15
home/user/hypr/exec.nix Normal file
View file

@ -0,0 +1,15 @@
{ pkgs, lib, inputs, system, ... }:
let
startupScript = pkgs.pkgs.writeShellScriptBin "start" ''
swaync -s ~/.config/swaync/style.css -c ~/.config/swaync/config.json &
dbus-update-activation-environment --systemd --all &
systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &
waybar -c ~/.config/waybar/config.json -s ~/.config/waybar/style.css &
swayidle -w &
sway-audio-idle-inhibit &
fcitx5 -d -r &
fcitx5-remote -r &
hyprsunset -t 3000k &
'';
in
''${startupScript}/bin/start''

22
home/user/hypr/input.nix Normal file
View file

@ -0,0 +1,22 @@
{
input = {
kb_layout = "us";
kb_variant = "";
kb_model = "";
kb_rules = "";
follow_mouse = 1;
accel_profile = "flat";
touchpad = {
natural_scroll = true;
};
sensitivity = -0.1; # -1.0 - 1.0, 0 means no modification.
};
cursor = {
no_hardware_cursors = true;
};
}

View file

@ -0,0 +1,5 @@
[
''desc:ASUSTek COMPUTER INC ASUS VG32VQ1B 0x00002271,2560x1440@165, 0x0, 1''
''desc:Acer Technologies XV272U V3 7422007E54222, 2560x1440@144, -1440x-540, 1, transform, 1''
''desc:LG Display 0x0665, preferred, 0x0, 1.25''
]

26
home/user/hypr/plugin.nix Normal file
View file

@ -0,0 +1,26 @@
{
hyprexpo = {
columns = 3;
gap_size = 5;
bg_col = "rgb(111111)";
workspace_method = "center current"; # [center/first] [workspace] e.g. first 1 or center m+1
enable_gesture = true; # laptop touchpad
gesture_fingers = 3; # 3 or 4
gesture_distance = 300; # how far is the "max"
gesture_positive = true; # positive = swipe down. Negative = swipe up.
};
hyprwinrap = {
class = "kitty-bg";
};
touch_gestures = {
sensitivity = 4.0;
workspace_swipe_fingers = 3;
workspace_swipe_edge = "d";
long_press_delay = 400;
resize_on_border_long_press = true;
edge_margin = 10;
emulate_touchpad_swipe = false;
};
}

77
home/user/hypr/window.nix Normal file
View file

@ -0,0 +1,77 @@
{
xwayland = {
force_zero_scaling = true;
};
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 2;
"col.active_border" = "rgb(EBDBB2) rgb(24273A) rgb(24273A) rgb(EBDBB2) 45deg";
"col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg";
layout = "dwindle";
allow_tearing = false;
};
decoration = {
rounding = 10;
blur = {
enabled = true;
size = 5;
passes = 3;
new_optimizations = true;
ignore_opacity = "on";
xray = false;
};
active_opacity = 0.8;
inactive_opacity = 0.8;
fullscreen_opacity = 1.0;
};
animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92"
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"workspaces, 1, 7, menu_decel, slide"
"specialWorkspace, 1, 3, md3_decel, slidevert"
];
};
dwindle = {
pseudotile = true;
preserve_split = true;
};
master = {
new_on_top = true;
};
gestures = {
workspace_swipe = true;
workspace_swipe_cancel_ratio = 0.15;
};
misc = {
force_default_wallpaper = 0;
};
}

View file

@ -0,0 +1,65 @@
{
windowrule = [
"pseudo, fcitx"
"float, file_progress"
"float, confirm"
"float, dialog"
"float, download"
"float, notification"
"float, error"
"float, splash"
"float, confirmreset"
"float, title:Open File"
"float, title:branchdialog"
"float, viewnior"
"float, pavucontrol-qt"
"float, pavucontrol"
"float, file-roller"
"fullscreen, wlogout"
"float, title:wlogout"
"fullscreen, title:wlogout"
"idleinhibit stayfocused, mpv"
];
windowrulev2 = [
"float, title:^(Media viewer)$"
"float, title:^(File Operation Progress)$"
"float, class:^(it.mijorus.smile)"
"float, class:^(xdg-desktop-portal-gtk)$"
"float, title:^(Steam Settings)$"
# Picture in picture windows
"float, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
"float, class:^(vesktop)$,title:^(Discord Popout)$"
"pin, class:^(vesktop)$,title:^(Discord Popout)$"
"float, class:^(steam)$,title:^(Friends List)$"
# Workspace assign
"workspace: 5, class: ^(steam)$"
# Line
"workspace: 2, initialTitle: ^(LINE)$"
"float, initialTitle: ^(LINE)$"
# VLC
"workspace: 3, initialClass: ^(vlc)"
];
layerrule = [
"blur, waybar"
"blur, logout_dialog"
"unset, rofi"
"blur, rofi"
"ignorezero, rofi"
"unset, swaync-control-center"
"unset, swaync-notification-window"
"blur, swaync-control-center"
"blur, swaync-notification-window"
"ignorezero, swaync-control-center"
"ignorezero, swaync-notification-window"
"ignorealpha 0.1, swaync-control-center"
"ignorealpha 0.1, swaync-notification-window"
];
}

View file

@ -1,45 +1,47 @@
{ pkgs, lib, inputs, system, ... }:
let
startScript = import ./hypr/exec.nix { inherit pkgs lib inputs system; };
mainMod = "SUPER";
window = import ./hypr/window.nix;
windowrule = import ./hypr/windowrule.nix;
input = import ./hypr/input.nix;
plugins = import ./hypr/plugin.nix;
in
{
home.packages = with pkgs; [
# wayland
];
systemd.user.targets.hyprland-session.Unit.Wants = [
"xdg-desktop-autostart.target"
];
# Have not figured out how to config throught homeManager yet
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
systemd.enable = true;
package = inputs.hyprland.packages.${system}.hyprland;
plugins = [
inputs.hyprland-plugins.packages.${system}.hyprbars
plugins = (with inputs.hyprland-plugins.packages.${system}; [
xtra-dispatchers
hyprexpo
hyprwinwrap
]) ++ ([
inputs.hyprgrass.packages.${system}.default
];
]);
settings = {
"$mod" = "SUPER";
bind = [
"$mod, F, exec, firefox"
"$mod, enter, exec, ghostty"
]
++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (builtins.genList
(i:
let ws = i + 1;
in
[
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]
)
9)
);
bind = import ./hypr/bind.nix { inherit mainMod; };
bindm = import ./hypr/bindm.nix { inherit mainMod; };
monitor = import ./hypr/monitor.nix;
plugin = plugins;
exec-once = ''${startScript}'';
} // window // windowrule // input;
};
services.hyprpaper = {
enable = true;
settings = {
preload = [ "~/.config/wallpapers/wall.png" ];
wallpaper = [ ", ~/.config/wallpapers/wall.png" ];
splash = true;
ipc = "on";
};
};
}

View file

@ -12,6 +12,9 @@
rebuild = "sudo nixos-rebuild switch --flake /etc/nixos";
fullClean = "nix-collect-garbage --delete-old && sudo nix-collect-garbage -d && sudo /run/current-system/bin/switch-to-configuration boot";
# Hyprland
hyprlog = "grep -v \"arranged\" $XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/hyprland.log | cat";
# Systemd Boot
setWin = "sudo bootctl set-oneshot auto-windows";
goWin = "sudo bootctl set-oneshot auto-windows && reboot";

View file

@ -26,6 +26,5 @@
./display-manager.nix
./gc.nix
./polkit.nix
# ./auto-upgrade.nix
];
}

View file

@ -2,24 +2,24 @@
{
services = {
greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --time-format '%I:%M %p | %a %h | %F' --cmd Hyprland";
user = "danny";
};
};
};
# displayManager = {
# sddm.wayland.enable = true;
# sddm.enable = true;
# sddm.theme = "${import ./sddm-theme.nix { inherit pkgs; }}";
# greetd = {
# enable = true;
# settings = {
# default_session = {
# command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --time-format '%I:%M %p | %a • %h | %F' --cmd Hyprland";
# user = "danny";
# };
# };
# };
displayManager = {
# sddm.wayland.enable = true;
sddm.enable = true;
sddm.theme = "${import ./sddm-theme.nix { inherit pkgs; }}";
};
};
environment.systemPackages = with pkgs; [
greetd.tuigreet
];
# environment.systemPackages = with pkgs; [
# greetd.tuigreet
# ];
}

View file

@ -1,16 +1,17 @@
{ pkgs, ... }:
{ pkgs, nix-version, ... }:
let
nerdfont-pkg = if nix-version == "25.05" then pkgs.nerd-fonts.caskaydia-cove else (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
in
{
fonts.packages = with pkgs; [
fonts.packages = (with pkgs; [
font-awesome
jetbrains-mono
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji
# nerd-fonts.caskaydia-cove
(nerdfonts.override { fonts = [ "CascadiaCode" ]; })
];
]) ++ ([
nerdfont-pkg
]);
fonts.fontDir.enable = true;

View file

@ -1,5 +1,8 @@
{ config, pkgs, nixpkgs, ... }:
{ config, pkgs, nixpkgs, inputs, system, ... }:
let
pkgs-unstable = inputs.hyprland.inputs.nixpkgs.legacyPackages.${system};
in
{
nixpkgs.config.packageOverrides = pkgs: {
intel-vaapi-driver =
@ -25,12 +28,17 @@
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
intel-media-driver # LIBVA_DRIVER_NAME=iHD
vaapiVdpau
(vaapiIntel.override { enableHybridCodec = true; })
libvdpau-va-gl
];
package32 = pkgs-unstable.pkgsi686Linux.mesa.drivers;
package = pkgs-unstable.mesa.drivers;
extraPackages = with pkgs;
[
intel-media-driver # LIBVA_DRIVER_NAME=iHD
vaapiVdpau
(vaapiIntel.override {
enableHybridCodec = true;
})
libvdpau-va-gl
];
};
enableRedistributableFirmware = true;

View file

@ -1,15 +1,18 @@
{ pkgs, inputs, system, ... }:
{ pkgs, inputs, ... }:
{
programs.hyprland = {
enable = true;
withUWSM = true;
package = inputs.hyprland.packages."${pkgs.system}".hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
};
xdg.portal = {
enable = true;
wlr.enable = true;
xdgOpenUsePortal = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland ];
extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-wlr ];
};
environment.sessionVariables = {
@ -19,10 +22,8 @@
environment.systemPackages = with pkgs; [
pyprland
# hyprlock
hyprcursor
hyprsunset
hyprpaper
hyprpicker
hyprshot
kitty

View file

@ -33,8 +33,8 @@
set -ga terminal-overrides ",*256col*:Tc"
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
set-environment -g COLORTERM "truecolor"
set -g prefix C-b
bind-key C-b send-prefix
set -g prefix C-a
bind-key C-a send-prefix
unbind %
bind | split-window -h

View file

@ -27,7 +27,7 @@
};
xserver = {
enable = false;
enable = true;
xkb.layout = "us";
};