dotfiles
Ansible playbooks, which idempotently configure new system with a single bootstrap command.
Bootstrap
sudo apt-get update && \
sudo apt-get install git make --yes --no-install-recommends && \
git clone https://github.com/rudenkornk/dotfiles ~/projects/dotfiles && \
cd ~/projects/dotfiles && make
Features
- 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
cannot be pinned, so I rely on stability ofCanonical
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 20.04
,Ubuntu 22.04
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.
Tools
While being decently generic, this config focuses more on some tools rather than others:
- Neovim.
Neovim
config is based on NvChad. 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.
Try this config
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.
make check_host
podman exec --interactive --tty --workdir $(pwd) --user $(id --user) dotfiles_22.04 fish
Fork
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 in
roles/secrets/files
.
Update components versions
make update
Show role dependency graph
make graph
Test
make check UBUNTU_TAG=22.04
make check UBUNTU_TAG=22.10