An Ansible playbook to configure a Fedora workstation
Usage • Roles • Theming • License
This Ansible playbook installs and maintain all the packages and dotfiles I use in my development environment. It is based on roles and prepared to work over a fresh Fedora minimal installation.
The following command is all you need to have it ready to roll:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/davidmogar/mr-meeseeks/main/mr-meeseeks.sh)"
And in case of using wget:
sh -c "$(wget -O- https://raw.githubusercontent.com/davidmogar/mr-meeseeks/main/mr-meeseeks.sh)"
A specific profile can be applied by setting the PROFILE
variable before the bootstraping commands. The definition of these profiles can be found in the host_vars
directory. If no profile is specified, the generic profile will be applied. The following example shows how to use this variable:
PROFILE=zoidberg sh -c "$(curl -fsSL https://raw.githubusercontent.com/davidmogar/mr-meeseeks/main/mr-meeseeks.sh)"
It is also possible to run only specifc parts by using the --tags
options. For example, the following command will only run the bootstrap tasks, which will prepare the repositories and install some required packages:
PROFILE=zoidberg TAGS=bootstrap sh -c "$(curl -fsSL https://raw.githubusercontent.com/mr-meeseeks/main/mr-meeseeks.sh)"
Once the system has been bootstrapped, a copy of the git repository will be placed in ${HOME}/.ansible/dotfiles
. To apply the playbook manually from that repository, execute the following commands:
cd ~/.ansible/dotfiles
git pull origin main
ansible-playbook -i inventory playbook.yml --diff [--limit PROFILE] [--tags TAGS] --ask-become-pass
Note that both, limit and tags, are optional arguments.
Name | Description |
---|---|
alacritty | Installs Alacritty. |
bluetooth | Configures bluetooth. |
bspwm | Installs bspwm and set up the wallpaper by using feh. |
chrome | Installs Chrome. |
cli-utilities | Installs a curated list of CLI utilities. |
dunst | Configures system notifications to use dunst. The flag enable-native-notifications is required to get native notifications with Chrome. |
feh | Installs feh. This roles provides an script to set the theme wallpapers. The script is used by bspwm. |
fonts | Installs a curated list of fonts. |
irssi | Installs irssi. |
neovim | Installs Neovim. |
picom | Installs picom compositor. |
polybar | Installs polybar. |
rofi | Installs rofi. |
sound | Installs pipewire and configure Alsa. |
sdkman | Installs sdkman |
sudo | Configures sudoers file. |
sxhkd | Installs sxhkd and sets key bindings. |
vscode | Installs VS Code. |
xdg-user-dirs | Configures default directories, allowing to point them to external volumes. |
xorg | Installs Xorg. |
wifi | Install wifi related packages. |
zsh | Installs zsh along with autosuggestions and syntax-highlighting plugins. |
Some of the roles defined above allow to change their theme, affecting the look of the installed applications. This theme can be selected by defining an existing value for the theme_name
variable:
theme_name: redhat
The list of available themes can be checked by listing the files inside the files/themes
directory in any customizable role such as alacritty.
This project is under the GNU General Public License v3.0. Check LICENSE file to see the full text full text.