I’ve been reading up on the concept of dotfile management, and I’ve come across tools such as GNU Stow, chezmoi, and yadm, but before I select a tool, I’d like to understand the workflow a little better.

I understand if the dotfiles are in some cloud provider such as GitHub, then after a fresh install one can do git clone etc, but let’s say one’s dotfiles are not stored in the cloud, then what’s the workflow for getting those dotfiles onto the freshly installed OS? Do people do git clone from another machine on their local network, manually copy the dotfiles folder from the source, use an app like LocalSend, or something else?

EDIT: Clarifying that this is for a home environment, where I have two or three different laptops in service at any given time. One is my main daily driver and doesn’t change much. The other two are kinda my sandboxes and I’m often distro hopping on them. This question is mostly for distro hopping on my sandboxes, which is like once or twice a month. Thanks!

  • chrash0@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    22 days ago

    i host my dotfiles on GitHub, but any cloud provider or self-hosted git instance will do. otherwise, rsync, scp, or a good old fashioned thumb drive

    • yo_scottie_oh@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      22 days ago

      Yeah, so far I’m leaning toward setting up a USB thumb drive that I always keep up to date so that I can plug it in when I do a fresh install.

      In your case, are you more often pulling from GitHub to update existing setups as your configs change over time or are you usually pulling your dotfiles onto a new setup?

      • chrash0@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        22 days ago

        normally it’s for syncing across machines, but it is convenient for setting up new machines. i use chezmoi and Nix and some other tools to keep things in sync

  • Barry@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    22 days ago

    I’ve been happy with GNU Stow. Super simple and clean. I keep all the files in ~/stow and follow this workflow. You can avoid the git bits if you want and update ~/stow however you want.

    cd ~/stow
    
    # pull latest changes from git provider for syncing
    git fetch
    git status
    git pull
    
    # if made any edits and wanted to push them
    git add .
    git push origin main
    
    # do a dry run of stow just to make sure it won't do anything weird
    stow -n -v --no-folding .
    
    # do a real run of stow if nothing is wrong
    # note: --no-folding prevents folders from becoming symlinked, only files will be symlinks,
    # this prevents unintended files from going into ~/stow
    stow -v --no-folding .
    
    • yo_scottie_oh@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      22 days ago

      Thanks for sharing your workflow. How often do you use this workflow? And are you more often cloning your dotfiles for a new setup or just keeping them updated across existing setups over time?

  • doodoo_wizard@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    22 days ago

    If you pay ten bucks you can get a vps with a few gigs of space for a year and just put your kilobyte of config files there. If you don’t want the malicious vps admin to crawl it you can encrypt a zip of them.

    It costs ten bucks but you get an offsite storage vault with a public ip and in some scenarios that’s desirable.

  • xia@lemmy.ca
    link
    fedilink
    English
    arrow-up
    2
    ·
    22 days ago

    With yadm, your dotfiles are in a git repo, so you can “host” them wherever you want (another machine, “the cloud”, usb drive, a bunch of floppies…)

  • Grimm665@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    2
    ·
    22 days ago

    Ansible or other IaC is a great choice. If your needs are real simple, like mine, i put Gitolite on one of my mini servers and i can push/pull from there over ssh.

    • yo_scottie_oh@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      22 days ago

      Gotcha. I don’t have a home server yet, but that is in my backlog of projects for 2026. In your case, are you more often pulling from your mini server to update existing setups as your configs change over time or are you usually pulling your dotfiles onto a new setup?

  • [object Object]@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    22 days ago

    You can use Syncthing to, aptly, sync the files between machines and always have the latest copy everywhere — including your phone, if you so wish. On a new machine, you would probably ssh to another one and copy the files before having Syncthing properly installed (if you have apps setup automated).

    Inside the dotfiles, I typically have separate configs between the machines, because they differ enough to have to be adjusted. But for me, it’s just separate Ansible playbooks and tasks in a common directory, which I lug around from one machine to another.

  • erpicht@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    22 days ago

    I use GNU Stow for mine so the dotfiles I care about are included in my file-level backups. Once I restore my files, I can just run the stow(8) command to create the symbolic links. But, if I just want the dotfiles without the rest of my files, I would use scp(1) to copy the stow directory over to a new system, because it would be simplest. I don’t use version control with my stow directory (yet).

  • Theoriginalthon@lemmy.world
    link
    fedilink
    arrow-up
    1
    arrow-down
    1
    ·
    22 days ago

    I usually don’t bother with most dot files, if any at all. If I’m copying anything local it’s just easier to use scp on the file, or tar a group then scp it where I want. Obviously you need ssh installed