diff --git a/flake.lock b/flake.lock index 01b04409..bb226e7c 100644 --- a/flake.lock +++ b/flake.lock @@ -88,54 +88,6 @@ "type": "github" } }, - "caelestia": { - "inputs": { - "caelestia-cli": "caelestia-cli", - "nixpkgs": [ - "nixpkgs" - ], - "quickshell": [ - "quickshell" - ] - }, - "locked": { - "lastModified": 1766885627, - "narHash": "sha256-Ux+D5mjfLEMQfCaG9g4TGKgBsQ/oVjo1613/m7Uk/5Y=", - "owner": "caelestia-dots", - "repo": "shell", - "rev": "dfa28d7f85215bd42d02717255c45b8126aeb8da", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "shell", - "type": "github" - } - }, - "caelestia-cli": { - "inputs": { - "caelestia-shell": [ - "caelestia" - ], - "nixpkgs": [ - "caelestia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1766714789, - "narHash": "sha256-hmhLNI09u6QJoGkS7ur+wgc1z2LYb3jQP0wB3qwyrLU=", - "owner": "caelestia-dots", - "repo": "cli", - "rev": "b049cb17496b622917d41c057c78b3aa5d885a1a", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "cli", - "type": "github" - } - }, "ctp": { "inputs": { "nixpkgs": "nixpkgs" @@ -176,75 +128,6 @@ "type": "github" } }, - "dms": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "quickshell": "quickshell" - }, - "locked": { - "lastModified": 1767327733, - "narHash": "sha256-cPAiqJzXiDdT+XM0z8Fy7M1ob2PD0uD2NcfEhbGineo=", - "owner": "AvengeMedia", - "repo": "DankMaterialShell", - "rev": "3e1c6534bdcc234bba90351f714f075d2672f526", - "type": "github" - }, - "original": { - "owner": "AvengeMedia", - "repo": "DankMaterialShell", - "type": "github" - } - }, - "dms-plugins": { - "flake": false, - "locked": { - "lastModified": 1766092383, - "narHash": "sha256-0RXRgUXXoX+C0q+drsShjx2rCTdmqFzOCR/1rGB/W2E=", - "owner": "AvengeMedia", - "repo": "dms-plugins", - "rev": "8fa7c5286171c66a209dd74e9a47d6e72ccfdad6", - "type": "github" - }, - "original": { - "owner": "AvengeMedia", - "repo": "dms-plugins", - "type": "github" - } - }, - "dms-power-usage": { - "flake": false, - "locked": { - "lastModified": 1766564307, - "narHash": "sha256-9lMWVCiAW+0fAZD4dXGhE+6f8d1/4DHejfUumfoHY2s=", - "owner": "Daniel-42-z", - "repo": "dms-power-usage", - "rev": "04b7da69b98be23d6f6bbc0430461680b43809e0", - "type": "github" - }, - "original": { - "owner": "Daniel-42-z", - "repo": "dms-power-usage", - "type": "github" - } - }, - "dms-wp-shuffler": { - "flake": false, - "locked": { - "lastModified": 1765957886, - "narHash": "sha256-il8/6FJNLIk9DjpyLmCiL1p2d0bpDDeNttHfcmBeI/4=", - "owner": "Daniel-42-z", - "repo": "dms-wallpaper-shuffler", - "rev": "2b2e63e1831d6e184eecbcad8a2794734bd5d4ae", - "type": "github" - }, - "original": { - "owner": "Daniel-42-z", - "repo": "dms-wallpaper-shuffler", - "type": "github" - } - }, "dn42": { "inputs": { "bird": "bird", @@ -681,28 +564,6 @@ } }, "quickshell": { - "inputs": { - "nixpkgs": [ - "dms", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1766725085, - "narHash": "sha256-O2aMFdDUYJazFrlwL7aSIHbUSEm3ADVZjmf41uBJfHs=", - "ref": "refs/heads/master", - "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", - "revCount": 715, - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" - }, - "original": { - "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" - } - }, - "quickshell_2": { "inputs": { "nixpkgs": [ "nixpkgs" @@ -726,12 +587,7 @@ "inputs": { "agenix": "agenix", "buildbot-nix": "buildbot-nix", - "caelestia": "caelestia", "ctp": "ctp", - "dms": "dms", - "dms-plugins": "dms-plugins", - "dms-power-usage": "dms-power-usage", - "dms-wp-shuffler": "dms-wp-shuffler", "dn42": "dn42", "easy-hosts": "easy-hosts", "flake-compat": "flake-compat", @@ -744,7 +600,7 @@ "nix-index-database": "nix-index-database", "nixpkgs": "nixpkgs_2", "nixpkgs-stalwart-fix": "nixpkgs-stalwart-fix", - "quickshell": "quickshell_2", + "quickshell": "quickshell", "tangled": "tangled", "treefmt-nix": "treefmt-nix" } diff --git a/flake.nix b/flake.nix index 07413135..7fe32bfb 100644 --- a/flake.nix +++ b/flake.nix @@ -42,11 +42,6 @@ inputs.flake-parts.follows = "flake-parts"; inputs.treefmt-nix.follows = ""; }; - caelestia = { - url = "github:caelestia-dots/shell"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.quickshell.follows = "quickshell"; - }; ctp = { url = "github:catppuccin/nix"; }; @@ -54,23 +49,6 @@ url = "github:pyrox0/dn43.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; - dms = { - url = "github:AvengeMedia/DankMaterialShell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - # DMS Plugins - dms-wp-shuffler = { - url = "github:Daniel-42-z/dms-wallpaper-shuffler"; - flake = false; - }; - dms-power-usage = { - url = "github:Daniel-42-z/dms-power-usage"; - flake = false; - }; - dms-plugins = { - url = "github:AvengeMedia/dms-plugins"; - flake = false; - }; easy-hosts.url = "github:tgirlcloud/easy-hosts"; golink = { url = "github:tailscale/golink"; diff --git a/homeModules/all-modules.nix b/homeModules/all-modules.nix index eb827fb6..a0bb5ebe 100644 --- a/homeModules/all-modules.nix +++ b/homeModules/all-modules.nix @@ -6,12 +6,10 @@ inputs.self.homeModules.scripts inputs.self.homeModules.services inputs.self.homeModules.theming - inputs.self.homeModules.hyprland + inputs.self.homeModules.niri inputs.self.homeModules.xdg inputs.nix-index-database.homeModules.nix-index inputs.ctp.homeModules.catppuccin - inputs.caelestia.homeManagerModules.default - inputs.dms.homeModules.dank-material-shell ]; } diff --git a/homeModules/default.nix b/homeModules/default.nix index 5577ae8b..ab7f5d4e 100644 --- a/homeModules/default.nix +++ b/homeModules/default.nix @@ -5,7 +5,7 @@ }: { flake.homeModules = { - hyprland = import ./hyprland; + niri = import ./niri; xdg = import ./xdg; programs = import ./programs; services = import ./services; diff --git a/homeModules/hyprland/default.nix b/homeModules/hyprland/default.nix deleted file mode 100644 index f46d9118..00000000 --- a/homeModules/hyprland/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - pkgs, - config, - osConfig, - lib, - ... -}: -let - c = osConfig.py.programs.hyprland; -in -{ - imports = [ - ./services.nix - ./hypridle.nix - ]; - config = { - catppuccin.hyprland.enable = c.enable; - wayland.windowManager.hyprland = { - inherit (c) enable; - # Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package - package = null; - systemd = { - enable = true; - enableXdgAutostart = true; - }; - settings = import ./settings.nix { inherit lib config; }; - plugins = [ - pkgs.hyprlandPlugins.hy3 - ]; - }; - }; -} diff --git a/homeModules/hyprland/env.nix b/homeModules/hyprland/env.nix deleted file mode 100644 index 606a28c6..00000000 --- a/homeModules/hyprland/env.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - env = [ - "WLR_NO_HARDWARE_CURSORS, 1" - "WLR_RENDERER_ALLOW_SOFTWARE, 1" - "NIXOS_OZONE_WL, 1" - "XDG_SESSION_TYPE, wayland" - "QT_QPA_PLATFORM, wayland" - "XDG_CURRENT_DESKTOP, Hyprland" - "XDG_SESSION_DESKTOP, Hyprland" - ]; -} diff --git a/homeModules/hyprland/hypridle.nix b/homeModules/hyprland/hypridle.nix deleted file mode 100644 index ff6167c0..00000000 --- a/homeModules/hyprland/hypridle.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.wayland.windowManager.hyprland; -in -{ - config.services.hypridle = lib.mkIf cfg.enable { - enable = true; - settings = { - general = { - lock_cmd = "loginctl lock-session"; - # before_sleep_cmd = "loginctl lock-session"; - after_sleep_cmd = "hyprctl dispatch dpms on"; - inhibit_sleep = 3; - }; - listener = [ - { - timeout = 420; - on-timeout = "loginctl lock-session"; - } - { - timeout = 600; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - { - timeout = 900; - on-timeout = "systemctl resume"; - } - ]; - }; - }; -} diff --git a/homeModules/hyprland/keybindings.nix b/homeModules/hyprland/keybindings.nix deleted file mode 100644 index a61c1f81..00000000 --- a/homeModules/hyprland/keybindings.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ lib, shell }: -{ - "$mod" = "SUPER"; - "$satty" = "satty -f -"; - - binde = [ - # Media binds that can be held and repeated - ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" - ", XF86MonBrightnessUp, exec, brightnessctl set +5%" - ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - ]; - - bind = [ - "SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox" - "$mod, Return, exec, ghostty" - "SUPER_SHIFT, E, exit" - - # Media Binds - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - - # Workspace binds - "$mod, 1, workspace, 01" - "SUPER_SHIFT, 1, hy3:movetoworkspace, 01" - "$mod, 2, workspace, 02" - "SUPER_SHIFT, 2, hy3:movetoworkspace, 02" - "$mod, 3, workspace, 03" - "SUPER_SHIFT, 3, hy3:movetoworkspace, 03" - "$mod, 4, workspace, 04" - "SUPER_SHIFT, 4, hy3:movetoworkspace, 04" - "$mod, 5, workspace, 05" - "SUPER_SHIFT, 5, hy3:movetoworkspace, 05" - "$mod, 6, workspace, 06" - "SUPER_SHIFT, 6, hy3:movetoworkspace, 06" - "$mod, 7, workspace, 07" - "SUPER_SHIFT, 7, hy3:movetoworkspace, 07" - "$mod, 8, workspace, 08" - "SUPER_SHIFT, 8, hy3:movetoworkspace, 08" - "$mod, 9, workspace, 09" - "SUPER_SHIFT, 9, hy3:movetoworkspace, 09" - "$mod, 0, workspace, 10" - "SUPER_SHIFT, 0, hy3:movetoworkspace, 10" - # Scratchpad - "SUPER_SHIFT, -, hy3:movetoworkspace, special:default" - "$mod, -, togglespecialworkspace, default" - - # Window Management - "SUPER_SHIFT, Up, hy3:movewindow, up, once, visible" - "SUPER_SHIFT, K, hy3:movewindow, up, once, visible" - "$mod, Up, hy3:movefocus, up, visible, warp" - "$mod, K, hy3:movefocus, up, visible, warp" - - "SUPER_SHIFT, Right, hy3:movewindow, right, once, visible" - "SUPER_SHIFT, L, hy3:movewindow, right, once, visible" - "$mod, Right, hy3:movefocus, right, visible, warp" - "$mod, L, hy3:movefocus, right, visible, warp" - - "SUPER_SHIFT, Left, hy3:movewindow, left, once, visible" - "SUPER_SHIFT, H, hy3:movewindow, left, once, visible" - "$mod, Left, hy3:movefocus, left, visible, warp" - "$mod, H, hy3:movefocus, left, visible, warp" - - "SUPER_SHIFT, Down, hy3:movewindow, down, once, visible" - "SUPER_SHIFT, J, hy3:movewindow, down, once, visible" - "$mod, Down, hy3:movefocus, down, visible, warp" - "$mod, J, hy3:movefocus, down, visible, warp" - - "SUPER_SHIFT, Q, killactive" - "$mod, F, fullscreen, 0" - # Super-(literal equals) - "$mod, code:21, hy3:togglefocuslayer" - # Super-(literal plus) - "SUPER_SHIFT, code:21, togglefloating, active" - - # Screenshots - "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty" - "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty" - ] - ++ lib.optionals (shell == "caelestia") [ - "$mod, X, global, caelestia:session" - ", XF86PowerOff , global, caelestia:session" - "$mod, Space, global, caelestia:launcher" - ] - ++ lib.optionals (shell == "dms") [ - "$mod, X, exec, dms ipc call powermenu toggle" - ", XF86PowerOff ,exec, dms ipc call powermenu toggle" - "SUPER_SHIFT, X, exec, dms ipc call lock lock" - "$mod, Space, exec, dms ipc call spotlight toggle" - ]; - - bindm = [ - "$mod, mouse:272, movewindow" - ]; - - # Unbind a bunch of default keybinds - unbind = [ - "$mod, C" - "$mod, E" - "$mod, J" - "$mod, M" - "$mod, P" - "$mod, Q" - "$mod, R" - "$mod, V" - ]; -} diff --git a/homeModules/hyprland/monitors.nix b/homeModules/hyprland/monitors.nix deleted file mode 100644 index 77c7e20c..00000000 --- a/homeModules/hyprland/monitors.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - monitor = [ - "eDP-1, 2560x1600@165, 0x0, 1, vrr, 1" - "desc:Acer Technologies SA241Y 0x1497CF17, preferred, 2560x0, 1" - # Fallback for random monitors - ", preferred, auto, 1" - ]; -} diff --git a/homeModules/hyprland/plugins.nix b/homeModules/hyprland/plugins.nix deleted file mode 100644 index 2e638274..00000000 --- a/homeModules/hyprland/plugins.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - plugin = { - hy3 = { - no_gaps_when_only = 1; - }; - }; -} diff --git a/homeModules/hyprland/services.nix b/homeModules/hyprland/services.nix deleted file mode 100644 index 9347500f..00000000 --- a/homeModules/hyprland/services.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - config, - ... -}: -let - cfg = config.wayland.windowManager.hyprland; -in -{ - services.hyprpolkitagent.enable = cfg.enable; -} diff --git a/homeModules/hyprland/settings.nix b/homeModules/hyprland/settings.nix deleted file mode 100644 index db13c7c1..00000000 --- a/homeModules/hyprland/settings.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ config, lib, ... }: -let - inherit (config.py.profiles.desktop) shell; - keybinds = import ./keybindings.nix { inherit lib shell; }; - monitors = import ./monitors.nix; - variables = import ./variables.nix; - plugins = import ./plugins.nix; - env = import ./env.nix; - windowrules = import ./windowrules.nix; -in -{ - animation = [ - "global, 1, 4, default" - ]; - exec-once = lib.optionals (shell == "dms") [ - "dms run" - "bash -c \"wl-paste --watch cliphist store &\"" - ]; -} -// keybinds -// monitors -// variables -// plugins -// env -// windowrules diff --git a/homeModules/hyprland/variables.nix b/homeModules/hyprland/variables.nix deleted file mode 100644 index ddae24ee..00000000 --- a/homeModules/hyprland/variables.nix +++ /dev/null @@ -1,40 +0,0 @@ -# https://wiki.hypr.land/Configuring/Variables -{ - general = { - gaps_in = 1; - gaps_out = 10; - layout = "hy3"; - resize_on_border = true; - }; - decoration = { - blur.enabled = false; - shadow.enabled = false; - }; - misc = { - disable_hyprland_logo = true; - disable_splash_rendering = true; - font_family = "Inter"; - mouse_move_focuses_monitor = true; - }; - input = { - kb_options = "caps:escape"; - repeat_delay = 300; - touchpad = { - scroll_factor = 1.5; - tap_button_map = "lmr"; - tap-and-drag = false; - }; - }; - render = { - direct_scanout = 0; - non_shader_cm = 3; - cm_fs_passthrough = 0; - }; - cursor = { - hotspot_padding = 2; - }; - ecosystem = { - no_update_news = true; - no_donation_nag = true; - }; -} diff --git a/homeModules/hyprland/windowrules.nix b/homeModules/hyprland/windowrules.nix deleted file mode 100644 index 8ceb9522..00000000 --- a/homeModules/hyprland/windowrules.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - windowrule = [ - "match:title Celeste, immediate, content game" - "match:title Melvor Idle, tile" - # Borderlands 2 - "match:class steam_app_49520, immediate, content game, fullscreen, monitor DP-2" - "match:initial_class steam_app_49520, immediate, content game, fullscreen, monitor DP-2" - ]; -} diff --git a/homeModules/niri/config.kdl b/homeModules/niri/config.kdl new file mode 100644 index 00000000..2fbcf500 --- /dev/null +++ b/homeModules/niri/config.kdl @@ -0,0 +1,241 @@ +input { + warp-mouse-to-focus + focus-follows-mouse max-scroll-amount="0%" + + keyboard { + repeat-delay 200 + repeat-rate 20 + xkb { + options "caps:escape" + } + } + + touchpad { + dwt + drag false + tap-button-map "left-middle-right" + scroll-factor 1.5 + } + + mouse { + scroll-factor 1.5 + } +} + +output "Acer Technologies SA241Y 0x1497CF17" { + mode "1920x1080@74.973" + scale 1 + transform "normal" + position x=2560 y=0 + focus-at-startup +} + +output "eDP-1" { + mode "2560x1600@165" + scale 1 + transform "normal" + position x=0 y=0 + variable-refresh-rate + focus-at-startup +} + +layout { + gaps 5 + background-color "transparent" + center-focused-column "never" + + // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + // preset-window-heights { } + default-column-width { proportion 0.5; } + // If you leave the brackets empty, the windows themselves will decide their initial width. + // default-column-width {} + + focus-ring { + width 2 + active-color "#a6e3a1" + inactive-color "#6c7086" + } + border { + off + } + struts { + left 5 + right 5 + top 5 + bottom 5 + } +} + +prefer-no-csd +spawn-at-startup "dms" "run" + +environment { + XDG_CURRENT_DESKTOP "niri" + QT_QPA_PLATFORM "wayland" + ELECTRON_OZONE_PLATFORM_HINT "auto" + QT_QPA_PLATFORMTHEME "gtk3" + QT_QPA_PLATFORMTHEME_QT6 "gtk3" + GDK_BACKEND "wayland,x11,*" +} + +hotkey-overlay { +} + +screenshot-path "~/Pictures/screenshots/%Y/%m/%d-%H-%M-%S.png" + +window-rule { + match app-id=r#"firefox$"# title="^Picture-in-Picture$" + open-floating true +} +window-rule { + match title="Celeste" + open-fullscreen true +} + +window-rule { + match title=r#"^Borderlands 2"# + open-fullscreen true + open-on-output "Acer Technologies SA241Y 0x1497CF17" +} + +binds { + Super+Shift+Slash { show-hotkey-overlay; } + + Super+Space hotkey-overlay-title="Launcher" { spawn "dms" "ipc" "spotlight" "toggle"; } + Super+Return hotkey-overlay-title="Open Terminal" { spawn "ghostty"; } + Super+X hotkey-overlay-title="Power Menu" { spawn "dms" "ipc" "powermenu" "toggle"; } + Super+Shift+X hotkey-overlay-title="Lock Session" { spawn "dms" "ipc" "lock" "lock"; } + + XF86AudioRaiseVolume hotkey-overlay-title="Volume Up" allow-when-locked=true { spawn "dms" "ipc" "audio" "increment" "5"; } + XF86AudioLowerVolume hotkey-overlay-title="Volume Down" allow-when-locked=true { spawn "dms" "ipc" "audio" "decrement" "5"; } + XF86AudioMute hotkey-overlay-title="Mute Audio" allow-when-locked=true { spawn "dms" "ipc" "audio" "mute"; } + XF86AudioPlay allow-when-locked=true { spawn "dms" "ipc" "mpris" "playPause"; } + XF86AudioStop allow-when-locked=true { spawn "dms" "ipc" "mpris" "stop"; } + XF86AudioPrev allow-when-locked=true { spawn "dms" "ipc" "mpris" "previous"; } + XF86AudioNext allow-when-locked=true { spawn "dms" "ipc" "mpris" "next"; } + + XF86MonBrightnessUp allow-when-locked=true { spawn "dms" "ipc" "brightness" "increment" "5"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "dms" "ipc" "brightness" "decrement" "5"; } + + Super+O repeat=false { toggle-overview; } + + Super+Q repeat=false { close-window; } + + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + + Mod+Shift+Left { move-column-left; } + Mod+Shift+Down { move-window-down; } + Mod+Shift+Up { move-window-up; } + Mod+Shift+Right { move-column-right; } + Mod+Shift+H { move-column-left; } + Mod+Shift+J { move-window-down; } + Mod+Shift+K { move-window-up; } + Mod+Shift+L { move-column-right; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+Shift+1 { move-window-to-workspace 1; } + Mod+Shift+2 { move-window-to-workspace 2; } + Mod+Shift+3 { move-window-to-workspace 3; } + Mod+Shift+4 { move-window-to-workspace 4; } + Mod+Shift+5 { move-window-to-workspace 5; } + Mod+Shift+6 { move-window-to-workspace 6; } + Mod+Shift+7 { move-window-to-workspace 7; } + Mod+Shift+8 { move-window-to-workspace 8; } + Mod+Shift+9 { move-window-to-workspace 9; } + + Mod+Tab { focus-workspace-previous; } + + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + // Consume one window from the right to the bottom of the focused column. + Mod+Comma { consume-window-into-column; } + // Expel the bottom window from the focused column to the right. + Mod+Period { expel-window-from-column; } + + Mod+R { switch-preset-column-width; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + + Mod+Ctrl+F { expand-column-to-available-width; } + + Mod+C { center-column; } + + Mod+Ctrl+C { center-visible-columns; } + + Mod+Shift+Equal { toggle-window-floating; } + Mod+Equal { switch-focus-between-floating-and-tiling; } + + Mod+W { toggle-column-tabbed-display; } + + Print { screenshot; } + Shift+F3 { screenshot-screen; } + Shift+F4 { screenshot-window; } + + Mod+Shift+E { quit; } + + Ctrl+Alt+L { spawn "loginctl" "lock-session"; } +} + +// DMS Integration +layer-rule { + match namespace="^quickshell$" + place-within-backdrop true +} +layer-rule { + match namespace="dms:blurwallpaper" + place-within-backdrop true +} diff --git a/homeModules/niri/default.nix b/homeModules/niri/default.nix new file mode 100644 index 00000000..16eff5ef --- /dev/null +++ b/homeModules/niri/default.nix @@ -0,0 +1,7 @@ +{ + config = { + xdg.configFile."niri/config.kdl" = { + source = ./config.kdl; + }; + }; +} diff --git a/homeModules/profiles/desktop/default.nix b/homeModules/profiles/desktop/default.nix index 9a8ce204..b5c08e5b 100644 --- a/homeModules/profiles/desktop/default.nix +++ b/homeModules/profiles/desktop/default.nix @@ -6,33 +6,11 @@ }: let cfg = config.py.profiles.desktop; - inherit (cfg) shell; inherit (lib) mkIf mkDefault mkEnableOption; - - mkShellOption = - name: var: - lib.mkOption { - type = lib.types.bool; - default = if (shell == var) then true else false; - description = "Enable ${name}"; - readOnly = true; - visible = false; - internal = true; - }; in { options.py.profiles.desktop = { enable = mkEnableOption "Desktop Config"; - shell = lib.mkOption { - type = lib.types.enum [ - "caelestia" - "dms" - ]; - default = "caelestia"; - description = "The desktop shell to use in the graphical environment"; - }; - caelestia = mkShellOption "Caelestia shell" "caelestia"; - dms = mkShellOption "DMS" "dms"; }; config = mkIf cfg.enable { py.profiles.base.enable = true; diff --git a/homeModules/profiles/gui/default.nix b/homeModules/profiles/gui/default.nix index cde6305e..ae3e39d7 100644 --- a/homeModules/profiles/gui/default.nix +++ b/homeModules/profiles/gui/default.nix @@ -36,7 +36,6 @@ in libappindicator-gtk3 prismlauncher pwvucontrol - hyprshot satty ueberzug (olympus.overrideAttrs (_: { diff --git a/homeModules/programs/caelestia/caelestia-cli.json b/homeModules/programs/caelestia/caelestia-cli.json deleted file mode 100644 index 9594b010..00000000 --- a/homeModules/programs/caelestia/caelestia-cli.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "record": { - "extraArgs": [] - }, - "theme": { - "enableTerm": false, - "enableHypr": false, - "enableDiscord": false, - "enableSpicetify": false, - "enableFuzzel": false, - "enableBtop": true, - "enableGtk": false, - "enableQt": false - }, - "toggles": { - "discord": { - "discord": { - "enable": true, - "match": [ - { - "class": "equibop" - } - ], - "command": [ - "equibop" - ], - "move": true - } - }, - "sysmon": { - "btop": { - "enable": true, - "match": [ - { - "class": "btop", - "title": "btop", - "workspace": { - "name": "special:sysmon" - } - } - ], - "command": [ - "ghostty", - "-e", - "btop" - ] - } - } - } -} diff --git a/homeModules/programs/caelestia/caelestia-shell.json b/homeModules/programs/caelestia/caelestia-shell.json deleted file mode 100644 index ac3038ce..00000000 --- a/homeModules/programs/caelestia/caelestia-shell.json +++ /dev/null @@ -1,364 +0,0 @@ -{ - "appearance": { - "anim": { - "durations": { - "scale": 0.5 - } - }, - "font": { - "family": { - "clock": "Inter", - "material": "Material Symbols Rounded", - "mono": "BlexMono Nerd Font", - "sans": "Inter" - }, - "size": { - "scale": 1.1 - } - }, - "padding": { - "scale": 1 - }, - "rounding": { - "scale": 0 - }, - "spacing": { - "scale": 0.5 - }, - "transparency": { - "base": 0.85, - "enabled": false, - "layers": 0.4 - } - }, - "background": { - "desktopClock": { - "enabled": false - }, - "enabled": true, - "visualiser": { - "autoHide": true, - "enabled": false, - "rounding": 1, - "spacing": 1 - } - }, - "bar": { - "clock": { - "showIcon": false - }, - "dragThreshold": 20, - "entries": [ - { - "enabled": true, - "id": "workspaces" - }, - { - "enabled": true, - "id": "spacer" - }, - { - "enabled": false, - "id": "activeWindow" - }, - { - "enabled": true, - "id": "spacer" - }, - { - "enabled": true, - "id": "clock" - }, - { - "enabled": true, - "id": "statusIcons" - }, - { - "enabled": true, - "id": "tray" - }, - { - "enabled": true, - "id": "power" - } - ], - "persistent": true, - "scrollActions": { - "brightness": false, - "volume": false, - "workspaces": false - }, - "showOnHover": true, - "status": { - "showAudio": true, - "showBattery": true, - "showBluetooth": true, - "showKbLayout": false, - "showLockStatus": true, - "showMicrophone": false, - "showNetwork": true - }, - "tray": { - "background": true, - "compact": false, - "iconSubs": [], - "recolour": true - }, - "workspaces": { - "activeIndicator": true, - "activeLabel": "", - "activeTrail": false, - "label": " ", - "occupiedBg": false, - "occupiedLabel": "", - "perMonitorWorkspaces": true, - "showWindows": true, - "shown": 5 - } - }, - "border": { - "rounding": 0, - "thickness": 10 - }, - "dashboard": { - "dragThreshold": 50, - "enabled": true, - "mediaUpdateInterval": 500, - "showOnHover": true - }, - "general": { - "apps": { - "audio": [ - "pwvucontrol" - ], - "explorer": [ - "thunar" - ], - "playback": [ - "mpv" - ], - "terminal": [ - "ghostty" - ] - }, - "battery": { - "criticalLevel": 3, - "warnLevels": [ - { - "icon": "battery_android_frame_2", - "level": 20, - "message": "You might want to plug in a charger", - "title": "Low battery" - }, - { - "icon": "battery_android_frame_1", - "level": 10, - "message": "You should probably plug in a charger now", - "title": "Did you see the previous message?" - }, - { - "critical": true, - "icon": "battery_android_alert", - "level": 5, - "message": "PLUG THE CHARGER RIGHT NOW!!", - "title": "Critical battery level" - } - ] - }, - "idle": { - "inhibitWhenAudio": false, - "lockBeforeSleep": false, - "timeouts": [] - } - }, - "launcher": { - "actionPrefix": ">", - "actions": [ - { - "command": [ - "autocomplete", - "calc" - ], - "dangerous": false, - "description": "Do simple math equations (powered by Qalc)", - "enabled": true, - "icon": "calculate", - "name": "Calculator" - }, - { - "name": "Wallpaper", - "icon": "image", - "description": "Change the current wallpaper", - "command": [ - "autocomplete", - "wallpaper" - ], - "enabled": true, - "dangerous": false - }, - { - "name": "Random", - "icon": "casino", - "description": "Switch to a random wallpaper", - "command": [ - "caelestia", - "wallpaper", - "-r" - ], - "enabled": true, - "dangerous": false - }, - { - "command": [ - "systemctl", - "poweroff" - ], - "dangerous": true, - "description": "Shutdown the system", - "enabled": true, - "icon": "power_settings_new", - "name": "Shutdown" - }, - { - "command": [ - "systemctl", - "reboot" - ], - "dangerous": true, - "description": "Reboot the system", - "enabled": true, - "icon": "cached", - "name": "Reboot" - }, - { - "command": [ - "loginctl", - "terminate-user", - "" - ], - "dangerous": true, - "description": "Log out of the current session", - "enabled": true, - "icon": "exit_to_app", - "name": "Logout" - }, - { - "command": [ - "loginctl", - "lock-session" - ], - "dangerous": false, - "description": "Lock the current session", - "enabled": true, - "icon": "lock", - "name": "Lock" - }, - { - "command": [ - "systemctl", - "suspend" - ], - "dangerous": false, - "description": "Suspend", - "enabled": true, - "icon": "bedtime", - "name": "Sleep" - } - ], - "dragThreshold": 50, - "enableDangerousActions": false, - "hiddenApps": [], - "maxShown": 7, - "maxWallpapers": 9, - "showOnHover": false, - "specialPrefix": "@", - "useFuzzy": { - "actions": false, - "apps": true, - "schemes": false, - "variants": false, - "wallpapers": false - }, - "vimKeybinds": true - }, - "lock": { - "recolourLogo": false, - "enableFprint": false - }, - "notifs": { - "actionOnClick": true, - "clearThreshold": 0.3, - "defaultExpireTimeout": 5000, - "expandThreshold": 20, - "expire": true - }, - "osd": { - "enableBrightness": true, - "enableMicrophone": false, - "enabled": true, - "hideDelay": 2000 - }, - "paths": { - "mediaGif": "", - "sessionGif": "", - "wallpaperDir": "~/bgs/wallpapers" - }, - "services": { - "audioIncrement": 0.1, - "defaultPlayer": "Spotify", - "gpuType": "", - "playerAliases": [ - { - "from": "Mozilla firefox", - "to": "Firefox" - } - ], - "smartScheme": false, - "useFahrenheit": true, - "useTwelveHourClock": false, - "visualiserBars": 0, - "weatherLocation": "Norfolk+Virginia" - }, - "session": { - "commands": { - "hibernate": [ - "systemctl", - "suspend" - ], - "logout": [ - "loginctl", - "terminate-user" - ], - "reboot": [ - "systemctl", - "reboot" - ], - "shutdown": [ - "systemctl", - "poweroff" - ] - }, - "dragThreshold": 30, - "enabled": true, - "vimKeybinds": true - }, - "sidebar": { - "dragThreshold": 80, - "enabled": true - }, - "utilities": { - "enabled": true, - "maxToasts": 4, - "toasts": { - "audioInputChanged": true, - "audioOutputChanged": true, - "capsLockChanged": true, - "chargingChanged": true, - "configLoaded": true, - "dndChanged": true, - "gameModeChanged": true, - "numLockChanged": true, - "nowPlaying": true - } - } -} diff --git a/homeModules/programs/caelestia/default.nix b/homeModules/programs/caelestia/default.nix deleted file mode 100644 index b5194619..00000000 --- a/homeModules/programs/caelestia/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.py.profiles.desktop.caelestia; - en = config.py.profiles.desktop.enable; -in -{ - config = lib.mkIf (cfg && en) { - programs.caelestia = { - enable = true; - settings = builtins.fromJSON (builtins.readFile ./caelestia-shell.json); - systemd = { - enable = true; - target = "graphical-session.target"; - }; - cli.enable = true; - cli.settings = builtins.fromJSON (builtins.readFile ./caelestia-cli.json); - }; - }; -} diff --git a/homeModules/programs/default.nix b/homeModules/programs/default.nix index abac6fd0..03110336 100644 --- a/homeModules/programs/default.nix +++ b/homeModules/programs/default.nix @@ -1,9 +1,7 @@ { imports = [ # keep-sorted start - ./caelestia ./chromium - ./dms ./firefox ./fish ./ghostty diff --git a/homeModules/programs/dms/default.nix b/homeModules/programs/dms/default.nix deleted file mode 100644 index 280c2313..00000000 --- a/homeModules/programs/dms/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.py.profiles.desktop.dms; - en = config.py.profiles.desktop.enable; -in -{ - config = lib.mkIf (cfg && en) { - programs.dank-material-shell = { - enable = true; - enableDynamicTheming = false; - enableAudioWavelength = false; - enableCalendarEvents = false; - enableSystemSound = false; - }; - }; -} diff --git a/homeModules/theming/default.nix b/homeModules/theming/default.nix index 4280fe21..902b52e8 100644 --- a/homeModules/theming/default.nix +++ b/homeModules/theming/default.nix @@ -17,7 +17,6 @@ in package = pkgs.catppuccin-cursors.mochaBlue; name = "catppuccin-mocha-blue-cursors"; gtk.enable = true; - hyprcursor.enable = true; }; gtk = mkIf pro.gui.enable { enable = true; diff --git a/homeModules/xdg/default.nix b/homeModules/xdg/default.nix index f0e1cca3..35d734ee 100644 --- a/homeModules/xdg/default.nix +++ b/homeModules/xdg/default.nix @@ -18,15 +18,17 @@ in enable = true; xdgOpenUsePortal = true; extraPortals = [ + pkgs.xdg-desktop-portal-gnome pkgs.xdg-desktop-portal-gtk ]; config = { common = { default = [ - "hyprland" + "gnome" "gtk" ]; "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; + "org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ]; }; }; }; diff --git a/hosts/default.nix b/hosts/default.nix index a69231e4..3ce66374 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -10,7 +10,7 @@ inputs.self.nixosModules.defaultConfig inputs.self.nixosModules.defaultUsers inputs.self.nixosModules.firefox - inputs.self.nixosModules.hyprland + inputs.self.nixosModules.niri inputs.self.nixosModules.forgejo-runner inputs.self.nixosModules.hm-pyrox inputs.self.nixosModules.hm-thehedgehog @@ -58,6 +58,7 @@ inputs.hardware.nixosModules.framework-16-7040-amd inputs.self.nixosModules.hm-pyrox-zaphod inputs.self.nixosModules.hm-thehedgehog-zaphod + inputs.self.nixosModules.dms { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; diff --git a/hosts/zaphod/default.nix b/hosts/zaphod/default.nix index 50964ff5..98b18e55 100644 --- a/hosts/zaphod/default.nix +++ b/hosts/zaphod/default.nix @@ -29,17 +29,20 @@ profiles.gui.enable = true; users.default.enable = true; programs = { + # keep-sorted start appimage.enable = true; chromium.enable = true; dconf.enable = true; + dms.enable = true; firefox.enable = true; fish.enable = true; - hyprland.enable = true; less.enable = true; neovim.enable = true; + niri.enable = true; noisetorch.enable = true; steam.enable = true; wireshark.enable = true; + # keep-sorted end }; }; diff --git a/hosts/zaphod/misc.nix b/hosts/zaphod/misc.nix index 81c0190f..64983005 100644 --- a/hosts/zaphod/misc.nix +++ b/hosts/zaphod/misc.nix @@ -53,7 +53,4 @@ percentageLow = 30; percentageCritical = 15; }; - - # For caelestia screen recording - programs.gpu-screen-recorder.enable = true; } diff --git a/nixosModules/default-config/nixpkgsConfig.nix b/nixosModules/default-config/nixpkgsConfig.nix index ad78c38e..0e5e45ae 100644 --- a/nixosModules/default-config/nixpkgsConfig.nix +++ b/nixosModules/default-config/nixpkgsConfig.nix @@ -6,7 +6,6 @@ nixpkgs = { overlays = [ inputs.self.overlays.openssh-fixperms - inputs.self.overlays.hy3-fixes inputs.golink.overlays.default inputs.quickshell.overlays.default ]; diff --git a/nixosModules/default.nix b/nixosModules/default.nix index d1721e3d..e7bd4fc2 100644 --- a/nixosModules/default.nix +++ b/nixosModules/default.nix @@ -9,10 +9,11 @@ _: { # Programs chromium = import ./programs/chromium; + dms = import ./programs/dms; firefox = import ./programs/firefox; - hyprland = import ./programs/hyprland; miscPrograms = import ./programs/misc; neovim = import ./programs/neovim; + niri = import ./programs/niri; # Services buildbot = import ./services/buildbot; diff --git a/nixosModules/homes/thehedgehog-zaphod/default.nix b/nixosModules/homes/thehedgehog-zaphod/default.nix index 3f3c86c8..199eed0a 100644 --- a/nixosModules/homes/thehedgehog-zaphod/default.nix +++ b/nixosModules/homes/thehedgehog-zaphod/default.nix @@ -1,13 +1,8 @@ { pkgs, - lib, - inputs, self', ... }: -let - shell = "caelestia"; -in { home-manager.users.thehedgehog = { home.packages = [ @@ -17,18 +12,10 @@ in ]; home.sessionVariables = { QT_QPA_PLATFORM = "wayland;xcb"; - GDK_BACKEND = "wayland,x11,*"; NIXOS_OZONE_WL = "1"; }; py.profiles.desktop = { - inherit shell; enable = true; }; - programs.dank-material-shell.plugins = lib.mkIf (shell == "dms") { - dms-wallpaper-shuffler.src = inputs.dms-wp-shuffler; - dms-power-usage.src = inputs.dms-power-usage; - DankPomodoroTimer.src = "${inputs.dms-plugins}/DankPomodoroTimer"; - DankBatteryAlerts.src = "${inputs.dms-plugins}/DankBatteryAlerts"; - }; }; } diff --git a/nixosModules/programs/dms/default.nix b/nixosModules/programs/dms/default.nix new file mode 100644 index 00000000..2516e938 --- /dev/null +++ b/nixosModules/programs/dms/default.nix @@ -0,0 +1,46 @@ +{ + config, + lib, + inputs', + pkgs, + ... +}: +let + cfg = config.py.programs.dms; + # dank-plugins-src = pkgs.fetchFromGitHub { + # owner = "AvengeMedia"; + # repo = "dms-plugins"; + # rev = "8fa7c5286171c66a209dd74e9a47d6e72ccfdad6"; + # hash = ""; + # }; +in +{ + options = { + py.programs.dms.enable = lib.mkEnableOption "Dank-Material-Shell"; + }; + config = lib.mkIf cfg.enable { + programs.dms-shell = { + enable = true; + systemd.enable = false; + enableSystemMonitoring = true; + enableClipboard = true; + quickshell.package = inputs'.quickshell.packages.quickshell; + # plugins = { + # dankPomodoroTimer.src = dank-plugins-src; + # dankDesktopWeather.src = dank-plugins-src; + # powerUsagePlugin.src = pkgs.fetchFromGitHub { + # owner = "Daniel-42-z"; + # repo = "dms-power-usage"; + # rev = "04b7da69b98be23d6f6bbc0430461680b43809e0"; + # hash = ""; + # }; + # mediaPlayer.src = pkgs.fetchFromGitHub { + # owner = "arrifat346afs"; + # repo = "mediaPlayer"; + # rev = "4d73e6c810f85093339eb6cc6dad251ea6c15b04"; + # hash = ""; + # }; + # }; + }; + }; +} diff --git a/nixosModules/programs/hyprland/default.nix b/nixosModules/programs/hyprland/default.nix deleted file mode 100644 index 50c3aead..00000000 --- a/nixosModules/programs/hyprland/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.py.programs.hyprland; -in -{ - options = { - py.programs.hyprland.enable = lib.mkEnableOption "Hyprland"; - }; - config = lib.mkIf cfg.enable { - programs.hyprland = { - enable = true; - xwayland.enable = true; - }; - }; -} diff --git a/nixosModules/programs/niri/default.nix b/nixosModules/programs/niri/default.nix new file mode 100644 index 00000000..a864e90a --- /dev/null +++ b/nixosModules/programs/niri/default.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.py.programs.niri; +in +{ + options = { + py.programs.niri.enable = lib.mkEnableOption "Niri"; + }; + config = lib.mkIf cfg.enable { + programs.niri = { + enable = true; + }; + environment.systemPackages = [ + pkgs.xwayland-satellite + ]; + }; +} diff --git a/overlays/default.nix b/overlays/default.nix index 262a1382..94ad6a7b 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -2,6 +2,5 @@ flake.overlays = { cinny = import ./cinny; openssh-fixperms = import ./openssh-fixperms; - hy3-fixes = import ./hy3-fixes; }; } diff --git a/overlays/hy3-fixes/default.nix b/overlays/hy3-fixes/default.nix deleted file mode 100644 index b8ac368f..00000000 --- a/overlays/hy3-fixes/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -_final: prev: { - hyprlandPlugins = prev.hyprlandPlugins // { - hy3 = prev.hyprlandPlugins.hy3.overrideAttrs (old: { - patches = (old.patches or [ ]) ++ [ - (prev.fetchpatch { - url = "https://github.com/outfoxxed/hy3/commit/8a3f46a40984e74094f71b5bd38df3dbe5daa97f.patch?full_index=1"; - hash = "sha256-zNGCMcidRx7zV3mnlQT4EjA36g7MeBf6A9gyvITeZ4c="; - }) - ]; - }); - }; -}