Commit Graph
69 Commits
Author SHA1 Message Date
thomas.koppandClaude Opus 5 035c88c31c feat: package lists per role, with a check-and-install script
The lists are derived rather than typed. beastix has 512 explicit packages -
years of experiments among them - so taking that as "what this machine needs"
would be meaningless. curate.sh combines four usage signals, each of which
alone has a blind spot: shell history sees no GUI application, KDE's activity
database sees no chat client, autostart sees only what starts by itself, and
flatpak entries never appear in pacman -Qqe at all. That reduces 512 to 62.

The split follows the data: what beastix and shron both have becomes the base,
the rest of beastix becomes desktop, shron's own becomes server.

base-devel is one entry in the server list rather than its 26 members. It
stopped being a package group in 2022 - "pacman -Sg base-devel" now fails
outright - and is a meta package today. base, grub and linux-lts are dropped
entirely; they arrive with the operating system.

packages.sh never removes anything. Extras are reported and left alone, for
the same reason the BookStack playbook refuses to: on a server, individual
packages carry mail and web services. It avoids process substitution because
/bin/sh is dash on Debian and a POSIX-mode bash on macOS, and this has to run
on both.

Verified on beastix: 62 wanted, 0 missing, 450 extra reported and untouched;
install is a no-op.

The server list is a snapshot from 2026-08-06 and wants re-reading when shron
is reachable again - its login session has since expired.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 16:11:45 +02:00
thomas.koppandClaude Opus 5 d215dfefc5 feat: rebuild master from the live desktop, and add the KDE configuration
master still carried the 2021 tree. Task 6 does a checkout over $HOME, so nine
of those files would have overwritten the current configuration rather than
updated it - i3, sway, dunst, nvim, vim and tmux, all diverged by years. The
plan had no step for this; the design warned about it and then nothing
implemented the warning.

The nine are now taken from the live machine verbatim, and the 31 files with no
counterpart there are dropped. Everything remains on archive/2021-i3-sway.
README.md and .scripts/install.sh are kept despite having no live counterpart:
the first documents the repository and the second is what ls.shron.de/dotconf
serves, so deleting it would break that link.

Verified byte-identical to the live files afterwards, which is the point - a
checkout on this machine must change nothing.

KDE has been in daily use for a while with nothing backing it up. Eighteen rc
files and the nine autostart entries are added: window rules and shortcuts,
notification behaviour, the lock screen, and the panel layout in
plasma-org.kde.plasma.desktop-appletsrc. That last one is rewritten by
plasmashell whenever anything moves, so it will produce churn - kept anyway,
since a lost panel layout is the most tedious thing here to rebuild by hand.

.config/kdeconnect/ is excluded rather than added. It holds the device
certificate and its private key, and is pairing state rather than
configuration - the only place under .config that carries a secret.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 15:53:50 +02:00
thomas.koppandClaude Opus 5 ce560c315d feat: split zshrc into a stub and role-aware fragments
Load order is the substance of this change, and two attempts got it wrong in
the same way. oh-my-zsh consumes both the plugins array and the theme while it
is being sourced, so anything set afterwards is silently ignored. The plan had
plugins in the stub but the theme in the role file, which produced a shell
reporting ZSH_THEME=powerlevel10k while running without powerlevel10k at all -
132 of its functions missing and nobody any the wiser. Plugins and prompt are
now both resolved before oh-my-zsh, the latter in 05-prompt.zsh.

Portability is handled by asking whether a command exists rather than by
duplicating files per role. "alias ls='lsd'" turns ls into a broken command on
a machine without lsd, and the Mac is such a machine; the yay aliases and
helpers are gated the same way. That keeps one shared base instead of three
diverging copies.

