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
become: true
ansible.builtin.command:
cmd:
- cargo
@@ -11,3 +10,4 @@
- "{{ pkgconfig_alacritty.git_repo }}"
- --tag
- "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:
depth: 1
dest: "{{ d_nvim_tmp.path }}/neovim"
repo: "{{ pkgconfig.neovim.git_repo }}"
version: "{{ pkgconfig.neovim.version }}"
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 }}"
CMAKE_BUILD_TYPE: "{{ pkgconfig_neovim.build_type }}"
CMAKE_INSTALL_PREFIX: "{{ pkgconfig_neovim.install_prefix }}"
target: install
become: "{{ pkgconfig.neovim.become }}"
become_user: "{% if pkgconfig.neovim.become %}{{ pkgconfig.neovim.owner }}{% else %}~{% endif %}"
when: not pkgconfig.neovim.use_appimage
become: "{{ pkgconfig_neovim.become }}"
become_user: "{% if pkgconfig_neovim.become %}{{ 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 }}"
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 }}"
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"
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.become }}"
become_user: "{% if pkgconfig.neovim.become %}{{ pkgconfig.neovim.owner }}{% else %}~{% endif %}"
- pkgconfig_neovim.use_appimage
become: "{{ pkgconfig_neovim.become }}"
become_user: "{% if pkgconfig_neovim.become %}{{ pkgconfig_neovim.owner }}{% else %}~{% endif %}"

View File

@@ -1,7 +1,8 @@
---
- name: download zig archive
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
ansible.builtin.tempfile:
@@ -12,12 +13,25 @@
- name: download zig archive
ansible.builtin.get_url:
dest: "{{ d_zig_dl_tmp.path }}/{{ zig_pkg }}"
url: "{{ pkgconfig.zig.base_url }}/{{ zig_pkg }}"
url: "{{ pkgconfig_zig.base_url }}/{{ zig_pkg }}"
decompress: false
- name: extract zig package
- name: create install_path
ansible.builtin.file:
state: directory
path: "{{ pkgconfig_zig.install_path }}"
become: true
- name: extract zig package
ansible.builtin.unarchive:
dest: "{{ pkgconfig.zig.install_path }}"
dest: "{{ pkgconfig_zig.install_path }}"
src: "{{ d_zig_dl_tmp.path }}/{{ zig_pkg }}"
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
when: ansible_distribution == 'Fedora'
block:
- ansible.builtin.include_tasks:
file: "pkgs/terra_repo.yml"
when: pkgconfig_terrarepo is not defined
when: pkgconfig_terrarepo not defined
- name: append to pkgs
ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + [ 'ghostty' ] }}"
when: ansible_distribution == 'Fedora' or
not pkgconfig_ghostty.build
- name: no ghostty for this system
when:
- ansible_distribution != 'Fedora'
- ansible_system == 'Linux'
debug:
msg: ghostty cannot be installed this way for your distribution
- name: build ghostty from source
block:
- ansible.builtin.set_fact:
syspkgs: "{{ syspkgs + pkgconfig_ghostty.build_deps[ansible_os_family] }}"
srcpkgs: "{{ srcpkgs + ['ghostty'] }}"
when: (ansible_distribution != 'Fedora' and ansible_system == 'Linux') or
pkgconfig_ghostty.build
- name: append ghostty to caskpkgs
when: ansible_distribution == 'MacOSX'
ansible.builtin.set_fact:
caskpkgs: "{{ caskpkgs + [ 'ghostty' ] }}"
when: ansible_distribution == 'MacOSX'

View File

@@ -3,8 +3,7 @@
file: terrarepo.yml
name: _terrarepo
- ansible.builtin.set_fact:
pkgconfig:
terrarepo: "{{ _terrarepo | ansible.builtin.combine(pkgconfig.terrarepo) }}"
pkgconfig_terrarepo: "{{ _terrarepo | ansible.builtin.combine(pkgconfig.terrarepo) }}"
- name: enable terra repo for fedora
when: ansible_distribution == 'Fedora'
@@ -14,14 +13,14 @@
when: ansible_distribution_major_version|int >= 41
ansible.builtin.command:
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
become: true
when: ansible_distribution_major_version|int < 41
ansible.builtin.command:
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:
name: terra-release

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,4 @@
---
- name: append to pkgs
set_fact:
ansible.builtin.set_fact:
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
full_upgrade: false
install_state: present
default_confg:
default_config:
install_prefix: /usr/local
become: true
owner: root
@@ -33,6 +33,7 @@ pkgconfig:
go: {}
hashicorp: {}
kitty: {}
ghostty: {}
neovide: {}
neovim: {}
nerdfonts: {}

View File

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