Conf42 Open Source Showcase 2020 - Online

- premiere 5PM GMT

chezmoi: Manage your dotfiles across multiple machines, securely

Video size:


Another dotfile manager? chezmoi aims to solve the dotfile management problem Once And For All™, allowing keep your personal configuration files in sync wherever you login. It’s familiar, fast, flexible, full featured, secure, easy to install, and runs everywhere. Join this talk to find out more!

In just 10 minutes, we’ll quickly justify the problem that chezmoi tries to solve, and then dive in to a fast demonstration of its key features to help you decide if chezmoi is useful to you. We’ll do a quick comparison with other dotfile managers, and spend one slide on chezmoi’s technical choices, before leaving you with clear next steps to get started with chezmoi yourself.


  • Tom Payne talks about Shamewa, a dot file manager. A dot file is a generic term for your personal configuration files. Shamewire is extremely flexible and runs on Linux, macOS, even Windows. It has great support for maintaining secrets on different machines.
  • Shaynoir is very easy to install. Allows you to share dot files between multiple machines. Can also integrate with all different password managers. Has loads of variables you can use to switch behavior from machine to machine.


This transcript was autogenerated. To make changes, submit a PR.
Hi, welcome to comp 42 open source showcase. I'm Tom Payne. I'm an open source developer living in Zurich, and today I'm going to talk about Shamewa in ten minutes. What is Shamewa? It's a dot file manager. Firstly, what's a dot file? A dot files is a generic term for your personal configuration files. They're where you configuration and tune your tools like Git, your editor, your shell and so on. They're generally very personal. And if you invested time in configuring these tools, then you generally want to use your configurations on as many machines as possible. For example, you want to share config between your home laptop, home server, your work laptop and your work server. What makes shamewire particularly interesting? Well, it's extremely flexible. It runs everywhere. Linux, macOS, even Windows, Windows services for Linux, Termux, you name it, shamewire runs there. It supports all the sort of variations you might want from machine to machine in a very easy to use way. It's very secure. It has great support for maintaining secrets on different machines and making sure that secrets do not get checked out onto machines where they don't need to be. This is great. For example, it means that your home secrets don't get checked out on your work machine and your work secrets don't get checked out on your home machine. It's very cross platform, as I mentioned, very easy to install. Why should you use a dotfiles manager at all? Well, if you've invested the time in your creating your dot files, then you generally want to use those configuration as widely as possible. It's great backup if you lose access to your machine for whatever reason, hard disk failure, or if you want, you're setting up a new machine and you want to get your configuration up and running as quickly as possible. In a new machine you get all the advantages of version control, checking stuff into a git repo history, rollbacks, we're all very familiar with that. And finally, the careful management of secrets. So, enough intro, let's go straight into a little demo. This is a Mac mini I've just installed. It's completely empty. Apart from installing homebrew, the machine is virgin. Shaynoir is very easy to install. It's in homebrew. There are packages for every major Linux distribution, devs and rpms. There are pre built binaries, there's an online shell script install. It's very quick to get into your machine. Now I've already got files example. I have an example file repo here which I'll now check out onto disk machines. This will ask you for email, which I won't give right now. It's configurable. I'll explain that later. Okay, so Chainmar's checked out the git repo. We can actually see what it's shown. It's here in this dick example. There are just a couple of dot files and one directory. We can now apply those changes. We can see the changes that shamar would make. First it's going to create the git config and netrc shmire apply actually causes Shamar to write those files. It does so in a very robust fashion, and we'll see that there's no changes and indeed the doc files exist. That's not particularly interesting. Let's show allowing a dot file between multiple machines. Here is a little Linux box using the same dot file git repo let's say I'm going to have a Tmux config. I want to get Shimoir to add it. This has added it to the git repo, but not pushed it. Shimla can automatically create commits and push them for you, but I haven't done this. Just show more clearly what's happening here. We can add our dot file to our repo and push it there. It's off on GitHub. Back to my Mac now I can pull these changes in with the update, see what Saturn and Shmwire has pulled the changes and applied them. So it makes it very easy to share dot files between multiple machines that on its own is not particularly interesting. Let's look at a more interesting example. So the dot file repo contains a one to one mapping between dot files in your home directory and files in a repo. There's no extra configuration file there, it's just all of the attributes of the file, for example, private, their templates, et cetera, are stored in the files name. Git config is particularly interesting. The final file is gint config, but you look at the source file, it's actually a template, as indicated by the template suffix. And these curly brackets here indicate this is a template variable and we can switch based on those template variables. Email was prompted to me when I first inerted shame wa. But you can use whatever variables you want. You can define your own. And Shanewa provides a whole load of variables you can use to switch behavior from machine to machine, including architecture, operating system, et cetera, et cetera for secret management. So that's a basic template. Another example is secret management, an example file that might have a secret is netrc. This contains a password and it needs to be have private permissions. Only the user can runs it and the wis is represented with this private prefix in the source here, which means that Shimar creates the permissions correctly and it's a template as well. What's interesting is we want a password present on disk, but we don't want the password in our doc files repo because everyone can read that if we look at the actual sources. Actually it's also a template, but here I'm using a magic function secret which in this case decodes the secret. This magic function can also integrate with all different password managers. Personally I use last password equally. You can use one pass, keychain, goPass, whatever you want. This way the secrets are either encrypted or started in your password manager, and shamewire transparently retrieves them when need them, when they actually create the dock files on the list. So that's a quick example of showing config to machines Koopu differences from machine to machine, personal configuration variables and secret management running on both Linux and macOS. The shamewire has loads more to it. It's very nicely documented at shinwa IO with a full quick start how to reference guide, et cetera, et cetera. Why do I think you should use Chimoa, not any other file manager? Well, it's very widely used now. It's got over 2.6 thousand stars on GitHub. It's easy to install, it runs everywhere. It creates real regular files on your home, in your home directory, not sim links into a central location like glue snow. That means it's very easy to move from machine to machines. If you choose not to use shamewire in the future, it's very easy to migrate away from it. Shamewire maintains a single source of truths, that single files which often template but it handles diverse perfumes very well, has great secret management and there's loads of extra functionality which you can read about in documentation. Under the hood, it's single binary, statically linked in crest platform. This means there are no external dependencies when you come to install it. In contrast with other dotfiles manager that might be written in scripting language like Python or Ruby, you'll need to install the language runtime first before you can use the dot file manager. Shamewire single binary, no depths runs everywhere, integrates very well with third party tools. By default you can use git use git for your repo, but it can be whatever you want. It uses GPG for encrypting files and the password manager's command line interfaces. It does atomic updates of files. It never writes a partial file. So even if your update process interrupted, you don't corrupt your. Doc files. There's a very transparent source format. You get a one to one correspondence between files in your source directory and files in your home directory. It's MIT licensed, very liberal, and it's written go. You can find gwpainshinoir and the main website itself is Shamewire. IO machines was written to scratch your personal it's been very useful for me. I hope it can be very useful to you too. Thank you.

Tom Payne

Creator @

Awesome tech events for

Priority access to all content

Video hallway track

Community chat

Exclusive promotions and giveaways