The plan also guessed the plugin list as (git fzf). It is actually seven
entries, so five would have vanished - among them signal-keyring, which turned
out to be a local custom plugin present on this machine only. Naming it
elsewhere means an oh-my-zsh warning at every login, and its content is a
verbatim copy of the gnome-keyring block already in .zshrc, so it ran twice.
The inline block stays, in the desktop role; the plugin is dropped.

Dead code removed rather than carried over:
  - PYTHONPATH pointed at /usr/lib/python3.9/site-packages. Python here is
    3.14 and that directory does not exist.
  - XDG_SESSION_TYPE was forced to x11 and then tested for "wayland" six lines
    below, so that branch could never be taken. The variable belongs to the
    session; overriding it lies to everything that reads it.
  - drm() was defined twice, the first losing to the second on every start.
  - PATH carried ~/bin, ~/.scripts and /usr/X11R6/bin, none of which exist.
    Entries are added only if the directory is there.

Verified against the live configuration in an isolated ZDOTDIR: 277 aliases and
263 functions on both sides, none missing, and powerlevel10k loading for all
three roles with the intended colour.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 15:41:52 +02:00
thomas.koppandClaude Opus 5 49357eced4 chore: ignore secrets, machine-local files and runtime state
The bare repo runs with status.showUntrackedFiles=no, so this is not about
quietening git status - it guards against an absent-minded "config add" over a
home directory full of credentials. It does not stop "config add -f"; nothing
here protects against intent.

mailsecrets.py is listed because that is the existing pattern: the waybar mail
module imports its IMAP credentials from it, and the file has never been
committed. That has held so far by discipline alone.

Private keys are excluded and public ones re-included. Verified with
check-ignore rather than assumed - reading its exit code alone is misleading,
since a matching negative pattern also exits 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 15:28:32 +02:00
thomas.koppandClaude Opus 5 b354c356ae docs: implementation plan for the multi-role layout
Nine tasks, each with the verification that has to pass before the next one
starts. The ordering is dictated by risk rather than convenience: the archive
branch first so the 2021 state is never at stake, beastix before the two remote
machines because it is the source, and the Mac last because it is the only
platform whose PATH problem cannot be reproduced locally.

Every task verifies against an isolated ZDOTDIR before the live .zshrc is
touched, and the two remote rollouts require a second SSH session to stay open.
A broken shell config on shron means no remote login on a production mail
server, so the role file is written before the checkout, not after - otherwise
the default applies and the server comes up on the desktop profile.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 23:46:41 +02:00
thomas.koppandClaude Opus 5 94b6ba3c33 docs: design for multi-role dotfiles
The repository stopped matching reality in April 2021. It describes an i3/sway
desktop that no longer exists - the display menu drives xrandr outputs the
machine does not have - while .zshrc alone drifted by 360 lines. Checking out
master would overwrite five years of work rather than update anything.

Three machines, no shared base: beastix (Arch/KDE), shron (Arch, headless), a
Mac. Common .zshrc lines between all three: four.

Keeps the existing bare-repo-and-alias method. The role is resolved when the
shell starts, not when files are deployed, so no deployment tooling is needed
at all; every machine carries every file and sources one of them.

Package lists are derived from usage data - shell history, the KDE activity
database, autostart, flatpak - because each signal alone has a blind spot and
pacman -Qqe lists 512 packages including years of experiments. That yields 62.

