From a5411330ca20f5ebf32d4c30d8833979ec88ab35 Mon Sep 17 00:00:00 2001
From: Lilac <lilac@noreply.bgme.me>
Date: Sun, 23 Feb 2025 08:24:46 +0000
Subject: [PATCH] rstudio-desktop: auto updated to 2024.12.1-1

---
 repo/rstudio-desktop/.nvchecker.toml          |   6 +
 .../0002-allow_system_node.patch              |  97 ----
 repo/rstudio-desktop/PKGBUILD                 | 434 ++++++++++++------
 repo/rstudio-desktop/qt.conf                  |   8 -
 4 files changed, 298 insertions(+), 247 deletions(-)
 create mode 100644 repo/rstudio-desktop/.nvchecker.toml
 delete mode 100644 repo/rstudio-desktop/0002-allow_system_node.patch
 delete mode 100644 repo/rstudio-desktop/qt.conf

diff --git a/repo/rstudio-desktop/.nvchecker.toml b/repo/rstudio-desktop/.nvchecker.toml
new file mode 100644
index 0000000..b9a31c4
--- /dev/null
+++ b/repo/rstudio-desktop/.nvchecker.toml
@@ -0,0 +1,6 @@
+[rstudio-desktop]
+source = "git"
+git = "https://github.com/rstudio/rstudio.git"
+prefix = "v"
+from_pattern = '\+'
+to_pattern = '.'
diff --git a/repo/rstudio-desktop/0002-allow_system_node.patch b/repo/rstudio-desktop/0002-allow_system_node.patch
deleted file mode 100644
index 517a45e..0000000
--- a/repo/rstudio-desktop/0002-allow_system_node.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf
---- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf	2024-05-07 06:31:08.000000000 +1200
-+++ rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf	2024-05-21 19:32:00.206198890 +1200
-@@ -39,7 +39,7 @@
- external-pandoc-path=${RSTUDIO_DEPENDENCIES_PANDOC_DIR}
- external-quarto-path=${RSTUDIO_DEPENDENCIES_QUARTO_DIR}
- external-libclang-path=${RSTUDIO_DEPENDENCIES_DIR}/common/libclang
--external-node-path=${RSTUDIO_DEPENDENCIES_DIR}/common/node/18.18.2/bin/node
-+external-node-path=/usr/bin/node
- 
- # enable copilot
- copilot-enabled=1
-diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt
---- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt	2024-05-07 06:31:08.000000000 +1200
-+++ rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt	2024-05-21 10:33:50.351362947 +1200
-@@ -697,10 +697,12 @@
-            DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources")
- 
-    # install node
--   install(
--      DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/node/${RSTUDIO_INSTALLED_NODE_VERSION}/"
--      DESTINATION "${RSTUDIO_INSTALL_BIN}/node"
--      USE_SOURCE_PERMISSIONS)
-+   if(NOT RSTUDIO_USE_SYSTEM_NODE)
-+      install(
-+         DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/node/${RSTUDIO_INSTALLED_NODE_VERSION}/"
-+         DESTINATION "${RSTUDIO_INSTALL_BIN}/node"
-+         USE_SOURCE_PERMISSIONS)
-+   endif()
- 
-    # install quarto (or pandoc if quarto disabled)
-    if(QUARTO_ENABLED)
-diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp
---- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp	2024-05-07 06:31:08.000000000 +1200
-+++ rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp	2024-05-21 19:33:46.308996710 +1200
-@@ -709,7 +709,7 @@
-                               std::string* pPath)
- {
- #if defined(__linux__) && !defined(RSTUDIO_PACKAGE_BUILD)
--   FilePath dependenciesPath = resourcePath.completePath("../../dependencies/common/node/18.18.2");
-+   FilePath dependenciesPath = resourcePath.completePath("/usr");
-    resolvePath(dependenciesPath, pPath);
- #else
-    resolvePath(resourcePath, pPath);
-diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/gwt/build.xml rstudio-desktop/src/rstudio-2024.04.1-748/src/gwt/build.xml
---- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/gwt/build.xml	2024-05-07 06:31:08.000000000 +1200
-+++ rstudio-desktop/src/rstudio-2024.04.1-748/src/gwt/build.xml	2024-05-21 19:28:10.023896075 +1200
-@@ -85,8 +85,8 @@
- 
-    <!-- panmirror typescript library -->
-    <!-- ensure version matches RSTUDIO_NODE_VERSION -->
--   <property name="node.version" value="18.18.2"/>
--   <property name="node.dir" value="../../dependencies/common/node/${node.version}"/>
-+   <property name="node.version" value="Current"/>
-+   <property name="node.dir" value="/usr"/>
-    <!-- use yarn from system but will prefer yarn from dependencies if available -->
-    <condition property="yarn.bin" value="yarn">
-      <not>
-diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt rstudio-desktop/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt
---- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt	2024-05-07 06:31:08.000000000 +1200
-+++ rstudio-desktop/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt	2024-05-21 19:28:34.497148803 +1200
-@@ -19,7 +19,7 @@
- 
- # set the node version
- if(NOT DEFINED RSTUDIO_NODE_VERSION)
--   set(RSTUDIO_NODE_VERSION "18.18.2")
-+   set(RSTUDIO_NODE_VERSION "Current")
- endif()
- if(DEFINED ENV{RSTUDIO_NODE_VERSION})
-    set(RSTUDIO_NODE_VERSION $ENV{RSTUDIO_NODE_VERSION})
-@@ -45,7 +45,7 @@
-       NO_DEFAULT_PATH PATH_SUFFIXES "bin"
-       PATHS "/opt/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
-       "c:/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
--      "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}")
-+      "/usr")
- 
-    find_program(NPM
-       NAMES npm
-@@ -53,7 +53,7 @@
-       NO_DEFAULT_PATH 
-       PATHS "/opt/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
-       "c:/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
--      "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}")
-+      "/usr")
- 
-    find_program(NPX
-       NAMES npx
-@@ -61,7 +61,7 @@
-       NO_DEFAULT_PATH 
-       PATHS "/opt/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
-       "c:/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
--      "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}")
-+      "/usr")
- 
- endif()
-    
diff --git a/repo/rstudio-desktop/PKGBUILD b/repo/rstudio-desktop/PKGBUILD
index 35a48d2..ca8a993 100644
--- a/repo/rstudio-desktop/PKGBUILD
+++ b/repo/rstudio-desktop/PKGBUILD
@@ -1,99 +1,99 @@
-# Maintainer: Aleksandr Beliaev <trap000d@gmail.com>
+# Maintainer:
+# Contributor: Aleksandr Beliaev <trap000d@gmail.com>
 
-pkgname=rstudio-desktop
-_vermajor=2024
-_verminor=04
-_verpatch=2
-_versuffix=764
-_gitcommit=e4392fc
-_gitname=rstudio-rstudio-${_gitcommit}
-pkgver=${_vermajor}.${_verminor}.${_verpatch}.${_versuffix}
-_srcname=rstudio-${_vermajor}.${_verminor}.${_verpatch}-${_versuffix}
-_pandocver="current"
-_sociver="4.0.3"
-_quarto="FALSE"
+## links
+# https://posit.co/products/open-source/rstudio/
+# https://github.com/rstudio/rstudio
 
+## options
+: ${_nodeversion:=23}
+: ${_pandocver:=current}
+: ${_soci_version:=4.0.3}
+: ${_quarto_branch:=release/rstudio-cranberry-hibiscus}
+: ${_quarto:=false}
+
+: ${_commit:=c5bcd0ec4fb959b2a9fcd656f12eb62092f0617e}
+
+_pkgname="rstudio-desktop"
+pkgname="$_pkgname"
+pkgver=2024.12.1
 pkgrel=1
 pkgdesc="A powerful and productive integrated development environment (IDE) for R programming language"
-arch=('x86_64')
 url="https://github.com/rstudio/rstudio"
 license=('AGPL-3.0-only')
-depends=("boost-libs" "clang" "hunspell-en_US" "mathjax2" "pandoc" "postgresql-libs" "qt5-sensors" "qt5-svg" "qt5-webengine" "qt5-xmlpatterns" "quarto-cli" "r>=3.3.0" "sqlite3" "yaml-cpp")
-makedepends=('git' 'cmake>=3.29' 'boost' 'ninja' 'desktop-file-utils' 'jdk8-openjdk' 'apache-ant' 'unzip' 'openssl' 'libcups' 'pam' 'patchelf' 'wget' 'yarn')
-optdepends=('git: for git support'
-            'subversion: for subversion support'
-            'openssh-askpass: for a git ssh access'
-            'quarto: for Quarto projects support')
+arch=('x86_64')
 
-source=("rstudio-$pkgver.tar.gz::https://github.com/rstudio/rstudio/archive/refs/tags/v${_vermajor}.${_verminor}.${_verpatch}+${_versuffix}.tar.gz"
-        "git+https://github.com/quarto-dev/quarto.git#branch=release/rstudio-cherry-blossom"
-        "https://github.com/SOCI/soci/archive/refs/tags/v${_sociver}.tar.gz"
-        "qt.conf"
-        "0002-allow_system_node.patch")
+depends=("quarto-cli"
+  'boost-libs'
+  'dbus'
+  'hicolor-icon-theme'
+  'hunspell-en_US'
+  'libcups'
+  'mathjax2'
+  'nspr'
+  'nss'
+  'pandoc'
+  'r'
+)
+makedepends=(
+  'apache-ant'
+  'boost'
+  'cmake'
+  'git'
+  'java-environment'
+  'libcups'
+  'ninja'
+  'nvm' # AUR
+  'openssl'
+  'pam'
+  'python'
+  'python-setuptools'
+  'wget'
+  'yarn'
+)
+optdepends=(
+  'git: for git support'
+  'nodejs: for copilot support'
+  'openssh-askpass: for a git ssh access'
+  'quarto: for Quarto projects support'
+  'subversion: for subversion support'
+)
 
-sha256sums=('89b0d6741b6bd4dac52fd8bd9372d4f1919c97dd41056a03c975d0570eaf439e'
-            'SKIP'
-            '4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928'
-            '723626bfe05dafa545e135e8e61a482df111f488583fef155301acc5ecbbf921'
-            'ad4bd3076ff2bff7d075e3928a7e55c618fa744e3bf5d3d387bf70e01ff96c2f')
+if [[ "${_quarto::1}" == "t" ]]; then
+  makedepends+=('quarto') # AUR
+fi
+
+provides=("$_pkgname")
+conflicts=("$_pkgname")
 
 options=('!emptydirs' '!debug')
 
