+6
-11
.gitignore
+6
-11
.gitignore
···
1
-
/appview/tangled/
2
-
/appview/*.zip
3
-
/appview/htmx.min.js
4
-
/appview/pkg
5
-
/appview/src
6
-
/knotserver/tangled/
7
-
/knotserver-git/tangled/
8
-
/knotserver/src
9
-
/knotserver-git/src
10
-
/knotserver/pkg
11
-
/knotserver-git/pkg
1
+
/*/pkg
2
+
/*/tangled/
3
+
/*/src/
4
+
*.js
12
5
*.log
6
+
*.zip
13
7
*.zst
8
+
*.tar.gz
+24
-1
README.md
+24
-1
README.md
···
1
1
# pkgs
2
2
3
-
PKGBUILDs for [@tangled.sh](https://tangled.sh/@tangled.sh/core) on [Arch](https://archlinux.org).
3
+
PKGBUILDs for running [@tangled.org](https://tangled.org/@tangled.org/core) on [Arch](https://archlinux.org).
4
+
5
+
> [!NOTE]
6
+
> I use these packages to deploy to my knot server.
7
+
>
8
+
> These are **not** official tangled packages. **DO NOT** direct issues using these packages to the core tangled.org repository.
9
+
10
+
## Packages:
11
+
12
+
### [appview](appview)
13
+
14
+
Builds `appview` from tag [v1.11.0-alpha](https://tangled.org/@tangled.org/core/tree/v1.11.0-alpha).
15
+
16
+
### [knotserver](knotserver)
17
+
18
+
Builds `knot` from tag [v1.11.0-alpha](https://tangled.org/@tangled.org/core/tree/v1.11.0-alpha).
19
+
20
+
### [knotserver-git](knotserver-git)
21
+
22
+
Builds `knot` from branch [master](https://tangled.org/@tangled.org/core/tree/master).
23
+
24
+
### [spindle](spindle)
25
+
26
+
Builds `spindle` from tag [v1.11.0-alpha](https://tangled.org/@tangled.org/core/tree/v1.11.0-alpha).
4
27
+24
appview/.SRCINFO
+24
appview/.SRCINFO
···
1
+
pkgbase = appview
2
+
pkgdesc = git collaboration platform built on ATproto
3
+
pkgver = 1.11.0.alpha
4
+
pkgrel = 1
5
+
url = https://tangled.org/@tangled.org/core
6
+
arch = x86_64
7
+
license = MIT
8
+
makedepends = go
9
+
makedepends = npm
10
+
depends = git
11
+
options = strip
12
+
options = !debug
13
+
source = core-v1.11.0-alpha.tar.gz::https://tangled.org/@tangled.org/core/archive/refs%2Ftags%2Fv1.11.0-alpha
14
+
source = https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js
15
+
source = https://github.com/lucide-icons/lucide/releases/download/0.483.0/lucide-icons-0.483.0.zip
16
+
source = https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip
17
+
source = https://github.com/IBM/plex/releases/download/%40ibm%2Fplex-mono%401.1.0/ibm-plex-mono.zip
18
+
sha256sums = 51d360848f8d61161a61a60adcd9f355246bdcd2a0437371096a8563896cc66a
19
+
sha256sums = e209dda5c8235479f3166defc7750e1dbcd5a5c1808b7792fc2e6733768fb447
20
+
sha256sums = cc9c1db50676416f6fbb4bbaf8fba46f83331ed7c895dd9602145aebd0daa20e
21
+
sha256sums = 9883fdd4a49d4fb66bd8177ba6625ef9a64aa45899767dde3d36aa425756b11e
22
+
sha256sums = 4bfc936d0e1fd19db6327a3786eabdbc3dc0d464500576f6458f6706df68d26c
23
+
24
+
pkgname = appview
+14
-14
appview/PKGBUILD
+14
-14
appview/PKGBUILD
···
1
-
_pkgver=1.2.1-alpha
1
+
_pkgver=1.11.0-alpha
2
2
pkgname=appview
3
3
pkgdesc='git collaboration platform built on ATproto'
4
4
pkgver=${_pkgver/\-/\.}
5
5
pkgrel=1
6
6
license=(MIT)
7
7
arch=(x86_64)
8
-
url=https://tangled.sh/@tangled.sh/core
8
+
url=https://tangled.org/@tangled.org/core
9
9
depends=(git)
10
10
makedepends=(go npm)
11
11
options=(strip !debug)
12
-
source=(
13
-
"tangled::git+$url#tag=v$_pkgver"
12
+
source=("core-v${_pkgver}.tar.gz::${url}/archive/refs%2Ftags%2Fv${_pkgver}"
14
13
"https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js"
15
14
"https://github.com/lucide-icons/lucide/releases/download/0.483.0/lucide-icons-0.483.0.zip"
16
15
"https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip"
17
16
"https://github.com/IBM/plex/releases/download/%40ibm%2Fplex-mono%401.1.0/ibm-plex-mono.zip")
18
-
sha256sums=('2462863939d6837afe026fc0baba383e4a1dad9ca035a90aecd4084590db80b7'
17
+
sha256sums=('51d360848f8d61161a61a60adcd9f355246bdcd2a0437371096a8563896cc66a'
19
18
'e209dda5c8235479f3166defc7750e1dbcd5a5c1808b7792fc2e6733768fb447'
20
19
'cc9c1db50676416f6fbb4bbaf8fba46f83331ed7c895dd9602145aebd0daa20e'
21
20
'9883fdd4a49d4fb66bd8177ba6625ef9a64aa45899767dde3d36aa425756b11e'
22
21
'4bfc936d0e1fd19db6327a3786eabdbc3dc0d464500576f6458f6706df68d26c')
23
22
24
23
build() {
24
+
tangled_src=core-v${_pkgver}
25
25
mkdir -p "${srcdir}/build"
26
-
mkdir -p ${srcdir}/tangled/appview/pages/static/{fonts,icons}
27
-
cp -f "${srcdir}/htmx.min.js" "${srcdir}/tangled/appview/pages/static/htmx.min.js"
28
-
cp -rf ${srcdir}/icons/*.svg "${srcdir}/tangled/appview/pages/static/icons/"
29
-
cp -f ${srcdir}/web/InterVariable*.woff2 "${srcdir}/tangled/appview/pages/static/fonts/"
30
-
cp -f ${srcdir}/web/InterDisplay*.woff2 "${srcdir}/tangled/appview/pages/static/fonts/"
31
-
cp -f "${srcdir}/ibm-plex-mono/fonts/complete/woff2/IBMPlexMono-Regular.woff2" "${srcdir}/tangled/appview/pages/static/fonts/"
26
+
mkdir -p ${srcdir}/${tangled_src}/appview/pages/static/{fonts,icons}
27
+
cp -f "${srcdir}/htmx.min.js" "${srcdir}/${tangled_src}/appview/pages/static/htmx.min.js"
28
+
cp -rf ${srcdir}/icons/*.svg "${srcdir}/${tangled_src}/appview/pages/static/icons/"
29
+
cp -f ${srcdir}/web/InterVariable*.woff2 "${srcdir}/${tangled_src}/appview/pages/static/fonts/"
30
+
cp -f ${srcdir}/web/InterDisplay*.woff2 "${srcdir}/${tangled_src}/appview/pages/static/fonts/"
31
+
cp -f "${srcdir}/ibm-plex-mono/fonts/complete/woff2/IBMPlexMono-Regular.woff2" "${srcdir}/${tangled_src}/appview/pages/static/fonts/"
32
32
33
33
pwd
34
-
cd ${srcdir}/tangled
34
+
cd ${srcdir}/${tangled_src}
35
35
npm install tailwindcss@3 @tailwindcss/typography
36
36
npx tailwindcss -i input.css -o appview/pages/static/tw.css
37
37
cd ${srcdir}
···
42
42
export CGO_CXXFLAGS="${CXXFLAGS}"
43
43
export CGO_LDFLAGS="${LDFLAGS}"
44
44
export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
45
-
cd ${srcdir}/tangled
45
+
cd ${srcdir}/${tangled_src}
46
46
go build -o "${srcdir}/build/appview" ./cmd/appview
47
47
}
48
48
49
49
package() {
50
50
install -Dm755 "${srcdir}/build/appview" "${pkgdir}/usr/bin/appview"
51
-
install -Dm644 "${srcdir}/tangled/license" "${pkgdir}/usr/share/licenses/knotserver/LICENSE"
51
+
install -Dm644 "${srcdir}/core-v${_pkgver}/license" "${pkgdir}/usr/share/licenses/tangled/appview.LICENSE"
52
52
}
+7
-6
conf.sh
+7
-6
conf.sh
···
1
+
tag=1.11.0-alpha
1
2
knotserver_user=git
2
3
knotserver_group=git
3
-
4
-
# Path knotserver database files will be stored.
5
-
knotserver_db_path=/var/lib/knotserver
6
-
7
-
# Path knotserver hosted git repositories will be stored.
4
+
knotserver_path=/var/lib/knotserver
8
5
knotserver_repo_path=/var/lib/tangled
6
+
knotserver_log_directory=/var/log/knotserver
9
7
10
-
knotserver_log_directory=/var/log/knotserver
8
+
spindle_user=spindle
9
+
spindle_group=spindle
10
+
spindle_path=/var/lib/spindle
11
+
spindle_add_to_docker=true
+7
-7
knotserver/.SRCINFO
+7
-7
knotserver/.SRCINFO
···
1
1
pkgbase = knotserver
2
2
pkgdesc = git collaboration platform built on ATproto
3
-
pkgver = 1.2.1.alpha
3
+
pkgver = 1.11.0.alpha
4
4
pkgrel = 1
5
-
url = https://tangled.sh/@tangled.sh/core
5
+
url = https://tangled.org/@tangled.org/core
6
6
install = knotserver.install
7
7
arch = x86_64
8
8
license = MIT
···
11
11
conflicts = knotserver-git
12
12
options = strip
13
13
options = !debug
14
-
source = tangled::git+https://tangled.sh/@tangled.sh/core#tag=v1.2.1-alpha
14
+
source = core-v1.11.0-alpha.tar.gz::https://tangled.org/@tangled.org/core/archive/refs%2Ftags%2Fv1.11.0-alpha
15
15
source = knotserver.service
16
16
source = knotserver-sshd.conf
17
17
source = knotserver-tmpfiles.conf
18
-
sha256sums = 8589fec78fbb58d3ab2d8c755c29ec2d70a49a1eb61b86e563e15a2541b4b1b4
19
-
sha256sums = 8d243e1bc0d2e51079550929019d18811679127e6af6aabeed60cd907ffaab32
20
-
sha256sums = 8b121f30276d83ca52f793e708731fd6985118a2ff2105cd3f603523dc11d8d8
21
-
sha256sums = 30d0b9df2419c22f930649273e006faa1bdab740f03c47d740c941db45dc951e
18
+
sha256sums = 51d360848f8d61161a61a60adcd9f355246bdcd2a0437371096a8563896cc66a
19
+
sha256sums = 91bf996bc8ea97a6c4bcd0ebf5ab2f341bb1f6fa6da0190c9ff95c4debb217f8
20
+
sha256sums = 825ad80eccdfc473674cab83e4bd63d0e3b129d600b4628803d8241430da5bf8
21
+
sha256sums = 21accf6d6d6c9fb545f801cb0a6d98271f7205e504249cc7fdff53ba83203394
22
22
23
23
pkgname = knotserver
+11
-15
knotserver/PKGBUILD
+11
-15
knotserver/PKGBUILD
···
1
1
_pkgname=knotserver
2
-
_pkgver=1.2.1-alpha
2
+
_pkgver=1.11.0-alpha
3
3
pkgname=${_pkgname/\-/\.}
4
4
pkgdesc='git collaboration platform built on ATproto'
5
5
pkgver=${_pkgver/\-/\.}
6
6
pkgrel=1
7
7
license=(MIT)
8
8
arch=(x86_64)
9
-
url=https://tangled.sh/@tangled.sh/core
9
+
url=https://tangled.org/@tangled.org/core
10
10
depends=(git)
11
11
conflicts=(knotserver-git)
12
12
makedepends=(go)
13
13
options=(strip !debug)
14
14
install=${_pkgname}.install
15
-
source=("tangled::git+$url#tag=v$_pkgver"
15
+
source=("core-v${_pkgver}.tar.gz::${url}/archive/refs%2Ftags%2Fv${_pkgver}"
16
16
${_pkgname}.service
17
17
${_pkgname}-sshd.conf
18
18
${_pkgname}-tmpfiles.conf)
19
-
sha256sums=('8589fec78fbb58d3ab2d8c755c29ec2d70a49a1eb61b86e563e15a2541b4b1b4'
20
-
'8d243e1bc0d2e51079550929019d18811679127e6af6aabeed60cd907ffaab32'
21
-
'8b121f30276d83ca52f793e708731fd6985118a2ff2105cd3f603523dc11d8d8'
22
-
'30d0b9df2419c22f930649273e006faa1bdab740f03c47d740c941db45dc951e')
19
+
sha256sums=('51d360848f8d61161a61a60adcd9f355246bdcd2a0437371096a8563896cc66a'
20
+
'91bf996bc8ea97a6c4bcd0ebf5ab2f341bb1f6fa6da0190c9ff95c4debb217f8'
21
+
'825ad80eccdfc473674cab83e4bd63d0e3b129d600b4628803d8241430da5bf8'
22
+
'21accf6d6d6c9fb545f801cb0a6d98271f7205e504249cc7fdff53ba83203394')
23
23
24
24
build() {
25
25
mkdir -p ${srcdir}/build
···
31
31
export CGO_LDFLAGS="${LDFLAGS}"
32
32
export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
33
33
34
-
cd ${srcdir}/tangled
35
-
go build -o "${srcdir}/build/knotserver" ./cmd/knotserver
36
-
go build -o "${srcdir}/build/repoguard" ./cmd/repoguard
37
-
go build -o "${srcdir}/build/keyfetch" ./cmd/keyfetch
34
+
cd ${srcdir}/core-v${_pkgver}
35
+
go build -ldflags "-X tangled.org/core/knotserver/xrpc.version=${_pkgver}" -o "${srcdir}/build/knot" ./cmd/knot
38
36
}
39
37
40
38
package() {
41
39
install -Dm644 "${srcdir}/${_pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${_pkgname}.service"
42
40
install -Dm644 "${srcdir}/${_pkgname}-tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/${_pkgname}.conf"
43
41
install -Dm644 "${srcdir}/${_pkgname}-sshd.conf" "${pkgdir}/usr/lib/systemd/sshd_config.d/${_pkgname}.conf"
44
-
install -Dm755 "${srcdir}/build/knotserver" "${pkgdir}/usr/bin/knotserver"
45
-
install -Dm755 "${srcdir}/build/repoguard" "${pkgdir}/usr/bin/repoguard"
46
-
install -Dm755 "${srcdir}/build/keyfetch" "${pkgdir}/usr/bin/keyfetch"
47
-
install -Dm644 "${srcdir}/tangled/license" "${pkgdir}/usr/share/licenses/knotserver/LICENSE"
42
+
install -Dm755 "${srcdir}/build/knot" "${pkgdir}/usr/bin/knot"
43
+
install -Dm644 "${srcdir}/core-v${_pkgver}/license" "${pkgdir}/usr/share/licenses/tangled/knotserver.LICENSE"
48
44
}
+17
knotserver/README.md
+17
knotserver/README.md
···
1
+
# knotserver
2
+
3
+
Builds and packages `knot`.
4
+
5
+
When installed, knotserver's database files will be stored in `/var/lib/knotserver`. Repositories will
6
+
be stored in `/var/lib/tangled`.
7
+
8
+
## SSH
9
+
10
+
SSH access is required to push to repositories. To enable, use the sshd_config.d drop-in, and give the
11
+
`git` user a shell and a home directory:
12
+
13
+
```bash
14
+
ln -s /usr/lib/systemd/sshd_config.d/knotserver.conf /etc/ssh/sshd_config.d/30-knotserver.conf
15
+
usermod -s /usr/bin/bash -d /var/lib/tangled git
16
+
```
17
+
+1
-1
knotserver/knotserver-sshd.conf
+1
-1
knotserver/knotserver-sshd.conf
···
1
1
Match User git
2
-
AuthorizedKeysCommand /usr/bin/keyfetch -git-path /var/lib/tangled -repoguard-path /usr/bin/repoguard -log-path /var/log/knotserver/keyfetch.log
2
+
AuthorizedKeysCommand /usr/bin/knot keys -output authorized-keys -git-dir /var/lib/tangled -log-path /var/log/knotserver/keyfetch.log
3
3
AuthorizedKeysCommandUser nobody
+1
knotserver/knotserver-tmpfiles.conf
+1
knotserver/knotserver-tmpfiles.conf
+2
-3
knotserver/knotserver.install
+2
-3
knotserver/knotserver.install
···
2
2
echo
3
3
echo knotserver installed, with repositories stored in: /var/lib/tangled
4
4
echo
5
-
echo Remember to set 'KNOT_SERVER_SECRET="..."' in /etc/tangled/knotserver
6
-
echo and 'KNOT_SERVER_HOSTNAME' if 'hostname' does not return the FQDN
7
-
echo of your knot.
5
+
echo Use "systemctl edit knotserver.service" to set "KNOT_SERVER_OWNER" to the DID of the knot owner,
6
+
echo and set "KNOT_SERVER_HOSTNAME" to the FQDN of your knot.
8
7
echo
9
8
echo To enable git push over ssh for tangled repositories, run:
10
9
echo " ln -s /usr/lib/systemd/sshd_config.d/knotserver.conf /etc/ssh/sshd_config.d/30-knotserver.conf"
+1
-4
knotserver/knotserver.service
+1
-4
knotserver/knotserver.service
···
6
6
AssertPathExists=/var/lib/tangled
7
7
8
8
[Service]
9
-
Environment="KNOT_SERVER_HOSTNAME=%H"
10
9
Environment="KNOT_SERVER_LISTEN_ADDR=127.0.0.1:5555"
11
10
Environment="KNOT_REPO_SCAN_PATH=/var/lib/tangled"
12
-
EnvironmentFile=-/etc/tangled/knotserver
13
-
14
11
WorkingDirectory=/var/lib/knotserver
15
-
ExecStart=/usr/bin/knotserver
12
+
ExecStart=/usr/bin/knot server
16
13
Restart=always
17
14
User=git
18
15
Group=git
+6
-6
knotserver-git/.SRCINFO
+6
-6
knotserver-git/.SRCINFO
···
1
1
pkgbase = knotserver-git
2
2
pkgdesc = git collaboration platform built on ATproto
3
-
pkgver = 1.2.1.alpha.r1.gf44471b
3
+
pkgver = 1.9.1.alpha.r48.g8f7177a
4
4
pkgrel = 1
5
-
url = https://tangled.sh/@tangled.sh/core
5
+
url = https://tangled.org/@tangled.org/core
6
6
install = knotserver.install
7
7
arch = x86_64
8
8
license = MIT
···
10
10
depends = git
11
11
conflicts = knotserver
12
12
options = strip
13
-
source = tangled::git+https://tangled.sh/@tangled.sh/core
13
+
source = tangled::git+https://tangled.org/@tangled.org/core
14
14
source = knotserver.service
15
15
source = knotserver-sshd.conf
16
16
source = knotserver-tmpfiles.conf
17
17
sha256sums = SKIP
18
-
sha256sums = 8d243e1bc0d2e51079550929019d18811679127e6af6aabeed60cd907ffaab32
19
-
sha256sums = 8b121f30276d83ca52f793e708731fd6985118a2ff2105cd3f603523dc11d8d8
20
-
sha256sums = 30d0b9df2419c22f930649273e006faa1bdab740f03c47d740c941db45dc951e
18
+
sha256sums = 91bf996bc8ea97a6c4bcd0ebf5ab2f341bb1f6fa6da0190c9ff95c4debb217f8
19
+
sha256sums = 825ad80eccdfc473674cab83e4bd63d0e3b129d600b4628803d8241430da5bf8
20
+
sha256sums = 21accf6d6d6c9fb545f801cb0a6d98271f7205e504249cc7fdff53ba83203394
21
21
22
22
pkgname = knotserver-git
+8
-12
knotserver-git/PKGBUILD
+8
-12
knotserver-git/PKGBUILD
···
1
1
_pkgname=knotserver
2
2
pkgname=${_pkgname}-git
3
3
pkgdesc='git collaboration platform built on ATproto'
4
-
pkgver=1.2.1.alpha.r1.gf44471b
4
+
pkgver=1.9.1.alpha.r48.g8f7177a
5
5
pkgrel=1
6
6
license=(MIT)
7
7
arch=(x86_64)
8
-
url=https://tangled.sh/@tangled.sh/core
8
+
url=https://tangled.org/@tangled.org/core
9
9
depends=(git)
10
10
conflicts=(knotserver)
11
11
makedepends=(go)
···
16
16
${_pkgname}-sshd.conf
17
17
${_pkgname}-tmpfiles.conf)
18
18
sha256sums=('SKIP'
19
-
'8d243e1bc0d2e51079550929019d18811679127e6af6aabeed60cd907ffaab32'
20
-
'8b121f30276d83ca52f793e708731fd6985118a2ff2105cd3f603523dc11d8d8'
21
-
'30d0b9df2419c22f930649273e006faa1bdab740f03c47d740c941db45dc951e')
19
+
'91bf996bc8ea97a6c4bcd0ebf5ab2f341bb1f6fa6da0190c9ff95c4debb217f8'
20
+
'825ad80eccdfc473674cab83e4bd63d0e3b129d600b4628803d8241430da5bf8'
21
+
'21accf6d6d6c9fb545f801cb0a6d98271f7205e504249cc7fdff53ba83203394')
22
22
23
23
pkgver() {
24
24
cd ${srcdir}/tangled
···
36
36
export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
37
37
38
38
cd ${srcdir}/tangled
39
-
go build -o "${srcdir}/build/knotserver" ./cmd/knotserver
40
-
go build -o "${srcdir}/build/repoguard" ./cmd/repoguard
41
-
go build -o "${srcdir}/build/keyfetch" ./cmd/keyfetch
39
+
go build -ldflags "-X tangled.org/core/knotserver/xrpc.version=${pkgver}" -o "${srcdir}/build/knot" ./cmd/knot
42
40
}
43
41
44
42
package() {
45
43
install -Dm644 "${srcdir}/${_pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${_pkgname}.service"
46
44
install -Dm644 "${srcdir}/${_pkgname}-tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/${_pkgname}.conf"
47
45
install -Dm644 "${srcdir}/${_pkgname}-sshd.conf" "${pkgdir}/usr/lib/systemd/sshd_config.d/${_pkgname}.conf"
48
-
install -Dm755 "${srcdir}/build/knotserver" "${pkgdir}/usr/bin/knotserver"
49
-
install -Dm755 "${srcdir}/build/repoguard" "${pkgdir}/usr/bin/repoguard"
50
-
install -Dm755 "${srcdir}/build/keyfetch" "${pkgdir}/usr/bin/keyfetch"
51
-
install -Dm644 "${srcdir}/tangled/license" "${pkgdir}/usr/share/licenses/knotserver/LICENSE"
46
+
install -Dm755 "${srcdir}/build/knot" "${pkgdir}/usr/bin/knot"
47
+
install -Dm644 "${srcdir}/tangled/license" "${pkgdir}/usr/share/licenses/tangled/knotserver.LICENSE"
52
48
}
+17
knotserver-git/README.md
+17
knotserver-git/README.md
···
1
+
# knotserver-git
2
+
3
+
Builds and packages `knot`.
4
+
5
+
When installed, knotserver's database files will be stored in `/var/lib/knotserver`. Repositories will
6
+
be stored in `/var/lib/tangled`.
7
+
8
+
## SSH
9
+
10
+
SSH access is required to push to repositories. To enable, use the sshd_config.d drop-in, and give the
11
+
`git` user a shell and a home directory:
12
+
13
+
```bash
14
+
ln -s /usr/lib/systemd/sshd_config.d/knotserver.conf /etc/ssh/sshd_config.d/30-knotserver.conf
15
+
usermod -s /usr/bin/bash -d /var/lib/tangled git
16
+
```
17
+
+1
-1
knotserver-git/knotserver-sshd.conf
+1
-1
knotserver-git/knotserver-sshd.conf
···
1
1
Match User git
2
-
AuthorizedKeysCommand /usr/bin/keyfetch -git-path /var/lib/tangled -repoguard-path /usr/bin/repoguard -log-path /var/log/knotserver/keyfetch.log
2
+
AuthorizedKeysCommand /usr/bin/knot keys -output authorized-keys -git-dir /var/lib/tangled -log-path /var/log/knotserver/keyfetch.log
3
3
AuthorizedKeysCommandUser nobody
+1
knotserver-git/knotserver-tmpfiles.conf
+1
knotserver-git/knotserver-tmpfiles.conf
+2
-3
knotserver-git/knotserver.install
+2
-3
knotserver-git/knotserver.install
···
2
2
echo
3
3
echo knotserver installed, with repositories stored in: /var/lib/tangled
4
4
echo
5
-
echo Remember to set 'KNOT_SERVER_SECRET="..."' in /etc/tangled/knotserver
6
-
echo and 'KNOT_SERVER_HOSTNAME' if 'hostname' does not return the FQDN
7
-
echo of your knot.
5
+
echo Use "systemctl edit knotserver.service" to set "KNOT_SERVER_OWNER" to the DID of the knot owner,
6
+
echo and set "KNOT_SERVER_HOSTNAME" to the FQDN of your knot.
8
7
echo
9
8
echo To enable git push over ssh for tangled repositories, run:
10
9
echo " ln -s /usr/lib/systemd/sshd_config.d/knotserver.conf /etc/ssh/sshd_config.d/30-knotserver.conf"
+1
-4
knotserver-git/knotserver.service
+1
-4
knotserver-git/knotserver.service
···
6
6
AssertPathExists=/var/lib/tangled
7
7
8
8
[Service]
9
-
Environment="KNOT_SERVER_HOSTNAME=%H"
10
9
Environment="KNOT_SERVER_LISTEN_ADDR=127.0.0.1:5555"
11
10
Environment="KNOT_REPO_SCAN_PATH=/var/lib/tangled"
12
-
EnvironmentFile=-/etc/tangled/knotserver
13
-
14
11
WorkingDirectory=/var/lib/knotserver
15
-
ExecStart=/usr/bin/knotserver
12
+
ExecStart=/usr/bin/knot server
16
13
Restart=always
17
14
User=git
18
15
Group=git
+23
spindle/.SRCINFO
+23
spindle/.SRCINFO
···
1
+
pkgbase = spindle
2
+
pkgdesc = git collaboration platform built on ATproto
3
+
pkgver = 1.11.0.alpha
4
+
pkgrel = 1
5
+
url = https://tangled.org/@tangled.org/core
6
+
arch = x86_64
7
+
license = MIT
8
+
makedepends = git
9
+
makedepends = go
10
+
depends = docker
11
+
conflicts = spindle-git
12
+
options = strip
13
+
options = !debug
14
+
source = core-v1.11.0-alpha.tar.gz::https://tangled.org/@tangled.org/core/archive/refs%2Ftags%2Fv1.11.0-alpha
15
+
source = spindle.service
16
+
source = spindle.sysusers
17
+
source = spindle-tmpfiles.conf
18
+
sha256sums = 51d360848f8d61161a61a60adcd9f355246bdcd2a0437371096a8563896cc66a
19
+
sha256sums = 6509c3c71ed305cc8cdf59f54261538a2f554621ae6116bb2f78ebe92b8d64bb
20
+
sha256sums = 1364062c3d0daa6fa8fc439bf26e88585d503a36b9f8335bae037f659b08bd15
21
+
sha256sums = 28673b854e9cd65cb129f46bc1dc894fb74a62fa3b976f2e1e5737558096b499
22
+
23
+
pkgname = spindle
+43
spindle/PKGBUILD
+43
spindle/PKGBUILD
···
1
+
_pkgname=spindle
2
+
_pkgver=1.11.0-alpha
3
+
pkgname=${_pkgname/\-/\.}
4
+
pkgdesc='git collaboration platform built on ATproto'
5
+
pkgver=${_pkgver/\-/\.}
6
+
pkgrel=1
7
+
license=(MIT)
8
+
arch=(x86_64)
9
+
url=https://tangled.org/@tangled.org/core
10
+
depends=(docker)
11
+
conflicts=(spindle-git)
12
+
makedepends=(git go)
13
+
options=(strip !debug)
14
+
source=("core-v${_pkgver}.tar.gz::${url}/archive/refs%2Ftags%2Fv${_pkgver}"
15
+
${_pkgname}.service
16
+
${_pkgname}.sysusers
17
+
${_pkgname}-tmpfiles.conf)
18
+
sha256sums=('51d360848f8d61161a61a60adcd9f355246bdcd2a0437371096a8563896cc66a'
19
+
'6509c3c71ed305cc8cdf59f54261538a2f554621ae6116bb2f78ebe92b8d64bb'
20
+
'1364062c3d0daa6fa8fc439bf26e88585d503a36b9f8335bae037f659b08bd15'
21
+
'28673b854e9cd65cb129f46bc1dc894fb74a62fa3b976f2e1e5737558096b499')
22
+
23
+
build() {
24
+
mkdir -p ${srcdir}/build
25
+
26
+
export CGO_ENABLED=1
27
+
export CGO_CPPFLAGS="${CPPFLAGS}"
28
+
export CGO_CFLAGS="${CFLAGS}"
29
+
export CGO_CXXFLAGS="${CXXFLAGS}"
30
+
export CGO_LDFLAGS="${LDFLAGS}"
31
+
export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
32
+
33
+
cd ${srcdir}/core-v${_pkgver}
34
+
go build -o "${srcdir}/build/spindle" ./cmd/spindle
35
+
}
36
+
37
+
package() {
38
+
install -Dm644 "${srcdir}/${_pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${_pkgname}.service"
39
+
install -Dm644 "${srcdir}/${_pkgname}.sysusers" "${pkgdir}/usr/lib/sysusers.d/${_pkgname}.conf"
40
+
install -Dm644 "${srcdir}/${_pkgname}-tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/${_pkgname}.conf"
41
+
install -Dm755 "${srcdir}/build/spindle" "${pkgdir}/usr/bin/spindle"
42
+
install -Dm644 "${srcdir}/core-v${_pkgver}/license" "${pkgdir}/usr/share/licenses/tangled/spindle.LICENSE"
43
+
}
+1
spindle/spindle-tmpfiles.conf
+1
spindle/spindle-tmpfiles.conf
···
1
+
d /var/lib/spindle 755 spindle spindle -
+20
spindle/spindle.service
+20
spindle/spindle.service
···
1
+
[Unit]
2
+
Description=tangled spindle server
3
+
After=network.target network-online.target docker.service
4
+
Wants=network-online.target
5
+
AssertPathExists=/var/lib/spindle
6
+
7
+
[Service]
8
+
Environment="SPINDLE_SERVER_LISTEN_ADDR=127.0.0.1:6555"
9
+
WorkingDirectory=/var/lib/spindle
10
+
ExecStart=/usr/bin/spindle
11
+
Restart=always
12
+
User=spindle
13
+
Group=spindle
14
+
StandardOutput=journal
15
+
StandardError=journal
16
+
LimitNOFILE=65536
17
+
LogsDirectory=spindle
18
+
19
+
[Install]
20
+
WantedBy=multi-user.target
+2
spindle/spindle.sysusers
+2
spindle/spindle.sysusers
+31
src/README.md.sh
+31
src/README.md.sh
···
1
+
#!/usr/bin/bash
2
+
set -eu
3
+
cat << EOF > ${pkgbuild_path}/README.md
4
+
# pkgs
5
+
6
+
PKGBUILDs for running [@tangled.org](https://tangled.org/@tangled.org/core) on [Arch](https://archlinux.org).
7
+
8
+
> [!NOTE]
9
+
> I use these packages to deploy to my knot server.
10
+
>
11
+
> These are **not** official tangled packages. **DO NOT** direct issues using these packages to the core tangled.org repository.
12
+
13
+
## Packages:
14
+
15
+
### [appview](appview)
16
+
17
+
Builds \`appview\` from tag [v${tag}](https://tangled.org/@tangled.org/core/tree/v${tag}).
18
+
19
+
### [knotserver](knotserver)
20
+
21
+
Builds \`knot\` from tag [v${tag}](https://tangled.org/@tangled.org/core/tree/v${tag}).
22
+
23
+
### [knotserver-git](knotserver-git)
24
+
25
+
Builds \`knot\` from branch [master](https://tangled.org/@tangled.org/core/tree/master).
26
+
27
+
### [spindle](spindle)
28
+
29
+
Builds \`spindle\` from tag [v${tag}](https://tangled.org/@tangled.org/core/tree/v${tag}).
30
+
31
+
EOF
-18
src/common/install.sh
-18
src/common/install.sh
···
1
-
#!/usr/bin/bash
2
-
cat << EOF > ${pkgbuild_path}/knotserver.install
3
-
post_install() {
4
-
echo
5
-
echo knotserver installed, with repositories stored in: $knotserver_repo_path
6
-
echo
7
-
echo Remember to set 'KNOT_SERVER_SECRET="..."' in /etc/tangled/knotserver
8
-
echo and 'KNOT_SERVER_HOSTNAME' if 'hostname' does not return the FQDN
9
-
echo of your knot.
10
-
echo
11
-
echo To enable git push over ssh for tangled repositories, run:
12
-
echo " ln -s /usr/lib/systemd/sshd_config.d/knotserver.conf /etc/ssh/sshd_config.d/30-knotserver.conf"
13
-
echo " usermod -s /usr/bin/bash -d $knotserver_repo_path $knotserver_user"
14
-
echo
15
-
echo and reload sshd
16
-
echo
17
-
}
18
-
EOF
-31
src/common/service.sh
-31
src/common/service.sh
···
1
-
#!/usr/bin/bash
2
-
cat << EOF > ${pkgbuild_path}/knotserver.service
3
-
[Unit]
4
-
Description=tangled knot server
5
-
After=network.target network-online.target
6
-
Wants=network-online.target
7
-
AssertPathExists=$knotserver_db_path
8
-
AssertPathExists=$knotserver_repo_path
9
-
10
-
[Service]
11
-
Environment="KNOT_SERVER_HOSTNAME=%H"
12
-
Environment="KNOT_SERVER_LISTEN_ADDR=127.0.0.1:5555"
13
-
Environment="KNOT_REPO_SCAN_PATH=${knotserver_repo_path}"
14
-
EnvironmentFile=-/etc/tangled/knotserver
15
-
16
-
WorkingDirectory=$knotserver_db_path
17
-
ExecStart=/usr/bin/knotserver
18
-
Restart=always
19
-
User=$knotserver_user
20
-
Group=$knotserver_group
21
-
22
-
StandardOutput=journal
23
-
StandardError=journal
24
-
LimitNOFILE=65536
25
-
26
-
# Creates /var/log/knotserver with the correct permissions for the repoguard log.
27
-
LogsDirectory=knotserver
28
-
29
-
[Install]
30
-
WantedBy=multi-user.target
31
-
EOF
-6
src/common/sshd.conf.sh
-6
src/common/sshd.conf.sh
···
1
-
#!/usr/bin/bash
2
-
cat << EOF > ${pkgbuild_path}/knotserver-sshd.conf
3
-
Match User $knotserver_user
4
-
AuthorizedKeysCommand /usr/bin/keyfetch -git-path $knotserver_repo_path -repoguard-path /usr/bin/repoguard -log-path ${knotserver_log_directory}/keyfetch.log
5
-
AuthorizedKeysCommandUser nobody
6
-
EOF
-5
src/common/tmpfiles.conf.sh
-5
src/common/tmpfiles.conf.sh
+48
src/knotserver/PKGBUILD.sh
+48
src/knotserver/PKGBUILD.sh
···
1
+
#!/usr/bin/bash
2
+
set -eu
3
+
cat << EOF > ${pkgbuild_path}/PKGBUILD
4
+
_pkgname=knotserver
5
+
_pkgver=${tag}
6
+
pkgname=\${_pkgname/\-/\.}
7
+
pkgdesc='git collaboration platform built on ATproto'
8
+
pkgver=\${_pkgver/\-/\.}
9
+
pkgrel=1
10
+
license=(MIT)
11
+
arch=(x86_64)
12
+
url=https://tangled.org/@tangled.org/core
13
+
depends=(git)
14
+
conflicts=(knotserver-git)
15
+
makedepends=(go)
16
+
options=(strip !debug)
17
+
install=\${_pkgname}.install
18
+
source=("core-v\${_pkgver}.tar.gz::\${url}/archive/refs%2Ftags%2Fv\${_pkgver}"
19
+
\${_pkgname}.service
20
+
\${_pkgname}-sshd.conf
21
+
\${_pkgname}-tmpfiles.conf)
22
+
sha256sums=('set by updpkgsums'
23
+
'set by updpkgsums'
24
+
'set by updpkgsums'
25
+
'set by updpkgsums')
26
+
27
+
build() {
28
+
mkdir -p \${srcdir}/build
29
+
30
+
export CGO_ENABLED=1
31
+
export CGO_CPPFLAGS="\${CPPFLAGS}"
32
+
export CGO_CFLAGS="\${CFLAGS}"
33
+
export CGO_CXXFLAGS="\${CXXFLAGS}"
34
+
export CGO_LDFLAGS="\${LDFLAGS}"
35
+
export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
36
+
37
+
cd \${srcdir}/core-v\${_pkgver}
38
+
go build -ldflags "-X tangled.org/core/knotserver/xrpc.version=\${_pkgver}" -o "\${srcdir}/build/knot" ./cmd/knot
39
+
}
40
+
41
+
package() {
42
+
install -Dm644 "\${srcdir}/\${_pkgname}.service" "\${pkgdir}/usr/lib/systemd/system/\${_pkgname}.service"
43
+
install -Dm644 "\${srcdir}/\${_pkgname}-tmpfiles.conf" "\${pkgdir}/usr/lib/tmpfiles.d/\${_pkgname}.conf"
44
+
install -Dm644 "\${srcdir}/\${_pkgname}-sshd.conf" "\${pkgdir}/usr/lib/systemd/sshd_config.d/\${_pkgname}.conf"
45
+
install -Dm755 "\${srcdir}/build/knot" "\${pkgdir}/usr/bin/knot"
46
+
install -Dm644 "\${srcdir}/core-v\${_pkgver}/license" "\${pkgdir}/usr/share/licenses/tangled/knotserver.LICENSE"
47
+
}
48
+
EOF
+21
src/knotserver/README.md.sh
+21
src/knotserver/README.md.sh
···
1
+
#!/usr/bin/bash
2
+
set -eu
3
+
cat << EOF > ${pkgbuild_path}/README.md
4
+
# knotserver
5
+
6
+
Builds and packages \`knot\`.
7
+
8
+
When installed, knotserver's database files will be stored in \`${knotserver_path}\`. Repositories will
9
+
be stored in \`${knotserver_repo_path}\`.
10
+
11
+
## SSH
12
+
13
+
SSH access is required to push to repositories. To enable, use the sshd_config.d drop-in, and give the
14
+
\`${knotserver_user}\` user a shell and a home directory:
15
+
16
+
\`\`\`bash
17
+
ln -s /usr/lib/systemd/sshd_config.d/knotserver.conf /etc/ssh/sshd_config.d/30-knotserver.conf
18
+
usermod -s /usr/bin/bash -d ${knotserver_repo_path} ${knotserver_user}
19
+
\`\`\`
20
+
21
+
EOF
+21
src/knotserver-git/README.md.sh
+21
src/knotserver-git/README.md.sh
···
1
+
#!/usr/bin/bash
2
+
set -eu
3
+
cat << EOF > ${pkgbuild_path}/README.md
4
+
# knotserver-git
5
+
6
+
Builds and packages \`knot\`.
7
+
8
+
When installed, knotserver's database files will be stored in \`${knotserver_path}\`. Repositories will
9
+
be stored in \`${knotserver_repo_path}\`.
10
+
11
+
## SSH
12
+
13
+
SSH access is required to push to repositories. To enable, use the sshd_config.d drop-in, and give the
14
+
\`${knotserver_user}\` user a shell and a home directory:
15
+
16
+
\`\`\`bash
17
+
ln -s /usr/lib/systemd/sshd_config.d/knotserver.conf /etc/ssh/sshd_config.d/30-knotserver.conf
18
+
usermod -s /usr/bin/bash -d ${knotserver_repo_path} ${knotserver_user}
19
+
\`\`\`
20
+
21
+
EOF
+47
src/spindle/PKGBUILD.sh
+47
src/spindle/PKGBUILD.sh
···
1
+
#!/usr/bin/bash
2
+
set -eu
3
+
cat << EOF > ${pkgbuild_path}/PKGBUILD
4
+
_pkgname=spindle
5
+
_pkgver=${tag}
6
+
pkgname=\${_pkgname/\-/\.}
7
+
pkgdesc='git collaboration platform built on ATproto'
8
+
pkgver=\${_pkgver/\-/\.}
9
+
pkgrel=1
10
+
license=(MIT)
11
+
arch=(x86_64)
12
+
url=https://tangled.org/@tangled.org/core
13
+
depends=(docker)
14
+
conflicts=(spindle-git)
15
+
makedepends=(git go)
16
+
options=(strip !debug)
17
+
source=("core-v\${_pkgver}.tar.gz::\${url}/archive/refs%2Ftags%2Fv\${_pkgver}"
18
+
\${_pkgname}.service
19
+
\${_pkgname}.sysusers
20
+
\${_pkgname}-tmpfiles.conf)
21
+
sha256sums=('set by updpkgsums'
22
+
'set by updpkgsums'
23
+
'set by updpkgsums'
24
+
'set by updpkgsums')
25
+
26
+
build() {
27
+
mkdir -p \${srcdir}/build
28
+
29
+
export CGO_ENABLED=1
30
+
export CGO_CPPFLAGS="\${CPPFLAGS}"
31
+
export CGO_CFLAGS="\${CFLAGS}"
32
+
export CGO_CXXFLAGS="\${CXXFLAGS}"
33
+
export CGO_LDFLAGS="\${LDFLAGS}"
34
+
export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
35
+
36
+
cd \${srcdir}/core-v\${_pkgver}
37
+
go build -o "\${srcdir}/build/spindle" ./cmd/spindle
38
+
}
39
+
40
+
package() {
41
+
install -Dm644 "\${srcdir}/\${_pkgname}.service" "\${pkgdir}/usr/lib/systemd/system/\${_pkgname}.service"
42
+
install -Dm644 "\${srcdir}/\${_pkgname}.sysusers" "\${pkgdir}/usr/lib/sysusers.d/\${_pkgname}.conf"
43
+
install -Dm644 "\${srcdir}/\${_pkgname}-tmpfiles.conf" "\${pkgdir}/usr/lib/tmpfiles.d/\${_pkgname}.conf"
44
+
install -Dm755 "\${srcdir}/build/spindle" "\${pkgdir}/usr/bin/spindle"
45
+
install -Dm644 "\${srcdir}/core-v\${_pkgver}/license" "\${pkgdir}/usr/share/licenses/tangled/spindle.LICENSE"
46
+
}
47
+
EOF
+5
src/spindle/tmpfiles.conf.sh
+5
src/spindle/tmpfiles.conf.sh
+33
-4
update.sh
+33
-4
update.sh
···
1
1
#!/usr/bin/env bash
2
+
set -eu
2
3
3
4
source ./conf.sh
4
5
6
+
pkgbuild_path="."
7
+
source src/README.md.sh
8
+
5
9
for pkgbuild_path in knotserver knotserver-git; do
6
-
source src/common/sshd.conf.sh
7
-
source src/common/tmpfiles.conf.sh
8
-
source src/common/service.sh
9
-
source src/common/install.sh
10
+
for src in src/knotserver-shared/*.sh; do
11
+
source ${src}
12
+
done
13
+
for src in src/${pkgbuild_path}/*.sh; do
14
+
source ${src}
15
+
done
10
16
11
17
cd $pkgbuild_path
12
18
updpkgsums
···
14
20
15
21
cd ..
16
22
done
23
+
24
+
for pkgbuild_path in spindle; do
25
+
for src in src/spindle-shared/*.sh; do
26
+
source ${src}
27
+
done
28
+
for src in src/${pkgbuild_path}/*.sh; do
29
+
source ${src}
30
+
done
31
+
32
+
cd $pkgbuild_path
33
+
updpkgsums
34
+
makepkg --printsrcinfo > .SRCINFO
35
+
36
+
cd ..
37
+
done
38
+
39
+
for pkgbuild_path in appview; do
40
+
cd $pkgbuild_path
41
+
updpkgsums
42
+
makepkg --printsrcinfo > .SRCINFO
43
+
44
+
cd ..
45
+
done