WIP: migrate every package to a single file style #1

Draft
stobbsm wants to merge 48 commits from move_to_single_file_pkgs into main
6 changed files with 210 additions and 150 deletions
Showing only changes of commit ac7ad62d40 - Show all commits

261
README.md
View File

@@ -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

View File

@@ -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) }}"

View File

@@ -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:

View File

@@ -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:

View File

@@ -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
# }}}

View File

@@ -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: