Compare commits

...

10 commits

35 changed files with 896 additions and 101 deletions

View file

@ -1,4 +1,34 @@
%:
ansible-playbook playbooks/$@.yml -i inventory/hosts.yml -K --ask-vault-pass
all:
ansible-playbook playbooks/all.yml -i inventory/hosts.yml -K --ask-vault-pass
asdf:
ansible-playbook playbooks/asdf.yml -i inventory/hosts.yml -K
neovim:
ansible-playbook playbooks/neovim.yml -i inventory/hosts.yml -K
nicotine:
ansible-playbook playbooks/nicotine.yml -i inventory/hosts.yml -K --ask-vault-pass
signal:
ansible-playbook playbooks/signal.yml -i inventory/hosts.yml -K
strawberry:
ansible-playbook playbooks/strawberry.yml -i inventory/hosts.yml -K
syncthing:
ansible-playbook playbooks/syncthing.yml -i inventory/hosts.yml -K --ask-vault-pass
system:
ansible-playbook playbooks/system.yml -i inventory/hosts.yml -K
virtualbox:
ansible-playbook playbooks/virtualbox.yml -i inventory/hosts.yml -K
vscodium:
ansible-playbook playbooks/vscodium.yml -i inventory/hosts.yml -K
zsh:
ansible-playbook playbooks/zsh.yml -i inventory/hosts.yml -K
.PHONY: run

View file

@ -9,15 +9,12 @@
## TODO
- Telegram (maybe only possible to download)
- Oh my zsh?
- Cool neovim setup
- strawberry
- fuzzy find
- keepassxc config
- thunderbird config
- some kind of tag setup with: bootstrap, update etc
- sync music collection
- nicotine+
- i3 app shortcuts
- terminal font
- default git branch master
Would like Ansible Vault to check in keypair for syncthing.
However, then I would need a password to unlock the vault.

8
library/rescue_role.yml Normal file
View file

@ -0,0 +1,8 @@
# https://stackoverflow.com/a/55524120
- name: Rescue role
block:
- include_role:
name: "{{ item_my_role }}"
rescue:
- set_fact:
failed_roles: "{{ failed_roles|default([]) + [ item_my_role ] }}"

View file

@ -2,6 +2,8 @@
hosts: self
roles:
- system
vars:
my_roles:
- zsh
- asdf
- neovim
@ -9,3 +11,10 @@
- virtualbox
- vscodium
- syncthing
- strawberry
- nicotine
tasks:
- include_tasks: "../library/rescue_role.yml"
loop: "{{ my_roles }}"
loop_control:
loop_var: item_my_role

4
playbooks/nicotine.yml Normal file
View file

@ -0,0 +1,4 @@
- name: Install nicotine+
hosts: self
roles:
- nicotine

4
playbooks/strawberry.yml Normal file
View file

@ -0,0 +1,4 @@
- name: Install strawberry
hosts: self
roles:
- strawberry

2
roles/asdf/meta/main.yml Normal file
View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -5,9 +5,6 @@
- name: Install Erlang prerequisite APT packages
become: true
apt:
state: present
update_cache: true
cache_valid_time: 86400 # One day
pkg:
- build-essential
- autoconf
@ -33,9 +30,6 @@
- name: Install Elixir prerequisite APT packages
become: true
apt:
state: present
update_cache: true
cache_valid_time: 86400 # One day
name: unzip
- name: Install asdf Elixir plugin
shell:

View file

@ -0,0 +1,8 @@
- name: APT upgrade
become: true
apt:
autoremove: true
upgrade: yes
state: latest
update_cache: yes
cache_valid_time: 86400 # One day

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -8,9 +8,13 @@
become: true
apt_repository:
repo: "deb [signed-by=/etc/apt/keyrings/neovim.gpg] https://ppa.launchpadcontent.net/neovim-ppa/stable/ubuntu {{ ansible_distribution_release }} main"
state: present
register: apt_repository
- name: Update APT cache
become: true
apt:
update_cache: true
when: apt_repository.changed
- name: Install Neovim
become: true
apt:
name: neovim
state: present

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -0,0 +1,29 @@
- name: Download PPA signing key
become: true
apt_key:
keyserver: keyserver.ubuntu.com
id: 6CEB6050A30E5769
keyring: /etc/apt/keyrings/nicotine.gpg
- name: Install PPA repository
become: true
apt_repository:
repo: "deb [signed-by=/etc/apt/keyrings/nicotine.gpg] https://ppa.launchpadcontent.net/nicotine-team/stable/ubuntu {{ ansible_distribution_release }} main"
register: apt_repository
- name: Update APT cache
become: true
apt:
update_cache: true
when: apt_repository.changed
- name: Install nicotine
become: true
apt:
name: nicotine
- name: Create configuration directory
file:
path: ~/.config/nicotine
recurse: true
state: directory
- name: Copy configuration file
template:
src: "{{ role_path }}/templates/config.j2"
dest: ~/.config/nicotine/config

View file

@ -0,0 +1,246 @@
[server]
server = ('server.slsknet.org', 2242)
login = {{ nicotine.login }}
passw = {{ nicotine.passw }}
interface =
ctcpmsgs = False
autosearch = []
autoreply =
portrange = (2234, 2239)
upnp = True
upnp_interval = 4
auto_connect_startup = True
userlist = []
banlist = []
ignorelist = []
ipignorelist = {}
ipblocklist = {}
autojoin = ['nicotine']
autoaway = 15
away = False
private_chatrooms = False
command_aliases = {}
[transfers]
incompletedir = /home/{{ ansible_user_id }}/.local/share/nicotine/incomplete
downloaddir = /home/{{ ansible_user_id }}/Music
uploaddir = /home/{{ ansible_user_id }}/.local/share/nicotine/received
usernamesubfolders = False
shared = [('Music', '/home/{{ ansible_user_id }}/Music')]
buddyshared = []
uploadbandwidth = 50
uselimit = False
usealtlimits = False
uploadlimit = 1000
uploadlimitalt = 100
downloadlimit = 0
downloadlimitalt = 100
preferfriends = False
useupslots = False
uploadslots = 2
afterfinish =
afterfolder =
lock = True
reverseorder = False
fifoqueue = False
usecustomban = False
limitby = True
customban = Banned, don't bother retrying
usecustomgeoblock = False
customgeoblock = Sorry, your country is blocked
queuelimit = 10000
filelimit = 100
buddysharestrustedonly = False
friendsnolimits = False
groupdownloads = folder_grouping
groupuploads = folder_grouping
geoblock = False
geoblockcc = ['']
remotedownloads = True
uploadallowed = 2
autoclear_downloads = False
autoclear_uploads = False
uploadsinsubdirs = True
rescanonstartup = True
enablefilters = False
downloadregexp = (\\(.*\.url|albumart(_{........-....-....-....-............}_)?(_?(large|small))?\.jpg|desktop\.ini|folder\.jpg|thumbs\.db)$)
downloadfilters = [['desktop.ini', 1], ['folder.jpg', 1], ['*.url', 1], ['thumbs.db', 1], ['albumart(_{........-....-....-....-............}_)?(_?(large|small))?\\.jpg', 0]]
download_doubleclick = 2
upload_doubleclick = 2
downloadsexpanded = True
uploadsexpanded = True
[userinfo]
descr = ''
pic =
[userbrowse]
expand_folders = True
[words]
censored = []
autoreplaced = {'teh ': 'the ', 'taht ': 'that ', 'tihng': 'thing', 'youre': "you're", 'jsut': 'just', 'thier': 'their', 'tihs': 'this'}
censorfill = *
censorwords = False
replacewords = False
tab = True
cycle = False
dropdown = False
characters = 3
roomnames = False
buddies = True
roomusers = True
commands = True
aliases = True
onematch = False
[logging]
debug = False
debugmodes = []
debuglogsdir = /home/{{ ansible_user_id }}/.local/share/nicotine/logs/debug
logcollapsed = True
transferslogsdir = /home/{{ ansible_user_id }}/.local/share/nicotine/logs/transfers
rooms_timestamp = %H:%M:%S
private_timestamp = %Y-%m-%d %H:%M:%S
log_timestamp = %Y-%m-%d %H:%M:%S
privatechat = True
chatrooms = True
transfers = False
debug_file_output = False
roomlogsdir = /home/{{ ansible_user_id }}/.local/share/nicotine/logs/rooms
privatelogsdir = /home/{{ ansible_user_id }}/.local/share/nicotine/logs/private
readroomlogs = True
readroomlines = 15
readprivatelines = 15
rooms = ['nicotine']
[privatechat]
store = True
users = []
[columns]
file_search = {'id': {'visible': False, 'width': 0}, 'user': {'visible': True, 'width': 200}, 'country': {'visible': True, 'width': 25}, 'speed': {'visible': True, 'width': 120}, 'in_queue': {'visible': True, 'width': 110}, 'folder': {'visible': True, 'width': 400}, 'filename': {'visible': True, 'width': 400}, 'size': {'visible': True, 'width': 100}, 'bitrate': {'visible': True, 'width': 100}, 'length': {'visible': True, 'width': 465}}
download = {'user': {'visible': True, 'width': 200}, 'path': {'visible': True, 'width': 400}, 'filename': {'visible': True, 'width': 400}, 'status': {'visible': True, 'width': 140}, 'queue_position': {'visible': True, 'width': 90}, 'percent': {'visible': True, 'width': 90}, 'size': {'visible': True, 'width': 180}, 'speed': {'visible': True, 'width': 100}, 'time_elapsed': {'visible': True, 'width': 140}, 'time_left': {'visible': True, 'width': 180}}
upload = {}
user_browse = {'filename': {'visible': True, 'width': 600}, 'size': {'visible': True, 'width': 100}, 'bitrate': {'visible': True, 'width': 100}, 'length': {'visible': True, 'width': 219}}
buddy_list = {}
chat_room = {'nicotine': {'status': {'visible': True, 'width': 25}, 'country': {'visible': True, 'width': 25}, 'user': {'visible': True, 'width': 155}, 'speed': {'visible': True, 'width': 100}, 'files': {'visible': True, 'width': 94}}}
[searches]
expand_searches = True
group_searches = folder_grouping
maxresults = 150
enable_history = True
history = []
enablefilters = False
filters_visible = False
defilter = ['', '', '', '', 0, '']
filtercc = []
filterin = []
filterout = []
filtersize = []
filterbr = []
filtertype = []
search_results = True
max_displayed_results = 1500
min_search_chars = 3
remove_special_chars = True
private_search_results = True
[ui]
dark_mode = False
header_bar = True
icontheme =
chatme = #908e8b
chatremote =
chatlocal =
chathilite = #5288ce
urlcolor = #5288ce
useronline = #16bb5c
useraway = #c9ae13
useroffline = #e04f5e
usernamehotspots = True
usernamestyle = bold
textbg =
search =
searchq = GREY
inputcolor =
spellcheck = True
exitdialog = 1
tab_default =
tab_hilite = #497ec2
tab_changed = #497ec2
tab_select_previous = True
tabmain = Top
tabrooms = Top
tabprivate = Top
tabinfo = Top
tabbrowse = Top
tabsearch = Top
tab_status_icons = True
globalfont =
chatfont =
tabclosers = True
searchfont =
listfont =
browserfont =
transfersfont =
last_tab_id = downloads
modes_visible = {'search': True, 'downloads': True, 'uploads': True, 'userbrowse': True, 'userinfo': True, 'private': True, 'chatrooms': True, 'interests': True, 'userlist': True}
modes_order = ['search', 'downloads', 'uploads', 'userbrowse', 'userinfo', 'private', 'userlist', 'chatrooms', 'interests']
buddylistinchatrooms = tab
trayicon = True
startup_hidden = False
filemanager =
speechenabled = False
speechprivate = User %(user)s told you: %(message)s
speechrooms = In room %(room)s, user %(user)s said: %(message)s
speechcommand = flite -t $
width = 800
height = 600
xposition = -1
yposition = -1
maximized = True
urgencyhint = True
file_path_tooltips = True
reverse_file_paths = True
[private_rooms]
rooms = {}
[urls]
protocols = {}
[interests]
likes = []
dislikes = []
[players]
default =
npothercommand =
npplayer = mpris
npformatlist = []
npformat =
[notifications]
notification_window_title = True
notification_tab_colors = False
notification_popup_sound = False
notification_popup_file = True
notification_popup_folder = True
notification_popup_private_message = True
notification_popup_chatroom = False
notification_popup_chatroom_mention = True
[plugins]
enable = True
enabled = []
[statistics]
started_downloads = 160
completed_downloads = 160
downloaded_size = 5712912242
started_uploads = 0
completed_uploads = 0
uploaded_size = 0

View file

@ -0,0 +1,9 @@
nicotine:
login: dellmonitor
passw: !vault |
$ANSIBLE_VAULT;1.1;AES256
37393034356130363563333637326334656263316234373738643563653632353438333230313131
3165373937613366356336326165656535336433633365390a383163306162303366303466363663
37363739343930383161333031373965623634386235363632363961643865383933616363373061
3061636563356539620a303161363536616333343463343761366462363730376638656362386335
30623232616431316563663565376133623430316330346162623737636430383937

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -7,11 +7,13 @@
become: true
apt_repository:
repo: "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/signal.asc] https://updates.signal.org/desktop/apt xenial main"
state: present
register: apt_repository
- name: Update APT cache
become: true
apt:
update_cache: true
when: apt_repository.changed
- name: Install Signal
become: true
apt:
state: latest
update_cache: yes
cache_valid_time: 86400 # One day
name: signal-desktop

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -0,0 +1,29 @@
- name: Download PPA signing key
become: true
apt_key:
keyserver: keyserver.ubuntu.com
id: BE5ED0F9261CAAD9A1E5B1A4CD6289E999EA819D
keyring: /etc/apt/keyrings/strawberry.gpg
- name: Install PPA repository
become: true
apt_repository:
repo: "deb [signed-by=/etc/apt/keyrings/strawberry.gpg] https://ppa.launchpadcontent.net/jonaski/strawberry/ubuntu {{ ansible_distribution_release }} main"
register: apt_repository
- name: Update APT cache
become: true
apt:
update_cache: true
when: apt_repository.changed
- name: Install Strawberry
become: true
apt:
name: strawberry
- name: Create configuration directory
file:
path: ~/.config/strawberry
recurse: true
state: directory
- name: Copy configuration file
template:
src: "{{ role_path }}/templates/strawberry.conf.j2"
dest: ~/.config/strawberry/strawberry.conf

