From e17f84ad8a93dc0de1d302dcb3867137403738a5 Mon Sep 17 00:00:00 2001 From: Jonathan Cremin Date: Tue, 19 May 2020 13:49:30 +0100 Subject: [PATCH] Mostly complete, still needs cleanup --- kudos.yml | 16 ++- roles/common/tasks/main.yml | 114 ++++++++++------ roles/common/templates/plexamp.desktop.j2 | 9 ++ .../templates/plexmediaplayer.desktop.j2 | 9 ++ roles/luminance/tasks/main.yml | 48 +++++++ roles/ssh/handlers/main.yml | 7 + roles/ssh/tasks/main.yml | 11 ++ roles/ssh/templates/sshd_config.j2 | 123 ++++++++++++++++++ roles/streamdeck/files/99-streamdeck.rules | 4 + roles/streamdeck/files/streamdeck.desktop | 9 ++ roles/streamdeck/files/streamdeck.png | Bin 0 -> 22910 bytes roles/streamdeck/files/streamdeck.xcf | Bin 0 -> 35575 bytes roles/streamdeck/handlers/main.yml | 7 + roles/streamdeck/tasks/main.yml | 35 +++++ roles/vm/templates/bind_vfio.sh.j2 | 2 + roles/vm/templates/kvm.conf.j2 | 2 + roles/vm/templates/unbind_vfio.sh.j2 | 7 +- tasks.sh | 5 +- 18 files changed, 359 insertions(+), 49 deletions(-) create mode 100644 roles/common/templates/plexamp.desktop.j2 create mode 100644 roles/common/templates/plexmediaplayer.desktop.j2 create mode 100644 roles/luminance/tasks/main.yml create mode 100644 roles/ssh/handlers/main.yml create mode 100644 roles/ssh/tasks/main.yml create mode 100644 roles/ssh/templates/sshd_config.j2 create mode 100644 roles/streamdeck/files/99-streamdeck.rules create mode 100644 roles/streamdeck/files/streamdeck.desktop create mode 100644 roles/streamdeck/files/streamdeck.png create mode 100644 roles/streamdeck/files/streamdeck.xcf create mode 100644 roles/streamdeck/handlers/main.yml create mode 100644 roles/streamdeck/tasks/main.yml diff --git a/kudos.yml b/kudos.yml index 9a1efa5..221b1bd 100644 --- a/kudos.yml +++ b/kudos.yml @@ -2,10 +2,12 @@ - hosts: kudos roles: - # - common - # - users - # - docker - # - raid - - network - # - vm - \ No newline at end of file + - { role: common, tags: [ 'common'] } + - { role: users, tags: [ 'users'] } + - { role: streamdeck, tags: [ 'streamdeck'] } + - { role: ssh, tags: [ 'ssh'] } + - { role: docker, tags: [ 'docker'] } + - { role: raid, tags: [ 'raid'] } +# - { role: network, tags: [ 'network'] } + - { role: vm, tags: [ 'vm'] } + - { role: luminance, tags: [ 'luminance'] } \ No newline at end of file diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 6fc481f..d4b8aa3 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -2,86 +2,120 @@ - name: Install common apt packages apt: - name: + name: - zsh - mdadm - direnv + - ncdu + - restic + - powertop - mpv - tmux - htop - - baobab - openssh-server - chrome-gnome-shell - - python3-pip - cheese - geary - - baobab - curl - celluloid - - openssh-server - neofetch - - gnome-boxes - virt-manager - vim - blueman - pavucontrol - gnome-shell-extension-shortcuts - - gnome-shell-extension-system-monitor - - gnome-shell-extension-top-icons-plus - - gnome-shell-extension-gsconnect - - gnome-shell-extension-gsconnect-browsers - gnome-nettool - gnome-maps - gnome-calendar - gnome-clocks - state: present - become: yes - -- name: Install common snaps with --classic - snap: - name: - - microk8s - classic: yes + - tilix state: present become: yes - name: Install common snaps snap: name: - - code - - chromium - canonical-livepatch - - dbeaver-ce - - discord - - glimpse-editor - qownnotes - remmina - riot-web - spotify - - vlc - - zoom-client state: present become: yes -- name: Uninstall default pulseaudio-module-bluetooth - apt: - name: pulseaudio-module-bluetooth - state: absent +- name: Add AppImageLauncher ppa + apt_repository: + repo: ppa:appimagelauncher-team/stable become: yes -- name: Install bluetooth audio deps +- name: Install AppImageLauncher apt: - name: - - libavcodec-extra58 - - libfdk-aac1 - - bluez - - pulseaudio + name: appimagelauncher + state: present become: yes -- name: Install bluetooth audio codec debs - apt: +- name: Fetch plex media player + get_url: + url: https://knapsu.eu/data/plex/Plex_Media_Player_2.57.0.1074-f7d709d1_x64.AppImage + dest: /home/jonathan/Applications/Plex_Media_Player_2.57.0.1074-f7d709d1_x64.AppImage + mode: 0744 + +- name: Install plex media player + command: + cmd: ail-cli integrate /home/jonathan/Applications/Plex_Media_Player_2.57.0.1074-f7d709d1_x64.AppImage + +- name: Fetch plexamp + get_url: + url: https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-3.0.3.AppImage + dest: /home/jonathan/Applications/Plexamp-3.0.3.AppImage + mode: 0744 + +- name: Install plexamp + command: + cmd: ail-cli integrate /home/jonathan/Applications/Plexamp-3.0.3.AppImage + +- name: Install random debs + apt: deb: "{{item}}" with_items: - - https://f.bytefuse.net/pulseaudio-modules-bt-ppa/focal/libldac_2.0.2.3-1_amd64.deb - - https://f.bytefuse.net/pulseaudio-modules-bt-ppa/focal/pulseaudio-modules-bt_1.3-1_amd64.deb - become: yes \ No newline at end of file + - https://go.microsoft.com/fwlink/?LinkID=760868 + - https://zoom.us/client/latest/zoom_amd64.deb + - https://steamcdn-a.akamaihd.net/client/installer/steam.deb + - https://discord.com/api/download?platform=linux&format=deb + - https://github.com/hensm/fx_cast/releases/download/v0.0.6/fx_cast_bridge-0.0.6-x64.deb + - https://downloads.slack-edge.com/linux_releases/slack-desktop-4.4.2-amd64.deb + - https://prerelease.keybase.io/keybase_amd64.deb + - https://zerkc.gitlab.io/whatsdesk/whatsdesk_0.2.18_amd64.deb + become: yes + +- name: Install 1password cli binary + unarchive: + src: https://cache.agilebits.com/dist/1P/op/pkg/v0.10.0/op_linux_amd64_v0.10.0.zip + dest: /home/jonathan/.bin/ + exclude: op.sig + remote_src: yes + +#- name: Uninstall default pulseaudio-module-bluetooth +# apt: +# name: pulseaudio-module-bluetooth +# state: absent +# become: yes +# +#- name: Install bluetooth audio deps +# apt: +# name: +# - libavcodec-extra58 +# - libfdk-aac1 +# - bluez +# - pulseaudio +# become: yes +# +#- name: Install bluetooth audio codec debs +# apt: +# deb: "{{item}}" +# with_items: +# - https://go.microsoft.com/fwlink/?LinkID=760868 +# - https://zoom.us/client/latest/zoom_amd64.deb +# - https://f.bytefuse.net/pulseaudio-modules-bt-ppa/focal/libldac_2.0.2.3-1_amd64.deb +# - https://f.bytefuse.net/pulseaudio-modules-bt-ppa/focal/pulseaudio-modules-bt_1.3-1_amd64.deb +# become: yes diff --git a/roles/common/templates/plexamp.desktop.j2 b/roles/common/templates/plexamp.desktop.j2 new file mode 100644 index 0000000..2126173 --- /dev/null +++ b/roles/common/templates/plexamp.desktop.j2 @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Plexamp +Exec=/home/jonathan/Applications/Plexamp.AppImage +Terminal=false +Categories=AudioVideo;Player; +StartupWMClass=plexamp +TryExec=/home/jonathan/Applications/Plexamp.AppImage diff --git a/roles/common/templates/plexmediaplayer.desktop.j2 b/roles/common/templates/plexmediaplayer.desktop.j2 new file mode 100644 index 0000000..37d8a52 --- /dev/null +++ b/roles/common/templates/plexmediaplayer.desktop.j2 @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Plex Media Player +Exec=/home/jonathan/Applications/Plex_Media_Player.AppImage +Terminal=false +Categories=AudioVideo;Player; +StartupWMClass=plexmediaplayer +TryExec=/home/jonathan/Applications/Plex_Media_Player.AppImage diff --git a/roles/luminance/tasks/main.yml b/roles/luminance/tasks/main.yml new file mode 100644 index 0000000..3c5888d --- /dev/null +++ b/roles/luminance/tasks/main.yml @@ -0,0 +1,48 @@ +--- + +- name: Add luminance deps + apt: + name: + - autoconf + - autogen + - build-essential + - python-gi-dev + - libgtk-3-dev + - gsettings-desktop-schemas-dev + - libgnome-desktop-3-dev + - libxml2-utils + state: present + become: yes + +- name: pip3 install phue + pip: + name: phue + state: present + executable: /usr/bin/pip3 + become: yes + +- name: clone luminance fork + git: + repo: https://github.com/jonbulica99/luminance.git + dest: /home/jonathan/Code/luminance + +- name: autogen luminance + command: + chdir: /home/jonathan/Code/luminance + cmd: ./autogen.sh + +- name: configure luminance + command: + chdir: /home/jonathan/Code/luminance + cmd: ./configure --prefix=/usr + +- name: make luminance + command: + chdir: /home/jonathan/Code/luminance + cmd: make + +- name: make install luminance + command: + chdir: /home/jonathan/Code/luminance + cmd: make install + become: yes \ No newline at end of file diff --git a/roles/ssh/handlers/main.yml b/roles/ssh/handlers/main.yml new file mode 100644 index 0000000..090e1a7 --- /dev/null +++ b/roles/ssh/handlers/main.yml @@ -0,0 +1,7 @@ +--- + - name: reload sshd + service: + name: sshd + state: reloaded + become: yes + \ No newline at end of file diff --git a/roles/ssh/tasks/main.yml b/roles/ssh/tasks/main.yml new file mode 100644 index 0000000..7811708 --- /dev/null +++ b/roles/ssh/tasks/main.yml @@ -0,0 +1,11 @@ +--- + +- name: Disable SSH password auth + template: + src: sshd_config.j2 + dest: /etc/ssh/sshd_config + owner: root + group: root + mode: '0644' + notify: reload sshd + become: yes \ No newline at end of file diff --git a/roles/ssh/templates/sshd_config.j2 b/roles/ssh/templates/sshd_config.j2 new file mode 100644 index 0000000..5bc830d --- /dev/null +++ b/roles/ssh/templates/sshd_config.j2 @@ -0,0 +1,123 @@ +# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ + +# This is the sshd server system-wide configuration file. See +# sshd_config(5) for more information. + +# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin + +# The strategy used for options in the default sshd_config shipped with +# OpenSSH is to specify options with their default value where +# possible, but leave them commented. Uncommented options override the +# default value. + +Include /etc/ssh/sshd_config.d/*.conf + +#Port 22 +#AddressFamily any +#ListenAddress 0.0.0.0 +#ListenAddress :: + +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_ecdsa_key +#HostKey /etc/ssh/ssh_host_ed25519_key + +# Ciphers and keying +#RekeyLimit default none + +# Logging +#SyslogFacility AUTH +#LogLevel INFO + +# Authentication: + +#LoginGraceTime 2m +PermitRootLogin no +#StrictModes yes +#MaxAuthTries 6 +#MaxSessions 10 + +#PubkeyAuthentication yes + +# Expect .ssh/authorized_keys2 to be disregarded by default in future. +AuthorizedKeysFile .ssh/authorized_keys + +#AuthorizedPrincipalsFile none + +#AuthorizedKeysCommand none +#AuthorizedKeysCommandUser nobody + +# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts +#HostbasedAuthentication no +# Change to yes if you don't trust ~/.ssh/known_hosts for +# HostbasedAuthentication +#IgnoreUserKnownHosts no +# Don't read the user's ~/.rhosts and ~/.shosts files +#IgnoreRhosts yes + +# To disable tunneled clear text passwords, change to no here! +PasswordAuthentication no +#PermitEmptyPasswords no + +# Change to yes to enable challenge-response passwords (beware issues with +# some PAM modules and threads) +ChallengeResponseAuthentication no + +# Kerberos options +#KerberosAuthentication no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes +#KerberosGetAFSToken no + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes +#GSSAPIStrictAcceptorCheck yes +#GSSAPIKeyExchange no + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the ChallengeResponseAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via ChallengeResponseAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and ChallengeResponseAuthentication to 'no'. +#UsePAM no + +#AllowAgentForwarding yes +#AllowTcpForwarding yes +#GatewayPorts no +X11Forwarding yes +#X11DisplayOffset 10 +#X11UseLocalhost yes +#PermitTTY yes +PrintMotd yes +#PrintLastLog yes +#TCPKeepAlive yes +#PermitUserEnvironment no +#Compression delayed +#ClientAliveInterval 0 +#ClientAliveCountMax 3 +#UseDNS no +#PidFile /var/run/sshd.pid +#MaxStartups 10:30:100 +#PermitTunnel no +#ChrootDirectory none +#VersionAddendum none + +# no default banner path +#Banner none + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +# override default of no subsystems +Subsystem sftp /usr/lib/openssh/sftp-server + +# Example of overriding settings on a per-user basis +#Match User anoncvs +# X11Forwarding no +# AllowTcpForwarding no +# PermitTTY no +# ForceCommand cvs server diff --git a/roles/streamdeck/files/99-streamdeck.rules b/roles/streamdeck/files/99-streamdeck.rules new file mode 100644 index 0000000..c855404 --- /dev/null +++ b/roles/streamdeck/files/99-streamdeck.rules @@ -0,0 +1,4 @@ +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE:="666", GROUP="plugdev" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE:="666", GROUP="plugdev" diff --git a/roles/streamdeck/files/streamdeck.desktop b/roles/streamdeck/files/streamdeck.desktop new file mode 100644 index 0000000..538a391 --- /dev/null +++ b/roles/streamdeck/files/streamdeck.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Encoding=UTF-8 +Name=Streamdeck +Comment=A controller for Streamdeck devices +Icon=/usr/local/lib/python3.8/dist-packages/streamdeck_ui/logo.png +Exec=streamdeck_ui +Terminal=false +Categories=GTK;GNOME \ No newline at end of file diff --git a/roles/streamdeck/files/streamdeck.png b/roles/streamdeck/files/streamdeck.png new file mode 100644 index 0000000000000000000000000000000000000000..75448d2247b363ca4e616d5ef795a333c3f20d47 GIT binary patch literal 22910 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 IPpm@z2iQ->sQ>@~ literal 0 HcmV?d00001 diff --git a/roles/streamdeck/files/streamdeck.xcf b/roles/streamdeck/files/streamdeck.xcf new file mode 100644 index 0000000000000000000000000000000000000000..e18f3fe57e79202cc569d222484d2cd6b0a12164 GIT binary patch literal 35575 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