add ansible playbook setup

This commit is contained in:
Alexander Navarro 2025-07-21 11:57:03 -04:00
parent 78bfbc3ed6
commit dbd29507bb
9 changed files with 179 additions and 14 deletions

View file

@ -156,6 +156,7 @@ vim.filetype.add({
-- ╰─────────────────────────────────────────────────────────╯
vim.lsp.enable({
"ansiblels",
"bashls",
"lua_ls",
"nushell",
"pyright",

View file

@ -2,7 +2,7 @@
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
[manager]
[mgr]
prepend_keymap = [
{ on = ["<Esc>"], run = "escape --all", desc = "Exit visual mode, clear selected, or cancel search" },

View file

@ -1,12 +1,7 @@
[[plugin.deps]]
use = "yazi-rs/plugins:full-border"
rev = "5186af7"
hash = "ae9e1d0c6bfd68cdebc98cc684c22b45"
[[plugin.deps]]
use = "GianniBYoung/rsync"
rev = "3f431aa"
hash = "1854a5a30d23e84bc8df24700f27957b"
rev = "1ab21d4"
hash = "3996fc74044bc44144b323686f887e1"
[[plugin.deps]]
use = "Ape/simple-status"
@ -15,10 +10,10 @@ hash = "68603fdd1dcaf415227e2c77a9317947"
[[plugin.deps]]
use = "yazi-rs/plugins:smart-enter"
rev = "5186af7"
hash = "aef2b1a805b80cce573bb766f1459d88"
rev = "1ab21d4"
hash = "56fdabc96fc1f4d53c96eb884b02a5be"
[[flavor.deps]]
use = "yazi-rs/flavors:catppuccin-macchiato"
rev = "c023460"
hash = "3ec21bcfd2735cfcbab61faaf43e59e4"
rev = "d3fd3a5"
hash = "e6c5beeb1da3199355734273ee452a7f"

View file

@ -1,2 +1,3 @@
[flavor]
use = "catppuccin-macchiato"
light = "catppuccin-macchiato"
dark = "catppuccin-macchiato"

View file

@ -2,7 +2,7 @@
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
[manager]
[mgr]
ratio = [1, 3, 4]
sort_by = "alphabetical"
sort_sensitive = false

View file

@ -5,6 +5,12 @@
Please ensure the that git is installed and you have an ssh key registered,
then execute the following command:
```bash
curl -SsL https://git.alecodes.page/alecodes/dots/raw/branch/main/bootstrap/bootstrap.sh | bash
```
Optionally, manually clone the repo to `~/.config/dotfiles/` and then execute:
```bash
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash

27
bootstrap/bootstrap.sh Executable file
View file

@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -eou pipefail
if ! command -v uv >/dev/null 2>&1; then
echo -e "Installing UV...\n"
curl -LsSf https://astral.sh/uv/install.sh | sh
fi
echo -e "Executing playbook...\n"
if [[ -d ~/.config/dotfiles ]]; then
pushd ~/.config/dotfiles/bootstrap/ || exit
# dotfiles are cloned, executed localy
uvx --from ansible ansible-playbook --ask-become-pass -v bootstrap.yaml
else
# dotfiles are not cloned, executed remotly
uvx --from ansible ansible-pull --ask-become-pass --url ssh://git@git.alecodes.page:24062/alecodes/dots.git bootstrap/bootstrap.yaml
fi
popd || exit
echo -e "Done!\n"

61
bootstrap/bootstrap.yaml Normal file
View file

@ -0,0 +1,61 @@
- name: Bootstrap system installation
hosts: localhost
vars_files:
- ./variables.yaml
tasks:
- name: Fedora setup
when: ansible_facts['distribution'] == "Fedora"
block:
- name: Enable copr repos
become: true
loop: "{{ distros.fedora.copr }}"
community.general.copr:
state: enabled
name: "{{ item }}"
- name: Install packages
become: true
ansible.builtin.package:
state: present
name: "{{ distros.Global.packages }}"
- name: 'Ensure rustup is setup'
ansible.builtin.command: "{{ (ansible_facts['pkg_mgr'] in ['dnf5']) | ternary('rustup-init -y --no-modify-path', 'rustup --no-modify-path -y') }}"
args:
creates: ~/.cargo/env
- name: "Installing Cargo Binstall"
ansible.builtin.unarchive:
remote_src: true
src: https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz
dest: "{{ ansible_env.HOME }}/.cargo/bin/"
keep_newer: true
extra_opts:
- "--no-anchored"
- "cargo-binstall"
- name: 'Install cargo packages'
loop: "{{ distros[ansible_facts['distribution']].cargo }}"
ansible.builtin.command:
cmd: "cargo binstall --no-confirm --locked {{ item.pkg }}"
creates: "{{ ansible_env.HOME }}/.cargo/bin/{{ item.bin }}"
- name: Generate an OpenSSH keypair
community.crypto.openssh_keypair:
path: ~/.ssh/id_ed25519
type: ed25519
- name: Clone dotfiles
ignore_errors: true
notify: Deploy dots
ansible.builtin.git:
accept_newhostkey: true
repo: ssh://git@git.alecodes.page:24062/alecodes/dots.git
dest: ~/.config/dotfiles
update: true
version: main
handlers:
- name: Deploy dots
ansible.builtin.command: tuckr add *

74
bootstrap/variables.yaml Normal file
View file

@ -0,0 +1,74 @@
distros:
Fedora:
copr:
- atim/lazygit
- the4runner/firefox-dev
packages: {}
cargo:
- pkg: yazi-fm
bin: yazi
- pkg: yazi-cli
bin: yazi
Global:
packages:
- adwaita-cursor-theme
- adwaita-icon-theme
- adwaita-icon-theme-legacy
- adwaita-mono-fonts
- adwaita-sans-fonts
- bat
- breeze-icon-theme
- breeze-icon-theme-fedora
- curl
- duf
- eza
- fd-find
- firefox-dev
- fish
- flatpak
- fzf
- git
- grim
- kitty
- lazygit
- neovim
- nodejs
- openssh
- openssh-askpass
- openssh-clients
- openssh-server
- openssl
- openssl-devel
- openssl-libs
- php-cli
- php-common
- php-intl
- php-mbstring
- php-pecl-zip
- php-process
- php-soap
- php-xml
- rhythmbox
- ripgrep
- rofi-themes
- rofi-wayland
- rofimoji
- rootfiles
- rsync
- rustup
- sd
- sed
- sushi
- swappy
- tailscale
- tealdeer
- trash-cli
- tree
- tree-sitter-cli
- udisks2
- unrar
- unrar-free
- unzip
- zip
- zoxide