From 343765c8a6782a8f1a4505b05093b09f813161d4 Mon Sep 17 00:00:00 2001 From: Matthew Stobbs Date: Sat, 25 Jan 2025 21:16:59 -0700 Subject: [PATCH] add zig installation via tarball --- tasks/build/alacritty.yml | 2 +- tasks/build/ghostty.yml | 30 ++++++++++++++++++++++++++ tasks/build/neovim.yml | 45 +++++++++++++++++++-------------------- tasks/build/zig.yml | 22 +++++++++++++++---- tasks/pkgs/ghostty.yml | 28 +++++++++++++++--------- tasks/pkgs/terra_repo.yml | 7 +++--- tasks/pkgs/terraform.yml | 5 +++-- tasks/pkgs/tidy.yml | 9 +++----- tasks/pkgs/tmux.yml | 2 +- tasks/pkgs/vault.yml | 5 +++-- tasks/pkgs/zfs.yml | 39 +++++++++++---------------------- tasks/pkgs/zig.yml | 3 +-- tasks/pkgs/zoxide.yml | 4 +--- vars/ghostty.yml | 15 +++++++++++++ vars/main.yml | 3 ++- vars/zig.yml | 3 ++- 16 files changed, 136 insertions(+), 86 deletions(-) create mode 100644 vars/ghostty.yml diff --git a/tasks/build/alacritty.yml b/tasks/build/alacritty.yml index 9d25e5a..07abb5e 100644 --- a/tasks/build/alacritty.yml +++ b/tasks/build/alacritty.yml @@ -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 diff --git a/tasks/build/ghostty.yml b/tasks/build/ghostty.yml index cd21505..1808d09 100644 --- a/tasks/build/ghostty.yml +++ b/tasks/build/ghostty.yml @@ -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 %}" diff --git a/tasks/build/neovim.yml b/tasks/build/neovim.yml index 7a26346..931fad1 100644 --- a/tasks/build/neovim.yml +++ b/tasks/build/neovim.yml @@ -6,50 +6,49 @@ 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 }}" - + 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 %}" diff --git a/tasks/build/zig.yml b/tasks/build/zig.yml index 449b995..62c10d3 100644 --- a/tasks/build/zig.yml +++ b/tasks/build/zig.yml @@ -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 diff --git a/tasks/pkgs/ghostty.yml b/tasks/pkgs/ghostty.yml index a57037c..1bdc8ef 100644 --- a/tasks/pkgs/ghostty.yml +++ b/tasks/pkgs/ghostty.yml @@ -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' diff --git a/tasks/pkgs/terra_repo.yml b/tasks/pkgs/terra_repo.yml index d42c84e..7977894 100644 --- a/tasks/pkgs/terra_repo.yml +++ b/tasks/pkgs/terra_repo.yml @@ -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 diff --git a/tasks/pkgs/terraform.yml b/tasks/pkgs/terraform.yml index d436281..d23122a 100644 --- a/tasks/pkgs/terraform.yml +++ b/tasks/pkgs/terraform.yml @@ -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] ] }}" diff --git a/tasks/pkgs/tidy.yml b/tasks/pkgs/tidy.yml index c249274..48564da 100644 --- a/tasks/pkgs/tidy.yml +++ b/tasks/pkgs/tidy.yml @@ -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] }}" diff --git a/tasks/pkgs/tmux.yml b/tasks/pkgs/tmux.yml index 486ceb9..d750593 100644 --- a/tasks/pkgs/tmux.yml +++ b/tasks/pkgs/tmux.yml @@ -1,6 +1,6 @@ --- - name: append to pkgs - set_fact: + ansible.builtin.set_fact: syspkgs: "{{ syspkgs + [ 'tmux' ] }}" tags: - packages diff --git a/tasks/pkgs/vault.yml b/tasks/pkgs/vault.yml index 10d65c7..8a93445 100644 --- a/tasks/pkgs/vault.yml +++ b/tasks/pkgs/vault.yml @@ -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] ] }}" diff --git a/tasks/pkgs/zfs.yml b/tasks/pkgs/zfs.yml index 9bf855b..6ea335f 100644 --- a/tasks/pkgs/zfs.yml +++ b/tasks/pkgs/zfs.yml @@ -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 diff --git a/tasks/pkgs/zig.yml b/tasks/pkgs/zig.yml index c934e02..3bb5db1 100644 --- a/tasks/pkgs/zig.yml +++ b/tasks/pkgs/zig.yml @@ -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: diff --git a/tasks/pkgs/zoxide.yml b/tasks/pkgs/zoxide.yml index 79f4e33..0c79c6f 100644 --- a/tasks/pkgs/zoxide.yml +++ b/tasks/pkgs/zoxide.yml @@ -1,6 +1,4 @@ --- - name: append to pkgs - set_fact: + ansible.builtin.set_fact: syspkgs: "{{ syspkgs + [ 'zoxide' ] }}" - tags: - - packages diff --git a/vars/ghostty.yml b/vars/ghostty.yml new file mode 100644 index 0000000..9ae8fb3 --- /dev/null +++ b/vars/ghostty.yml @@ -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 diff --git a/vars/main.yml b/vars/main.yml index 5bc8129..877d197 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -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: {} diff --git a/vars/zig.yml b/vars/zig.yml index a002f8d..6077a8d 100644 --- a/vars/zig.yml +++ b/vars/zig.yml @@ -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