From 315e60da7a7d012138f0cf712a339f8e777aee29 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 19 May 2026 19:10:14 +0200 Subject: [PATCH] Add non-beta 1pw --- pkgbuilds/1password/1password.install | 48 ++++++++++++++++++++ pkgbuilds/1password/PKGBUILD | 65 +++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 pkgbuilds/1password/1password.install create mode 100644 pkgbuilds/1password/PKGBUILD diff --git a/pkgbuilds/1password/1password.install b/pkgbuilds/1password/1password.install new file mode 100644 index 0000000..f04b292 --- /dev/null +++ b/pkgbuilds/1password/1password.install @@ -0,0 +1,48 @@ +# Do not add your user, or any others, to this group. +GROUP_NAME="onepassword" + +app_group_exists() { + if [ $(getent group "${GROUP_NAME}") ]; then + true + else + false + fi +} + +setup_browser_helper() { + # Setup the Core App Integration helper binary with the correct permissions and group + BROWSER_SUPPORT_PATH="/opt/1Password/1Password-BrowserSupport" + + chgrp "${GROUP_NAME}" $BROWSER_SUPPORT_PATH + chmod g+s $BROWSER_SUPPORT_PATH +} + +pre_install() { + if app_group_exists; then + : # Do nothing + else + groupadd "${GROUP_NAME}" + fi +} + +pre_upgrade() { + if app_group_exists; then + : # Do nothing + else + groupadd "${GROUP_NAME}" + fi +} + +post_install() { + setup_browser_helper +} + +post_upgrade() { + setup_browser_helper +} + +post_remove() { + if app_group_exists; then + groupdel "${GROUP_NAME}" + fi +} diff --git a/pkgbuilds/1password/PKGBUILD b/pkgbuilds/1password/PKGBUILD new file mode 100644 index 0000000..9fa88c4 --- /dev/null +++ b/pkgbuilds/1password/PKGBUILD @@ -0,0 +1,65 @@ +pkgname=1password + +_tarver=8.12.12 +_tar="1password-${_tarver}.x64.tar.gz" +pkgver=${_tarver//-/_} +pkgrel=44 +conflicts=('1password-beta' '1password-beta-bin') +pkgdesc="Password manager and secure wallet" +arch=('x86_64') +url='https://1password.com' +license=('LicenseRef-1Password-Proprietary') +options=(!strip) +install="1password.install" +source=(https://downloads.1password.com/linux/tar/stable/${CARCH}/${_tar}{,.sig}) +sha256sums=('b5d86e0497825db7a90cde99f58aacea013994c521ef6b0e26e412bf84288f53' + '095cbc50cf6a6c47169d9353a12ac166d5a94c41ebbda4d671d7f7748b1250ad') +validpgpkeys=('3FEF9748469ADBE15DA7CA80AC2D62742012EA22') + +package() { + depends=('hicolor-icon-theme' 'libgtk-3.so=0' 'nss' 'xdg-utils') + + # Go to source directory + cd "1password-${_tarver}.x64" + + # Install icons + resolutions=(32x32 64x64 256x256 512x512) + for resolution in "${resolutions[@]}" + do + install -Dm0644 "resources/icons/hicolor/${resolution}/apps/1password.png" \ + "${pkgdir}/usr/share/icons/hicolor/${resolution}/apps/1password.png" + done + # Install desktop file + install -Dm0644 resources/1password.desktop -t "${pkgdir}"/usr/share/applications/ + + # Fill in policy kit file with a list of (the first 10) human users of the system. + export POLICY_OWNERS + POLICY_OWNERS="$(cut -d: -f1,3 /etc/passwd | grep -E ':[0-9]{4}$' | cut -d: -f1 | head -n 10 | sed 's/^/unix-user:/' | tr '\n' ' ')" + eval "cat < ./com.1password.1Password.policy + + # Install system unlock PolKit policy file + install -Dm0644 com.1password.1Password.policy -t "${pkgdir}"/usr/share/polkit-1/actions/ + + # Install examples + install -Dm0644 resources/custom_allowed_browsers -t "${pkgdir}"/usr/share/doc/1password/examples/ + + # Move package contents to /opt/1Password + cd "${srcdir}" + install -dm0755 "${pkgdir}"/opt + mv "1password-${_tarver}.x64" "${pkgdir}/opt/1Password" + + # Cleanup un-needed files + rm "${pkgdir}"/opt/1Password/com.1password.1Password.policy "${pkgdir}"/opt/1Password/com.1password.1Password.policy.tpl "${pkgdir}"/opt/1Password/install_biometrics_policy.sh + rm -r "${pkgdir}"/opt/1Password/resources/icons/ + rm "${pkgdir}"/opt/1Password/resources/1password.desktop "${pkgdir}"/opt/1Password/resources/custom_allowed_browsers + + # Symlink /usr/bin executable to opt + install -dm0755 "${pkgdir}"/usr/bin + ln -s /opt/1Password/1password "${pkgdir}"/usr/bin/1password + + # chrome-sandbox requires the setuid bit to be specifically set. + # See https://github.com/electron/electron/issues/17972 + chmod 4755 "${pkgdir}"/opt/1Password/chrome-sandbox +}