WIP: migrate every package to a single file style #1

Draft
stobbsm wants to merge 48 commits from move_to_single_file_pkgs into main
16 changed files with 236 additions and 2444 deletions
Showing only changes of commit 24a4ec17ec - Show all commits

View File

@@ -1,15 +1,28 @@
# vim: set filetype=yaml.ansible :
---
- name: Set common facts
ansible.builtin.set_fact:
distribution: "{{ ansible_facts['distribution'] }}"
system: "{{ ansible_facts['system'] }}"
os_family: "{{ ansible_facts['os_family'] }}"
user_dir: "{{ ansible_facts['user_dir'] }}"
user_id: "{{ ansible_facts['user_id'] }}"
user_gid: "{{ ansible_facts['user_gid'] }}"
os_version:
major: "{{ ansible_facts['distribution_major_version'] }}"
version: "{{ ansible_facts['distribution_version'] }}"
release: "{{ ansible_facts['release'] }}"
- name: Set package_home_base for Darwin
when:
- ansible_facts["system"] == 'Darwin'
- system == 'Darwin'
ansible.builtin.set_fact:
package_home_base: /Users
- name: Set package_home_base for Linux
when:
- ansible_facts["system"] == 'Linux' or
ansible_facts["os_family"] == 'FreeBSD'
- system == 'Linux' or
os_family == 'FreeBSD'
ansible.builtin.set_fact:
package_home_base: /home
@@ -22,7 +35,7 @@
path_source: "{{ install_prefix }}/source"
path_go: "{{ install_prefix }}/go"
path_pipx: "{{ install_prefix }}/pipx"
store_path: "{{ ansible_facts['user_dir'] }}/.cache/ansible_role_package"
store_path: "{{ user_dir }}/.cache/ansible_role_package"
path_lib: "{{ install_prefix }}/lib"
- name: Set install_become_group from install_become_user
@@ -34,7 +47,7 @@
- name: Set Linux specific facts
when:
- ansible_facts["system"] == 'Linux'
- system == 'Linux'
ansible.builtin.set_fact:
pipx_exec: "/usr/bin/pipx"
path_lib: lib64
@@ -42,13 +55,13 @@
- name: Set alpine linux specific facts
when:
- ansible_facts["os_family"] == 'Alpine'
- os_family == 'Alpine'
ansible.builtin.set_fact:
path_lib: lib
- name: Set dist code if RedHat based
when:
- ansible_facts["os_family"] == 'RedHat'
- os_family == 'RedHat'
changed_when: false
register: rpm_dist
ansible.builtin.command:
@@ -56,8 +69,8 @@
- name: Set macOS specific facts
when:
- ansible_facts["distribution"] == 'MacOSX' or
ansible_facts["distribution"] == 'MacOS'
- distribution == 'MacOSX' or
distribution == 'MacOS'
ansible.builtin.set_fact:
brewtap: [] # homebrew taps to add
pipx_exec: "/opt/homebrew/bin/pipx" # pipx executable

View File

@@ -13,8 +13,8 @@
ansible.builtin.file:
path: "{{ store_path }}"
mode: '0755'
owner: "{{ ansible_facts['user_id'] }}"
group: "{{ ansible_facts['user_gid'] }}"
owner: "{{ user_id }}"
group: "{{ user_gid }}"
state: directory
- name: Ensure required paths exists
@@ -43,19 +43,19 @@
- name: Add needed packages for Fedora
when:
- ansible_facts["distribution"] == 'Fedora'
- distribution == 'Fedora'
ansible.builtin.set_fact:
pkg_sys: "{{ packages_extra + ['python3-paramiko'] }}"
- name: Add needed MacOS packages
when:
- ansible_facts["distribution"] == 'MacOSX'
- distribution == 'MacOSX'
ansible.builtin.set_fact:
pkg_sys: "{{ packages_extra + ['gnu-tar', 'virtualenv'] }}"
- name: Add needed Alpine packages
when:
- ansible_os_family == 'Alpine'
- os_family == 'Alpine'
ansible.builtin.set_fact:
pkg_sys: "{{ packages_extra + ['tar', 'unzip'] }}"
@@ -162,13 +162,13 @@
- name: Linux specific tasks
when:
- ansible_facts["system"] == 'Linux'
- system == 'Linux'
ansible.builtin.include_tasks:
file: linux.yml
- name: MacOS specific tasks
when:
- ansible_facts["distribution"] == 'MacOSX'
- distribution == 'MacOSX'
ansible.builtin.include_tasks:
file: macos.yml

View File

@@ -50,4 +50,4 @@
# }}}
- name: Finalize air configuration
ansible.builtin.set_fact:
__configured: "{{ __configured | combine( { 'air': true } ) }}"
__configured: "{{ __configured | combine( { 'air': air_install_method } ) }}"

View File

@@ -26,7 +26,7 @@
- name: Set alacritty build facts
ansible.builtin.set_fact:
alacritty_src_install:
build_deps: "{{ alacritty.build_deps[ansible_facts['os_family']] }}"
build_deps: "{{ alacritty.build_deps[os_family] }}"
build_flags: "{{ alacritty_cargo_build_flags }}"
source_dir: "{{ alacritty.install_files.source_dir }}"
repo: "{{ alacritty_git_repo }}"
@@ -60,12 +60,12 @@
- name: Configure pkg dependencies
loop: "{{ alacritty.pkg_deps }}"
loop_control:
loop_var: pkg
ansible.builtin.include_tasks: "pkgs/{{ pkg }}.yml"
loop_var: dep
ansible.builtin.include_tasks: "pkgs/{{ dep }}.yml"
- name: Append build dependencies and cargo config
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + build_deps }}"
pkg_sys: "{{ pkg_sys + alacritty_build_deps }}"
pkg_cargo_build: "{{ pkg_cargo_build + [alacritty_src_install] }}"
- name: Append alacritty to pkg_sys
@@ -76,4 +76,4 @@
- name: Complete alacritty configuration
ansible.builtin.set_fact:
__configured: "{{ __configured | combine( { 'alacritty': true } ) }}"
__configured: "{{ __configured | combine( { 'alacritty': alacritty_install_method } ) }}"

View File

@@ -24,4 +24,4 @@
- name: Complete ansible configuration
ansible.builtin.set_fact:
__configured: "{{ __configured | combine( { 'ansible': true } ) }}"
__configured: "{{ __configured | combine( { 'ansible': ansible_install_method } ) }}"

31
tasks/pkgs/cargo.yml Normal file
View File

@@ -0,0 +1,31 @@
# vim: set filetype=yaml.ansible :
---
- name: Configure cargo
when:
- "'cargo' not in __configured"
block:
- name: Set cargo install method
when:
- cargo_install_method is undefined
ansible.builtin.set_fact:
cargo_install_method: "{{ install_method if install_method in cargo_install_methods else cargo_install_methods[0] }}"
- name: Add dependencies
when:
- cargo_pkgdeps is defined
loop: cargo_pkgdeps
loop_control:
loop_var: dep
ansible.builtin.include_tasks: "pkgs/{{ dep }}.yml"
- name: Append cargo to install list
when:
- cargo_install_method == "system"
block:
- name: Queue cargo install
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + [cargo_pkgname] }}"
- name: Finalize cargo configuration
ansible.builtin.set_fact:
__configured: "{{ __configured | combine ( { 'cargo': cargo_install_method } ) }}"

View File

@@ -1,5 +1,21 @@
# vim: set filetype=yaml.ansible :
---
- name: Append direnv to pkg_sys
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + ['direnv'] }}"
- name: Configure direnv
when:
- "'direnv' not in __configured"
block:
- name: Set direnv install method
when:
- direnv_install_method is undefined
ansible.builtin.set_fact:
direnv_install_method: "{{ install_method if install_method in direnv_install_methods else direnv_install_methods[0] }}"
- name: Append direnv to pkg_sys
when:
- direnv_install_method == "system"
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + ['direnv'] }}"
- name: Finalize direnv configuration
ansible.builtin.set_fact:
__configured: "{{ __configured | combine( { 'direnv': true } ) }}"

View File

@@ -1,5 +1,14 @@
# vim: set filetype=yaml.ansible :
---
- name: Configure neovim
when:
- "'neovim' not in __configured"
block:
- name: Set neovim install method
when:
- neovim_install_method is undefined
ansible.builtin.set_fact:
neovim_install_method: "{{ install_method if install_method in neovim_install_methods else neovim_install_methods[0] }}"
- name: Load neovim config
ansible.builtin.include_tasks:
file: config/neovim.yml

View File

@@ -1,9 +1,29 @@
# vim: set filetype=yaml.ansible :
---
- name: Load rust config
ansible.builtin.include_tasks:
file: config/rust.yml
- name: Configure rust
when:
- "'rust' not in __configured"
block:
- name: Set rust install method
when:
- rust_install_method is undefined
ansible.builtin.set_fact:
rust_install_method: "{{ install_method if install_method in rust_install_methods else rust_install_methods[0] }}"
- name: Install rust and cargo
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + rust.pkgs }}"
- name: Add dependencies
loop: rust_pkgdeps
loop_control:
loop_var: dep
ansible.builtin.include_tasks: "pkgs/{{ dep }}.yml"
- name: Append rust to install list
when:
- rust_install_method == "system"
block:
- name: Queue rust install
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + [rust_pkgname] }}"
- name: Finalize rust configuration
ansible.builtin.set_fact:
__configured: "{{ __configured | combine ( { 'rust': rust_install_method } ) }}"

View File

@@ -2,12 +2,12 @@
---
- name: Add starship
when:
- starship_configured is undefined
- "'starship' not in __configured"
block:
- name: Append starship to pkg_cargo
ansible.builtin.set_fact:
pkg_cargo: "{{ pkg_cargo + [{'name': 'starship', 'locked': true}] }}"
- name: Set starship_configured
- name: Finalize startship configuration
ansible.builtin.set_fact:
starship_configured: true
__configured: "{{ __configured | combine( { 'starship': true } ) }}"

View File

@@ -1,11 +1,19 @@
# vim: set filetype=yaml.ansible :
---
- name: Add zoxide
- name: Configure zoxide
when:
- "'zoxide' not in __configured"
block:
- name: Set zoxied install method
when:
- zoxide_install_method is undefined
ansible.builtin.set_fact:
zoxide_install_method: "{{ install_method if intall_method in zoxide_install_methods else zoxide_install_methods[0] }}"
- name: Append zoxide to pkg_sys
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + ['zoxide'] }}"
- name: Set zoxide_configured
ansible.builtin.set_fact:
zoxide_configured: true
__configured: "{{ __configured | combine( { 'zoxide': true } ) }}"

View File

@@ -92,6 +92,9 @@ bashls_install_methods:
- source
bashls_npm_pkgname: bash-language-server
# }}}
# cargo {{{
cargo_pkgname: cargo
# }}}
# {{{ go
go_archive_version: 1.25.6
go_archive_archmap:
@@ -124,6 +127,52 @@ go_pkgname:
1.23: go123
1.22: go122
# }}}
# neovim {{{
neovim_version: master
neovim_build_type: Release
neovim_git_repo: https://github.com/neovim/neovim
neovim_appimage:
base_url: https://github.com/neovim/neovim/releases/download
link_name: nvim
neovim_pkgname:
RedHat: neovim
Debian: neovim
Darwin: neovim
FreeBSD: neovim
neovim_build_deps:
RedHat:
- cmake
- curl
- gcc
- gettext
- glibc-gconv-extra
- make
- ninja-build
Debian:
- build-essential
- cmake
- curl
- gettext
- ninja-build
Darwin:
- cmake
- curl
- gettext
- ninja
Alpine:
- build-base
- cmake
- coreutils
- curl
- gettext-dev
neovim_build_files:
- lib64/nvim
- bin/nvim
- share/nvim
- share/applications/nvim.desktop
- share/icons/hicolor/128x128/apps/nvim.png
- share/man/man1/nvim.1
# }}}
# {{{ nerdfonts
nerdfonts_install_list:
- JetBrainsMono
@@ -135,6 +184,11 @@ nerdfonts_install_list:
nerdfonts_base_url: https://github.com/ryanoasis/nerd-fonts/releases/latest/download
nerdfonts_install_path: share/fonts
# }}}
# rust {{{
rust_pkgname: rust
rust_pkgdeps:
- cargo
# }}}
# {{{ zsh
zsh_base_url: git://git.code.sf.net/p/zsh/code
zsh_version: zsh-5.9

View File

@@ -32,7 +32,7 @@ alacritty: # {{{
pkg_deps:
- git
- cargo
sys_build_deps:
build_deps:
RedHat:
- cmake
- fontconfig-devel
@@ -84,29 +84,53 @@ ansible_lint: # {{{
- pipx
- system
# }}}
ansible_install_methods:
- system
ansible_ls_install_methods:
- source
- system
aquamarine_install_methods:
- source
git_install_methods:
- system
go_install_methods:
- archive
- system
hyprland_install_methods:
- source
nerdfonts_install_methods:
- archive
- system
yazi_install_methods:
- source
- cargo
zsh_install_methods:
- system
- source
ansible:
install_methods:
- system
ansible_ls:
install_methods:
- source
- system
direnv:
install_methods:
- system
cargo:
install_methods:
- system
git:
install_methods:
- system
go:
install_methods:
- archive
- system
hyprland:
install_methods:
- source
neovim:
install_methods:
- source
- system
- appimage
- archive
nerdfonts:
install_methods:
- archive
- system
rust:
install_methods:
- system
yazi:
install_methods:
- source
- cargo
zoxide:
install_methods:
- system
zsh:
install_methods:
- system
- source
## Package specific configuration that never need to be set by the installer
__nerdfonts: # {{{

View File

@@ -1,7 +0,0 @@
# vim: set filetype=yaml.ansible :
---
aquamarine:
version: v0.8.0
pkg_deps:
- hyprwayland_scanner
- hyprutils

File diff suppressed because it is too large Load Diff

View File

@@ -1,177 +0,0 @@
# vim: set filetype=yaml.ansible :
---
# Font key is the name from [https://www.nerdfonts.com/font-downloads]
# If the archive name is different from the listed name, it is set as the archive key
nerdfonts:
fonts:
0xProto:
brew: font-0xproto-nerd-font
"3270":
brew: font-3270-nerd-font
Agave:
brew: font-agave-nerd-font
AnonymicePro:
archive: AnonymousPro
brew: font-anonymice-nerd-font
Arimo:
brew: font-arimo-nerd-font
AurulentSansM:
archive: AurulentSansMono
brew: font-aurulent-sans-mono-nerd-font
BigBlueTerm:
archive: BigBlueTerminal
brew: font-bigblue-terminal-nerd-font
BitstromWera:
archive: BitstreamVeraSansMono
brew: font-bitstream-vera-sans-mono-nerd-font
BlexMono:
archive: IBMPlexMono
brew: font-blex-mono-nerd-font
CaskaydiaCove:
archive: CascadiaCode
brew: font-caskaydia-cove-nerd-font
CaskaydiaMono:
archive: CascadiaMono
brew: font-caskaydia-mono-nerd-font
CodeNewRoman:
brew: font-code-new-roman-nerd-font
ComicShannsMono:
brew: font-comic-shanns-mono-nerd-font
CommitMono:
brew: font-commit-mono-nerd-font
Cousine:
brew: font-cousine-nerd-font
D2CodingLigature:
archive: D2Coding
brew: font-d2coding-nerd-font
DaddyTimeMono:
brew: font-daddy-time-mono-nerd-font
DejaVuSansM:
archive: DejaVuSansMono
brew: font-dejavu-sans-mono-nerd-font
DepartureMono:
brew: font-departure-mono-nerd-font
DroidSansM:
archive: DroidSansMono
brew: font-droid-sans-mono-nerd-font
EnvyCodeR:
brew: font-envy-code-r-nerd-font
FantasqueSansM:
archive: FantasqueSansMono
brew: font-fantasque-sans-mono-nerd-font
FiraCode:
brew: font-fira-code-nerd-font
FiraMono:
brew: font-fira-mono-nerd-font
GeistMono:
brew: font-geist-mono-nerd-font
GoMono:
archive: Go-Mono
brew: font-go-mono-nerd-font
GohuFont:
archive: Gohu
brew: font-gohufont-nerd-font
Hack:
brew: font-hack-nerd-font
Hasklug:
archive: Hasklig
brew: font-hasklug-nerd-font
HeavyData:
brew: font-heavy-data-nerd-font
Hurmit:
archive: Hermit
brew: font-hurmit-nerd-font
iMWriting:
archive: IA-Writer
brew: font-im-writing-nerd-font
Inconsolata:
brew: font-inconsolata-nerd-font
InconsolataGo:
brew: font-inconsolata-go-nerd-font
InconsolataLGC:
brew: font-inconsolata-lgc-nerd-font
IntoneMono:
archive: IntelOneMono
brew: font-intone-mono-nerd-font
Iosevka:
brew: font-iosevka-nerd-font
IosevkaTerm:
brew: font-iosevka-term-nerd-font
IosevkaTermSlab:
brew: font-iosevka-term-slab-nerd-font
JetBrainsMono:
brew: font-jetbrains-mono-nerd-font
Lekton:
brew: font-lekton-nerd-font
LiterationMono:
archive: LiberationMono
brew: font-liberation-nerd-font
Lilex:
brew: font-lilex-nerd-font
MartianMono:
brew: font-martian-mono-nerd-font
MesloLG:
archive: Meslo
brew: font-meslo-lg-nerd-font
Monaspice:
archive: Monaspace
brew: font-monaspace-nerd-font
Monofur:
brew: font-monofur-nerd-font
Monoid:
brew: font-monoid-nerd-font
Mononoki:
brew: font-mononoki-nerd-font
M+:
archive: MPlus
brew: font-m+-nerd-font
Noto:
brew: font-noto-nerd-font
OpenDyslexic:
brew: font-open-dyslexic-nerd-font
Overpass:
brew: font-overpass-nerd-font
ProFont:
brew: font-profont-nerd-font
ProggyClean:
brew: font-proggy-clean-tt-nerd-font
RecMono:
archive: Recursive
brew: font-recursive-mono-nerd-font
RobotoMono:
brew: font-roboto-mono-nerd-font
ShureTechMono:
archive: ShareTechMono
brew: font-shure-tech-mono-nerd-font
SauceCodePro:
archive: SourceCodePro
brew: font-sauce-code-pro-nerd-font
SpaceMono:
brew: font-space-mono-nerd-font
Symbols:
archive: NerdFontsSymbolsOnly
brew: font-symbols-only-nerd-font
Terminess:
archive: Terminus
brew: font-terminess-ttf-nerd-font
Tinos:
brew: font-tinos-nerd-font
Ubuntu:
brew: font-ubuntu-nerd-font
UbuntuMono:
brew: font-ubuntu-mono-nerd-font
UbuntuSans:
brew: font-ubuntu-sans-nerd-font
VictorMono:
brew: font-victor-mono-nerd-font
ZedMono:
brew: font-zed-mono-nerd-font
base_url: https://github.com/ryanoasis/nerd-fonts/releases/latest/download
path: share/fonts
default_install:
- CaskaydiaCove
- FiraCode
- Hasklug
- Lilex
- Monoid
- Symbols