From ac7ad62d401474a7f79a6cc3d5928db40be7ca9b Mon Sep 17 00:00:00 2001 From: Matthew Stobbs Date: Mon, 2 Feb 2026 21:09:51 -0700 Subject: [PATCH] fixing documentation --- README.md | 261 +++++++++++++++++++------------------- tasks/helpers/archive.yml | 37 ++++-- tasks/main.yml | 2 +- tasks/pkgs/go.yml | 33 ++++- vars/main.yml | 16 +++ vars/pkglist.yml | 11 +- 6 files changed, 210 insertions(+), 150 deletions(-) diff --git a/README.md b/README.md index 04ddcd4..a4826f9 100644 --- a/README.md +++ b/README.md @@ -34,137 +34,136 @@ To install any of the available packages, they must be part of a list called ## Available Packages -- air: hot reload for go #development -- alacritty: terminal built in rust #gui -- ansible-lint: linting for yaml.ansible files #development #mangement -- ansible: configuration management #management -- ansible_ls: ansible language-server #development -- aquamarine: graphics library for hyrpland #hyprland #linux #gui -- bashls: bash language server #development -- bat: bat, an ehanced replacement for cat #cli -- bitwarden: password mananger #gui #security -- blender: 3d modeling, video editing tools #gui #media -- broot: a file browser/manager for the cli #cli -- btop: advanced top replacement #cli #management -- buf: protocol buffer tooling in go #development -- bufls: protocol buffer language server #development -- carapace: universal command completion engine #cli -- cheat: cli cheatsheet creator and viewer #cli -- checkmake: a linter and analyzer for makefiles #development -- choose: an alternative to cut written in rust #cli -- clangd: the LLVM based C/C++ compiler, langauge server and linter #development -- cmake: build system for C/C++ projects #development -- cmakelang: cmake linter and formatter #development -- cockpit: webui to managed linux systems #management -- commitlint-cli: linting for git commit messages #development -- commitlint-config-conventional: config for commitlint-cli #development -- consul: service discovery by hashicorp #hashicorp #service -- cssls: css language server #development -- curlie: enhanced version of curl #cli #network -- dbeaver: database manager gui #development #gui -- direnv: load .env files in the cli #development #mangement -- dockerls: dockerfile lanaguage server #development -- dotenv-linter: linter for .env files #development -- duf: a good looking replacement for df #cli #management -- dust: a better looking version of du #cli #management -- editorconfig: common editor configuration system #development -- eslint: ECMA Script linting #development -- eza: a modern ls replacement #cli -- fd: a modern replacement for find #cli -- firefox: a modern OSS web browser #gui -- firewalld: modern zone based firewall #cli #management #security -- flatpak: universal linux package management system #cli #linux #management -- fzf: fuzzy find from a list given over stdin #cli -- ghostty: a modern advanced terminal emulator #gui -- git: project versioning system #development #management -- glow: cli markdown parser and viewer #cli -- go: the go programming language #development -- godot: the best OSS game making studio/engine #development #gui -- gopls: the go language server #development -- gping: graphical pinging on the cli #cli #management -- greetd: a simple system greeter #cli #linux #gui #hyprland -- heroic: heroic games launcher #gui #linux -- htmlls: html language server #development -- htmx-lsp: htmx language server #developement -- httpie: a graphical REST client #development #gui -- hugo: static html site generator #cli #development -- hyperfine: a cli benchmarking tool #cli -- hyprcursor: a hyprland support library #hyprland -- hyprgraphics: a hyrpland graphics library #hyprland -- hypridle: hyprland system idle monitor #hyprland -- hyprland: a pretty tiling window manager #hyprland #linux #gui -- hyprland_protocols: a hyprland wayland protocol library #hyprland -- hyprland_qt_support: hyprland qt libraries #hyprland -- hyprland_qtutils: hyrpland tools in qt: #hyprland -- hyprlang: hyprland configuration language #hyrpland -- hyprlock: hyprland screen locker #hyprland -- hyprpaper: hyprland wallpaper manager #hyprland -- hyprpicker: hyprland colour picker #hyprland -- hyprpolkitagent: hyprland policy kit agent #hyprland #management #security -- hyprutils: hyprland utilities library #hyprland -- hyprwayland_scanner: hyprland wayland library scanner #hyprland -- intelephense: php language server, linter and formatter #development -- jinja-lsp: the jinja language server #development -- jq: json cli parser #cli #development -- jsonls: json language server #development -- kitty: high perfomance terminal emulator #gui -- lazygit: git made easy #git #cli #development -- libreoffice: the free office suite #gui -- luals: lua language server #development -- markdownlint-cli: markdown linter #development -- mcfly: cli history manager #cli #management -- minio_client: cli S3 client #cli #management -- neovide: graphical interface for neovim in rust #development #gui -- neovim: best vim fork ever #neovim #development #cli #development -- nerdfonts: fonts patched with icons and glyphs #cli #gui -- nextcloud: nextcloud desktop sync client #gui #management -- nfs_client: nfs client software #management -- nfs_server: nfs server software #managment -- nginxls: nginx configuration language server #development -- nodejs: javascript runtime engine #javascript #cli #development -- nomad: application orchestration by hashicorp #hashicorp #management -- nwg_hello: a greetd greeter #gui #linux #hyprland -- packer: machine builder by hashicorp #vm #development #hashicorp #management -- pandoc: universal document translator #cli -- pgadmin: postgresql administration gui #development #development #gui -- pipx: install pip packages as self contained executables #cli #management -- podman: container runtime engine compatible with docker #cli #mangement -- pulumi: infrastructure as code via regular programming languages #cli #development #manage -- pyright: python language server, linter and formatter #development -- python3: python3 language interpreter #development -- quobix-vacuum: openapi linter and sdk written in go #development -- restic: an advanced backup system #management -- revive: a fast and strict linter for go #development -- ripgrep: fast modern grep replacement #cli -- rust: the rust programming language #development #cli -- samba_client: client software for samba #management -- samba_server: server software for samba #management -- sd: a modern replacement for sed #cli -- sdbus_cpp_2: systemd dbus library version 2 #development #hyprland -- sqlfluff: sql linter #development -- sqlls: sql language server #development -- starship: command line prompt generator #cli -- stow: manage dotfiles easily #cli #management -- tailscale: p2p vpn with wireguard #security #cli #gui -- tailwindcss-languageserver: tailwindcss language server #development -- templ: generate HTML using go #go #html #development -- terraform: infrastructre as code via configuration files #cli #hashicorp #management -- terraformls: terraform language server #development #hashicorp -- thunderbird: email client from mozilla #gui -- tidy: html linter and formatter #development -- tldr: manpage summarizer #cli -- tmux: terminal multiplexer #cli -- uwsm: universal wayland system manager #hyprland #linux #gui -- vault: secrets management by hashicorp #security #hashicorp -- xdg_desktop_portal_hyprland: xdg portal for hyprland #hyprland #gui #linux -- xh: cli curl replacement #cli #network -- yamlls: yaml language server #development -- yazi: terminal file manager in rust #cli #management -- zfs: the zetabyte filesystem #filesystem #cli -- zig: the zig programming language #development -- zls: the zig language server #development -- zoxide: easily jump between directories #cli #management -- zsh: Z shell #cli +- air: hot reload for go _default method_ **source** +- alacritty: terminal built in rust _default method_ **source** +- ansible-lint: linting for yaml.ansible files _default method_ **pipx** +- ansible: configuration management _default method_ **system** +- ansible_ls: ansible language-server +- aquamarine: graphics library for hyrpland _default method_ **source** +- bashls: bash language server +- bat: bat, an ehanced replacement for cat +- bitwarden: password mananger +- blender: 3d modeling, video editing tools +- broot: a file browser/manager for the cli +- btop: advanced top replacement +- buf: protocol buffer tooling in go +- bufls: protocol buffer language server +- carapace: universal command completion engine +- cheat: cli cheatsheet creator and viewer +- checkmake: a linter and analyzer for makefiles +- choose: an alternative to cut written in rust +- clangd: the LLVM based C/C++ compiler, langauge server and linter +- cmake: build system for C/C++ projects +- cmakelang: cmake linter and formatter +- cockpit: webui to managed linux systems +- commitlint-cli: linting for git commit messages +- commitlint-config-conventional: config for commitlint-cli +- consul: service discovery by hashicorp +- cssls: css language server +- curlie: enhanced version of curl +- dbeaver: database manager gui +- direnv: load .env files in the cli +- dockerls: dockerfile lanaguage server +- dotenv-linter: linter for .env files +- duf: a good looking replacement for df +- dust: a better looking version of du +- editorconfig: common editor configuration system +- eslint: ECMA Script linting +- eza: a modern ls replacement +- fd: a modern replacement for find +- firefox: a modern OSS web browser +- firewalld: modern zone based firewall +- flatpak: universal linux package management system +- fzf: fuzzy find from a list given over stdin +- ghostty: a modern advanced terminal emulator +- git: project versioning system _default method_ **system** +- glow: cli markdown parser and viewer +- go: the go programming language _default method_ **archive** +- godot: the best OSS game making studio/engine +- gopls: the go language server +- gping: graphical pinging on the cli +- greetd: a simple system greeter +- heroic: heroic games launcher +- htmlls: html language server +- htmx-lsp: htmx language server +- httpie: a graphical REST client +- hugo: static html site generator +- hyperfine: a cli benchmarking tool +- hyprcursor: a hyprland support library +- hyprgraphics: a hyrpland graphics library +- hypridle: hyprland system idle monitor +- hyprland: a pretty tiling window manager +- hyprland_protocols: a hyprland wayland protocol library +- hyprland_qt_support: hyprland qt libraries +- hyprland_qtutils: hyrpland tools in qt +- hyprlang: hyprland configuration language +- hyprlock: hyprland screen locker +- hyprpaper: hyprland wallpaper manager +- hyprpicker: hyprland colour picker +- hyprpolkitagent: hyprland policy kit agent +- hyprutils: hyprland utilities library +- hyprwayland_scanner: hyprland wayland library scanner +- intelephense: php language server, linter and formatter +- jinja-lsp: the jinja language server +- jq: json cli parser +- jsonls: json language server +- kitty: high perfomance terminal emulator +- lazygit: git made easy +- libreoffice: the free office suite +- luals: lua language server +- markdownlint-cli: markdown linter +- mcfly: cli history manager +- minio_client: cli S3 client +- neovide: graphical interface for neovim in rust +- neovim: best vim fork ever #neovim #development +- nerdfonts: fonts patched with icons and glyphs +- nfs_client: nfs client software +- nfs_server: nfs server software +- nginxls: nginx configuration language server +- nodejs: javascript runtime engine +- nomad: application orchestration by hashicorp +- nwg_hello: a greetd greeter +- packer: machine builder by hashicorp +- pandoc: universal document translator +- pgadmin: postgresql administration gui +- pipx: install pip packages as self contained executables +- podman: container runtime engine compatible with docker +- pulumi: infrastructure as code via regular programming languages +- pyright: python language server, linter and formatter +- python3: python3 language interpreter +- quobix-vacuum: openapi linter and sdk written in go +- restic: an advanced backup system +- revive: a fast and strict linter for go +- ripgrep: fast modern grep replacement +- rust: the rust programming language +- samba_client: client software for samba +- samba_server: server software for samba +- sd: a modern replacement for sed +- sdbus_cpp_2: systemd dbus library version 2 +- sqlfluff: sql linter +- sqlls: sql language server +- starship: command line prompt generator +- stow: manage dotfiles easily +- tailscale: p2p vpn with wireguard +- tailwindcss-languageserver: tailwindcss language server +- templ: generate HTML using go +- terraform: infrastructre as code via configuration files +- terraformls: terraform language server +- thunderbird: email client from mozilla +- tidy: html linter and formatter +- tldr: manpage summarizer +- tmux: terminal multiplexer +- uwsm: universal wayland system manager +- vault: secrets management by hashicorp +- xdg_desktop_portal_hyprland: xdg portal for hyprland +- xh: cli curl replacement +- yamlls: yaml language server +- yazi: terminal file manager in rust _default method_ **source** +- zfs: the zetabyte filesystem +- zig: the zig programming language +- zls: the zig language server +- zoxide: easily jump between directories +- zsh: Z shell ## Requirements diff --git a/tasks/helpers/archive.yml b/tasks/helpers/archive.yml index fc79212..9fa8b5b 100644 --- a/tasks/helpers/archive.yml +++ b/tasks/helpers/archive.yml @@ -7,23 +7,36 @@ become_user: "{{ install_become_user }}" ansible.bulitin.file: state: directory - path: "{{ extract_path }}" - mode: "{{ install_prefix_mode }}" - owner: "{{ install_prefix_owner }}" - group: "{{ install_prefix_group }}" + path: "{{ pkg.extract_path }}" + mode: "{{ pkg.install_prefix_mode | default('0755') }}" + owner: "{{ pkg.install_prefix_owner | default(ansible_user_id)}}" + group: "{{ pkg.install_prefix_group | default(ansible_user_gid) }}" - name: Download archive to cache ansible.builtin.get_url: - dest: "{{ d_cache }}/{{ archive_name }}" - url: "{{ archive_url }}" - checksum: "{{ archive_checksum }}" + dest: "{{ d_cache }}/{{ pkg.archive_name }}" + url: "{{ pkg.archive_url }}" + checksum: "{{ pkg.archive_checksum | default(omit) }}" decompress: false mode: '0644' - - name: Extract go archive + - name: Extract archive ansible.builtin.unarchive: - dest: "{{ extract_path }}" - src: "{{ d_cache }}/{{ archive_name }}" + dest: "{{ pkg.extract_path }}" + src: "{{ d_cache }}/{{ pkg.archive_name }}" remote_src: true - include: "{{ archive_include | default(omit) }}" - exclude: "{{ archive_exclude | default(omit) }}" + include: "{{ pkg.archive_include | default(omit) }}" + exclude: "{{ pkg.archive_exclude | default(omit) }}" + + - name: Symlink archive files + when: + - pkg.link_bin is defined + - pkg.link_bin | length > 0 + loop: pkg.link_bin + loop_control: + loop_var: lnk + ansible.builtin.file: + state: link + path: "{{ lnk.to }}" + src: "{{ lnk.from }}" + force: "{{ lnk.force | default(omit) }}" diff --git a/tasks/main.yml b/tasks/main.yml index 0d14e24..ad07731 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -161,7 +161,7 @@ loop_control: loop_var: pkg ansible.builtin.include_tasks: - file: "archive/{{ pkg }}.yml" + file: "helpers/archive.yml" - name: Install cargo packages when: diff --git a/tasks/pkgs/go.yml b/tasks/pkgs/go.yml index 39068d2..8ad4fa7 100644 --- a/tasks/pkgs/go.yml +++ b/tasks/pkgs/go.yml @@ -10,6 +10,28 @@ ansible.builtin.set_fact: go_install_method: "{% if install_method in go_install_methods %}{{ install_method }}{% else %}{{ go_install_methods[0] }}{% endif %}" + - name: Configure go system installation + when: + - go_install_method == 'system' + block: + - name: Set go pkgname for linux + when: + - ansible_system == 'Linux' + ansible.builtin.set_fact: + go_pkgname: "{{ go_pkgname[ansible_os_family] }}" + + - name: Set go pkgname for FreeBSD + when: + - ansible_os_family == 'FreeBSD' + ansible.bulitin.set_fact: + go_pkgname: "{{ go_pkgname[ansible_os_family][go_bsd_version] | default(go_pkgname[ansible_os_family]['default']) }}" + + - name: Set go pkgname for Darwin/MacOS + when: + - ansible_os_family == 'Darwin' + ansible.builtin.set_fact: + go_pkgname: "{{ go_pkgname[ansible_os_family] }}" + - name: Configure go archive installation when: - go_install_method == 'archive' @@ -32,12 +54,19 @@ go_extract_path: "{{ path_archive }}/go{{ go_archive_version }}" - name: Finalize go archive install - ansible.builtin.set_fact + ansible.builtin.set_fact: go_archive_install: extract_path: "{{ go_extract_path }}" archive_url: "{{ go_archive_url }}" archive_name: "{{ go_archive }}" archive_checksum: "{{ go_archive_sums[go_archive_version][ansible_system][go_arch] }}" + link_bin: + - from: "{{ go_archive_path }}/go" + to: "{{ path_go }}" + force: true + - from: "{{ path_go }}/bin/go" + to: "{{ path_bin }}/go" + force: true - name: Queue go install block: @@ -45,7 +74,7 @@ when: - go_install_method == 'system' ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + ['go'] }}" + pkg_sys: "{{ pkg_sys + [go_pkgname] }}" - name: Install via archive when: diff --git a/vars/main.yml b/vars/main.yml index e24bd02..ff22eee 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -135,4 +135,20 @@ go_archive_sums: Linux: amd64: sha256:f022b6aad78e362bcba9b0b94d09ad58c5a70c6ba3b7582905fababf5fe0181a arm64: sha256:738ef87d79c34272424ccdf83302b7b0300b8b096ed443896089306117943dd5 + FreeBSD: + amd64: sha256:61e1d50e332359474ff6dcf4bc0bd34ba2d2cf4ef649593a5faa527f0ab84e2b + arm64: sha256:648484146702dd58db0e2c3d15bda3560340d149ed574936e63285a823116b77 +go_profile_path: + Linux: /etc/profile.d + FreeBSD: /etc/profile.d +go_pkgname: + RedHat: go + Debian: go + Darwin: go + FreeBSD: + default: go + 1.25: go125 + 1.24: go124 + 1.23: go123 + 1.22: go122 # }}} diff --git a/vars/pkglist.yml b/vars/pkglist.yml index a663d2c..67b3714 100644 --- a/vars/pkglist.yml +++ b/vars/pkglist.yml @@ -8,17 +8,20 @@ air_install_methods: - source alacritty_install_methods: - - system - source -ansible_lint_install_methods: - system - - system_pip +ansible_lint_install_methods: - pipx + - system ansible_install_methods: - system - - system_pip aquamarine_install_methods: - source +git_install_methods: + - system +go_install_methods: + - archive + - system hyprland_install_methods: - source yazi_install_methods: