{"slug": "gnu-stow", "name": "GNU Stow", "category": "other", "category_name": "Other software", "description": "", "recommenders": 4, "commenters": 11, "warners": 3, "score": 1.786, "rising": -1.31, "first": "2026-03-29", "latest": "2026-06-20", "why": "check out gnu stow for this! i place my config files in  ~/dots, mirroring the structure as if it were my home directory, and gnu stow can symlink everything", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 2, "compare": 2, "warn": 3}, "spark": [0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "check out gnu stow for this! i place my config files in  ~/dots, mirroring the structure as if it were my home directory, and gnu stow can symlink everything", "icon": true, "domain": "gnu.org", "github_repo": null, "official_url": "https://www.gnu.org/software/stow/", "pricing": "", "aliases": ["GNU Stow"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 777604480, "item_id": 48600280, "url": "https://news.ycombinator.com/item?id=48600280", "by": "nsyne", "date": "2026-06-19", "stance": "recommend", "quote": "check out gnu stow for this! i place my config files in  ~/dots, mirroring the structure as if it were my home directory, and gnu stow can symlink everything", "excerpt": "check out gnu stow for this! i place my config files in ~/dots, mirroring the structure as if it were my home directory, and gnu stow can symlink everything to my home directory for me. then, only the dots directory is checked into version control. i find this better than putting all of ~/.config in git, since i don't necessarily want everything there to be version controlled. video i learned this from: https://youtu", "context": "", "use_case": "dotfile management", "switched_from": "", "story": ".gitignore Isn't the Only Way to Ignore Files in Git"}, {"id": 777484513, "item_id": 48592782, "url": "https://news.ycombinator.com/item?id=48592782", "by": "c-hendricks", "date": "2026-06-18", "stance": "recommend", "quote": "I switched to stow", "excerpt": "This is what I did too. My dotfiles used a custom install process that didn't really handle ~/.config very well, so I switched to stow, and then added syncthing because the push + pull dance got too annoying. Really happy with it.", "context": "", "use_case": "dotfile symlinks", "switched_from": "custom install process", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777469888, "item_id": 48591868, "url": "https://news.ycombinator.com/item?id=48591868", "by": "gchamonlive", "date": "2026-06-18", "stance": "recommend", "quote": "I have stow too in my micro DE, use it across a few machines and it's holding up really well.", "excerpt": "> The trouble is that symlinks cut both ways. Every edit on every machine writes straight through the link into that machine\u2019s clone of the repo I have stow too in my micro DE, use it across a few machines and it's holding up really well. I designed my dotfiles so that changes would happens exclusively to files not tracked by stow. I have .zshrc tracked, but environment goes to .zshenv and general local customisation", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 761055442, "item_id": 47565965, "url": "https://news.ycombinator.com/item?id=47565965", "by": "johnsonjo", "date": "2026-03-29", "stance": "recommend", "quote": "use gnu `stow` and `make` to build them", "excerpt": "I've been using VIM/NVIM on and off for a while and the one thing that made it stick for me over VSCode was LazyVim [1]. If you're missing out on something IDE like VSCode, but you love vim it's a great way to go (it can take some getting used to so hang in there). EDIT LazyVim is based off nvim by the way. If your more into videos to learn about something this is a good intro to it from Elijah Manor [2]. I have my d", "context": "", "use_case": "managing dotfiles", "switched_from": "", "story": "Neovim 0.12.0"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 777718577, "item_id": 48607411, "url": "https://news.ycombinator.com/item?id=48607411", "by": "swaranga", "date": "2026-06-20", "stance": "warn", "quote": "after finding Stow not flexible enough", "excerpt": "I wrote dloom for myself after finding Stow not flexible enough https://github.com/dloomorg/dloom Short blogpost for the TLDR: https://swaranga.dev/posts/dloom-the-dotfile-manager-i-wanted/", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777502528, "item_id": 48593908, "url": "https://news.ycombinator.com/item?id=48593908", "by": "senotrusov", "date": "2026-06-18", "stance": "warn", "quote": "I then used stow for about a year just to see whether symlinks would cause any issues. They did.", "excerpt": "I evaluated most of the popular dotfile management tools and found them far too complex for the problems they try to solve. I then used stow for about a year just to see whether symlinks would cause any issues. They did. Eventually, I wrote my own bidirectional sync tool that synchronizes a git checkout (for example, ~/.dotfiles) with the actual home directory. I run it as a systemd service, so I can simply edit or d", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777466657, "item_id": 48591666, "url": "https://news.ycombinator.com/item?id=48591666", "by": "darkteflon", "date": "2026-06-18", "stance": "warn", "quote": "realised that I was actually not happy with it", "excerpt": "Ok, I came into this thread intending to say \u201cI\u2019ve been using stow for years and am perfectly happy with it\u201d, started RTFA and the comments, realised that I was actually not happy with it, started considering chezmoi then remembered that I had had a pretty great experience building a Nix VM recently. Now I want to use Nix* to manage my multi-machine MacOS and Linux setup (with lots of dotfile config overlap, of cours", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}]}], "who": [], "tags": [], "use_cases": ["dotfile management", "dotfile symlinks", "dotfiles management", "symlinking dotfiles", "symlink-based mod installation", "managing dotfiles"], "compared": [{"slug": "nix", "name": "Nix", "co": 3, "switched_from": 0, "switched_to": 2}, {"slug": "chezmoi", "name": "Chezmoi", "co": 7, "switched_from": 0, "switched_to": 0}, {"slug": "home-manager", "name": "Home Manager", "co": 1, "switched_from": 0, "switched_to": 1}, {"slug": "syncthing", "name": "Syncthing", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48588413", "title": "Migrating from GNU Stow to Chezmoi", "mentions": 8}, {"url": "https://news.ycombinator.com/item?id=48583356", "title": ".gitignore Isn't the Only Way to Ignore Files in Git", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48087887", "title": "Linux gaming is faster because Windows APIs are becoming Linux kernel features", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47565316", "title": "Neovim 0.12.0", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 1}, "2026-04": {}, "2026-05": {"compare": 1}, "2026-06": {"neutral": 2, "warn": 3, "recommend": 3, "compare": 1}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 777718577, "item_id": 48607411, "url": "https://news.ycombinator.com/item?id=48607411", "by": "swaranga", "date": "2026-06-20", "stance": "warn", "quote": "after finding Stow not flexible enough", "excerpt": "I wrote dloom for myself after finding Stow not flexible enough https://github.com/dloomorg/dloom Short blogpost for the TLDR: https://swaranga.dev/posts/dloom-the-dotfile-manager-i-wanted/", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777604480, "item_id": 48600280, "url": "https://news.ycombinator.com/item?id=48600280", "by": "nsyne", "date": "2026-06-19", "stance": "recommend", "quote": "check out gnu stow for this! i place my config files in  ~/dots, mirroring the structure as if it were my home directory, and gnu stow can symlink everything", "excerpt": "check out gnu stow for this! i place my config files in ~/dots, mirroring the structure as if it were my home directory, and gnu stow can symlink everything to my home directory for me. then, only the dots directory is checked into version control. i find this better than putting all of ~/.config in git, since i don't necessarily want everything there to be version controlled. video i learned this from: https://youtu", "context": "", "use_case": "dotfile management", "switched_from": "", "story": ".gitignore Isn't the Only Way to Ignore Files in Git"}, {"id": 777502528, "item_id": 48593908, "url": "https://news.ycombinator.com/item?id=48593908", "by": "senotrusov", "date": "2026-06-18", "stance": "warn", "quote": "I then used stow for about a year just to see whether symlinks would cause any issues. They did.", "excerpt": "I evaluated most of the popular dotfile management tools and found them far too complex for the problems they try to solve. I then used stow for about a year just to see whether symlinks would cause any issues. They did. Eventually, I wrote my own bidirectional sync tool that synchronizes a git checkout (for example, ~/.dotfiles) with the actual home directory. I run it as a systemd service, so I can simply edit or d", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777484513, "item_id": 48592782, "url": "https://news.ycombinator.com/item?id=48592782", "by": "c-hendricks", "date": "2026-06-18", "stance": "recommend", "quote": "I switched to stow", "excerpt": "This is what I did too. My dotfiles used a custom install process that didn't really handle ~/.config very well, so I switched to stow, and then added syncthing because the push + pull dance got too annoying. Really happy with it.", "context": "", "use_case": "dotfile symlinks", "switched_from": "custom install process", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777479521, "item_id": 48592470, "url": "https://news.ycombinator.com/item?id=48592470", "by": "technojamin", "date": "2026-06-18", "stance": "compare", "quote": "I've checked out stow, chezmoi, yadm, and others over the years", "excerpt": "I've checked out stow, chezmoi, yadm, and others over the years, but I originally started off by rolling my own dotfiles setup with a Git repo about 6 years ago: https://github.com/jaminthorns/environment I don't really recommend it to others, since there's all these great tools that have the features you need (per-machine config, secrets, templating), but I get a deep satisfaction from the fact that I understand eve", "context": "", "use_case": "dotfiles management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777469888, "item_id": 48591868, "url": "https://news.ycombinator.com/item?id=48591868", "by": "gchamonlive", "date": "2026-06-18", "stance": "recommend", "quote": "I have stow too in my micro DE, use it across a few machines and it's holding up really well.", "excerpt": "> The trouble is that symlinks cut both ways. Every edit on every machine writes straight through the link into that machine\u2019s clone of the repo I have stow too in my micro DE, use it across a few machines and it's holding up really well. I designed my dotfiles so that changes would happens exclusively to files not tracked by stow. I have .zshrc tracked, but environment goes to .zshenv and general local customisation", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777466657, "item_id": 48591666, "url": "https://news.ycombinator.com/item?id=48591666", "by": "darkteflon", "date": "2026-06-18", "stance": "warn", "quote": "realised that I was actually not happy with it", "excerpt": "Ok, I came into this thread intending to say \u201cI\u2019ve been using stow for years and am perfectly happy with it\u201d, started RTFA and the comments, realised that I was actually not happy with it, started considering chezmoi then remembered that I had had a pretty great experience building a Nix VM recently. Now I want to use Nix* to manage my multi-machine MacOS and Linux setup (with lots of dotfile config overlap, of cours", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777446193, "item_id": 48590387, "url": "https://news.ycombinator.com/item?id=48590387", "by": "blop", "date": "2026-06-18", "stance": "neutral", "quote": "stow to manually update symlinks when I add a new dotfile", "excerpt": "I use syncthing to automatically sync my dotfiles git directory across PC/laptops, and stow to manually update symlinks when I add a new dotfile (the content of existing dotfiles is synced by syncthing already) That way I don't have to remember to commit+push+pull changes to existing dotfiles (like bashrc or vimrc which I edit often) to sync them to other machines, it happens automatically in almost real time as soon", "context": "", "use_case": "symlinking dotfiles", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 777423841, "item_id": 48588990, "url": "https://news.ycombinator.com/item?id=48588990", "by": "guhcampos", "date": "2026-06-18", "stance": "neutral", "quote": "I used stow for a long time", "excerpt": "I used stow for a long time, then tried Ansible, but eventually settled into good old Make. `make dotfiles` just creates a bunch of symlinks, takes 5 minutes, all good and happy. Everything is modular, declarative, simple. Never looked back.", "context": "", "use_case": "dotfile management", "switched_from": "", "story": "Migrating from GNU Stow to Chezmoi"}, {"id": 770055569, "item_id": 48128473, "url": "https://news.ycombinator.com/item?id=48128473", "by": "mfinelli", "date": "2026-05-13", "stance": "compare", "quote": "The stow approach is something that I considered but ultimately rejected", "excerpt": "Ooh overlayfs is quite interesting. I'll have to take a closer look at that. I imagine it's similar to what MO2 was doing on windows with the virtual filesytem to keep the game directory clean. The stow approach is something that I considered but ultimately rejected for a couple of reasons around handling conflicts of game-installed files as well as how to ultimately handle the symlink lifecycle (eg wrapper to make t", "context": "Linux gamer writing a mod manager", "use_case": "symlink-based mod installation", "switched_from": "", "story": "Linux gaming is faster because Windows APIs are becoming Linux kernel features"}, {"id": 761055442, "item_id": 47565965, "url": "https://news.ycombinator.com/item?id=47565965", "by": "johnsonjo", "date": "2026-03-29", "stance": "recommend", "quote": "use gnu `stow` and `make` to build them", "excerpt": "I've been using VIM/NVIM on and off for a while and the one thing that made it stick for me over VSCode was LazyVim [1]. If you're missing out on something IDE like VSCode, but you love vim it's a great way to go (it can take some getting used to so hang in there). EDIT LazyVim is based off nvim by the way. If your more into videos to learn about something this is a good intro to it from Elijah Manor [2]. I have my d", "context": "", "use_case": "managing dotfiles", "switched_from": "", "story": "Neovim 0.12.0"}]}