aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralex <alex@pdp7.net>2026-06-18 22:32:33 +0200
committeralex <alex@pdp7.net>2026-06-18 22:34:30 +0200
commitae29e819661173d8e4d1f8506cd159636751f184 (patch)
treebb3fdccc9ec3b054d57b9959ae23eaa8f3a40fbb
parent1e3dd12537327407705149e3a8739e18fa539d52 (diff)
Remove workstationmaster
Closes #779
-rw-r--r--.github/workflows/build-workstation.yml22
-rw-r--r--README.md4
-rw-r--r--blog/content/notes/index.gmi1
-rw-r--r--blog/content/notes/tech/modern-irc.gmi31
-rw-r--r--scripts/README.md2
-rw-r--r--scripts/p7s/bitlbee.py31
-rw-r--r--scripts/pyproject.toml1
-rw-r--r--workstation/README.md43
m---------workstation/arch-container-builder0
-rwxr-xr-xworkstation/build_workstation35
-rw-r--r--workstation/modern_irc.md60
11 files changed, 34 insertions, 196 deletions
diff --git a/.github/workflows/build-workstation.yml b/.github/workflows/build-workstation.yml
deleted file mode 100644
index 32a764cc..00000000
--- a/.github/workflows/build-workstation.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-on:
- push:
- paths:
- - 'workstation/**'
- branches:
- - master
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - run: |
- cd workstation
- ./build_workstation
- podman login -u="alexpdp7+github_workstation_builder" -p="$ROBOT_TOKEN" quay.io
- podman push localhost/workstation:latest quay.io/alexpdp7/workstation:latest
- env:
- ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }}
diff --git a/README.md b/README.md
index d081b026..541cea80 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ Como nunca tengo oportunidad de trabajar en modo monorepo, hay que aprovechar es
* [Gran parte del código que soporta mi infraestructura personal](personal_infra/).
* [Ideas en las que me gustaría trabajar algún día, pero que cuelgo aquí por si algún incauto pica](IDEAS.org).
* [Mi configuración de Emacs](emacs/).
-* [Unos cuantos scripts que uso en mis "estaciones de trabajo"](scripts/) y [un par de barbaridades para montar un contenedor para Distrobox/Toolbox con algunas de las herramientas que uso](workstation/).
+* [Unos cuantos scripts que uso en mis "estaciones de trabajo"](scripts/).
* [La definición del modelo de datos del sistema que uso para registrar métricas de salud](weight/), que se convierte en una web gracias a [zqxjkcrud](https://github.com/alexpdp7/zqxjkcrud/), mi framework para desarrollo rápido de CRUD.
* [Algunas cosas que sigo en RSS](FUENTES.md)
* [Mi blog personal](blog/), que podéis ver más fácilmente en https://alex.corcoles.net/ (y en Gemini, aunque por algún motivo no puedo enlazar a Gemini con el Markdown de GitHub).
@@ -22,7 +22,7 @@ Más cosas escritas [en español](https://alex.corcoles.net/notas/) y [en inglé
* [Most of the code for my personal infra](personal_infra/).
* [Ideas I'd like to work on someday, but mostly making them public to bait people into implementing them instead of me](IDEAS.org).
* [My emacs config](emacs/).
-* [Scripts I use on my workstations](scripts/) and [some bizarre stuff to build Distrobox/Toolbox containers with some tools I use](workstation/).
+* [Scripts I use on my workstations](scripts/).
* [The database schema for my health metrics tracking system](weight/), which has a web UI via [zqxjkcrud](https://github.com/alexpdp7/zqxjkcrud/), my CRUD rapid development framework.
[More writing in English here](https://alex.corcoles.net/notes/).
diff --git a/blog/content/notes/index.gmi b/blog/content/notes/index.gmi
index c2c5ff61..4f985750 100644
--- a/blog/content/notes/index.gmi
+++ b/blog/content/notes/index.gmi
@@ -19,6 +19,7 @@ Notes about some books and long articles I like:
=> tech/ssh-for-beginners SSH for beginners
=> tech/document-formats Document formats
=> tech/internet-communication-channels Internet communication channels
+=> tech/modern-irc Modern IRC
=> tech/ledger Ledger
=> tech/migadu Migadu
=> tech/ripping Ripping
diff --git a/blog/content/notes/tech/modern-irc.gmi b/blog/content/notes/tech/modern-irc.gmi
new file mode 100644
index 00000000..520535d9
--- /dev/null
+++ b/blog/content/notes/tech/modern-irc.gmi
@@ -0,0 +1,31 @@
+# Modern IRC
+
+With the IRCv3 advances and modern software, IRC is a surprisingly nice chat/IM medium, although a bit complex to set up nicely.
+
+=> internet-communication-channels See also Internet communication channels.
+
+I use:
+
+* Soju as a bouncer. IRC basically only supports "synchronous" communication. If your IRC client disconnects from a chat (because you turn off your computer, for example), then you lose the messages in your chats. A bouncer is a persistent IRC client that you run on a 24/7 computer that connects to your IRC chats for you, then you connect a client to the bouncer. This way, the bouncer captures all messages and you can view them right after connecting a client. This achieves the "scrollback" that conventional chat clients provide. Soju also uses modern extensions to make the IRC experience simpler.
+* Senpai is a modern terminal IRC client that is "Soju-aware".
+
+With this setup, I can:
+
+* Connect to IRC chats in a friendly manner with modern comforts.
+* Access this setup via SSH, so I can use it on "foreign" computers.
+
+Senpai is now packaged in Debian, although I've had bugs and sometimes build it manually.
+
+After connecting Senpai to Soju, you talk to a bot called BouncerServ to connect to your IRC networks. When you join/part channels in any client, Soju takes care of making those actions permanent.
+
+## Possible improvements
+
+Gamja is another "Soju-aware" IRC client that provides a web interface. Gamja and Goguma even support OAuth for authentication.
+
+Right now I run Soju on a private network, so I cannot access it outside my VPN. For this reason, I use trivial passwords and plain-text protocols. For convenience (using Goguma on random networks without connecting to the VPN), I should set up TLS and proper authentication.
+
+## Other things I did
+
+I used Bitlbee as a bridge to Telegram. Bitlbee connects traditional IM networks, such as XMPP to IRC. There are plugins for many IM systems, including WhatsApp. However, WhatsApp does not have a "supported API", so I am wary to use anything else than official clients. But with Telegram, I could integrate IRC with it. However, building Bitlbee with the Telegram plugin was a pain, so it stopped maintaining this. However, using Telegram was much more pleasant through snappy Senpai and with good information density.
+
+Goguma is a Flutter/Android IRC client that is also "Soju-aware" and available in F-Droid. However, it is a bit unreliable, and I've decided anyway to only chat when I have a full-size physical keyboard.
diff --git a/scripts/README.md b/scripts/README.md
index 214e3162..24a50548 100644
--- a/scripts/README.md
+++ b/scripts/README.md
@@ -23,5 +23,3 @@ pipx install -e scripts/ # alternatively, use uv tool install -e .
...
git remote set-url origin git@github.com:alexpdp7/alexpdp7.git
```
-
-See [workstation](../workstation) for further details.
diff --git a/scripts/p7s/bitlbee.py b/scripts/p7s/bitlbee.py
deleted file mode 100644
index 4f0acbd4..00000000
--- a/scripts/p7s/bitlbee.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import pathlib
-import textwrap
-
-
-def setup_bitlbee():
- home = pathlib.Path.home()
- config = home / ".config" / "containers" / "systemd"
- config.mkdir(parents=True, exist_ok=True)
- (config / "bitlbee.container").write_text(textwrap.dedent("""
- [Unit]
- Description=IM-IRC bridge
-
- [Container]
- Image=quay.io/alexpdp7/workstation:latest
- Volume=/home/alex/.local/lib/bitlbee:/var/lib/bitlbee/
- # running this on an LXC container, which borks SecurityLabelDisable
- #SecurityLabelDisable=true
- PublishPort=6668:6667
-
- Exec=bitlbee -Fnv
-
- [Service]
- # Extend Timeout to allow time to pull the image
- TimeoutStartSec=900
-
- [Install]
- # Start by default on boot
- WantedBy=multi-user.target default.target
- """).lstrip())
-
- (home / ".local" / "lib" / "bitlbee").mkdir(parents=True, exist_ok=True)
diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml
index 61cad795..36bf52c2 100644
--- a/scripts/pyproject.toml
+++ b/scripts/pyproject.toml
@@ -7,7 +7,6 @@ dependencies = []
[project.scripts]
ruscreen = 'p7s.ruscreen:main'
setup-bash = 'p7s.bash:setup_bash'
-setup-bitlbee = 'p7s.bitlbee:setup_bitlbee'
setup-emacs = 'p7s.emacs:setup_emacs'
setup-mbsync = 'p7s.mail:setup_mbsync'
setup-nextcloud = 'p7s.nextcloud:setup_nextcloud'
diff --git a/workstation/README.md b/workstation/README.md
deleted file mode 100644
index f66120a6..00000000
--- a/workstation/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-I am trying to move some tools into a [container image](build_workstation) for use with Distrobox, and [a Python module with tools](../scripts).
-
-This includes:
-
-* [My editor](../emacs)
-* [A modern IRC setup](modern_irc.md).
-* [mbsync to synchronize my email for backup](../scripts/p7s/mail/mbsync.py)
-* [Some integration with vaultwarden for secrets](../scripts/p7s/bitwarden.py)
-* And some other odds and ends (NextCloud, etc.)
-
-Checklist:
-
-* DNIe
-* Emacs
-* sys2 (Ansible, `talosctl`, `kubectl`)
-* PaperWM
-* Nextcloud
-* Bitwarden
-* Senpai
-* ZFS (for backups)
-* FreeIPA client
-* Email client
-
-# Debian setup
-
-(Remember, Puppet set up switches Firefox ESR in Debian with upstream Debian.
-This sets up a new profile without stored sessions.)
-
-* Remove CD apt source
-* Join FreeIPA with Gnome initial setup.
-* Enable SSH root login.
-* Change root password, sync with inventory and Bitwarden.
-* Provision with Ansible
-
-```
-bw config server https://bitwarden.pdp7.net/
-bw login
-bw list items --search firefox
-```
-
-; to configure Firefox Sync.
-
-* Seed NoScript from another Firefox through Nextcloud.
diff --git a/workstation/arch-container-builder b/workstation/arch-container-builder
deleted file mode 160000
-Subproject e21419e6983349cd0c9623c337e26dc3b292035
diff --git a/workstation/build_workstation b/workstation/build_workstation
deleted file mode 100755
index fd3d82fc..00000000
--- a/workstation/build_workstation
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-set -ue
-
-(
- cd arch-container-builder/
- ./builder.py \
- --package pkgfile \
- --package ansible \
- --package puppet \
- --package sshpass \
- --package git \
- --package rust \
- --package ipython \
- --package maven \
- --package python-pip \
- --package python-pipx \
- --package python-poetry \
- --package python-jmespath \
- --package python-kubernetes \
- --package python-botocore \
- --package python-boto3 \
- --package certbot \
- --package man-db \
- --package isync \
- --package libotr \
- --package qemu-system-aarch64 \
- --package qemu-system-arm-firmware \
- --package qemu-img \
- --package cdrtools \
- --package mailutils \
- --aur-package telegram-tdlib-purple-minimal-git \
- --aur-package bitlbee-libpurple \
- workstation
-)
diff --git a/workstation/modern_irc.md b/workstation/modern_irc.md
deleted file mode 100644
index 7f9eddf4..00000000
--- a/workstation/modern_irc.md
+++ /dev/null
@@ -1,60 +0,0 @@
-With the [IRCv3](https://ircv3.net/) advances and modern software, IRC is a surprisingly nice chat/IM medium, although a bit complex to set up nicely.
-
-See also [Internet communication channels](../misc/internet-communication-channels.md).
-
-I am not writing a step-by-step guide in setting this up, mostly providing links to my setup scripts.
-If you have issues reproducing this kind of setup, you can try contacting me (e.g. open a GitHub issue) and I can try to expand.
-
-I use:
-
-* [Soju](https://soju.im/) as a bouncer.
-IRC basically only supports "synchronous" communication.
-If your IRC client disconnects from a chat (because you turn off your computer, for example), then you lose the messages in your chats.
-A bouncer is a persistent IRC client that you run on a 24/7 computer that connects to your IRC chats for you, then you connect a client to the bouncer.
-This way, the bouncer captures all messages and you can view them right after connecting a client.
-This achieves the "scrollback" that conventional chat clients provide.
-Soju also uses modern extensions to make the IRC experience simpler.
-
-* [Bitlbee](https://www.bitlbee.org) as a bridge to Telegram.
-Bitlbee connects traditional IM networks, such as XMPP to IRC.
-There are plugins for many IM systems, including WhatsApp.
-However, WhatsApp does not have a "supported API", so I am wary to use anything else than official clients.
-But with Telegram, I can integrate IRC with it.
-
-* [Senpai](https://git.sr.ht/~taiite/senpai) is a modern terminal IRC client that is "Soju-aware".
-
-* [Goguma](https://sr.ht/~emersion/goguma/) is a Flutter/Android IRC client that is also "Soju-aware".
-
-With this setup, I can:
-
-* Connect to IRC chats in a friendly manner with modern comforts.
-* Use Telegram from a terminal, avoiding many things I don't like about the Telegram clients (everything is janky, esp. scroll and search. Also information density is terribly low).
-* Access this setup via SSH, so I can use it on "foreign" computers.
-
-# Set up
-
-My [workstation container image](build_workstation) includes Soju, Bitlbee, and the Telegram/Bitlbee adapter.
-I have Python scripts that configure [soju](../scripts/p7s/soju.py) and [Bitlbee](../scripts/p7s/bitlbee.py) as persistent systemd services running as containers.
-
-I use [Senpai](https://git.sr.ht/~delthas/senpai/) through [nix-portable](https://github.com/DavHau/nix-portable).
-
-I install Goguma on my phone using [F-Droid](https://f-droid.org/).
-
-After connecting Senpai to Soju, you talk to a bot called `BouncerServ` to connect to your IRC networks, including the "virtual" IRC network that Bitlbee uses.
-When you join/part channels in any client, Soju takes care of making those actions permanent.
-
-You message a special channel in Bitlbee to create "accounts" that connect to IM networks such as Telegram.
-
-* Take care of following [the Telegram Bitlbee documentation on configuring it for proper nicknames](https://github.com/BenWiederhake/tdlib-purple/#proper-user-names-in-bitlbee).
-* Set the `read-receipts` account property to `false`?
-* Set the `auto_join` channel property to `true`?
-* `chat list telegram-tdlib` lists channels, but only shows topic, not title. Maybe <https://github.com/ars3niy/tdlib-purple/issues/138>?
-
-# Possible improvements
-
-[Gamja](https://sr.ht/~emersion/gamja/) is another "Soju-aware" IRC client that provides a web interface.
-Gamja and Goguma even support OAuth for authentication.
-
-Right now I run Soju on a private network, so I cannot access it outside my VPN.
-For this reason, I use trivial passwords and plain-text protocols.
-For convenience (using Goguma on random networks without connecting to the VPN), I should set up TLS and proper authentication.