delete os provisions that are out of date

This commit is contained in:
Tyler Starr 2023-06-24 23:14:54 -07:00
parent d50f69cb2f
commit e0708c3c8a
92 changed files with 1 additions and 2208 deletions

View File

@ -1,143 +0,0 @@
# Additional Setup
The following documents some Fedora setup that wasn't automated with ansible.
## Snapper
Snapper is used to create snapshots with the BTRFS filesystem for root and home
directories. I'd like to make these snapshots available at grub with
[grub-btrfs](https://github.com/Antynea/grub-btrfs), but I've found that
akmod-nvidia breaks it. Snapper is setup with:
```bash
sudo btrfs filesystem label / *FTL ship name*
# Make /var/log subvolume
sudo mv -v /var/log /var/log-old
sudo btrfs subvolume create /var/log
sudo cp -arv /var/log-old/. /var/log/
sudo restorecon -RFv /var/log
sudo rm -rvf /var/log-old
# Add /var/log to fstab
sudo vi /etc/fstab
# UUID=<drive uuid> /var/log btrfs subvol=var/log,compress=zstd:1 0 0
sudo systemctl daemon-reload
sudo mount -va
# Create snapper configs
sudo snapper -c root create-config /
sudo snapper -c home create-config /home
# Allow users to perform snapshots
sudo snapper -c root set-config ALLOW_USERS=$USER SYNC_ACL=yes
sudo snapper -c home set-config ALLOW_USERS=$USER SYNC_ACL=yes
sudo chown -R :$USER /.snapshots
sudo chown -R :$USER /home/.snapshots
# Add / and /home to fstab
sudo vi /etc/fstab
# UUID=<drive uuid> /.snapshots btrfs subvol=.snapshots,compress=zstd:1 0 0
# UUID=<drive uuid> /home/.snapshots btrfs subvol=home/.snapshots,compress=zstd:1 0 0
sudo systemctl daemon-reload
sudo mount -va
# Show resulting subvolume structure
sudo btrfs subvolume list /
# Enable and start snapper timeline and cleanup services
sudo systemctl enable snapper-timeline.timer
sudo systemctl start snapper-timeline.timer
sudo systemctl enable snapper-cleanup.timer
sudo systemctl start snapper-cleanup.timer
```
## Wireguard Client
Wireguard is nice for a home vpn and [pivpn](https://pivpn.io/) makes it easy.
1. Create client on server and copy resulting `.conf` file to local machine
2. Import to networkmanager with:
```bash
nmcli connection import type wireguard file <conf file from pivpn>
```
3. Use `nm-connection-editor` to disable automatic connection
## Mount network drives
I find fstab messing about more troubule than it is worth. Credentials are
stored in ~/.smb. Mount network drives when needed with the following command:
```bash
linux-mount-<network drive name>
```
## Taskopen for taskwarrior
[taskopen](https://github.com/jschlatow/taskopen) is easier to install
manually at this point since it isn't packaged and uses nim. Might get this
automated in the future.
```bash
curl https://nim-lang.org/choosenim/init.sh -sSf | sh # install nim
git clone https://github.com/jschlatow/taskopen.git
cd taskopen
make PREFIX=/usr
sudo make PREFIX=/usr install
```
## Syncthing
Syncthing is used to sync folders between various computers and android. The
ansible script should setup and run the service, but shares must be setup
via the web gui. Currently four shares exists:
- `.warrior` - `.task` and `.timewarrior` folders to sync taskwarrior tasks.
These two folders are symlinked to the home folder where taskwarrior/timewarrior
expects them.
- `warrior` - contains text files associated with taskwarrior (mostly from
taskopen).
- `phone photos` - personal photos synched from android.
- `phone screenshots` - personal screenshots synced from android.
- `ssh_keys` - contains ssh keys for git remotes (~/.ssh/keys)
- `vimwiki` - contains text files associate with my personal vimwiki.
## Lxappearance
My GTK theme is pulled down by chezmoi, but isn't active by default. This can
be fixed with the lxappearance gui (for X sessions).
## Git SSH for personal and work
- ~/.gitconfig - personal github configuration.
- ~/devel/work/.gitconfig - work gitlab configuration.
Gitconfig files for SSH git push/pull are automaitcally placed. The only
additional configuration required is the transfer of SSH keys (see Syncthing
section).
## Firefox
Transfer the `.mozilla` folder from install-to-install to maintain Firefox
settings and configurations.
## Single GPU Passthrough to windows
I use a windows virtual machine with gpu passthrough of the few games that
won't work on linux, Zwift, and Fusion360. [This](https://github.com/ilayna/Single-GPU-passthrough-amd-nvidia)
has scripts that make that process relatively easy and [this wiki](https://gitlab.com/risingprismtv/single-gpu-passthrough/-/wikis/home)
provides good information on setting up the virtual machine in virt-manager.
The `patch.rom` required for my GPU is included in my repo. The virt-manager
setup should usually be avoided by transfering the VM between machines:
1. Copy the VM's disks from `/var/lib/libvirt/images` on src host to the same dir on destination host
2. On the source host run `virsh dumpxml VMNAME > domxml.xml` and copy this xml to the destination host
3. On the destination host run `virsh define domxml.xml`
## xmonad
```bash
cd ~/.config/xmonad
stack update
stack init
stack install
```

View File

@ -1 +0,0 @@
local ansible_connection=local ansible_python_interpreter=/usr/bin/python

View File

@ -1,9 +0,0 @@
# Ansible Galaxy Roles
roles:
- src: https://github.com/starr-dusT/ansible-role-customize-gnome
- src: https://github.com/starr-dusT/ansible-rustup
collections:
- name: community.general
version: 6.0.1
source: https://galaxy.ansible.com
- name: kewlfft.aur

View File

@ -1,13 +0,0 @@
- name: Ansible playbook to setup arch linux
hosts: all
vars_files:
- ../../../home/.chezmoidata.yaml
tasks:
- import_tasks: tasks/system/_main.yml
- import_tasks: tasks/terminal/_main.yml
- import_tasks: tasks/development/_main.yml
- import_tasks: tasks/gaming/_main.yml
- import_tasks: tasks/engineering/_main.yml
- import_tasks: tasks/desktop/_main.yml

View File

@ -1,7 +0,0 @@
- import_tasks: packages.yml
tags: ["packages"]
- import_tasks: configs.yml
tags: ["configs"]
- import_tasks: gnome-settings/_main.yml
tags: ["configs"]
when: desktop == "gnome"

View File

@ -1,64 +0,0 @@
- name: Set desktop files to hide
include_tasks: ../include/hide-desktop.yml
loop:
- /usr/share/applications/wine-winhelp.desktop
- /usr/share/applications/wine-mime-msi.desktop
- /usr/share/applications/wine-notepad.desktop
- /usr/share/applications/wine-oleview.desktop
- /usr/share/applications/wine-regedit.desktop
- /usr/share/applications/wine-uninstaller.desktop
- /usr/share/applications/wine-wineboot.desktop
- /usr/share/applications/wine-winecfg.desktop
- /usr/share/applications/wine-winefile.desktop
- /usr/share/applications/wine-winemine.desktop
- /usr/share/applications/wine-wordpad.desktop
- /usr/share/applications/vifm.desktop
- /usr/share/applications/dosbox-staging.desktop
- /usr/share/applications/nvim.desktop
- /usr/share/applications/syncthing-start.desktop
- /usr/share/applications/syncthing-ui.desktop
- /usr/share/applications/cgnscalc.desktop
- /usr/share/applications/cgnsnodes.desktop
- /usr/share/applications/cgnsplot.desktop
- /usr/share/applications/cgnsview.desktop
- /usr/share/applications/qt5-assistant.desktop
- /usr/share/applications/opencascade-draw.desktop
- /usr/share/applications/unitconv.desktop
- name: Uninstall desktop bloat
pacman:
name:
- yelp
- gnome-boxes
- rhythmbox
- gnome-photos
- totem
- gnome-text-editor
- cheese
- gnome-tour
- gnome-maps
state: absent
become: true
- name: Delete amd vulkan files
ansible.builtin.file:
state: absent
path:
- /usr/share/vulkan/icd.d/amd_icd32.json
- /usr/share/vulkan/icd.d/amd_icd64.json
- name: Start and enable bluetooth
tags: ["once"]
systemd:
name: bluetooth
enabled: true
state: started
become: true
- name: Start and enable bluetooth
tags: ["once"]
systemd:
name: libvirtd
enabled: true
state: started
become: true

View File

@ -1,17 +0,0 @@
- name: Set custom gnome binding {{ index }}
dconf:
key: "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom{{ index }}/binding"
value: "{{ item.bind }}"
state: present
- name: Set custom gnome command {{ index }}
dconf:
key: "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom{{ index }}/command"
value: "{{ item.command }}"
state: present
- name: Set custom gnome name {{ index }}
dconf:
key: "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom{{ index }}/name"
value: "{{ index }}"
state: present

View File

@ -1,6 +0,0 @@
- import_tasks: extensions.yml
tags: ["gnome-extensions"]
- import_tasks: keybinds.yml
tags: ["configs"]
- import_tasks: window-management.yml
tags: ["configs"]

View File

@ -1,11 +0,0 @@
- name: Install gnome extensions
include_role:
name: ansible-role-customize-gnome
vars:
# For now extensions aren't enabled (https://github.com/PeterMosmans/ansible-role-customize-gnome/issues/25)
gnome_extensions:
- id: 779 # https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator
- id: 4362 # https://github.com/Noobsai/fullscreen-avoider
- id: 1460 # https://github.com/corecoding/Vitals
- id: 7 # https://gitlab.gnome.org/GNOME/gnome-shell-extensions
gnome_user: "{{ user }}"

View File

@ -1,62 +0,0 @@
- name: Unset particular default gnome keybinds
dconf:
key: "{{ item }}"
value: [""]
state: present
loop:
- "/org/gnome/shell/keybindings/switch-to-application-1"
- "/org/gnome/shell/keybindings/switch-to-application-2"
- "/org/gnome/shell/keybindings/switch-to-application-3"
- "/org/gnome/shell/keybindings/switch-to-application-4"
- "/org/gnome/shell/keybindings/switch-to-application-5"
- "/org/gnome/desktop/wm/keybindings/switch-input-source"
- "/org/gnome/desktop/wm/keybindings/switch-input-source-backwards"
- "/org/gnome/settings-daemon/plugins/media-keys/screensaver"
- "/org/gnome/desktop/wm/keybindings/switch-applications"
- "/org/gnome/desktop/wm/keybindings/switch-applications-backward"
- "/org/gnome/desktop/wm/keybindings/switch-windows"
- "/org/gnome/desktop/wm/keybindings/switch-windows-backward"
- name: Change existing gnome keybinds
dconf:
key: "{{ item.key }}"
value: "{{ item.value }}"
state: present
loop:
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-1", value: ["<Super>1"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-2", value: ["<Super>2"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-3", value: ["<Super>3"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-4", value: ["<Super>4"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-5", value: ["<Super>5"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-1", value: ["<Super><Shift>1"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-2", value: ["<Super><Shift>2"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-3", value: ["<Super><Shift>3"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-4", value: ["<Super><Shift>4"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-5", value: ["<Super><Shift>5"]}
- {key: "/org/gnome/desktop/wm/keybindings/minimize", value: ["<Super>Space"]}
- {key: "/org/gnome/desktop/wm/keybindings/toggle-fullscreen", value: ["<Super>F"]}
- {key: "/org/gnome/desktop/wm/keybindings/close", value: ["<Super>Q"]}
- {key: "/org/gnome/desktop/wm/keybindings/maximize-horizontally", value: ["<Super><Shift>H"]}
- {key: "/org/gnome/desktop/wm/keybindings/maximize-vertically", value: ["<Super><Shift>V"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-center", value: ["<Super>C"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-windows", value: ["<Super>Tab"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-windows-backward", value: ["<Super><Shift>Tab"]}
- {key: "/org/gnome/settings-daemon/plugins/media-keys/screensaver", value: ["<Super><Shift>L"]}
- name: Set custom gnome keybinds
include_tasks: _custom-bind.yml
loop:
- {command: "'gnome-terminal'", bind: "'<Super>Return'"}
- {command: "'firefox'", bind: "'<Super><Shift>B'"}
- {command: "'code'", bind: "'<Super><Shift>V'"}
loop_control:
index_var: index
# Gnome requires an array of strings with the custom keybinds
# this must match the number of keybinds defined above...
- name: Set custom-keybinds array
dconf:
key: /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings
value: "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/',
'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/',
'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/']"

View File

@ -1,10 +0,0 @@
- name: Set Static workspaces
dconf:
key: "/org/gnome/mutter/dynamic-workspaces"
value: "false"
- name: Set Number of workspaces
dconf:
key: "/org/gnome/desktop/wm/preferences/num-workspaces"
value: "5"

View File

@ -1,55 +0,0 @@
- name: Install desktop arch packages
pacman:
name:
- alacritty # Cross-platform, GPU-accelerated terminal emulator
- mpv # Video player based on MPlayer/mplayer2
- ffmpeg # Decoding, encoding and streaming software
- nvidia-dkms # NVIDIA drivers for linux - Libraries and Utilities
- nvidia-utils
- lib32-nvidia-utils
- nvidia-settings
- firefox # Mozilla Firefox web browser
- ttf-jetbrains-mono-nerd
- udiskie
- network-manager-applet
- blueman
- flameshot
- libx11
- libxft
- libxinerama
- libxrandr
- libxss
- pkgconf
- stack
- rofi
- xorg
- xorg-xinit
- picom
- dunst
- lxsession
- nitrogen
- lxappearance
- virt-manager
- qemu-desktop
- dnsmasq
state: present
become: true
- name: Install desktop flatpaks
flatpak:
name:
- com.discordapp.Discord # VoIP and instant messaging social platform
- org.gimp.GIMP # Create images and edit photographs
- org.inkscape.Inkscape # Vector Graphics Editor
- com.github.tchx84.Flatseal # Manage Flatpak permissions
- org.kde.kdenlive
- com.bitwarden.desktop
state: present
become: true
- name: Install desktop yay packages
kewlfft.aur.aur:
use: yay
name:
- google-earth-pro
- google-chrome

View File

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

View File

@ -1,5 +0,0 @@
- 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,33 +0,0 @@
- name: Install development arch packages
pacman:
name:
- python # Python programming language (3.11 series)
- python-pip # A tool for installing and managing Python3 packages
- ipython
- 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
- ruby
- perl
- cloc
state: present
become: true
- name: Install tmuxinator gem package
gem:
name: tmuxinator # Create and manage complex tmux sessions easily
state: latest
- name: Install development python packages
ansible.builtin.pip:
name:
- ansible-lint # Command-line tool for linting playbooks, roles and collections
- pyright
- name: Install development flatpaks
flatpak:
name:
- com.vscodium.codium # Free/Libre Open Source Software Binaries of VS Code
state: present
become: true

View File

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

View File

@ -1,8 +0,0 @@
- name: Install engineering arch packages
pacman:
name:
- freecad # General purpose 3D CAD modeler
- superslicer
- gqrx
state: present
become: true

View File

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

View File

@ -1,9 +0,0 @@
- name: Install gaming arch packages
pacman:
name:
- steam # Launcher for the Steam software distribution service
- lutris # Video game preservation platform
- gamemode # Optimize system performance for games on demand
- wine # A compatibility layer for windows applications
state: present
become: true

View File

@ -1,16 +0,0 @@
- 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

@ -1,16 +0,0 @@
- 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

@ -1,18 +0,0 @@
- name: Check desktop file exists
ansible.builtin.stat:
path: "{{ item }}"
register: p
- name: Edit desktop file
ansible.builtin.lineinfile:
path: "{{ item }}"
insertafter: '^Type'
line: 'NoDisplay=true'
firstmatch: true
state: present
become: true
when: p.stat.exists
- debug:
msg: "Warning - {{ item }} does not exist"
when: p.stat.exists == False

View File

@ -1,33 +0,0 @@
- 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

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

View File

@ -1,36 +0,0 @@
- name: Start and enable syncthing
tags: ["once"]
systemd:
name: syncthing@{{ user }}
enabled: true
state: started
become: true
- name: Set hostname for linux
tags: ["once"]
shell: >
hostnamectl set-hostname {{ hostname }}
become: true
- name: Change sudo settings
lineinfile:
path: /etc/sudoers
regexp: ^Defaults env_reset
line: Defaults env_reset,timestamp_timeout=60,!tty_tickets
become: yes
- name: Enable modeset for nvidia
tags: ["once"]
lineinfile:
path: /etc/default/grub
regexp: '^GRUB_CMDLINE_LINUX_DEFAULT="((:?(?!nvidia_drm.modeset=1).)*?)"$'
line: 'GRUB_CMDLINE_LINUX_DEFAULT="\1 nvidia_drm.modeset=1"'
backup: true
backrefs: true
become: yes
- name: Update grub
tags: ["once"]
shell: >
grub-mkconfig -o /boot/grub/grub.cfg
become: true

View File

@ -1,30 +0,0 @@
- name: Install system arch packages
pacman:
name:
- 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-tools # Fast, modern, secure vpn tunnel
- libfreeaptx # PipeWire Bluetooth aptX codec plugin
- ansible # Simple deployment, configuration management and execution framework
- trash-cli # Command line interface to the freedesktop.org trashcan
- android-tools # Android platform tools(adb, fastboot)
- snapper
- cargo
- chezmoi
- linux
- linux-headers
- linux-zen
- linux-zen-headers
- base-devel
- python-setuptools
- pipewire
state: present
become: true
- name: Add the flathub flatpak repository remote
tags: ["once"]
shell: |
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
become: true

View File

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

View File

@ -1,12 +0,0 @@
- name: change {{ user }} shell to zsh
tags: ["once"]
user:
name: "{{ user }}"
shell: /bin/zsh
become: true
- name: Set rbw email
tags: ["once"]
shell: |
rbw config set email {{ bitwarden_email }}

View File

@ -1,31 +0,0 @@
- name: Install terminal arch packages
pacman:
name:
- neovim # Vim-fork focused on extensibility and agility
- task # Command-line TODO list manager
- taskwarrior-tui
- timew # Timewarrior tracks and reports time
- python-tasklib # Library for interacting with taskwarrior databases
- vifm # Ncurses-based file manager with vi-like keybindings
- zsh # Z SHell
- tmux # Terminal Multiplexer
- nmap # Utility for network discovery and security auditing
- w3m # Text-based Web browser and pager (with Debian patches)
- lf # Terminal file manager
- khal # Command-line calendar build around CalDAV
- khard # Command-line addressbook built around CardDAV
- vdirsyncer # Synchronize calendars and addressbooks
- neofetch # Simple system information script
- zk
- fzf
state: present
become: true
- name: Install terminal python packages
ansible.builtin.pip:
name:
- pynvim
- name: Install terminal cargo packages
community.general.cargo:
name: rbw # This is an unofficial command line client for Bitwarden

View File

@ -1,57 +0,0 @@
#!/usr/bin/env bash
echo -e "Starting initial setup for Arch..."
CHEZDIR="$HOME/.local/share/chezmoi"
echo "Input email for bitwarden:"
read bitemail
# Install ansible python dependencies
sudo pacman -Syu
sudo pacman -S python python-pip ansible cargo -y
pip install pexpect
cargo install rbw
# Add things to path for this script
export PATH="$PATH:/usr/local/bin"
export PATH="$PATH:$HOME/.cargo/bin"
export PATH="$PATH:$CHEZDIR/temp_bin"
# Install ansible extensions
ansible-galaxy install -r "$CHEZDIR/provision/arch/ansible/requirements.yml"
# Run setup playbook
ansible-playbook "$CHEZDIR/provision/arch/ansible/setup.yml" -i "$CHEZDIR/provision/fedora/ansible/hosts" --ask-become-pass
# Copy jumpstart scripts to temp bin dir and add to path
mkdir -p "$CHEZDIR/temp_bin"
cp "$CHEZDIR/home/bin/executable_rbw-get" "$CHEZDIR/temp_bin/rbw-get"
chmod +x "$CHEZDIR/temp_bin/rbw-get"
# Set bitwarden email
rbw config set email "$bitemail"
# Make temporary i3 gen file
mkdir -p "$CHEZDIR/home/.gen"
echo "{
\"disp_pri\": \"HDMI-0\",
\"disp_sec\": \"HDMI-0\"
}" > "$CHEZDIR/home/.gen/i3.json"
# Wait in-case there is an error
read lel
# initialize chezmoi
chezmoi init
# first chezmoi apply
chezmoi apply
# reboot!
read -p "You should reboot, but I won't make you. Reboot? " -n 1 -r
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
exit 1
fi
sudo reboot

View File

@ -1,48 +0,0 @@
# Provision Arch
> \*I use arch btw\*
Jumpstart scripts to install Arch with packages and configs I use.
## Usage
Install Arch with BTRFS and partition:
```
1. 512Mb EFI partition at /boot/EFI
2. BTRFS volume with subvolumes:
@ -> /
@home -> /home
@log -> /var/log
@pkg -> /var/cache/pacman/pkg
@.snapshots -> /.snapshots
@home/.snapshots /home/.snapshots
```
Select pipewire for audio, networkmanager for network, and install.
Run the following commands:
```bash
pacman -S --needed git base-devel vim
# Install yay
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
# Get jumpstart files
sudo dnf install vim git -y
git clone --recurse-submodules https://github.com/starr-dusT/dotfiles ~/.local/share/chezmoi
```
Copy `.chezmoidata.yaml.example` to `.chezmoidata.yaml` and edit with desired settings then run the following commands:
```bash
~/.local/share/chezmoi/provision/arch/jumpstart.sh
```
Perform additional setup found in [additional-setup](additional-setup.md)
## Update Setup
`linux-update --arch` command updates the system with ansible. Run `linux-update -h` for information on usage.

View File

@ -14,6 +14,7 @@
- pcmanfm
- blueman
- flameshot
- playerctl
state: present
become: true

View File

@ -1 +0,0 @@
*~

View File

@ -1,102 +0,0 @@
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1642700792,
"narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "846b2ae0fc4cc943637d3d1def4454213e203cba",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1683989410,
"narHash": "sha256-puF/QsIkp4ch0sf6M5mNzbdZtYcq2MJHcKre9wJ3ZYo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6702b22b9805bc1879715d4111e3764cd4237aed",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"mach-nix": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
],
"pypi-deps-db": "pypi-deps-db"
},
"locked": {
"lastModified": 1681814846,
"narHash": "sha256-IMQ1Twf/ozE53CwrunXNlYD3D31xqgz/mZyZG38Ov/Y=",
"owner": "DavHau",
"repo": "mach-nix",
"rev": "8d903072c7b5426d90bc42a008242c76590af916",
"type": "github"
},
"original": {
"owner": "DavHau",
"repo": "mach-nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1683408522,
"narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pypi-deps-db": {
"flake": false,
"locked": {
"lastModified": 1678051695,
"narHash": "sha256-kFFP8TN8pEKARtjK9loGdH+TU23ZbHdVLCUdNcufKPs=",
"owner": "DavHau",
"repo": "pypi-deps-db",
"rev": "e00b22ead9d3534ba1c448e1af3076af6b234acf",
"type": "github"
},
"original": {
"owner": "DavHau",
"repo": "pypi-deps-db",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"mach-nix": "mach-nix",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

View File

@ -1,45 +0,0 @@
{
description = "A very basic flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = github:nix-community/home-manager;
inputs.nixpkgs.follows = "nixpkgs";
};
mach-nix= {
url = "github:DavHau/mach-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ { self, nixpkgs, home-manager, mach-nix, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
lib = nixpkgs.lib;
user = "tstarr";
in {
nixosConfigurations = {
kestrel = lib.nixosSystem {
inherit system;
specialArgs = { inherit user; };
modules = [
./hosts/kestrel/configuration.nix
./hosts/kestrel/hardware.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit user; };
home-manager.users.${user} = {
imports = [ ./hosts/kestrel/home-configuration.nix ];
};
}
];
};
};
};
}

View File

@ -1,145 +0,0 @@
{ config, pkgs, user, lib, ... }:
{
nix = {
package = pkgs.nixFlakes;
extraOptions = "experimental-features = nix-command flakes";
settings.auto-optimise-store = true;
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
# Add non-free packages
nixpkgs.config.allowUnfree = true;
nixpkgs.overlays = import ../../lib/overlays.nix;
# Use zen kernel
boot.kernelPackages = pkgs.linuxPackages_zen;
# Hardware options
hardware.bluetooth.enable = true;
hardware.sensor.iio.enable = true;
hardware.opengl.enable = true;
hardware.opengl.driSupport = true;
hardware.opengl.driSupport32Bit = true;
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Set networking options
networking.hostName = "kestrel";
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Los_Angeles";
i18n.defaultLocale = "en_US.UTF-8";
#services.xserver = {
# enable = true;
# layout = "us";
# desktopManager.xterm.enable = false;
# # Use nvidia drivers
# videoDrivers = [ "amdgpu" ];
# displayManager.gdm.enable = true;
# desktopManager.gnome.enable = true;
# # Use the xmonad wm
# windowManager = {
# xmonad = {
# enable = true;
# enableContribAndExtras = true;
# };
# };
#};
# Enable sound.
sound.enable = true;
hardware.pulseaudio.enable = true;
hardware.pulseaudio.support32Bit = true;
# Add fonts
fonts.fonts = with pkgs; [
nerdfonts
];
virtualisation.docker.enable = true;
virtualisation.docker.storageDriver = "btrfs";
programs.zsh.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.${user} = {
isNormalUser = true;
extraGroups = [ "wheel" "docker" ]; # Enable sudo for the user.
shell = pkgs.zsh;
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
vim
git
killall
pciutils
syncthing
#pamixer
vifm
mpv
pinentry-curses
trash-cli
bc
unzip
];
# Enable user services
services = {
gvfs.enable = true; # USB automount
blueman.enable = true;
printing.enable = true;
printing.drivers = [ pkgs.hplip ];
avahi.enable = true;
avahi.nssmdns = true;
syncthing = {
enable = true;
user = "tstarr";
dataDir = "/home/tstarr/sync";
configDir = "/home/tstarr/.config/syncthing";
};
};
# Enable the OpenSSH daemon.
services.openssh.enable = true;
services.pcscd.enable = true;
programs.gnupg.agent = {
enable = true;
pinentryFlavor = "curses";
enableSSHSupport = true;
};
# Enable modules
imports = [ ../../modules ];
modules = {
services = {
samba.enable = true;
vfio.enable = false; # Currently broken
};
devel = {
tooling.enable = true;
python.enable = true;
engineering.enable = true;
};
gaming = {
steam.enable = true;
};
desktop = {
sway.enable = true;
};
};
system.stateVersion = "22.11"; # Did you read the comment?
}

View File

@ -1,64 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/b946d3b5-86ea-4f22-be13-532a60023b98";
fsType = "btrfs";
options = [ "subvol=root" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/b946d3b5-86ea-4f22-be13-532a60023b98";
fsType = "btrfs";
options = [ "subvol=home" ];
};
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/b946d3b5-86ea-4f22-be13-532a60023b98";
fsType = "btrfs";
options = [ "subvol=nix" ];
};
fileSystems."/persist" =
{ device = "/dev/disk/by-uuid/b946d3b5-86ea-4f22-be13-532a60023b98";
fsType = "btrfs";
options = [ "subvol=persist" ];
};
fileSystems."/var/log" =
{ device = "/dev/disk/by-uuid/b946d3b5-86ea-4f22-be13-532a60023b98";
fsType = "btrfs";
options = [ "subvol=log" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/0A89-7181";
fsType = "vfat";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/b62ff9a9-37ed-494a-9805-9f148aff4b9c"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -1,24 +0,0 @@
{ config, pkgs, user, ... }:
{
home.username = "${user}";
home.homeDirectory = "/home/${user}";
programs.home-manager.enable = true;
home.packages = with pkgs; [
google-chrome
firefox
alacritty
gamemode
lutris
pcmanfm
discord
inkscape
libreoffice-fresh
chezmoi
rbw
vscodium.fhs
];
home.stateVersion = "22.11";
}

View File

@ -1,7 +0,0 @@
/* This configures nixpkgs.overlays to include our overlays/ directory.
*/
let path = ../overlays; in with builtins;
map (n: import (path + ("/" + n)))
(filter (n: match ".*\\.nix" n != null ||
pathExists (path + ("/" + n + "/default.nix")))
(attrNames (readDir path)))

View File

@ -1,4 +0,0 @@
{ ... }:
{
imports = [ ./desktop ./gaming ./devel ./services ];
}

View File

@ -1,4 +0,0 @@
{ ... }:
{
imports = [ ./sway.nix ];
}

View File

@ -1,71 +0,0 @@
{ config, lib, pkgs, user, ... }:
let
cfg = config.modules.desktop.sway;
# currently, there is some friction between sway and gtk:
# https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
# the suggested way to set gtk settings is with gsettings
# for gsettings to work, we need to tell it where the schemas are
# using the XDG_DATA_DIR environment variable
# run at the end of sway config
configure-gtk = pkgs.writeTextFile {
name = "configure-gtk";
destination = "/bin/configure-gtk";
executable = true;
text = let
schema = pkgs.gsettings-desktop-schemas;
datadir = "${schema}/share/gsettings-schemas/${schema.name}";
in ''
export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS
gnome_schema=org.gnome.desktop.interface
gsettings set $gnome_schema gtk-theme 'Dracula'
'';
};
in {
options.modules.desktop.sway.enable = lib.mkEnableOption "sway";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
sway
wayland
xwayland
configure-gtk
xdg-utils # for opening default programs when clicking links
glib # gsettings
dracula-theme # gtk theme
gnome3.adwaita-icon-theme # default gnome cursors
swaylock-effects
swayidle
grim # screenshot functionality
wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout
mako # notification system developed by swaywm maintainer
#dunst
wdisplays # tool to configure displays
rofi
imagemagick
feh
];
# xdg-desktop-portal works by exposing a series of D-Bus interfaces
# known as portals under a well-known name
# (org.freedesktop.portal.Desktop) and object path
# (/org/freedesktop/portal/desktop).
# The portal interfaces include APIs for file access, opening URIs,
# printing and others.
services.dbus.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
# gtk portal needed to make gtk apps happy
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
# enable sway window manager
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
};
}

View File

@ -1,5 +0,0 @@
{ ... }:
{
imports = [ ./tooling.nix ./python.nix ./engineering.nix ];
}

View File

@ -1,14 +0,0 @@
# CAD and 3d printing and everything nice
{ config, lib, pkgs, user, ... }:
let
cfg = config.modules.devel.engineering;
in {
options.modules.devel.engineering.enable = lib.mkEnableOption "engineering";
config = lib.mkIf cfg.enable {
# Install packages
environment.systemPackages = with pkgs; [ super-slicer freecad blender ];
};
}

View File

@ -1,27 +0,0 @@
# python with all the venom
{ config, lib, pkgs, user, ... }:
let
cfg = config.modules.devel.python;
my-python-packages = ps: with ps; [
virtualenv
i3ipc
ipython
pip
];
in {
options.modules.devel.python.enable = lib.mkEnableOption "python";
config = lib.mkIf cfg.enable {
# Install packages
environment.systemPackages = with pkgs; [
(python3.withPackages my-python-packages)
beancount
fava
nodePackages_latest.pyright
distrobox
];
};
}

View File

@ -1,19 +0,0 @@
# coding stuff for all the languages
{ config, lib, pkgs, user, ... }:
let
cfg = config.modules.devel.tooling;
in {
options.modules.devel.tooling.enable = lib.mkEnableOption "tooling";
config = lib.mkIf cfg.enable {
# Install packages
environment.systemPackages = with pkgs; [
neovim
ripgrep
tmux
tmuxinator
];
};
}

View File

@ -1,4 +0,0 @@
{ ... }:
{
imports = [ ./steam.nix ];
}

View File

@ -1,23 +0,0 @@
{ config, lib, pkgs, user, ... }:
let cfg = config.modules.gaming.steam;
in {
options.modules.gaming.steam.enable = lib.mkEnableOption "steam";
config = lib.mkIf cfg.enable {
hardware.opengl = { # this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932
enable = true;
driSupport32Bit = true;
};
# optionally enable 32bit pulseaudio support if pulseaudio is enabled
hardware.pulseaudio.support32Bit = config.hardware.pulseaudio.enable;
hardware.steam-hardware.enable = true;
environment.systemPackages = [
pkgs.steam
pkgs.ryujinx
];
};
}

View File

@ -1,5 +0,0 @@
{ ... }:
{
imports = [ ./samba.nix ./vfio.nix ];
}

View File

@ -1,32 +0,0 @@
# Samba for file sharing!
{ config, lib, pkgs, ... }:
let cfg = config.modules.services.samba;
in {
options.modules.services.samba.enable = lib.mkEnableOption "samba";
config = lib.mkIf cfg.enable {
services.samba = {
enable = true;
extraConfig = ''
browseable = yes
smb encrypt = required
'';
shares = {
homes = {
browseable = "no"; # note: each home will be browseable; the "homes" share will not.
"read only" = "no";
"guest ok" = "no";
};
};
};
# Curiously, `services.samba` does not automatically open
# the needed ports in the firewall.
networking.firewall.allowedTCPPorts = [ 445 139 ];
networking.firewall.allowedUDPPorts = [ 137 138 ];
# To make SMB mounting easier on the command line
environment.systemPackages = with pkgs; [ cifs-utils ];
};
}

View File

@ -1,57 +0,0 @@
# vfio setup for windows gaming with single gpu
{ config, lib, pkgs, user, ... }:
let cfg = config.modules.services.vfio;
in {
options.modules.services.vfio.enable = lib.mkEnableOption "samba";
config = lib.mkIf cfg.enable {
users.users.${user}.extraGroups = [ "qemu-libvirtd" "libvirtd" "kvm" ];
# Boot configuration
boot.kernelParams = [ "amd_iommu=on" "iommu=pt" ];
boot.kernelModules = [ "kvm-amd" "vfio-pci" ];
programs.dconf.enable = true;
environment.systemPackages = with pkgs; [ virt-manager ];
# Enable libvirtd
virtualisation.libvirtd = {
enable = true;
onBoot = "ignore";
onShutdown = "shutdown";
qemu.ovmf.enable = true;
qemu.runAsRoot = true;
};
# Place helper files where libvirt can get to them
environment.etc = {
"libvirt/hooks/qemu" = {
source = "/home/${user}/.setup/local/gpu-passthrough/qemu";
mode = "0755";
};
"libvirt/hooks/qemu.d/win10/prepare/begin/start.sh" = {
source = "/home/${user}/.setup/local/gpu-passthrough/start.sh";
mode = "0755";
};
"libvirt/hooks/qemu.d/win10/release/end/revert.sh" = {
source = "/home/${user}/.setup/local/gpu-passthrough/revert.sh";
mode = "0755";
};
"libvirt/qemu.conf" = {
source = "/home/${user}/.setup/local/gpu-passthrough/qemu.conf";
mode = "0755";
};
"libvirt/libvirtd.conf" = {
source = "/home/${user}/.setup/local/gpu-passthrough/libvirtd.conf";
mode = "0755";
};
"libvirt/patch.rom" = {
source = "/home/${user}/.setup/local/gpu-passthrough/patch.rom";
mode = "0755";
};
};
};
}

View File

@ -1,5 +0,0 @@
self: super: {
rofi = super.rofi.override { plugins = [ self.rofi-emoji ]; };
}

View File

@ -1,103 +0,0 @@
# Additional Setup
The following documents Void setup that wasn't automated with ansible.
## Radicale and vdirsyncer for contacts/calendar
[Radicale](https://radicale.org/v3.html) is hosted on my home server to provide
DAV synced calendars and contacts. [Vdirsyncer](https://github.com/pimutils/vdirsyncer)
allows for the files to be synced to the linux filesystem for desktop usage
with [khard](https://github.com/lucc/khard) and [khal](https://github.com/pimutils/khal).
The config files are auto-populated by chezmoi with credentials from bitwarden
run the following commands to setup vdirsyncer files:
```bash
vdirsyncer -c ~/.config/vdirsyncer/config_calendar discover
vdirsyncer -c ~/.config/vdirsyncer/config_contacts discover
```
Files can be later synced with the following commands:
```bash
vdirsyncer -c ~/.config/vdirsyncer/config_calendar sync
vdirsyncer -c ~/.config/vdirsyncer/config_contacts sync
```
## Wireguard Client
Wireguard is nice for a home vpn and [pivpn](https://pivpn.io/) makes it easy.
1. Create client on server and copy resulting `.conf` file to local machine
2. Import to networkmanager with:
```bash
nmcli connection import type wireguard file <conf file from pivpn>
```
3. Turn on/off from nm-applet
## BTRFS back-ups with btrbk
[btrbk](https://github.com/digint/btrbk) is used to create snapshots of the
root and user volumes. User volumes are backed-up to my home server (Torus),
but root is only stored locally.
```bash
sudo btrbk -c ~/.config/btrbk/home_btrbk.conf -v run # snapshot /home/<user>
sudo btrbk -c ~/.config/btrbk/root_btrbk.conf -v run # snapshot /
```
SSH keypair is used for password-less root ssh for remote back-up. See
[ssh setup](https://github.com/digint/btrbk#setting-up-ssh) from the btrbk
readme.
anacron is used for daily backups. Copy `home_backup.sh` from the config folder
to `/etc/cron.daily`.
## Mount network drives
I find fstab messing about more troubule than it is worth. Mount network drives
when needed with the following command:
```bash
linux-mount-<network drive name>
```
## Taskopen for taskwarrior
[taskopen](https://github.com/jschlatow/taskopeni) is easier to install
manually at this point since it isn't packaged and uses nim. Might get this
automated in the future.
```bash
curl https://nim-lang.org/choosenim/init.sh -sSf | sh # install nim
git clone https://github.com/jschlatow/taskopen.git
cd taskopen
make PREFIX=/usr
sudo make PREFIX=/usr install
```
## Syncthing
Syncthing is used to sync folders between various computers and android. The
ansible script should setup and run the service, but shares must be setup
via the web gui. Currently four shares exists:
- `.warrior` - `.task` and `.timewarrior` folders to sync taskwarrior tasks.
These two folders are symlinked to the home folder where taskwarrior/timewarrior
expects them.
- `warrior` - contains text files associated with taskwarrior (mostly from
taskopen).
- `phone photos` - personal photos synched from android.
- `phone screenshots` - personal screenshots synced from android.
- `keys` - contains ssh keys for git remotes (~/.ssh/keys)
## Lxappearance
My GTK theme is pulled down by chezmoi, but isn't active by default. This can
be fixed with the lxappearance gui.
## nb notebooks
Remote nb notebooks are added with the following command:
```bash
nb notebooks add <notebook name> https://github.com/starr-dusT/nb <branch>
```

View File

@ -1 +0,0 @@
local ansible_connection=local ansible_python_interpreter=/usr/bin/python3

View File

@ -1,8 +0,0 @@
# Ansible Galaxy Roles
roles:
- src: https://github.com/starr-dusT/ansible-role-customize-gnome
- src: https://github.com/starr-dusT/ansible-rustup
collections:
- name: community.general
version: 6.0.1
source: https://galaxy.ansible.com

View File

@ -1,14 +0,0 @@
- name: Ansible playbook to setup void linux
hosts: all
vars_files:
- ../home/.chezmoidata.yaml
tasks:
- import_tasks: tasks/system/_main.yml
- import_tasks: tasks/terminal/_main.yml
- import_tasks: tasks/development/_main.yml
- import_tasks: tasks/desktop/_main.yml
- import_tasks: tasks/gaming/_main.yml
- import_tasks: tasks/engineering/_main.yml

View File

@ -1,7 +0,0 @@
- import_tasks: configs.yml
tags: ["configs"]
- import_tasks: packages.yml
tags: ["packages"]
- import_tasks: gnome-settings/_main.yml
tags: ["configs"]
when: desktop == "gnome"

View File

@ -1,19 +0,0 @@
- name: Set desktop files to hide
include_tasks: ../include/hide-desktop.yml
loop:
- /usr/share/applications/wine-winhelp.desktop
- /usr/share/applications/wine-mime-msi.desktop
- /usr/share/applications/wine-notepad.desktop
- /usr/share/applications/wine-oleview.desktop
- /usr/share/applications/wine-regedit.desktop
- /usr/share/applications/wine-uninstaller.desktop
- /usr/share/applications/wine-wineboot.desktop
- /usr/share/applications/wine-winecfg.desktop
- /usr/share/applications/wine-winefile.desktop
- /usr/share/applications/wine-winemine.desktop
- /usr/share/applications/wine-wordpad.desktop
- /usr/share/applications/vifm.desktop
- /usr/share/applications/dosbox-staging.desktop
- /usr/share/applications/nvim.desktop
- /usr/share/applications/syncthing-start.desktop
- /usr/share/applications/syncthing-ui.desktop

View File

@ -1,17 +0,0 @@
- name: Set custom gnome binding {{ index }}
dconf:
key: "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom{{ index }}/binding"
value: "{{ item.bind }}"
state: present
- name: Set custom gnome command {{ index }}
dconf:
key: "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom{{ index }}/command"
value: "{{ item.command }}"
state: present
- name: Set custom gnome name {{ index }}
dconf:
key: "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom{{ index }}/name"
value: "{{ index }}"
state: present

View File

@ -1,6 +0,0 @@
- import_tasks: extensions.yml
tags: ["gnome-extensions"]
- import_tasks: keybinds.yml
tags: ["configs"]
- import_tasks: window-management.yml
tags: ["configs"]

View File

@ -1,11 +0,0 @@
- name: Install gnome extensions
include_role:
name: ansible-role-customize-gnome
vars:
# For now extensions aren't enabled (https://github.com/PeterMosmans/ansible-role-customize-gnome/issues/25)
gnome_extensions:
- id: 779 # https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator
- id: 4362 # https://github.com/Noobsai/fullscreen-avoider
- id: 1460 # https://github.com/corecoding/Vitals
- id: 7 # https://gitlab.gnome.org/GNOME/gnome-shell-extensions
gnome_user: "{{ user }}"

View File

@ -1,62 +0,0 @@
- name: Unset particular default gnome keybinds
dconf:
key: "{{ item }}"
value: [""]
state: present
loop:
- "/org/gnome/shell/keybindings/switch-to-application-1"
- "/org/gnome/shell/keybindings/switch-to-application-2"
- "/org/gnome/shell/keybindings/switch-to-application-3"
- "/org/gnome/shell/keybindings/switch-to-application-4"
- "/org/gnome/shell/keybindings/switch-to-application-5"
- "/org/gnome/desktop/wm/keybindings/switch-input-source"
- "/org/gnome/desktop/wm/keybindings/switch-input-source-backwards"
- "/org/gnome/settings-daemon/plugins/media-keys/screensaver"
- "/org/gnome/desktop/wm/keybindings/switch-applications"
- "/org/gnome/desktop/wm/keybindings/switch-applications-backward"
- "/org/gnome/desktop/wm/keybindings/switch-windows"
- "/org/gnome/desktop/wm/keybindings/switch-windows-backward"
- name: Change existing gnome keybinds
dconf:
key: "{{ item.key }}"
value: "{{ item.value }}"
state: present
loop:
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-1", value: ["<Super>1"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-2", value: ["<Super>2"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-3", value: ["<Super>3"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-4", value: ["<Super>4"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-to-workspace-5", value: ["<Super>5"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-1", value: ["<Super><Shift>1"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-2", value: ["<Super><Shift>2"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-3", value: ["<Super><Shift>3"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-4", value: ["<Super><Shift>4"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-workspace-5", value: ["<Super><Shift>5"]}
- {key: "/org/gnome/desktop/wm/keybindings/minimize", value: ["<Super>Space"]}
- {key: "/org/gnome/desktop/wm/keybindings/toggle-fullscreen", value: ["<Super>F"]}
- {key: "/org/gnome/desktop/wm/keybindings/close", value: ["<Super>Q"]}
- {key: "/org/gnome/desktop/wm/keybindings/maximize-horizontally", value: ["<Super><Shift>H"]}
- {key: "/org/gnome/desktop/wm/keybindings/maximize-vertically", value: ["<Super><Shift>V"]}
- {key: "/org/gnome/desktop/wm/keybindings/move-to-center", value: ["<Super>C"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-windows", value: ["<Super>Tab"]}
- {key: "/org/gnome/desktop/wm/keybindings/switch-windows-backward", value: ["<Super><Shift>Tab"]}
- {key: "/org/gnome/settings-daemon/plugins/media-keys/screensaver", value: ["<Super><Shift>L"]}
- name: Set custom gnome keybinds
include_tasks: _custom-bind.yml
loop:
- {command: "'gnome-terminal'", bind: "'<Super>Return'"}
- {command: "'firefox'", bind: "'<Super><Shift>B'"}
- {command: "'code'", bind: "'<Super><Shift>V'"}
loop_control:
index_var: index
# Gnome requires an array of strings with the custom keybinds
# this must match the number of keybinds defined above...
- name: Set custom-keybinds array
dconf:
key: /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings
value: "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/',
'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/',
'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/']"

View File

@ -1,10 +0,0 @@
- name: Set Static workspaces
dconf:
key: "/org/gnome/mutter/dynamic-workspaces"
value: "false"
- name: Set Number of workspaces
dconf:
key: "/org/gnome/desktop/wm/preferences/num-workspaces"
value: "5"

View File

@ -1,51 +0,0 @@
- name: Install desktop void packages
xbps:
name:
- xorg # X.org meta-package
- xterm # X Terminal Emulator
- alacritty # Cross-platform, GPU-accelerated terminal emulator
- mpv # Video player based on MPlayer/mplayer2
- 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 # 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
- system-config-printer # CUPS printer configuration tool and status applet
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
- com.github.tchx84.Flatseal # Manage Flatpak permissions
state: present
become: true

View File

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

View File

@ -1,5 +0,0 @@
- 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,25 +0,0 @@
- name: Install development void packages
xbps:
name:
- 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
- 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
- name: Install development python packages
ansible.builtin.pip:
name:
- ansible-lint # Command-line tool for linting playbooks, roles and collections
- name: Install development flatpaks
flatpak:
name:
- com.vscodium.codium # Free/Libre Open Source Software Binaries of VS Code
state: present
become: true

View File

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

View File

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

View File

@ -1,6 +0,0 @@
- 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,2 +0,0 @@
- import_tasks: packages.yml
tags: ["packages"]

View File

@ -1,13 +0,0 @@
- 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
- wine # A compatibility layer for windows applications
state: present
become: true

View File

@ -1,16 +0,0 @@
- 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

@ -1,16 +0,0 @@
- 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

@ -1,18 +0,0 @@
- name: Check desktop file exists
ansible.builtin.stat:
path: "{{ item }}"
register: p
- name: Edit desktop file
ansible.builtin.lineinfile:
path: "{{ item }}"
insertafter: '^Type'
line: 'NoDisplay=true'
firstmatch: true
state: present
become: true
when: p.stat.exists
- debug:
msg: "Warning - {{ item }} does not exist"
when: p.stat.exists == False

View File

@ -1,33 +0,0 @@
- 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

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

View File

@ -1,96 +0,0 @@
- name: Create btrbk snapshot directories
block:
- file:
path: /.snapshots
state: directory
owner: root
group: root
mode: 0775
- file:
path: /home/.snapshots
state: directory
owner: root
group: root
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/elogind /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
ln -s /etc/sv/cupsd /var/service
ln -s /etc/sv/cups-browsed /var/service
ignore_errors: true
become: true
- name: Add {{ user }} to libvirt group
shell: |
gpasswd -a {{ user }} libvirt
become: true
- 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,54 +0,0 @@
- 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:
- 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
- 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
- virt-manager # User interface for managing virtual machines
- bridge-utils # Layer2 ethernet bridging for Linux
- trash-cli # Command line interface to the freedesktop.org trashcan
- udiskie # Removable disk automounter using udisks
- curl # Client that groks URLs
- wget # GNU wget download utility
- 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-rules # Android udev rules list aimed to be the most comprehensive on the net
- cups # Common Unix Printing System
- hplip # HP Linux Imaging and Printing
state: present
become: true
- name: Add the flathub flatpak repository remote
flatpak_remote:
name: flathub
state: present
flatpakrepo_url: https://flathub.org/repo/flathub.flatpakrepo
become: true

View File

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

View File

@ -1,29 +0,0 @@
- 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

@ -1,10 +0,0 @@
- name: change {{ user }} shell to zsh
user:
name: "{{ user }}"
shell: /bin/zsh
become: true
- name: Set rbw email
shell: |
rbw config set email {{ bitwarden_email }}

View File

@ -1,6 +0,0 @@
- 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,34 +0,0 @@
- name: Install terminal void packages
xbps:
name:
- neovim # Vim-fork focused on extensibility and agility
- task # Command-line TODO list manager
- timewarrior # Timewarrior tracks and reports time
- python3-tasklib # Library for interacting with taskwarrior databases (Python3)
- vifm # Ncurses-based file manager with vi-like keybindings
- zsh # Z SHell
- tmux # Terminal Multiplexer
- nmap # Utility for network discovery and security auditing
- w3m # Text-based Web browser and pager (with Debian patches)
- lf # Terminal file manager
- khal # Command-line calendar build around CalDAV
- khard # Command-line addressbook built around CardDAV
- vdirsyncer # Synchronize calendars and addressbooks
- neofetch # Simple system information script
state: present
become: true
- name: Install terminal python packages
ansible.builtin.pip:
name:
- pynvim
- 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

@ -1,6 +0,0 @@
- 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

@ -1,52 +0,0 @@
#!/usr/bin/env bash
echo -e "Starting initial setup..."
CHEZDIR="/home/test/.local/share/chezmoi"
echo "Input email for bitwarden:"
read bitemail
# Install ansible python dependencies
sudo xbps-install -Syu -y
sudo xbps-install python3 python3-pip ansible -y
sudo pip install pexpect
# Install ansible extensions
ansible-galaxy install -r "$CHEZDIR/provision/requirements.yml"
# Run setup playbook
ansible-playbook "$CHEZDIR/provision/setup.yml" -i "$CHEZDIR/provision/hosts" --ask-become-pass
export PATH="$PATH:/usr/local/bin"
# Copy jumpstart scripts to temp bin dir and add to path
mkdir -p "$CHEZDIR/temp_bin"
cp "$CHEZDIR/home/bin/executable_rbw-get" "$CHEZDIR/temp_bin/rbw-get"
chmod +x "$CHEZDIR/temp_bin/rbw-get"
export PATH="$PATH:$CHEZDIR/temp_bin"
# Set bitwarden email
rbw config set email "$bitemail"
# Make temporary i3 gen file
mkdir -p "$CHEZDIR/home/.gen"
echo "{
\"disp_pri\": \"HDMI-0\",
\"disp_sec\": \"HDMI-0\"
}" > "$CHEZDIR/home/.gen/i3.json"
# initialize chezmoi
chezmoi init
# first chezmoi apply
chezmoi apply
# reboot!
read -p "You should reboot, but I won't make you. Reboot? " -n 1 -r
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
exit 1
fi
sudo reboot

View File

@ -1,32 +0,0 @@
# Dotfiles
> My dotfiles... What do you want?
My personal dotfiles repo. Documentation is pretty spotty. Maybe I'll fix that someday, but I probably won't.
## Usage
Dotfiles are managed with chezmoi and Ansible (built for Void) is used for the bulk of configuration.
## Initial Setup
Install Void with BTRFS and run the following commands:
```bash
sudo xbps-install -Syu -y
sudo xbps-install -S vim git chezmoi -y
git clone https://github.com/starr-dusT/dotfiles ~/.local/share/chezmoi
```
Copy `.chezmoidata.yaml.example` to `.chezmoidata.yaml` and edit with desired settings then run the following commands:
```bash
~/.local/share/chezmoi/jumpstart.sh
```
After reboot log into window manager and run `linux-monitor`, follow the prompts, reapply chezmoi config, and restart the window manager.
Perform additional setup found in [additional-setup](additional-setup.md)
## Update Setup
`void-update` command updates the system with ansible. Run `void-update -h` for information on usage.