From 5f3e6ed4387ebf40dcfd46e1a9cfdb056311adef Mon Sep 17 00:00:00 2001 From: Liam Malone Date: Tue, 22 Jul 2025 16:54:00 +0100 Subject: [PATCH] Flake update. Quickshell on Desktop --- configs/hypr-desktop/hypridle.conf | 33 +++ configs/hypr-desktop/hyprland.conf | 373 +++++++++++++++++++++++++++ configs/hypr-desktop/hyprlock.conf | 65 +++++ configs/hypr-desktop/hyprpaper.conf | 5 + configs/hypr/hyprland.conf | 2 +- configs/quickshell/default/Bar.qml | 29 +++ configs/quickshell/default/Clock.qml | 9 + configs/quickshell/default/Time.qml | 25 ++ configs/quickshell/default/shell.qml | 5 + configs/quickshell/new/Bar.qml | 29 +++ configs/quickshell/new/Clock.qml | 9 + configs/quickshell/new/Time.qml | 25 ++ configs/quickshell/new/shell.qml | 5 + flake.lock | 149 ++++++----- flake.nix | 51 ++-- hosts/desktop/configuration.nix | 10 +- hosts/desktop/file.nix | 2 +- hosts/desktop/home.nix | 9 +- hosts/desktop/pkgs.nix | 12 +- 19 files changed, 746 insertions(+), 101 deletions(-) create mode 100644 configs/hypr-desktop/hypridle.conf create mode 100644 configs/hypr-desktop/hyprland.conf create mode 100644 configs/hypr-desktop/hyprlock.conf create mode 100644 configs/hypr-desktop/hyprpaper.conf create mode 100644 configs/quickshell/default/Bar.qml create mode 100644 configs/quickshell/default/Clock.qml create mode 100644 configs/quickshell/default/Time.qml create mode 100644 configs/quickshell/default/shell.qml create mode 100644 configs/quickshell/new/Bar.qml create mode 100644 configs/quickshell/new/Clock.qml create mode 100644 configs/quickshell/new/Time.qml create mode 100644 configs/quickshell/new/shell.qml diff --git a/configs/hypr-desktop/hypridle.conf b/configs/hypr-desktop/hypridle.conf new file mode 100644 index 0000000..409d0a9 --- /dev/null +++ b/configs/hypr-desktop/hypridle.conf @@ -0,0 +1,33 @@ +general { + after_sleep_cmd=hyprctl dispatch dpms on + before_sleep_cmd=loginctl lock-session + lock_cmd=pidof hyprlock || hyprlock +} + +listeners { + on-resume=brightnessctl -r + on-timeout=brightnessctl -s set 10 + timeout=120 +} + +listeners { + on-resume=brightnessctl -rd rgb:kbd_backlight + on-timeout=brightnessctl -sd rgb:kbd_backlight set 0 + timeout=120 +} + +listeners { + on-timeout=loginctl lock-session + timeout=180 +} + +listeners { + on-resume=hyprctl dispatch dpms on + on-timeout=hyprctl dispatch dpms off + timeout=300 +} + +listeners { + on-timeout=systemctl suspend + timeout=300 +} diff --git a/configs/hypr-desktop/hyprland.conf b/configs/hypr-desktop/hyprland.conf new file mode 100644 index 0000000..1cc8d05 --- /dev/null +++ b/configs/hypr-desktop/hyprland.conf @@ -0,0 +1,373 @@ +# Startup +exec-once=dbus-update-activation-environment --systemd --all && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target +exec-once=wl-clipboard-history -t +exec-once=wl-paste -p --watch wl-copy -p '' +exec-once=hypridle +exec-once=quickshell +exec-once=fcitx5 -d +exec-once=swww-daemon +exec-once=swaync + +# Monitors + +monitor=DP-1,2560x1440@143,0x0,1 +monitor=HDMI-A-1,1920x1080@60,2560x180,1 +monitor=,preferred,auto,1,mirror,eDP-1 + +# Environment + +env=WLR_NO_HARDWARE_CURSORS,1 +env=HYPRCURSOR_THEME,Bibata-Modern-Ice +env=HYPRCURSOR_SIZE,24 +env=XDG_CURRENT_DESKTOP,Hyprland +env=XDG_SESSION_TYPE,wayland +env=XDG_SESSION_DESKTOP,Hyprland +env=GTK_THEME,Materia-dark +env=QT_QPA_PLATFORM,wayland +env=XCURSOR_THEME,Bibata-Modern-Ice +env=XCURSOR_SIZE,24 + +# Colors +$green=rgb(00BB00) +$gray=rgb(555555) +$purple=rgb(BB00BB) +$lavendar=rgb(B39DF3) +$orange=rgb(F39660) + +$lightgreen=rgb(93C863) +$lightblue=rgb(76CCE0) + +$magenta=rgba(881798FF) +$crimson=rgba(471520FF) + + +# USED COLORS +$active_border=$lightgreen +$inactive_border=$gray +$expo_bg=$active_border + + +animations { + bezier=myBezier, 0.05, 0.9, 0.1, 1.05 + animation=windows, 1, 7, myBezier + animation=windowsOut, 1, 7, default, popin 80% + animation=border, 1, 10, default + animation=borderangle, 1, 8, default + animation=fade, 1, 7, default + animation=workspaces, 1, 6, default + enabled=true +} + +debug { + disable_logs=true +} + +decoration { + blur { + enabled=true + new_optimizations=on + passes=1 + size=3 + xray=true + } + + shadow { + color=rgba(1a1a1aee) + enabled=true + range=4 + render_power=3 + } + rounding=10 +} + +dwindle { + preserve_split=true + pseudotile=true +} + +ecosystem { + no_donation_nag=true + no_update_news=true +} + +experimental { + xx_color_management_v4=true +} + +general { + border_size=2 + col.active_border=$active_border + col.inactive_border=$inactive_border + gaps_in=2 + gaps_out=4 + layout=dwindle +} + +gestures { + workspace_swipe=true + workspace_swipe_forever=true +} + +input { + touchpad { + disable_while_typing=false + drag_lock=false + middle_button_emulation=true + natural_scroll=true + scroll_factor=0.500000 + tap-to-click=true + } + + follow_mouse=1 + kb_layout=us + kb_model= + kb_options= + kb_rules= + kb_variant= + numlock_by_default=true + sensitivity=0 +} + +misc { + disable_hyprland_logo=false + disable_splash_rendering=false + key_press_enables_dpms=true + mouse_move_enables_dpms=true +} + +# Plugin Config + +plugin { + hyprexpo { + columns = 3 + gap_size = 3 + bg_col = $expo_bg + 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 = false # true = swipe down, false = swipe up. + } +} + +# Window Rules + +windowrule=idleinhibit fullscreen, class:firefox +windowrule=idleinhibit fullscreen, class:floorp +windowrule=idleinhibit fullscreen, class:ghostty +windowrule=idleinhibit focus, class:firefox +windowrule=idleinhibit focus, class:floorp +windowrule=idleinhibit focus, class:mpv +windowrule=idleinhibit focus, class:^(emacs)$ +windowrule=idleinhibit focus, class:^(Emacs)$ +windowrule=idleinhibit focus, class:^(discord)$ +windowrule=idleinhibit focus, class:^(spotify)$ +windowrule=idleinhibit focus, class:^(Discord|discord)$ + +windowrule=opacity 0.98 0.9, class:^(Discord|discord)$ + +windowrule=float, class:polkit-kde-authentication-agent-1 +windowrule=float, class:^(praat)$ +windowrule=float, class:^(steam)$, title:^(Friends List)$ +windowrule=float, class:^(network)$ +windowrule=float, class:^(nm-)$ +windowrule=float, class:^(Network)$ +windowrule=float, class:Rofi +windowrule=float, class:Gimp +windowrule=float, class:Nautilus +windowrule=float, class:notification +windowrule=float, class:^(launcher)$ +windowrule=tile, class:Spotify +windowrule=tile, title:Minecraft + +windowrule=workspace name:game, class:^(steam)$ +windowrule=workspace name:shell, class:^(KeePassXC)$ +windowrule=workspace name:browser, class:^(firefox)$ +windowrule=workspace name:browser, class:^(floorp)$ +windowrule=workspace name:browser, class:^(Brave.*)$ +windowrule=workspace name:music, class:^(Spotify)$ +windowrule=workspace name:chat, class:^(discord)$ +windowrule=workspace name:chat, class:^(Signal)$ +windowrule=workspace name:game, title:Minecraft + +# Workspace Rules +workspace=name:game, monitor:DP-1 +workspace=name:browser, monitor:HDMI-A-1, default:true +workspace=name:chat, monitor:HDMI-A-1 +workspace=name:video, monitor:DP-1 +workspace=name:program, monitor:DP-1, default:true +workspace=name:extra, monitor:DP-1 + +# Commands +$lock=hyprlock +$screenshotarea=hyprctl keyword animation 'fadeOut,0,0,default'; grimblast copy area; hyprctl keyword animation 'fadeOut,1,4,default' +$discord=discord --enable-blink-features=MiddleClickAutoscroll +$emacs=emacsclient -c -a 'emacs' +$colorpick=hyprpicker -a -f hex +$screenshot=grimblast --cursor copy output + +# Binds + +$altMod=ALT +$ctrlMod=CTRL +$mainMod=SUPER + +# Binds :: Programs + +$none= +# :Meta-Bind: :Key: :Command: :Args: +bind=$altMod, Return, exec, ghostty +bind=$altMod SHIFT, Return, exec, alacritty +bind=$mainMod SHIFT, D, exec, $discord +bind=$mainMod SHIFT, E, exec, $emacs +bind=$mainMod SHIFT, F, exec, focus-linux +bind=$mainMod, SPACE, exec, pkill wofi || wofi +bind=$mainMod, E, exec, nautilus +bind=$mainMod, S, exec, spotify +bind=$mainMod, P, exec, $colorpick +bind=$none, Print, exec, $screenshotarea +bind=SHIFT, Print, exec, $screenshot +bind=$mainMod CTRL, Q, exec, $lock +bind=$mainMod SHIFT, P, pseudo +bind=$mainMod, C, killactive +bind=$mainMod, V, togglefloating +bind=$mainMod SHIFT, S, togglesplit +bind=$mainMod, F4, exit + +# bind = SUPER, grave, hyprexpo:expo, toggle # Commented out cos "version mismatch (bs)" + +# Workspace Name:Bind Numbers +$ws_game=1 +$ws_shell=2 +$ws_browser=3 +$ws_music=4 +$ws_image=5 +$ws_chat=6 +$ws_audio=7 +$ws_video=8 +$ws_program=9 +$ws_extra=0 + +# Binds :: Navigation + +# :Meta-Bind: :Key: :Command: :Args: +bind=$mainMod, F, fullscreen +bind=$mainMod, H, movefocus, l +bind=$mainMod, L, movefocus, r +bind=$mainMod, K, movefocus, u +bind=$mainMod, J, movefocus, d +bind=$mainMod, comma, focusmonitor, -1 +bind=$mainMod, period, focusmonitor, +1 +bind=$mainMod SHIFT, H, movewindow, l +bind=$mainMod SHIFT, L, movewindow, r +bind=$mainMod SHIFT, K, movewindow, u +bind=$mainMod SHIFT, J, movewindow, d +bind=$mainMod SHIFT, comma, movecurrentworkspacetomonitor, -1 +bind=$mainMod SHIFT, period, movecurrentworkspacetomonitor, +1 +bind=$mainMod, right, resizeactive, 10 0 +bind=$mainMod, left, resizeactive, -10 0 +bind=$mainMod, up, resizeactive, 0 -10 +bind=$mainMod, down, resizeactive, 0 10 +bind=$mainMod, $ws_game, workspace, name:game +bind=$mainMod, $ws_shell, workspace, name:shell +bind=$mainMod, $ws_browser, workspace, name:browser +bind=$mainMod, $ws_music, workspace, name:music +bind=$mainMod, $ws_image, workspace, name:image +bind=$mainMod, $ws_chat, workspace, name:chat +bind=$mainMod, $ws_audio, workspace, name:audio +bind=$mainMod, $ws_video, workspace, name:video +bind=$mainMod, $ws_program, workspace, name:programming +bind=$mainMod, $ws_extra, workspace, name:extra +bind=$mainMod SHIFT, $ws_game, movetoworkspace, name:game +bind=$mainMod SHIFT, $ws_shell, movetoworkspace, name:shell +bind=$mainMod SHIFT, $ws_browser, movetoworkspace, name:browser +bind=$mainMod SHIFT, $ws_music, movetoworkspace, name:music +bind=$mainMod SHIFT, $ws_image, movetoworkspace, name:image +bind=$mainMod SHIFT, $ws_chat, movetoworkspace, name:chat +bind=$mainMod SHIFT, $ws_audio, movetoworkspace, name:audio +bind=$mainMod SHIFT, $ws_video, movetoworkspace, name:video +bind=$mainMod SHIFT, $ws_program, movetoworkspace, name:programming +bind=$mainMod SHIFT, $ws_extra, movetoworkspace, name:extra +bind=$mainMod SHIFT CTRL, right, movetoworkspace, +1 +bind=$mainMod SHIFT CTRL, left, movetoworkspace, -1 +bind=$mainMod, mouse_down, workspace, e+1 +bind=$mainMod, mouse_up, workspace, e-1 +bind=$mainMod, Tab, workspace, e+1 +bind=$mainMod SHIFT, Tab, workspace, e-1 +bind=$mainMod CTRL, right, workspace, +1 +bind=$mainMod CTRL, left, workspace, -1 + +bindm=$mainMod, mouse:272, movewindow +bindm=$mainMod, mouse:273, resizewindow + +# Binds :: MultiMedia + +$brightness=$NIX_CONFIG_DIR/scripts/progress-notify.sh brightness +$volume=$NIX_CONFIG_DIR/scripts/progress-notify.sh audio +$mute=$NIX_CONFIG_DIR/scripts/progress-notify.sh mute + +binde=$none, XF86MonBrightnessDown, exec, brightnessctl set 10%- && $brightness +binde=$none, XF86MonBrightnessUp, exec, brightnessctl set 10%+ && $brightness +bindel=, XF86AudioRaiseVolume, exec, pamixer -i 5 && $volume +bindel=, XF86AudioLowerVolume, exec, pamixer -d 5 && $volume +bindel=, XF86AudioMute, exec, pamixer -t && $mute +bindl=$none, XF86AudioPlay, exec, playerctl play-pause +bindl=$none, XF86AudioNext, exec, playerctl next +bindl=$none, XF86AudioPrev, exec, playerctl previous + +# Binds :: Submaps + +# Submap::Resize +bind=$mainMod, R, submap, resize +submap=resize +bind=$none, escape,submap,reset + +binde=$none, left, resizeactive, -10 0 +bindr=$none, left, submap, reset +binde=$none, right, resizeactive, 10 0 +bindr=$none, right, submap, reset +binde=$none, up, resizeactive, 0 10 +bindr=$none, up, submap, reset +binde=$none, down, resizeactive, 0 -10 +bindr=$none, down, submap, reset + +binde=$none, H, resizeactive, -10 0 +bindr=$none, H, submap, reset +binde=$none, J, resizeactive, 0 -10 +bindr=$none, J, submap, reset +binde=$none, K, resizeactive, 0 10 +bindr=$none, K, submap, reset +binde=$none, L, resizeactive, 10 0 +bindr=$none, L, submap, reset + +submap=reset + +# Submap::Browser +bind=$mainMod, B, submap, browser +submap=browser + +bind=$none, B, exec, brave +bind=$none, B, submap, reset + +bind=SHIFT, F, exec, firefox +bind=SHIFT, F, submap, reset + +bind=$none, F, exec, floorp +bind=$none, F, submap, reset + +bind=$none, escape,submap,reset +submap=reset + +# Submap::Video +bind=$mainMod SHIFT, V, submap, video +submap=video + +bind=$none, O, exec, obs +bind=$none, O, submap, reset + +bind=$none, V, exec , kdenlive +bind=$none, V, submap, reset + +bind=$none, escape,submap,reset +submap=reset diff --git a/configs/hypr-desktop/hyprlock.conf b/configs/hypr-desktop/hyprlock.conf new file mode 100644 index 0000000..7451a92 --- /dev/null +++ b/configs/hypr-desktop/hyprlock.conf @@ -0,0 +1,65 @@ +background { + blur_passes=2 + blur_size=8 + path=$HOME/pictures/.wallpapers/green-forest.png +} + +general { + disable_loading_bar=true + hide_cursor=true + no_fade_in=false +} + +input-field { + monitor= + size=200, 30 + capslock_color=#bb00ee + check_color=#0eff0d + dots_center=false + dots_size=0.330000 + dots_spacing=0.150000 + fade_on_empty=true + fail_color=#ff009e + fail_text=$FAIL ($ATTEMPTS) + font_color=#efefef + inner_color=#0c0c0c + outer_color=#fe0b00 + outline_thickness=3 + placeholder_text=Enter Password... +} + +label { + monitor= + color=#ffffee + font_family=DejaVu Sans + font_size=28 + halign=center + position=0, 80 + text=$TIME + text_align=center + valign=center +} + +label { + monitor= + color=#ffffee + font_family=DejaVu Sans + font_size=18 + halign=left + position=80, 80 + text=cmd[update:1000] echo " $(date +'%A, %b %d %Y')" + text_align=center + valign=bottom +} + +label { + monitor= + color=#ffffee + font_family=DejaVu Sans + font_size=18 + halign=right + position=80, 80 + text=cmd[update:1000] echo "󰁿$(cat /sys/class/power_supply/BAT0/capacity)" + text_align=center + valign=bottom +} diff --git a/configs/hypr-desktop/hyprpaper.conf b/configs/hypr-desktop/hyprpaper.conf new file mode 100644 index 0000000..b4e4d20 --- /dev/null +++ b/configs/hypr-desktop/hyprpaper.conf @@ -0,0 +1,5 @@ +ipc=on +preload=$HOME/pictures/.wallpapers/skyline-view.png +preload=$HOME/pictures/.wallpapers/iceland-winter-mountains.jpg +splash=false +wallpaper=eDP-1,$HOME/pictures/.wallpapers/iceland-winter-mountains.jpg diff --git a/configs/hypr/hyprland.conf b/configs/hypr/hyprland.conf index cb5be76..79cd6b3 100644 --- a/configs/hypr/hyprland.conf +++ b/configs/hypr/hyprland.conf @@ -11,7 +11,7 @@ exec-once=swaync # Monitors monitor=eDP-1,1920x1080@60,0x0,1 -monitor=HDMI-A-1,2550x1440@144,auto,1,mirror,eDP-1 +monitor=HDMI-A-1,2560x1440@144,auto,1,mirror,eDP-1 monitor=,preferred,auto,1,mirror,eDP-1 # Environment diff --git a/configs/quickshell/default/Bar.qml b/configs/quickshell/default/Bar.qml new file mode 100644 index 0000000..6c0e20d --- /dev/null +++ b/configs/quickshell/default/Bar.qml @@ -0,0 +1,29 @@ +import Quickshell +import Quickshell.Io +import QtQuick + +Scope { + Time { id: timeSource } + + Variants { + model: Quickshell.screens; + + PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + implicitHeight: 24 + + Clock { + anchors.centerIn: parent + time: timeSource.time + } + } + } +} diff --git a/configs/quickshell/default/Clock.qml b/configs/quickshell/default/Clock.qml new file mode 100644 index 0000000..5a8ed73 --- /dev/null +++ b/configs/quickshell/default/Clock.qml @@ -0,0 +1,9 @@ +import QtQuick + +Text { + required property string time + font.family: "KelmscottMono" + font.pointSize: 14 + + text: time +} diff --git a/configs/quickshell/default/Time.qml b/configs/quickshell/default/Time.qml new file mode 100644 index 0000000..081a1a5 --- /dev/null +++ b/configs/quickshell/default/Time.qml @@ -0,0 +1,25 @@ +import Quickshell +import Quickshell.Io +import QtQuick + +Scope { + id: root + property string time + + Process { + id: dateProc + command: [ "date", "+%T | %A, %b %d" ] + running: true + + stdout: StdioCollector { + onStreamFinished: root.time = this.text + } + } + + Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} diff --git a/configs/quickshell/default/shell.qml b/configs/quickshell/default/shell.qml new file mode 100644 index 0000000..9d093ad --- /dev/null +++ b/configs/quickshell/default/shell.qml @@ -0,0 +1,5 @@ +import Quickshell + +Scope { + Bar {} +} diff --git a/configs/quickshell/new/Bar.qml b/configs/quickshell/new/Bar.qml new file mode 100644 index 0000000..6c0e20d --- /dev/null +++ b/configs/quickshell/new/Bar.qml @@ -0,0 +1,29 @@ +import Quickshell +import Quickshell.Io +import QtQuick + +Scope { + Time { id: timeSource } + + Variants { + model: Quickshell.screens; + + PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + implicitHeight: 24 + + Clock { + anchors.centerIn: parent + time: timeSource.time + } + } + } +} diff --git a/configs/quickshell/new/Clock.qml b/configs/quickshell/new/Clock.qml new file mode 100644 index 0000000..5a8ed73 --- /dev/null +++ b/configs/quickshell/new/Clock.qml @@ -0,0 +1,9 @@ +import QtQuick + +Text { + required property string time + font.family: "KelmscottMono" + font.pointSize: 14 + + text: time +} diff --git a/configs/quickshell/new/Time.qml b/configs/quickshell/new/Time.qml new file mode 100644 index 0000000..91430a1 --- /dev/null +++ b/configs/quickshell/new/Time.qml @@ -0,0 +1,25 @@ +import Quickshell +import Quickshell.Io +import QtQuick + +Scope { + id: root + property string time + + Process { + id: dateProc + command: [ "date", "+%T | %A, %b %d | %Y" ] + running: true + + stdout: StdioCollector { + onStreamFinished: root.time = this.text + } + } + + Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} diff --git a/configs/quickshell/new/shell.qml b/configs/quickshell/new/shell.qml new file mode 100644 index 0000000..9d093ad --- /dev/null +++ b/configs/quickshell/new/shell.qml @@ -0,0 +1,5 @@ +import Quickshell + +Scope { + Bar {} +} diff --git a/flake.lock b/flake.lock index 7229c42..43787c1 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1745357003, - "narHash": "sha256-jYwzQkv1r7HN/4qrAuKp+NR4YYNp2xDrOX5O9YVqkWo=", + "lastModified": 1751740947, + "narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a19cf76ee1a15c1c12083fa372747ce46387289f", + "rev": "dfc1db15a08c4cd234288f66e1199c653495301f", "type": "github" }, "original": { @@ -78,11 +78,11 @@ ] }, "locked": { - "lastModified": 1747753534, - "narHash": "sha256-hbDBa5a6jnxoD0OqijmCKF45Hiv4uubb340OMr5DJhc=", + "lastModified": 1752603129, + "narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=", "owner": "nix-community", "repo": "home-manager", - "rev": "559f6d36b32dd2180ebac40c522dd36290430fc5", + "rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b", "type": "github" }, "original": { @@ -107,11 +107,11 @@ ] }, "locked": { - "lastModified": 1745948457, - "narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=", + "lastModified": 1749155331, + "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "ac903e80b33ba6a88df83d02232483d99f327573", + "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1745015490, - "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", + "lastModified": 1751808145, + "narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "60754910946b4e2dc1377b967b7156cb989c5873", + "rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f", "type": "github" }, "original": { @@ -165,11 +165,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1747610850, - "narHash": "sha256-b41pc9J8b9fxRFHBQRKoTXZHpAsKW5eJbNsTMris2Mo=", + "lastModified": 1752682974, + "narHash": "sha256-qjfHaJGfTfBHUTwibfYyeSthiSn246fZvNGiJ9stEAc=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "eb3b38d40baca5c05ddbc1507b3d3f02a0ccb164", + "rev": "148718b3bcffaa90cd684df90860fd5bda37907f", "type": "github" }, "original": { @@ -195,11 +195,11 @@ ] }, "locked": { - "lastModified": 1747595918, - "narHash": "sha256-5wjvmFtk85uBJLnrKZbfrgo9OTTQlFP18ZNgfBwFsz0=", + "lastModified": 1752254688, + "narHash": "sha256-XJJ+frO4NOxVkoSGc1Mag8ESumzx2FmVRspOgFlMqF8=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "4dea1029e837ae642979ab509eb2eddc959470d0", + "rev": "d723e5b153b7990d36e62a425bda3768c41dd9eb", "type": "github" }, "original": { @@ -220,11 +220,11 @@ ] }, "locked": { - "lastModified": 1743714874, - "narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=", + "lastModified": 1749046714, + "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2", + "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", "type": "github" }, "original": { @@ -245,11 +245,11 @@ ] }, "locked": { - "lastModified": 1738422629, - "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", + "lastModified": 1749046714, + "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", + "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", "type": "github" }, "original": { @@ -277,11 +277,11 @@ ] }, "locked": { - "lastModified": 1737634706, - "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", "owner": "hyprwm", "repo": "hyprland-qt-support", - "rev": "8810df502cdee755993cb803eba7b23f189db795", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", "type": "github" }, "original": { @@ -339,11 +339,11 @@ ] }, "locked": { - "lastModified": 1745951494, - "narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=", + "lastModified": 1750371812, + "narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e", + "rev": "b13c7481e37856f322177010bdf75fccacd1adc8", "type": "github" }, "original": { @@ -368,11 +368,11 @@ ] }, "locked": { - "lastModified": 1746655412, - "narHash": "sha256-kVQ0bHVtX6baYxRWWIh4u3LNJZb9Zcm2xBeDPOGz5BY=", + "lastModified": 1750371198, + "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "557241780c179cf7ef224df392f8e67dab6cef83", + "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b", "type": "github" }, "original": { @@ -420,11 +420,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1746481417, - "narHash": "sha256-mal2vIpRz5BU/0ll6gP/N2FqjFtgFNDgMBgoI6tLWag=", + "lastModified": 1751567624, + "narHash": "sha256-tUVODSZhvafXmuN+5SwZpNWV+2cvhSd+5IJ5TXu3YgI=", "owner": "hyprwm", "repo": "hyprsunset", - "rev": "2a8ef76c6a77ca249e4613fefcd96bad74b5f9b2", + "rev": "4b2f0f9f46a6552930eecb979d18ac48d7079312", "type": "github" }, "original": { @@ -443,11 +443,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1739049114, - "narHash": "sha256-jD9W4OHcn1sJ+xbwNFbGN9heSE6v2v3U+FtGf8Cul6k=", + "lastModified": 1750372066, + "narHash": "sha256-nvpJ1XX2cWIuMd7I/07C2NXYbWEuieHVrYTaNJqo44A=", "owner": "hyprwm", "repo": "hyprsysteminfo", - "rev": "6769e50fcfcfd56548e9b17b9a02641ab4826e38", + "rev": "b8ee10565d1643bb49eea5a155e1a415b3904d44", "type": "github" }, "original": { @@ -468,11 +468,11 @@ ] }, "locked": { - "lastModified": 1746635225, - "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", + "lastModified": 1751888065, + "narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "rev": "a8229739cf36d159001cfc203871917b83fdf917", "type": "github" }, "original": { @@ -493,11 +493,11 @@ ] }, "locked": { - "lastModified": 1741534688, - "narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=", + "lastModified": 1749135356, + "narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3", + "rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb", "type": "github" }, "original": { @@ -572,11 +572,11 @@ ] }, "locked": { - "lastModified": 1739870480, - "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", + "lastModified": 1751881472, + "narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", + "rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120", "type": "github" }, "original": { @@ -597,11 +597,11 @@ ] }, "locked": { - "lastModified": 1739870480, - "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", + "lastModified": 1749145760, + "narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", + "rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", "type": "github" }, "original": { @@ -612,11 +612,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747327360, - "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", + "lastModified": 1751792365, + "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", + "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", "type": "github" }, "original": { @@ -628,11 +628,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", + "lastModified": 1752480373, + "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", + "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", "type": "github" }, "original": { @@ -652,11 +652,11 @@ ] }, "locked": { - "lastModified": 1747372754, - "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "lastModified": 1750779888, + "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "type": "github" }, "original": { @@ -665,6 +665,26 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1752631407, + "narHash": "sha256-dLDtKxh1VabwLxv5xbjI+oRkDyqWEKGITU+0dEaaW28=", + "owner": "quickshell-mirror", + "repo": "quickshell", + "rev": "4d8055f1cd9924bcace59405894b8879633eb83d", + "type": "github" + }, + "original": { + "owner": "quickshell-mirror", + "repo": "quickshell", + "type": "github" + } + }, "root": { "inputs": { "home-manager": "home-manager", @@ -672,7 +692,8 @@ "hyprland-plugins": "hyprland-plugins", "hyprsunset": "hyprsunset", "hyprsysteminfo": "hyprsysteminfo", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_2", + "quickshell": "quickshell" } }, "systems": { @@ -748,11 +769,11 @@ ] }, "locked": { - "lastModified": 1745871725, - "narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=", + "lastModified": 1751300244, + "narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e", + "rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index da21285..73ee221 100644 --- a/flake.nix +++ b/flake.nix @@ -3,12 +3,18 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + hyprland.url = "github:hyprwm/Hyprland"; + home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - hyprland.url = "github:hyprwm/Hyprland"; + quickshell = { + url = "github:quickshell-mirror/quickshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; @@ -26,7 +32,29 @@ outputs = { self, nixpkgs, hyprland, ... }@inputs: let system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; + # pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs { + inherit system; + overlays = [ + # Hyprland & Plugins Overlays + (final: prev: { + hyprlandPlugins = prev.hyprlandPlugins // { + hyprexpo = inputs.hyprland-plugins.packages.${prev.system}.hyprexpo; + }; + }) + (final: prev: { + hyprland = inputs.hyprland.packages.${prev.system}.hyprland; + }) + (final: prev: { + xdg-desktop-portal-hyprland = inputs.hyprland.packages.${prev.system}.xdg-desktop-portal-hyprland; + }) + + # Quickshell Overlays + (final: prev: { + quickshell = inputs.quickshell.packages.${prev.system}.quickshell; + }) + ]; + }; defaultCfg = rec { username = "liamm"; homeDirectory = "/home/${username}"; @@ -35,25 +63,12 @@ }; in { - nixosConfigurations = { - nixpkgs.overlays = [ - (final: prev: { - hyprlandPlugins = prev.hyprlandPlugins // { - hyprexpo = inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo; - }; - }) - ]; - darp8 = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs; cfg = defaultCfg; }; + specialArgs = { inherit inputs; cfg = defaultCfg; }; modules = [ hyprland.nixosModules.default ./hosts/darp8/configuration.nix - { - environment.systemPackages = [ - ]; - } ]; }; desktop = nixpkgs.lib.nixosSystem { @@ -61,10 +76,6 @@ modules = [ hyprland.nixosModules.default ./hosts/desktop/configuration.nix - { - environment.systemPackages = [ - ]; - } ]; }; }; diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index 34e9396..c03f9ce 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -171,8 +171,8 @@ hyprland = { enable = true; - package = inputs.hyprland.packages.${pkgs.system}.hyprland; - portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland; + package = pkgs.hyprland; + portalPackage = pkgs.xdg-desktop-portal-hyprland; xwayland.enable = true; withUWSM = true; plugins = [ ]; @@ -195,7 +195,7 @@ useGlobalPkgs = true; extraSpecialArgs = { inherit inputs; inherit cfg; }; users = { - "liamm" = import ./home.nix; + "${cfg.username}" = import ./home.nix; }; backupFileExtension = ".bak"; }; @@ -204,15 +204,16 @@ alacritty bat discord - discord-canary fd file + ghostty glib gnome-keyring libdrm libnotify mesa neovim + quickshell ripgrep spotify unzip @@ -237,7 +238,6 @@ extraPortals = with pkgs;[ xdg-desktop-portal-gtk xdg-desktop-portal-wlr - xdg-desktop-portal-hyprland ]; config = { common = { diff --git a/hosts/desktop/file.nix b/hosts/desktop/file.nix index e520d82..f58f32d 100644 --- a/hosts/desktop/file.nix +++ b/hosts/desktop/file.nix @@ -22,7 +22,7 @@ in # Configs ".config/hypr" = { - source = ../../configs/hypr; + source = ../../configs/hypr-desktop; outOfStoreSymlink = true; recursive = true; }; diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index 5428043..47a9184 100644 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -9,9 +9,6 @@ }: { - home.username = "liamm"; - home.homeDirectory = "/home/liamm"; - home.username = cfg.username; home.homeDirectory = cfg.homeDirectory; @@ -73,11 +70,11 @@ xdg.configFile = { "emacs" = { recursive = true; - source = ../../modules/non-nix_configs/emacs; + source = ../../configs/emacs; }; - "user-dirs.dirs".source = ../../modules/non-nix_configs/user-dirs.dirs; - "user-dirs.locale".source = ../../modules/non-nix_configs/user-dirs.locale; + "user-dirs.dirs".source = ../../configs/user-dirs.dirs; + "user-dirs.locale".source = ../../configs/user-dirs.locale; }; # Let Home Manager install and manage itself. diff --git a/hosts/desktop/pkgs.nix b/hosts/desktop/pkgs.nix index f096cb4..ba4aaa3 100644 --- a/hosts/desktop/pkgs.nix +++ b/hosts/desktop/pkgs.nix @@ -7,7 +7,6 @@ # BEGIN PACKAGES home.packages = with pkgs; [ audacity - android-studio bat brave brightnessctl @@ -20,7 +19,7 @@ floorp fzf genymotion - gimp + # gimp gtk4 gvfs grimblast @@ -42,14 +41,19 @@ pamixer pavucontrol powertop - prismlauncher + # prismlauncher protonvpn-cli pywal qbittorrent signal-desktop swaynotificationcenter swww - texliveFull + + # Temporarily removing texliveFull as it currently has a dependency (xindy) + # with a dependency (clisp) with a broken drv + + # texliveFull + xfce.thunar xfce.thunar-volman tree