Revert "change to arch"

This reverts commit a13aa14256.
This commit is contained in:
Tyler Starr 2023-01-19 15:35:55 -08:00
parent 1d325f6c43
commit dea8430811
28 changed files with 359 additions and 364 deletions

View File

@ -1,6 +1,6 @@
# Additional Setup
The following documents Arch setup that wasn't automated with ansible.
The following documents Void setup that wasn't automated with ansible.
## Radicale and vdirsyncer for contacts/calendar
@ -88,3 +88,21 @@ taskopen).
My GTK theme is pulled down by chezmoi, but isn't active by default. This can
be fixed with the lxappearance gui.
## Single GPU Passthrough with Windows
Install libvirt hooks:
```bash
sudo mkdir -p /etc/libvirt/hooks
sudo wget 'https://raw.githubusercontent.com/PassthroughPOST/VFIO-Tools/master/libvirt_hooks/qemu' \
-O /etc/libvirt/hooks/qemu
sudo chmod +x /etc/libvirt/hooks/qemu
```
reboot....
```bash
```

View File

@ -0,0 +1,39 @@
import yaml
import subprocess
print("I'm the void doctor!")
with open('/home/tstarr/.local/share/chezmoi/provision/tasks/desktop/packages.yml', 'r') as f:
in_yaml = yaml.safe_load(f)
installed = subprocess.getoutput("xbps-query -m | sed 's!-[^-]*$!!'").split("\n")
installed.extend(subprocess.getoutput("flatpak list --columns=application").split("\n"))
standard_keys = ["xbps", "flatpak"]
custom_keys = { "xbps-src": {"key": "include_tasks", "value": "xbps-src.yml"}}
def parse_xbps_src(in_dict):
pack_list = []
for item in in_dict["loop"]:
if "package" in item.keys():
pack_list.append(item["package"])
return pack_list
packages = []
for item in in_yaml:
# Check standard for standard keys
for key in standard_keys:
if key in item.keys():
packages.extend(item[key]["name"])
# Check custom if standard doesn't work
for key in custom_keys.keys():
if custom_keys[key]["key"] in item.keys():
if custom_keys[key]["value"] in item[custom_keys[key]["key"]]:
if key == "xbps":
packages.extend(parse_xbps_src(item))
not_ansible = [i for i in installed if i not in packages]
print("Installed, but not in ansible: ", not_ansible)

View File

@ -0,0 +1,3 @@
#!/bin/bash
tmp=$(mktemp); xbps-query -m > ${tmp}; xilog | grep -f ${tmp}; /usr/bin/rm ${tmp}

View File

@ -3,7 +3,7 @@
help ()
{
echo "
Update arch linux with ansible
Update void linux with ansible
Usage: update <tags> <flags>

View File

@ -0,0 +1,22 @@
#!/usr/bin/python
import os
import subprocess
import sys
input_str = sys.stdin.read().replace("\n", "")
pkg = input_str.replace(" ", "")[1:]
cmd = "xbps-query -Rs %s"%(pkg)
output = subprocess.getoutput(cmd)
if output.count('[') > 1:
cmd = "xbps-query -Rs %s | grep -E ' %s-[0-9](.|[0-9])[0-9]'"%(pkg,pkg)
output = subprocess.getoutput(cmd)
upper_pos = -1
for index, char in enumerate(output):
if char == char.upper() and char.isalpha():
upper_pos = index
break
if upper_pos == -1:
sys.stdout.write("error")
else:
sys.stdout.write(input_str + " # " + output[upper_pos:])

View File

@ -196,9 +196,9 @@ bindsym $mod+Shift+r move container to workspace $tag9
bindsym $mod+Shift+t move container to workspace $tag0
# audio
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +2%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -2%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume 0 +2%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume 0 -2%
bindsym XF86AudioMute exec amixer -q set Master toggle
# [o]pen applications
bindsym $mod+Return exec alacritty
@ -206,7 +206,7 @@ bindsym $mod+a exec rofi -show drun -show-icons
bindsym $mod+Shift+a exec rofi -show window -show-icons
bindsym $mod+o mode open
mode open {
bindsym b exec firefox, $e
bindsym b exec flatpak run org.mozilla.firefox, $e
bindsym s exec steam, $e
bindsym d exec flatpak run com.discordapp.Discord, $e
bindsym Escape mode default
@ -229,6 +229,7 @@ mode scratch {
#-------------------------------------------------------------------------------
exec --no-startup-id "autorandr --change && i3-msg restart"
exec --no-startup-id "pipewire & pipewire-pulse &"
exec --no-startup-id "udiskie &"
exec_always --no-startup-id "$HOME/.config/i3/scripts/polybar.sh"
exec_always --no-startup-id "blueman-applet"

View File

@ -116,6 +116,11 @@ alias cc="chezmoi cd"
alias cdr="chezmoi apply --verbose --dry-run"
alias ca="chezmoi apply"
# xbps
alias xi="sudo xbps-install"
alias xr="sudo xbps-remove"
alias xl="void-list-packages"
# trashcli
alias rm='echo "This is not the command you are looking for."; false'
alias tp='trash-put'

View File

@ -2,21 +2,15 @@
echo -e "Starting initial setup..."
CHEZDIR="/home/tstarr/.local/share/chezmoi"
CHEZDIR="/home/test/.local/share/chezmoi"
echo "Input email for bitwarden:"
read bitemail
# Install ansible python dependencies
sudo pacman -Syu
sudo pacman -S git chezmoi python python-pip ansible base-devel
sudo xbps-install -Syu -y
sudo xbps-install python3 python3-pip ansible -y
sudo pip install pexpect
# Install yay
git clone https://aur.archlinux.org/yay.git ~/tmp/yay
cd ~/tmp/yay
makepkg -si
cd -
# Install ansible extensions
ansible-galaxy install -r "$CHEZDIR/provision/requirements.yml"

View File

@ -1,272 +0,0 @@
#!/usr/local/bin/python
# The MIT License (MIT)
#
# Copyright (c) 2014 Austin Hyde
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
def yay_in_path(module):
rc, _, _ = module.run_command('which yay', check_rc=False)
return rc == 0
def pacman_in_path(module):
rc, _, _ = module.run_command('which pacman', check_rc=False)
return rc == 0
def get_version(yay_output):
'''Take yay -Qi or yay -Si output and get the Version'''
lines = yay_output.split('\n')
for line in lines:
if 'Version' in line:
return line.split(':')[1].strip()
return None
def query_package(module, pkg, state):
'''
Query the package status in both the local system and the repository.
Returns three booleans to indicate:
* If the package is installed
* If the package is up-to-date
* Whether online information was available
'''
local_check_cmd = 'yay -Qi %s' % pkg
local_check_rc, local_check_stdout, _ = module.run_command(local_check_cmd, check_rc=False)
if local_check_rc != 0:
return False, False, False
# No need to check for the repo version in some situations
# Indicate the package is out-of-date, because we chose not to check
if state == 'present' or state == 'absent':
return True, False, False
local_version = get_version(local_check_stdout)
repo_check_cmd = 'yay -Si %s' % pkg
repo_check_rc, repo_check_stdout, repo_check_stderr = module.run_command(repo_check_cmd, check_rc=False)
repo_version = get_version(repo_check_stdout)
if repo_check_rc == 0 and repo_check_stderr == '':
return True, (local_version == repo_version), False
else:
# Indicate package is up-to-date, but just because we hit an error contacting the repo
return True, True, True
def update_package_db(module):
rc, _, stderr = module.run_command('yay -Sy', check_rc=False)
if rc == 0 and stderr == '':
return False, 'Package DB up-to-date'
elif rc == 1 and stderr == '':
return True, 'Updated the package DB'
else:
module.fail_json(msg='could not update package db: %s' % stderr)
def upgrade(module):
check_rc, check_stdout, check_stderr = module.run_command('yay -Qqu', check_rc=False)
if check_rc == 0 and check_stderr == '' and module.check_mode:
return True, '%s package(s) would be upgraded' % (len(check_stdout.split('\n')) - 1)
elif check_rc == 0 and check_stderr == '' and not module.check_mode:
upgrade_rc, _, upgrade_stderr = module.run_command(
'yay -Su --noconfirm',
check_rc=False,
)
if upgrade_rc == 0:
return True, 'System upgraded'
else:
module.fail_json(msg='unable to upgrade: %s' % upgrade_stderr)
elif check_rc == 1 and check_stderr == '':
return False, 'Nothing to upgrade'
else:
module.fail_json(msg='unable to check for upgrade: %s' % check_stderr)
def get_sudo_user(module):
# ansible sets the SUDO_USER environment variable. Default to using this,
# checking USER and then `logname` as backups.
user = os.environ.get('SUDO_USER')
# If ansible is run as root with become_user set, use the specified user
# instead of root.
if not user or user == 'root':
user = os.environ.get('USER')
if not user:
rc, stdout, _ = module.run_command('logname', check_rc=True)
user = stdout
return user
def check_packages(module, pkgs, state):
would_be_changed = []
for pkg in pkgs:
installed, updated, _ = query_package(module, pkg, state)
if ((state in ['present', 'latest'] and not installed) or
(state == 'latest' and not updated) or
(state == 'absent' and installed)):
would_be_changed.append(pkg)
word = 'installed'
if state == 'absent':
word = 'removed'
if would_be_changed:
return True, '%s package(s) would be %s' % (len(would_be_changed), word)
else:
return False, 'All packages are already %s' % word
def install_packages(module, pkgs, state):
num_installed = 0
package_err = []
message = ''
sudo_user = get_sudo_user(module)
cmd = 'sudo -u %s yay --noconfirm -S %s'
for pkg in pkgs:
installed, updated, latest_error = query_package(module, pkg, state)
if latest_error and state == 'latest':
package_err.append(pkg)
if installed and (state == 'present' or (state == 'latest' and updated)):
continue
rc, _, stderr = module.run_command(cmd % (sudo_user, pkg), check_rc=False)
if rc != 0:
module.fail_json(msg='Failed to install package %s, because: %s' % (pkg, stderr))
num_installed += 1
if state == 'latest' and len(package_err) > 0:
message = 'But could not ensure "latest" state for %s package(s) as remote version could not be fetched.' % package_err
if num_installed > 0:
return True, 'Installed %s package(s). %s' % (num_installed, message)
else:
return False, 'All packages were already installed. %s' % message
def remove_packages(module, pkgs, recurse, state):
num_removed = 0
arg = 'R'
word = 'remove'
if recurse:
arg = 'Rs'
word = 'recursively remove'
cmd = 'pacman -%s --noconfirm %s'
for pkg in pkgs:
installed, _, _ = query_package(module, pkg, state)
if not installed:
continue
rc, _, stderr = module.run_command(cmd % (arg, pkg), check_rc=False)
if rc != 0:
module.fail_json(msg='failed to %s package %s because: %s' % (word, pkg, stderr))
num_removed += 1
if num_removed > 0:
return True, 'Removed %s package(s)' % num_removed
else:
return False, 'All packages were already removed'
def main():
module = AnsibleModule(
argument_spec = dict(
name = dict(type='list'),
state = dict(
default='present',
choices=['absent', 'present', 'latest'],
),
recurse = dict(default='no', type='bool'),
upgrade = dict(default='no', type='bool'),
update_cache = dict(
default='no',
aliases=['update-cache'],
type='bool',
),
),
required_one_of = [['name', 'update_cache', 'upgrade']],
supports_check_mode = True
)
if not yay_in_path(module):
module.fail_json(msg="could not locate yay executable")
if not pacman_in_path(module):
module.fail_json(msg="could not locate pacman executable")
p = module.params
changed = False
messages = []
if p["update_cache"] and not module.check_mode:
updated, update_message = update_package_db(module)
changed = changed or updated
messages.append(update_message)
if p['update_cache'] and module.check_mode:
changed = True
messages.append('Would have updated the package cache')
if p['upgrade']:
upgraded, upgrade_message = upgrade(module)
changed = changed or upgraded
messages.append(upgrade_message)
if p['name'] and module.check_mode:
packages_would_change, check_message = check_packages(
module,
p['name'],
p['state'],
)
changed = changed or packages_would_change
messages.append(check_message)
elif p['name'] and not module.check_mode:
if p['name']:
if p['state'] in ['present', 'latest']:
packages_changed, package_message = install_packages(
module,
p['name'],
p['state'],
)
elif p['state'] == 'absent':
packages_changed, package_message = remove_packages(
module,
p['name'],
p['recurse'],
p['state'],
)
changed = changed or packages_changed
messages.append(package_message)
module.exit_json(changed=changed, msg='. '.join(messages))
from ansible.module_utils.basic import *
main()

View File

@ -1,4 +1,4 @@
- name: Ansible playbook to setup arch linux
- name: Ansible playbook to setup void linux
hosts: all
vars_files:

View File

@ -1,43 +1,47 @@
- name: Install desktop arch packages
pacman:
- name: Install desktop void packages
xbps:
name:
- xorg # X.org meta-package
- xorg-xinit
- xterm # X Terminal Emulator
- alacritty # Cross-platform, GPU-accelerated terminal emulator
- mpv # Video player based on MPlayer/mplayer2
- python-i3ipc # Improved Python library to control i3wm and sway
- python3-i3ipc # Improved Python library to control i3wm and sway
- xprop # Property displayer for X
- lxappearance # LXDE Theme Switcher
- blueman # GTK+ Bluetooth Manager
- xrandr # Primitive command line interface to RandR extension
- dunst # Lightweight and customizable notification daemon
- ffmpeg # Decoding, encoding and streaming software
- i3 # Improved tiling window manager
- i3status # Status bar generator for i3bar, dzen2, xmobar or similar programs
- nitrogen # Background browser and setter for X with support for Xinerama
- nvidia-dkms # NVIDIA drivers for linux - Libraries and Utilities
- lib32-nvidia-utils # NVIDIA drivers for linux - common libraries (32bit)
- nvidia # NVIDIA drivers for linux - Libraries and Utilities
- nvidia-libs-32bit # NVIDIA drivers for linux - common libraries (32bit)
- pavucontrol # PulseAudio Volume Control
- polybar # Fast and easy-to-use status bar
- rofi # Window switcher, run dialog and dmenu replacement
- pcmanfm # LXDE file manager
- xclip # Command line interface to the X11 clipboard
- autorandr # Automatically select a display configuration based on connected devices
- xsel # Command-line getting and setting the contents of the X selection
- clipmenu # Clipboard management using dmenu
- nerd-fonts # Iconic font aggregator, collection and patcher
- xdotool # Command-line X11 automation tool
- flameshot # Powerful yet simple to use screenshot software for GNU/Linux
- firefox
state: present
become: true
- name: Install desktop aur packages
yay:
name:
- rofi-rbw # Simplistic password typer/copier using rofi and wofi
- nerd-fonts-complete
state: present
become: true
- name: Install desktop xbps-src packages
tags: ["src"]
include_tasks: ../include/xbps-src.yml
loop:
- package: rofi-rbw # Simplistic password typer/copier using rofi and wofi
repository: hostdir/binpkgs
- name: Install desktop flatpaks
flatpak:
name:
- org.mozilla.firefox # Mozilla Firefox web browser
- com.discordapp.Discord # VoIP and instant messaging social platform
- org.gimp.GIMP # Create images and edit photographs
- org.inkscape.Inkscape # Vector Graphics Editor

View File

@ -1,2 +1,4 @@
- import_tasks: configs.yml
tags: ["configs"]
- import_tasks: packages.yml
tags: ["packages"]
tags: ["packages"]

View File

@ -0,0 +1,5 @@
- name: Setup nvm
tags: ["once"]
shell: >
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
creates=/home/{{ user }}/.nvm/nvm.sh

View File

@ -1,21 +1,14 @@
- name: Install development arch packages
pacman:
- name: Install development void packages
xbps:
name:
- python # Python programming language (3.11 series)
- python-pip # A tool for installing and managing Python3 packages
- python-setuptools
- python3 # Python programming language (3.11 series)
- python3-pip # A tool for installing and managing Python3 packages
- ripgrep # Fast search tool inspired by ag and grep
- fd # Simple, fast and user-friendly alternative to find
- lazygit # Simple terminal UI for git commands
- python-pipenv # Python Development Workflow for Humans
state: present
become: true
- name: Install development aur packages
yay:
name:
- tmuxinator # Create and manage complex tmux sessions easily
- nvm
- ruby-tmuxinator # Create and manage complex tmux sessions easily
- python3-pipenv # Python Development Workflow for Humans
- python3-devel # Python programming language (3.11 series) - development files
state: present
become: true

View File

@ -1,12 +1,8 @@
- name: Install engineering arch packages
pacman:
- name: Install engineering void packages
xbps:
name:
- freecad # General purpose 3D CAD modeler
state: present
become: true
- name: Install engineering aur packages
yay:
name:
- superslicer-bin # PrusaSlicer fork (which is a slic3r fork)
become: true
- include_tasks: superslicer.yml # PrusaSlicer fork (which is a slic3r fork)

View File

@ -0,0 +1,6 @@
- name: Install SuperSlicer
include_tasks: ../include/download-github-bin.yml
loop:
- user: supermerill
repo: SuperSlicer
regex: "SuperSlicer-ubuntu_18.04-[0-9]"

View File

@ -1,6 +1,10 @@
- name: Install gaming arch packages
pacman:
- name: Install gaming void packages
xbps:
name:
- libdrm-32bit # Userspace interface to kernel DRM services (32bit)
- libgcc-32bit # GNU Compiler Collection - GCC library (32bit)
- libstdc++-32bit # GNU Compiler Collection - Standard C++ Library (32bit)
- mesa-dri-32bit # Mesa DRI drivers (32bit)
- steam # Launcher for the Steam software distribution service
- lutris # Video game preservation platform
- gamemode # Optimize system performance for games on demand

View File

@ -0,0 +1,16 @@
- name: Get {{ item.repo }} release information
uri:
url: https://api.github.com/repos/{{ item.user }}/{{ item.repo }}/releases/latest
return_content: true
register: repo_latest
- name: Install archived {{ item.repo }} - {{ repo_latest.json.tag_name }}
loop: "{{ repo_latest.json.assets }}"
when: "asset.name is regex(item.regex)"
unarchive:
src: "{{ asset.browser_download_url }}"
dest: /usr/local/bin
remote_src: true
loop_control:
loop_var: asset
become: true

View File

@ -0,0 +1,16 @@
- name: Get {{ item.repo }} release information
uri:
url: https://api.github.com/repos/{{ item.user }}/{{ item.repo }}/releases/latest
return_content: true
register: repo_latest
- name: Install un-archived {{ item.repo }} - {{ repo_latest.json.tag_name }}
loop: "{{ repo_latest.json.assets }}"
when: "asset.name is regex(item.regex)"
get_url:
url: "{{ asset.browser_download_url }}"
dest: /usr/local/bin/{{ item.repo }}
mode: 0775
loop_control:
loop_var: asset
become: true

View File

@ -0,0 +1,33 @@
- name: Clone or pull void-packages
ansible.builtin.git:
repo: 'https://github.com/starr-dusT/void-packages.git'
dest: /home/{{ user }}/git/void-packages
update: yes
register: git_return
- name: Bootstrap if newly cloned
ansible.builtin.command: ./xbps-src binary-bootstrap
args:
chdir: /home/{{ user }}/git/void-packages
when: not git_return.before
- name: Enable restricted if newly cloned
copy:
dest: /home/{{ user }}/git/void-packages/etc/conf
content: |
XBPS_ALLOW_RESTRICTED=yes
when: not git_return.before
- name: Package {{ item.package }} with xbps-src
ansible.builtin.command: ./xbps-src pkg {{ item.package }}
args:
chdir: /home/{{ user }}/git/void-packages
- name: Install packaged {{ item.package }}
expect:
command: xbps-install --repository {{ item.repository }} {{ item.package }}
responses:
continue: y
args:
chdir: /home/{{ user }}/git/void-packages
become: true

View File

@ -14,14 +14,80 @@
mode: 0775
become: true
- name: Set git username and email
shell: |
git config --global user.email {{ git_email }}
git config --global user.name {{ git_user }}
- name: Stop system services
shell: |
rm -R /var/service/dhcpcd
ignore_errors: true
become: true
- name: Start system services
shell: |
ln -s /etc/sv/dbus /var/service
ln -s /etc/sv/polkitd /var/service
ln -s /etc/sv/bluetoothd /var/service
ln -s /etc/sv/sshd /var/service
ln -s /etc/sv/libvirtd /var/service
ln -s /etc/sv/virtlockd /var/service
ln -s /etc/sv/virtlogd /var/service
ln -s /etc/sv/NetworkManager /var/service
ignore_errors: true
become: true
- name: Add {{ user }} to libvirt group
shell: |
gpasswd -a {{ user }} libvirt
become: true
- name: Start syncthing as {{ user }}
service:
name: syncthing@{{ user }}
state: started
enabled: yes
- name: Setup user services
block:
- name: Create user folder
file:
path: /etc/sv/{{ user }}
state: directory
- name: Create user service file
copy:
dest: /etc/sv/{{ user }}/run
content: |
#!/bin/sh
USER="{{ user }}"
GROUPS="$(id -Gn "$USER" | tr ' ' ':')"
SVDIR="/home/${USER}/.service"
if [ -d ${SVDIR} ]; then
chpst -u"${USER}:${GROUPS}" runsvdir ${SVDIR}
fi
mode: 0755
- name: Enable user services
shell: |
ln -s /etc/sv/{{ user }} /var/service
ignore_errors: true
become: true
- name: Ensure user services folder exists
file:
path: /home/{{ user }}/.service
state: directory
mode: 0755
- name: Start syncthing as {{ user }}
block:
- name: Create syncthing folder
file:
path: /home/{{ user }}/.service/syncthing
state: directory
mode: 0755
- name: Create synthing run file
copy:
dest: /home/{{ user }}/.service/syncthing/run
content: |
#!/bin/sh
export HOME=/home/{{ user }}/
exec /usr/bin/syncthing > /dev/null 2>&1
mode: 0755

View File

@ -1,23 +1,32 @@
- name: Install system arch packages
pacman:
- name: Install system void repos
xbps:
name:
- void-repo-multilib # Void Linux drop-in file for the multilib repository
- void-repo-multilib-nonfree # Void Linux drop-in file for the multilib/nonfree repository
- void-repo-nonfree # Void Linux drop-in file for the nonfree repository
state: present
become: true
- name: Install system void packages
xbps:
name:
- linux
- linux-zen
- linux-headers
- linux-zen-headers
- git # Fast Version Control System
- git-lfs # Git extension for versioning large files
- syncthing # Continuous File Synchronization
- flatpak # Application deployment framework for desktop apps
- wireguard # Fast, modern, secure vpn tunnel
- wireguard-tools # Tool for wireguard
- cronie # Runs specified programs at scheduled times
- pipewire # Server and user space API to deal with multimedia pipelines
#- libspa-bluetooth # Server and user space API to deal with multimedia pipelines - bluetooth plugins
- libspa-bluetooth # Server and user space API to deal with multimedia pipelines - bluetooth plugins
- cifs-utils # CIFS filesystem user-space tools
- ansible # Simple deployment, configuration management and execution framework
- btrbk # Backup tool for btrfs subvolumes
- chezmoi # Manage your dotfiles across multiple machines, securely
- elogind # Standalone logind fork
- rsync # Remote fast incremental file transfer tool
- unzip # List, test and extract compressed files in a ZIP archive
- mimeo # Open files by MIME-type or file name using regular expressions
- busybox # Swiss Army Knife of Embedded Linux
- qemu # Open Source Processor Emulator
- libvirt # Virtualization API for controlling virtualization engines
@ -27,19 +36,11 @@
- udiskie # Removable disk automounter using udisks
- curl # Client that groks URLs
- wget # GNU wget download utility
- networkmanager # Network Management daemon
- NetworkManager # Network Management daemon
- network-manager-applet # NetworkManager panel applet for GNOME
- psensor # Graphical hardware temperature monitor for Linux
- upower # Abstraction for enumerating power devices
- android-udev # Android udev rules list aimed to be the most comprehensive on the net
state: present
become: true
- name: Install system aur packages
yay:
name:
- mimeo # Open files by MIME-type or file name using regular expressions
- btrbk # Backup tool for btrfs subvolumes
- android-udev-rules # Android udev rules list aimed to be the most comprehensive on the net
state: present
become: true

View File

@ -0,0 +1,29 @@
- name: Make advcpmv directory
file:
path: /home/{{ user }}/tmp/advcpmv
state: directory
- name: Download advcpmv file
ansible.builtin.get_url:
url: https://raw.githubusercontent.com/jarun/advcpmv/master/install.sh
dest: /home/{{ user }}/tmp/advcpmv/install.sh
- name: Compile advcp and advmv
command:
cmd: sh /home/{{ user }}/tmp/advcpmv/install.sh
creates: /home/{{ user }}/tmp/advcpmv/advcp
chdir: /home/{{ user }}/tmp/advcpmv
- name: Move advcp
copy:
src: /home/{{ user }}/tmp/advcpmv/advcp
dest: /usr/local/bin/cpg
mode: preserve
become: true
- name: Move advmv
copy:
src: /home/{{ user }}/tmp/advcpmv/advmv
dest: /usr/local/bin/mvg
mode: preserve
become: true

View File

@ -4,6 +4,7 @@
shell: /bin/zsh
become: true
- name: Set rbw email
shell: |
rbw config set email {{ bitwarden_email }}

View File

@ -0,0 +1,6 @@
- name: Install nb
ansible.builtin.get_url:
url: https://raw.github.com/xwmx/nb/master/nb
dest: /usr/local/bin/nb
mode: 0755
become: true

View File

@ -1,10 +1,9 @@
- name: Install terminal arch packages
pacman:
- name: Install terminal void packages
xbps:
name:
- neovim # Vim-fork focused on extensibility and agility
- task # Command-line TODO list manager
- timew # Timewarrior tracks and reports time
- taskwarrior-tui
- timewarrior # Timewarrior tracks and reports time
- vifm # Ncurses-based file manager with vi-like keybindings
- zsh # Z SHell
- tmux # Terminal Multiplexer
@ -18,10 +17,12 @@
state: present
become: true
- name: Install terminal aur packages
yay:
name:
- rbw
- nb
state: present
become: true
- name: Install terminal xbps-src packages
tags: ["src"]
include_tasks: ../include/xbps-src.yml
loop:
- package: rbw # Unofficial command line client for bitwarden
repository: hostdir/binpkgs
- include_tasks: nb.yml # Command line and local web notetaking, bookmarking, archiving, and knowledge base application
- include_tasks: taskwarrior-tui.yml # Terminal User Interface (TUI) for Taskwarrior

View File

@ -0,0 +1,6 @@
- name: Install taskwarrior-tui
include_tasks: ../include/download-github-archive.yml
loop:
- user: kdheepak
repo: taskwarrior-tui
regex: unknown-linux-gnu.tar.gz

View File

@ -5,15 +5,15 @@ My personal dotfiles repo. Documentation is pretty spotty. Maybe I'll fix that s
## Usage
Dotfiles are managed with chezmoi and Ansible (built for Arch) is used for the bulk of configuration.
Dotfiles are managed with chezmoi and Ansible (built for Void) is used for the bulk of configuration.
## Initial Setup
Install Arch with BTRFS and run the following commands:
Install Void with BTRFS and run the following commands:
```bash
sudo pacman -Syu
sudo pacman -S vim git chezmoi
sudo xbps-install -Syu -y
sudo xbps-install -S vim git chezmoi -y
git clone https://github.com/starr-dusT/dotfiles ~/.local/share/chezmoi
```
@ -29,4 +29,4 @@ Perform additional setup found in [additional-setup](additional-setup.md)
## Update Setup
`arch-update` command updates the system with ansible. Run `arch-update -h` for information on usage.
`void-update` command updates the system with ansible. Run `void-update -h` for information on usage.