View file

@ -0,0 +1,396 @@
[Analyzer]
framerate=25
type=BlockAnalyzer
[Appearance]
background-color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0)
background_image_do_not_cut=true
background_image_keep_aspect_ratio=false
background_image_max_size=0
background_image_position=1
background_image_stretch=true
background_image_type=3
blur_radius=80
foreground-color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
icon_size_configure_buttons=16
icon_size_left_panel_buttons=22
icon_size_play_control_buttons=32
icon_size_playlist_buttons=20
icon_size_tabbar_large_mode=40
icon_size_tabbar_small_mode=32
opacity_level=70
playlist_playing_song_color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
style=Fusion
system_icons=false
tab_color=@Variant(\0\0\0\x43\x2\xff\xffOL\x87\x87\x92+\0\0)
tab_gradient=true
tab_system_color=true
use-custom-set=true
[Backend]
AutoCrossfadeEnabled=false
CrossfadeEnabled=false
FadeoutDuration=2000
FadeoutEnabled=false
FadeoutPauseDuration=250
FadeoutPauseEnabled=false
NoCrossfadeSameAlbum=true
bs2b=false
bufferduration=4000
bufferhighwatermark=0.99
bufferlowwatermark=0.33
channels=2
channels_enabled=false
device=@Invalid()
engine=gstreamer
http2=false
output=autoaudiosink
rgcompression=true
rgenabled=false
rgfallbackgain=0
rgmode=0
rgpreamp=0
volume_control=true
[Behaviour]
doubleclick_addmode=1
doubleclick_playlist_addmode=1
doubleclick_playmode=3
keeprunning=true
language=
menu_playmode=2
menu_previousmode=1
playing_widget=true
resumeplayback=false
seek_step_sec=10
showtrayicon=true
startupbehaviour=2
trayicon_progress=true
[Collection]
auto_open=true
cache_size=160
cache_size_unit=1
cover_art_patterns=front, cover
cover_lowercase=true
cover_overwrite=false
cover_pattern=%albumartist-%album
cover_replace_spaces=true
delete_files=false
disk_cache_enable=false
disk_cache_size=360
disk_cache_size_unit=1
expire_unavailable_songs=60
group_by1=1
group_by2=4
group_by3=0
group_by_version=1
io_priority=3
last_path=/home/{{ ansible_user_id }}/Music
mark_songs_unavailable=true
monitor=true
overwrite_playcount=false
overwrite_rating=false
pretty_covers=true
save_cover_filename=2
save_cover_type=3
save_playcounts=false
save_ratings=false
separate_albums_by_grouping=false
show_dividers=true
song_tracking=true
startup_scan=true
tagreader_workers=2
thread_priority=0
[Context]
AlbumEnable=true
EngineAndDeviceEnable=false
SearchCoverEnable=true
SearchLyricsEnable=true
SongLyricsEnable=true
SummaryFmt=%album%
TechnicalDataEnable=false
TitleFmt=%title% - %artist%
font_headline=Bitstream Vera Sans
font_normal=Bitstream Vera Sans
font_size_headline=11
font_size_normal=11
[CoverManager]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xc2\0\0\0\x4\0\0\a{\0\0\x4\x92\0\0\x3\xc4\0\0\0\x6\0\0\ay\0\0\x4\x90\0\0\0\0\0\0\0\0\a\x80\0\0\x3\xc4\0\0\0\x6\0\0\ay\0\0\x4\x90)
save_cover_type=1
splitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xc8\0\0\x2\xbf\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
[Covers]
providers=Last.fm, MusicBrainz, Deezer, Musixmatch, Spotify, Tidal, Qobuz
[Equalizer]
enable_stereo_balancer=false
enabled=false
presets\1\name=Classical
presets\1\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xce)
presets\10\name=Live
presets\10\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xe7\0\0\0\0\0\0\0\x14\0\0\0\x19\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\xf\0\0\0\xf\0\0\0\n)
presets\11\name=Party
presets\11\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#)
presets\12\name=Pop
presets\12\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf6\0\0\0\x19\0\0\0#\0\0\0(\0\0\0\x19\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xf1\xff\xff\xff\xf6\xff\xff\xff\xf6)
presets\13\name=Reggae
presets\13\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xfb\xff\xff\xff\xe2\0\0\0\0\xff\xff\xff\xdd\xff\xff\xff\xdd\0\0\0\0\0\0\0\0\0\0\0\0)
presets\14\name=Rock
presets\14\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x19\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xec\0\0\0\x14\0\0\0-\0\0\0\x37\0\0\0\x37\0\0\0\x37)
presets\15\name=Ska
presets\15\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf1\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xfb\0\0\0\x14\0\0\0\x1e\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0\x32)
presets\16\name=Soft
presets\16\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xfb\0\0\0\x14\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0<)
presets\17\name=Soft Rock
presets\17\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xe7\xff\xff\xff\xe2\xff\xff\xff\xec\xff\xff\xff\xfb\0\0\0\xf\0\0\0-)
presets\18\name=Techno
presets\18\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xe7\0\0\0\0\0\0\0(\0\0\0\x32\0\0\0\x32\0\0\0-)
presets\19\name=Zero
presets\19\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)
presets\2\name=Club
presets\2\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14\0\0\0\x1e\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\0\0\0\0\0\0\0\0\0)
presets\3\name=Custom
presets\3\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)
presets\4\name=Dance
presets\4\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0#\0\0\0\n\0\0\0\0\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0)
presets\5\name=Full Bass
presets\5\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x46\0\0\0\x46\0\0\0\x46\0\0\0(\0\0\0\x14\xff\xff\xff\xd3\xff\xff\xff\xce\xff\xff\xff\xc9\xff\xff\xff\xc9\xff\xff\xff\xc9)
presets\6\name=Full Bass + Treble
presets\6\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0\x1e\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xe7\0\0\0\n\0\0\0-\0\0\0\x37\0\0\0<\0\0\0<)
presets\7\name=Full Treble
presets\7\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xe7\0\0\0\xf\0\0\0\x37\0\0\0P\0\0\0P\0\0\0P\0\0\0U)
presets\8\name=Laptop/Headphones
presets\8\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\x32\0\0\0\x19\xff\xff\xff\xec\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0)
presets\9\name=Large Hall
presets\9\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0\x32\0\0\0\x1e\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xe7\0\0\0\0\0\0\0\0)
presets\size=19
selected_preset=Custom
stereo_balance=0
[GlobalShortcuts]
dec_volume=
inc_volume=
love=
mute=
next_track=Media Next
pause=
play=
play_pause=Media Play
prev_track=Media Previous
repeat_mode=
seek_backward=
seek_forward=
show_hide=
show_osd=
shuffle_mode=
stop=Media Stop
stop_after=
toggle_pretty_osd=
toggle_scrobbling=
use_gnome=true
use_kde=false
use_mate=false
use_x11=false
[LastFM]
enabled=false
https=false
[LibreFM]
enabled=false
[ListenBrainz]
enabled=false
user_token=
[Lyrics]
providers=AudD, Genius, Lyrics.ovh, LoloLyrics, Musixmatch
[MainWindow]
current_tab=1
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\a\x7f\0\0\x4\x96\0\0\0\0\0\0\0\x14\0\0\x4j\0\0\x2\xc0\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\a\x7f\0\0\x4\x96)
hidden=false
maximized=true
minimized=false
search_for_cover_auto=true
show_sidebar=true
splitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x1p\0\0\x4W\0\xff\xff\xff\xff\x1\0\0\0\x1\0)
tab_collection=1
tab_context=0
tab_devices=7
tab_files=5
tab_mode=1
tab_playlists=3
tab_queue=2
tab_radios=6
tab_smartplaylists=4
[Moodbar]
enabled=false
save=false
show=false
style=0
[NetworkProxy]
engine=true
hostname=
mode=0
password=
port=0
type=3
use_authentication=false
username=
[OSD]
Behaviour=3
CustomText1=%title%
CustomText2=%artist% - %album%
CustomTextEnabled=true
ShowArt=true
ShowOnPausePlayback=true
ShowOnPlayModeChange=true
ShowOnResumePlayback=false
ShowOnVolumeChange=false
Timeout=5000
[OSDPretty]
background_color=4291434000
background_opacity=0.8700000047683716
disable_duration=false
fading=true
font="Bitstream Vera Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
foreground_color=4278190080
popup_pos=@Point(1524 0)
popup_screen=DP-1
[Player]
playback_playlist=1
playback_position=219
playback_state=3
volume=32
[Playlist]
alternating_row_colors=true
auto_sort=false
column_alignments=@Variant(\0\0\0\x7f\0\0\0\x13\x43olumnAlignmentMap\0\0\0\0\v\0\0\0\x6\0\0\0\x82\0\0\0\a\0\0\0\x82\0\0\0\b\0\0\0\x82\0\0\0\t\0\0\0\x82\0\0\0\n\0\0\0\x82\0\0\0\f\0\0\0\x82\0\0\0\r\0\0\0\x82\0\0\0\xe\0\0\0\x82\0\0\0\x11\0\0\0\x82\0\0\0\x15\0\0\0\x82\0\0\0\x16\0\0\0\x82)
continue_on_error=true
delete_files=false
editmetadatainline=false
glow_effect=true
greyout_songs_play=true
greyout_songs_startup=true
path_type=0
playlist_clear=true
rating_locked=false
select_track=true
show_bars=true
show_toolbar=true
state="@ByteArray(P,\x95\xf\x1\0\0\0\x1e\0\0\x2\x1\0\0\x1\xc2\0\0\x1R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x41\0\0\0\0\0\0\0\x45\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1e\0\0\0\b\0\0\0\0\0\0\0\x1\0\0\0\x2\0\0\0\x3\0\0\0\x4\0\0\0\x5\0\0\0\x6\0\0\0\a\0\0\0\t\0\0\0\n\0\0\0\v\0\0\0\f\0\0\0\r\0\0\0\xe\0\0\0\xf\0\0\0\x10\0\0\0\x11\0\0\0\x12\0\0\0\x13\0\0\0\x14\0\0\0\x15\0\0\0\x16\0\0\0\x17\0\0\0\x18\0\0\0\x19\0\0\0\x1a\0\0\0\x1b\0\0\0\x1c\0\0\0\x1d\0\0\0\x1e?\xd6\xe1\x8a|/\xea\x13?\xd4\xe\x98\x66\xb0\x6\xa6?\xce\x1e\x88\xae\xb2\x45\xd5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xa7S\xde\x3\xc1)j\0\0\0\0\0\0\0\0?\xa8\xb0\xe8*v9\x8a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b)"
state_version=1
warn_close_playlist=true
write_metadata=false
[PlaylistSequence]
repeat_mode=0
shuffle_mode=0
[Qobuz]
albums_group_by1=1
albums_group_by2=4
albums_group_by3=0
albums_group_by_version=1
albums_separate_albums_by_grouping=false
artists_group_by1=1
artists_group_by2=4
artists_group_by3=0
artists_group_by_version=1
artists_separate_albums_by_grouping=false
search_group_by1=1
search_group_by2=4
search_group_by3=0
search_group_by_version=1
songs_group_by1=1
songs_group_by2=4
songs_group_by3=0
songs_group_by_version=1
songs_separate_albums_by_grouping=false
tab=artists
[Scrobbler]
albumartist=false
enabled=false
love_button=false
offline=false
scrobble_button=false
show_error_dialog=true
sources=collection, file, cd, device, subsonic, tidal, qobuz, stream, somafm, radioparadise, unknown
submit=0
[SerializedSmartPlaylists]
songs\1\data=@ByteArray(\0\0\0\0\x2\x11\0\0\0\x14\x2\0)
songs\1\name=Newest tracks
songs\1\type=1
songs\10\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x14\x2\x1)
songs\10\name=Dynamic random mix
songs\10\type=1
songs\2\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x32\x2\0)
songs\2\name=50 random tracks
songs\2\type=1
songs\3\data=@ByteArray(\0\0\0\x1\x13\x4\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0)
songs\3\name=Ever played
songs\3\type=1
songs\4\data=@ByteArray(\0\0\0\x1\x13\x6\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0)
songs\4\name=Never played
songs\4\type=1
songs\5\data=@ByteArray(\0\0\0\0\x2\x15\0\0\0\x14\x2\0)
songs\5\name=Last played
songs\5\type=1
songs\6\data=@ByteArray(\0\0\0\0\x2\x13\0\0\0\x14\x2\0)
songs\6\name=Most played
songs\6\type=1
songs\7\data=@ByteArray(\0\0\0\0\x2\x16\0\0\0\x14\x2\0)
songs\7\name=Favourite tracks
songs\7\type=1
songs\8\data=@ByteArray(\0\0\0\x2\x16\x5\0\0\0\x6\0?\xe0\0\0\0\0\0\0\0\0\0\0\x1\0\x14\x4\0\0\0\x2\0\0\0\0\x4\0\0\0\0\x1\0\x2\x14\0\0\0\x14\x1\0)
songs\8\name=Least favourite tracks
songs\8\type=1
songs\9\data=@ByteArray(\0\0\0\0\x1\x1\xff\xff\xff\xff\x2\0)
songs\9\name=All tracks
songs\9\type=1
songs\size=10
songs_version=3
[SettingsDialog]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\xb0\0\0\0\xd9\0\0\x5\xd2\0\0\x3\xda\0\0\x1\xb1\0\0\0\xda\0\0\x5\xd1\0\0\x3\xd9\0\0\0\0\0\0\0\0\a\x80\0\0\x1\xb1\0\0\0\xda\0\0\x5\xd1\0\0\x3\xd9)
[Subsonic]
group_by1=1
group_by2=4
group_by3=0
group_by_version=1
separate_albums_by_grouping=false
[Tidal]
albums_group_by1=1
albums_group_by2=4
albums_group_by3=0
albums_group_by_version=1
albums_separate_albums_by_grouping=false
artists_group_by1=1
artists_group_by2=4
artists_group_by3=0
artists_group_by_version=1
artists_separate_albums_by_grouping=false
search_group_by1=1
search_group_by2=4
search_group_by3=0
search_group_by_version=1
songs_group_by1=1
songs_group_by2=4
songs_group_by3=0
songs_group_by_version=1
songs_separate_albums_by_grouping=false
tab=artists

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -1,29 +1,31 @@
- name: Install Syncthing
become: true
apt:
state: latest
update_cache: true
cache_valid_time: 86400
name: syncthing
- name: Create Syncthing configuration directory
file:
path: ~/.config/syncthing
state: directory
- name: Copy Syncthing configuration
copy:
src: "{{ role_path }}/files/config.xml"
template:
src: "{{ role_path }}/templates/config.xml.j2"
dest: ~/.config/syncthing/config.xml
register: config
- name: Copy Syncthing private key
copy:
src: "{{ role_path }}/files/key.pem"
dest: ~/.config/syncthing/key.pem
register: private_key
- name: Copy Syncthing certificate
copy:
src: "{{ role_path }}/files/cert.pem"
dest: ~/.config/syncthing/cert.pem
register: certificate
- name: Enable Syncthing
become: true
systemd:
enabled: true
name: "syncthing@{{ ansible_user_id }}"
state: restarted
state: "{{ state }}"
vars:
state: "{{ 'restarted' if config.changed or private_key.changed or certificate.changed else 'started' }}"

View file

@ -1,5 +1,5 @@
<configuration version="37">
<folder id="6pgsm-opvsv" label="Sync" path="/home/pim/sync" type="sendreceive" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true">
<folder id="6pgsm-opvsv" label="Sync" path="/home/{{ ansible_user_id }}/sync" type="sendreceive" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true">
<filesystemType>basic</filesystemType>
<device id="IGS4TYV-TQ6X2CG-OE3M2RE-DKZWKQZ-HEKIGHT-C6EIGHL-CBP2ULE-M3WZ7QC" introducedBy="">
<encryptionPassword></encryptionPassword>
@ -43,7 +43,7 @@
<maxTotalSize>4096</maxTotalSize>
</xattrFilter>
</folder>
<folder id="gfx9s-zaxrt" label="Music" path="/home/pim/Music" type="sendreceive" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true">
<folder id="gfx9s-zaxrt" label="Music" path="/home/{{ ansible_user_id }}/Music" type="sendreceive" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true">
<filesystemType>basic</filesystemType>
<device id="IGS4TYV-TQ6X2CG-OE3M2RE-DKZWKQZ-HEKIGHT-C6EIGHL-CBP2ULE-M3WZ7QC" introducedBy="">
<encryptionPassword></encryptionPassword>
@ -109,7 +109,7 @@
</device>
<gui enabled="true" tls="false" debugging="false">
<address>127.0.0.1:40465</address>
<apikey></apikey>
<apikey>{{ syncthing.apikey }}</apikey>
<theme>default</theme>
</gui>
<ldap></ldap>
@ -134,7 +134,7 @@
<natTimeoutSeconds>10</natTimeoutSeconds>
<urAccepted>3</urAccepted>
<urSeen>3</urSeen>
<urUniqueID></urUniqueID>
<urUniqueID>{{ syncthing.usage_report_unique_id }}</urUniqueID>
<urURL>https://data.syncthing.net/newdata</urURL>
<urPostInsecurely>false</urPostInsecurely>
<urInitialDelayS>1800</urInitialDelayS>

View file

@ -0,0 +1,16 @@
syncthing:
apikey: !vault |
$ANSIBLE_VAULT;1.1;AES256
63616464333437376436333362353263396536633733656431363563626364346536376331646531
3762666230663933633937303130356238343963323030320a643639353833616666316536326434
65333136656530353062303434633830343765613937386134303463323730666332353439343762
3230356330333565630a336239646134333364383165383662393735306566666662623237663164
35633538303738366538666466626666633431363134633963313739623231363065653936383131
6637636561393762323431303430353661396162393463646636
usage_report_unique_id: !vault |
$ANSIBLE_VAULT;1.1;AES256
65636631303566326435306335663363393362613565326638666336353139376538343631663365
6666643239396464326438353438323033343334363731340a376638633564626563373866353132
30306363303664363233303533653232386264666432303537313630373636613061633237373930
6434346565383833300a316334663965353066633234636564653366326436663163363733616439
6666

View file

@ -30,3 +30,7 @@ UpperCase=true
[SSHAgent]
Enabled=true
[Security]
ClearClipboardTimeout=30
ClearSearch=false

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -1,14 +1,6 @@
- name: Update repositories
become: true
apt:
upgrade: yes
state: latest
update_cache: yes
cache_valid_time: 86400 # One day
- name: Install APT packages
become: true
apt:
state: latest
pkg:
- git
- make
@ -22,19 +14,24 @@
- gimp
- tree
- wireshark
- units
- name: Install .gitconfig
template:
src: "{{ role_path }}/templates/.gitconfig.j2"
dest: ~/.gitconfig
- name: Install Regolith Xresources file
template:
src: "{{ role_path }}/templates/Xresources.j2"
- name: Copy Xresources
copy:
src: "{{ role_path }}/files/Xresources"
dest: ~/.config/regolith2/Xresources
- name: Create keepassxc config directory
file:
path: ~/.config/keepassxc
state: directory
- name: Install keepassxc.ini
template:
src: "{{ role_path }}/templates/keepassxc.ini.j2"
- name: Copy keepassxc.ini
copy:
src: "{{ role_path }}/files/keepassxc.ini"
dest: ~/.config/keepassxc/keepassxc.ini
- name: Create repos directory
file:
path: ~/repos
state: directory

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -7,11 +7,13 @@
become: true
apt_repository:
repo: "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/oracle_vbox_2016.asc] https://download.virtualbox.org/virtualbox/debian {{ ansible_distribution_release }} contrib"
state: present
register: apt_repository
- name: Update APT cache
become: true
apt:
update_cache: true
when: apt_repository.changed
- name: Install VirtualBox
become: true
apt:
state: latest
update_cache: yes
cache_valid_time: 86400 # One day
name: virtualbox-6.1

