From f6e3ac8dbac92b83cbbb5a9748f8cefaa659e5d2 Mon Sep 17 00:00:00 2001 From: tastytea Date: Sat, 14 May 2022 17:30:50 +0200 Subject: [PATCH] www-apps/misskey: New package Experimental, but works. Signed-off-by: tastytea --- acct-group/misskey/metadata.xml | 8 ++ acct-group/misskey/misskey-0.ebuild | 11 +++ acct-user/misskey/metadata.xml | 8 ++ acct-user/misskey/misskey-0.ebuild | 15 +++ profiles/package.mask | 4 + www-apps/misskey/Manifest | 3 + www-apps/misskey/files/misskey.initd | 18 ++++ www-apps/misskey/metadata.xml | 26 +++++ www-apps/misskey/misskey-12.110.1.ebuild | 120 +++++++++++++++++++++++ 9 files changed, 213 insertions(+) create mode 100644 acct-group/misskey/metadata.xml create mode 100644 acct-group/misskey/misskey-0.ebuild create mode 100644 acct-user/misskey/metadata.xml create mode 100644 acct-user/misskey/misskey-0.ebuild create mode 100644 www-apps/misskey/Manifest create mode 100644 www-apps/misskey/files/misskey.initd create mode 100644 www-apps/misskey/metadata.xml create mode 100644 www-apps/misskey/misskey-12.110.1.ebuild diff --git a/acct-group/misskey/metadata.xml b/acct-group/misskey/metadata.xml new file mode 100644 index 0000000..791eb4f --- /dev/null +++ b/acct-group/misskey/metadata.xml @@ -0,0 +1,8 @@ + + + + + gentoo@tastytea.de + tastytea + + diff --git a/acct-group/misskey/misskey-0.ebuild b/acct-group/misskey/misskey-0.ebuild new file mode 100644 index 0000000..733d3c1 --- /dev/null +++ b/acct-group/misskey/misskey-0.ebuild @@ -0,0 +1,11 @@ +# Copyright 2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit acct-group + +DESCRIPTION="Group for Misskey" +KEYWORDS="~amd64" + +ACCT_GROUP_ID=-1 diff --git a/acct-user/misskey/metadata.xml b/acct-user/misskey/metadata.xml new file mode 100644 index 0000000..791eb4f --- /dev/null +++ b/acct-user/misskey/metadata.xml @@ -0,0 +1,8 @@ + + + + + gentoo@tastytea.de + tastytea + + diff --git a/acct-user/misskey/misskey-0.ebuild b/acct-user/misskey/misskey-0.ebuild new file mode 100644 index 0000000..bc252ac --- /dev/null +++ b/acct-user/misskey/misskey-0.ebuild @@ -0,0 +1,15 @@ +# Copyright 2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit acct-user + +DESCRIPTION="User for Misskey" +KEYWORDS="~amd64" + +ACCT_USER_ID=-1 +ACCT_USER_HOME="/opt/misskey" +ACCT_USER_GROUPS=( ${PN} ) + +acct-user_add_deps diff --git a/profiles/package.mask b/profiles/package.mask index 0fea073..fa713ed 100644 --- a/profiles/package.mask +++ b/profiles/package.mask @@ -1,3 +1,7 @@ +# tastytea (2022-05-13) +# Very experimental, use at your own risk. 💣 +www-apps/misskey + # tastytea (2022-03-26) # Ebuild is in a bad state, I will soon not use it anymore. Removal on # 2022-04-30 or a bit later. diff --git a/www-apps/misskey/Manifest b/www-apps/misskey/Manifest new file mode 100644 index 0000000..cc9fc9f --- /dev/null +++ b/www-apps/misskey/Manifest @@ -0,0 +1,3 @@ +DIST misskey-12.110.1-deps.tar 117708800 BLAKE2B 30309191d9684b3a80e95441aff52ab0af1838fce2ce1f9d66fbc88aea915aa92ec1f719d80cbe4c3bdc95dd75c2cf0375e2808b25b566d3e7a59d1f10796407 SHA512 ceb401bdf1be02fb231d18a5051bfa445eeda752d1ff43a7c310ba93710bc58a8fbb08b355ee97f17e14a86eea0663ac0ab683c9b4db6e11c9bd4150228804a6 +DIST misskey-12.110.1.tar.gz 4804680 BLAKE2B 1f8bcb6c61ca3fa80fd07e1a6704fbb365d0d3aee0e919869f2cfcecaea6e3ca68179239b7c2de89809de10134851da4180556b0a844a1613cfb3e1f64b01bee SHA512 99070019eb8eae8dce28657f9f53ad00b02759b9991d141d00718374c7fb206d05e2a2c351824a4ac04b6a95c1cb1086220ed9de8ee0deb1795e4b5de3cc507f +DIST misskey-assets-12.110.1.tar.gz 40471635 BLAKE2B 5305b5b316aa9d27f860e0e2c86f55eeb4140fd76c9cc7a753f78f93c509a10237033ec2109d2e806605f302d3fc9e9b916d2967053a4bce9b2cdea14df5885b SHA512 b4de7d8ab43f27e14372bb7246be4b032b142f22913ceaaa01e7631a1f702ba77ccf25482038cf2341f7a0ae92d54a1200bb654cac1d409b1ddcc113513b3f16 diff --git a/www-apps/misskey/files/misskey.initd b/www-apps/misskey/files/misskey.initd new file mode 100644 index 0000000..9d0dc1f --- /dev/null +++ b/www-apps/misskey/files/misskey.initd @@ -0,0 +1,18 @@ +#!/sbin/openrc-run + +name=misskey +description="Misskey daemon" + +command="/usr/bin/npm" +command_args="start" +command_user="misskey" + +supervisor="supervise-daemon" +supervise_daemon_args=" -d /opt/misskey/misskey -e NODE_ENV=\"production\"" + +pidfile="/run/${RC_SVCNAME}.pid" + +depend() { + need net + use logger +} diff --git a/www-apps/misskey/metadata.xml b/www-apps/misskey/metadata.xml new file mode 100644 index 0000000..86801f0 --- /dev/null +++ b/www-apps/misskey/metadata.xml @@ -0,0 +1,26 @@ + + + + + gentoo@tastytea.de + tastytea + + + Misskeyはオープンソースの分散型マイクロブログプラットフォームプ + ロジェクトです。ドライブ、リアクションなどの豊富な機能や、高いカ + スタマイズ性を備えたUIを持つことが特徴です。 + + + Misskey is an open-source and distributed platform for + microblogging. It features an abundance of features such as + Drive or Reactions as well as a very high UI customizability. + + + https://misskey-hub.net/docs/misskey.html + https://misskey-hub.net/en/docs/misskey.html + https://github.com/misskey-dev/misskey/issues + + + Make init script depend on nginx + + diff --git a/www-apps/misskey/misskey-12.110.1.ebuild b/www-apps/misskey/misskey-12.110.1.ebuild new file mode 100644 index 0000000..a8cc11b --- /dev/null +++ b/www-apps/misskey/misskey-12.110.1.ebuild @@ -0,0 +1,120 @@ +# Copyright 2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# TODO: systemd support, ffmpeg USE-flags, postgresql USE-flags, +# nginx USE-flags, bundle node_modules/cypress deps + +EAPI=7 + +inherit savedconfig + +# NOTE: update for each bump +MY_COMMIT_ASSETS="0179793ec891856d6f37a3be16ba4c22f67a81b5" + +DESCRIPTION="An interplanetary microblogging platform" +HOMEPAGE="https://misskey-hub.net/" +SRC_URI=" + https://github.com/misskey-dev/misskey/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + https://github.com/misskey-dev/assets/archive/${MY_COMMIT_ASSETS}.tar.gz -> ${PN}-assets-${PV}.tar.gz + https://tastytea.de/files/gentoo/${P}-deps.tar +" + +# NOTE: To generate the (incomplete) deps archive: +# echo 'yarn-offline-mirror "./npm-cache"' >> .yarnrc +# echo 'cache=./npm_cache' >> .npmrc +# yarn install +# tar -caf ${P}-deps.tar npm-cache + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64" +IUSE="nginx" + +REQUIRED_USE="savedconfig" + +RESTRICT="network-sandbox" + +COMMON_DEPEND=" + net-libs/nodejs:0/16 + sys-apps/yarn +" +BDEPEND=" + ${COMMON_DEPEND} + dev-lang/nasm + virtual/pkgconfig +" +RDEPEND=" + ${COMMON_DEPEND} + acct-user/misskey + dev-db/postgresql + dev-db/redis + media-video/ffmpeg + nginx? ( www-servers/nginx ) +" + +src_unpack() { + default + mv --no-target-directory assets-${MY_COMMIT_ASSETS} ${P}/${PN}-assets \ + || die "Could not move assets" + mv npm-cache ${P}/ || die "Could not move npm cache" +} + +src_prepare() { + yarn config set yarn-offline-mirror $(realpath ./npm-cache) \ + || die "Setting up npm offline cache failed" + npm config set cache $(realpath ./npm-cache) \ + || die "Setting up npm offline cache failed" + + restore_config .config/default.yml + if [[ ! -f .config/default.yml ]]; then + eerror "Edit .config/example.yml and save it to the location mentioned above" + die "No config file found" + fi + + default +} + +src_compile() { + # this still downloads stuff 🙃 + yarn --offline install || die "dependency installation failed" + NODE_ENV=production yarn --offline build || die "build failed" +} + +src_install() { + rm -rf npm-cache || die "Deleting cache failed" + insinto opt/misskey/misskey + insopts -o misskey -g misskey + doins -r . + # insopts doesn't affect directories + chown --recursive misskey:misskey "${ED}"/opt/misskey/misskey + chmod o= "${ED}"/opt/misskey/misskey + + newinitd ${FILESDIR}/${PN}.initd ${PN} + if use nginx; then + sed -i 's/use logger$/use logger nginx/' "${ED}"/etc/init.d/${PN} \ + || die "Could not modify OpenRC init script" + fi +} + +pkg_postinst() { + elog "Run emerge --config ${CATEGORY}/${PN} to initialise the PostgreSQL database" + elog "Run 'su -c \"yarn migrate\" misskey' in ${EROOT}/opt/misskey/misskey and restart the service to apply changes" + + if use nginx; then + einfo "An nginx example config can be found at " + fi +} + +pkg_config() { + einfo "Initialising PostgreSQL database" + echo -n "password for misskey user: " + read MY_PASSWORD + echo "create database misskey; create user misskey with encrypted password '${MY_PASSWORD}'; grant all privileges on database misskey to misskey; \q" \ + | su -lc psql postgres || die "database creation failed" + + cd "${EROOT}/opt/misskey/misskey" + yarn run init || die "database initialisation failed" + + ewarn "When you first start Misskey you will be asked to add an admin account via the web interface, and registrations are enabled." + ewarn "Do not expose the web interface to the public until after you configured your instance\!" +}