-prepare() {
-    cd ${srcdir}/${_srcname}
-    msg "Do not use outdated version name of pandoc"
-    sed -i '/PANDOC_VERSION/s/2.18/current/' "${srcdir}/${_srcname}/CMakeGlobals.txt"
-
-    msg "Suppress _FORTIFY_SOURCE mismatch warnings"
-    sed -i 's/D_FORTIFY_SOURCE=2/D_FORTIFY_SOURCE=3/' "${srcdir}/${_srcname}/src/cpp/CMakeLists.txt"
-
-    # Add option to use system node
-    patch -p3 < ${srcdir}/0002-allow_system_node.patch
-
-    cd "${srcdir}/${_srcname}/dependencies/common"
-    install -d pandoc/${_pandocver}
- 
-    ln -sfT /usr/share/myspell/dicts dictionaries
-    ln -sfT /usr/share/mathjax2 mathjax-27
-    ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/pandoc
-
-    # Fix links for src/cpp/session/CMakeLists.txt
-    cd "${srcdir}/${_srcname}/dependencies"
-    ln -sfT /usr/share/myspell/dicts dictionaries
-    ln -sfT /usr/share/mathjax2 mathjax-27
-
-    # Bundled SOCI libs
-    ln -sfT "${srcdir}/soci-${_sociver}" "soci-${_sociver}"
-
-    # Panmirror is picked up from Quarto repo
-    ln -sfT "${srcdir}/quarto" "${srcdir}/${_srcname}/src/gwt/lib/quarto"
+_source_main() {
+  _pkgsrc="rstudio-$_commit"
+  local _pkgext="tar.gz"
+  source=(
+    "rstudio-$pkgver-${_commit::7}.$_pkgext"::"https://github.com/rstudio/rstudio/archive/$_commit.$_pkgext"
+    "quarto"::"git+https://github.com/quarto-dev/quarto.git#branch=${_quarto_branch}"
+  )
+  sha256sums=(
+    'SKIP'
+    'SKIP'
+  )
 }
 
-build() {
-    # Quarto set up
-    if (pacman -Q quarto >/dev/null 2>/dev/null) ; then
-        _quarto="TRUE"
-        msg "Quarto is installed, include it to build"
-        cd "${srcdir}/${_srcname}/dependencies"
-        install -d quarto/bin/tools
-        ln -sfT /usr/bin/quarto quarto/bin/quarto
-        ln -sfT /usr/bin/pandoc quarto/bin/tools/pandoc
-    else
-        _quarto="FALSE"
-        msg "Quarto is not installed, use Pandoc"
-        cd "${srcdir}/${_srcname}/dependencies"
-        install -d pandoc/${_pandocver}/bin/tools
-        ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/bin/tools/pandoc
-    fi
+_source_soci() {
+  local _pkgext_soci="tar.gz"
+  source+=("soci-$_soci_version.$_pkgext_soci"::"https://github.com/SOCI/soci/archive/refs/tags/v$_soci_version.$_pkgext_soci")
+  sha256sums+=('4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928')
 
-    cd "${srcdir}/${_srcname}/dependencies/soci-${_sociver}"
-    msg "Building SOCI libs..."
-
-    local _CMAKE_SOCI_OPTIONS=(
-      -DCMAKE_POLICY_DEFAULT_CMP0063="NEW"
-      -DCMAKE_POLICY_DEFAULT_CMP0074="NEW"
-      -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true
-      -DCMAKE_CXX_VISIBILITY_PRESET="$COMPILE_VISIBILITY"
+  _build_soci() (
+    echo "Building SOCI..."
+    local _opts_soci=(
+      -B "soci-$_soci_version/build"
+      -S "soci-$_soci_version"
+      -G Ninja
+      -DCMAKE_BUILD_TYPE=None
+      -DCMAKE_INSTALL_PREFIX='/usr'
       -DSOCI_TESTS=OFF
       -DSOCI_CXX11=ON
       -DSOCI_EMPTY=OFF
@@ -105,73 +105,223 @@ build() {
       -DWITH_ORACLE=OFF
       -DWITH_FIREBIRD=OFF
       -DWITH_ODBC=OFF
+      -DBUILD_SHARED_LIBS=OFF
+      -Wno-dev
     )
 
-    cmake -G Ninja -S "${srcdir}/${_srcname}/dependencies/soci-${_sociver}" -B build "${_CMAKE_SOCI_OPTIONS[@]}"
-    cmake --build build --target all
-
-    export LDFLAGS="${LDFLAGS} -L${srcdir}/${_srcname}/dependencies/soci-${_sociver}/build/lib"
-
-    cd ${srcdir}
-    msg "Downloading and installing R packages..."
-    export R_LIBS_USER="${srcdir}/${_srcname}/dependencies/R"
-    _JOBS="$(grep -oP -- "-j\s*\K[0-9]+" <<< "${MAKEFLAGS}")" || _JOBS="1"
-    mkdir -p "${R_LIBS_USER}"
-    for RPKG in rmarkdown renv testthat xml2 yaml; do
-        RINSTALLCMD="if("'!'"require($RPKG, quietly = TRUE)) { options(Ncpus = ${_JOBS} ); install.packages('$RPKG', lib='$R_LIBS_USER', repos='https://cran.rstudio.com/') }"
-        echo "> $RINSTALLCMD"
-        Rscript -e "$RINSTALLCMD"
-    done
-
-    export PATH=/usr/lib/jvm/java-8-openjdk/jre/bin/:${PATH}
-    export RSTUDIO_TOOLS_ROOT="${srcdir}/${_srcname}/dependencies"
-    export RSTUDIO_NODE_PATH=/usr/
-    export RSTUDIO_VERSION_MAJOR=${_vermajor}
-    export RSTUDIO_VERSION_MINOR=${_verminor}
-    export RSTUDIO_VERSION_PATCH=${_verpatch}
-    export RSTUDIO_VERSION_SUFFIX="+${_versuffix}"
-    export GIT_COMMIT=${_gitcommit}
-    export PACKAGE_OS=$(uname -om)
-
-    # node-gyp or node have a bug that prevents building with "text file busy"
-    # if the kernel is too fast, so we have to disable IO_URING support. This
-    # is cleary a hack and needs to be removed as soon as possible
-    # nodejs/node#48444 is the necro bumped thread
-    # originally from docker
-    # https://github.com/nodejs/node/issues/48444
-    export UV_USE_IO_URING=0
-
-    # -DCMAKE_INSTALL_PREFIX seems ignored for sub-dependencies, 
-    # which results as empty '/usr/local/bin' in package
-    # Following override works for cmake >3.29
-    export CMAKE_INSTALL_PREFIX=/usr/lib/rstudio
-    
-    local _CMAKE_RSTUDIO_OPTIONS=(
-      -DRSTUDIO_TARGET=Desktop
-      -DCMAKE_BUILD_TYPE=Release
-      -DRSTUDIO_USE_SYSTEM_BOOST=yes
-      -DQT_QMAKE_EXECUTABLE=/usr/bin/qmake
-      -DBoost_NO_BOOST_CMAKE=ON
-      -DQUARTO_ENABLED=${_quarto}
-      -DRSTUDIO_USE_SYSTEM_NODE=yes
-      -DRSTUDIO_BUNDLE_QT=FALSE
-    )
-    cmake -G Ninja -S "${srcdir}/${_srcname}" -B build "${_CMAKE_RSTUDIO_OPTIONS[@]}"
-    cmake --build build
+    cmake "${_opts_soci[@]}"
+    cmake --build "soci-$_soci_version/build"
+  )
 }
 
+_source_main
+_source_soci
+
+_nvm_env() {
+  export HOME="$SRCDEST/node-home"
+  export NVM_DIR="$SRCDEST/node-nvm"
+
+  # set up nvm
+  source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
+  nvm install $_nodeversion
+  nvm use $_nodeversion
+
+  _npm_path="$(which npm | sed -E 's&/[^/]+$&&')"
+  export RSTUDIO_NODE_VERSION=$(echo "$_npm_path" | sed -E 's&^\S+/v([0-9\.]+)/\S+$&\1&')
+}
+
+prepare() (
+  _nvm_env
+  #npm install yarn
+
+  cd "$_pkgsrc"
+  # Do not use outdated version name of pandoc
+  sed -E -e '/PANDOC_VERSION/s/2.[0-9]+/current/' -i "cmake/globals.cmake"
+
+  # Suppress _FORTIFY_SOURCE mismatch warnings
+  sed -i 's/D_FORTIFY_SOURCE=2/D_FORTIFY_SOURCE=3/' "src/cpp/CMakeLists.txt"
+
+  # fix npm/node paths
+  sed -E -e 's&set\(RSTUDIO_NODE_PATH .*\)&set(RSTUDIO_NODE_PATH "/usr/bin")&' \
+    -i cmake/globals.cmake
+
+  install -dm755 "$srcdir/$_pkgsrc/dependencies/common/node"
+  ln -sfT "$NVM_DIR/versions/node/v$RSTUDIO_NODE_VERSION" "$srcdir/$_pkgsrc/dependencies/common/node/${RSTUDIO_NODE_VERSION}-patched"
+
+  sed -E -e 's&^external-node-path=.*$&external-node-path=/usr/bin/node&' \
+    -i src/cpp/conf/rsession-dev.conf
+
+  sed -E -e 's&DIRECTORY "\$\{RSTUDIO_DEPENDENCIES_DIR\}/common/node/\$\{RSTUDIO_INSTALLED_NODE_VERSION\}-patched/"&DIRECTORY "/usr"&' \
+    -e 's&(# install node)&\1\nif(FALSE)&' \
+    -e 's&(# install quarto)&endif()\n\1&' \
+    -i src/cpp/session/CMakeLists.txt
+
+  sed -E -e 's&"\S+/common/node/\S+"&"/usr"&' \
+    -i src/cpp/session/SessionOptions.cpp
+
+  sed -E -e '/"node\.version"/s&value="[0-9\.]+"&value="Current"&' \
+    -e '/"node\.dir"/s&value="\S+"&value="/usr"&' \
+    -e 's&"\S+/common/node/\S+/bin/yarn"&"/usr/bin/yarn"&' \
+    -i src/gwt/build.xml
+
+  sed -E -e 's&PATHS "/opt/rstudio-tools/dependencies/common/node/\$\{RSTUDIO_NODE_VERSION\}"&PATHS "'"${_npm_path}"'"&' \
+    -e 's&"\S+CMAKE_CURRENT_LIST_DIR\S+/dependencies/common/node/\S+"&"'"${_npm_path}"'"&g' \
+    -e 's&set\(RSTUDIO_NODE_VERSION "[0-9\.]+"\)&set(RSTUDIO_NODE_VERSION "Current")&' \
+    -i src/node/CMakeNodeTools.txt
+
+  # fix os-release path
+  sed -E 's&(STRINGS) "/etc/os-release" (OS_RELEASE)&\1 "/usr/lib/os-release" \2&' \
+    -i cmake/modules/OsRelease.cmake
+
+  # fix boost 1.86 incompatibility
+  sed -E -e 's&return afterResponse_;&return (bool)afterResponse_;&' \
+    -i src/cpp/core/json/JsonRpc.cpp
+
+  cd "$srcdir/$_pkgsrc/dependencies/common"
+  install -d pandoc/${_pandocver}
+
+  ln -sfT /usr/share/myspell/dicts dictionaries
+  ln -sfT /usr/share/mathjax2 mathjax-27
+  ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/pandoc
+
+  # Fix links for src/cpp/session/CMakeLists.txt
+  cd "$srcdir/$_pkgsrc/dependencies"
+  ln -sfT /usr/share/myspell/dicts dictionaries
+  ln -sfT /usr/share/mathjax2 mathjax-27
+
+  # Bundled libs
+  ln -sfT "$srcdir/soci-$_soci_version" "soci-$_soci_version"
+
+  # Panmirror is picked up now from Quarto repo
+  ln -sfT "$srcdir/quarto" "$srcdir/$_pkgsrc/src/gwt/lib/quarto"
+)
+
+build() (
+  _nvm_env
+  _run_if_exists _build_soci
+
+  # Quarto set up
+  if (pacman -Q quarto > /dev/null 2> /dev/null); then
+    _quarto="ON"
+    echo "Quarto is installed, linking for build"
+    cd "$srcdir/$_pkgsrc/dependencies"
+    install -d quarto/bin/tools
+    ln -sfT /usr/bin/quarto quarto/bin/quarto
+    ln -sfT /usr/bin/pandoc quarto/bin/tools/pandoc
+  else
+    _quarto="OFF"
+    echo "Quarto is not installed, using Pandoc"
+    cd "$srcdir/$_pkgsrc/dependencies"
+    install -d pandoc/${_pandocver}/bin/tools
+    ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/bin/tools/pandoc
+  fi
+
+  local _ldflags=(
+    -L"$srcdir/$_pkgsrc/dependencies/soci-$_soci_version/build/lib"
+  )
+  export LDFLAGS+=" ${_ldflags[@]}"
+
+  cd "${srcdir}"
+  echo "Downloading and installing R packages..."
+  export R_LIBS_USER="$srcdir/$_pkgsrc/dependencies/R"
+  _JOBS="$(grep -oP -- "-j\s*\K[0-9]+" <<< "${MAKEFLAGS}")" || _JOBS="1"
+  mkdir -p "${R_LIBS_USER}"
+  local RPACKAGES=(
+    digest
+    purrr
+    rmarkdown
+    testthat
+    xml2
+    yaml
+  )
+  for RPKG in ${RPACKAGES[*]}; do
+    RINSTALLCMD="if("'!'"require($RPKG, quietly = TRUE)) { options(Ncpus = ${_JOBS} ); install.packages('$RPKG', lib='$R_LIBS_USER', repos='https://cran.rstudio.com/') }"
+    echo "> $RINSTALLCMD"
+    Rscript -e "$RINSTALLCMD"
+  done
+
+  export RSTUDIO_TOOLS_ROOT="$srcdir/$_pkgsrc/dependencies"
+  export RSTUDIO_NODE_PATH=/usr/
+  export RSTUDIO_VERSION_MAJOR=$(cut -d'.' -f1 <<< "$pkgver")
+  export RSTUDIO_VERSION_MINOR=$(cut -d'.' -f2 <<< "$pkgver")
+  export RSTUDIO_VERSION_PATCH=$(cut -d'.' -f3 <<< "$pkgver")
+  export RSTUDIO_VERSION_SUFFIX="+$(cut -d'.' -f4 <<< "$pkgver")"
+  export GIT_COMMIT="${_commit::7}"
+  export PACKAGE_OS=$(uname -om)
+
+  # node-gyp or node have a bug that prevents building with "text file busy"
+  # if the kernel is too fast, so we have to disable IO_URING support. This
+  # is cleary a hack and needs to be removed as soon as possible
+  # nodejs/node#48444 is the necro bumped thread
+  # originally from docker
+  # https://github.com/nodejs/node/issues/48444
+  export UV_USE_IO_URING=0
+
+  # -DCMAKE_INSTALL_PREFIX seems ignored for sub-dependencies,
+  # which results as empty '/usr/local/bin' in package
+  # Following override works for cmake >3.29
+  export CMAKE_INSTALL_PREFIX=/usr/lib/rstudio
+
+  local _opts_rstudio=(
+    -B build
+    -S "$_pkgsrc"
+    -G Ninja
+    -DCMAKE_BUILD_TYPE=None
+    -DRSTUDIO_TARGET=Electron
+    -DRSTUDIO_USE_SYSTEM_BOOST=YES
+    -DRSTUDIO_USE_SYSTEM_SOCI=NO
+    -DRSTUDIO_NODE_VERSION="Current"
+    -DRSTUDIO_INSTALLED_NODE_VERSION="Current"
+    -DQUARTO_ENABLED=${_quarto}
+    -DRSTUDIO_UNIT_TESTS_ENABLED=OFF
+    -DBUILD_TESTING=OFF
+    -Wno-dev
+  )
+
+  cmake "${_opts_rstudio[@]}"
+  cmake --build build
+)
+
 package() {
+  DESTDIR="$pkgdir" cmake --install build
 
-    # Install the program
-    DESTDIR="${pkgdir}" cmake --install build
+  install -Dm755 /dev/stdin "${pkgdir}/usr/bin/rstudio" << END
+#!/usr/bin/env bash
 
-    # Install the license
-    install -Dm 644 "${srcdir}/${_srcname}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+# See following script for potentially useful flags.
+# https://github.com/ozankiratli/dotfiles/blob/master/.config/sway/scripts/rstudio-wayland
 
-    # Symlink main binary
-    install -d "${pkgdir}/usr/bin"
-    ln -s "/usr/lib/rstudio/bin/rstudio" "${pkgdir}/usr/bin/rstudio"
+#!/usr/bin/bash
 
-    # BUGFIX: qt5-webengine isn't init'ing properly. Likely an Rstudio bug.
-    install -Dm 644 "${srcdir}/qt.conf" "${pkgdir}/usr/lib/qt/libexec/qt.conf"
+name=rstudio
+flags_file="\${XDG_CONFIG_HOME:-\$HOME/.config}/\${name}-flags.conf"
+fallback_file="\${XDG_CONFIG_HOME:-\$HOME/.config}/electron-flags.conf"
+
+lines=()
+if [[ -f "\${flags_file}" ]]; then
+  mapfile -t lines < "\${flags_file}"
+elif [[ -f "\${fallback_file}" ]]; then
+  mapfile -t lines < "\${fallback_file}"
+fi
+
+flags=()
+for line in "\${lines[@]}"; do
+  if [[ ! "\${line}" =~ ^[[:space:]]*#.* ]] && [[ -n "\${line}" ]]; then
+    flags+=("\${line}")
+  fi
+done
+
+: \${ELECTRON_IS_DEV:=0}
+export ELECTRON_IS_DEV
+: \${ELECTRON_FORCE_IS_PACKAGED:=true}
+export ELECTRON_FORCE_IS_PACKAGED
+
+exec /usr/lib/rstudio/rstudio "\${flags[@]}" "\$@"
+END
+}
+
+_run_if_exists() {
+  if declare -F "$1" > /dev/null; then
+    eval "$1"
+  fi
 }
diff --git a/repo/rstudio-desktop/qt.conf b/repo/rstudio-desktop/qt.conf
deleted file mode 100644
index 840a682..0000000
--- a/repo/rstudio-desktop/qt.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-[Paths]
-Headers = /usr/include/qt/
-Data = /usr/share/qt/
-Libraries = /usr/lib/qt/
-LibraryExecutables = /usr/lib/qt/libexec/
-Plugins = /usr/lib/qt/plugins/
-Qml2Imports = /usr/lib/qt/qml/
-Translations = /usr/share/qt/translations/