commit:     4d887c0531663bdd3e0e68802a864848bbe47885
Author:     Rahil Bhimjiani <me <AT> rahil <DOT> rocks>
AuthorDate: Wed Feb 21 10:14:28 2024 +0000
Commit:     Rahil Bhimjiani <rahil3108 <AT> gmail <DOT> com>
CommitDate: Mon Feb 26 05:47:12 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=4d887c05

app-admin/vaultwarden: Bitwarden compatible password manager in Rust

Initial 1.30.3

Signed-off-by: Rahil Bhimjiani <me <AT> rahil.rocks>

 app-admin/vaultwarden/Manifest                     |   3 +
 .../vaultwarden/files/vaultwarden-1.30.3.initd     |  20 ++++
 .../vaultwarden/files/vaultwarden-1.30.3.service   |  53 ++++++++++
 .../files/vaultwarden-envfile-1.30.3.patch         |  54 ++++++++++
 .../files/vaultwarden-tmpfiles-1.30.3.conf         |   5 +
 app-admin/vaultwarden/metadata.xml                 |  21 ++++
 app-admin/vaultwarden/vaultwarden-1.30.3.ebuild    | 112 +++++++++++++++++++++
 app-admin/vaultwarden/vaultwarden-9999.ebuild      | 112 +++++++++++++++++++++
 8 files changed, 380 insertions(+)

diff --git a/app-admin/vaultwarden/Manifest b/app-admin/vaultwarden/Manifest
new file mode 100644
index 0000000000..341d6c7c3a
--- /dev/null
+++ b/app-admin/vaultwarden/Manifest
@@ -0,0 +1,3 @@
+DIST vaultwarden-1.30.3-deps.tar.xz 46123852 BLAKE2B 
3a72fb6b30cbaee9ecbafb1c2411c116f25cd4637ca060db604e33e0d27c8a837a045655388fef15f145049b99a4d946dde15c08bb57b002cb2d8e6325826a54
 SHA512 
fbe0c456f1f298f8588e22afc8b5fcdc4aec94c10a6474362555929940d35086906d703ba9474751e9bcb54ea56e807277975788eb2e1cf0bae4be323ac7886b
+DIST vaultwarden-1.30.3-docs.tar.xz 73696 BLAKE2B 
c78252c8ba6fc5efd1fc528e32bc608695f4d83749a85952f7b5daa6b8b874666f2dcfe5a9086f178ab27a806ac10070905eb7e4acb27890bc865873c0db7d3f
 SHA512 
5144a79dfc2a8ec3ea2f62accb4635aa556bd7ec3f2b33b7943fd4443332ade44902550c4ea9c8bafa19ec7c0feed92754e3540b0696853dd7e7cee5971d8dc1
+DIST vaultwarden-1.30.3.tar.gz 608049 BLAKE2B 
f8d8a80c8dc7b6c710b0fbea19a14c7a73b150fb344173302e00395da5b6d0035f8c4b5c2cd80f2b573127a21ad4d5c440862fe2ab221ba733f85cb109387459
 SHA512 
2e1163300cc4e3bb2a66566fdfa65cc439920316615efd89d113121407f5456fed127dfa55be2a8cf77543083ace1ea56b6e15bc8a9678aa53e71435d6293642

diff --git a/app-admin/vaultwarden/files/vaultwarden-1.30.3.initd 
b/app-admin/vaultwarden/files/vaultwarden-1.30.3.initd
new file mode 100644
index 0000000000..f468d76ead
--- /dev/null
+++ b/app-admin/vaultwarden/files/vaultwarden-1.30.3.initd
@@ -0,0 +1,20 @@
+#!/sbin/openrc-run
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+set -a && source ../"${RC_SVCNAME}".env && set +a
+
+name="Vaultwarden"
+description="Unofficial Bitwarden compatible password manager server in Rust"
+command="/usr/bin/${RC_SVCNAME}"
+command_user="${RC_SVCNAME}:${RC_SVCNAME}"
+command_background="true"
+pidfile="/run/${RC_SVCNAME}.pid"
+output_log="/var/log/${RC_SVCNAME}.log"
+error_log="/var/log/${RC_SVCNAME}.log"
+directory="${DATA_FOLDER:-/var/lib/${RC_SVCNAME}}"
+umask=0027
+
+depend() {
+       after net
+}

diff --git a/app-admin/vaultwarden/files/vaultwarden-1.30.3.service 
b/app-admin/vaultwarden/files/vaultwarden-1.30.3.service
new file mode 100644
index 0000000000..1d68bc0924
--- /dev/null
+++ b/app-admin/vaultwarden/files/vaultwarden-1.30.3.service
@@ -0,0 +1,53 @@
+[Unit]
+Description=Vaultwarden, password manager server writen in Rust
+Documentation=https://github.com/dani-garcia/vaultwarden
+
+After=network.target
+Wants=network.target
+
+After=mariadb.service
+Wants=mariadb.service
+
+After=mysqld.service
+Wants=mysqld.service
+
+After=postgresql-12.service postgresql-13.service postgresql-14.service 
postgresql-15.service postgresql-16.service
+Wants=postgresql-12.service postgresql-13.service postgresql-14.service 
postgresql-15.service postgresql-16.service
+
+[Service]
+EnvironmentFile=/etc/%N.env
+ExecStart=/usr/bin/%N
+WorkingDirectory=/var/lib/%N
+
+User=%N
+Group=%N
+UMask=0027
+
+# Sandboxing and hardening systemd.exec(5)
+PrivateUsers=yes
+ProtectClock=yes
+ProtectHostname=yes
+ProtectKernelTunables=yes
+ProtectKernelModules=yes
+ProtectKernelLogs=yes
+ProtectControlGroups=yes
+RestrictNamespaces=yes
+LockPersonality=yes
+MemoryDenyWriteExecute=yes
+RestrictSUIDSGID=yes
+RemoveIPC=yes
+RestrictRealtime=yes
+PrivateTmp=true
+PrivateDevices=true
+ProtectHome=true
+
+# set entire file system to read only except following ReadWritePaths
+ProtectSystem=strict
+ReadWritePaths=/var/lib/%N /var/log/%N.log
+
+# Set reasonable connection and process limits
+LimitNOFILE=1048576
+LimitNPROC=64
+
+[Install]
+WantedBy=multi-user.target

diff --git a/app-admin/vaultwarden/files/vaultwarden-envfile-1.30.3.patch 
b/app-admin/vaultwarden/files/vaultwarden-envfile-1.30.3.patch
new file mode 100644
index 0000000000..a97b338be0
--- /dev/null
+++ b/app-admin/vaultwarden/files/vaultwarden-envfile-1.30.3.patch
@@ -0,0 +1,54 @@
+--- a/.env.template
++++ b/.env.template
+@@ -15,24 +15,24 @@
+ ####################
+ 
+ ## Main data folder
+-# DATA_FOLDER=data
++DATA_FOLDER=/var/lib/vaultwarden
+ 
+ ## Individual folders, these override %DATA_FOLDER%
+-# RSA_KEY_FILENAME=data/rsa_key
+-# ICON_CACHE_FOLDER=data/icon_cache
+-# ATTACHMENTS_FOLDER=data/attachments
+-# SENDS_FOLDER=data/sends
+-# TMP_FOLDER=data/tmp
++# RSA_KEY_FILENAME=/var/lib/vaultwarden/rsa_key
++# ICON_CACHE_FOLDER=/var/lib/vaultwarden/icon_cache
++# ATTACHMENTS_FOLDER=/var/lib/vaultwarden/attachments
++# SENDS_FOLDER=/var/lib/vaultwarden/sends
++# TMP_FOLDER=/var/lib/vaultwarden/tmp
+ 
+ ## Templates data folder, by default uses embedded templates
+ ## Check source code to see the format
+-# TEMPLATES_FOLDER=data/templates
++# TEMPLATES_FOLDER=/var/lib/vaultwarden/templates
+ ## Automatically reload the templates for every request, slow, use only for 
development
+ # RELOAD_TEMPLATES=false
+ 
+ ## Web vault settings
+-# WEB_VAULT_FOLDER=web-vault/
+-# WEB_VAULT_ENABLED=true
++WEB_VAULT_FOLDER=/usr/share/webapps/vaultwarden-web
++WEB_VAULT_ENABLED=false
+ 
+ #########################
+ ### Database settings ###
+@@ -40,7 +40,7 @@
+ 
+ ## Database URL
+ ## When using SQLite, this is the path to the DB file, default to 
%DATA_FOLDER%/db.sqlite3
+-# DATABASE_URL=data/db.sqlite3
++# DATABASE_URL=/var/lib/vaultwarden/db.sqlite3
+ ## When using MySQL, specify an appropriate connection URI.
+ ## Details: 
https://docs.diesel.rs/2.1.x/diesel/mysql/struct.MysqlConnection.html
+ # DATABASE_URL=mysql://user:password@host[:port]/database_name
+@@ -361,7 +361,7 @@
+ # USE_SYSLOG=false
+ 
+ ## Logging to file
+-# LOG_FILE=/path/to/log
++# LOG_FILE=/var/log/vaultwarden.log
+ 
+ ## Log level
+ ## Change the verbosity of the log output

diff --git a/app-admin/vaultwarden/files/vaultwarden-tmpfiles-1.30.3.conf 
b/app-admin/vaultwarden/files/vaultwarden-tmpfiles-1.30.3.conf
new file mode 100644
index 0000000000..c9be5d457a
--- /dev/null
+++ b/app-admin/vaultwarden/files/vaultwarden-tmpfiles-1.30.3.conf
@@ -0,0 +1,5 @@
+# Fields: type; path; mode; uid; gid; age; argument
+# tmpfiled.d(5)
+d      /var/lib/vaultwarden            0750    vaultwarden     vaultwarden
+d      /var/lib/vaultwarden/tmp        0750    vaultwarden     vaultwarden     
1d
+f      /var/log/vaultwarden.log        0640    vaultwarden     vaultwarden

diff --git a/app-admin/vaultwarden/metadata.xml 
b/app-admin/vaultwarden/metadata.xml
new file mode 100644
index 0000000000..3c4ab14ed3
--- /dev/null
+++ b/app-admin/vaultwarden/metadata.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="person">
+    <email>me@rahil.rocks</email>
+    <name>Rahil Bhimjiani</name>
+  </maintainer>
+  <use>
+    <flag name="cli">
+      Install client with the Command-Line Interface
+    </flag>
+    <flag name="web">
+      Install client with Web UI
+    </flag>
+  </use>
+  <upstream>
+    <remote-id type="github">dani-garcia/vaultwarden</remote-id>
+    <bugs-to>https://github.com/dani-garcia/vaultwarden/issues</bugs-to>
+    <doc>https://github.com/dani-garcia/vaultwarden/blob/main/README.md</doc>
+  </upstream>
+</pkgmetadata>

diff --git a/app-admin/vaultwarden/vaultwarden-1.30.3.ebuild 
b/app-admin/vaultwarden/vaultwarden-1.30.3.ebuild
new file mode 100644
index 0000000000..4cf733e1aa
--- /dev/null
+++ b/app-admin/vaultwarden/vaultwarden-1.30.3.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cargo check-reqs systemd tmpfiles
+
+DESCRIPTION="Unofficial Bitwarden compatible password manager server written 
in Rust"
+HOMEPAGE="https://github.com/dani-garcia/vaultwarden";
+
+if [[ ${PV} == 9999* ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/dani-garcia/vaultwarden.git";
+else
+       SRC_URI="
+       
https://github.com/dani-garcia/vaultwarden/archive/refs/tags/${PV}.tar.gz -> 
${P}.tar.gz
+       
https://github.com/rahilarious/gentoo-distfiles/releases/download/${P}/deps.tar.xz
 -> ${P}-deps.tar.xz
+       
https://github.com/rahilarious/gentoo-distfiles/releases/download/${P}/wiki.tar.xz
 -> ${P}-docs.tar.xz
+"
+       KEYWORDS="~amd64"
+fi
+
+# main
+LICENSE="AGPL-3"
+# deps
+LICENSE+=" 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD ISC MIT 
MPL-2.0 Unicode-DFS-2016"
+
+SLOT="0"
+IUSE="cli mysql postgres sqlite web"
+REQUIRED_USE="|| ( mysql postgres sqlite )"
+
+RDEPEND="
+       acct-user/vaultwarden
+       acct-group/vaultwarden
+       cli? ( || ( app-admin/bitwarden-cli app-admin/bitwarden-cli-bin  ) )
+       mysql? ( dev-db/mysql-connector-c:= )
+       postgres? ( dev-db/postgresql:* )
+       sqlite? ( dev-db/sqlite:3 )
+       web? ( || ( www-apps/vaultwarden-web www-apps/vaultwarden-web-bin  ) )
+"
+
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+QA_FLAGS_IGNORED="usr/bin/${PN}"
+QA_PRESTRIPPED="usr/bin/${PN}"
+ECARGO_VENDOR="${WORKDIR}/vendor"
+
+PATCHES=(
+       "${FILESDIR}"/vaultwarden-envfile-1.30.3.patch
+)
+
+CHECKREQS_MEMORY=3G
+CHECKREQS_DISK_BUILD=2G
+
+src_unpack() {
+       if [[ ${PV} == 9999* ]]; then
+               # clone vaultwarden
+               git-r3_src_unpack
+
+               # clone vaultwarden.wiki
+               
EGIT_REPO_URI="https://github.com/dani-garcia/vaultwarden.wiki.git";
+               EGIT_CHECKOUT_DIR="${WORKDIR}/${PN}.wiki"
+               git-r3_src_unpack
+
+               cargo_live_src_unpack
+       else
+               cargo_src_unpack
+       fi
+}
+
+src_prepare() {
+       default
+       use web && { sed -i -e 
's|^WEB_VAULT_ENABLED=false|WEB_VAULT_ENABLED=true|g;' .env.template || die; }
+}
+
+src_configure() {
+       local myfeatures=(
+               $(usev sqlite)
+               $(usev mysql)
+               $(usev postgres postgresql )
+       )
+       cargo_src_configure
+}
+
+src_compile() {
+       # https://github.com/dani-garcia/vaultwarden/blob/main/build.rs
+       [[ ${PV} != 9999* ]] && export VW_VERSION="${PV}"
+       cargo_src_compile
+}
+
+src_install() {
+       dobin target/*/"${PN}"
+       systemd_newunit "${FILESDIR}"/vaultwarden-1.30.3.service "${PN}".service
+       newinitd "${FILESDIR}"/vaultwarden-1.30.3.initd "${PN}"
+       newtmpfiles "${FILESDIR}"/vaultwarden-tmpfiles-1.30.3.conf "${PN}".conf
+       insinto /etc
+       newins .env.template "${PN}".env
+       keepdir /var/lib/"${PN}"
+
+       einstalldocs
+       dodoc -r ../"${PN}".wiki/*
+}
+
+pkg_postinst() {
+       tmpfiles_process "${PN}".conf
+       elog "Configuration file: /etc/${PN}.env"
+       elog "Data directory: /var/lib/${PN}"
+       use mysql || use postgres && elog "User must set DATABASE_URL in config 
"
+       elog "Default server: http://127.0.0.1:8000";
+       elog "Admin interface: http://127.0.0.1:8000/admin";
+}

diff --git a/app-admin/vaultwarden/vaultwarden-9999.ebuild 
b/app-admin/vaultwarden/vaultwarden-9999.ebuild
new file mode 100644
index 0000000000..4cf733e1aa
--- /dev/null
+++ b/app-admin/vaultwarden/vaultwarden-9999.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cargo check-reqs systemd tmpfiles
+
+DESCRIPTION="Unofficial Bitwarden compatible password manager server written 
in Rust"
+HOMEPAGE="https://github.com/dani-garcia/vaultwarden";
+
+if [[ ${PV} == 9999* ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/dani-garcia/vaultwarden.git";
+else
+       SRC_URI="
+       
https://github.com/dani-garcia/vaultwarden/archive/refs/tags/${PV}.tar.gz -> 
${P}.tar.gz
+       
https://github.com/rahilarious/gentoo-distfiles/releases/download/${P}/deps.tar.xz
 -> ${P}-deps.tar.xz
+       
https://github.com/rahilarious/gentoo-distfiles/releases/download/${P}/wiki.tar.xz
 -> ${P}-docs.tar.xz
+"
+       KEYWORDS="~amd64"
+fi
+
+# main
+LICENSE="AGPL-3"
+# deps
+LICENSE+=" 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD ISC MIT 
MPL-2.0 Unicode-DFS-2016"
+
+SLOT="0"
+IUSE="cli mysql postgres sqlite web"
+REQUIRED_USE="|| ( mysql postgres sqlite )"
+
+RDEPEND="
+       acct-user/vaultwarden
+       acct-group/vaultwarden
+       cli? ( || ( app-admin/bitwarden-cli app-admin/bitwarden-cli-bin  ) )
+       mysql? ( dev-db/mysql-connector-c:= )
+       postgres? ( dev-db/postgresql:* )
+       sqlite? ( dev-db/sqlite:3 )
+       web? ( || ( www-apps/vaultwarden-web www-apps/vaultwarden-web-bin  ) )
+"
+
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+QA_FLAGS_IGNORED="usr/bin/${PN}"
+QA_PRESTRIPPED="usr/bin/${PN}"
+ECARGO_VENDOR="${WORKDIR}/vendor"
+
+PATCHES=(
+       "${FILESDIR}"/vaultwarden-envfile-1.30.3.patch
+)
+
+CHECKREQS_MEMORY=3G
+CHECKREQS_DISK_BUILD=2G
+
+src_unpack() {
+       if [[ ${PV} == 9999* ]]; then
+               # clone vaultwarden
+               git-r3_src_unpack
+
+               # clone vaultwarden.wiki
+               
EGIT_REPO_URI="https://github.com/dani-garcia/vaultwarden.wiki.git";
+               EGIT_CHECKOUT_DIR="${WORKDIR}/${PN}.wiki"
+               git-r3_src_unpack
+
+               cargo_live_src_unpack
+       else
+               cargo_src_unpack
+       fi
+}
+
+src_prepare() {
+       default
+       use web && { sed -i -e 
's|^WEB_VAULT_ENABLED=false|WEB_VAULT_ENABLED=true|g;' .env.template || die; }
+}
+
+src_configure() {
+       local myfeatures=(
+               $(usev sqlite)
+               $(usev mysql)
+               $(usev postgres postgresql )
+       )
+       cargo_src_configure
+}
+
+src_compile() {
+       # https://github.com/dani-garcia/vaultwarden/blob/main/build.rs
+       [[ ${PV} != 9999* ]] && export VW_VERSION="${PV}"
+       cargo_src_compile
+}
+
+src_install() {
+       dobin target/*/"${PN}"
+       systemd_newunit "${FILESDIR}"/vaultwarden-1.30.3.service "${PN}".service
+       newinitd "${FILESDIR}"/vaultwarden-1.30.3.initd "${PN}"
+       newtmpfiles "${FILESDIR}"/vaultwarden-tmpfiles-1.30.3.conf "${PN}".conf
+       insinto /etc
+       newins .env.template "${PN}".env
+       keepdir /var/lib/"${PN}"
+
+       einstalldocs
+       dodoc -r ../"${PN}".wiki/*
+}
+
+pkg_postinst() {
+       tmpfiles_process "${PN}".conf
+       elog "Configuration file: /etc/${PN}.env"
+       elog "Data directory: /var/lib/${PN}"
+       use mysql || use postgres && elog "User must set DATABASE_URL in config 
"
+       elog "Default server: http://127.0.0.1:8000";
+       elog "Admin interface: http://127.0.0.1:8000/admin";
+}

Reply via email to