working on go

Signed-off-by: Matthew Stobbs <matthew@stobbs.ca>
This commit is contained in:
Matthew Stobbs
2026-02-02 17:06:31 -07:00
parent b9fdf03298
commit 81a1dd7469
9 changed files with 237 additions and 147 deletions

View File

@@ -13,7 +13,7 @@ special handling.
Order of precedence for package installation:
1. System package manager (dnf, apt, homebrew, etc.)
2. Source built - only in some situations, like for fast moving software (neovim)
2. Source built - only in some situations, like for fast moving software (neovim, hyprland)
3. Appimage (Linux only)
4. Flatpak (Linux only)
5. Snap (Linux only), takes precedence over flatpak on Ubuntu based systems

View File

@@ -1,9 +1,17 @@
# vim: set filetype=yaml.ansible :
---
- name: Install go package {{ pkg }}
become: "{{ ext_become }}"
- name: Install go packages
become: "{{ install_become }}"
environment:
GOBIN: "{{ path.bin }}"
PATH: "{{ path.go }}/bin:$PATH"
GOBIN: "{{ path_bin }}"
GOROOT: "{{ path_go }}"
PATH: "{{ path_go }}/bin:$PATH"
loop: pkg_go
loop_control:
loop_var: current
ansible.builtin.command:
cmd: go install {{ pkg }}
creates: "{{ current.bin }}"
argv:
- go
- install
- "{{ current.url }}"

View File

@@ -1,9 +1,8 @@
# vim: set filetype=yaml.ansible :
---
- name: Set air configuration # {{{
- name: Configure air # {{{
when:
- __air_configured is undefined or
not __air_configured
- __air_configured is undefined
block:
- name: Set air install method
when:
@@ -11,21 +10,40 @@
ansible.builtin.set_fact:
air_install_method: "{% if install_method in air_install_methods %}{{ install_method }}{% else %}{{ air_install_method[0] }}{% endif %}"
- name: Set air version and url
ansible.builtin.set_fact:
air_version: "{{ air_version | default('latest') }}"
air_install_url: "{{ air_install_url | default('github.com/air-verse/air') }}"
- name: Configure air source install
when:
- air_install_method == 'source'
block:
- name: Set air install package
ansible.builtin.set_fact:
air_pkg: "{{ air_install_url }}@{{ air_version }}"
- name: Complete air configuration
ansible.builtin.set_fact:
__air_configured: true
air_go_pkg:
url: "{{ air_install_url }}@{{ air_version }}"
bin: "{{ path_bin }}/air"
# }}}
- name: Append air to pkg_go
when:
- air_install_method == 'source'
block:
- name: Clean existing air install
when:
- clean_install
loop: air_build_files
loop_control:
lopo_var: air_file
ansible.builtin.file:
state: absent
path: "{{ install_prefix }}/{{ air_file }}"
- name: Configure pkg dependencies
loop: "{{ air_pkg_deps }}"
loop_control:
loop_var: air_pkg_dep
ansible.builtin.include_tasks: "{{ air_pkg_dep }}"
- name: Add air to install list
ansible.builtin.set_fact:
pkg_go: "{{ pkg_go + [air_pkg] }}"
pkg_go: "{{ pkg_go + [air_go_pkg] }}"
- name: Complete air configuration
ansible.builtin.set_fact:
__air_configured: true

View File

@@ -2,29 +2,21 @@
---
- name: Configure alacritty # {{{
when:
- __alacritty_configured is undefined or
not __alacritty_configured
- __alacritty_configured is undefined
block:
- name: Set install method
- name: Set alacritty install method
when:
- alacritty_install_method is undefined
ansible.builtin.set_fact:
alacritty_install_method: "{% if default_install_method in alacritty_install_methods %}{{ default_install_method }}{% else %}{{ alacritty_install_methods[0] }}{% endif %}"
- name: Set basic variables
ansible.builtin.set_fact:
alacritty_version: "{{ alacritty_version | default('v0.16.1') }}"
alacritty_git_repo: "{{ alacritty_git_repo | default('https://github.com/alacritty/alacritty') }}"
alacritty_pkgname: "{{ alacritty_pkgname | default('alacritty') }}"
alacritty_build_deps_extra: []
- name: Configure alacritty source install
when:
- alacritty_install_method == "source"
ansible.builtin.set_fact:
alacritty_build_deps: "{{ alacritty_build_deps[ansible_os_family] }}"
alacritty_src_install:
cargo_build_flags:
- --release
cargo_build_flags: "{{ alacritty_cargo_build_flags }}"
name: "{{ alacritty_pkgname }}"
repo: "{{ alacritty_git_repo }}"
version: "{{ alacritty_version }}"
@@ -35,55 +27,7 @@
extra/logo/alacritty-term.svg: share/pixmaps/Alacritty.svg
desktop_files:
- extra/linux/Alacritty.desktop
files_list:
- bin/alacritty
- share/pixmaps/Alacritty.svg
alacritty_build_deps:
RedHat:
- cmake
- fontconfig-devel
- freetype-devel
- g++
- libxcb-devel
- libxkbcommon-devel
- desktop-file-utils
Debian:
- cmake
- g++
- pkg-config
- libfontconfig1-dev
- libxcb-xfixes0-dev
- libxkbcommon-dev
- python3
- libfreetype6-dev
- desktop-file-utils
Alpine:
- cmake
- pkgconf
- freetype-dev
- fontconfig-dev
- python3
- libxcb-dev
- g++
- libxkbcommon-dev
- desktop-file-utils
Archlinux:
- cmake
- freetype2
- fontconfig
- pkg-config
- make
- libxcb
- libxkbcommon
- python
- desktop-file-utils
FreeBSD:
- cmake
- freetype2
- fontconfig
- pkgconf
- python3
- desktop-file-utils
files_list: "{{ alacritty_build_files }}"
- name: Set alacritty install extra build deps
when:
@@ -95,18 +39,13 @@
when:
- ansible_distribution_major_version == 7
ansible.builtin.set_fact:
alacritty_build_deps_extra: ['xcb-util-devel', '@Development Tools']
alacritty_build_deps: "{{ alacritty_build_deps + ['xcb-util-devel', '@Development Tools'] }}"
- name: Add extra dependencies for EL8
when:
- ansible_distribution_major_version == 8
ansible.builtin.set_fact:
alacritty_build_deps_extra: ['@Development Tools']
- name: Complete alacritty configuration
when: __alacritty_configured is undefined
ansible.builtin.set_fact:
__alacritty_configured: true
alacritty_build_deps: "{{ alacritty_build_deps + ['@Development Tools'] }}"
# }}}
- name: Append alacritty installation
@@ -114,8 +53,15 @@
- name: Append alacritty to pkg_cargo
when:
- alacritty_method == 'source'
block:
- name: Configure pkg dependencies
loop: "{{ alacritty_pkg_deps }}"
loop_control:
loop_var: alacritty_pkg_dep
ansible.builtin.include_tasks: "{{ alacritty_pkg_dep }}"
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + alacritty_build_deps + alacritty_build_deps_extra + ['git'] }}"
pkg_sys: "{{ pkg_sys + alacritty_build_deps }}"
pkg_cargo_build: "{{ pkg_cargo_build + [alacritty_src_install] }}"
- name: Append alacritty to pkg_cask
@@ -129,3 +75,8 @@
- alacritty_method == 'package'
ansible.builtin.set_fact:
pkg_sys: "{{ pkg_sys + [alacritty_pkgname] }}"
- name: Complete alacritty configuration
when: __alacritty_configured is undefined
ansible.builtin.set_fact:
__alacritty_configured: true

View File

@@ -2,11 +2,49 @@
---
- name: Add aquamarine
when:
- aquamarine_configured is undefined
- __aquamarine_configured is undefined
block:
- name: Load aquamarine config
ansible.builtin.include_tasks:
file: config/aquamarine.yml
- name: Set aquamarine install method
when:
- aquamarine_install_method is undefined
ansible.builtin.set_fact:
aquamarine_install_method: "{% if install_method in aquamarine_install_methods %}{{ install_method }}{% else %}{{ aquamarine_install_methods[0] }}{% endif %}"
- name: Configure aquamarine source install
when:
- aquamarine_install_method == 'source'
ansible.builtin.set_fact:
aquamarine_git_repo:
aquamarine_build_steps:
configure:
- cmake
- --no-warn-unused-cli
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX={{ install_prefix }}
- -S
- .
- -B
- ./build
build:
- cmake
- --build
- ./build
- --config
- Release
- --target
- all
- j
- "{{ build_jobs | int }}"
install:
- cmake
- --install
- ./build
- name: Finish aquamarine configuration
when:
- __aquamarine_configured is undefined
ansible.builtin.set_fact:
__aquamarine_configured: true
- name: Append aquamarine pkg_deps
loop: "{{ aquamarine.pkg_deps }}"

View File

@@ -16,20 +16,7 @@
block:
- name: Configure go
ansible.builtin.set_fact:
go_version: "{{ go_version | default('1.25.6') }}"
go_system: "{{ ansible_system | lower }}"
go_archmap:
arm64: arm64
aarch64: arm64
x86_64: amd64
go_install_sums:
1.25.6:
Darwin:
amd64: sha256:e2b5b237f5c262931b8e280ac4b8363f156e19bfad5270c099998932819670b7
arm64: sha256:984521ae978a5377c7d782fd2dd953291840d7d3d0bd95781a1f32f16d94a006
Linux:
amd64: sha256:f022b6aad78e362bcba9b0b94d09ad58c5a70c6ba3b7582905fababf5fe0181a
arm64: sha256:738ef87d79c34272424ccdf83302b7b0300b8b096ed443896089306117943dd5
- name: Set go architecture
ansible.builtin.set_fact:
@@ -37,26 +24,24 @@
- name: Set archive name
ansible.builtin.set_fact:
go_archive: "go{{ go_version }}.{{ go_system }}-{{ go_arch }}.tar.gz"
go_archive_file: "go{{ go_archive_version }}.{{ go_system }}-{{ go_arch }}.tar.gz"
- name: Set go download url
- name: Set go archive url and path
ansible.builtin.set_fact:
go_archive_url: "https://go.dev/dl/{{ go_archive }}"
go_archive_url: "https://go.dev/dl/{{ go_archive_file }}"
go_extract_path: "{{ path_archive }}/go{{ go_archive_version }}"
- name: Set archive extract location
ansible.builtin.set_fact:
go_extract_path: "{{ path_archive }}/go{{ go_version }}"
- name: Complete go archive install configuration
ansible.builtin.set_fact:
__go_configured: true
- name: Finalize go archive install
ansible.builtin.set_fact
go_archive_install:
extract_path: "{{ go_extract_path }}"
archive_url: "{{ go_archive_url }}"
archive_name: "{{ go_archive }}"
archive_checksum: "{{ go_install_sums[go_version][ansible_system][go_arch] }}"
archive_checksum: "{{ go_archive_sums[go_archive_version][ansible_system][go_arch] }}"
- name: Install vis system package manager
- name: Queue go install
block:
- name: Go system package install
when:
- go_install_method == 'system'
ansible.builtin.set_fact:
@@ -75,4 +60,8 @@
state: link
force: true
path: "{{ path_go }}"
src: "{{ got_extract_path }}/go"
src: "{{ go_extract_path }}/go"
- name: Complete go archive install configuration
ansible.builtin.set_fact:
__go_configured: true

View File

@@ -29,9 +29,9 @@
hyprland_build_steps:
configure:
- cmake
- --now-warn-unused-cli
- -DCMAKE_BUILD_TYPE:STRING=Release
- -DCMAKE_INSTALL_PREFIX:PATH={{ install_prefix }}
- --no-warn-unused-cli
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX={{ install_prefix }}
- -S
- .
- -B
@@ -39,7 +39,7 @@
build:
- cmake
- --bulid
- ./uild
- ./build
- --config
- Release
- --target

View File

@@ -51,3 +51,88 @@ pkg_sh: [] # use shell commands to install a package
pkg_appimage: [] # appimages to install
pkg_flatpak: [] # flatpak packages to install
pkg_snap: [] # snpacraft.io packages
# Per package variables
## {{{ air
air_version: latest
air_install_url: github.com/air-verse/air
air_pkg_deps:
- pkgs/go.yml
air_build_files:
- bin/air
# }}}
## {{{ alacritty
alacritty_version: v0.16.1
alacritty_git_repo: https://github.com/alacritty/alacritty
alacritty_pkgname: alacritty
alacritty_pkg_deps:
- pkgs/git.yml
- pkgs/cargo.yml
alacritty_build_files:
- bin/alacritty
- share/pixmaps/Alacritty.svg
- share/applications/Alacritty.desktop
alacritty_cargo_build_flags:
- --release
alacritty_build_deps:
RedHat:
- cmake
- fontconfig-devel
- freetype-devel
- g++
- libxcb-devel
- libxkbcommon-devel
- desktop-file-utils
Debian:
- cmake
- g++
- pkg-config
- libfontconfig1-dev
- libxcb-xfixes0-dev
- libxkbcommon-dev
- python3
- libfreetype6-dev
- desktop-file-utils
Alpine:
- cmake
- pkgconf
- freetype-dev
- fontconfig-dev
- python3
- libxcb-dev
- g++
- libxkbcommon-dev
- desktop-file-utils
Archlinux:
- cmake
- freetype2
- fontconfig
- pkg-config
- make
- libxcb
- libxkbcommon
- python
- desktop-file-utils
FreeBSD:
- cmake
- freetype2
- fontconfig
- pkgconf
- python3
- desktop-file-utils
# }}}
# go {{{
go_archive_version: 1.25.6
go_archive_archmap:
arm64: arm64
aarch64: arm64
x86_64: amd64
go_archive_sums:
1.25.6:
Darwin:
amd64: sha256:e2b5b237f5c262931b8e280ac4b8363f156e19bfad5270c099998932819670b7
arm64: sha256:984521ae978a5377c7d782fd2dd953291840d7d3d0bd95781a1f32f16d94a006
Linux:
amd64: sha256:f022b6aad78e362bcba9b0b94d09ad58c5a70c6ba3b7582905fababf5fe0181a
arm64: sha256:738ef87d79c34272424ccdf83302b7b0300b8b096ed443896089306117943dd5
# }}}

View File

@@ -17,9 +17,10 @@ ansible_lint_install_methods:
ansible_install_methods:
- system
- system_pip
# hyprland packages
aquamarine_install_methods:
- source
hyprland_install_methods:
- source
yazi_install_methods:
- source
- cargo