diff --git a/README.md b/README.md index d5398c7..2efb85c 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,6 @@ This branch is kinda-sorta a port of master, so it still needs to reach some for * Matrix(? Do I still want to keep this around? Is there a better alternative? Will my friends even use it?) -* My inane desktop setups - - * Which are part of the way there, mostly just need some off-the-wall stuff - * Backups * Duplicity? diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml index 9cdfca7..770cb08 100644 --- a/roles/common/handlers/main.yml +++ b/roles/common/handlers/main.yml @@ -3,3 +3,6 @@ - name: restart cron service: name=cron state=restarted become: yes +- name: regen initramfs + command: /usr/sbin/update-initramfs -c -k all + become: yes diff --git a/roles/desktop/defaults/main.yml b/roles/desktop/defaults/main.yml new file mode 100644 index 0000000..3fb2303 --- /dev/null +++ b/roles/desktop/defaults/main.yml @@ -0,0 +1,155 @@ +# vim:ft=ansible: + +## PIP3 CONFIGURATION +desktop_pip3_packages: + - pmbootstrap + - protontricks + - youtube-dl +desktop_pip3_packages_extra: [] + +## APT CONFIGURATION +desktop_apt_archs: + - amd64 + - i386 +desktop_apt_keys_keyserver: + - 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF # Monodevelop +desktop_apt_keys_keyserver_extra: [] + +desktop_apt_keys_url: + - "https://packagecloud.io/slacktechnologies/slack/gpgkey" # Slack + - "https://syncthing.net/release-key.txt" # Syncthing + - "https://packages.riot.im/debian/riot-im-archive-keyring.gpg" # Element + - "https://download.spotify.com/debian/pubkey.gpg" # Spotify 1 + - "https://download.spotify.com/debian/pubkey_0D811D58.gpg" # Spotify 2 +desktop_apt_keys_url_extra: [] + +desktop_apt_repos: + - "deb https://packagecloud.io/slacktechnologies/slack/debian/ jessie main" # Slack + - "deb http://repository.spotify.com stable non-free" # Spotify + - "deb https://apt.syncthing.net/ syncthing stable" # Syncthing + - "deb https://download.mono-project.com/repo/ubuntu vs-bionic main" # Monodevelop + - "deb https://packages.riot.im/debian/ default main" # Element + # First-party PPAs + - "ppa:phoerious/keepassxc" # KeepassXC + # Third-party PPAs + - "ppa:drewwalton19216801/dolphin-master-cosmic" # Because Dolphin doesn't update their shit + - "ppa:kgilmer/speed-ricer" # Ricing is fun and kgilmer is cool + - "ppa:lutris-team/lutris" # Lutris is useful for vidya +desktop_apt_repos_extra: [] + +desktop_apt_packages: + # CLI Packages + - apt # Useful for Android debugging, and also for pinephone shenanigans + - build-essential # Used in numerous build ventures, just all-around important + - cmake # Also useful for building from source + - fastboot # Also used for phone debugging + - ffmpeg # Fantastic tool, used on the daily + - git # Just ensuring it's installed, probably already in build-essential + - imagemagick # I use it from time to time to do scripted image editing +# - libinput-tools # Allows for libinput debugging + - lua-check # Used in linting computercraft scripts + - network-manager-openconnect # Used for anyconnect VPNs + - network-manager-openvpn # Used for OpenVPN VPNs + - nmap # Useful basic utility + - npm # I'm sorry + - openjdk-8-jre # Used for Minecraft + - pwgen # Useful basic utility + - python3-appdirs # Various python libraries for scripts, mostly fuselee-gelee + - python3-eyed3 + - python3-pip # Except you, you're important + - python3-pyqt5 + - python3-usb + - python3-venv + - tree # Useful basic utility + - vagrant # Very handy for development + - vagrant-libvirt + - vim # VERY important utility + - wine # Used for gaming and other things + - wine-binfmt # Quality-of-life support for single-click launching EXEs + - xz-utils # Required for Ansible to support some .deb-related features + # Fonts + - fonts-fork-awesome # Used in Polybar and by one or two personal websites + - fonts-ibm-plex # Used for general variable-width typeface + - fonts-inconsolata # Used as monospace typeface + - fonts-material-design-icons-iconfont # Used in Polybar + - fonts-noto # Important series of fonts to have + - fonts-roboto # Used a lot on the web + # DE + - bspwm # My main window manager + - conky-all # Used for statistics displays on desktops + - dunst # Notification daemon +# - hsetroot # Used in absence of Nitrogen to set basic wallpaper stuff + - ibus + - ibus-mozc # For Japanese input + - kubuntu-desktop # Basic sanity check + - mozc-utils-gui # Configuration panel not explicitly pulled in + - nitrogen # Wallpaper setter + - papirus-icon-theme # Fancy paper icon theme + - pavucontrol-qt # Nice audio interface + - picom # Compositor, replacement for Compton + - polybar # MY BAR + - qt5ct # Useful for qt5 themeing + - rofi # Application launcher + - xbacklight # For the day I get around to fixing support for this on my machines + # Games + - minetest + # Applications + - barrier # FOSS variant of Synergy + - chromium-browser # Nice to have an alternative browser, even if it's trash + - clonezilla # Gotta make them clones + - dolphin-emu-master # GameCube and Wii emulator + - dolphin-plugins # Unrelated to the above, improves the Dolphin file manager + - element-desktop # Matrix client + - filelight # Disk space management utility + - filezilla # FTP/SFTP/FTPS client, useful once in a blue moon + - firefox # MY MAN + - g810-led # Controls lights on Logitech peripherals + - gimp # Fantastic image editor + - joy2key # A neat wrapper to bind controller inputs to keyboard keys + - kcolorchooser # Color picker, used all the time in themeing + - kde-config-plymouth # For configuring Plymouth. Fancy. See plymouth-theme-spinner + - kdepim # I'm one of the four people on the planet that uses kmail + - keepassxc # Password manager + - libnotify-bin # Used in several scripts to send notifications + - libretro-desmume # Libretro cores + - libretro-mgba + - libretro-mupen64plus + - libretro-snes9x + - lutris # Fantastic third-party wine gaming client + - mesa-vulkan-drivers # Important graphics drivers + - mono-complete # Initialization may take an eternity + - monodevelop # For Terraria modding, don't hate me + - mpv # Video player of choice + - mupen64plus-qt # For when I don't want to fight libretro + - nextcloud-desktop # Desktop sync client for probably another box in this repo + - obs-studio # Useful for replay functionality every now and again + - piper # Peripheral LED management, only available on Focal or higher + - plymouth-theme-spinner # Gives us the sweet UEFI boot logo splash + - pulseeffects # ECHO... Echo... echo... echo... + - q4wine # Quick n dirty wine wrapper + - qbittorrent # Bittorrent client of choice + - redshift # At the moment I work thirds, so this is kinda counterintuitive, but whatever + - retroarch # Emulators are legitimate competition + - slack-desktop # Gotta get slack, slack to the past + - spotify-client # Moosucc + - steam-installer # Steam is an important part of one's life + - syncthing-gtk # Also pulls in syncthing and is very neato burrito + - telegram-desktop # Gotta talk to that one guy + - torbrowser-launcher # Useful utility + - virt-manager # Important to manage VMs + - vulkan-tools # Pulls in Vulkan support for things like DXVK + - vulkan-utils + - winetricks # Protontricks wraps this, I think + - xdotool # Used in one or two macro scripts + - xserver-xephyr # Neat but mostly useless utility that I want to get Firestarter happy with + - zim # Desktop wiki + # Other architectures, misc + - "libgl1-mesa-dri:i386" + - "mesa-vulkan-drivers:i386" +desktop_apt_packages_extra: [] + +desktop_apt_debs: + - "https://dl.discordapp.net/apps/linux/0.0.12/discord-0.0.12.deb" # Discord + - "https://github.com/MultiMC/MultiMC5/releases/download/0.6.8/multimc_1.4-1.deb" # MultiMC + - "https://zoom.us/client/latest/zoom_amd64.deb" # Zoom, proprietary shitware +desktop_apt_debs_extra: [] diff --git a/roles/desktop/tasks/main.yml b/roles/desktop/tasks/main.yml new file mode 100644 index 0000000..5d3f80c --- /dev/null +++ b/roles/desktop/tasks/main.yml @@ -0,0 +1,15 @@ +#!/usr/bin/env ansible-playbook +# vim:ft=ansible: +--- +- name: configure X misc + template: src={{ item }} dest=/etc/X11/xorg.conf.d/{{ item }} + loop: + # Disables mouse acceleration on all mouse peripherals + - 90-mouse-acceleration.conf + # Enables things like triple-tapping, etc. on touchpads + - 90-touchpad.conf +- name: configure plymouth + alternatives: name=default.plymouth path=/usr/share/plymouth/themes/bgrt/bgrt.plymouth + notify: regen initramfs +- name: configure packages + include_tasks: packages.yml diff --git a/roles/desktop/tasks/packages.yml b/roles/desktop/tasks/packages.yml new file mode 100644 index 0000000..3551a25 --- /dev/null +++ b/roles/desktop/tasks/packages.yml @@ -0,0 +1,48 @@ +#!/usr/bin/env ansible-playbook +# vim:ft=ansible: +--- +- name: configure packages for apt + block: + # Manage archs + - name: enable archs + lineinfile: dest=/var/lib/dpkg/arch line={{ item }} create=yes + loop: "{{ desktop_apt_archs }}" + # Manage keys + - name: enroll keys from keyserver + apt_key: keyserver=keyserver.ubuntu.com id={{ item }} + loop: "{{ desktop_apt_keys_keyserver + desktop_apt_keys_keyserver_extra }}" + - name: enroll keys by url + apt_key: url={{ item }} + loop: "{{ desktop_apt_keys_url + desktop_apt_keys_url_extra }}" + # Manage repos + - name: configure repos + apt_repository: repo={{ item }} + loop: "{{ desktop_apt_repos + desktop_apt_repos_extra }}" + # Manage packages + - name: configure installed packages + apt: name="{{ desktop_apt_packages + desktop_apt_packages_extra }}" + - name: configure out-of-repo packages + apt: deb="{{ item }}" + loop: "{{ desktop_apt_debs + desktop_apt_debs_extra }}" + # Ignoring errors here is important because this task fails on package backdates + ignore_errors: yes + # System76-specific config + # Kinda out of the spirit of the role but whatever + - name: configure system76 machines + block: + - name: configure system76 repo + apt_repository: repo="ppa:system76-dev/stable" + - name: configure system76-specific packages + apt: + name: + - firmware-manager + - kamoso + - system76-acpi-dkms + - system76-dkms + - system76-firmware + - system76-io-dkms + - system76-power + when: ansible_system_vendor == "System76" + when: ansible_pkg_mgr == "apt" +- name: configure pip3 packages + pip: executable=/usr/bin/pip3 state=latest name="{{ desktop_pip3_packages + desktop_pip3_packages_extra }}" diff --git a/roles/desktop/templates/90-mouse-acceleration.conf b/roles/desktop/templates/90-mouse-acceleration.conf new file mode 100644 index 0000000..6e4e89e --- /dev/null +++ b/roles/desktop/templates/90-mouse-acceleration.conf @@ -0,0 +1,9 @@ +# This file managed via Ansible +# vim:ft=xf86conf +Section "InputClass" + Identifier "mouse" + MatchIsPointer "yes" + # Options + Option "AccelProfile" "flat" + Option "AccelSpeed" "-1" +EndSection diff --git a/roles/desktop/templates/90-touchpad.conf b/roles/desktop/templates/90-touchpad.conf new file mode 100644 index 0000000..1d6a174 --- /dev/null +++ b/roles/desktop/templates/90-touchpad.conf @@ -0,0 +1,12 @@ +# This file managed via Ansible +# vim:ft=xf86conf +Section "InputClass" + Identifier "touchpad" + MatchIsTouchpad "yes" + Driver "libinput" + # Options + Option "DisableWhileTyping" "yes" + Option "Tapping" "yes" + Option "TappingButtonMap" "lrm" # 1/2/3-finger taps + Option "TappingDrag" "yes" +EndSection diff --git a/site.yml b/site.yml index 9f534cf..188bf20 100755 --- a/site.yml +++ b/site.yml @@ -13,6 +13,9 @@ # Home desktops - hosts: desktop roles: + - role: desktop + become: yes + tags: [ desktop ] - role: grub become: yes tags: [ desktop, grub ]