pkgname=1password pkgver=8.12.40 pkgrel=2 conflicts=('1password-beta' '1password-beta-bin') pkgdesc="Password manager and secure wallet" arch=('x86_64' 'aarch64') url='https://1password.com' license=('LicenseRef-1Password-Proprietary') options=(!strip) install="1password.install" source_x86_64=( "https://downloads.1password.com/linux/tar/stable/x86_64/1password-${pkgver}.x64.tar.gz" "https://downloads.1password.com/linux/tar/stable/x86_64/1password-${pkgver}.x64.tar.gz.sig" ) source_aarch64=( "https://downloads.1password.com/linux/tar/stable/aarch64/1password-${pkgver}.arm64.tar.gz" "https://downloads.1password.com/linux/tar/stable/aarch64/1password-${pkgver}.arm64.tar.gz.sig" ) sha256sums_x86_64=( '0ae9645d31be78a8fb57d15f49e5fa4f0b67a0b3608797a410e8fd36f0206266' '2f777820dc2eb6e7b7b38f4557a897f97fb3259443261fdfb2008127bd975817' ) sha256sums_aarch64=( '7476c0fc8215338cd9f304b14822688010fd8ed54d5ea4367c0bbbf72845be1e' '80412176560a3f76180f7c05ae7ebafe21fac764349cfeed71fe498ee25564ee' ) validpgpkeys=('3FEF9748469ADBE15DA7CA80AC2D62742012EA22') package() { depends=('hicolor-icon-theme' 'libgtk-3.so=0' 'nss' 'xdg-utils') # 1Password names its tarballs by a vendor architecture suffix. arch=() # above already limits which architectures makepkg builds, so no fallback # branch is needed here; keeping this inside package() means sourcing the # PKGBUILD without CARCH (as the version check does) still reads the # version correctly. local _tararch case "$CARCH" in x86_64) _tararch=x64 ;; aarch64) _tararch=arm64 ;; esac # Go to source directory cd "1password-${pkgver}.${_tararch}" # 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/com.onepassword.OnePassword.desktop \ "${pkgdir}/usr/share/applications/1password.desktop" # 1Password reads the display scale itself, the way Electron apps do, and # comes up oversized next to every other window on a scaled monitor. Pin it # and let the compositor do the scaling. sed -i 's|^Exec=.*|Exec=/opt/1Password/1password --force-device-scale-factor=1 %U|' \ "${pkgdir}/usr/share/applications/1password.desktop" # 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-${pkgver}.${_tararch}" "${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/com.onepassword.OnePassword.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 }