add zig installation via tarball

This commit is contained in:
Matthew Stobbs
2025-01-25 21:16:59 -07:00
parent 66eaed6e4b
commit 343765c8a6
16 changed files with 136 additions and 86 deletions

View File

@@ -1,6 +1,5 @@
--- ---
- name: build and install alacritty - name: build and install alacritty
become: true
ansible.builtin.command: ansible.builtin.command:
cmd: cmd:
- cargo - cargo
@@ -11,3 +10,4 @@
- "{{ pkgconfig_alacritty.git_repo }}" - "{{ pkgconfig_alacritty.git_repo }}"
- --tag - --tag
- "v{{ pkgconfig_alacritty.version }}" - "v{{ pkgconfig_alacritty.version }}"
become: true

View File

@@ -1,2 +1,32 @@
--- ---
- name: build ghostty from source
block:
- name: create temp path
ansible.builtin.tempfile:
state: directory
prefix: ghostty.
register: d_ghostty_tmp
- name: clone ghostty git repository
ansible.builtin.git:
depth: 1
dest: "{{ d_ghostty_tmp.path }}/ghostty"
repo: "{{ pkgconfig_ghostty.git_repo }}"
version: "{{ pkgconfig_ghostty.version }}"
- name: build ghostty
ansible.builtin.command:
chdir: "{{ d_ghostty_tmp.path }}/ghostty"
cmd: "zig build -D{{ pkgconfig_ghostty.optimize }}"
register: c_ghostty_build
- name: install ghostty
ansible.file.copy:
src: "{{ d_ghostty_tmp.path }}/ghostty/zig-out/bin/ghostty"
dest: "{{ pkgconfig_ghostty.install_prefix }}/bin/ghostty"
owner: "{{ pkgconfig_ghostty.owner }}"
group: "{{ pkgconfig_ghostty.group }}"
mode: "0755"
remote_src: true
become: "{{ pkgconfig_ghostty.become }}"
become_user: "{% if pkgconfig_ghostty.become %}{{ pkgconfig_ghostty.owner }}{% else %}~{% endif %}"

View File

@@ -11,45 +11,44 @@
ansible.builtin.git: ansible.builtin.git:
depth: 1 depth: 1
dest: "{{ d_nvim_tmp.path }}/neovim" dest: "{{ d_nvim_tmp.path }}/neovim"
repo: "{{ pkgconfig.neovim.git_repo }}" repo: "{{ pkgconfig_neovim.git_repo }}"
version: "{{ pkgconfig.neovim.version }}" version: "{{ pkgconfig_neovim.version }}"
- name: build and install neovim - name: build and install neovim
ansible.builtin.make: ansible.builtin.make:
chdir: "{{ d_nvim_tmp.path }}/neovim" chdir: "{{ d_nvim_tmp.path }}/neovim"
params: params:
CMAKE_BUILD_TYPE: "{{ pkgconfig.neovim.build_type }}" CMAKE_BUILD_TYPE: "{{ pkgconfig_neovim.build_type }}"
CMAKE_INSTALL_PREFIX: "{{ pkgconfig.neovim.install_prefix }}" CMAKE_INSTALL_PREFIX: "{{ pkgconfig_neovim.install_prefix }}"
target: install target: install
become: "{{ pkgconfig.neovim.become }}" become: "{{ pkgconfig_neovim.become }}"
become_user: "{% if pkgconfig.neovim.become %}{{ pkgconfig.neovim.owner }}{% else %}~{% endif %}" become_user: "{% if pkgconfig_neovim.become %}{{ pkgconfig_neovim.owner }}{% else %}~{% endif %}"
when: not pkgconfig.neovim.use_appimage when: not pkgconfig_neovim.use_appimage
- name: install neovim appimage - name: install neovim appimage
block: block:
- ansible.builin.file: - ansible.builin.file:
state: directory state: directory
mode: "0755" mode: "0755"
path: "{{ pkgconfig.neovim.install_dir }}" path: "{{ pkgconfig_neovim.install_dir }}"
owner: "{{ pkgconfig.neovim.owner }}" owner: "{{ pkgconfig_neovim.owner }}"
group: "{{ pkgconfig.neovim.group }}" group: "{{ pkgconfig_neovim.group }}"
- ansible.builtin.get_url: - ansible.builtin.get_url:
mode: "0755" mode: "0755"
decompress: false decompress: false
backup: true backup: true
url: "{{ pkgconfig.neovim.appimage_url_pfx }}/{{ pkgconfig.neovim.version }}/nvim.appimage" url: "{{ pkgconfig_neovim.appimage_url_pfx }}/{{ pkgconfig_neovim.version }}/nvim.appimage"
checksum: "sha256:{{ pkgconfig.neovim.appimage_url_pfx }}/{{ pkgconfig.neovim.version }}/nvim.appimage.sha256sum" checksum: "sha256:{{ pkgconfig_neovim.appimage_url_pfx }}/{{ pkgconfig_neovim.version }}/nvim.appimage.sha256sum"
dest: "{{ pkgconfig.neovim.install_dir }}/nvim.appimage.{{ pkgconfig.neovim.version }}" dest: "{{ pkgconfig_neovim.install_dir }}/nvim.appimage.{{ pkgconfig_neovim.version }}"
owner: "{{ pkgconfig.neovim.owner }}" owner: "{{ pkgconfig_neovim.owner }}"
group: "{{ pkgconfig.neovim.group }}" group: "{{ pkgconfig_neovim.group }}"
- ansible.builtin.file: - ansible.builtin.file:
state: link state: link
src: "{{ pkgconfig.neovim.install_dir }}/nvim.appimage.{{ pkgconfig.neovim.version }}" src: "{{ pkgconfig_neovim.install_dir }}/nvim.appimage.{{ pkgconfig_neovim.version }}"
path: "{{ pkgconfig.neovim.install_prefix }}/bin/nvim" path: "{{ pkgconfig_neovim.install_prefix }}/bin/nvim"
when: when:
- pkgconfig.neovim.use_appimage - pkgconfig_neovim.use_appimage
become: "{{ pkgconfig.neovim.become }}" become: "{{ pkgconfig_neovim.become }}"
become_user: "{% if pkgconfig.neovim.become %}{{ pkgconfig.neovim.owner }}{% else %}~{% endif %}" become_user: "{% if pkgconfig_neovim.become %}{{ pkgconfig_neovim.owner }}{% else %}~{% endif %}"

View File

@@ -1,7 +1,8 @@
--- ---
- name: download zig archive - name: download zig archive
ansible.builtin.set_fact: ansible.builtin.set_fact:
zig_pkg: "zig-{{ pkgconfig.zig.sysmap[ansible_system] }}-{{ pkgconfig.zig.archmap[ansible_archtecture] }}-{{ pkgconfig.zig.version }}.tar.xz" zig_path: "zig-{{ pkgconfig_zig.sysmap[ansible_system] }}-{{ pkgconfig_zig.archmap[ansible_archtecture] }}-{{ pkgconfig_zig.version }}"
zig_pkg: "zig-{{ pkgconfig_zig.sysmap[ansible_system] }}-{{ pkgconfig_zig.archmap[ansible_archtecture] }}-{{ pkgconfig_zig.version }}.tar.xz"
- name: create temp path - name: create temp path
ansible.builtin.tempfile: ansible.builtin.tempfile:
@@ -12,12 +13,25 @@
- name: download zig archive - name: download zig archive
ansible.builtin.get_url: ansible.builtin.get_url:
dest: "{{ d_zig_dl_tmp.path }}/{{ zig_pkg }}" dest: "{{ d_zig_dl_tmp.path }}/{{ zig_pkg }}"
url: "{{ pkgconfig.zig.base_url }}/{{ zig_pkg }}" url: "{{ pkgconfig_zig.base_url }}/{{ zig_pkg }}"
decompress: false decompress: false
- name: extract zig package - name: create install_path
ansible.builtin.file:
state: directory
path: "{{ pkgconfig_zig.install_path }}"
become: true become: true
- name: extract zig package
ansible.builtin.unarchive: ansible.builtin.unarchive:
dest: "{{ pkgconfig.zig.install_path }}" dest: "{{ pkgconfig_zig.install_path }}"
src: "{{ d_zig_dl_tmp.path }}/{{ zig_pkg }}" src: "{{ d_zig_dl_tmp.path }}/{{ zig_pkg }}"
remote_src: true remote_src: true
become: true
- name: link zig binary
ansible.builtin.file:
state: link
src: "{{ pkgconfig_zig.install_path }}/{{ zig_path }}/zig"
path: "{{ pkgconfig_zig.install_prefix }}/bin/zig"
become: true

View File

@@ -1,23 +1,31 @@
--- ---
- ansible.builtin.include_vars:
file: ghostty.yml
name: _ghostty
- ansible.builtin.set_fact:
pkgconfig_ghostty: "{{ _ghostty | ansible.builtin.combine(pkgconfig.ghostty) }}"
- name: ensure dependencies - name: ensure dependencies
when: ansible_distribution == 'Fedora'
block: block:
- ansible.builtin.include_tasks: - ansible.builtin.include_tasks:
file: "pkgs/terra_repo.yml" file: "pkgs/terra_repo.yml"
when: pkgconfig_terrarepo is not defined when: pkgconfig_terrarepo not defined
- name: append to pkgs - name: append to pkgs
ansible.builtin.set_fact: ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + [ 'ghostty' ] }}" syspkgs: "{{ syspkgs + [ 'ghostty' ] }}"
when: ansible_distribution == 'Fedora' or
not pkgconfig_ghostty.build
- name: no ghostty for this system - name: build ghostty from source
when: block:
- ansible_distribution != 'Fedora' - ansible.builtin.set_fact:
- ansible_system == 'Linux' syspkgs: "{{ syspkgs + pkgconfig_ghostty.build_deps[ansible_os_family] }}"
debug: srcpkgs: "{{ srcpkgs + ['ghostty'] }}"
msg: ghostty cannot be installed this way for your distribution when: (ansible_distribution != 'Fedora' and ansible_system == 'Linux') or
pkgconfig_ghostty.build
- name: append ghostty to caskpkgs - name: append ghostty to caskpkgs
when: ansible_distribution == 'MacOSX'
ansible.builtin.set_fact: ansible.builtin.set_fact:
caskpkgs: "{{ caskpkgs + [ 'ghostty' ] }}" caskpkgs: "{{ caskpkgs + [ 'ghostty' ] }}"
when: ansible_distribution == 'MacOSX'

View File

@@ -3,8 +3,7 @@
file: terrarepo.yml file: terrarepo.yml
name: _terrarepo name: _terrarepo
- ansible.builtin.set_fact: - ansible.builtin.set_fact:
pkgconfig: pkgconfig_terrarepo: "{{ _terrarepo | ansible.builtin.combine(pkgconfig.terrarepo) }}"
terrarepo: "{{ _terrarepo | ansible.builtin.combine(pkgconfig.terrarepo) }}"
- name: enable terra repo for fedora - name: enable terra repo for fedora
when: ansible_distribution == 'Fedora' when: ansible_distribution == 'Fedora'
@@ -14,14 +13,14 @@
when: ansible_distribution_major_version|int >= 41 when: ansible_distribution_major_version|int >= 41
ansible.builtin.command: ansible.builtin.command:
creates: /etc/yum.repos.d/terra.repo creates: /etc/yum.repos.d/terra.repo
cmd: "dnf config-manager addrepo --from-repofile={{ pkgconfig.terrarepo.Fedora.repo }}" cmd: "dnf config-manager addrepo --from-repofile={{ pkgconfig_terrarepo.Fedora.repo }}"
- name: enable terra repo for fedora < 41 - name: enable terra repo for fedora < 41
become: true become: true
when: ansible_distribution_major_version|int < 41 when: ansible_distribution_major_version|int < 41
ansible.builtin.command: ansible.builtin.command:
creates: /etc/yum.repos.d/terra.repo creates: /etc/yum.repos.d/terra.repo
cmd: "dnf config-manager --add-repo {{ pkgconfig.terrarepo.Fedora.repo }}" cmd: "dnf config-manager --add-repo {{ pkgconfig_terrarepo.Fedora.repo }}"
- ansible.builtin.dnf: - ansible.builtin.dnf:
name: terra-release name: terra-release

View File

@@ -2,7 +2,8 @@
- name: ensure hashicorp repo is active - name: ensure hashicorp repo is active
ansible.builtin.include_tasks: ansible.builtin.include_tasks:
file: "pkgs/hashicorp_repo.yml" file: "pkgs/hashicorp_repo.yml"
when: pkgconfig_hashicorp not defined
- name: append to pkgs - name: append to pkgs
set_fact: ansible.builtin.set_fact:
tappkgs: "{{ tappkgs + [ pkconfig.hashicorp.terraform[ansible_system] ] }}" tappkgs: "{{ tappkgs + [ pkconfig_hashicorp.terraform[ansible_system] ] }}"

View File

@@ -3,11 +3,8 @@
file: tidy.yml file: tidy.yml
name: _tidy name: _tidy
- ansible.builtin.set_fact: - ansible.builtin.set_fact:
pkgconfig: pkgconfig_tidy: "{{ _tidy | ansible.builtin.combine(pkgconfig.tidy) }}"
tidy: "{{ _tidy | ansible.builtin.combine(pkgconfig.tidy) }}"
- name: append to pkgs - name: append to pkgs
set_fact: ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + pkgconfig.tidy.pkgs[ansible_system] }}" syspkgs: "{{ syspkgs + pkgconfig_tidy.pkgs[ansible_system] }}"
tags:
- packages

View File

@@ -1,6 +1,6 @@
--- ---
- name: append to pkgs - name: append to pkgs
set_fact: ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + [ 'tmux' ] }}" syspkgs: "{{ syspkgs + [ 'tmux' ] }}"
tags: tags:
- packages - packages

View File

@@ -2,7 +2,8 @@
- name: ensure hashicorp repo is active - name: ensure hashicorp repo is active
ansible.builtin.include_tasks: ansible.builtin.include_tasks:
file: "pkgs/hashicorp_repo.yml" file: "pkgs/hashicorp_repo.yml"
when: pkgconfig_hashicorp not defined
- name: append to pkgs - name: append to pkgs
set_fact: ansible.builtin.set_fact:
tappkgs: "{{ tappkgs + [ pkgconfig.hashicorp.vault[ansible_system] ] }}" tappkgs: "{{ tappkgs + [ pkgconfig_hashicorp.vault[ansible_system] ] }}"

View File

@@ -3,11 +3,9 @@
file: zfs.yml file: zfs.yml
name: _zfs name: _zfs
- ansible.builtin.set_fact: - ansible.builtin.set_fact:
pkgconfig: pkgconfig_zfs: "{{ _zfs | ansible.builtin.combine(pkgconfig.zfs) }}"
zfs: "{{ _zfs | ansible.builtin.combine(pkgconfig.zfs) }}"
- name: RedHat based configuration - name: RedHat based configuration
when: ansible_os_family == 'RedHat'
block: block:
- ansible.builtin.set_fact: - ansible.builtin.set_fact:
rhname: "{%if ansible_distribution == 'Fedora' %}fedora{% else %}epel{% endif %}" rhname: "{%if ansible_distribution == 'Fedora' %}fedora{% else %}epel{% endif %}"
@@ -17,34 +15,26 @@
- name: add openzfs gpg_key - name: add openzfs gpg_key
ansible.builtin.rpm_key: ansible.builtin.rpm_key:
key: "{{ pkgconfig.zfs.gpg_key }}" key: "{{ pkgconfig_zfs.gpg_key }}"
fingerprint: "{{ pkgconfig.zfs.gpg_key_fingerprint }}" fingerprint: "{{ pkgconfig_zfs.gpg_key_fingerprint }}"
state: present state: present
become: true become: true
tags:
- packages
- RedHat
- name: enable openzfs repository - name: enable openzfs repository
ansible.builtin.dnf: ansible.builtin.dnf:
name: "{{ pkgconfig.zfs.repo_base }}{{ rhname }}/zfs-release-{{ pkgconfig.zfs[rhname].release }}{{ rpm_dist.stdout }}.noarch.rpm" name: "{{ pkgconfig_zfs.repo_base }}{{ rhname }}/zfs-release-{{ pkgconfig_zfs[rhname].release }}{{ rpm_dist.stdout }}.noarch.rpm"
state: "{{ install_state }}" state: "{{ install_state }}"
become: true become: true
tags:
- packages
- RedHat
- name: install zfs deps - name: install zfs deps
ansible.builtin.dnf: ansible.builtin.set_fact:
name: "{{ pkgconfig.zfs[ansible_os_family].deppkgs }}" syspkgs: "{{ pkgconfig_zfs.deppkgs[ansible_os_family] }}"
state: "{{ install_state }}" when: ansible_os_family == 'RedHat'
become: true
- name: Debian configuration - name: Debian configuration
when: ansible_os_family == 'Debian' when: ansible_os_family == 'Debian'
block: block:
- name: enable openzfs repository - name: enable openzfs repository
become: true
ansible.builtin.apt_repository: ansible.builtin.apt_repository:
repo: | repo: |
deb http://deb.debian.org/debian {{ ansible_distribution_release }}-backports main contrib deb http://deb.debian.org/debian {{ ansible_distribution_release }}-backports main contrib
@@ -52,9 +42,9 @@
filename: "{{ ansible_distribution_release }}-backports" filename: "{{ ansible_distribution_release }}-backports"
state: present state: present
update_cache: false update_cache: false
become: true
- name: pin zfs package to backports - name: pin zfs package to backports
become: true
ansible.builtin.file: ansible.builtin.file:
content: | content: |
Package: src:zfs-linux Package: src:zfs-linux
@@ -62,17 +52,14 @@
Pin-Priority: 990 Pin-Priority: 990
dest: /etc/apt/preferences.d/90_zfs dest: /etc/apt/preferences.d/90_zfs
state: present state: present
become: true
- name: install zfs deps - name: install zfs deps
ansible.builtin.set_fact:
syspkgs: "{{ pkgconfig_zfs.deppkgs[ansible_os_family] }}"
become: true become: true
ansible.builtin.apt:
name: "{{ pkgconfig.zfs.deppkgs[ansible_os_family] }}"
state: "{{ install_state }}"
- name: append to pkgs - name: append to pkgs
set_fact: ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + pkgconfig.zfs.pkgs[ansible_os_family] }}" syspkgs: "{{ syspkgs + pkgconfig_zfs.pkgs[ansible_os_family] }}"
become: true become: true
tags:
- RedHat
- packages

View File

@@ -3,8 +3,7 @@
file: zig.yml file: zig.yml
name: _zig name: _zig
- ansible.builtin.set_fact: - ansible.builtin.set_fact:
pkgconfig: pkgconfig_zig: "{{ _zig | ansible.builtin.combine(pkgconfig.zig) }}"
zig: "{{ _zig | ansible.builtin.combine(pkgconfig.zig) }}"
- name: append to pkgs - name: append to pkgs
ansible.builtin.set_fact: ansible.builtin.set_fact:

View File

@@ -1,6 +1,4 @@
--- ---
- name: append to pkgs - name: append to pkgs
set_fact: ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + [ 'zoxide' ] }}" syspkgs: "{{ syspkgs + [ 'zoxide' ] }}"
tags:
- packages

15
vars/ghostty.yml Normal file
View File

@@ -0,0 +1,15 @@
---
version: v1.0.1
git_repo: https://github.com/ghostty-org/ghostty
optimize: ReleaseFast
build: false
become: true
owner: root
group: root
build_deps:
Debian:
- libgtk-4-dev
- libadwaita-1-dev
RedHat:
- gtk4-devel
- libadwaita-devel

View File

@@ -3,7 +3,7 @@
assume_missing_is_syspkg: true assume_missing_is_syspkg: true
full_upgrade: false full_upgrade: false
install_state: present install_state: present
default_confg: default_config:
install_prefix: /usr/local install_prefix: /usr/local
become: true become: true
owner: root owner: root
@@ -33,6 +33,7 @@ pkgconfig:
go: {} go: {}
hashicorp: {} hashicorp: {}
kitty: {} kitty: {}
ghostty: {}
neovide: {} neovide: {}
neovim: {} neovim: {}
nerdfonts: {} nerdfonts: {}

View File

@@ -1,6 +1,7 @@
--- ---
version: 0.13.0 version: 0.13.0
install_path: /usr/local install_prefix: /usr/local
install_path: /opt/zig
base_url: https://ziglang.org/download base_url: https://ziglang.org/download
sysmap: sysmap:
Darwin: macos Darwin: macos