diff options
| author | alex <alex@pdp7.net> | 2026-06-18 22:32:33 +0200 |
|---|---|---|
| committer | alex <alex@pdp7.net> | 2026-06-18 22:34:30 +0200 |
| commit | ae29e819661173d8e4d1f8506cd159636751f184 (patch) | |
| tree | bb3fdccc9ec3b054d57b9959ae23eaa8f3a40fbb | |
| parent | 1e3dd12537327407705149e3a8739e18fa539d52 (diff) | |
Remove workstationmaster
Closes #779
| -rw-r--r-- | .github/workflows/build-workstation.yml | 22 | ||||
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | blog/content/notes/index.gmi | 1 | ||||
| -rw-r--r-- | blog/content/notes/tech/modern-irc.gmi | 31 | ||||
| -rw-r--r-- | scripts/README.md | 2 | ||||
| -rw-r--r-- | scripts/p7s/bitlbee.py | 31 | ||||
| -rw-r--r-- | scripts/pyproject.toml | 1 | ||||
| -rw-r--r-- | workstation/README.md | 43 | ||||
| m--------- | workstation/arch-container-builder | 0 | ||||
| -rwxr-xr-x | workstation/build_workstation | 35 | ||||
| -rw-r--r-- | workstation/modern_irc.md | 60 |
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 }} @@ -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. |