Plain files and plain lists throughout, so a later move to home-manager stays
cheap.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 23:43:59 +02:00
templis cd6dd42178 „README.md“ ändern 2021-04-04 05:08:32 +02:00
templis 46917cfe91 „.scripts/install.sh“ ändern 2021-01-08 04:50:46 +01:00
templis 89bf6f0215 „README.md“ ändern 2021-01-08 04:47:12 +01:00
templis 246d477ea5 revision my zshrc
there where an old pythonpath and a function wasn't correct
2021-01-08 03:38:00 +01:00
templis a814619c49 deleted nevim plugins, because they where handled by plug 2021-01-08 03:21:24 +01:00
templis e1a00242ae „.config/nvim/.netrwhist“ löschen 2021-01-08 03:17:59 +01:00
templis 5ee16baa2a „README.md“ ändern 2021-01-08 03:15:14 +01:00
templis 35ca9509d4 „README.md“ ändern 2021-01-08 03:15:01 +01:00
templis e8e53a60ac „README.md“ ändern 2021-01-08 03:14:43 +01:00
templis ca8609fa4a added neovim plugins to ignorelist 2021-01-08 03:13:13 +01:00
templis e4ef8006bc accidently deleted volume.sh 2021-01-08 03:10:01 +01:00
templis 6ce3225746 „README.md“ ändern 2021-01-08 02:54:53 +01:00
templis 66b5881b96 „README.md“ ändern 2021-01-08 02:53:19 +01:00
templis 784bb7ac3c „README.md“ ändern 2021-01-08 02:45:55 +01:00
templis 9f06dffab3 Merge branch 'master' of https://git.opennerds.org/templis/dotconfs 2021-01-08 02:38:53 +01:00
templis 77a551bcf1 added a environment variable to start firefox with enabled hw-
acceleration

added long forgotten configs for my tmux setup
2021-01-08 02:35:26 +01:00
templis 2e4439941a „.scripts/install.sh“ hinzufügen 2021-01-08 02:26:30 +01:00
templis e93241d81e changed some colors in dunstrc 2021-01-04 07:04:25 +01:00
templis 8b00fe1082 dunst konfiguriert, ein lautstärkescript für dunst geadded und allgemein änderungen/neuerungen etc. 2021-01-02 14:48:53 +01:00
templis c3179d6141 Add wofi 2020-02-18 20:57:19 +01:00
templis da7e23541c Add waybar 2020-02-18 20:57:02 +01:00
templis ff109544ab Add swaynag 2020-02-18 20:56:21 +01:00
templis 9ae600399b Add sway 2020-02-18 20:56:02 +01:00
templis b5ee6b87de readme.md 2020-02-18 20:52:20 +01:00
templis 37ec41c77e „READM“ löschen 2020-02-18 20:49:46 +01:00
templis f4b5e118d0 „READM“ ändern 2020-02-18 20:48:51 +01:00
templis a685d76308 „READM“ ändern 2020-02-18 20:48:33 +01:00
templis fabff07175 „READM“ hinzufügen 2020-02-18 20:48:11 +01:00
templis cbae53227d Add nvim 2020-02-18 20:27:08 +01:00
templis 9242964a1b Add i3status 2020-02-18 20:24:54 +01:00
templis 966fd98345 Add compton 2020-02-18 20:23:14 +01:00
templis 08f0fc508b Add dunst 2020-02-18 20:22:50 +01:00
templis a776435423 Add i3 2020-02-18 20:21:17 +01:00
templis f94cdcb4a7 Add zsh-dircolors 2020-02-18 20:20:05 +01:00
templis e53b96708e Add vimrc 2020-02-18 20:18:55 +01:00
templis 82cf38fe4c Add zshrc 2020-02-18 20:18:14 +01:00
templis 7635af3def aktualisierte configs 2020-02-18 20:16:15 +01:00
templis 4ed8ae198d many changes in neovim init.vim 2018-08-02 13:48:23 +02:00
templis 44deddba85 added some changes 2018-07-29 03:09:44 +02:00
templis b1a64a266c added some plugins 2018-07-29 02:10:07 +02:00
templis c95e3339c2 Ein paar änderungen
Vorallen angefangen neovim from scratch zu bauen
2018-07-29 01:50:51 +02:00
templis aa563a61c3 changed alias vi to open neovim instead of vim 2018-05-15 00:43:32 +02:00
templis f5648c3850 tmux config hinzugefügt 2018-04-30 01:17:00 +02:00
templis fbb0ef542c Solarized config geadded 2018-04-30 01:10:17 +02:00