move a lot of configuration around

This commit is contained in:
Matthew Stobbs
2025-02-11 20:22:42 -07:00
parent 275f5df722
commit 6d52cc6a4d
33 changed files with 180 additions and 117 deletions

View File

@@ -3,9 +3,23 @@
- name: "Check if task exists for {{ pkg }}" - name: "Check if task exists for {{ pkg }}"
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ role_path }}/tasks/pkgs/{{ pkg }}.yml" path: "{{ role_path }}/tasks/pkgs/{{ pkg }}.yml"
register: cpkg_exists register: stat_pkg
- name: "Check if specialized configuration exists for {{ pkg }}"
when:
- stat_pkg.exists
ansible.builtin.stat:
path: "{{ role_path }}/tasks/config/{{ pkg }}.yml"
register: stat_config
- name: "Load specialized configuration if it exists for {{ pkg }}"
when:
- stat_config.exists
ansible.builtin.include_tasks:
file: "config/{{ pkg }}.yml"
- name: "Add include task for {{ pkg }}" - name: "Add include task for {{ pkg }}"
when: cpkg_exists.exists when:
- stat_pkg.exists
ansible.builtin.include_tasks: ansible.builtin.include_tasks:
file: "pkgs/{{ pkg }}.yml" file: "pkgs/{{ pkg }}.yml"

View File

@@ -10,7 +10,7 @@
ansible.builtin.file: ansible.builtin.file:
state: directory state: directory
mode: '0755' mode: '0755'
path: "{{ bw_instdir }}" path: "{{ apimage_pfx }}/bitwarden"
owner: "{{ bw_owner }}" owner: "{{ bw_owner }}"
group: "{{ bw_group }}" group: "{{ bw_group }}"
@@ -19,13 +19,13 @@
mode: '0755' mode: '0755'
decompress: false decompress: false
backup: true backup: true
url: bw_appimg.url url: "{{ bw.appimg.url }}"
dest: "{{ bw_instdir }}/{{ bw_appimg.name }}" dest: "{{ appimage_pfx }}/{{ bw.appimg.name }}"
owner: "{{ bw_owner }}" owner: "{{ bw_owner }}"
group: "{{ bw_group }}" group: "{{ bw_group }}"
- name: Link bitwarden appimage - name: Link bitwarden appimage
ansible.builtin.file: ansible.builtin.file:
state: link state: link
src: "{{ bw_instdir }}/{{ bw_appimg.name }}" src: "{{ appimage_pfx }}/{{ bw.appimg.name }}"
path: "{{ bw_instpfx }}/bin/bitwarden" path: "{{ bw.bindir }}/bitwarden"

29
tasks/appimage/neovim.yml Normal file
View File

@@ -0,0 +1,29 @@
# vim: set filetype=yaml.ansible :
---
- name: Install neovim appimage
become: true
block:
- name: Create install dir
ansible.builin.file:
state: directory
mode: "0755"
path: "{{ nvim.instdir }}"
owner: "{{ pkgconfig_neovim.owner }}"
group: "{{ pkgconfig_neovim.group }}"
- name: Get neovim appimage
ansible.builtin.get_url:
mode: "0755"
decompress: false
backup: true
url: "{{ pkgconfig_neovim.appimage_url_pfx }}/{{ pkgconfig_neovim.version }}/nvim.appimage"
checksum: "sha256:{{ pkgconfig_neovim.appimage_url_pfx }}/{{ pkgconfig_neovim.version }}/nvim.appimage.sha256sum"
dest: "{{ pkgconfig_neovim.install_dir }}/nvim.appimage.{{ pkgconfig_neovim.version }}"
owner: "{{ pkgconfig_neovim.owner }}"
group: "{{ pkgconfig_neovim.group }}"
- name: Link neovim appimage
ansible.builtin.file:
state: link
src: "{{ pkgconfig_neovim.install_dir }}/nvim.appimage.{{ pkgconfig_neovim.version }}"
path: "{{ pkgconfig_neovim.install_prefix }}/bin/nvim"

View File

@@ -1,55 +0,0 @@
# vim: set filetype=yaml.ansible :
---
- name: build neovim from source
block:
- name: create temp path
ansible.builtin.tempfile:
state: directory
prefix: nvim.
register: d_nvim_tmp
- name: clone neovim git repository
ansible.builtin.git:
depth: 1
dest: "{{ d_nvim_tmp.path }}/neovim"
repo: "{{ pkgconfig_neovim.git_repo }}"
version: "{{ pkgconfig_neovim.version }}"
- name: build and install neovim
ansible.builtin.make:
chdir: "{{ d_nvim_tmp.path }}/neovim"
params:
CMAKE_BUILD_TYPE: "{{ pkgconfig_neovim.build_type }}"
CMAKE_INSTALL_PREFIX: "{{ pkgconfig_neovim.install_prefix }}"
target: install
become: "{{ pkgconfig_neovim.dobecome }}"
become_user: "{% if pkgconfig_neovim.dobecome %}{{ pkgconfig_neovim.owner }}{% else %}~{% endif %}"
when: not pkgconfig_neovim.use_appimage
- name: install neovim appimage
block:
- ansible.builin.file:
state: directory
mode: "0755"
path: "{{ pkgconfig_neovim.install_dir }}"
owner: "{{ pkgconfig_neovim.owner }}"
group: "{{ pkgconfig_neovim.group }}"
- ansible.builtin.get_url:
mode: "0755"
decompress: false
backup: true
url: "{{ pkgconfig_neovim.appimage_url_pfx }}/{{ pkgconfig_neovim.version }}/nvim.appimage"
checksum: "sha256:{{ pkgconfig_neovim.appimage_url_pfx }}/{{ pkgconfig_neovim.version }}/nvim.appimage.sha256sum"
dest: "{{ pkgconfig_neovim.install_dir }}/nvim.appimage.{{ pkgconfig_neovim.version }}"
owner: "{{ pkgconfig_neovim.owner }}"
group: "{{ pkgconfig_neovim.group }}"
- ansible.builtin.file:
state: link
src: "{{ pkgconfig_neovim.install_dir }}/nvim.appimage.{{ pkgconfig_neovim.version }}"
path: "{{ pkgconfig_neovim.install_prefix }}/bin/nvim"
when:
- pkgconfig_neovim.use_appimage
become: "{{ pkgconfig_neovim.dobecome }}"
become_user: "{% if pkgconfig_neovim.dobecome %}{{ pkgconfig_neovim.owner }}{% else %}~{% endif %}"

View File

@@ -1,7 +1,6 @@
# vim: set filetype=yaml.ansible : # vim: set filetype=yaml.ansible :
--- ---
install_prefix: "{{ default_install_prefix }}" install_prefix: "{{ default_install_prefix }}"
install_dir: /opt/appimage/bitwarden
install_method: flatpak install_method: flatpak
dobecome: true dobecome: true
owner: root owner: root

View File

@@ -3,8 +3,7 @@
version: v0.10.3 version: v0.10.3
install_prefix: "{{ default_install_prefix }}" install_prefix: "{{ default_install_prefix }}"
install_dir: /opt/nvim install_dir: /opt/nvim
use_appimage: true install_method: appimage
use_syspkg: true
build_type: Release build_type: Release
dobecome: true dobecome: true
owner: root owner: root

View File

@@ -1,5 +1,24 @@
# vim: set filetype=yaml.ansible : # vim: set filetype=yaml.ansible :
--- ---
- name: Set installation facts
ansible.builtin.set_fact:
paths: "{% if use_local %}{{ localpaths }}{% else %}{{ syspaths }}{% endif %}"
appimages: [] # appimages to install
cargopkgs: [] # rust packages from cargo
cargoversioned: [] # versioned rust packages from cargo
caskpkgs: [] # homebrew casks
flatpkgs: [] # flatpaks
gopkgs: [] # go applications
npmpkgs: [] # npm commands
pipxpkgs: [] # pipx packages
srcpkgs: [] # packages built from source
syspkgs: [] # system package manager packages
tappkgs: [] # homebrew tap packages
brewtaps: [] # homebrew taps
fpremotes: # flatpak remotes
- name: flathub
url: https://dl.flathub.org/repo/flathub.flatpakrepo
- name: Determine OS and set facts for it - name: Determine OS and set facts for it
block: block:
- name: Set macOS facts - name: Set macOS facts
@@ -125,7 +144,7 @@
- name: Install srcpkgs - name: Install srcpkgs
ansible.builtin.include_tasks: ansible.builtin.include_tasks:
file: "build/{{ srcpkg }}.yml" file: "src/{{ srcpkg }}.yml"
loop: "{{ srcpkgs | unique }}" loop: "{{ srcpkgs | unique }}"
loop_control: loop_control:
loop_var: srcpkg loop_var: srcpkg

View File

@@ -12,14 +12,14 @@
- name: Set bitwarden facts - name: Set bitwarden facts
ansible.builtin.set_fact: ansible.builtin.set_fact:
bw: bw:
appimg: pkgconfig_bitwarden.appimage appimg: "{{ pkgconfig_bitwarden.appimage }}"
become: pkgconfig_bitwarden.dobecome become: "{{ pkgconfig_bitwarden.dobecome }}"
flatpak: pkgconfig_bitwarden.flatpak flatpak: "{{ pkgconfig_bitwarden.flatpak }}"
group: pkgconfig_bitwarden.group group: "{{ pkgconfig_bitwarden.group }}"
instdir: pkgconfig_bitwarden.install_dir instdir: "{{ pkgconfig_bitwarden.install_dir }}"
instmtd: pkgconfig_bitwarden.install_method instmtd: "{{ pkgconfig_bitwarden.install_method }}"
instpfx: pkgconfig_bitwarden.install_prefix bindir: "{{ pkgconfig_bitwarden.install_prefix }}/bin"
owner: pkgconfig_bitwarden.owner owner: "{{ pkgconfig_bitwarden.owner }}"
- name: Append to flatpkgs - name: Append to flatpkgs
when: when:

View File

@@ -1,12 +1,14 @@
# vim: set filetype=yaml.ansible : # vim: set filetype=yaml.ansible :
--- ---
- ansible.builtin.set_fact: - name: Set hashicorp flag
ansible.builtin.set_fact:
hashicorp: true hashicorp: true
- name: RedHat repository - name: RedHat repository
when: ansible_os_family == 'RedHat' when:
- ansible_os_family == 'RedHat'
block: block:
- name: enable hashicorp repo for fedora >=41 - name: Enable hashicorp repo for fedora >=41
become: true become: true
when: when:
- ansible_distribution == 'Fedora' - ansible_distribution == 'Fedora'
@@ -15,7 +17,7 @@
creates: /etc/yum.repos.d/hashicorp.repo creates: /etc/yum.repos.d/hashicorp.repo
cmd: "dnf config-manager addrepo --from-repofile={{ pkgconfig.hashicorp.Linux.Fedora.repo }}" cmd: "dnf config-manager addrepo --from-repofile={{ pkgconfig.hashicorp.Linux.Fedora.repo }}"
- name: enable hashicorp repo for fedora <41 - name: Enable hashicorp repo for fedora <41
become: true become: true
when: when:
- ansible_distribution == 'Fedora' - ansible_distribution == 'Fedora'
@@ -24,7 +26,7 @@
creates: /etc/yum.repos.d/hashicorp.repo creates: /etc/yum.repos.d/hashicorp.repo
cmd: "dnf config-manager --add-repo {{ pkgconfig.hashicorp.Linux.Fedora.repo }}" cmd: "dnf config-manager --add-repo {{ pkgconfig.hashicorp.Linux.Fedora.repo }}"
- name: enable hashicorp repo for RHEL like distribution - name: Enable hashicorp repo for RHEL like distribution
become: true become: true
when: when:
- ansible_distribution != 'Fedora' - ansible_distribution != 'Fedora'
@@ -33,21 +35,25 @@
cmd: "dnf config-manager --add-repo {{ pkgconfig.hashicorp.Linux.RedHat.repo }}" cmd: "dnf config-manager --add-repo {{ pkgconfig.hashicorp.Linux.RedHat.repo }}"
- name: Debian based repository - name: Debian based repository
when: ansible_os_family == 'Debian' when:
- ansible_os_family == 'Debian'
block: block:
- ansible.builtin.tempfile: - name: Create temporary directory
ansible.builtin.tempfile:
state: directory state: directory
prefix: hashicorp. prefix: hashicorp.
register: d_hashicorp_tmp register: d_hashicorp_tmp
- name: get hashicorp archive gpg key - name: Get hashicorp archive gpg key
ansible.builtin.get_url: ansible.builtin.get_url:
dest: "{{ d_hashicorp_tmp.path }}/gpg" dest: "{{ d_hashicorp_tmp.path }}/gpg"
url: https://apt.releases.hashicorp.com/gpg url: https://apt.releases.hashicorp.com/gpg
mode: '0644'
- name: install hashicorp archive gpg key - name: Install hashicorp archive gpg key
become: true become: true
ansible.builtin.command: ansible.builtin.command:
creates: /usr/share/keyrings/hashicorp-archive-keyring.gpg
cmd: cmd:
- gpg - gpg
- --dearmor - --dearmor
@@ -55,13 +61,17 @@
- /usr/share/keyrings/hashicorp-archive-keyring.gpg - /usr/share/keyrings/hashicorp-archive-keyring.gpg
- "{{ d_hashicorp_tmp.path }}/gpg" - "{{ d_hashicorp_tmp.path }}/gpg"
- name: enable hasicorp repo for debian - name: Enable hasicorp repo for debian
ansible.builtin.apt_repository: ansible.builtin.apt_repository:
repo: "{{ pkgconfig.hashicorp.Linux.Debian.repo }}" repo: "{{ pkgconfig.hashicorp.Linux.Debian.repo }}"
state: present state: present
update_cache: false update_cache: false
- name: enable hashicorp homebrew tap - name: MacOS specific configuration
when:
- ansible_distribution == 'MacOSX'
block:
- name: Enable hashicorp homebrew tap
when: ansible_os_family == 'Darwin' when: ansible_os_family == 'Darwin'
ansible.builtin.set_fact: ansible.builtin.set_fact:
brewtaps: "{{ brewtaps + ['hashicorp/tap'] }}" brewtaps: "{{ brewtaps + ['hashicorp/tap'] }}"

View File

@@ -1,17 +1,50 @@
# vim: set filetype=yaml.ansible : # vim: set filetype=yaml.ansible :
--- ---
- ansible.builtin.include_vars: - name: Load neovim config
ansible.builtin.include_vars:
file: neovim.yml file: neovim.yml
name: _neovim name: _neovim
- ansible.builtin.set_fact:
- name: Combine neovim default and user config
ansible.builtin.set_fact:
pkgconfig_neovim: "{{ _neovim | ansible.builtin.combine(pkgconfig.neovim) }}" pkgconfig_neovim: "{{ _neovim | ansible.builtin.combine(pkgconfig.neovim) }}"
- name: append neovim to srcpkgs - name: Set neovim facts
ansible.builtin.set_fact: ansible.builtin.set_fact:
srcpkgs: "{{ srcpkgs + ['neovim'] }}" nvim:
when: not pkgconfig_neovim.use_syspkg appimg: "{{ pkgconfig_neovim.appimage }}"
become: "{{ pkgconfig_neovim.dobecome }}"
bldtype: "{{ pkgconfig_neovim.build_type }}"
group: "{{ pkgconfig_neovim.group }}"
instdir: "{{ pkgconfig_neovim.install_dir }}"
instmtd: "{{ pkgconfig_neovim.install_method }}"
instpfx: "{{ pkgconfig_neovim.install_prefix }}"
owner: "{{ pkgconfig_neovim.owner }}"
ver: "{{ pkgconfig_neovim.version }}"
- name: append neovim to syspkgs - name: Linux specific install
when:
- ansible_system == 'Linux'
block:
# install system package when on an up to date distro
- name: Append to syspkgs
when:
- (ansible_distribution == 'Fedora') or
(ansible_distribution == 'Ubuntu')
- name: Append to appimages
when:
- nvim.instmtd == 'appimage'
ansible.builtin.set_fact:
appimages: "{{ appimages + ['neovim'] }}"
- name: Append neovim to syspkgs
when:
- ansible_os_family == 'Darwin'
ansible.builtin.set_fact: ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + ['neovim'] }}" syspkgs: "{{ syspkgs + ['neovim'] }}"
when: pkgconfig_neovim.use_syspkg
- name: Append neovim to srcpkgs
when:
- nvim.instmtd == 'source'
ansible.builtin.set_fact:
srcpkgs: "{{ srcpkgs + ['neovim'] }}"

25
tasks/src/neovim.yml Normal file
View File

@@ -0,0 +1,25 @@
# vim: set filetype=yaml.ansible :
---
- name: Create temp path
ansible.builtin.tempfile:
state: directory
prefix: nvim.
register: d_nvim_tmp
- name: Clone neovim git repository
ansible.builtin.git:
depth: 1
dest: "{{ d_nvim_tmp.path }}/neovim"
repo: "{{ pkgconfig_neovim.git_repo }}"
version: "{{ pkgconfig_neovim.version }}"
- name: Build and install neovim
ansible.builtin.make:
chdir: "{{ d_nvim_tmp.path }}/neovim"
params:
CMAKE_BUILD_TYPE: "{{ pkgconfig_neovim.build_type }}"
CMAKE_INSTALL_PREFIX: "{{ pkgconfig_neovim.install_prefix }}"
target: install
become: "{{ pkgconfig_neovim.dobecome }}"
become_user: "{% if pkgconfig_neovim.dobecome %}{{ pkgconfig_neovim.owner }}{% else %}~{% endif %}"
when: not pkgconfig_neovim.use_appimage

View File

@@ -1,30 +1,20 @@
# vim: set filetype=yaml.ansible : # vim: set filetype=yaml.ansible :
# variables used in ansible_role_package # variables used in ansible_role_package
--- ---
default_install_prefix: /usr/local localpaths: # all localpaths are prefixed with the users $HOME directory
instrall: .local
appimage: .local/appimage
archive: .local/archive
cache: .cache
syspaths: # if installing at a system level (default)
install: /usr/local # executables get linked to {{ default_install_prefix }}/bin
appimage: /opt/appimage # appimages are installed to {{ apimage_install_prefix }}/<name>/
archive: /opt/archive # pre-compiled archives are extracted to {{ archive_install_prefix }}/
cache: /opt/archive/.cache # download archives here
packages: [] # list of packages to install packages: [] # list of packages to install
# Package install lists
appimages: [] # appimages to install
cargopkgs: [] # rust packages from cargo
cargoversioned: [] # versioned rust packages from cargo
caskpkgs: [] # homebrew casks
flatpkgs: [] # flatpaks
gopkgs: [] # go applications
npmpkgs: [] # npm commands
pipxpkgs: [] # pipx packages
srcpkgs: [] # packages built from source
syspkgs: [] # system package manager packages
tappkgs: [] # homebrew tap packages
# Package source lists
brewtaps: [] # homebrew taps
fpremotes: # flatpak remotes
- name: flathub
url: https://dl.flathub.org/repo/flathub.flatpakrepo
# Static package configuration
# this shouldn't be changed by the user
pkgconfig: pkgconfig:
alacritty: alacritty:
build_deps: build_deps: