Skip to content

Instantly share code, notes, and snippets.

@ChrisTX
Last active June 25, 2026 00:27
Show Gist options
  • Select an option

  • Save ChrisTX/b44f73f415b65ea02c41da096d90f761 to your computer and use it in GitHub Desktop.

Select an option

Save ChrisTX/b44f73f415b65ea02c41da096d90f761 to your computer and use it in GitHub Desktop.
From e16f3c217551f2fd1569e6973d493ba652b39e19 Mon Sep 17 00:00:00 2001
From: Christian Pfeiffer <cpfeiffer@rev-crew.info>
Date: Thu, 25 Jun 2026 02:18:23 +0200
Subject: [PATCH] v4.5.1
---
PKGBUILD | 83 ++++++++++++++++++++++++++---------------------
.SRCINFO | 36 ++++++++++++--------
.nvchecker.toml | 3 ++
LICENSE | 33 +++++++------------
LICENSES/0BSD.txt | 1 +
REUSE.toml | 15 +++++++++
system.service | 3 +-
tmpfiles.d | 1 +
8 files changed, 102 insertions(+), 73 deletions(-)
create mode 100644 .nvchecker.toml
create mode 120000 LICENSES/0BSD.txt
create mode 100644 REUSE.toml
diff --git a/PKGBUILD b/PKGBUILD
index 9dd5bdd..d497035 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,70 +1,76 @@
# Maintainer: Reto Brunner <brunnre8@gmail.com>
# Maintainer: Maxime Poulin <maxpoulin64@gmail.com>
pkgname=thelounge
-pkgver=4.5.0
-pkgsuffix="" #-rc.1
-pkgrel=0
+pkgver=4.5.1
+_pkgsuffix="" #-rc.1
+pkgrel=1
pkgdesc='Modern self-hosted web IRC client'
url='https://thelounge.chat/'
arch=('any')
license=('MIT')
-depends=('nodejs>=22' 'nodejs<25')
-options=('!lto')
+depends=('nodejs>=22')
+options=('!lto' '!strip' '!debug')
makedepends=('yarn')
backup=('etc/thelounge/config.js')
source=(
- "https://registry.npmjs.org/$pkgname/-/$pkgname-${pkgver}${pkgsuffix}.tgz"
- "https://raw.githubusercontent.com/thelounge/thelounge/v${pkgver}${pkgsuffix}/yarn.lock"
- "https://raw.githubusercontent.com/thelounge/thelounge/v${pkgver}${pkgsuffix}/package.json"
+ "https://registry.npmjs.org/$pkgname/-/$pkgname-${pkgver}${_pkgsuffix}.tgz"
+ "https://github.com/thelounge/thelounge/raw/refs/tags/v${pkgver}/yarn.lock"
'system.service'
'user.service'
'sysusers.d'
'tmpfiles.d'
+ "https://github.com/thelounge/thelounge/raw/refs/tags/v${pkgver}/scripts/version.js"
)
-noextract=("$pkgname-${pkgver}${pkgsuffix}.tgz")
-sha256sums=('11a2a5b8e49d722a1c1240e0e5ee68317017d4c9f984ea557e82b31bc769ff71'
- 'ed84ecb09ed8aa357dceb5062b0c7751d809652bf7fdfe48354852f172b496cb'
- '3e3319e694cd3e55d895f04d81f42cc708f2c41caf1961cc9733150ccb80c61e'
- 'c92210f6ac8f01c1cd01b6b26793094cd2feea583ed21fab3564d6bcafdc7a20'
- 'c609f3309f54bd6285e99ff29ca2464828bec7bbbca67243ee688bd2d605dbf0'
- '30fab63b8a4ffcfdda4c5b8d7c66822a323c4f1de6ca62b77fe9500f4befc0a5'
- 'c07fc7aaa91f6d2407d9ea2d15bfa780bfc06e3487efa138a9385307dcf9f41d')
-
-prepare() {
- yarn install --prod --frozen-lockfile --non-interactive --ignore-scripts --cache-folder "$srcdir/yarn-cache"
-}
+noextract=("$pkgname-${pkgver}${_pkgsuffix}.tgz")
+sha512sums=('d5654a629110cb77de79a90d20bf29d699a42b9f3b91ad7579db79da0896b2e5fcbde623a418020bb2ea4d05600620a0c15ad2b114f89865ef9abd08c150fdeb'
+ '7c6aa772a52bd76faf277e24cc719f74238bb2827ca8491c60d52ab9c65dace7b5dff32d8d98076b3c3f8cc9e90d4fb9e07df259425fd82e7806501fb88db6ad'
+ '0fec6e6bf091b2864a5cbab545c8b7a47de06192be9d3e68a1a36bc64737a2f6ce4627adc40c1f3dd78ae2c91432e21fd994a1a595eb00453c790e00527f941e'
+ '9a94120b98de6b1172a721da90e3eb83d0a9346059296b229021d43f4573d9d3677a89cb27319a0c0285000a0724955e4a90aebe19f492974432ced9d87c6889'
+ '53fff02483a24f784152bf4bbb99e23c453736159c406a6625c5a27221847383bf67f98d3d64fd8ff7d0a6da71d63c4efd22caa6faf835bae8363bf2f18c4225'
+ 'c791000ba489a7d611f1c4b97638369d0e6250d8592dfe8536db64c8669c714b78ae44df4ba894e9a356382560c6dca6bbf27cea2a0b8f631fd635c20af390b0'
+ '8768e03a98dcbf30cd53281812f9fc179b1d0fceaec05367a1e93601e6af590a0995e8f3fe07de5e2abc2a5bcb05a7b1076b5bb869ce3643c49f75901741f975')
+b2sums=('525ac08cc431a1f6a6cd576e7c5e8e05b6fa672130e9a599b41b04592051b92d8ed1675825814cb2139fb7e7463f4750ef019d63f4389d3a440defc317c193bb'
+ '705a132fb1c3d92ca517b0db2f0566af6690e59292d2150ec1e628badc366d63c100c99e9b43bae93e99fc6c34407e6459ed7d27cf5e74b239ede11082998125'
+ '734ab250aadb7b7980622d67e00e51131384dbeb7490b74feae3765f7455afc0965d9f1243e70666613ff9f3780c21be4953fc1a369b034418fed73107e80984'
+ '2df95292d789e96e32e8faa7006fed99bc165c372fc7c3f487788e9c9a575643af6101eef8c28b410354bf8f79bf002801fdb63c8376c9ceb900d8e8268e324c'
+ '245f5e59828e0c2a0e4a2867455a05f169568e7b2d5d1e8d8102bbcce6c44d157b22355c8e851e2e0daf504430436d69e7ab750e36657427717f4226d1fe6f71'
+ 'f6e9aedcdfcb5d5b348fe3e1fb75f1b69e3421875d30826238b0677c1c3595b59278c45af37cfa301fbda657374286aa2cc9917517d6fa543db0ba8fc8a04020'
+ '6c396ed93641e4089fdb5aa72edd382f80af9c17ad7b51caf8f4259fc303cb20ed77a310c5f4a2e7e613ff1ac7911b90db7ea3e61074c321f4edb1176143df52')
build() {
- mkdir _build
- cp package.json yarn.lock _build
- cd _build || exit 1
-
- # Install the package itself
- # we on purpose don't use yarn global add, because --ignore-scripts
- # is ignored: https://github.com/yarnpkg/yarn/issues/8291 but we tried
+ cd $srcdir
yarn add --no-default-rc --frozen-lockfile \
--prod --non-interactive --ignore-scripts \
- --cache-folder "$srcdir/yarn-cache" --offline \
- file:"$srcdir/$pkgname-${pkgver}${pkgsuffix}.tgz"
+ --cache-folder "$srcdir/yarn-cache" --modules-folder "$srcdir/node_modules" \
+ file:"$pkgname-${pkgver}${_pkgsuffix}.tgz"
}
package() {
install -dm755 "$pkgdir/usr/lib/thelounge"
- cp -r "$srcdir/_build/node_modules" "$pkgdir/usr/lib/thelounge"
+ cp -r "$srcdir/node_modules" "$pkgdir/usr/lib/thelounge"
+
+ # Add version.js
+ # See https://github.com/thelounge/thelounge/issues/5114
+ install -Dm644 "$srcdir/version.js" "$pkgdir/usr/lib/thelounge/node_modules/thelounge/scripts/version.js"
+ # Remove yarn and ldapjs examples
+ rm -r "$pkgdir/usr/lib/thelounge/node_modules/yarn"
+ rm -r "$pkgdir/usr/lib/thelounge/node_modules/ldapjs/examples"
+ rm "$pkgdir/usr/lib/thelounge/node_modules/.yarn-integrity"
+ rm "$pkgdir/usr/lib/thelounge/node_modules/.bin/yarn"
+ rm "$pkgdir/usr/lib/thelounge/node_modules/.bin/yarnpkg"
+ rm "$pkgdir/usr/lib/thelounge/node_modules/thelounge/node_modules/.bin/yarn"
+ rm "$pkgdir/usr/lib/thelounge/node_modules/thelounge/node_modules/.bin/yarnpkg"
+
+ # Create the binary
install -dm755 "$pkgdir/usr/bin/"
ln -s "/usr/lib/thelounge/node_modules/thelounge/index.js" "$pkgdir/usr/bin/thelounge"
- # Non-deterministic race in npm gives 777 permissions to random directories.
- # See https://github.com/npm/npm/issues/9359 for details.
- # yarn is probably not much better
- find "${pkgdir}"/usr/lib/thelounge -type d -exec chmod 755 {} +
- chown -R root:root "${pkgdir}"
-
+ # Make theloung recognise the system home
echo /etc/thelounge > "$pkgdir/usr/lib/thelounge/node_modules/thelounge/.thelounge_home"
# add default config
- install -Dm 644 "$pkgdir/usr/lib/thelounge/node_modules/thelounge/dist/defaults/config.js" "$pkgdir/etc/thelounge/config.js"
+ install -Dm644 "$pkgdir/usr/lib/thelounge/node_modules/thelounge/dist/defaults/config.js" "$pkgdir/etc/thelounge/config.js"
# services
install -Dm644 "$srcdir/system.service" "$pkgdir/usr/lib/systemd/system/$pkgname.service"
@@ -73,4 +79,7 @@ package() {
# setting up system user
install -Dm644 "${srcdir}/sysusers.d" "${pkgdir}/usr/lib/sysusers.d/thelounge.conf"
install -Dm644 "${srcdir}/tmpfiles.d" "${pkgdir}/usr/lib/tmpfiles.d/thelounge.conf"
+
+ # Add the LICENSE file
+ install -Dm644 "${srcdir}/node_modules/thelounge/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}/"
}
diff --git a/.SRCINFO b/.SRCINFO
index f43716d..251bf14 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,29 +1,37 @@
pkgbase = thelounge
pkgdesc = Modern self-hosted web IRC client
- pkgver = 4.5.0
- pkgrel = 0
+ pkgver = 4.5.1
+ pkgrel = 1
url = https://thelounge.chat/
arch = any
license = MIT
makedepends = yarn
depends = nodejs>=22
- depends = nodejs<25
- noextract = thelounge-4.5.0.tgz
+ noextract = thelounge-4.5.1.tgz
options = !lto
+ options = !strip
+ options = !debug
backup = etc/thelounge/config.js
- source = https://registry.npmjs.org/thelounge/-/thelounge-4.5.0.tgz
- source = https://raw.githubusercontent.com/thelounge/thelounge/v4.5.0/yarn.lock
- source = https://raw.githubusercontent.com/thelounge/thelounge/v4.5.0/package.json
+ source = https://registry.npmjs.org/thelounge/-/thelounge-4.5.1.tgz
+ source = https://github.com/thelounge/thelounge/raw/refs/tags/v4.5.1/yarn.lock
source = system.service
source = user.service
source = sysusers.d
source = tmpfiles.d
- sha256sums = 11a2a5b8e49d722a1c1240e0e5ee68317017d4c9f984ea557e82b31bc769ff71
- sha256sums = ed84ecb09ed8aa357dceb5062b0c7751d809652bf7fdfe48354852f172b496cb
- sha256sums = 3e3319e694cd3e55d895f04d81f42cc708f2c41caf1961cc9733150ccb80c61e
- sha256sums = c92210f6ac8f01c1cd01b6b26793094cd2feea583ed21fab3564d6bcafdc7a20
- sha256sums = c609f3309f54bd6285e99ff29ca2464828bec7bbbca67243ee688bd2d605dbf0
- sha256sums = 30fab63b8a4ffcfdda4c5b8d7c66822a323c4f1de6ca62b77fe9500f4befc0a5
- sha256sums = c07fc7aaa91f6d2407d9ea2d15bfa780bfc06e3487efa138a9385307dcf9f41d
+ source = https://github.com/thelounge/thelounge/raw/refs/tags/v4.5.1/scripts/version.js
+ sha512sums = d5654a629110cb77de79a90d20bf29d699a42b9f3b91ad7579db79da0896b2e5fcbde623a418020bb2ea4d05600620a0c15ad2b114f89865ef9abd08c150fdeb
+ sha512sums = 7c6aa772a52bd76faf277e24cc719f74238bb2827ca8491c60d52ab9c65dace7b5dff32d8d98076b3c3f8cc9e90d4fb9e07df259425fd82e7806501fb88db6ad
+ sha512sums = 0fec6e6bf091b2864a5cbab545c8b7a47de06192be9d3e68a1a36bc64737a2f6ce4627adc40c1f3dd78ae2c91432e21fd994a1a595eb00453c790e00527f941e
+ sha512sums = 9a94120b98de6b1172a721da90e3eb83d0a9346059296b229021d43f4573d9d3677a89cb27319a0c0285000a0724955e4a90aebe19f492974432ced9d87c6889
+ sha512sums = 53fff02483a24f784152bf4bbb99e23c453736159c406a6625c5a27221847383bf67f98d3d64fd8ff7d0a6da71d63c4efd22caa6faf835bae8363bf2f18c4225
+ sha512sums = c791000ba489a7d611f1c4b97638369d0e6250d8592dfe8536db64c8669c714b78ae44df4ba894e9a356382560c6dca6bbf27cea2a0b8f631fd635c20af390b0
+ sha512sums = 8768e03a98dcbf30cd53281812f9fc179b1d0fceaec05367a1e93601e6af590a0995e8f3fe07de5e2abc2a5bcb05a7b1076b5bb869ce3643c49f75901741f975
+ b2sums = 525ac08cc431a1f6a6cd576e7c5e8e05b6fa672130e9a599b41b04592051b92d8ed1675825814cb2139fb7e7463f4750ef019d63f4389d3a440defc317c193bb
+ b2sums = 705a132fb1c3d92ca517b0db2f0566af6690e59292d2150ec1e628badc366d63c100c99e9b43bae93e99fc6c34407e6459ed7d27cf5e74b239ede11082998125
+ b2sums = 734ab250aadb7b7980622d67e00e51131384dbeb7490b74feae3765f7455afc0965d9f1243e70666613ff9f3780c21be4953fc1a369b034418fed73107e80984
+ b2sums = 2df95292d789e96e32e8faa7006fed99bc165c372fc7c3f487788e9c9a575643af6101eef8c28b410354bf8f79bf002801fdb63c8376c9ceb900d8e8268e324c
+ b2sums = 245f5e59828e0c2a0e4a2867455a05f169568e7b2d5d1e8d8102bbcce6c44d157b22355c8e851e2e0daf504430436d69e7ab750e36657427717f4226d1fe6f71
+ b2sums = f6e9aedcdfcb5d5b348fe3e1fb75f1b69e3421875d30826238b0677c1c3595b59278c45af37cfa301fbda657374286aa2cc9917517d6fa543db0ba8fc8a04020
+ b2sums = 6c396ed93641e4089fdb5aa72edd382f80af9c17ad7b51caf8f4259fc303cb20ed77a310c5f4a2e7e613ff1ac7911b90db7ea3e61074c321f4edb1176143df52
pkgname = thelounge
diff --git a/.nvchecker.toml b/.nvchecker.toml
new file mode 100644
index 0000000..34b9234
--- /dev/null
+++ b/.nvchecker.toml
@@ -0,0 +1,3 @@
+[thelounge]
+source = "git"
+git = "https://github.com/thelounge/thelounge.git"
diff --git a/LICENSE b/LICENSE
index c49dd94..b87c5e4 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,12 @@
-MIT License
-
-Copyright (c) 2016 The Lounge
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+Copyright Arch Linux Contributors
+
+Permission to use, copy, modify, and/or distribute this software for
+any purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
+FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
+DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/LICENSES/0BSD.txt b/LICENSES/0BSD.txt
new file mode 120000
index 0000000..ea5b606
--- /dev/null
+++ b/LICENSES/0BSD.txt
@@ -0,0 +1 @@
+../LICENSE
\ No newline at end of file
diff --git a/REUSE.toml b/REUSE.toml
new file mode 100644
index 0000000..5dff0d2
--- /dev/null
+++ b/REUSE.toml
@@ -0,0 +1,15 @@
+version = 1
+
+[[annotations]]
+path = [
+ "PKGBUILD",
+ "README.md",
+ ".SRCINFO",
+ ".nvchecker.toml",
+ "sysusers.d",
+ "tmpfiles.d",
+ "*.service",
+ "Makefile",
+]
+SPDX-FileCopyrightText = "Arch Linux contributors"
+SPDX-License-Identifier = "0BSD"
diff --git a/system.service b/system.service
index 8201718..409fa30 100644
--- a/system.service
+++ b/system.service
@@ -1,6 +1,7 @@
[Unit]
Description=The Lounge IRC client
-After=network.target
+After=network-online.target
+Wants=network-online.target
[Service]
User=thelounge
diff --git a/tmpfiles.d b/tmpfiles.d
index 4267228..2a5b4fc 100644
--- a/tmpfiles.d
+++ b/tmpfiles.d
@@ -1,2 +1,3 @@
#Type Path Mode UID GID Age Argument
d /etc/thelounge 0755 thelounge thelounge
+d /etc/thelounge/users 0750 thelounge thelounge
--
2.54.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment