Ask HN: How do you sync your computers development configurations/environment?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • mackup

    Keep your application settings in sync (OS X/Linux)

  • yadm

    Yet Another Dotfiles Manager

  • You could use a dotfiles manager like https://yadm.io/

    It's more or less a wrapper of git, but it comes with a bunch of features that allows you to do the things you describe.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • dot-templater

    A small, portable Rust program intended for templating dotfiles across multiple systems.

  • I wrote a utility for this problem. I had 3 computers -- Linux with HiDPI, Linux with a normal DPI, and Mac. They all used the same dotfiles with slight differences. It was impossible to keep them in sync. I created a super simple template utility designed for working with dotfiles.

    https://github.com/kesslern/dot-templater

  • syncthing-android

    Wrapper of syncthing for Android.

  • I also use GNU Stow + Git and has worked well for me. For files I want to sync that I don't need versioning for and it is important that I have them available even in cases where I may have forgotten to commit my changes on some individual machine, I use Syncthing[1], which is really great for the more Dropbox-y kind of cross-machine sync that I also have a need for.

    [1]: https://syncthing.net/

  • dotfiles

    My configuration. Minimalist, but helps save a few thousand keystrokes a day. (by geerlingguy)

  • I symlink a few files in place via Dropbox, but have most of my local configs in a dot files repo: https://github.com/geerlingguy/dotfiles

    Then for more systemwide configuration, I have an Ansible playbook I run every now and then (configures apps, dock item order, etc): https://github.com/geerlingguy/mac-dev-playbook

  • mac-dev-playbook

    Mac setup and configuration via Ansible.

  • I symlink a few files in place via Dropbox, but have most of my local configs in a dot files repo: https://github.com/geerlingguy/dotfiles

    Then for more systemwide configuration, I have an Ansible playbook I run every now and then (configures apps, dock item order, etc): https://github.com/geerlingguy/mac-dev-playbook

  • dotnix

    nix stuff

  • home-manager and nix: https://github.com/legendofmiracles/dotnix

    This allows me to abstract logic easily, have it all modular and have everything be nix.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • strap

    👢 Bootstrap your macOS development system.

  • dotfiles

    btw i use arch (by RyanGibb)

  • nixos

    btw i use nix (by RyanGibb)

  • https://github.com/RyanGibb/nixos/

    My config is version controlled, reproducible, manages packages, and is very composable.

    Using the nix package manager and https://github.com/nix-community/home-manager this should work on other Linux distributions, MacOS, and even Windows Subsystem for Linux. Although I haven't tried this for myself yet.

  • nix

    Nix, the purely functional package manager

  • Home Manager using Nix

    Manage a user environment using Nix [maintainer=@rycee]

  • https://github.com/RyanGibb/nixos/

    My config is version controlled, reproducible, manages packages, and is very composable.

    Using the nix package manager and https://github.com/nix-community/home-manager this should work on other Linux distributions, MacOS, and even Windows Subsystem for Linux. Although I haven't tried this for myself yet.

  • stow-simple

    A watered-down version of GNU Stow that does not require tex

  • Stow requires LaTex support to build from source. I tweaked it[0] to make sure it builds without it.

    [0] https://github.com/jvsg/stow-simple

  • dotfiles

    Home Directory Pollution Generator 🤮 (by sethdeckard)

  • setup

    My config, system settings, utilities, etc. (by kbd)

  • nix

    My Nix configuration (by alexghr)

  • - two servers (a raspberrypi in my closet and a Hetzner vps)

    I keep my config on Github (latest branch https://github.com/alexghr/nix/tree/host/vader). I'm still new to this so a lot of my config is duplicated across different hosts but I want to refactor it to eliminate duplication.

    If you haven't yet, I'd recommend giving Nix/NixOS a try. There's a bit of a learning curve but it's very powerful.

  • chezmoi

    Manage your dotfiles across multiple diverse machines, securely.

  • I use chezmoi (http://chezmoi.io) after years of rolling my own. It’s not as straightforward as some home managers, but the extra power it provides is _amazing_ and worth the learning curve.

    I pull some information from the local keychain and others from 1Password (with `op`; I will be moving most of the rest to 1Password from the keychain). It can run additional scripts _after_ each update (I use it to update my fish plug-in installations if I change `fish_plugins`).

    It has integrations with many different password managers so that it is possible truly keep your secrets out of your dotfile configuration and _still_ vary the configuration based on those secrets.

  • Vagrant

    Vagrant is a tool for building and distributing development environments.

  • This is pretty much what vagrant was made for.

    [1] - https://www.vagrantup.com/

  • dotfiles

    My dotfiles (by peteryates)

  • > I can rebuild my configuration(Aside from some fussy embedded toolchains) in half an hour or so. VS code, a few different linters, swissknife, stack tabs, timestamper, indenticator, pylance.... done.

    I can clone my dotfiles repo[0], run a single command that installs all my dependencies[1], another that links my config and I'm done. That gives me a fully-configured neovim with all my plugins (thanks vim-plug) within 2 minutes.

    [0] https://github.com/peteryates/dotfiles/

    [1] https://github.com/peteryates/dotfiles/blob/master/Makefile#...

  • dotfiles

    ~ harry's dotfiles ~ (by lachenmayer)

  • As many others have mentioned, dotfiles in a git repo (https://github.com/lachenmayer/dotfiles), mainly for having unified shell themes/aliases/etc. on all machines I use.

  • dotfiles

    Settings for various tools I use. (by nickjj)

  • I stole/copied my setup from Nick Janetakis who's just great all around. Its worked for me through several new systems and many updates.

    https://github.com/nickjj/dotfiles

  • dotfiles

  • My use case is simpler than yours, as I only have one personal and one work Mac, so I can get away with a manually managed dotfiles repo[0]. My work GitHub account is a collaborator on the repo so I can edit config on both machines. The actual differences in configuration are intentionally minimal and kept in separate, unversioned, optional files. This repo is the only thing shared between my personal and work machines

    [0]: https://github.com/nkantar/dotfiles

  • dotfiles

    My macOS dotfiles, supporting both fish and bash shells (by maxpetretta)

  • I'll echo the other comments recommending to stick with "defaults". However, I do like having the ability to sync my installed packages and apps across machines, so I wrote a little script to update/reinstall packages on macOS using brew: https://github.com/maxpetretta/dotfiles

    Between my dotfiles and cloud storage, you could throw my laptop in a lake and I could configure a brand new machine in an hour or two.

  • rcm

    rc file (dotfile) management

  • I use a tool called rcm[0], which is essentially a set of shell scripts for managing symlinks from $HOME into $HOME/.dotfiles. $HOME/.dotfiles can then be a git repo.

    Some notes:

    1. rcm lets you decide make host-specific or host-agnostic dotfiles. For example, I can declare that I want a different `.ssh/config` file for each host, and rcm will figure out which `.ssh/config` to symlink based on the current machine's hostname.

    2. The installation process is very simple. It's just shell scripts, so you don't have to have a compiler. Operating system packages exist for the common platforms, and there's also a convenient way to "build" from source using configure && make && make install. The from source option is particularly convenient if you need to change the installation prefix to a user-writable location on a multi-user machine.

    3. I use SSH Agent Forwarding[1] to avoid needing to install private keys (either new keys or copies of existing keys) on all the hosts I manage. This lets me git push and pull to my dotfiles repo on all hosts.

    4. Taking it a step further, some shell config I have is host-specific (e.g., certain PATH modifications I only want to apply on certain hosts). Rather than use the host-specific dotfile feature of rcm for the whole .bashrc, I factor my shell config files into multiple files, that I then source. One of these files is called `$HOME/.util/host.sh`, which is host specific. Again, rcm creates a symlink from this to the correct host-specific file automatically by hostname.

    If you're curious to learn more about any of this, my dotfiles are public.[2]

    [0] https://github.com/thoughtbot/rcm

    [1] https://docs.github.com/en/developers/overview/using-ssh-age...

    [2] https://github.com/jez/dotfiles

  • dotfiles

    My personal collection of configuration files. (by jez)

  • I use a tool called rcm[0], which is essentially a set of shell scripts for managing symlinks from $HOME into $HOME/.dotfiles. $HOME/.dotfiles can then be a git repo.

    Some notes:

    1. rcm lets you decide make host-specific or host-agnostic dotfiles. For example, I can declare that I want a different `.ssh/config` file for each host, and rcm will figure out which `.ssh/config` to symlink based on the current machine's hostname.

    2. The installation process is very simple. It's just shell scripts, so you don't have to have a compiler. Operating system packages exist for the common platforms, and there's also a convenient way to "build" from source using configure && make && make install. The from source option is particularly convenient if you need to change the installation prefix to a user-writable location on a multi-user machine.

    3. I use SSH Agent Forwarding[1] to avoid needing to install private keys (either new keys or copies of existing keys) on all the hosts I manage. This lets me git push and pull to my dotfiles repo on all hosts.

    4. Taking it a step further, some shell config I have is host-specific (e.g., certain PATH modifications I only want to apply on certain hosts). Rather than use the host-specific dotfile feature of rcm for the whole .bashrc, I factor my shell config files into multiple files, that I then source. One of these files is called `$HOME/.util/host.sh`, which is host specific. Again, rcm creates a symlink from this to the correct host-specific file automatically by hostname.

    If you're curious to learn more about any of this, my dotfiles are public.[2]

    [0] https://github.com/thoughtbot/rcm

    [1] https://docs.github.com/en/developers/overview/using-ssh-age...

    [2] https://github.com/jez/dotfiles

  • frizlabs-conf

    Frizlab’s dotfiles and co.

  • dotfiles

    Personal configs and hacks for Linux. (by danisztls)

  • Basically I use Git, ln and a setup script that I wrote.

    https://github.com/danisztls/dotfiles

  • caps2esc

    Discontinued Transforming the most useless key ever in the most useful one

  • vscode-in-docker

    Run VSCode inside of a Docker Container

  • I have put vscode into a docker container. This allows you to commit the settings via git.

    https://github.com/pubkey/vscode-in-docker

  • Rectangle

    Move and resize windows on macOS with keyboard shortcuts and snap areas

  • Just as a sidenote, because I was using Spectacle as well. JFYI: As it is no longer maintained, I switched to Rectangle (https://github.com/rxhanson/Rectangle) and can highly recommend it.

  • homeshick

    git dotfiles synchronizer written in bash

  • Homeshick for dotfiles: https://github.com/andsens/homeshick

    Docker for Obsidian and Alfred syncing - the three target limit on the free tier is just barely enough for 2 of my own computers and my work laptop.

    I've also got a Brewfile for installing the basic tooling on macOS

    I also have a "how to set up a new computer/server" document on Notion that I use so I don't forget any steps.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts