Fuera avahi, xss-lock, chrony y nemo; .bashrc más limpio

- inactivo: slock cuando salta el salvapantallas de X (xssstate), en vez
  de xss-lock (glib, D-Bus y logind).
- openntpd en vez de chrony.
- Fuera avahi y nss-mdns (la impresora va por IP fija); quitar limpia
  nsswitch.conf.
- Fuera nemo y upower (y con ellos gvfs y udisks2): las carpetas se abren
  en yazi dentro de st.
- .bashrc: PATH sin repetidos y ex con bsdtar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5v1qWDwgkaVM5kjVHGGh8
This commit is contained in:
Alejandro Guerrero 2026-09-28 15:36:16 +02:00
parent ed6bdc080a
commit 73d005dd30
Signed by: alejandrogs73
GPG key ID: 1CFF10953BEE333C
8 changed files with 110 additions and 63 deletions

View file

@ -54,21 +54,24 @@ for example) and repeated safely:
6. `sistema` (system): copies `sistema/` into `/`, sets up 6. `sistema` (system): copies `sistema/` into `/`, sets up
`wpa_supplicant.conf` so wheel users can use `wpa_cli` without root and `wpa_supplicant.conf` so wheel users can use `wpa_cli` without root and
save networks, enables the runit services (dbus, turnstiled, save networks, enables the runit services (dbus, turnstiled,
wpa_supplicant, dhcpcd, bluetoothd, acpid, chronyd, tlp, automontaje, wpa_supplicant, dhcpcd, bluetoothd, acpid, openntpd, tlp, automontaje,
cupsd), removes NetworkManager, elogind and polkitd (if something asks for cupsd), removes NetworkManager, elogind, chronyd, avahi-daemon (the printer
polkit, like udisks2 or libvirt, D-Bus starts it on its own) and adds the has a fixed IP) and polkitd (if something asks for polkit, like libvirt,
user to the audio, video, input, network, bluetooth, lpadmin (printer D-Bus starts it on its own) and adds the user to the audio, video, input,
management) and `_pipewire` (realtime priority for audio without rtkit) network, bluetooth, lpadmin (printer management) and `_pipewire` (realtime
groups. `doas.conf` is checked with `doas -C` before it is installed with priority for audio without rtkit) groups. `doas.conf` is checked with `doas
mode 400. -C` before it is installed with mode 400.
7. `quitar` (remove): uninstalls what the repo no longer uses because 7. `quitar` (remove): uninstalls what the repo no longer uses because
something else replaces it: sudo (doas), feh (xwallpaper and nsxiv), something else replaces it: sudo (doas), feh (xwallpaper and nsxiv),
gammastep (sct), autorandr (`pantallas`), blueman and pavucontrol (the gammastep (sct), autorandr (`pantallas`), blueman and pavucontrol (the
`bluetooth` and `volumen` scripts), pinentry-gtk (pinentry-dmenu), vlc `bluetooth` and `volumen` scripts), pinentry-gtk (pinentry-dmenu), vlc
(mpv), btop, NetworkManager and tlp-rdw (wpa_supplicant, dhcpcd and the (mpv), btop, NetworkManager and tlp-rdw (wpa_supplicant, dhcpcd and the
`wifi` script), rtkit and elogind (turnstile). sudo can be removed thanks `wifi` script), rtkit, elogind (turnstile), xss-lock (`inactivo`, with
to `sistema/etc/xbps.d/sin-sudo.conf` (base-system depends on it), and it xssstate), chrony (openntpd), avahi and nss-mdns (also removed from
is only removed once `/etc/doas.conf` is installed. `/etc/nsswitch.conf`) and nemo with upower (yazi; gvfs and udisks2 go with
nemo). sudo can be removed thanks to `sistema/etc/xbps.d/sin-sudo.conf`
(base-system depends on it), and it is only removed once `/etc/doas.conf`
is installed.
Afterwards, log out and back in (for the groups) and run `startx`. Afterwards, log out and back in (for the groups) and run `startx`.
@ -88,9 +91,9 @@ elogind is systemd's logind on its own, and it is not needed here:
- Devices (sound, video, input, bluetooth) are reached through the user's - Devices (sound, video, input, bluetooth) are reached through the user's
groups, not through the ACLs elogind gave the active session. groups, not through the ACLs elogind gave the active session.
What stops working: mounting disks from a file manager (udisks2 asks polkit What stops working: mounting disks from a graphical file manager (udisks2
for an active session, and there is none). USB sticks are mounted by asked polkit for an active session; now there is neither a file manager nor
`automontaje`. udisks2). USB sticks are mounted by `automontaje`.
## Rebuilding after changing the config ## Rebuilding after changing the config
@ -201,8 +204,9 @@ preserveonrestart patches).
when the SSH key is already unlocked (so pinentry never pops up) and when the SSH key is already unlocked (so pinentry never pops up) and
retries every hour. `marcadores ya` uploads it right away. To restore: retries every hour. `marcadores ya` uploads it right away. To restore:
Firefox > Bookmarks > Manage bookmarks > Import and Backup > Restore. Firefox > Bookmarks > Manage bookmarks > Import and Backup > Restore.
- After 30 minutes idle the screen locks with slock (`xss-lock`) and one - After 30 minutes idle the screen locks with slock (`inactivo`, which
minute later it turns off. watches the X screensaver with `xssstate`) and one minute later it turns
off. Videos that ask to keep the screen on (mpv, Firefox) prevent it.
- USB sticks and SD cards: the `automontaje` service (runit, as root) mounts - USB sticks and SD cards: the `automontaje` service (runit, as root) mounts
them in `/mnt/LABEL`, or `/mnt/sdXY` if they have no label, and unmounts them in `/mnt/LABEL`, or `/mnt/sdXY` if they have no label, and unmounts
them when removed, with a notification. FAT, exFAT and NTFS are owned by them when removed, with a notification. FAT, exFAT and NTFS are owned by
@ -210,6 +214,10 @@ preserveonrestart patches).
wrote to, run `sync` (or `doas umount /mnt/...`). wrote to, run `sync` (or `doas umount /mnt/...`).
- User folders in English and without accents (`user-dirs.dirs`): - User folders in English and without accents (`user-dirs.dirs`):
Documents, Downloads and Images. Documents, Downloads and Images.
- Folders ("Open folder" in Firefox, `xdg-open`) open in yazi inside st
(`home/.local/share/applications/yazi-st.desktop`).
- `ex file...` extracts almost anything with `bsdtar` (a `.bashrc`
function).
## Notes ## Notes

View file

@ -51,20 +51,22 @@ Hace siete pasos, que también se pueden lanzar por separado
6. `sistema`: copia `sistema/` en `/`, prepara `wpa_supplicant.conf` para que 6. `sistema`: copia `sistema/` en `/`, prepara `wpa_supplicant.conf` para que
los de wheel usen `wpa_cli` sin root y guarden redes, activa los servicios los de wheel usen `wpa_cli` sin root y guarden redes, activa los servicios
de runit (dbus, turnstiled, wpa_supplicant, dhcpcd, bluetoothd, acpid, de runit (dbus, turnstiled, wpa_supplicant, dhcpcd, bluetoothd, acpid,
chronyd, tlp, automontaje, cupsd), quita NetworkManager, elogind y polkitd openntpd, tlp, automontaje, cupsd), quita NetworkManager, elogind, chronyd,
(si algo pide polkit, como udisks2 o libvirt, D-Bus lo arranca solo) y avahi-daemon (la impresora va por IP fija) y polkitd (si algo pide polkit,
añade el usuario a los grupos audio, video, input, network, bluetooth, como libvirt, D-Bus lo arranca solo) y añade el usuario a los grupos audio,
lpadmin (para gestionar impresoras) y `_pipewire` (prioridad de tiempo real video, input, network, bluetooth, lpadmin (para gestionar impresoras) y
para el audio sin rtkit). `doas.conf` se valida con `doas -C` antes de `_pipewire` (prioridad de tiempo real para el audio sin rtkit). `doas.conf`
instalarlo con modo 400. se valida con `doas -C` antes de instalarlo con modo 400.
7. `quitar`: desinstala lo que el repo ya no usa porque lo sustituye otra 7. `quitar`: desinstala lo que el repo ya no usa porque lo sustituye otra
cosa: sudo (doas), feh (xwallpaper y nsxiv), gammastep (sct), autorandr cosa: sudo (doas), feh (xwallpaper y nsxiv), gammastep (sct), autorandr
(`pantallas`), blueman y pavucontrol (scripts `bluetooth` y `volumen`), (`pantallas`), blueman y pavucontrol (scripts `bluetooth` y `volumen`),
pinentry-gtk (pinentry-dmenu), vlc (mpv), btop, NetworkManager y tlp-rdw pinentry-gtk (pinentry-dmenu), vlc (mpv), btop, NetworkManager y tlp-rdw
(wpa_supplicant, dhcpcd y el script `wifi`), rtkit y elogind (turnstile). (wpa_supplicant, dhcpcd y el script `wifi`), rtkit, elogind (turnstile),
sudo se puede quitar gracias a `sistema/etc/xbps.d/sin-sudo.conf` xss-lock (`inactivo`, con xssstate), chrony (openntpd), avahi y nss-mdns
(base-system depende de él), y solo se quita si `/etc/doas.conf` ya está (también los quita de `/etc/nsswitch.conf`) y nemo con upower (yazi; con
instalado. nemo se van gvfs y udisks2). sudo se puede quitar gracias a
`sistema/etc/xbps.d/sin-sudo.conf` (base-system depende de él), y solo se
quita si `/etc/doas.conf` ya está instalado.
Después hay que cerrar sesión y volver a entrar (por los grupos) y lanzar Después hay que cerrar sesión y volver a entrar (por los grupos) y lanzar
`startx`. `startx`.
@ -85,9 +87,9 @@ elogind es el logind de systemd por separado, y aquí sobra:
- Los dispositivos (sonido, vídeo, entrada, bluetooth) van por los grupos del - Los dispositivos (sonido, vídeo, entrada, bluetooth) van por los grupos del
usuario, no por las ACL que ponía elogind a la sesión activa. usuario, no por las ACL que ponía elogind a la sesión activa.
Lo que deja de ir: montar discos desde un gestor de archivos (udisks2 pide a Lo que deja de ir: montar discos desde un gestor de archivos gráfico (udisks2
polkit una sesión activa, que ya no hay). Las memorias USB las monta pedía a polkit una sesión activa; ya no hay ni gestor ni udisks2). Las
`automontaje`. memorias USB las monta `automontaje`.
## Recompilar tras cambiar la configuración ## Recompilar tras cambiar la configuración
@ -198,8 +200,9 @@ ventanas (parches restartsig y preserveonrestart).
con la clave SSH desbloqueada (para no sacar pinentry) y lo reintenta cada con la clave SSH desbloqueada (para no sacar pinentry) y lo reintenta cada
hora. `marcadores ya` la sube en el momento. Para restaurar: Firefox > hora. `marcadores ya` la sube en el momento. Para restaurar: Firefox >
Marcadores > Administrar marcadores > Importar y respaldar > Restaurar. Marcadores > Administrar marcadores > Importar y respaldar > Restaurar.
- Tras 30 minutos sin tocar nada se bloquea con slock (`xss-lock`) y un - Tras 30 minutos sin tocar nada se bloquea con slock (`inactivo`, que mira
minuto después se apaga la pantalla. el salvapantallas de X con `xssstate`) y un minuto después se apaga la
pantalla. Los vídeos que piden no apagarla (mpv, Firefox) lo evitan.
- Memorias USB y tarjetas SD: el servicio `automontaje` (runit, como root) - Memorias USB y tarjetas SD: el servicio `automontaje` (runit, como root)
las monta en `/mnt/ETIQUETA`, o en `/mnt/sdXY` si no tienen etiqueta, y las monta en `/mnt/ETIQUETA`, o en `/mnt/sdXY` si no tienen etiqueta, y
las desmonta al sacarlas, con una notificación. FAT, exFAT y NTFS quedan a las desmonta al sacarlas, con una notificación. FAT, exFAT y NTFS quedan a
@ -207,6 +210,10 @@ ventanas (parches restartsig y preserveonrestart).
memoria en la que se ha escrito, `sync` (o `doas umount /mnt/...`). memoria en la que se ha escrito, `sync` (o `doas umount /mnt/...`).
- Carpetas del usuario en inglés y sin tildes (`user-dirs.dirs`): - Carpetas del usuario en inglés y sin tildes (`user-dirs.dirs`):
Documents, Downloads e Images. Documents, Downloads e Images.
- Las carpetas ("Abrir carpeta" en Firefox, `xdg-open`) se abren en yazi
dentro de st (`home/.local/share/applications/yazi-st.desktop`).
- `ex archivo...` descomprime casi cualquier cosa con `bsdtar` (función de
`.bashrc`).
## Notas ## Notas

View file

@ -3,8 +3,15 @@
# ===================================================================== # =====================================================================
# --- 1. Entorno y Rutas --- # --- 1. Entorno y Rutas ---
# Priorizar binarios locales y scripts de usuario # Priorizar binarios locales y scripts de usuario. Si ya estaban (un bash
export PATH="$HOME/.local/bin:/usr/local/bin:$PATH" # dentro de otro), se quitan antes para no repetirlos.
for d in /usr/local/bin "$HOME/.local/bin"; do
PATH=":$PATH:"
PATH=${PATH//:$d:/:}
PATH=${PATH#:}
PATH="$d:${PATH%:}"
done
export PATH
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
export GPG_TTY=$(tty) export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1 gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1
@ -71,27 +78,20 @@ alias esp32='doas chmod a+rw /dev/ttyUSB0'
# --- 5. Funciones Útiles --- # --- 5. Funciones Útiles ---
# Comando 'ex': Descomprime LITERALMENTE CUALQUIER COSA # ex: descomprime lo que sea. bsdtar se entiende con tar (gz, bz2, xz, zst),
# Uso: ex archivo.zip | ex archivo.tar.gz # zip, 7z, rar e iso; los comprimidos sueltos, con su herramienta.
# Uso: ex archivo.zip [otro.tar.gz ...]
ex() { ex() {
if [ -f "$1" ]; then for f; do
case $1 in case $f in
*.tar.bz2) tar xjf "$1" ;; *.tar|*.tar.*|*.t?z|*.tbz2|*.zip|*.7z|*.rar|*.iso) bsdtar -xf "$f" ;;
*.tar.gz) tar xzf "$1" ;; *.gz) gunzip -k "$f" ;;
*.bz2) bunzip2 "$1" ;; *.bz2) bunzip2 -k "$f" ;;
*.rar) unrar x "$1" ;; *.xz) unxz -k "$f" ;;
*.gz) gunzip "$1" ;; *.zst) unzstd "$f" ;;
*.tar) tar xf "$1" ;; *) echo "ex: no sé descomprimir '$f'" >&2 ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1";;
*.7z) 7z x "$1" ;;
*) echo "'$1' formato no reconocido por la función ex()" ;;
esac esac
else done
echo "'$1' no es un archivo válido"
fi
} }
# Forzar IPv4 en Nix (IPv6 del sistema está roto) # Forzar IPv4 en Nix (IPv6 del sistema está roto)

View file

@ -1,4 +1,5 @@
[Default Applications] [Default Applications]
inode/directory=yazi-st.desktop
x-scheme-handler/http=firefox.desktop x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop x-scheme-handler/https=firefox.desktop
x-scheme-handler/chrome=firefox.desktop x-scheme-handler/chrome=firefox.desktop
@ -11,6 +12,7 @@ application/x-extension-xhtml=firefox.desktop
application/x-extension-xht=firefox.desktop application/x-extension-xht=firefox.desktop
[Added Associations] [Added Associations]
inode/directory=yazi-st.desktop;
x-scheme-handler/http=firefox.desktop; x-scheme-handler/http=firefox.desktop;
x-scheme-handler/https=firefox.desktop; x-scheme-handler/https=firefox.desktop;
x-scheme-handler/chrome=firefox.desktop; x-scheme-handler/chrome=firefox.desktop;

12
home/.local/bin/inactivo Executable file
View file

@ -0,0 +1,12 @@
#!/bin/sh
# Bloquea con slock cuando salta el salvapantallas de X (xset s en .xinitrc:
# 30 minutos sin tocar nada). Mira el estado con xssstate cada 5 s. Los
# vídeos que piden no apagar la pantalla (mpv, Firefox) paran el salvapantallas
# y así tampoco bloquea. Al suspender ya bloquea el hook de zzz.
while :; do
if [ "$(xssstate -s)" = on ] && ! pgrep -x slock >/dev/null; then
slock
fi
sleep 5
done

View file

@ -0,0 +1,8 @@
[Desktop Entry]
Type=Application
Name=yazi
Comment=Carpetas con yazi en st (para xdg-open y Firefox)
Exec=st -e yazi %f
Terminal=false
MimeType=inode/directory;
NoDisplay=true

View file

@ -35,10 +35,10 @@ luz &
bateria & bateria &
marcadores & marcadores &
# Bloquear con slock tras 30 minutos sin tocar nada, y apagar la pantalla un # Bloquear con slock tras 30 minutos sin tocar nada (salvapantallas de X,
# minuto después. Al suspender ya bloquea el hook de zzz (--ignore-sleep). # lo vigila inactivo) y apagar la pantalla un minuto después.
xset s 1800 1800 xset s 1800 1800
xset dpms 0 0 1860 xset dpms 0 0 1860
xss-lock --ignore-sleep -- slock & inactivo &
exec dwm exec dwm

View file

@ -18,27 +18,28 @@ PAQUETES="
libXrender-devel xorgproto imlib2-devel zlib-devel libxcrypt-devel libXrender-devel xorgproto imlib2-devel zlib-devel libxcrypt-devel
xorg xinit setxkbmap xrandr dbus turnstile xorg xinit setxkbmap xrandr dbus turnstile
picom dunst libnotify xwallpaper nsxiv maim xclip sct xss-lock picom dunst libnotify xwallpaper nsxiv maim xclip sct xssstate
pipewire wireplumber libspa-bluetooth alsa-pipewire pipewire wireplumber libspa-bluetooth alsa-pipewire
wpa_supplicant dhcpcd bluez acpid chrony tlp wpa_supplicant dhcpcd bluez acpid openntpd tlp
cups cups-filters hplip cups cups-filters hplip
font-firacode nerd-fonts-symbols-ttf papirus-icon-theme papirus-folders font-firacode nerd-fonts-symbols-ttf papirus-icon-theme papirus-folders
sassc gnome-themes-extra qt5ct qt6ct sassc gnome-themes-extra qt5ct qt6ct
opendoas gnupg pinentry-dmenu opendoas gnupg pinentry-dmenu
firefox thunderbird mpv neovim git fuse-sshfs unzip firefox thunderbird mpv neovim git fuse-sshfs unzip
yazi file ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg ImageMagick yazi file bsdtar ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg ImageMagick
" "
SUCKLESS="dwm st dmenu slstatus slock scroll clipmenu" SUCKLESS="dwm st dmenu slstatus slock scroll clipmenu"
# Tema GTK Everforest, en una versión fija para que siempre salga igual # Tema GTK Everforest, en una versión fija para que siempre salga igual
GTK_TEMA_REPO=https://github.com/Fausto-Korpsvart/Everforest-GTK-Theme GTK_TEMA_REPO=https://github.com/Fausto-Korpsvart/Everforest-GTK-Theme
GTK_TEMA_COMMIT=9b8be4d6648ae9eaae3dd550105081f8c9054825 GTK_TEMA_COMMIT=9b8be4d6648ae9eaae3dd550105081f8c9054825
SERVICIOS="dbus turnstiled wpa_supplicant dhcpcd bluetoothd acpid chronyd tlp automontaje cupsd" SERVICIOS="dbus turnstiled wpa_supplicant dhcpcd bluetoothd acpid openntpd tlp automontaje cupsd"
# La red la llevan wpa_supplicant y dhcpcd. polkitd no hace falta como # La red la llevan wpa_supplicant y dhcpcd. polkitd no hace falta como
# servicio: si algo lo pide (udisks2, libvirt), D-Bus lo arranca. turnstiled # servicio: si algo lo pide (libvirt), D-Bus lo arranca. turnstiled sustituye
# sustituye a elogind. # a elogind y openntpd a chronyd. avahi-daemon (mDNS) no hace falta: la
SERVICIOS_FUERA="NetworkManager polkitd elogind" # impresora va por IP fija.
SERVICIOS_FUERA="NetworkManager polkitd elogind chronyd avahi-daemon"
# _pipewire da prioridad de tiempo real al audio sin rtkit # _pipewire da prioridad de tiempo real al audio sin rtkit
# (/etc/security/limits.d/25-pw-rlimits.conf, de pipewire). # (/etc/security/limits.d/25-pw-rlimits.conf, de pipewire).
GRUPOS="audio video input network bluetooth lpadmin _pipewire" GRUPOS="audio video input network bluetooth lpadmin _pipewire"
@ -46,11 +47,14 @@ GRUPOS="audio video input network bluetooth lpadmin _pipewire"
# nsxiv), gammastep (sct), autorandr (pantallas), blueman y pavucontrol # nsxiv), gammastep (sct), autorandr (pantallas), blueman y pavucontrol
# (scripts bluetooth y volumen), pinentry-gtk (pinentry-dmenu), vlc (mpv), # (scripts bluetooth y volumen), pinentry-gtk (pinentry-dmenu), vlc (mpv),
# NetworkManager (wpa_supplicant, dhcpcd y el script wifi), rtkit (el grupo # NetworkManager (wpa_supplicant, dhcpcd y el script wifi), rtkit (el grupo
# _pipewire) y elogind (turnstile; Xorg arranca como root con Xorg.wrap y la # _pipewire), elogind (turnstile; Xorg arranca como root con Xorg.wrap y la
# tapa y los botones ya los lleva acpid). # tapa y los botones ya los lleva acpid), xss-lock (inactivo, con xssstate),
# chrony (openntpd), avahi y nss-mdns (nada los usa) y nemo con upower (yazi;
# con nemo se van gvfs y udisks2).
QUITAR=" QUITAR="
sudo feh gammastep autorandr blueman pavucontrol pinentry-gtk sudo feh gammastep autorandr blueman pavucontrol pinentry-gtk
gtk-engine-murrine vlc btop NetworkManager tlp-rdw rtkit elogind gtk-engine-murrine vlc btop NetworkManager tlp-rdw rtkit elogind
xss-lock chrony avahi nss-mdns nemo upower
" "
msg() { printf '\033[1;32m==>\033[0m %s\n' "$*"; } msg() { printf '\033[1;32m==>\033[0m %s\n' "$*"; }
@ -260,6 +264,12 @@ quitar() {
# shellcheck disable=SC2086 # shellcheck disable=SC2086
root xbps-remove -Ry $fuera root xbps-remove -Ry $fuera
# Sin nss-mdns, "mdns" sobra en la línea hosts de nsswitch.conf
if grep -q '^hosts:.*mdns' /etc/nsswitch.conf; then
root sed -i '/^hosts:/s/ mdns[a-z0-9_]*\( \[NOTFOUND=return\]\)\{0,1\}//g' \
/etc/nsswitch.conf
fi
# Lo que puso aquí una versión anterior de sistema/ para elogind # Lo que puso aquí una versión anterior de sistema/ para elogind
if [ -e /etc/elogind/logind.conf.d/10-acpid.conf ]; then if [ -e /etc/elogind/logind.conf.d/10-acpid.conf ]; then
root rm /etc/elogind/logind.conf.d/10-acpid.conf root rm /etc/elogind/logind.conf.d/10-acpid.conf