View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -7,13 +7,15 @@
become: true
apt_repository:
repo: "deb [signed-by=/etc/apt/trusted.gpg.d/vscodium-archive-keyring.asc ] https://download.vscodium.com/debs vscodium main"
state: present
register: apt_repository
- name: Update APT cache
become: true
apt:
update_cache: true
when: apt_repository.changed
- name: Install VSCodium
become: true
apt:
state: latest
update_cache: yes
cache_valid_time: 86400 # One day
name: codium
- name: Check VSCodium extensions
setup:

View file

@ -1,40 +1,13 @@
# Set up the prompt
export ZSH=$HOME/.oh-my-zsh
autoload -Uz promptinit
promptinit
prompt adam1
plugins=(git asdf colored-man-pages colorize command-not-found copyfile copypath docker extract docker-compose fancy-ctrl-z fzf ripgrep)
setopt histignorealldups sharehistory
export ZSH_THEME="strug"
export ZSH_COLORIZE_TOOL=pygmentize
export FZF_BASE=~/repos/fzf
export FZF_DEFAULT_COMMAND='ag'
# Use emacs keybindings even if our EDITOR is set to vi
bindkey -e
# Keep 1000 lines of history within the shell and save it to ~/.zsh_history:
HISTSIZE=1000
SAVEHIST=1000
HISTFILE=~/.zsh_history
# Use modern completion system
autoload -Uz compinit
compinit
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
source $ZSH/oh-my-zsh.sh
# Git aliases
alias gp='git push'
@ -47,10 +20,10 @@ alias gb='git branch'
alias ga='git add'
alias gl='git log'
# asdf
. $HOME/.asdf/asdf.sh
# For neovim
PATH=$PATH:/usr/local
alias vi='nvim'
alias vim='nvim'
zstyle ':completion:*:*:docker:*' option-stacking yes
zstyle ':completion:*:*:docker-*:*' option-stacking yes

2
roles/zsh/meta/main.yml Normal file
View file

@ -0,0 +1,2 @@
dependencies:
- role: common

View file

@ -1,10 +1,20 @@
- name: Install zsh
- name: Install apt packages
become: true
apt:
state: latest
update_cache: yes
cache_valid_time: 86400 # One day
name: zsh
pkg:
- zsh
- fzf
- silversearcher-ag
- xclip
- name: Install pygments
pip:
name:
- pygments
- name: Clone oh-my-zsh
git:
repo: https://github.com/ohmyzsh/ohmyzsh.git
depth: 1
dest: ~/.oh-my-zsh
- name: Set default shell to zsh
become: true
user: