diff --git a/derivations/fish/fish-abbreviation-tips.nix b/derivations/fish/fish-abbreviation-tips.nix new file mode 100644 index 0000000..35a14cf --- /dev/null +++ b/derivations/fish/fish-abbreviation-tips.nix @@ -0,0 +1,23 @@ +{ lib +, buildFishPlugin +, fetchFromGitHub +, +}: +buildFishPlugin rec { + pname = "fish-abbreviation-tips"; + version = "0.7.0"; + + src = fetchFromGitHub { + owner = "gazorby"; + repo = pname; + rev = "8ed76a62bb044ba4ad8e3e6832640178880df485"; + sha256 = ""; + }; + + meta = with lib; { + description = "Help you remembering your abbreviations"; + homepage = "https://github.com/gazorby/fish-abbreviation-tips"; + license = licenses.mit; + maintainers = with maintainers; [ ]; + }; +} \ No newline at end of file diff --git a/flake.lock b/flake.lock index 42ee119..46154db 100644 --- a/flake.lock +++ b/flake.lock @@ -377,11 +377,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1716063601, - "narHash": "sha256-gAuCKupztnqai1tZ6TyCFCRbeFzbggL0Oe0vl0/cwK8=", + "lastModified": 1716316196, + "narHash": "sha256-ynu+Ii1PTtnz4YdjP2CJbnxaie9aETNAds9lwDzeQus=", "ref": "refs/heads/main", - "rev": "f8857e6072bd85b95393499688872aaf7f088b5b", - "revCount": 4719, + "rev": "e419ef1873de01b0762f7f1a411994170a4d8cab", + "revCount": 4723, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -476,11 +476,11 @@ ] }, "locked": { - "lastModified": 1715879663, - "narHash": "sha256-/DwglRvj4XF4ECdNtrCIbthleszAZBwOiXG5A6r0K/c=", + "lastModified": 1716058375, + "narHash": "sha256-CwjWoVnBZE5SBpRx9dgSQGCr4Goxyfcyv3zZbOhVqzk=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "f5181a068c1b06f2db51f6222e50a0c665a2b0c3", + "rev": "3afed4364790aebe0426077631af1e164a9650cc", "type": "github" }, "original": { @@ -547,11 +547,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1715787315, - "narHash": "sha256-cYApT0NXJfqBkKcci7D9Kr4CBYZKOQKDYA23q8XNuWg=", + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "33d1e753c82ffc557b4a585c77de43d4c922ebb5", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", "type": "github" }, "original": { @@ -1000,11 +1000,11 @@ ] }, "locked": { - "lastModified": 1715788457, - "narHash": "sha256-32HOkjSIyANphV0p5gIwP4ONU/CcinhwOyVFB+tL/d0=", + "lastModified": 1716290197, + "narHash": "sha256-1u9Exrc7yx9qtES2brDh7/DDZ8w8ap1nboIOAtCgeuM=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "af7c87a32f5d67eb2ada908a6a700f4e74831943", + "rev": "91e48d6acd8a5a611d26f925e51559ab743bc438", "type": "github" }, "original": { diff --git a/home/home.nix b/home/home.nix index d4f26e0..475ed7d 100644 --- a/home/home.nix +++ b/home/home.nix @@ -5,6 +5,7 @@ imports = [ ./theme.nix + ../pkgs/helix ]; #services.blueman-applet.enable = true; @@ -48,7 +49,7 @@ enableExtensionUpdateCheck = false; enableUpdateCheck = false; userSettings = { - "files.autoSave" = "onFocusChange"; + # "files.autoSave" = "onFocusChange"; "window.titleBarStyle" = "custom"; # "workbench.colorTheme" = "Popping and Locking"; "workbench.colorTheme" = "Tokyo Night"; @@ -77,10 +78,10 @@ rm -f /home/delta/.config/Code/User/settings.json.rw cp -f /home/delta/.config/Code/User/settings.json /home/delta/.config/Code/User/settings.json.rw chmod +rw /home/delta/.config/Code/User/settings.json.rw - # unlink /home/delta/.config/Code/User/settings.json + [ ! -e /path/to/file ] || unlink /home/delta/.config/Code/User/settings.json ''; link_copy = lib.hm.dag.entryAfter ["setupLaunchAgents"] '' - unlink /home/delta/.config/Code/User/settings.json + [ ! -e /path/to/file ] || unlink /home/delta/.config/Code/User/settings.json ln -sf /home/delta/.config/Code/User/settings.json.rw /home/delta/.config/Code/User/settings.json chmod +rw /home/delta/.config/Code/User/settings.json ''; @@ -218,51 +219,6 @@ ]; }; - programs.helix = { - enable = true; - - languages.language = [{ - name = "nix"; - auto-format = true; - formatter.command = "${pkgs.nixfmt}/bin/nixfmt"; - }]; - themes = { - fleet_dark_transparent = { - "inherits" = "fleet_dark"; - "ui.background" = { }; - }; - }; - - settings = { - theme = "fleet_dark_transparent"; - - editor = { - line-number = "relative"; - mouse = true; - lsp.display-messages = true; - cursor-shape = { - normal = "block"; - insert = "bar"; - select = "underline"; - }; - file-picker.hidden = false; - }; - - keys.normal = { - space.space = "file_picker"; - space.w = ":w"; - space.q = ":q"; - esc = [ "collapse_selection" "keep_primary_selection" ]; - C-f = [":new" ":insert-output lf -selection-path=/dev/stdout" "split_selection_on_newline" "goto_file" "goto_last_modification" "goto_last_modified_file" ":buffer-close!" ":redraw"]; - - }; - }; - - extraPackages = [ pkgs.marksman pkgs.nil pkgs.nodePackages.bash-language-server]; - }; - - #programs.dircolors.enable = true; - home.file.".config/btop/btop.conf".text = '' #? Config file for btop v. 1.3.2 diff --git a/hosts/dlaptop/system.nix b/hosts/dlaptop/system.nix index 6a670eb..fe56c87 100644 --- a/hosts/dlaptop/system.nix +++ b/hosts/dlaptop/system.nix @@ -9,14 +9,16 @@ ./hardware.nix ./services.nix ./xorg.nix - "${self}/apps/apps.nix" - "${self}/apps/socks.nix" - "${self}/apps/scripts.nix" - "${self}/apps/work.nix" + "${self}/pkgs/apps.nix" + "${self}/pkgs/socks.nix" + "${self}/pkgs/scripts.nix" + "${self}/pkgs/work.nix" inputs.secrets.nixosModules.dlaptop inputs.home-manager.nixosModules.home-manager homeSettings ]; + services.blueman.enable = true; + time.timeZone = "Europe/Moscow"; i18n.defaultLocale = "en_GB.UTF-8"; diff --git a/hosts/dlaptop/xorg.nix b/hosts/dlaptop/xorg.nix index f8e889f..1cc33b9 100644 --- a/hosts/dlaptop/xorg.nix +++ b/hosts/dlaptop/xorg.nix @@ -2,8 +2,8 @@ { imports = [ - "${self}/apps/gnome.nix" - "${self}/apps/hyprland" + "${self}/pkgs/gnome.nix" + "${self}/pkgs/hyprland" ]; environment.sessionVariables = { diff --git a/hosts/huanan/system.nix b/hosts/huanan/system.nix index 183bac0..425cebf 100644 --- a/hosts/huanan/system.nix +++ b/hosts/huanan/system.nix @@ -3,8 +3,8 @@ { imports = [ ./hardware.nix - "${self}/apps/gnome.nix" - "${self}/apps/apps.nix" + "${self}/pkgs/gnome.nix" + "${self}/pkgs/apps.nix" inputs.home-manager.nixosModules.home-manager ]; diff --git a/hosts/intelnuc/nginx-work.nix b/hosts/intelnuc/nginx-work.nix index afb47b4..87b1686 100644 --- a/hosts/intelnuc/nginx-work.nix +++ b/hosts/intelnuc/nginx-work.nix @@ -17,8 +17,7 @@ serverName = "graf1.local"; serverAliases = [ "${inputs.secrets.work.graf-url}" ]; locations."/".extraConfig = '' - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host ${inputs.secrets.work.graf-url}; proxy_pass https://${inputs.secrets.work.graf-url}; ''; locations."/api/live/ws".extraConfig = '' @@ -43,8 +42,7 @@ ''; serverName = "${inputs.secrets.work.keycloak}"; locations."/".extraConfig = '' - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host ${inputs.secrets.work.keycloak}; proxy_pass https://${inputs.secrets.work.keycloak}; ''; }; @@ -63,8 +61,7 @@ ''; serverName = "kibana.local ${inputs.secrets.work.kibana}"; locations."/".extraConfig = '' - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host ${inputs.secrets.work.kibana}; proxy_pass http://${inputs.secrets.work.kibana}; ''; }; @@ -83,8 +80,7 @@ serverName = "zabbix.local"; serverAliases = [ "${inputs.secrets.work.zabbix-url}" ]; locations."/".extraConfig = '' - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host ${inputs.secrets.work.zabbix-url}; proxy_pass https://${inputs.secrets.work.zabbix}; ''; }; @@ -104,9 +100,14 @@ serverName = "prox-1.local"; serverAliases = [ "${inputs.secrets.work.prox-1.name}" ]; locations."/".extraConfig = '' - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host ${inputs.secrets.work.prox-1.ip}; proxy_pass https://${inputs.secrets.work.prox-1.ip}; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + proxy_send_timeout 86400; + proxy_connect_timeout 86400; ''; }; services.nginx.virtualHosts."prox-2" = { @@ -125,9 +126,14 @@ serverName = "prox-2.local"; serverAliases = [ "${inputs.secrets.work.prox-2.name}" ]; locations."/".extraConfig = '' - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host ${inputs.secrets.work.prox-2.ip}; proxy_pass https://${inputs.secrets.work.prox-2.ip}; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + proxy_send_timeout 86400; + proxy_connect_timeout 86400; ''; }; services.nginx.virtualHosts."prox-3" = { @@ -146,9 +152,14 @@ serverName = "prox-3.local"; serverAliases = [ "${inputs.secrets.work.prox-3.name}" ]; locations."/".extraConfig = '' - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host ${inputs.secrets.work.prox-3.ip}; proxy_pass https://${inputs.secrets.work.prox-3.ip}; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + proxy_send_timeout 86400; + proxy_connect_timeout 86400; ''; }; } \ No newline at end of file diff --git a/hosts/intelnuc/system.nix b/hosts/intelnuc/system.nix index 618f96c..6a62005 100644 --- a/hosts/intelnuc/system.nix +++ b/hosts/intelnuc/system.nix @@ -7,7 +7,7 @@ ]; system.autoUpgrade = { - enable = true; + enable = false; flake = "github:deltathetawastaken/dotfiles"; dates = "daily"; }; diff --git a/apps/apps.nix b/pkgs/apps.nix similarity index 94% rename from apps/apps.nix rename to pkgs/apps.nix index 219644f..6efdcd4 100644 --- a/apps/apps.nix +++ b/pkgs/apps.nix @@ -17,6 +17,19 @@ in { inputs.nixvim.nixosModules.nixvim ]; + #nixpkgs.overlays = [ + # (self: super: { + # qt6 = super.qt6 // { + # qtwayland = super.qt6.qtwayland.overrideAttrs (oldAttrs: { + # patches = (oldAttrs.patches or []) ++ [ + # ./patches/0004-fix-gtk4-embedding.patch + # ]; + # }); + # }; + # } + # ) + #]; + users.users.delta.packages = (with pkgs; [ git #chromium @@ -236,7 +249,13 @@ in { function __pick_file - fd --type f | fzf + fd --type f | fzf --ansi --disabled --query "$INITIAL_QUERY" \ + --bind "start:reload:$RG_PREFIX {q}" \ + --bind "change:reload:sleep 0.1; $RG_PREFIX {q} || true" \ + --delimiter : \ + --preview 'bat --color=always {1} --highlight-line {2}' \ + --preview-window 'up,60%,border-bottom,+{2}+3/3,~3' \ + | tr ':' '\n' | head -n1 end abbr -a !f --position command --function __pick_file diff --git a/apps/gnome.nix b/pkgs/gnome.nix similarity index 95% rename from apps/gnome.nix rename to pkgs/gnome.nix index 2ae29fe..e81cfc8 100644 --- a/apps/gnome.nix +++ b/pkgs/gnome.nix @@ -29,6 +29,19 @@ in # }); # }) # ]; + + nixpkgs.overlays = [ + (self: super: { + qt6 = super.qt6 // { + qtwayland = super.qt6.qtwayland.overrideAttrs (oldAttrs: { + patches = (oldAttrs.patches or []) ++ [ + ./patches/0004-fix-gtk4-embedding.patch + ]; + }); + }; + } + ) + ]; #system.activationScripts."gnome_setup_misc".text = '' # rm -f /home/delta/.config/gtk-4.0/gtk.css diff --git a/pkgs/helix/default.nix b/pkgs/helix/default.nix new file mode 100644 index 0000000..90b35a4 --- /dev/null +++ b/pkgs/helix/default.nix @@ -0,0 +1,58 @@ +{ pkgs, lib, ... }: + +{ + programs.helix = { + enable = true; + + languages.language = [{ + name = "nix"; + auto-format = true; + formatter.command = "${pkgs.nixfmt}/bin/nixfmt"; + }]; + themes = { + fleet_dark_transparent = { + "inherits" = "fleet_dark"; + "ui.background" = { }; + }; + }; + + settings = { + theme = "fleet_dark_transparent"; + + editor = { + line-number = "relative"; + mouse = true; + lsp.display-messages = true; + cursor-shape = { + normal = "block"; + insert = "bar"; + select = "underline"; + }; + file-picker.hidden = false; + }; + + keys.normal = { + space.space = "file_picker"; + space.w = ":w"; + space.q = ":q"; + esc = [ "collapse_selection" "keep_primary_selection" ]; + C-f = [":new" ":insert-output lf -selection-path=/dev/stdout" "split_selection_on_newline" "goto_file" "goto_last_modification" "goto_last_modified_file" ":buffer-close!" ":redraw"]; + + }; + }; + + extraPackages = [ pkgs.marksman pkgs.nil pkgs.nodePackages.bash-language-server]; + }; + + #programs.dircolors.enable = true; + + home.file.".config/yazi/filetree_config/yazi.toml".text = '' + [manager] + ratio = [ 0, 8, 0 ] + [[manager.prepend_keymap]] + on = [ "l" ] + run = "plugin --sync smart-enter" + desc = "Enter the child directory, or open the file" + ''; + home.file.".config/yazi/filetree_config/plugins/smart-enter.yazi/init.lua".text = builtins.readFile ./init.lua; +} diff --git a/pkgs/helix/init.lua b/pkgs/helix/init.lua new file mode 100644 index 0000000..0588d79 --- /dev/null +++ b/pkgs/helix/init.lua @@ -0,0 +1,12 @@ +return { + entry = function() + local h = cx.active.current.hovered + if h.cha.is_dir then + ya.manager_emit("enter" or "open", { hovered = true }) + else + local hx_command = '\'\\e : o ' .. tostring(h.url) .. ' \\r\'' + local command = 'kitten @ send-text --match neighbor:' .. 'right ' .. hx_command + os.execute(command) + end + end, +} \ No newline at end of file diff --git a/pkgs/helix/open_file_tree.bash b/pkgs/helix/open_file_tree.bash new file mode 100755 index 0000000..cc80f08 --- /dev/null +++ b/pkgs/helix/open_file_tree.bash @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +desired_width=25 + +# Open window on the left +YAZI_CONFIG_HOME=~/.config/yazi/filetree_config yazi + +# Use jq to filter the JSON output based on the specific window ID +current_width=$(kitty @ ls | jq --arg window_id "$KITTY_WINDOW_ID" '.[].tabs[].windows[] | select(.id == ($window_id | tonumber)) | .columns') + +# Calculate the increment value +increment=$((desired_width - current_width)) + +# Resize the window with the calculated increment value +kitten @ resize-window --increment $increment --axis horizontal diff --git a/apps/hyprland/anyrun/default.nix b/pkgs/hyprland/anyrun/default.nix similarity index 100% rename from apps/hyprland/anyrun/default.nix rename to pkgs/hyprland/anyrun/default.nix diff --git a/apps/hyprland/default.nix b/pkgs/hyprland/default.nix similarity index 100% rename from apps/hyprland/default.nix rename to pkgs/hyprland/default.nix diff --git a/apps/hyprland/hypr/default.nix b/pkgs/hyprland/hypr/default.nix similarity index 91% rename from apps/hyprland/hypr/default.nix rename to pkgs/hyprland/hypr/default.nix index 0d3ec91..2070cc7 100644 --- a/apps/hyprland/hypr/default.nix +++ b/pkgs/hyprland/hypr/default.nix @@ -25,7 +25,8 @@ $foreground = rgba(c3dde7ee) $color0 = rgba(1d192bee) - $color1 = rgba(465EA7ee) + $color1 = rgba(465EA7ee) "https://github.com/zakk4223/hyprland-easymotion" + $color2 = rgba(5A89B6ee) $color3 = rgba(6296CAee) $color4 = rgba(73B3D4ee) @@ -45,6 +46,9 @@ enable = true; systemd.enable = true; extraConfig = builtins.readFile ./hyprland.conf; + # plugins = [ + # "https://github.com/zakk4223/hyprland-easymotion" + # ]; }; # home.activation = { # unlink_hyprland = lib.hm.dag.entryAfter ["onFilesChange"] '' diff --git a/apps/hyprland/hypr/hypridle.conf b/pkgs/hyprland/hypr/hypridle.conf similarity index 89% rename from apps/hyprland/hypr/hypridle.conf rename to pkgs/hyprland/hypr/hypridle.conf index 1705de3..dee67a2 100644 --- a/apps/hyprland/hypr/hypridle.conf +++ b/pkgs/hyprland/hypr/hypridle.conf @@ -12,8 +12,8 @@ listener { ` listener { timeout = 200 # in seconds - on-timeout = /home/delta/Documents/dotfiles/apps/hyprland/scripts/DM/brightness-kbd.sh on-timeout && brightnessctl -s set 10 # command to run when timeout has passed - on-resume = /home/delta/Documents/dotfiles/apps/hyprland/scripts/DM/brightness-kbd.sh on-resume && brightnessctl -r # command to run when activity is detected after timeout has fired. + on-timeout = /home/delta/Documents/dotfiles/pkgs/hyprland/scripts/DM/brightness-kbd.sh on-timeout && brightnessctl -s set 10 # command to run when timeout has passed + on-resume = /home/delta/Documents/dotfiles/pkgs/hyprland/scripts/DM/brightness-kbd.sh on-resume && brightnessctl -r # command to run when activity is detected after timeout has fired. } listener { diff --git a/apps/hyprland/hypr/hyprland.conf b/pkgs/hyprland/hypr/hyprland.conf similarity index 99% rename from apps/hyprland/hypr/hyprland.conf rename to pkgs/hyprland/hypr/hyprland.conf index f435acc..dc86f52 100644 --- a/apps/hyprland/hypr/hyprland.conf +++ b/pkgs/hyprland/hypr/hyprland.conf @@ -4,9 +4,11 @@ #monitor=,preferred,auto,1.066667 #monitor=,preferred,90,1.066667 -monitor=eDP-1,2944x1840@60,auto,1.333333 +# monitor=eDP-1,2944x1840@60,auto,1.333333 # monitor=eDP-1,preferred,auto,1.6 +monitor=eDP-1,preferred,auto,2 + #monitor=eDP-1,preferred,auto,1.066667 #source = ~/.config/hypr/monitors.conf #source = ~/.config/hypr/workspaces.conf @@ -51,6 +53,7 @@ exec-once = hyprctl setcursor Bibata-Modern-Classic 16 exec-once = trayscale --hide-window # exec-once = hyprctl dispatch -- exec [workspace special:hdrop silent] "QT_QPA_PLATFORM=xcb telegram-desktop" exec-once = /home/delta/.config/hypr/hdrop -b -g '30' -h '60' -f 'keepassxc_lite' --class org.keepassxc.KeePassXC +exec-once = dropbox exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP @@ -116,9 +119,9 @@ general { #layout = master } -Binds { - # scroll_event_delay = 0 - # workspace_back_and_forth = true +binds { + scroll_event_delay = 0 + workspace_back_and_forth = true # workspace_center_on = 1 } @@ -149,7 +152,6 @@ decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 5 - fullscreen_opacity = 0.20 blur { enabled = true diff --git a/apps/hyprland/scripts/DM/brightness-kbd.sh b/pkgs/hyprland/scripts/DM/brightness-kbd.sh similarity index 100% rename from apps/hyprland/scripts/DM/brightness-kbd.sh rename to pkgs/hyprland/scripts/DM/brightness-kbd.sh diff --git a/apps/hyprland/scripts/DM/brightness.sh b/pkgs/hyprland/scripts/DM/brightness.sh similarity index 100% rename from apps/hyprland/scripts/DM/brightness.sh rename to pkgs/hyprland/scripts/DM/brightness.sh diff --git a/apps/hyprland/scripts/default.nix b/pkgs/hyprland/scripts/default.nix similarity index 100% rename from apps/hyprland/scripts/default.nix rename to pkgs/hyprland/scripts/default.nix diff --git a/apps/overrides.nix b/pkgs/overrides.nix similarity index 100% rename from apps/overrides.nix rename to pkgs/overrides.nix diff --git a/pkgs/patches/0004-fix-gtk4-embedding.patch b/pkgs/patches/0004-fix-gtk4-embedding.patch new file mode 100644 index 0000000..9aec7f9 --- /dev/null +++ b/pkgs/patches/0004-fix-gtk4-embedding.patch @@ -0,0 +1,34 @@ +diff --git a/src/compositor/compositor_api/qwaylandsurface.cpp b/src/compositor/compositor_api/qwaylandsurface.cpp +index 207158bf..0eb919e0 100644 +--- a/src/compositor/compositor_api/qwaylandsurface.cpp ++++ b/src/compositor/compositor_api/qwaylandsurface.cpp +@@ -975,7 +975,7 @@ bool QWaylandSurface::setRole(QWaylandSurfaceRole *role, wl_resource *errorResou + { + Q_D(QWaylandSurface); + +- if (d->role && d->role != role) { ++ if (d->role && role && d->role != role) { + wl_resource_post_error(errorResource, errorCode, + "Cannot assign role %s to wl_surface@%d, already has role %s\n", + role->name().constData(), wl_resource_get_id(resource()), +diff --git a/src/compositor/extensions/qwaylandxdgshell.cpp b/src/compositor/extensions/qwaylandxdgshell.cpp +index 871f0cf6..d47de4f9 100644 +--- a/src/compositor/extensions/qwaylandxdgshell.cpp ++++ b/src/compositor/extensions/qwaylandxdgshell.cpp +@@ -1346,6 +1346,7 @@ void QWaylandXdgToplevelPrivate::xdg_toplevel_destroy(QtWaylandServer::xdg_tople + if (Q_UNLIKELY(m_decoration)) + qWarning() << "Client error: xdg_toplevel destroyed before its decoration object"; + ++ m_xdgSurface->surface()->setRole(nullptr, resource->handle, XDG_WM_BASE_ERROR_ROLE); + wl_resource_destroy(resource->handle); + //TODO: Should the xdg surface be desroyed as well? Or is it allowed to recreate a new toplevel for it? + } +@@ -1921,7 +1922,7 @@ uint QWaylandXdgPopupPrivate::sendConfigure(const QRect &geometry) + + void QWaylandXdgPopupPrivate::xdg_popup_destroy(QtWaylandServer::xdg_popup::Resource *resource) + { +- Q_UNUSED(resource); ++ m_xdgSurface->surface()->setRole(nullptr, resource->handle, XDG_WM_BASE_ERROR_ROLE); + qWarning() << Q_FUNC_INFO << "Not implemented"; //TODO + } + diff --git a/apps/scripts.nix b/pkgs/scripts.nix similarity index 100% rename from apps/scripts.nix rename to pkgs/scripts.nix diff --git a/apps/socks.nix b/pkgs/socks.nix similarity index 100% rename from apps/socks.nix rename to pkgs/socks.nix diff --git a/apps/work.nix b/pkgs/work.nix similarity index 100% rename from apps/work.nix rename to pkgs/work.nix