diff --git a/aspects/base/zsh.nix b/aspects/base/zsh.nix index cad3309..c0313c9 100644 --- a/aspects/base/zsh.nix +++ b/aspects/base/zsh.nix @@ -29,6 +29,21 @@ initExtra = '' unsetopt beep ${lib.getExe pkgs.nix-your-shell} zsh | source /dev/stdin + + # Fish-style Ctrl+Backspace: delete one path segment at a time + function backward-kill-path-component() { + if [[ "$LBUFFER" == */ ]]; then + LBUFFER="''${LBUFFER%/}" + fi + + if [[ "$LBUFFER" == */* ]]; then + LBUFFER="''${LBUFFER%/*}/" + else + zle backward-kill-word + fi + } + zle -N backward-kill-path-component + bindkey '^H' backward-kill-path-component ''; loginExtra = "${lib.getExe pkgs.nix-your-shell} zsh | source /dev/stdin"; history = { diff --git a/aspects/desktop/kde.nix b/aspects/desktop/kde.nix index ec329f2..39160fd 100644 --- a/aspects/desktop/kde.nix +++ b/aspects/desktop/kde.nix @@ -33,6 +33,10 @@ ]; config.common.default = "*"; }; + environment.systemPackages = with pkgs; [ + kdePackages.karousel + kde-rounded-corners + ]; programs.kdeconnect.enable = true; }; diff --git a/aspects/desktop/media.nix b/aspects/desktop/media.nix index 7543c0a..03ee54d 100644 --- a/aspects/desktop/media.nix +++ b/aspects/desktop/media.nix @@ -6,10 +6,9 @@ { pkgs, ... }: { environment.systemPackages = with pkgs; [ - decibels - loupe + mpv obs-studio - showtime + qview ]; }; diff --git a/aspects/desktop/niri.nix b/aspects/desktop/niri.nix deleted file mode 100644 index b4352b4..0000000 --- a/aspects/desktop/niri.nix +++ /dev/null @@ -1,265 +0,0 @@ -{ ... }: -{ - flake.modules = { - nixos.niri = - { - config, - lib, - pkgs, - ... - }: - { - services.greetd.settings = { - default_session.command = "${lib.getExe pkgs.tuigreet} --user-menu --time --remember --asterisks --cmd ${config.programs.niri.package}/bin/niri-session"; - }; - - programs.niri.enable = true; - }; - homeManager.niri = - { - config, - lib, - pkgs, - inputs, - hostname ? null, - ... - }: - let - isRotterdam = hostname == "rotterdam"; - in - { - imports = [ inputs.noctalia.homeModules.default ]; - - services.kanshi = { - enable = true; - settings = [ - { - profile = { - name = "undocked"; - outputs = [ - { - criteria = "eDP-1"; - status = "enable"; - scale = 1.0; - } - ]; - }; - } - { - profile = { - name = "docked"; - outputs = [ - { - criteria = "eDP-1"; - status = "disable"; - } - { - criteria = "DP-1"; - status = "enable"; - scale = 1.0; - } - ]; - }; - } - ]; - }; - - home = { - packages = with pkgs; [ - xwayland-satellite - inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default - ]; - sessionVariables.QT_QPA_PLATFORMTHEME = "gtk3"; - }; - - xdg.configFile."niri/config.kdl".text = '' - input { - keyboard { - xkb { - layout "us" - variant "altgr-intl" - } - } - touchpad { - tap - dwt - drag true - drag-lock - natural-scroll - accel-speed 0.2 - accel-profile "flat" - scroll-method "two-finger" - middle-emulation - } - mouse { - natural-scroll - accel-speed 0.2 - accel-profile "flat" - } - warp-mouse-to-focus mode="center-xy" - focus-follows-mouse - } - - output "LG Electronics LG ULTRAWIDE 206AZFM5E459" { - layout { - preset-column-widths { - proportion 0.33333 - proportion 0.5 - proportion 0.66667 - } - default-column-width { proportion 0.33333; } - } - } - - layout { - gaps 8 - center-focused-column "never" - always-center-single-column - empty-workspace-above-first - preset-column-widths { - proportion 0.5 - proportion 1.0 - } - default-column-width { proportion 0.5; } - focus-ring { - off - } - border { - width 4 - active-color "#ffc87f" - inactive-color "#505050" - urgent-color "#9b0000" - } - tab-indicator { - width 4 - gap 4 - place-within-column - } - } - - overview { - zoom 0.65 - } - - spawn-at-startup "noctalia-shell" "-d" - spawn-at-startup "${lib.getExe pkgs.niri-auto-centre}" - layer-rule { - match namespace="^noctalia-overview*" - place-within-backdrop true - } - - hotkey-overlay { - skip-at-startup - } - - prefer-no-csd - screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" - - animations { - slowdown 0.3 - } - - window-rule { - match app-id="zen" - default-column-width { proportion ${if isRotterdam then "0.5" else "1.0"}; } - } - - window-rule { - geometry-corner-radius 12 - clip-to-geometry true - } - - config-notification { - disable-failed - } - - binds { - Alt+Space repeat=false { spawn "vicinae" "toggle"; } - XF86AudioRaiseVolume allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "increase"; } - XF86AudioLowerVolume allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "decrease"; } - XF86AudioMute allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "muteOutput"; } - XF86MonBrightnessUp allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "brightness" "increase"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "brightness" "decrease"; } - XF86AudioPlay allow-when-locked=true { spawn "${lib.getExe pkgs.playerctl}" "play-pause"; } - XF86AudioStop allow-when-locked=true { spawn "${lib.getExe pkgs.playerctl}" "stop"; } - XF86AudioPrev allow-when-locked=true { spawn "${lib.getExe pkgs.playerctl}" "previous"; } - XF86AudioNext allow-when-locked=true { spawn "${lib.getExe pkgs.playerctl}" "next"; } - Mod+V repeat=false { spawn "vicinae" "vicinae://extensions/vicinae/clipboard/history"; } - Mod+Shift+L repeat=false { spawn "noctalia-shell" "ipc" "call" "lockScreen" "lock"; } - Mod+Return { spawn "ghostty"; } - Ctrl+Alt+Shift+A allow-when-locked=true { spawn "toggleaudiosink"; } - Mod+W repeat=false { toggle-overview; } - Mod+Q { close-window; } - Alt+Shift+Q { close-window;} - Mod+Shift+Q { close-window; } - Alt+F4 { close-window; } - Mod+Left { focus-column-left; } - Mod+Down { focus-window-or-workspace-down; } - Mod+Up { focus-window-or-workspace-up; } - Mod+Right { focus-column-right; } - Mod+H { focus-column-left; } - Mod+L { focus-column-right; } - Mod+J { focus-window-or-workspace-down; } - Mod+K { focus-window-or-workspace-up; } - Mod+Ctrl+Left { move-column-left; } - Mod+Ctrl+Down { move-window-down-or-to-workspace-down; } - Mod+Ctrl+Up { move-window-up-or-to-workspace-up; } - Mod+Ctrl+Right { move-column-right; } - Mod+Ctrl+H { move-column-left; } - Mod+Ctrl+J { move-window-down-or-to-workspace-down; } - Mod+Ctrl+K { move-window-up-or-to-workspace-up; } - Mod+Ctrl+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+Alt+Left { focus-monitor-left; } - Mod+Alt+Down { focus-monitor-down; } - Mod+Alt+Up { focus-monitor-up; } - Mod+Alt+Right { focus-monitor-right; } - Mod+Alt+H { focus-monitor-left; } - Mod+Alt+J { focus-monitor-down; } - Mod+Alt+K { focus-monitor-up; } - Mod+Alt+L { focus-monitor-right; } - Mod+Alt+Ctrl+Left { move-column-to-monitor-left; } - Mod+Alt+Ctrl+Down { move-column-to-monitor-down; } - Mod+Alt+Ctrl+Up { move-column-to-monitor-up; } - Mod+Alt+Ctrl+Right { move-column-to-monitor-right; } - Mod+Alt+Ctrl+H { move-column-to-monitor-left; } - Mod+Alt+Ctrl+J { move-column-to-monitor-down; } - Mod+Alt+Ctrl+K { move-column-to-monitor-up; } - Mod+Alt+Ctrl+L { move-column-to-monitor-right; } - Mod+Ctrl+U { move-workspace-down; } - Mod+Ctrl+I { move-workspace-up; } - 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+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+BracketLeft { consume-or-expel-window-left; } - Mod+BracketRight { consume-or-expel-window-right; } - Mod+Comma { consume-window-into-column; } - Mod+Period { expel-window-from-column; } - Mod+R { switch-preset-column-width; } - Mod+F { maximize-column; } - Mod+Ctrl+F { fullscreen-window; } - Mod+C { center-visible-columns; } - Mod+Ctrl+C { center-column; } - Mod+Space { toggle-window-floating; } - Mod+Ctrl+Space { switch-focus-between-floating-and-tiling; } - Mod+T { toggle-column-tabbed-display; } - Print { screenshot-screen; } - Mod+Print { screenshot; } - Ctrl+Print { screenshot-window; } - Mod+Backspace allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } - Mod+Alt+E { spawn "noctalia-shell" "ipc" "call" "sessionMenu" "toggle"; } - Ctrl+Alt+Delete { spawn "noctalia-shell" "ipc" "call" "sessionMenu" "toggle"; } - Mod+Ctrl+P { power-off-monitors; } - } - ''; - }; - }; -} diff --git a/aspects/desktop/office.nix b/aspects/desktop/office.nix index 68d958a..3f6b2b5 100644 --- a/aspects/desktop/office.nix +++ b/aspects/desktop/office.nix @@ -11,7 +11,6 @@ aspellDicts.en-computers aspellDicts.pt_BR glow - papers presenterm rnote ]; diff --git a/aspects/hosts/io.nix b/aspects/hosts/io.nix index cf5ecec..b52aff6 100644 --- a/aspects/hosts/io.nix +++ b/aspects/hosts/io.nix @@ -15,9 +15,9 @@ in ai bluetooth dev + kde libvirtd networkmanager - niri podman ]; }; diff --git a/aspects/hosts/rotterdam.nix b/aspects/hosts/rotterdam.nix index 14de0f6..568d161 100644 --- a/aspects/hosts/rotterdam.nix +++ b/aspects/hosts/rotterdam.nix @@ -18,9 +18,7 @@ in dev fwupd kde - libvirtd networkmanager - # niri podman ]; }; diff --git a/aspects/systems/base.nix b/aspects/systems/base.nix index 87091b4..2502abe 100644 --- a/aspects/systems/base.nix +++ b/aspects/systems/base.nix @@ -22,7 +22,6 @@ nixos-firewall-tool sysz wget - yazi ]; shellAliases = { cat = "${lib.getExe pkgs.bat} --paging=never --style=plain"; diff --git a/aspects/systems/desktop.nix b/aspects/systems/desktop.nix index 9be4aa9..c3c833b 100644 --- a/aspects/systems/desktop.nix +++ b/aspects/systems/desktop.nix @@ -61,7 +61,6 @@ }; systemPackages = with pkgs; [ adwaita-icon-theme - ghostty gnome-disk-utility junction libfido2 @@ -153,11 +152,6 @@ fonts.fontconfig.enable = true; - home = { - packages = with pkgs; [ xwayland-satellite ]; - sessionVariables.TERMINAL = "ghostty"; - }; - services.vicinae = { enable = true; systemd = { @@ -166,29 +160,6 @@ }; }; - programs = { - ghostty = { - enable = true; - settings = { - cursor-style = "block"; - shell-integration-features = "no-cursor"; - cursor-style-blink = false; - custom-shader = "${builtins.fetchurl { - url = "https://raw.githubusercontent.com/hackr-sh/ghostty-shaders/cb6eb4b0d1a3101c869c62e458b25a826f9dcde3/cursor_blaze.glsl"; - sha256 = "sha256:0g2lgqjdrn3c51glry7x2z30y7ml0y61arl5ykmf4yj0p85s5f41"; - }}"; - bell-features = ""; - gtk-titlebar-style = "tabs"; - keybind = [ "shift+enter=text:\\x1b\\r" ]; - }; - }; - - password-store = { - enable = true; - package = pkgs.pass-wayland; - }; - }; - xdg = { enable = true; userDirs.enable = true; diff --git a/aspects/systems/gaming.nix b/aspects/systems/gaming.nix index 8834459..087773e 100644 --- a/aspects/systems/gaming.nix +++ b/aspects/systems/gaming.nix @@ -23,7 +23,7 @@ "org.freedesktop.Platform.VulkanLayer.MangoHud/x86_64/25.08" rec { appId = "com.hypixel.HytaleLauncher"; - sha256 = "MSCzfcucPbAlSXZSwX4MOJjetiRW5bLihxvQ0QKQtBI="; + sha256 = "uu7FA36M4wSqDXRF1fFNla8S5MjL1N1kZi4gwbpw1oY="; bundle = "${pkgs.fetchurl { url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-latest.flatpak"; inherit sha256; diff --git a/aspects/users/user.nix b/aspects/users/user.nix index 77cb812..68b155d 100644 --- a/aspects/users/user.nix +++ b/aspects/users/user.nix @@ -35,8 +35,6 @@ in # other aspects kde - stylix - # niri ]; }; "user@io" = mkHomeConfiguration { @@ -47,8 +45,7 @@ in desktop # other aspects - stylix - niri + kde ]; }; }; diff --git a/packages/niri-auto-centre.nix b/packages/niri-auto-centre.nix deleted file mode 100644 index dd7b04c..0000000 --- a/packages/niri-auto-centre.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ ... }: - -{ - perSystem = - { pkgs, ... }: - { - packages.niri-auto-centre = pkgs.writeShellApplication { - name = "niri-auto-centre"; - runtimeInputs = [ pkgs.jq ]; - text = '' - while true; do - ACTIVE_WORKSPACE=$(niri msg --json workspaces | jq -r '.[] | select(.is_active == true)') - WORKSPACE_ID=$(echo "$ACTIVE_WORKSPACE" | jq -r '.id') - OUTPUT_NAME=$(echo "$ACTIVE_WORKSPACE" | jq -r '.output') - - MONITOR_WIDTH=$(niri msg --json outputs | jq -r ".\"$OUTPUT_NAME\".logical.width") - - SUMMED_TILE_WIDTH=$(niri msg --json windows | jq --argjson wid "$WORKSPACE_ID" -r ' - [.[] | select(.workspace_id == $wid) | {col: .layout.pos_in_scrolling_layout[0], width: .layout.tile_size[0]}] - | group_by(.col) | map(first.width) | add - ') - - if awk "BEGIN {exit !($SUMMED_TILE_WIDTH < $MONITOR_WIDTH)}"; then - niri msg action center-visible-columns - fi - - sleep 0.1 - done - ''; - }; - }; -}