Ansible playbooks, which idempotently configure new system with a single bootstrap command.
git clone https://github.com/rudenkornk/dotfiles ~/projects/dotfiles && \
cd ~/projects/dotfiles && \
./main.sh config
- Ansible!
Config utilizes a fully-fledged configuration manager, specifically designed to put machines into a desired end state.
Config is idempotent and is capable of configuring not only
localhost
, but also several remote machines at once. - Stable and reproducible.
All the program versions that can be pinned are pinned.
Amongst other tools, that includes
ansible
itself,neovim
and all its plugins. Packages, managed byapt
anddnf
cannot be pinned, so we rely on stability ofCanonical
andRedHat
packages update front. - Easily updatable.
Versions are stored in manifests and can be easily updated with a single command.
neovim
'slazy-lock.json
however is managed separately by lazy. - Supports & tested under
Ubuntu 22.04-24.04
,Fedora 38-40
, and also includes WSL support. On Windows it integrates with the system clipboard. - Secrets inside the repo.
All the credentials, ssh keys, VPN configs can be stored directly in the repo with support of the git secret.
gpg key
is optional: config works fine if it is not provided and secrets are not decrypted. - Bootstrap with a single command.
Aside from
OS
limitations, there are zero requirements.
While being decently generic, this config focuses more on some tools rather than others:
- Neovim.
Neovim
config is based on LazyVim. It follows all its guidelines and documentation adding tons of useful plugins on top, while still being "blazingly fast", thanks to lazy-loading. - tmux.
tmux
integrates withNeovim
, which allows to seamlessly use keys for moving around and resizing windows. - fish.
Main shell in this config is
fish
, which integrates with interactivefzf
,ripgrep
andbat
. There is some support forbash
though. - C++.
Config provides releases of
cmake
,LLVM
andGCC
toolchains as well as editor support. - Config also provides some support for Python, LaTeX and Lua.
Config is tested inside podman
containers, which can also be used to try this config.
Note, that this will install some tools (like python
and podman
) on your system.
This will not install any specific configs though.
./main.sh config --target dotfiles_ubuntu_22.04
podman exec --interactive --tty --workdir $(pwd) --user $(id --user) dotfiles_ubuntu_22.04 fish
The first things you would want to customize if forking this repo are:
- Personal information in
roles/profile/vars/main.yaml
. - Credentials, ssh keys and vpn configs shown in
git secret list
.
./main.sh update
./main.sh graph
./main.sh
./main.sh config --target dotfiles_ubuntu_22.04