NixOS is great and I’ve migrated most of my linux boxes to NixOS. Nix allows you to configure application-specific settings, removing the need to host a separate doftfiles repository. However, there are still machines like my MacBooks that I prefer to run whatever OS that it came with, and ideally I would like them to share the same dotfiles among them. Instead of configuring each application via nix, I choose to symlink the configs via home-manager
:
{ config, ... }: {
# take lazygit for example
home.packages = [ pkgs.lazygit ];
xdg.configFile.lazygit.source = config.lib.file.mkOutOfStoreSymlink "/path/to/dotfiles/dir/lazygit";
}
This will create a symlink from /path/to/dotfiles/dir/lazygit
to ~/.config/lazygit
.
For dotfiles that are placed outside of ~/.config
, the following config will work instead:
{ config, ... }: {
# take vim for example
home.packages = [ pkgs.vim ];
home.file.".vimrc".source = config.lib.file.mkOutOfStoreSymlink "/path/to/dotfiles/dir/vim/.vimrc";
}
This will create a symlink from path/to/dotfiles/dir/vim/.vimrc
to ~/.vimrc
.
Adwin Ying
Self-taught full-stack web dev based in Tokyo.
Occasionally wrecks servers through
self-hosting
and
homelab-ing.