From d3e7a32424029d49e5d24050cee285a9ca139a22 Mon Sep 17 00:00:00 2001 From: paaradiso Date: Sun, 16 Mar 2025 01:51:27 +1030 Subject: [PATCH 1/3] discord: add option to enable autoscrolling --- .../instant-messengers/discord/linux.nix | 311 +++++++++--------- 1 file changed, 153 insertions(+), 158 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/discord/linux.nix b/pkgs/applications/networking/instant-messengers/discord/linux.nix index d0d8a85bc199..643301c40aab 100644 --- a/pkgs/applications/networking/instant-messengers/discord/linux.nix +++ b/pkgs/applications/networking/instant-messengers/discord/linux.nix @@ -65,174 +65,169 @@ withMoonlight ? false, moonlight, withTTS ? true, + enableAutoscroll ? false, }: - -assert lib.assertMsg ( - !(withMoonlight && withVencord) -) "discord: Moonlight and Vencord can not be enabled at the same time"; - -let +assert lib.assertMsg (!(withMoonlight && withVencord)) "discord: Moonlight and Vencord can not be enabled at the same time"; let disableBreakingUpdates = runCommand "disable-breaking-updates.py" - { - pythonInterpreter = "${python3.interpreter}"; - configDirName = lib.toLower binaryName; - meta.mainProgram = "disable-breaking-updates.py"; - } - '' - mkdir -p $out/bin - cp ${./disable-breaking-updates.py} $out/bin/disable-breaking-updates.py - substituteAllInPlace $out/bin/disable-breaking-updates.py - chmod +x $out/bin/disable-breaking-updates.py - ''; + { + pythonInterpreter = "${python3.interpreter}"; + configDirName = lib.toLower binaryName; + meta.mainProgram = "disable-breaking-updates.py"; + } + '' + mkdir -p $out/bin + cp ${./disable-breaking-updates.py} $out/bin/disable-breaking-updates.py + substituteAllInPlace $out/bin/disable-breaking-updates.py + chmod +x $out/bin/disable-breaking-updates.py + ''; in + stdenv.mkDerivation rec { + inherit + pname + version + src + meta + ; -stdenv.mkDerivation rec { - inherit - pname - version - src - meta - ; - - nativeBuildInputs = [ - alsa-lib - autoPatchelfHook - cups - libdrm - libuuid - libXdamage - libX11 - libXScrnSaver - libXtst - libxcb - libxshmfence - libgbm - nss - wrapGAppsHook3 - makeShellWrapper - ]; - - dontWrapGApps = true; - - libPath = lib.makeLibraryPath ( - [ - libcxx - systemd - libpulseaudio - libdrm - libgbm - stdenv.cc.cc + nativeBuildInputs = [ alsa-lib - atk - at-spi2-atk - at-spi2-core - cairo + autoPatchelfHook cups - dbus - expat - fontconfig - freetype - gdk-pixbuf - glib - gtk3 - libglvnd - libnotify - libX11 - libXcomposite - libunity + libdrm libuuid - libXcursor libXdamage - libXext - libXfixes - libXi - libXrandr - libXrender - libXtst - nspr - libxcb - pango - pipewire + libX11 libXScrnSaver - libappindicator-gtk3 - libdbusmenu - wayland - ] - ++ lib.optional withTTS speechd-minimal - ); - - installPhase = '' - runHook preInstall - - mkdir -p $out/{bin,opt/${binaryName},share/pixmaps,share/icons/hicolor/256x256/apps} - mv * $out/opt/${binaryName} - - chmod +x $out/opt/${binaryName}/${binaryName} - patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \ - $out/opt/${binaryName}/${binaryName} - - wrapProgramShell $out/opt/${binaryName}/${binaryName} \ - "''${gappsWrapperArgs[@]}" \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ - ${lib.strings.optionalString withTTS "--add-flags \"--enable-speech-dispatcher\""} \ - --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \ - --prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/${binaryName} \ - --run "${lib.getExe disableBreakingUpdates}" - - ln -s $out/opt/${binaryName}/${binaryName} $out/bin/ - # Without || true the install would fail on case-insensitive filesystems - ln -s $out/opt/${binaryName}/${binaryName} $out/bin/${lib.strings.toLower binaryName} || true - - ln -s $out/opt/${binaryName}/discord.png $out/share/pixmaps/${pname}.png - ln -s $out/opt/${binaryName}/discord.png $out/share/icons/hicolor/256x256/apps/${pname}.png - - ln -s "$desktopItem/share/applications" $out/share/ - - runHook postInstall - ''; - - postInstall = - lib.strings.optionalString withOpenASAR '' - cp -f ${openasar} $out/opt/${binaryName}/resources/app.asar - '' - + lib.strings.optionalString withVencord '' - mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar - mkdir $out/opt/${binaryName}/resources/app.asar - echo '{"name":"discord","main":"index.js"}' > $out/opt/${binaryName}/resources/app.asar/package.json - echo 'require("${vencord}/patcher.js")' > $out/opt/${binaryName}/resources/app.asar/index.js - '' - + lib.strings.optionalString withMoonlight '' - mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar - mkdir $out/opt/${binaryName}/resources/app - echo '{"name":"discord","main":"injector.js","private": true}' > $out/opt/${binaryName}/resources/app/package.json - echo 'require("${moonlight}/injector.js").inject(require("path").join(__dirname, "../_app.asar"));' > $out/opt/${binaryName}/resources/app/injector.js - ''; - - desktopItem = makeDesktopItem { - name = pname; - exec = binaryName; - icon = pname; - inherit desktopName; - genericName = meta.description; - categories = [ - "Network" - "InstantMessaging" + libXtst + libxcb + libxshmfence + libgbm + nss + wrapGAppsHook3 + makeShellWrapper ]; - mimeTypes = [ "x-scheme-handler/discord" ]; - startupWMClass = "discord"; - }; - passthru = { - # make it possible to run disableBreakingUpdates standalone - inherit disableBreakingUpdates; - updateScript = writeScript "discord-update-script" '' - #!/usr/bin/env nix-shell - #!nix-shell -i bash -p curl gnugrep common-updater-scripts - set -eou pipefail; - url=$(curl -sI -o /dev/null -w '%header{location}' "https://discord.com/api/download/${branch}?platform=linux&format=tar.gz") - version=$(echo $url | grep -oP '/\K(\d+\.){2}\d+') - update-source-version ${pname} "$version" --file=./pkgs/applications/networking/instant-messengers/discord/default.nix --version-key=${branch} + dontWrapGApps = true; + + libPath = lib.makeLibraryPath ( + [ + libcxx + systemd + libpulseaudio + libdrm + libgbm + stdenv.cc.cc + alsa-lib + atk + at-spi2-atk + at-spi2-core + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + gtk3 + libglvnd + libnotify + libX11 + libXcomposite + libunity + libuuid + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXtst + nspr + libxcb + pango + pipewire + libXScrnSaver + libappindicator-gtk3 + libdbusmenu + wayland + ] + ++ lib.optional withTTS speechd-minimal + ); + + installPhase = '' + runHook preInstall + + mkdir -p $out/{bin,opt/${binaryName},share/pixmaps,share/icons/hicolor/256x256/apps} + mv * $out/opt/${binaryName} + + chmod +x $out/opt/${binaryName}/${binaryName} + patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \ + $out/opt/${binaryName}/${binaryName} + + wrapProgramShell $out/opt/${binaryName}/${binaryName} \ + "''${gappsWrapperArgs[@]}" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ + ${lib.strings.optionalString withTTS "--add-flags \"--enable-speech-dispatcher\""} \ + --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \ + --prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/${binaryName} \ + --run "${lib.getExe disableBreakingUpdates}" + + ln -s $out/opt/${binaryName}/${binaryName} $out/bin/ + # Without || true the install would fail on case-insensitive filesystems + ln -s $out/opt/${binaryName}/${binaryName} $out/bin/${lib.strings.toLower binaryName} || true + + ln -s $out/opt/${binaryName}/discord.png $out/share/pixmaps/${pname}.png + ln -s $out/opt/${binaryName}/discord.png $out/share/icons/hicolor/256x256/apps/${pname}.png + + ln -s "$desktopItem/share/applications" $out/share/ + + runHook postInstall ''; - }; -} + + postInstall = + lib.strings.optionalString withOpenASAR '' + cp -f ${openasar} $out/opt/${binaryName}/resources/app.asar + '' + + lib.strings.optionalString withVencord '' + mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar + mkdir $out/opt/${binaryName}/resources/app.asar + echo '{"name":"discord","main":"index.js"}' > $out/opt/${binaryName}/resources/app.asar/package.json + echo 'require("${vencord}/patcher.js")' > $out/opt/${binaryName}/resources/app.asar/index.js + '' + + lib.strings.optionalString withMoonlight '' + mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar + mkdir $out/opt/${binaryName}/resources/app + echo '{"name":"discord","main":"injector.js","private": true}' > $out/opt/${binaryName}/resources/app/package.json + echo 'require("${moonlight}/injector.js").inject(require("path").join(__dirname, "../_app.asar"));' > $out/opt/${binaryName}/resources/app/injector.js + ''; + + desktopItem = makeDesktopItem { + name = pname; + exec = binaryName + lib.strings.optionalString enableAutoscroll " --enable-blink-features=MiddleClickAutoscroll"; + icon = pname; + inherit desktopName; + genericName = meta.description; + categories = [ + "Network" + "InstantMessaging" + ]; + mimeTypes = ["x-scheme-handler/discord"]; + startupWMClass = "discord"; + }; + + passthru = { + # make it possible to run disableBreakingUpdates standalone + inherit disableBreakingUpdates; + updateScript = writeScript "discord-update-script" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl gnugrep common-updater-scripts + set -eou pipefail; + url=$(curl -sI -o /dev/null -w '%header{location}' "https://discord.com/api/download/${branch}?platform=linux&format=tar.gz") + version=$(echo $url | grep -oP '/\K(\d+\.){2}\d+') + update-source-version ${pname} "$version" --file=./pkgs/applications/networking/instant-messengers/discord/default.nix --version-key=${branch} + ''; + }; + } From b70a03137eff20134836cdd228a2205ddc2fb165 Mon Sep 17 00:00:00 2001 From: paaradiso Date: Sun, 16 Mar 2025 02:07:07 +1030 Subject: [PATCH 2/3] format discord/linux.nix --- .../instant-messengers/discord/linux.nix | 297 +++++++++--------- 1 file changed, 151 insertions(+), 146 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/discord/linux.nix b/pkgs/applications/networking/instant-messengers/discord/linux.nix index 643301c40aab..2d15e7bd461a 100644 --- a/pkgs/applications/networking/instant-messengers/discord/linux.nix +++ b/pkgs/applications/networking/instant-messengers/discord/linux.nix @@ -67,167 +67,172 @@ withTTS ? true, enableAutoscroll ? false, }: -assert lib.assertMsg (!(withMoonlight && withVencord)) "discord: Moonlight and Vencord can not be enabled at the same time"; let +assert lib.assertMsg ( + !(withMoonlight && withVencord) +) "discord: Moonlight and Vencord can not be enabled at the same time"; +let disableBreakingUpdates = runCommand "disable-breaking-updates.py" - { - pythonInterpreter = "${python3.interpreter}"; - configDirName = lib.toLower binaryName; - meta.mainProgram = "disable-breaking-updates.py"; - } - '' - mkdir -p $out/bin - cp ${./disable-breaking-updates.py} $out/bin/disable-breaking-updates.py - substituteAllInPlace $out/bin/disable-breaking-updates.py - chmod +x $out/bin/disable-breaking-updates.py - ''; + { + pythonInterpreter = "${python3.interpreter}"; + configDirName = lib.toLower binaryName; + meta.mainProgram = "disable-breaking-updates.py"; + } + '' + mkdir -p $out/bin + cp ${./disable-breaking-updates.py} $out/bin/disable-breaking-updates.py + substituteAllInPlace $out/bin/disable-breaking-updates.py + chmod +x $out/bin/disable-breaking-updates.py + ''; in - stdenv.mkDerivation rec { - inherit - pname - version - src - meta - ; +stdenv.mkDerivation rec { + inherit + pname + version + src + meta + ; - nativeBuildInputs = [ - alsa-lib - autoPatchelfHook - cups + nativeBuildInputs = [ + alsa-lib + autoPatchelfHook + cups + libdrm + libuuid + libXdamage + libX11 + libXScrnSaver + libXtst + libxcb + libxshmfence + libgbm + nss + wrapGAppsHook3 + makeShellWrapper + ]; + + dontWrapGApps = true; + + libPath = lib.makeLibraryPath ( + [ + libcxx + systemd + libpulseaudio libdrm - libuuid - libXdamage - libX11 - libXScrnSaver - libXtst - libxcb - libxshmfence libgbm - nss - wrapGAppsHook3 - makeShellWrapper - ]; + stdenv.cc.cc + alsa-lib + atk + at-spi2-atk + at-spi2-core + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + gtk3 + libglvnd + libnotify + libX11 + libXcomposite + libunity + libuuid + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXtst + nspr + libxcb + pango + pipewire + libXScrnSaver + libappindicator-gtk3 + libdbusmenu + wayland + ] + ++ lib.optional withTTS speechd-minimal + ); - dontWrapGApps = true; + installPhase = '' + runHook preInstall - libPath = lib.makeLibraryPath ( - [ - libcxx - systemd - libpulseaudio - libdrm - libgbm - stdenv.cc.cc - alsa-lib - atk - at-spi2-atk - at-spi2-core - cairo - cups - dbus - expat - fontconfig - freetype - gdk-pixbuf - glib - gtk3 - libglvnd - libnotify - libX11 - libXcomposite - libunity - libuuid - libXcursor - libXdamage - libXext - libXfixes - libXi - libXrandr - libXrender - libXtst - nspr - libxcb - pango - pipewire - libXScrnSaver - libappindicator-gtk3 - libdbusmenu - wayland - ] - ++ lib.optional withTTS speechd-minimal - ); + mkdir -p $out/{bin,opt/${binaryName},share/pixmaps,share/icons/hicolor/256x256/apps} + mv * $out/opt/${binaryName} - installPhase = '' - runHook preInstall + chmod +x $out/opt/${binaryName}/${binaryName} + patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \ + $out/opt/${binaryName}/${binaryName} - mkdir -p $out/{bin,opt/${binaryName},share/pixmaps,share/icons/hicolor/256x256/apps} - mv * $out/opt/${binaryName} + wrapProgramShell $out/opt/${binaryName}/${binaryName} \ + "''${gappsWrapperArgs[@]}" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ + ${lib.strings.optionalString withTTS "--add-flags \"--enable-speech-dispatcher\""} \ + --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \ + --prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/${binaryName} \ + --run "${lib.getExe disableBreakingUpdates}" - chmod +x $out/opt/${binaryName}/${binaryName} - patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \ - $out/opt/${binaryName}/${binaryName} + ln -s $out/opt/${binaryName}/${binaryName} $out/bin/ + # Without || true the install would fail on case-insensitive filesystems + ln -s $out/opt/${binaryName}/${binaryName} $out/bin/${lib.strings.toLower binaryName} || true - wrapProgramShell $out/opt/${binaryName}/${binaryName} \ - "''${gappsWrapperArgs[@]}" \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ - ${lib.strings.optionalString withTTS "--add-flags \"--enable-speech-dispatcher\""} \ - --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \ - --prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/${binaryName} \ - --run "${lib.getExe disableBreakingUpdates}" + ln -s $out/opt/${binaryName}/discord.png $out/share/pixmaps/${pname}.png + ln -s $out/opt/${binaryName}/discord.png $out/share/icons/hicolor/256x256/apps/${pname}.png - ln -s $out/opt/${binaryName}/${binaryName} $out/bin/ - # Without || true the install would fail on case-insensitive filesystems - ln -s $out/opt/${binaryName}/${binaryName} $out/bin/${lib.strings.toLower binaryName} || true + ln -s "$desktopItem/share/applications" $out/share/ - ln -s $out/opt/${binaryName}/discord.png $out/share/pixmaps/${pname}.png - ln -s $out/opt/${binaryName}/discord.png $out/share/icons/hicolor/256x256/apps/${pname}.png + runHook postInstall + ''; - ln -s "$desktopItem/share/applications" $out/share/ - - runHook postInstall + postInstall = + lib.strings.optionalString withOpenASAR '' + cp -f ${openasar} $out/opt/${binaryName}/resources/app.asar + '' + + lib.strings.optionalString withVencord '' + mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar + mkdir $out/opt/${binaryName}/resources/app.asar + echo '{"name":"discord","main":"index.js"}' > $out/opt/${binaryName}/resources/app.asar/package.json + echo 'require("${vencord}/patcher.js")' > $out/opt/${binaryName}/resources/app.asar/index.js + '' + + lib.strings.optionalString withMoonlight '' + mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar + mkdir $out/opt/${binaryName}/resources/app + echo '{"name":"discord","main":"injector.js","private": true}' > $out/opt/${binaryName}/resources/app/package.json + echo 'require("${moonlight}/injector.js").inject(require("path").join(__dirname, "../_app.asar"));' > $out/opt/${binaryName}/resources/app/injector.js ''; - postInstall = - lib.strings.optionalString withOpenASAR '' - cp -f ${openasar} $out/opt/${binaryName}/resources/app.asar - '' - + lib.strings.optionalString withVencord '' - mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar - mkdir $out/opt/${binaryName}/resources/app.asar - echo '{"name":"discord","main":"index.js"}' > $out/opt/${binaryName}/resources/app.asar/package.json - echo 'require("${vencord}/patcher.js")' > $out/opt/${binaryName}/resources/app.asar/index.js - '' - + lib.strings.optionalString withMoonlight '' - mv $out/opt/${binaryName}/resources/app.asar $out/opt/${binaryName}/resources/_app.asar - mkdir $out/opt/${binaryName}/resources/app - echo '{"name":"discord","main":"injector.js","private": true}' > $out/opt/${binaryName}/resources/app/package.json - echo 'require("${moonlight}/injector.js").inject(require("path").join(__dirname, "../_app.asar"));' > $out/opt/${binaryName}/resources/app/injector.js - ''; + desktopItem = makeDesktopItem { + name = pname; + exec = + binaryName + + lib.strings.optionalString enableAutoscroll " --enable-blink-features=MiddleClickAutoscroll"; + icon = pname; + inherit desktopName; + genericName = meta.description; + categories = [ + "Network" + "InstantMessaging" + ]; + mimeTypes = [ "x-scheme-handler/discord" ]; + startupWMClass = "discord"; + }; - desktopItem = makeDesktopItem { - name = pname; - exec = binaryName + lib.strings.optionalString enableAutoscroll " --enable-blink-features=MiddleClickAutoscroll"; - icon = pname; - inherit desktopName; - genericName = meta.description; - categories = [ - "Network" - "InstantMessaging" - ]; - mimeTypes = ["x-scheme-handler/discord"]; - startupWMClass = "discord"; - }; - - passthru = { - # make it possible to run disableBreakingUpdates standalone - inherit disableBreakingUpdates; - updateScript = writeScript "discord-update-script" '' - #!/usr/bin/env nix-shell - #!nix-shell -i bash -p curl gnugrep common-updater-scripts - set -eou pipefail; - url=$(curl -sI -o /dev/null -w '%header{location}' "https://discord.com/api/download/${branch}?platform=linux&format=tar.gz") - version=$(echo $url | grep -oP '/\K(\d+\.){2}\d+') - update-source-version ${pname} "$version" --file=./pkgs/applications/networking/instant-messengers/discord/default.nix --version-key=${branch} - ''; - }; - } + passthru = { + # make it possible to run disableBreakingUpdates standalone + inherit disableBreakingUpdates; + updateScript = writeScript "discord-update-script" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl gnugrep common-updater-scripts + set -eou pipefail; + url=$(curl -sI -o /dev/null -w '%header{location}' "https://discord.com/api/download/${branch}?platform=linux&format=tar.gz") + version=$(echo $url | grep -oP '/\K(\d+\.){2}\d+') + update-source-version ${pname} "$version" --file=./pkgs/applications/networking/instant-messengers/discord/default.nix --version-key=${branch} + ''; + }; +} From 25a2a3b93626b764bde6a0ad7b91814cc17fb055 Mon Sep 17 00:00:00 2001 From: paaradiso Date: Sun, 16 Mar 2025 12:24:32 +1030 Subject: [PATCH 3/3] move autoscroll flag from makeDesktopItem to wrapProgramShell --- .../networking/instant-messengers/discord/linux.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/discord/linux.nix b/pkgs/applications/networking/instant-messengers/discord/linux.nix index 2d15e7bd461a..ef77a66f3bb4 100644 --- a/pkgs/applications/networking/instant-messengers/discord/linux.nix +++ b/pkgs/applications/networking/instant-messengers/discord/linux.nix @@ -174,6 +174,7 @@ stdenv.mkDerivation rec { "''${gappsWrapperArgs[@]}" \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ ${lib.strings.optionalString withTTS "--add-flags \"--enable-speech-dispatcher\""} \ + ${lib.strings.optionalString enableAutoscroll "--add-flags \"--enable-blink-features=MiddleClickAutoscroll\""} \ --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \ --prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/${binaryName} \ --run "${lib.getExe disableBreakingUpdates}" @@ -209,9 +210,7 @@ stdenv.mkDerivation rec { desktopItem = makeDesktopItem { name = pname; - exec = - binaryName - + lib.strings.optionalString enableAutoscroll " --enable-blink-features=MiddleClickAutoscroll"; + exec = binaryName; icon = pname; inherit desktopName; genericName = meta.description;