{"id":3219,"date":"2024-01-17T11:28:56","date_gmt":"2024-01-17T15:28:56","guid":{"rendered":"https:\/\/arielantigua.com\/weblog\/?p=3219"},"modified":"2024-01-23T18:57:14","modified_gmt":"2024-01-23T22:57:14","slug":"organiza-tu-dotfiles-con-gnu-stow","status":"publish","type":"post","link":"https:\/\/arielantigua.com\/weblog\/2024\/01\/organiza-tu-dotfiles-con-gnu-stow\/","title":{"rendered":"Organiza tu .dotfiles con GNU Stow."},"content":{"rendered":"<p>Organiza tu .dotfiles con GNU Stow.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"240\" class=\"wp-image-3220\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/logo.png\" alt=\"Logo\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/logo.png 840w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/logo-300x86.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/logo-768x219.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>Primero definamos la necesidad de GNU Stow (Stow en lo adelante), si tienes acceso a diferentes equipos, ya sea laptops (Linux o macOS), desktops (Linux o macOS) y servidores Linux (quien usa macOS en servidores?), talves has notado lo incomodo que es tener una configuracion de shell bien customizada pero cuando entras a otro equipo por ssh, hechas de menos todos esos alias y otras utilidades. Stow es la solucion para llevar estas customizaciones a otros entornos *nix.<\/p>\n<p>En mi caso, tengo dos equipos de uso diario, Macbook Pro M1 y un Mac Mini M2. En ambos uso zsh como shell y tengo las mismas customizaciones ya que he instalado los mismos paquetes.<\/p>\n<p>Oh My ZSH! (<a href=\"https:\/\/ohmyz.sh\/\">https:\/\/ohmyz.sh\/<\/a>)<\/p>\n<p>Es un framework que maneja las configuraciones que se pueden aplicar a ZSH. Con esta herramienta podemos tener prompts, plugins y temas.<\/p>\n<p><!--more--><\/p>\n<p>La instalacion es tan sencilla como hacer:<\/p>\n<pre>sh -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/ohmyzsh\/ohmyzsh\/master\/tools\/install.sh)\"<\/pre>\n<p>en la terminal.<\/p>\n<p>Got Plugins?<\/p>\n<p>Esta es la parte mas poderosa de OMZ, la cantidad de plugins que transformaran la forma de usar la shell con toda la informacion proporcionada. Aqu\u00ed un screenshot tomado del sitio web de OMZ.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1650\" height=\"1110\" class=\"wp-image-3221\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/robbyrussell.jpeg\" alt=\"robbyrussell\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/robbyrussell.jpeg 1650w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/robbyrussell-300x202.jpeg 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/robbyrussell-1024x689.jpeg 1024w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/robbyrussell-768x517.jpeg 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/robbyrussell-1536x1033.jpeg 1536w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/robbyrussell-1200x807.jpeg 1200w\" sizes=\"auto, (max-width: 1650px) 100vw, 1650px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"852\" height=\"570\" class=\"wp-image-3222\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/oh-my-zsh-theme-half-life.png\" alt=\"Oh My Zsh theme: half-life\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/oh-my-zsh-theme-half-life.png 852w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/oh-my-zsh-theme-half-life-300x201.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/oh-my-zsh-theme-half-life-768x514.png 768w\" sizes=\"auto, (max-width: 852px) 100vw, 852px\" \/><\/p>\n<p>La lista de plugins en: <a href=\"https:\/\/github.com\/ohmyzsh\/ohmyzsh\/wiki\/Plugins\">https:\/\/github.com\/ohmyzsh\/ohmyzsh\/wiki\/Plugins<\/a><\/p>\n<p>Ya que tenemos OMZ instalado y configurado, vamos a instalar <strong>Stow<\/strong>.<\/p>\n<p>Estos pasos son realizados en macOS.<\/p>\n<pre><strong>brew install stow<\/strong><\/pre>\n<pre>En Linux, depende la distribucion, seria tan facil como hacer <strong>apt install stow<\/strong>.<\/pre>\n<p>Espera!<\/p>\n<p><strong>Stow<\/strong> no es un programa para el manejo de dotfiles, sin embargo es un Symlink manager. Es mucho mas facil para iniciar que otros (yadm\u2026).<\/p>\n<p>El procedimiento para inciar el uso de stow es bastante facil, primero creamos un directorio, en mi caso (\/Users\/ariel\/.dotfiles\/). Dentro de este directorio creamos subdirectorios con el nombre de la aplicaci\u00f3n (package) que queremos manejar con stow.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"332\" height=\"240\" class=\"wp-image-3223\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-screen-shot-of-a-computer-description-automatic.png\" alt=\"A screen shot of a computer Description automatically generated\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-screen-shot-of-a-computer-description-automatic.png 332w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-screen-shot-of-a-computer-description-automatic-300x217.png 300w\" sizes=\"auto, (max-width: 332px) 100vw, 332px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"574\" height=\"217\" class=\"wp-image-3224\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-screenshot-of-a-computer-description-automatica.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-screenshot-of-a-computer-description-automatica.png 574w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-screenshot-of-a-computer-description-automatica-300x113.png 300w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/p>\n<p><strong>Nota<\/strong>: los archivos en los subdirectorios, fueron movidos desde su ubicaci\u00f3n original al directorio controlado con stow.<\/p>\n<p>Activamos stow:<\/p>\n<ul>\n<li>\n<pre>stow zsh<\/pre>\n<\/li>\n<\/ul>\n<p>Este comando lo realizamos dentro de ~\/.dotfiles\/<\/p>\n<p>Si revisamos en nuestro $HOME, tendremos lo sigueinte:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"817\" height=\"107\" class=\"wp-image-3225\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-black-screen-with-white-text-description-automa.png\" alt=\"A black screen with white text Description automatically generated\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-black-screen-with-white-text-description-automa.png 817w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-black-screen-with-white-text-description-automa-300x39.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2024\/01\/a-black-screen-with-white-text-description-automa-768x101.png 768w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/p>\n<p>El proceso para agregar otras configuracones es similar, creamos un subdirectorio con el nombre de la aplicaci\u00f3n y colocamos el archivo de configuracion dentro, luego lo activamos con stow.<\/p>\n<p>A todo esto agregamos Git. Podemos colocar nuestro directorio .dotfiles en un repositorio de Git, la idea es replicarlo en las otras maquinas y realizar el proceso de \u201cactivacion\u201d.<\/p>\n<p>\u263a<\/p>\n<p>La idea original de usar Stow viene de un video de Jake Weisler [ <a href=\"https:\/\/www.jakewiesler.com\/blog\/managing-dotfiles#understanding-stow\">https:\/\/www.jakewiesler.com\/blog\/managing-dotfiles#understanding-stow<\/a> ]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Organiza tu .dotfiles con GNU Stow. Primero definamos la necesidad de GNU Stow (Stow en lo adelante), si tienes acceso a diferentes equipos, ya sea laptops (Linux o macOS), desktops (Linux o macOS) y servidores Linux (quien usa macOS en servidores?), talves has notado lo incomodo que es tener una configuracion de shell bien customizada [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,7,10],"tags":[150,149],"class_list":["post-3219","post","type-post","status-publish","format-standard","hentry","category-apple","category-general","category-linux","tag-shell","tag-zsh"],"_links":{"self":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/3219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/comments?post=3219"}],"version-history":[{"count":4,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/3219\/revisions"}],"predecessor-version":[{"id":3234,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/3219\/revisions\/3234"}],"wp:attachment":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/media?parent=3219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/categories?post=3219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/tags?post=3219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}