dotfiles
Table of Contents
- 1. dotfiles
- 1.1. GitHub - webpro/awesome-dotfiles: A curated list of dotfiles resources.
- 1.2. Resources
- 1.3. Docker para instalar dependencias de desarrollo
- 1.4. Distrobox - Ejecutar distintas distros
- 1.5. Dockerfile ejecutable y Cosmopolitan Libc y nix-shell shebang
- 1.6. Ejecutar distintos tipos de paquetes en una misma distro
- 1.7. Ideas de cosas para instalar / probar / configurar idea
- 1.7.1. Things to be installed
- 1.7.2. includeIf for creating different git identities | Codexpedia
- 1.7.3. espanso y movidas de remote vim
- 1.7.4. Instalar Postman project idea someday_20230330
- 1.7.5. How Does Free Graphic Design Software Stack Up?
- 1.7.6. Redirigir los repos de github a dotfiles project idea someday_20230330
- 1.7.7. Añadir tema claro y poder cambiar entre temas claro/ oscuro project idea someday_20230330
- 1.7.8. Crearme un Vagrant con mi config (conectarme a máquina virtual con toda mi config) project idea maybe_20230330
- 1.7.9. ajeetdsouza/zoxide: A smarter cd command. Supports all major shells.
- 1.7.10. Alternativas Sourcetrail project idea try someday_20230330
- 1.7.11. Instalar todo esto de rust
- 1.7.12. Dunst - ArchWiki
- 1.7.13. Vim File Manager
- 1.7.14. An Interactive Python Cheat Sheet That Brings The Answer To You
- 1.8. config from org-mode
- 1.9. dotfiles de otra gente
- 1.10. Configuration on-the-fly in a remote terminal with nothing installed
- 1.11. Scripts para activar/desactivar servicios que más consumen
- 1.12. Pantalla con xrandr
- 1.13. Best of .bashrc | datagubbe.se POSIX tools to have in any system
- 1.14. VMs con Windows y demás
- 1.15. Ejecutar distintas versiones de un mismo lenguaje
- 1.16. Makefiles
- 1.17. UEFI keys
- 1.18. virt-manager en Arch linux
- 1.19. Pacman / Paru
- 1.19.1. Resumen de Pacman
- 1.19.2. Buscar en qué paquete está un comando (Pacman)
- 1.19.3. Revertir paquetes
- 1.19.4. Instalar paquetes antiguos
- 1.19.5. Errores de librerías binarias
- 1.19.6. Rollback / Transactional updates in Arch Linux
- 1.19.6.1. Arch Linux Archive - ArchWiki
- 1.19.6.2. Transactional package management for arch? : r/archlinux
- 1.19.6.3. History of transactions with pacman? : r/archlinux
- 1.19.6.4. Garuda Linux brings an important feature to the Arch world: snapshots and rollback
- 1.19.6.5. Pin all your commits in paru?
- 1.19.6.6. Custom PKGBUILD repositories in paru
- 1.19.7. How To Ignore A Package From Being Upgraded In Arch Linux (like pinning packages)
- 1.19.8. Actualizar después de 2 semanas
- 1.19.9. Mantenimiento de Pacman
- 1.19.10. if you use AUR packages that depend on a library then you need to rebuild those packages when the library goes up by a major version.
- 1.19.11. Rebuild package
- 1.19.12. https://github.com/maximbaz/rebuild-detector
- 1.19.13. Preventing soname breakages in personal repositories : archlinux
- 1.19.14. paru / pacman consume demasiada CPU
- 1.19.15. Cambiar dependencias de paquetes
- 1.19.16. 08:58 Instalar CUDA en Arch Linux
- 1.19.17. Rust para ripgrep compilado
- 1.19.18. debtap → convertir .deb a paquetes de Pacman
- 1.20. apt
- 1.21. Alternativas a AUR en Ubuntu/Debian
- 1.22. Immutable / Anti-hysteresis distros
- 1.23. Dependency Hell
- 1.24. Dokuwiki nueva instalación
1. dotfiles
GOAL: Have a syncronized config in +KUbuntu+ Arch Linux when you install a new computer (programming, emacs)
1.2. Resources
1.2.1. https://wiki.archlinux.org/index.php/Dotfiles#Tools
1.2.1.1. https://deadc0de.re/dotdrop/
- [↑] HANDLE SENSITIVE INFORMATION → handy if KDE stores config and sensitive data together, but I would have to have a separate unencrypted repo
- [↓] Uses Jinja2 (against Jinja2)
1.2.1.2. GNU Stow to save global config
1.2.1.3. GNU Stow
Cada carpeta en un repo de dotfiles se linka a $HOME
tmux/.config/tmux → $HOME/.config/tmux/config.
1.2.1.4. CANCELLED Usar simplemente git bare
- https://www.atlassian.com/git/tutorials/dotfiles
- ↑ No extra tooling, no symlinks
1.2.1.5. Chezmoi
1.2.2. Get the lastest release of a github package
1.2.3. Search active forks of a github repo
1.2.4. Gestión de instalaciones en $HOME
https://github.com/neovim/neovim/issues/1415#issuecomment-63947728
I have a snippet in my .zprofile
that greatly helps managing home installations. I use it to install almost every software that is not part of my distro’s package manager(I have about 20 packages installed there at this time):
prefixes_dir="$HOME/.user-prefixes" if [[ -d $prefixes_dir ]]; then for dir in "$prefixes_dir"/*; do dir=${dir:A} if [[ -d "$dir/bin" ]]; then PATH="$dir/bin:$PATH" fi if [[ -d "$dir/share/man" ]]; then MANPATH="$dir/share/man:$MANPATH" fi if [[ -d "$dir/lib" ]]; then LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$dir/lib" fi if [[ -d "$dir/lib/pkgconfig" ]]; then PKG_CONFIG_PATH="$dir/lib/pkgconfig:$PKG_CONFIG_PATH" fi done fi unset dir prefixes_dir export PATH MANPATH LD_LIBRARY_PATH PKG_CONFIG_PATH
This will adjust PATH
, MANPATH
, LD_LIBRARY_PATH
and PKG_CONFIG_PATH
based on ~/.user-prefixes
subdirectories. In a few words, this allows me to install things in ~/.user-prefixes
that can easily be removed. This is how I install nvim:
make CMAKE_EXTRA_FLAGS='-DCMAKE_INSTALL_PREFIX=$HOME/.user-prefixes/nvim' #+END_SRC BASH and this is how I uninstall it: #+BEGIN_SRC BASH rm -rf ~/.user-prefixes/nvim #+END_SRC BASH
http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html → este dice usar GNU Stow para esto también. Interesante
1.2.5. XDG Base Directory Specification
1.2.5.1. What are the step to move all your dotfiles into XDG directories? - Super User
1.2.5.2. Make Vim obey XDG Base Directory specification | Joren
1.2.6. http://dotfiles.github.io/
1.2.7. KDE stuff
1.2.7.1. reddit thread
Real issue is that most of the time KDE is mixing application state and settings in one file. How do you version-control such files? That’s what I call annoying.
Also related to this is a that a lot of potentially sensitive information like list of recently opened files is stored in those plain text config files and is not being cleared by sweeper app.
1.2.7.2. kde-configuration-files
1.3. Docker para instalar dependencias de desarrollo
Aquí tengo una lista de cosas que se pueden ejecutar, y qué volumen tiene que estar montado para tener persistencia
https://github.com/tighten/takeout/tree/main/app/Services
https://github.com/fhsinchy/jeeves/blob/master/data.py
https://github.com/bluxmit/alnoda-workspaces → este te viene con dockers ya precompilados (también es más complicado de reutilizar al no tirar de imágenes oficiales)
Por ejemplo no está jenkins, aquí pone cómo hacerlo:
Jupyter using docker
Postgres añadir las extensiones: ./init_pgvector.sql:/docker-entrypoint-initdb.d/init_pgvector.sql
Al final esto es equivalente a kubernetes/docker-compose/orquestadores de contenedores: el entorno de producción es el mismo que el de desarrollo y tira todo del mismo yaml
También devcontainers está haciendo lo mismo: https://github.com/devcontainers
1.4. Distrobox - Ejecutar distintas distros
- Distrobox Is Basically A Linux Subsystem For Linux - YouTube
- GitHub - 89luca89/distrobox: Use any linux distribution inside your terminal. Enable both backward and forward compatibility with software and freedom to use whatever distribution you’re more comfortable with
- distrobox/useful_tips.md at main · 89luca89/distrobox · GitHub
- Create a distrobox with a custom HOME directory to avoid collisions between your dotfiles and distrobox dotfiles
- Create a distrobox with a custom HOME directory to avoid collisions between your dotfiles and distrobox dotfiles
- Vanilla-OS/apx: apx is the Vanilla OS package manager. It’s meant to be simple to use, but also powerful with support to installing packages from multiple sources without altering the root filesystem.
- https://blendos.co/
The only operating system you’ll ever need. A seamless blend of all Linux distributions, Android apps and web apps. (arch-based) - Toolboxes are not just for special cases
Puedes tener todas las apps aquí y es casi como tener una distro immutable (NixOS, Guix) - mviereck/x11docker: Run GUI applications and desktops in docker and podman containers. Focus on security.
- https://github.com/89luca89/distrobox/issues/28
1.4.1. xhost para tener aplicaciones gráficas
Esto imagino que es para X11, no sé cómo está en Wayland
- Xhost - ArchWiki
- Another step needed for Steam Deck · Issue #409 · 89luca89/distrobox
- [Error] Can not run any graphical application. · Issue #329 · 89luca89/distrobox
- https://unix.stackexchange.com/questions/594183/how-to-run-graphical-applications-as-root-under-wayland
- Distrobox is Awesome – blog.theuse.net
1.5. Dockerfile ejecutable y Cosmopolitan Libc y nix-shell shebang
1.6. Ejecutar distintos tipos de paquetes en una misma distro
1.6.1. GitHub - r-darwish/topgrade: Upgrade everything
Un poco turbio porque se ha archivado este repo y ha salido otro
1.6.2. arch2appimage A Python script to convert any arch linux package (official/AUR) to an AppImage
1.7. Ideas de cosas para instalar / probar / configurar idea
1.7.1. Things to be installed
1.7.1.1. Include fasd project idea try maybe_20230330
- GitHub - clvv/fasd: Command-line productivity booster, offers quick access to files and directories, inspired by autojump, z and v.
All the alias v=vim, f=thefuck and so on
- Está un poco muerto, no mergean PRs
- GitHub - wting/autojump: A cd command that learns - easily navigate directories from the command line
- GitHub - rupa/z: z - jump around → Lo tengo ya en zsh por defecto
- Está un poco muerto, no mergean PRs
1.7.1.2. Python deadsnakes
Para tener versiones nuevas según salen de python
1.7.1.3. espanso
1.7.1.5. Ver “Tech Weekly #8 | Cheat Sheet” en YouTube
1.7.1.6. Run your stuff remotely
- bcvi - run vi over a ’back-channel’
Esto quizás no hace falta, si haces
vim scp://
ya te funciona
http://sshmenu.sourceforge.net/articles/bcvi/
espanso y movidas de remote vim
- Instalar en un servidor remoto
https://stackoverflow.com/questions/764942/using-local-settings-through-ssh
- Bajarse todo con git, si falla instalarlo y volver a bajarlo
- Si no, con wget/curl y tar/unzip, bajarse el código de github o algún sitio similar (cuáles de estas son POSIX??)
- wget, curl fetch, son las herramientas que utiliza distant.nvim para bajarse cosas por http
https://dev.to/vibioh/dotfiles-5695 → guía de cómo hacer esto
https://sw.kovidgoyal.net/kitty/installer.sh también es interesante
https://unix.stackexchange.com/questions/83926/how-to-download-a-file-using-just-bash-and-nothing-else-no-curl-wget-perl-et → descargar sin wget ni curl
Use uploading instead, via SSH from your local machine (mucho más sencillo) - linux - loading local shell aliases to ssh session dynamicaly - Super User
- sshrc, murió pero hay 2 forks:
- fsquillace/kyrat: SSH wrapper script that brings your dotfiles always with you on Linux and OSX
- Posible manera de ejecutar todo
- Conseguir algo que se baje cosas con https (lo de arriba es http)
https://www.baeldung.com/linux/http-https-download-file
Esto funciona pero necesita openssl
Con tmux cualquier cosa que me baje puedo hacer:
function send_file() { tmux send-keys -t 0 'rm -f $1' 'Enter'; base64 -w 10000 $1 | xargs -I {} tmux send-keys -t 0 "echo -n \"{}\" >> $1.base64" 'Enter'; tmux send-keys -t 0 "base64 -d $1.base64 > $1 && chmod +x $1" 'Enter' } base64 /usr/bin/openssl | xargs -I _ tmux send-keys -t 0 'echo -n "_" >> openssl' 'Enter' # En el otro lado cuando se termina de copiar: base64 -d openssl > openssl.bin
Si necesitase implementación de base64:
https://github.com/eliasbenali/base64sh
- Instalarse openssl y compilarlo en estático
Ejecutar en un docker de la imagen base necesaria
apt-get update && apt-get install -y git gcc make git clone https://github.com/openssl/openssl && cd openssl # ./Configure --no-shared -no-shared --nopin-shared -nopin-shared --static -static no-shared no-pinshared ./Configure no-shared no-pinshared no-module # command-line option '-fno-shared' is valid for Modula-2 but not for C make make install
Instalarse curl y xz
Para que openssl funcione me tengo que copiar los/etc/ssl/certs
a la máquina
Añadir -CApath /home/user/certs a la función de baeldung cd /etc/ssl/certs for file in *; do send_file $file; done
raw_download ’https://github.com/stunnel/static-curl/releases/download/8.7.1/curl-linux-x86_64-8.7.1.tar.xz’ ’curl-linux-x86_64-8.7.1.tar.xz’ → hace una redirección que no mola, puedo pillar el Location de la respuesta
Otra si no es:
tmux send-keys -t 0 “raw_download ‘$(curl -sL -w %{url_effective} ‘https://github.com/stunnel/static-curl/releases/download/8.7.1/curl-linux-x86_64-8.7.1.tar.xz’ -o /dev/null)’ > curl-linux-x86_64-8.7.1.tar.xz” ’Enter’
https://git.alpinelinux.org/aports/tree/main/xz/APKBUILD?h=3.17-stable
git clone https://github.com/tukaani-project/xz && cd xz ./autogen.sh ./configure --sysconfdir=/etc \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ --localstatedir=/var \ --disable-rpath \ --disable-werror \ --disable-doc sed -i \ -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \ -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \ libtool make
No es del todo estático, sino que es un wrapper para llamar a .libs/xz y eso sí que tiene librerías:
If you want to link xz against static liblzma, the simplest way
is to pass –disable-shared to configure. If you want also shared
liblzma, run configure again and run “make install” only for
src/liblzma.
https://raw.githubusercontent.com/Ravenports/Ravenports/master/bucket_12/xz
Con eso ya me puedo bajar nix
https://nixos.wiki/wiki/Nix_Installation_Guide#Installing_without_root_permissions
Lo malo es que las imágenes están compiladas para musl: https://github.com/nix-community/nix-user-chroot/releases/tag/1.2.2
git clone https://github.com/lytex/nix-user-chroot && cd nix-user-chroot RUSTFLAGS='-C target-feature=+crt-static' cargo build --release
unshare failed: EPERM → unshare –user –pid echo YES no está permitido. Probablemente me tenga que ir a https://github.com/proot-me/PRoot
https://proot-me.github.io/#downloads
curl -LO https://proot.gitlab.io/proot/bin/proot chmod +x ./proot proot --version
proot distribuye binarios: https://proot.gitlab.io/proot/bin/proot
Instalarlo con PRoot → subir los certificados (se pueden descomprimir con xz) → bajarse curl (solucionando la redirección) y PRoot
- Conseguir algo que se baje cosas con https (lo de arriba es http)
- https://github.com/DavHau/nix-portable
- Bajarse todo con git, si falla instalarlo y volver a bajarlo
- distant + distant.nvim → remote nvim with all your plugins
- xxh/xxh: 🚀 Bring your favorite shell wherever you go through the ssh.
1.7.2. includeIf for creating different git identities | Codexpedia
Para poner distintas configuraciones en función de si estás en un directorio u otro, por ejemplo para pillar la clave gpg de trabao vs el de trabajo, o usuario, etc
1.7.2.1. Git - git-config Documentation
1.7.3. espanso y movidas de remote vim
Tener un espanso que tene la forma:
echo vim scp://{{output}}:$PWD
Donde {{output}} es un nombre que saco de mi ~/.ssh/config local, y $PWD es un comando que se ejecuta en remoto
Así me da un vim loquesea que puedo utilizar
El formato de scp no es muy flexible y no me permite hosts ssh https://gist.github.com/sloanlance/f481b7b8ffc0bfa3f46a1c942c7e7b78
Quizás alguno de estos lo permite: https://www.reddit.com/r/vim/comments/1e9cr6/a_better_netrw_does_it_exist/
$SSH_CONNECTION → 83.61.76.170 60024 5.196.26.17 9999
variable con los datos de la conexión
$SSH_TTY
1.7.4. Instalar Postman project idea someday_20230330
Genera código en base a interacción
- O lo mismo no: https://www.reddit.com/r/neovim/comments/w6qs3j/neovim_users_you_may_not_need_postman
https://github.com/klesh/nvim-runscript
It is at an earlier stage of development, comment, feedback are more than welcome.
1.7.5. How Does Free Graphic Design Software Stack Up?
Alternativas Open Source de programas propietarios
1.7.5.1. Krita - Wikipedia
Edición de imágenes
1.7.5.2. Scribus - Wikipedia
Diseño de PDFs para carteles y demás
1.7.6. Redirigir los repos de github a dotfiles project idea someday_20230330
La idea es centralizar todo y no tener un repo por cada cosa
1.7.7. Añadir tema claro y poder cambiar entre temas claro/ oscuro project idea someday_20230330
En general esto es tema de config, quiero que sea así con un shortcut global (idealmente)
- Firefox (desactivar la extensión y cambiar el tema)
También tengo instalado shadowFox
Es más fácil hacer un perfil de modo claro y ya está - doom emacs
- neovim (no va con perfil de consola como vim)
- KDE (cambiar el tema)
- Telegram
- DBeaver en el trabajo
-—
Poner un archivo en un sitio conocido, y cuando cambie (tener un inotify o algo así), cambiar al modo oscuro de cada repo y recargar/reiniciar las instancias que haya corriendo
Plasma tiene un comando para detectar si estás en modo oscuro o no: plasma-apply-colorscheme --list-schemes | grep current | grep Dark
- Modo oscuro
plasma-apply-colorscheme BreezeDark plasma-apply-lookandfeel -a org.kde.breezedark.desktop plasma-apply-desktoptheme breeze-dark plasma-apply-cursortheme Quintom_Ink chezmoi apply ~/.config/alacritty/alacritty.yml chezmoi apply ~/.config/i3/config i3 reload
Modo claro
plasma-apply-colorscheme BreezeLight plasma-apply-lookandfeel -a org.kde.breeze.desktop plasma-apply-desktoptheme breeze-light plasma-apply-cursortheme Quintom_Ink chezmoi apply ~/.config/alacritty/alacritty.yml chezmoi apply ~/.config/i3/config i3 reload
1.7.7.1. Usar i3status en rust para que tenga modo claro project idea someday_20230330 someday_20230330
1.7.8. Crearme un Vagrant con mi config (conectarme a máquina virtual con toda mi config) project idea maybe_20230330
Quizás en el servidor orgwiki o algo así
1.7.9. ajeetdsouza/zoxide: A smarter cd command. Supports all major shells.
zoxide is a blazing fast replacement for your cd command, inspired by z and z.lua. It keeps track of the directories you use most frequently, and uses a ranking algorithm to navigate to the best match.
1.7.10. Alternativas Sourcetrail project idea try someday_20230330
- https://github.com/petermost/Sourcetrail → sourcetrail fork
- OSS Port → Como Sourcetrail https://www.oss-port.com/Codesee-io/oss-port
- SourceGraph → Instalable con docker, como Sourcetrail
https://about.sourcegraph.com/ - https://github.com/tjdevries/sg.nvim
- !Probado! https://github.com/scottrogowski/code2flow/ Pretty good call graphs for dynamic languages
No funciona si renombras el paquete que importas - https://github.com/bstee615/tree-climber basado en TreeSitter, dibuja:
- Abstract Syntax Tree (AST)
- Control-flow graph (CFG)
- Monotonic dataflow analysis
- Def-use chain (DUC)
- Code Property Graph (CPG) CPG composes AST + CFG + DUC into one graph for combined analysis.
- Abstract Syntax Tree (AST)
- https://github.com/joernio/joern
- https://github.com/IBM/pyflowgraph
- https://github.com/IBM/tree-sitter-codeviews
- tree-sitter/tree-sitter-graph: Construct graphs from parsed source code
- https://codeql.github.com/docs/codeql-language-guides/analyzing-data-flow-in-python/
- Ideal Graph Visualizer
- Para Python (aunque son más de grafo de llamadas y lo ideal sería fluho de datos)
- Technologicat/pyan: Static call graph generator. The official Python 3 version. Development repo.
No he conseguido que funcione - vitsalis/PyCG: Static Python call graph generator
- daneads/pycallgraph2: pycallgraph2 is a maintained fork of pycallgraph, a Python module that creates call graphs for Python programs.
Se ejecuta y tiene que estar en - Pyreverse - Pylint latest documentation
- Technologicat/pyan: Static call graph generator. The official Python 3 version. Development repo.
- google-research/python-graphs: A static analysis library for computing graph representations of Python programs suitable for use with graph neural networks. En teoría tiene flujo de datos pero no es obvio de utilizar, los ejemplos son de control
- microsoft/graphcodebert-base · Hugging Face
1.7.11. Instalar todo esto de rust
1.7.12. Dunst - ArchWiki
https://wiki.archlinux.org/title/Dunst
Para el proyecto de orgzly-integrations te permite un tag por cada notificación para que se sobrescriba en vez de que se lanze
Para config de trabajo, para lanzar botones con acciones
https://linuxcommandlibrary.com/man/dunstify
1.7.13. Vim File Manager
Buscar uno que utiliza tags para navegar
1.7.13.1. ranger/ranger: A VIM-inspired filemanager for the console
También tiene integraciones para vim y para emacs
https://github.com/alexanderjeurissen/ranger_devicons → iconos chulos
1.7.13.2. vifm: A Terminal File Browser for Hardcore Vim Lovers - It’s FOSS
1.7.13.3. https://github.com/jarun/nnn
1.7.13.4. gokcehan/lf: Terminal file manager
https://github.com/gokcehan/lf
Como Ranger, pero mejor
1.7.14. An Interactive Python Cheat Sheet That Brings The Answer To You
1.8. config from org-mode
1.8.1. Using Org-Mode to Manage Configs (Passwords)
https://www.reddit.com/r/emacs/comments/knu0qs/using_orgmode_to_manage_configs/
Nice post but a bit raw, in usability term. Few points: keeping hard-coded password in a config sometimes is needed, there is no point in avoiding it org-mode side, the attack surface is the same. You might instead benefit from org-crypt to cypher few headings with secrets and opening them only for tangle, perhaps with the GNUPG agent caching help.
Configs might need extra files, not something you put in a babel block, for that org-attach does help much, you can store such files/directories under an org-attach managed common root and accessing them via org-mode, on tangle those paths can be copied, hard-linked, sym-linked or something else case by case, also keep config as attachments let you version them individually with a SCM system like git (magit-wrapped in Emacs) to track changes and easily revert them.
You can “centralize” your configs with org-roam or with linkmarks and access them with a keypress and search&narrowing style, an example for me: if I want to change my zsh config I hit a single key, ivy pops up start typing zsh and tab/enter to visit the relevant org-mode config. Far more comfortable and quicker than accessing visiting files in a classic fs taxonomy.
1.8.2. Llamar a los scripts de otras partes llamándolos/transcluyéndolos (estoy seguro?)
Esto puede ser problemático porque para generar el script de instalación necesito tener chezmoi funcionando
Es verdad que aclara a nivel de paquete de dónde viene cada cosa, pero tendría que tener una manera sencilla de implementarlo por ejemplo en bash para poder ejecutar las transclusiones sin depender de nada
Estan las cosas en este archivo, incluso lo podría rellenar a mano o lo que sea para crearme un primer install.sh, o también generarme distintos archivos de config en una máquina que tenga ya funcionando con chezmoi
cat ~/.config/chezmoi/chezmoi.toml
[data]
desktop = true
work = false
Por ejemplo los paquetes de los que depende neovim los podemos en el readme de neovim y hacemos un tangle desde ahí, lo mismo con los de i3…
Hacer una lista de paquetes a instalar por cada módulo, y luego tener un script de pre instalación y post instalación, y listar dependencias entre ellos… y me estoy dando cuenta de que ahora quiero hacer un framework para gestión de dependencias y ejecución de scripts xD
Lo ideal sería poder ver siempre los dos niveles, verlo todo colapsado o verlo todo de una vez (quizás con folds se puede hacer), o con peek definition
1.9. dotfiles de otra gente
1.9.1. https://github.com/benmezger/dotfiles/
Está en Ansible y tiene Github actions
1.9.3. https://github.com/petobens/dotfiles/
Muy buena integración entre las distintas herramientas (pillé la config para listar con fzf las ventanas)
1.9.4. https://github.com/waylonwalker/devtainer (dotfiles)
vim+python+ipython+tmux, con integraciones para WSL
1.9.6. Dotfiles en Ansible
1.9.6.1. Example of Desktop environment configuration with ansible
1.9.6.2. https://github.com/geerlingguy/ansible-role-dotfiles
Este es un paquete para instalar los dotfiles de un repo cualquiera
1.9.6.3. https://thebroken.link/managing-dotfiles-with-ansible/
Guía para hacerlo con ansible con roles
Usando Ansible puedo evitar submódulos, y usar roles para especificar qué instalar
1.9.7. Dotfiles en Ansible + Guix
1.11. Scripts para activar/desactivar servicios que más consumen
#!/bin/bash killall git-sync.sh; killall wrapper.sh systemctl stop syncthing --user systemctl stop onedrive --user
#!/bin/bash (setsid ~/.config/autostart-scripts/git-sync.sh &) systemctl start syncthing --user systemctl start onedrive --user
1.12. Pantalla con xrandr
xrandr --output eDP-1-1 --auto # Para activarla después de haberla desactivado
1.13. Best of .bashrc | datagubbe.se POSIX tools to have in any system
https://www.datagubbe.se/bestofbash/
tar and POSIX docs
1.14. VMs con Windows y demás
Idealmente no las tendría que utilizar pero asdfghjkl;
1.14.1. CrossOver 21.1 Released With GTA V Support, Restores Outlook 2016 & 365 Support - Phoronix
1.15. Ejecutar distintas versiones de un mismo lenguaje
1.16. Makefiles
1.17. UEFI keys
1.18. virt-manager en Arch linux
- https://computingforgeeks.com/install-kvm-qemu-virt-manager-arch-manjar/
En el primer pasosudo pacman -Syu ebtables dnsmasq iptables-nft virt-manager libvirt edk2-ovmf qemu-desktop; sudo systemctl restart libvirtd; sudo systemctl enable libvirtd
iptables conflicta con iptables-nft, hay que instalar la segunda - https://www.reddit.com/r/qemu_kvm/comments/u7ciil/snapthot_rollback_issue/ → Hay que hacer los snapshots con la máquina parada
How to fix “network ‘default’ is not active” error in libvirt
sudo virsh net-list --all sudo virsh net-start default sudo virsh net-list --all # Ahora sale activa
1.19. Pacman / Paru
1.19.1. Resumen de Pacman
1.19.2. Buscar en qué paquete está un comando (Pacman)
pacman -F <nombre>
sudo pkgfile -u pkgfile $filename
1.19.3. Revertir paquetes
paru -U ~/.cache/paru/clone/ferdium-bin/ferdium-bin-6.0.0.nightly.92-1-x86_64.pkg.tar.zst
Para pacman https://wiki.archlinux.org/title/downgrading_packages
sudo pacman -U file:///var/cache/pacman/pkg/package-old_version.pkg.tar.type
El lock de pacman está en /var/lib/pacman/db.lck
Para comprobar si hay algún proceso usándolo:
sudo fuser /var/lib/pacman/db.lck
1.19.4. Instalar paquetes antiguos
1.19.5. Errores de librerías binarias
aw-qt daba este error: libGL error: MESA-LOADER: failed to open iris: /opt/activitywatch/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /usr/lib/dri/iris_dri.so) (search paths /usr/lib/dri, suffix _dri) libGL error: failed to load driver: iris libGL error: MESA-LOADER: failed to open iris: /opt/activitywatch/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /usr/lib/dri/iris_dri.so) (search paths /usr/lib/dri, suffix _dri) libGL error: failed to load driver: iris libGL error: MESA-LOADER: failed to open swrast: /opt/activitywatch/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /usr/lib/dri/swrast_dri.so) (search paths /usr/lib/dri, suffix _dri) libGL error: failed to load driver: swrast sudo mv /opt/activitywatch/libstdc++.so.6 ~/.local/share/Trash → Esto lo soluciona al parecer, o también desinstalar y volver a instalar, quizás?
Normalmente tienes que revertir el paquete que no está donde tiene que estar
1.19.6. Rollback / Transactional updates in Arch Linux
1.19.6.1. Arch Linux Archive - ArchWiki
https://wiki.archlinux.org/title/Arch_Linux_Archive
Es un archivo por si quieres instalar la versión que estuvo disponible hace unos años, para montar entornos antiguos
1.19.6.2. Transactional package management for arch? : r/archlinux
1.19.6.3. History of transactions with pacman? : r/archlinux
https://www.reddit.com/r/archlinux/comments/3ltjhe/history_of_transactions_with_pacman/
Never update, always reinstall into a new BTRFS snapshot:-) That way you can switch back to the old configuration with a simple reboot.
1.19.6.4. Garuda Linux brings an important feature to the Arch world: snapshots and rollback
Bad thing → uses calamares as an installer, which is not optimal if I want to install all by myself using a script
Uses BTRFS with compression (meaning that all those snapshots won’t take quite so much space) and Snapper
1.19.6.5. Pin all your commits in paru?
You should be able to pin:
/home/julian/.cache/paru/clone/bookmarksync-git
(aur repo), /home/julian/.cache/paru/clone/bookmarksync-git/bookmarksync
(bare repo) and /home/julian/.cache/paru/clone/bookmarksync-git/src
(full repo)
Maybe pin also in pacman
1.19.6.6. Custom PKGBUILD repositories in paru
When 2.0 is released:
https://github.com/Morganamilo/paru/issues/719
1.19.7. How To Ignore A Package From Being Upgraded In Arch Linux (like pinning packages)
https://ostechnix.com/safely-ignore-package-upgraded-arch-linux/
But also holds back every other dependency of that package, so it can lead to outdated packages and system breakage
edit /etc/pacman.conf IgnorePkg = vlc
1.19.8. Actualizar después de 2 semanas
(286/286) checking keys in keyring [########################################################] 100% (286/286) checking package integrity [########################################################] 100% error: dbeaver: signature from "Fabio Castelli (Muflone) (VBSimple) <muflone@vbsimple.net>" is marginal trust :: File /var/cache/pacman/pkg/dbeaver-22.1.3-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)). Do you want to delete it? [Y/n] Y error: failed to commit transaction (invalid or corrupted package) Errors occurred, no packages were upgraded.
https://bbs.archlinux.org/viewtopic.php?id=233480
sudo pacman -S archlinux-keyring
1.19.9. Mantenimiento de Pacman
https://www.reddit.com/r/archlinux/comments/zli3iu/is_arch_a_time_eater_is_there_any_truth_to_this/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=14&utm_content=share_button
Before updating, I check https://archlinux.org/news/ if something has been published that is relevant to my installations. If so, I take it into account.
The check can be automated with https://aur.archlinux.org/packages/informant for example, or paru -Pw
, paru -Pww
Using a hook the cache of pacman will be reduced automatically (https://wiki.archlinux.org/title/pacman#Cleaning_the_package_cache).
From time to time I synchronize my configuration files with the pacnew files. There are utilities for this as well (https://wiki.archlinux.org/title/Pacman/Pacnew_and_Pacsave).
1.19.10. if you use AUR packages that depend on a library then you need to rebuild those packages when the library goes up by a major version.
1.19.11. Rebuild package
makepkg -srif --noconfirm
1.19.14. paru / pacman consume demasiada CPU
https://forum.manjaro.org/t/how-do-i-limit-pamac-or-yays-cpu-core-usage-while-compiling/55043
Look in /etc/makepkg.conf. Find the line containing MAKEFLAGS= and uncomment it if it’s commented. Change it to -jX where X is the number of cores you want it to use.
1.19.15. Cambiar dependencias de paquetes
https://aur.archlinux.org/packages/virtualbox-ext-oracle
sudo nvim /var/lib/pacman/local/virtualbox-ext-oracle-7.0.4-1/desc
1.19.16. 08:58 Instalar CUDA en Arch Linux
sudo pacman -S cuda cudnn nvidia-dkms nvidia-utils linux-headers
/opt/cuda/extras/demo_suite/deviceQuery
Reiniciar después
1.19.17. Rust para ripgrep compilado
Al instalar rust en Arch linux tienes que ejecutar esto para que ripgrep compile:
rustup toolchain install nightly
1.19.18. debtap → convertir .deb a paquetes de Pacman
Update debtap database (before the first run):
sudo debtap –update
Convert the specified package:
debtap path/to/package.deb
Convert the specified package bypassing all questions, except for editing metadata files:
debtap –quiet path/to/package.deb
Generate a PKGBUILD file:
debtap –pkgbuild path/to/package.deb
1.20. apt
1.20.1. Buscar en qué paquete está un comando (apt)
https://askubuntu.com/questions/481/how-do-i-find-the-package-that-provides-a-file
sudo apt-get install apt-file sudo apt-file update apt-file find kwallet.h
Instalar paquetes de monitorización (en un kubernetes que eres root) → meter a espanso
apt-get install -y procps apt-get install -y iproute2
1.20.2. Resolver dependencias forzando con dpkg
dpkg --force-all
deja instalar y eliminar paquetes incluso si rompe dependencias o deja el sistema inusable (OJO con esto porque si quitas una librería/paquete crítica se puede liar).
Luego una vez que has resuelto el problema vuelves a instalar los paquetes necesarios
1.20.3. Errores con postprocesado de un paquete
https://askubuntu.com/questions/482928/ignore-apt-get-postinstall-scripts-automatically
apt-get download <package> sudo dpkg --unpack <package>*.deb sudo rm /var/lib/dpkg/info/<package>.postinst -f sudo dpkg --configure <package> sudo apt-get install -yf #To fix dependencies
1.21. Alternativas a AUR en Ubuntu/Debian
1.21.1. Ver “Pacstall Is An ”AUR“ For Ubuntu” en YouTube
https://youtu.be/MFbO60gBRLg
De momento está muy verde
1.21.2. MPR - Home (Former Debian User Repository (DUR))
Lo mismo que AUR en debian DUR
wget -qO - 'https://proget.hunterwittenborn.com/debian-feeds/makedeb.pub' | \ gpg --dearmor | \ sudo tee /usr/share/keyrings/makedeb-archive-keyring.gpg &> /dev/null echo 'deb [signed-by=/usr/share/keyrings/makedeb-archive-keyring.gpg arch=all] https://proget.hunterwittenborn.com/ makedeb main' | \ sudo tee /etc/apt/sources.list.d/makedeb.list sudo apt update sudo apt install makedeb cd ~/code git clone "https://mpr.hunterwittenborn.com/makedeb.git" cd ../makedeb/ makedeb -si # [!] Couldn't find PKGBUILD
1.21.3. DUR: The Debian User Repository | Hacker News
Explica por qué construir paquetes en Ubuntu es complicado comparado con Arch
1.22. Immutable / Anti-hysteresis distros
1.23. Dependency Hell
1.23.1. Problems
- Many dependencies
- Long chains of dependencies
- Conflicting dependencies
- Circular dependencies
- Package manager dependencies
- Diamond dependency
1.23.2. Solutions
- Removing dependencies
- Version numbering
- Private per application versions
- Side-by-side installation of multiple versions
- Smart package management
- Installer options
- Easy adaptability in programming
- Strict compatibility requirement in code development and maintenance
- Software appliances
- Portable applications
1.24. Dokuwiki nueva instalación
1.24.1. Repos Kubuntu
- ansible
- backports
- deadsnakes (versiones de python)
- chrome
- kxstudio, ubuntustudio (trae poco)
- r
- syncthing
- vscodium
1.24.2. Encriptación
- Encriptar al instalar con LUKS
- Encriptar /home después de instalar con ecryptfs. También encriptar
el swap. - https://www.howtogeek.com/116032/how-to-encrypt-your-home-folder-after-installing-ubuntu/
- https://askubuntu.com/questions/63594/mount-encrypted-volumes-from-command-line.
Tal vez hacer en algún momento una sección explícita de esto.
1.24.3. Programación
- git
- octave, maxima, sagemath, latex
- .bashrc, vim (+ plugins, snippets), .vimrc
- vscodium,
doom emacs, syncthing - Zona horaria
https://www.thegeekstuff.com/2010/09/change-timezone-in-linux/
1.24.3.1. python
- Instalar
pip, pip3, virtualenv, virtualenvwrapper, numpy, scipy, matplotlib, sympy
desdepip
- Instalar desde el
virtualenv
- ’’ pip install –upgrade –force-reinstall –ignore-installed (-I)
–no-deps (no reinstala deps)’’ para instalar la última versión
1.24.4. Suites de oficina
- Latex
- LibreOffice
- Gestor de impresión (a veces hace falta)
- Drivers de la impresora Samsung
Unified Linux Drivers - XSane (escanear)
1.24.4.1. Latex
texlive-fonts-extra
para utilizar
\usepackage[bitstream-charter]{mathdesign}
1.24.5. Navegador
- firefox, quitando la megabar
- https://www.reddit.com/r/programming/comments/g3dsdv/the_decline_of_usability/fnr6akq/
about:config
->browser.urlbar.update1
y
browser.urlbar.openViewOnFocus
false
1.24.6. Música
- qtractor (metrónomo), qsampler, timidity, seq64, musescore (mejor
instalar con snap o similar, si no está muy desactualizado), lilypond,
VCVRack - Librerías de sonido
1.24.7. Herramientas
- bash-completion, Xarchiver/Ark(kde), gnome disks, gparted, WinFF,
okular, (eye of gnome), shotwell (image viewer), redshift y
redshift.conf, Transmission (KTorrent) - Configurar
sudo
para la cuenta de administrador - youtube-dl (desde pip suele ser mejor) con aria2c y workarround:
https://github.com/rg3/youtube-dl/issues/17457
$ youtube-dl -x --audio-format mp3 --audio-quality 2 --external-downloader aria2c "https://www.youtube.com/watch?v=et0roLIkekk" --external-downloader-args "-x 16 -t 1 -j 16 -m 0 -s 16"
1.24.8. Herramientas (kde)
- kde-connect
- Integración con el navegador
1.24.9. xfce
- En xfce, greybird (Appareance>Style y Window Manager>Style)
- Super + 1234 -> Cambiar a escritorio 1234
- Super + F1F2F3F4 -> Mover ventana a escritorio 1234
- Super+Space -> Cambiar teclado (teclado americano con tilde o ñ
international AltGr dead keys) - Tile Top/B/L/R -> Super+\(\uparrow / \downarrow / \leftarrow /
\rightarrow\)
- Top-L/R -> Crtl+Super+\(\leftarrow / \rightarrow\)
- Bottom-L/R -> Shift+Crtl+\(\leftarrow / \rightarrow\)
1.24.10. KDE
- Alt + 1234 -> Cambiar a escritorio 1234
- Super + 1234 -> Mover ventana a escritorio 1234
- Super+\(\uparrow / \downarrow / \leftarrow / \rightarrow\) -> Partir la
pantalla - Cursor: Quintom_Ink
1.24.11. Problemas conocidos
1.24.11.1. Copia lenta a USB
Correr como root:
echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes
https://unix.stackexchange.com/questions/107703/why-is-my-pc-freezing-while-im-copying-a-file-to-a-pendrive/107722#107722
Para hacer persistente, poner en /etc/sysctl.conf:
vm.dirty_background_bytes = 16777216 vm.dirty_bytes = 50331648
1.24.11.2. presets de WinFF que no funcionan
Unknown encoder 'libvo_aacenc'
-> reemplazar -acodec libvo_aacenc
por -c:a aac