Compare commits
	
		
			9 Commits
		
	
	
		
			1.0.2
			...
			5edb3c08a2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5edb3c08a2 | |||
| 54d2327ec8 | |||
| f122b06697 | |||
| 588bc932de | |||
| 25b59beb72 | |||
| b07a77fa8f | |||
| b599fcc34f | |||
| d73c2e0273 | |||
| f018fd5bfc | 
| @@ -3,6 +3,7 @@ packages_linux_common_all_families: | ||||
|   - 'bc' | ||||
|   - 'btop' | ||||
|   - 'dosfstools' | ||||
|   - 'dhcping' | ||||
|   - 'fping' | ||||
|   - 'git' | ||||
|   - 'iperf3' | ||||
| @@ -19,9 +20,11 @@ packages_linux_common_all_families: | ||||
|   - 'pigz' | ||||
|   - 'pv' | ||||
|   - 'rsync' | ||||
|   - 'stress-ng' | ||||
|   - 'swaks' | ||||
|   - 'tcpdump' | ||||
|   - 'tmux' | ||||
|   - 'traceroute' | ||||
|   - 'tree' | ||||
|   - 'unzip' | ||||
|   - 'wget' | ||||
| @@ -41,10 +44,12 @@ packages_linux_paru_archlinux: | ||||
|   - 'flent' | ||||
|   - 'mmv' | ||||
|   - 'paccache-hook' | ||||
|   - 'tmux-resurrect' | ||||
|  | ||||
| packages_linux_common_debian: | ||||
|   - 'apt-file' | ||||
|   - 'bind9-dnsutils' | ||||
|   - 'debconf-utils' | ||||
|   - 'exa' | ||||
|   - 'flent' | ||||
|   - 'gdisk' | ||||
| @@ -52,3 +57,46 @@ packages_linux_common_debian: | ||||
|   - 'netcat-openbsd' | ||||
|   - 'unattended-upgrades' | ||||
|   - 'xxd' | ||||
|  | ||||
| package_config: | ||||
|   - name: 'tmux' | ||||
|     global_config_file: '/etc/tmux.conf' | ||||
|     marker: 'sane defaults' | ||||
|     global_config: | | ||||
|       # Renumber windows when one is deleted | ||||
|       set-option -g renumber-windows on | ||||
|  | ||||
|       # Enable mouse control (clickable windows, panes, resizable panes) | ||||
|       set -g mouse on | ||||
|   - name: 'git' | ||||
|     global_config_file: '/etc/gitconfig' | ||||
|     marker: 'sane defaults' | ||||
|     global_config: | | ||||
|       [alias] | ||||
|           # https://stackoverflow.com/a/30998048 | ||||
|           # Find merge that contains a given commit | ||||
|           find-merge = "!sh -c 'commit=$0 && branch=${1:-HEAD} && (git rev-list $commit..$branch --ancestry-path | cat -n; git rev-list $commit..$branch --first-parent | cat -n) | sort -k2 -s | uniq -f1 -d | sort -n | tail -1 | cut -f2'" | ||||
|  | ||||
|           # https://stackoverflow.com/a/30998048 | ||||
|           # Show merge commit msg and other details of merge commit | ||||
|           # that contains a given commit   | ||||
|           show-merge = "!sh -c 'merge=$(git find-merge $0 $1) && [ -n \"$merge\" ] && git show $merge'" | ||||
|  | ||||
|           # https://stackoverflow.com/a/23508223 | ||||
|           # Show all commits that are part of a merge commit | ||||
|           log-merge = "!f() { git log --stat \"$1^..$1\"; }; f" | ||||
|  | ||||
| tmux_global_config_file: '/etc/tmux.conf' | ||||
| tmux_global_config_resurrect: | | ||||
|   # Auto-load tmux-resurrect | ||||
|   # prefix + Ctrl-s - save | ||||
|   # prefix + Ctrl-r - restore | ||||
|   run-shell /usr/share/tmux-resurrect/resurrect.tmux | ||||
|    | ||||
|   # Restore pane content (not just running commands) | ||||
|   # This will e.g. show the last 'ls' output you did in a pane | ||||
|   set -g @resurrect-capture-pane-contents 'on' | ||||
|    | ||||
|   # Restore a few additional processes beyond the conservative default of | ||||
|   # vi vim nvim emacs man less more tail top htop irssi weechat mutt | ||||
|   set -g @resurrect-processes 'btop journalctl ncdu watch' | ||||
|   | ||||
| @@ -115,7 +115,7 @@ | ||||
|   loop_control: | ||||
|     loop_var: 'pacman_opt' | ||||
|     index_var: 'i' | ||||
|     label: 'Set ''{{ pacman_opt.name }}'' to ''{{ pacman_opt.value }}'', this {{ pacman_opt.value }}' | ||||
|     label: 'Set ''{{ pacman_opt.name }}'' to ''{{ pacman_opt.value }}'', this {{ pacman_opt.purpose_human_readable }}' | ||||
|   loop: | ||||
|     - { name: 'CacheDir', value: '/var/cache/pacman/pkg/',            exclusive: false, purpose_human_readable: 'adds an AUR-specific cache dir (since we make this one user-writable)' } | ||||
|     - { name: 'Include',  value: '/etc/pacman.d/repo-local-aur.conf', exclusive: false, purpose_human_readable: 'adds our local AUR repo' } | ||||
| @@ -133,7 +133,7 @@ | ||||
|     label: 'Set ''{{ paru_option.name }}'' {% if paru_option.value %}to ''{{ paru_option.value }}''{% else %}without a value{% endif %}, {{ paru_option.purpose_human_readable }}' | ||||
|   loop: | ||||
|     - { name: 'LocalRepo', value: '',                       allow_no_value: true, purpose_human_readable: 'this builds AUR packages into the local repo(s) specified in ''/etc/pacman.conf''' } | ||||
|     - { name: 'Chroot',    value: '/var/cache/paru/chroot/root', allow_no_value: false, purpose_human_readable: 'this builds AUR packages in a clean chroot' } | ||||
|     - { name: 'Chroot',    value: '/var/cache/paru/chroot', allow_no_value: false, purpose_human_readable: 'this builds AUR packages in a clean chroot' } | ||||
|   community.general.ini_file: | ||||
|     path: '/etc/paru.conf' | ||||
|     section: 'options' | ||||
|   | ||||
| @@ -0,0 +1,41 @@ | ||||
| # SPDX-License-Identifier: MIT | ||||
|  | ||||
| # This file adds config blocks to files that are dependent on a single package | ||||
| # being present. If for example the 'git' package is present we want content in | ||||
| # Git's global '/etc/gitconfig' file. If the package is absent that file content | ||||
| # is removed. If after that the file is empty (i.e. has a size of 0 bytes) the | ||||
| # file is deleted. | ||||
|  | ||||
| - name: 'Add per-package config' | ||||
|   when: 'pkg.name in ansible_facts.packages' | ||||
|   loop_control: | ||||
|     loop_var: 'pkg' | ||||
|     label: 'If ''{{ pkg.name }}'' package is present set system-wide config in ''{{ pkg.global_config_file }}''' | ||||
|   loop: '{{ package_config }}' | ||||
|   ansible.builtin.blockinfile: | ||||
|     marker: '# {mark} ANSIBLE MANAGED BLOCK - {{ pkg.name }} {{ pkg.marker }}' | ||||
|     path: '{{ pkg.global_config_file }}' | ||||
|     append_newline: true | ||||
|     prepend_newline: true | ||||
|     state: 'present' | ||||
|     create: true | ||||
|     block: '{{ pkg.global_config }}' | ||||
|  | ||||
| - name: 'Get stats of global config files' | ||||
|   register: 'role_common_packages__global_config_file_stats' | ||||
|   loop_control: | ||||
|     loop_var: 'pkg' | ||||
|     label: 'Get stats of ''{{ pkg.name }}'' system-wide config file ''{{ pkg.global_config_file }}''' | ||||
|   loop: '{{ package_config }}' | ||||
|   ansible.builtin.stat: | ||||
|     path: '{{ pkg.global_config_file }}' | ||||
|  | ||||
| - name: 'Remove per-package config' | ||||
|   when: 'stat_result.pkg.name not in ansible_facts.packages and stat_result.stat.exists' | ||||
|   loop_control: | ||||
|     loop_var: 'stat_result' | ||||
|     label: 'If ''{{ stat_result.pkg.name }}'' package is absent and system-wide config file ''{{ stat_result.pkg.global_config_file }}'' is present remove config file' | ||||
|   loop: '{{ role_common_packages__global_config_file_stats.results }}' | ||||
|   ansible.builtin.file: | ||||
|     path: '{{ stat_result.pkg.global_config_file }}' | ||||
|     state: 'absent' | ||||
							
								
								
									
										31
									
								
								tasks/base-package-auxiliary-settings-tmux.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								tasks/base-package-auxiliary-settings-tmux.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| # SPDX-License-Identifier: MIT | ||||
| - name: 'If Arch Linux and if ''tmux-resurrect'' and ''tmux'' packages are present auto-load tmux-resurrect on tmux start system-wide' | ||||
|   when: '(ansible_facts[''os_family''] | lower == ''archlinux'') and (''tmux-resurrect'' in ansible_facts.packages) and (''tmux'' in ansible_facts.packages)' | ||||
|   ansible.builtin.blockinfile: | ||||
|     marker: '# {mark} ANSIBLE MANAGED BLOCK - tmux-resurrect' | ||||
|     path: '{{ tmux_global_config_file }}' | ||||
|     append_newline: true | ||||
|     prepend_newline: true | ||||
|     state: 'present' | ||||
|     create: true | ||||
|     block: '{{ tmux_global_config_resurrect }}' | ||||
|  | ||||
| - name: 'Get stats of ''{{ tmux_global_config_file }}''' | ||||
|   ansible.builtin.stat: | ||||
|     path: '{{ tmux_global_config_file }}' | ||||
|   register: 'role_common_packages__tmux_global_config_file_stats' | ||||
|  | ||||
| - name: 'If Arch Linux and ''tmux-resurrect'' package is absent and system-wide config file ''{{ tmux_global_config_file }}'' is present remove config block from file' | ||||
|   when: '(ansible_facts[''os_family''] | lower == ''archlinux'') and (''tmux-resurrect'' not in ansible_facts.packages) and (role_common_packages__tmux_global_config_file_stats.stat.exists)' | ||||
|   ansible.builtin.blockinfile: | ||||
|     marker: '# {mark} ANSIBLE MANAGED BLOCK - tmux-resurrect' | ||||
|     path: '{{ tmux_global_config_file }}' | ||||
|     state: 'absent' | ||||
|     block: '{{ tmux_global_config_resurrect }}' | ||||
|  | ||||
| - name: 'If ''{{ tmux_global_config_file }}'' is 0 bytes delete it' | ||||
|   when: 'role_common_packages__tmux_global_config_file_stats.stat.size == 0' | ||||
|   ansible.builtin.file: | ||||
|     path: '{{ tmux_global_config_file }}' | ||||
|     state: 'absent' | ||||
|  | ||||
							
								
								
									
										3
									
								
								tasks/base-package-auxiliary-settings.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								tasks/base-package-auxiliary-settings.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # SPDX-License-Identifier: MIT | ||||
| - import_tasks: 'base-package-auxiliary-settings-tmux.yml' | ||||
| - import_tasks: 'base-package-auxiliary-settings-single-package-single-config.yml' | ||||
							
								
								
									
										23
									
								
								tasks/base-packages.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								tasks/base-packages.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| # SPDX-License-Identifier: MIT | ||||
| - name: 'Gather package facts' | ||||
|   ansible.builtin.package_facts: | ||||
|     manager: 'auto' | ||||
|  | ||||
| - name: 'If OS is a Linux flavor install Linux-specific packages' | ||||
|   when: 'ansible_facts[''system''] | lower == ''linux''' | ||||
|   ansible.builtin.package: | ||||
|     name: '{{ packages_linux_common_all_families }}' | ||||
|     state: 'present' | ||||
|  | ||||
| - name: 'If ''os_family'' is ''{{ ansible_facts[''os_family''] | lower }}'' install {{ ansible_facts[''os_family''] | lower }}-specific packages' | ||||
|   ansible.builtin.package: | ||||
|     name: '{{ vars[''packages_linux_common_'' + ansible_facts[''os_family''] | lower] }}' | ||||
|     state: 'present' | ||||
|  | ||||
| - name: 'If Arch Linux install Arch User Repository (AUR) packages' | ||||
|   when: 'ansible_facts[''os_family''] | lower == ''archlinux''' | ||||
|   kewlfft.aur.aur: | ||||
|     name: '{{ packages_linux_paru_archlinux }}' | ||||
|     state: 'present' | ||||
|   become: 'yes' | ||||
|   become_user: 'build' | ||||
| @@ -1,25 +1,7 @@ | ||||
| # SPDX-License-Identifier: MIT | ||||
| - name: 'If OS is a Linux flavor install Linux-specific packages' | ||||
|   when: 'ansible_facts[''system''] | lower == ''linux''' | ||||
|   ansible.builtin.package: | ||||
|     name: '{{ packages_linux_common_all_families }}' | ||||
|     state: 'present' | ||||
|  | ||||
| - name: 'If ''os_family'' is ''{{ ansible_facts[''os_family''] | lower }}'' install {{ ansible_facts[''os_family''] | lower }}-specific packages' | ||||
|   ansible.builtin.package: | ||||
|     name: '{{ vars[''packages_linux_common_'' + ansible_facts[''os_family''] | lower] }}' | ||||
|     state: 'present' | ||||
|  | ||||
| - name: 'If Arch Linux install Arch User Repository (AUR) packages' | ||||
|   when: 'ansible_facts[''os_family''] | lower == ''archlinux''' | ||||
|   kewlfft.aur.aur: | ||||
|     name: '{{ packages_linux_paru_archlinux }}' | ||||
|     state: 'present' | ||||
|   become: 'yes' | ||||
|   become_user: 'build' | ||||
|  | ||||
| - import_tasks: 'base-packages.yml' | ||||
| - import_tasks: 'base-package-auxiliary-settings.yml' | ||||
| - import_tasks: 'arch-linux-local-aur-repo-chroot.yml' | ||||
|   when: 'ansible_facts[''os_family''] | lower == ''archlinux''' | ||||
|  | ||||
| - import_tasks: 'maintenance-unattended-upgrades.yml' | ||||
|   when: 'ansible_facts[''os_family''] | lower == ''debian''' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user