Compare commits

...

No commits in common. "main" and "develop" have entirely different histories.

85 changed files with 1832 additions and 506 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
config/alacritty/current-theme.toml
*.swp
*.retry

6
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "config/alacritty/themes"]
path = config/alacritty/themes
url = git@github.com:alacritty/alacritty-theme.git
[submodule "ansible-gpg-vault"]
path = ansible-gpg-vault
url = https://git.finallycoffee.eu/finallycoffee.eu/ansible-gpg-vault.git

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# .dotfiles - Bootstrap me!
## Requirements
Clone this repository with `git clone --recursive https://git.finallycoffee.eu/transcaffeine/dotfiles.git` into `~/git/dotfiles`.
Have your pubkey in a git-repo at `https://git.finallycoffee.eu/$USER/about` at the top-level as `pubkey.asc`, then run `ansible-playbook -i local.yml bootstrap.yml`.
Reboot and then run `ansible-playbook -i local.yml all.yml`.

7
all.yml Normal file
View File

@ -0,0 +1,7 @@
---
- import_playbook: vim.yml
- import_playbook: tmux.yml
- import_playbook: gnupg.yml
- import_playbook: redshift.yml

1
ansible-gpg-vault Submodule

@ -0,0 +1 @@
Subproject commit 6b06b795cc769033fbb913167c88a7c41da30ebd

View File

@ -0,0 +1 @@
johanna.reichmann@delta-industries.de

View File

@ -0,0 +1,20 @@
-----BEGIN PGP MESSAGE-----
hQIMAxEs7W/4x4lxAQ//ZkLnB+f9bD12wnnRJm8S6j/iaxbxsV9vSe0xfGZH0mup
7f9Kpg8kCxDaTnbgQw9HIPJPc4m/Kwlo8Jx+Zk3+AIvuEkqll3OjmiwstlH9EPBg
VzDDnpWHb4EG0xYWv7+pztudwX2Ghp1xMqHYIokJNliU01vn/igoeZjLg+uogKWf
4+qFest0CLONfHM2LUj3qfMJc1dndRM46i2YybjTC6BFmqtXGNuEeVOHNUV3AgTw
M6gpq26rr+YdVElft43o2+sdZH/USlL/ga5+K0Ea272qhmO/fPbTeffqlUHtkkWs
bURsLmPQYkgZxy8TflSVeB8qol5i30hqkD3WTuEHB+m92KkxveZcV2jHeNrI1OEP
r/kbMcxivDod0eNaEwe7pMlm7NstrHrnIExm9pG5y8YIIRlaELNJbXPcZAHTG+o9
j+kfPnRyqFrF1raktY0AO99jsNn13uXYMPb0TB78jR6Qs0HAm56GUtO+enZhUEBo
3igpeiU5lMEhua8fD+xSUhA4Hx8InS/Oj2FxzK4GRyRhXag2xFoBEM9FMJnRr9cR
m5mPFBvqMadZkejRrv+QpAy6phauR4Zo9M7qBwsZ79adeFFTMneYONuF8l6okjBu
OSHFPeR9R+O+iv+toAMCyqfH93RM7NWKBbawhnBBvaS7bIzMw0x+xKJo+c5lkQXS
wC0BupdYkeee+5KeD+LejKJK2UBRtYPhDYZRPbHu0Hu837liuXhrJYuKz6SFfoPU
kQcyYUlFVcaqjIwKGLYQdwumZetGlw8DlfmQ9nax5n5wvVm+fv6ZF8wy60Wsehbi
fqE2jTTBRStyIqScPOZKTu1OR17va9KKhDnAPLXVPZ/ROxJftIrsa2FFRhItJBJx
fqCe73K8zvT5jcHlN+qQlHgmV2KdTbMa0i6IC+VMWgdlK8HhE+nzYfl5Z4cf6ZwA
BHnAXdwgtnj8FxZmC1NgRQuhXj3UucPO9/HrqEToAUydUQvbT1YbX+RLnzIysrU=
=cikY
-----END PGP MESSAGE-----

3
ansible.cfg Normal file
View File

@ -0,0 +1,3 @@
[defaults]
vault_password_file = ansible-gpg-vault/vault.sh

10
bootstrap.yml Normal file
View File

@ -0,0 +1,10 @@
---
- name: Bootstrap arch linux install
hosts: all
roles:
- name: arch
become: yes
vars:
arch_device: /dev/sdg

View File

@ -1,2 +0,0 @@
-Dawt.toolkit.name=WLToolkit
-Xmx4096m

View File

@ -1,5 +0,0 @@
<application>
<component name="EditorColorsManagerImpl">
<global_color_scheme name="_@user_Default" />
</component>
</application>

View File

@ -1,6 +0,0 @@
general.import = [
"~/.config/alacritty/current-theme.toml"
]
general.live_config_reload = true
general.ipc_socket = true

@ -1 +0,0 @@
Subproject commit e759dafb8e2e00abb428592979ce006da7fba4a7

View File

@ -1,4 +0,0 @@
lat: redacted
lng: redacted
dbusserver: true
portal: true

View File

@ -1,20 +0,0 @@
[user]
email = "transcaffeine@finally.coffee"
name = "transcaffeine"
signingKey = "03624C433676E465"
[commit]
gpgSign = true
[tag]
gpgSign = true
[gpg]
program = "/usr/bin/gpg"
[rebase]
autoStash = true
autoSquash = true
[pull]
rebase = true
autoStash = true
[format]
pretty = "oneline"
[alias]
logv = "log --pretty=full --show-signature"

View File

@ -1,5 +0,0 @@
enable-ssh-support
ignore-cache-for-signing
no-allow-external-cache
pinentry-program /usr/bin/pinentry-qt
allow-loopback-pinentry

View File

@ -1,10 +0,0 @@
no-emit-version
no-comments
trusted-key 0xredacted
keyid-format 0xlong
with-fingerprint
with-sig-list
allow-freeform-uid
keyserver hkps://keys.openpgp.org

View File

@ -1 +0,0 @@
your_keygrip_here

View File

@ -1,67 +0,0 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.3.0
config_reader_min_version=3
fields=0 48 17 18 38 39 40 2 46 47 49 1
hide_kernel_threads=1
hide_userland_threads=0
hide_running_in_container=0
shadow_other_users=0
show_thread_names=0
show_program_path=0
highlight_base_name=0
highlight_deleted_exe=1
shadow_distribution_path_prefix=0
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
header_margin=1
screen_tabs=1
detailed_cpu_time=0
cpu_count_from_one=0
show_cpu_usage=1
show_cpu_frequency=1
show_cpu_temperature=1
degree_fahrenheit=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
enable_mouse=1
delay=15
hide_function_bar=0
header_layout=four_25_25_25_25
column_meters_0=LeftCPUs
column_meter_modes_0=1
column_meters_1=RightCPUs
column_meter_modes_1=1
column_meters_2=Memory Swap HugePages Blank LoadAverage Tasks DiskIO NetworkIO
column_meter_modes_2=1 1 1 2 2 2 2 2
column_meters_3=Hostname Uptime DateTime Battery Blank Blank System SystemdUser
column_meter_modes_3=2 2 2 2 2 2 2 2
tree_view=0
sort_key=46
tree_sort_key=46
sort_direction=-1
tree_sort_direction=-1
tree_view_always_by_pid=0
all_branches_collapsed=0
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
.sort_key=PERCENT_CPU
.tree_sort_key=PERCENT_CPU
.tree_view_always_by_pid=0
.tree_view=0
.sort_direction=-1
.tree_sort_direction=-1
.all_branches_collapsed=0
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
.sort_key=IO_RATE
.tree_sort_key=PID
.tree_view_always_by_pid=0
.tree_view=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0

View File

@ -1,22 +0,0 @@
max-history=10
background-color=#444444
text-color=#ffffff
height=120
border-color=#c2005b
anchor=top-right
default-timeout=10000
max-visible=10
# need libnotify so firefox etc use mako
[mode=do-not-disturb]
invisible=1
[mode=system-light]
background-color=#eeeeee
text-color=#555555
border-color=#c2005b
[mode=system-dark]
background-color=#444444
text-color=#ffffff
border-color=#c2005b

View File

@ -1,257 +0,0 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
#set $menu dmenu_path | dmenu | xargs swaymsg exec --
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
### Idle configuration
#
# Example configuration:
#
exec_always "pkill swayidle; swayidle -w \
timeout 300 'swaylock -F -l -f -c 111111' \
timeout 900 'swaymsg \"output * power off\"' resume 'swaymsg \"output * power on\"' \
before-sleep 'swaylock -F -l -f -c 111111'"
set $lock swaylock -F -l -c 111111 --ring-color d90166 --ring-clear-color cccccc --ring-wrong-color ff0000 --line-color dddddd --key-hl-color fe2e90
bindsym $mod+l exec $lock
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
#
# Example configuration:
#
# input "2:14:SynPS/2_Synaptics_TouchPad" {
# dwt enabled
# tap enabled
# natural_scroll enabled
# middle_emulation enabled
# }
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+Shift+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
# Screenshot (grim+slurp)
bindsym print exec grim -g "$(slurp -d)" - | wl-copy
# Media buttons / Brightness
bindsym --locked XF86MonBrightnessUp exec brightnessctl set +13 amdgpu_bl1
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 13- amdgpu_bl1
bindsym --locked XF86AudioRaiseVolume exec "pw-volume change +2.5%;"
bindsym --locked XF86AudioLowerVolume exec "pw-volume change -2.5%;"
bindsym --locked XF86AudioMute exec "pw-volume mute toggle;"
#
# Moving around:
#
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# for entire workspaces
bindsym $mod+Control+Shift+Left move workspace to output left
bindsym $mod+Control+Shift+Down move workspace to output down
bindsym $mod+Control+Shift+Up move workspace to output up
bindsym $mod+Control+Shift+Right move workspace to output right
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
#bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
#bar {
# position top
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
#status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
#}
# use sway-launcher-desktop
for_window [app_id="^launcher$"] floating enable, sticky enable, resize set 30 ppt 60 ppt, border pixel 5
set $menu exec $term --class launcher -e /usr/bin/sway-launcher-desktop
# style pinentry programs
for_window [app_id="^pinentry$"] floating enable, sticky enable, resize set 80 ppt 120 ppt, border pixel 2
# set picture-in-picture to floating
for_window [app_id="^firefox$" title="^Picture-in-Picture$"] floating enable, inhibit_idle visible;
#for_window [class="^Nextcloud$" title="^Nextcloud$"] floating enable, sticky enable, border pixel 10;
# Nag mode using swaynagmode
set $nag exec swaynagmode
mode "nag" {
bindsym {
Ctrl+d mode "default"
Ctrl+c $nag --exit
q $nag --exit
Escape $nag --exit
Return $nag --confirm
Shift+Tab $nag --select prev
Tab $nag --select next
Left $nag --select prev
Right $nag --select next
Up $nag --select prev
Down $nag --select next
}
}
# launch kanshi
exec_always 'sleep 0.5; pkill kanshi'
exec_always 'sleep 0.75; kanshi'
include ~/.config/sway/current-theme
include ~/.config/sway/config.d/*

View File

@ -1,16 +0,0 @@
# sway does not set DISPLAY/WAYLAND_DISPLAY in the systemd user environment
# See FS#63021
# Adapted from xorg's 50-systemd-user.sh, which achieves a similar goal.
# Upstream refuses to set XDG_CURRENT_DESKTOP so we have to.
exec systemctl --user set-environment XDG_CURRENT_DESKTOP=sway
exec systemctl --user import-environment DISPLAY \
SWAYSOCK \
WAYLAND_DISPLAY \
XDG_CURRENT_DESKTOP
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY \
SWAYSOCK \
XDG_CURRENT_DESKTOP=sway \
WAYLAND_DISPLAY

View File

@ -1,4 +0,0 @@
# see https://github.com/swaywm/sway/wiki/Systemd-integration
exec 'systemctl --user import-environment {,WAYLAND_}DISPLAY SWAYSOCK; systemctl --user start sway-session.target'
exec swaymsg -t subscribe '["shutdown"]' && systemctl --user stop sway-session.target

View File

@ -1 +0,0 @@
light-mode

View File

@ -1,14 +0,0 @@
bar {
position top
status_command i3status
colors {
statusline #dddddd
background #222222
inactive_workspace #323232 #323232 #999999
active_workspace #cccccc #c2005b #bbbbbb
focused_workspace #aaaaaa #d90166 #dddddd
}
}
client.focused #555555 #444444 #eeeeee #2e92f4 #555555
# vi:syntax=swayconfig

View File

@ -1,19 +0,0 @@
bar {
position top
status_command i3status
colors {
statusline #222222
background #ededed
# workspace type border background text
inactive_workspace #888888 #efefef #666666
active_workspace #454545 #444444 #bbbbbb
focused_workspace #aaaaaa #d90166 #dddddd
}
}
# class border background text indicator child_border
client.focused #c2005b #e0e0e0 #c2005b #2e92f4 #eeeeee
client.unfocused #bbbbbb #ededed #666666
client.focused_inactive #777777 #bcbcbc #444444
# vi:syntax=swayconfig

View File

@ -1,6 +0,0 @@
[preferred]
default=gtk
org.freedesktop.impl.ScreenCast=wlr
org.freedesktop.impl.Screenshot=wlr
org.freedesktop.impl.portal.Settings=darkman
org.freedesktop.impl.portal.Inhibit=none

7
git.yml Normal file
View File

@ -0,0 +1,7 @@
---
- name: Install & template git configuration
hosts: git
become: true
roles:
- git

43
global.yml Normal file
View File

@ -0,0 +1,43 @@
---
all:
hosts:
iodine:
ansible_host: iodine.int.finallycoffee.eu
ansible_user: jdreichmann
ansible_become_user: jdreichmann
ansible_become: true
carbon:
ansible_host: carbon.int.finallycoffee.eu
# iron:
# ansible_host: iron.int.finallycoffee.eu
# platinum:
# ansible_host: platinum.int.finallycoffee.eu
# xenon:
# ansible_host: xenon.int.finallycoffee.eu
# yttrium:
# ansible_host: yttrium.int.finallycoffee.eu
munich:
ansible_host: munich.finallycoffee.eu
ansible_user: jdreichmann
ansible_become_user: jdreichmann
ansible_become: true
vars:
ansible_user: transcaffeine
ansible_become_user: transcaffeine
ansible_become: true
servers:
hosts:
iodine:
munich:
# iron:
# platinum:
clients:
hosts:
# carbon:
# xenon:

7
gnupg.yml Normal file
View File

@ -0,0 +1,7 @@
---
- name: Sets up gpg and the configs for using it as a ssh-agent
hosts: all
become: true
roles:
- gnupg

34
group_vars/git.yml Normal file
View File

@ -0,0 +1,34 @@
$ANSIBLE_VAULT;1.1;AES256
64363730336134663064313633316132396335613761386239613966313864656565376230323338
3863396633383931393031643837323037356332326664630a393662323135643562643230363437
31343065363266353662643365303663633131393037353130316638623035356138383164346166
6234323936383061340a366634373336333363656463656433333139333362393530363131623535
32396534633831343632323263336565353836343035396138353132356464383763396535393337
64353137653266653262643164613534333865666336663561376462346663663934376466343261
64656535343937643031616663666566626265313661623034386163336232336538663365626566
32346463363333616261643364363263363163316431623364383333353364363836613062373537
64636337343466643333666465643162323266353663366662313639623638393961333230373838
63363633383134623931373062396665353161636435343463646536663962333232656264306331
37323564306135363064363663656239313165326331303865643338333463303935356436626262
38353738366632663839626166303964396535333639646162666435363630633132646531313930
36343439373230616433623539393938326562343465633763363865323262323366316135393339
62616132333063643433353039353765663736633334613138363936306336303962643339313163
35646562663861613966346437666534313839373436376666313433353338653333643263373331
32306136333564343831343439346466626135313835346433666337653435313833383033633665
64613430383666653036393938643734613330623066333866643965343863636166363063306534
39343163366161373862383466313830646336333731333438663465336339313865306438353262
37363538383132373933313566366265616538356636633636343633343830363739383237316632
33616636666464366462613866383837323736353931623463323565356431346166393066326263
31623561323538373437366164376464663639633932383035346165353462303264373433393231
62353866616532313236363337306466626536306666333232613065373066663762663739633831
39316635663761663934323733656666396661653462383665336631373537356533383332323533
38633465326566663331383564643066366235613337356531396530323937323138313966393635
62353365383839383762303034633562353130353434656232636539313165346134373231316333
62656534386439623435353264313134623035303366313763316164656336346436353130363834
36306662633139663538383238646561346166353737636163323965663030373232613564393335
39353632333139336132636536326538353033373736643132346635613666346635616637386539
38643031626439373830316230643331303037313363633661333539383166356137333665623336
64376334353837353262373461663666646630323366356538313138363038626635353231626164
64346437383261643638306566356262383534646163343164333838373738303535623535323666
35623861663933613366306131656231353833643234373933316262633338666236386662636135
3563

3
group_vars/gnupg.yml Normal file
View File

@ -0,0 +1,3 @@
# List of all keygrips to be templated into the sshcontrol
gpg_keygrips: ["468CB012C93D96E3C67F2CBCFB112400050023B6"]

8
i3.yml Normal file
View File

@ -0,0 +1,8 @@
---
- name: Template i3 config
hosts: all
become: true
roles:
- i3

14
legacy/gnupg/gnupg_agent Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
rc=$(pgrep gpg-agent)
if [ "$rc" != 0 ]; then
export GPG_AGENT_INFO
export SSH_AUTH_SOCK
export SSH_AGENT_PID
else
eval $(gpg-agent --daemon)
fi
gpg-connect-agent /bye
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)

View File

@ -0,0 +1,7 @@
default-cache-ttl 300
default-cache-ttl-ssh 300
max-cache-ttl 300
max-cache-ttl-ssh 300
no-allow-external-cache
enable-ssh-support
ignore-cache-for-signing

12
legacy/gnupg/gpg.conf Normal file
View File

@ -0,0 +1,12 @@
cert-digest-algo SHA256
no-emit-version
no-comments
personal-cipher-preferences AES AES256 AES192 CAST5
personal-digest-preferences SHA256 SHA512 SHA384 SHA224
ignore-time-conflict
allow-freeform-uid
with-fingerprint
keyid-format 0xlong
keyserver hkps://hkps.pool.sks-keyservers.net
#keyserver-options ca-cert-file=/home/electron/.gnupg/sks-keyservers_ca.pem
keyserver-options no-honor-keyserver-url

12
legacy/gnupg/sshcontrol Normal file
View File

@ -0,0 +1,12 @@
# List of allowed ssh keys. Only keys present in this file are used
# in the SSH protocol. The ssh-add tool may add new entries to this
# file to enable them; you may also add them manually. Comment
# lines, like this one, as well as empty lines are ignored. Lines do
# have a certain length limit but this is not serious limitation as
# the format of the entries is fixed and checked by gpg-agent. A
# non-comment line starts with optional white spaces, followed by the
# keygrip of the key given as 40 hex digits, optionally followed by a
# caching TTL in seconds, and another optional field for arbitrary
# flags. Prepend the keygrip with an '!' mark to disable it.
468CB012C93D96E3C67F2CBCFB112400050023B6

161
legacy/i3/i3config Normal file
View File

@ -0,0 +1,161 @@
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesnt scale on retina/hidpi displays.
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec xfce4-terminal
# kill focused window
bindsym $mod+Shift+q kill
# For use with xfce4 whisker popup menu in Mint XFCE:
bindsym $mod+d exec xfce4-popup-whiskermenu
# Lock the screen
bindsym $mod+l exec i3lock
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
# bindsym $mod+d focus child
# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
#-old-#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'
bindsym $mod+Shift+e exec xfce4-session-logout
# class border backgr. text indicator child_border
client.focused #ff33cc #ff33cc #ffffff #ff33cc #ff33cc
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
client.unfocused #333333 #222222 #888888 #292d2e #222222
client.urgent #ff0000 #ff0000 #ffffff #ff0000 #ff0000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
#-old-#bar {
#-old-# status_command i3status
#-old-#}
exec --no-startup-id nitrogen --restore
exec --no-startup-id synergy

37
legacy/initialSetup.sh Executable file
View File

@ -0,0 +1,37 @@
#!/bin/bash
# Install packages which are frequently used by me
if [[ $(command -v dnf) == 0 ]]; then
sudo -i dnf install tmux git gnupg2 openssh
elif [[ $(command -v pacman) == 0 ]]; then
sudo pacman -S tmux git gnupg openssh
fi
HERE=$(pwd)
# Set up tmux
ln -s $HERE/tmux/tmux.conf ~/.tmux.conf
# Get the tmux-plugin-manager
mkdir -p ~/.tmux/plugins
git clone https://github.com/tmux-plugins/tpm.git ~/.tmux/plugins/tpm
# Set up redshift
mkdir -p ~/.config/redshift
mkdir -p ~/.config/autostart
ln -s $HERE/redshift/redshift.conf ~/.config/redshift/redshift.conf
# Set up gnupg things
mkdir -p ~/.gnupg
ln -s $HERE/gnupg/gpg.conf ~/.gnupg/gpg.conf
ln -s $HERE/gnupg/gpg-agent.conf ~/.gnupg/gpg-agent.conf
ln -s $HERE/gnupg/sshcontrol ~/.gnupg/sshcontrol
ln -s $HERE/gnupg/gnupg_agent ~/.gnupg/gnupg_agent
git config --global gpg.program gpg2
git config --global user.name jdreichmann
git config --global user.email johanna.reichmann@delta-industries.de
git config --global user.signingkey 03624C433676E465
git config --global commit.gpgsign true
git config --global alias.logs "log --show-signature"

4
legacy/keybindings.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
rm ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
ln -s `pwd`/xfce4-keyboard-shortcuts.xml ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

View File

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-keyboard-shortcuts" version="1.0">
<property name="commands" type="empty">
<property name="default" type="empty">
<property name="&lt;Alt&gt;F1" type="empty"/>
<property name="&lt;Alt&gt;F2" type="empty">
<property name="startup-notify" type="empty"/>
</property>
<property name="&lt;Alt&gt;F3" type="empty">
<property name="startup-notify" type="empty"/>
</property>
<property name="&lt;Primary&gt;&lt;Alt&gt;Delete" type="empty"/>
<property name="&lt;Control&gt;&lt;Alt&gt;Escape" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;l" type="empty"/>
<property name="XF86Display" type="empty"/>
<property name="&lt;Super&gt;p" type="empty"/>
<property name="&lt;Primary&gt;Escape" type="empty"/>
<property name="XF86LogOff" type="empty"/>
<property name="Print" type="empty"/>
<property name="&lt;Alt&gt;Print" type="empty"/>
<property name="XF86WWW" type="empty"/>
<property name="XF86Mail" type="empty"/>
<property name="XF86Calendar" type="empty"/>
<property name="XF86Memo" type="empty"/>
<property name="XF86Terminal" type="empty"/>
<property name="XF86Explorer" type="empty"/>
<property name="XF86AudioMedia" type="empty"/>
<property name="XF86AudioPlay" type="empty"/>
<property name="XF86AudioPrev" type="empty"/>
<property name="XF86AudioNext" type="empty"/>
<property name="XF86Calculator" type="empty"/>
</property>
<property name="custom" type="empty">
<property name="XF86Explorer" type="string" value="Thunar"/>
<property name="&lt;Super&gt;p" type="string" value="xfce4-display-settings --minimal"/>
<property name="&lt;Primary&gt;Escape" type="string" value="xfdesktop --menu"/>
<property name="XF86LogOff" type="string" value="xfce4-session-logout"/>
<property name="&lt;Alt&gt;Print" type="string" value="xfce4-screenshooter -w"/>
<property name="XF86Terminal" type="string" value="xfce4-terminal"/>
<property name="&lt;Alt&gt;F3" type="empty">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="XF86AudioNext" type="string" value="pragha --next"/>
<property name="XF86AudioPrev" type="string" value="pragha --prev"/>
<property name="XF86AudioMedia" type="string" value="pragha"/>
<property name="XF86Memo" type="string" value="xfce4-notes"/>
<property name="&lt;Control&gt;&lt;Alt&gt;Escape" type="string" value="xkill"/>
<property name="XF86AudioPlay" type="string" value="pragha --pause"/>
<property name="Print" type="string" value="xfce4-screenshooter -f"/>
<property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/>
<property name="XF86Mail" type="string" value="exo-open --launch MailReader"/>
<property name="XF86WWW" type="string" value="exo-open --launch WebBrowser"/>
<property name="XF86Calculator" type="string" value="galculator"/>
<property name="XF86Calendar" type="string" value="orage"/>
<property name="override" type="bool" value="true"/>
<property name="&lt;Alt&gt;F2" type="string" value="xfce4-appfinder">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="Super_L" type="string" value="xfce4-popup-whiskermenu"/>
<property name="&lt;Super&gt;l" type="string" value="xflock4"/>
</property>
</property>
<property name="xfwm4" type="empty">
<property name="default" type="empty">
<property name="&lt;Alt&gt;Insert" type="empty"/>
<property name="Escape" type="empty"/>
<property name="Left" type="empty"/>
<property name="Right" type="empty"/>
<property name="Up" type="empty"/>
<property name="Down" type="empty"/>
<property name="&lt;Alt&gt;Tab" type="empty"/>
<property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="empty"/>
<property name="&lt;Alt&gt;Delete" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Down" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Left" type="empty"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Down" type="empty"/>
<property name="&lt;Alt&gt;F4" type="empty"/>
<property name="&lt;Alt&gt;F6" type="empty"/>
<property name="&lt;Alt&gt;F7" type="empty"/>
<property name="&lt;Alt&gt;F8" type="empty"/>
<property name="&lt;Alt&gt;F9" type="empty"/>
<property name="&lt;Alt&gt;F10" type="empty"/>
<property name="&lt;Alt&gt;F11" type="empty"/>
<property name="&lt;Alt&gt;F12" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;End" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Home" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_1" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_2" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_3" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_4" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_5" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_6" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_7" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_8" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_9" type="empty"/>
<property name="&lt;Alt&gt;space" type="empty"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Up" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Right" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;d" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Up" type="empty"/>
<property name="&lt;Super&gt;Tab" type="empty"/>
<property name="&lt;Primary&gt;F1" type="empty"/>
<property name="&lt;Primary&gt;F2" type="empty"/>
<property name="&lt;Primary&gt;F3" type="empty"/>
<property name="&lt;Primary&gt;F4" type="empty"/>
<property name="&lt;Primary&gt;F5" type="empty"/>
<property name="&lt;Primary&gt;F6" type="empty"/>
<property name="&lt;Primary&gt;F7" type="empty"/>
<property name="&lt;Primary&gt;F8" type="empty"/>
<property name="&lt;Primary&gt;F9" type="empty"/>
<property name="&lt;Primary&gt;F10" type="empty"/>
<property name="&lt;Primary&gt;F11" type="empty"/>
<property name="&lt;Primary&gt;F12" type="empty"/>
</property>
<property name="custom" type="empty">
<property name="Up" type="string" value="up_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_8" type="string" value="move_window_workspace_8_key"/>
<property name="Left" type="string" value="left_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_6" type="string" value="move_window_workspace_6_key"/>
<property name="&lt;Alt&gt;Insert" type="string" value="add_workspace_key"/>
<property name="&lt;Alt&gt;Tab" type="string" value="cycle_windows_key"/>
<property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="string" value="cycle_reverse_windows_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_7" type="string" value="move_window_workspace_7_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Right" type="string" value="right_workspace_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="string" value="move_window_right_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Up" type="string" value="up_workspace_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Home" type="string" value="move_window_prev_workspace_key"/>
<property name="&lt;Alt&gt;F4" type="string" value="close_window_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="string" value="move_window_left_key"/>
<property name="&lt;Alt&gt;F6" type="string" value="stick_window_key"/>
<property name="&lt;Alt&gt;F12" type="string" value="above_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Down" type="string" value="down_workspace_key"/>
<property name="&lt;Alt&gt;F8" type="string" value="resize_window_key"/>
<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>
<property name="Escape" type="string" value="cancel_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;End" type="string" value="move_window_next_workspace_key"/>
<property name="&lt;Alt&gt;F11" type="string" value="fullscreen_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="string" value="move_window_up_key"/>
<property name="Right" type="string" value="right_key"/>
<property name="Down" type="string" value="down_key"/>
<property name="&lt;Alt&gt;F7" type="string" value="move_window_key"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Down" type="string" value="lower_window_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Left" type="string" value="left_workspace_key"/>
<property name="&lt;Alt&gt;space" type="string" value="popup_menu_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_1" type="string" value="move_window_workspace_1_key"/>
<property name="&lt;Alt&gt;Delete" type="string" value="del_workspace_key"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Up" type="string" value="raise_window_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_2" type="string" value="move_window_workspace_2_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_3" type="string" value="move_window_workspace_3_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_4" type="string" value="move_window_workspace_4_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_5" type="string" value="move_window_workspace_5_key"/>
<property name="override" type="bool" value="true"/>
<property name="&lt;Super&gt;Left" type="string" value="tile_left_key"/>
<property name="&lt;Super&gt;Right" type="string" value="tile_right_key"/>
<property name="&lt;Shift&gt;&lt;Super&gt;Left" type="string" value="tile_up_left_key"/>
<property name="&lt;Shift&gt;&lt;Super&gt;Right" type="string" value="tile_up_right_key"/>
<property name="&lt;Primary&gt;&lt;Super&gt;Left" type="string" value="tile_down_left_key"/>
<property name="&lt;Primary&gt;&lt;Super&gt;Right" type="string" value="tile_down_right_key"/>
<property name="&lt;Super&gt;d" type="string" value="show_desktop_key"/>
<property name="&lt;Super&gt;1" type="string" value="workspace_1_key"/>
<property name="&lt;Super&gt;2" type="string" value="workspace_2_key"/>
<property name="&lt;Super&gt;3" type="string" value="workspace_3_key"/>
<property name="&lt;Super&gt;4" type="string" value="workspace_4_key"/>
<property name="&lt;Super&gt;5" type="string" value="workspace_5_key"/>
<property name="&lt;Super&gt;6" type="string" value="workspace_6_key"/>
<property name="&lt;Super&gt;Up" type="string" value="maximize_window_key"/>
<property name="&lt;Super&gt;Down" type="string" value="hide_window_key"/>
</property>
</property>
<property name="providers" type="array">
<value type="string" value="xfwm4"/>
<value type="string" value="commands"/>
</property>
</channel>

31
local.yml Normal file
View File

@ -0,0 +1,31 @@
---
all:
hosts:
local:
ansible_host: localhost
ansible_connection: local
vars:
ansible_user: transcaffeine
ansible_become_user: root
ansible_become_method: sudo
gnupg:
hosts:
local:
redshift:
hosts:
local:
tmux:
hosts:
local:
vim:
hosts:
local:
git:
hosts:
local:

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
ln -fs themes/themes/monokai_pro.toml .config/alacritty/current-theme.toml
touch ~/.config/alacritty/alacritty.toml

View File

@ -1,3 +0,0 @@
#!/bin/bash
makoctl set-mode system-dark

View File

@ -1,7 +0,0 @@
#!/bin/bash
ln -fs dark-mode ~/.config/sway/current-theme
SWAYSOCK="/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock"
swaymsg -s $SWAYSOCK reload

View File

@ -1,7 +0,0 @@
#!/bin/bash
ln -fs dark-mode.conf ~/.config/tmux/current-theme.conf
if tmux list-sessions; then
tmux source ~/.tmux.conf
fi

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
ln -fs themes/themes/catppuccin_latte.toml .config/alacritty/current-theme.toml
touch ~/.config/alacritty/alacritty.toml

View File

@ -1,3 +0,0 @@
#!/bin/bash
makoctl set-mode system-light

View File

@ -1,7 +0,0 @@
#!/bin/bash
ln -fs light-mode ~/.config/sway/current-theme
SWAYSOCK="/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock"
swaymsg -s $SWAYSOCK reload

View File

@ -1,7 +0,0 @@
#!/bin/bash
ln -fs light-mode.conf ~/.config/tmux/current-theme.conf
if tmux list-sesions; then
tmux source ~/.tmux.conf
fi

7
redshift.yml Normal file
View File

@ -0,0 +1,7 @@
---
- name: Sets up redshift and creates an autostart file
hosts: clients
become: true
roles:
- redshift

14
roles/arch/README.md Normal file
View File

@ -0,0 +1,14 @@
# ArchLinux role
Bootstraps an arch linux install to a given device. The whole block device is wiped in the process!
## Requirements:
`pacman -Syu parted cryptsetup wipefs lsblk blkid mkfs.[fat|ext4|...]`
Collections:
- `community.general`
- `community.crypto`
- `community.posix`

View File

@ -0,0 +1,30 @@
---
arch_device: ~
arch_hostname: cookie
arch_part_label_base: "{{ arch_hostname }}"
arch_part_efi_size: "512MiB"
arch_part_root_size: "95%"
arch_luks_device: "{{ arch_device }}2"
arch_luks_passphrase: "super_secure!"
arch_luks_container_name: "{{ arch_hostname }}"
arch_lvm_name: "{{ arch_part_label_base }}"
arch_lvm_volumes:
- name: "swap"
size: "16G"
fstype: swap
- name: "home"
size: "40G"
fstype: ext4
mountpoint: "/home"
- name: "cache"
size: "20G"
fstype: ext4
mountpoint: "/var/cache"
- name: "root"
size: "+90%FREE"
fstype: ext4
mountpoint: "/"

View File

@ -0,0 +1,107 @@
---
- name: Warn user that the blockdevice will be wiped
debug:
msg: "Warning! Continueing will wipe {{ arch_device }}!"
- name: Give user the ability to abort
pause:
prompt: "You can safely abort now if you want, or continue and wipe {{ arch_device }}"
- name: Create empty GPT
community.general.parted:
device: "{{ arch_device }}"
label: gpt
name: "{{ arch_part_label_base }}"
- name: Create EFI system partition
community.general.parted:
device: "{{ arch_device }}"
state: present
part_start: "0%"
part_end: "{{ arch_part_efi_size }}"
number: 1
label: gpt
name: "{{ arch_part_label_base }}-efi"
fs_type: fat32
- name: Create partition for luks
community.general.parted:
device: "{{ arch_device }}"
state: present
part_start: "{{ arch_part_efi_size }}"
part_end: "{{ arch_part_root_size }}"
number: 2
label: gpt
name: "{{ arch_part_label_base }}-main"
- name: Create luks device on main partition
community.crypto.luks_device:
device: "{{ arch_luks_device }}"
passphrase: "{{ arch_luks_passphrase }}"
state: present
- name: Open luks device
community.crypto.luks_device:
device: "{{ arch_luks_device }}"
passphrase: "{{ arch_luks_passphrase }}"
state: "opened"
name: "{{ arch_luks_container_name }}"
- name: Wipe volume group if it existed
community.general.lvg:
vg: "{{ arch_lvm_name }}"
force: yes
state: absent
- name: Create volume group
community.general.lvg:
vg: "{{ arch_lvm_name }}"
pvs: "/dev/mapper/{{ arch_luks_container_name }}"
pvresize: yes
- name: Create logical volume for swap and root filesystem
community.general.lvol:
vg: "{{ arch_lvm_name }}"
lv: "{{ item.name }}"
size: "{{ item.size }}"
loop: "{{ arch_lvm_volumes }}"
- name: Create filesystem on efi system partition
community.general.filesystem:
dev: "{{ arch_device }}1"
force: yes
fstype: vfat
opts: -F32
- name: Create filesystems on the volumes
community.general.filesystem:
dev: "/dev/mapper/{{ arch_lvm_name }}-{{ item.name }}"
fstype: "{{ item.fstype }}"
loop: "{{ arch_lvm_volumes }}"
- name: Create mountpoint
file:
path: "/mnt-{{ arch_luks_container_name }}"
state: directory
- name: Mount root partition
command:
cmd: "mount /dev/mapper/{{ arch_lvm_name }}-{{ item.name }} /mnt-{{ arch_luks_container_name }}"
loop: "{{ arch_lvm_volumes | selectattr('mountpoint', 'defined') | selectattr('mountpoint', 'equalto', '/') }}"
- name: Create mountpoints in root partition
file:
path: "/mnt-{{ arch_luks_container_name }}{{ item.mountpoint }}"
state: directory
recurse: yes
loop: "{{ arch_lvm_volumes | selectattr('mountpoint', 'defined') | selectattr('mountpoint', 'ne', '/') + [ { \"mountpoint\": \"/boot\" } ] }}"
- name: Mount efi system partition
command:
cmd: "mount {{ arch_device }}1 /mnt-{{ arch_luks_container_name }}/boot"
- name: Mount additional partitions
command:
cmd: "mount /dev/mapper/{{ arch_lvm_name }}-{{ item.name }} /mnt-{{ arch_luks_container_name }}{{ item.mountpoint }}"
loop: "{{ arch_lvm_volumes | selectattr('mountpoint', 'defined') | selectattr('mountpoint', 'ne', '/') | list }}"

10
roles/arch/tasks/main.yml Normal file
View File

@ -0,0 +1,10 @@
---
- name: Format disks and setup LVM on LUKS
import_tasks: filesystems.yml
#- name: Bootstrap all packages and configure system
# import_tasks: packages.yml
#- name: Configure systemd boot with EFI and LUKS
# import_tasks: bootloader.yml

View File

@ -0,0 +1,9 @@
---
- name: Install additional packages
package:
name: "{{ item }}"
state: present
loop:
- bash
- bash-completion

View File

@ -0,0 +1,15 @@
# General
alias ll='ls -al --color=auto'
alias ls='ls -l --color=auto'
alias nb=man
alias enby=man
alias furryfox=firefox
alias flauschctl=systemctl
# GnuPG2
alias gpg=gpg2

View File

@ -0,0 +1,43 @@
function last_cmd_state {
if [ "$1" == 0 ]; then
echo "\[$(tput setaf 40)\]👍\[$(tput sgr0)\]"
else
if [ "$1" == 127 ]; then
local meaning=" - Not found"
fi
echo "\[$(tput setaf 196)\]👎\\[\$1 "$meaning"\]\[$(tput sgr0)\]"
fi
}
function list_background_tasks {
local jobs_count=$(jobs | wc -l)
local sessions=$(tmux list-sessions 2>/dev/null | wc -l)
local job_info=""
local session_info=""
if [ ! "$jobs_count" == "0" ]; then
job_info="[Jobs: ${jobs_count}]"
fi
if [ ! "$sessions" == "0" ]; then
session_info="[TMux-Sessions: ${sessions}]"
fi
if [ ! "${job_info}${session_info}" == "0" ]; then
echo " \[$(tput setaf 199)\]╟──\[$(tput sgr0)\]${job_info}${session_info}"
fi
}
function show_user_info {
echo "\[$(tput setaf 199)\]═╦═\[$(tput sgr0)\][\[$(tput setaf 21)\]\\u\[$(tput sgr0)\]@\[$(tput setaf 40)\]\\H::\\l\[$(tput sgr0)\]]═[\[$(tput setaf 118)\]\\t\[$(tput sgr0)\]]"
}
function show_location {
echo " \[$(tput setaf 199)\]╟──\[$(tput sgr0)\][\\w]"
}
function last_line {
echo " \[$(tput setaf 199)\]╙─⚧ \[$(tput sgr0)\]"
}
function _prompt_command {
local status="$?"
PS1="$(show_user_info)─[$(last_cmd_state $status)]\n$(list_background_tasks)\n$(show_location)\n$(last_line)"
}

View File

@ -0,0 +1,4 @@
#!/bin/bash
alias moshy='function _moshy(){ mosh "$1" -- tmux at; };_moshy'

View File

View File

@ -0,0 +1,25 @@
---
git_user: your-username
git_email: your-email@example.com
git_signkey:
git_signingkey:
git_do_sign: false
git_merge_autostash: true
git_rebase_autostash: true
git_pull_rebase: true
git_pull_ff_only: true
git_default_branch: main
git_user_home: "/home/{{ git_system_user }}"
git_system_user: "{{ git_user }}"
git_system_group: "{{ git_system_user }}"
git_gpg_program: ~
git_aliases: []
git_credentials: []
git_config_preferred_editor: vim

9
roles/git/tasks/main.yml Normal file
View File

@ -0,0 +1,9 @@
---
- name: Template .gitconfig
template:
src: gitconfig.j2
dest: "{{ git_user_home }}/.gitconfig"
owner: "{{ git_system_user }}"
group: "{{ git_system_group }}"
mode: 0660

View File

@ -0,0 +1,49 @@
# This is Git's per-user configuration file,
# this file is managed by ansible.
{% if git_do_sign %}
[gpg]
program = {{ git_gpg_program }}
{% endif %}
[user]
name = "{{ git_author }}"
email = {{ git_email }}
{% if git_do_sign %}
signingkey = {{ git_signingkey }}
{% endif %}
[commit]
{% if git_do_sign %}
gpgsign = true
{% endif %}
[alias]
{% for alias in git_aliases %}
{{ alias.name }} = {{ alias.cmd }}
{% endfor %}
[pull]
rebase = {{ git_pull_rebase|bool|lower }}
{% if git_pull_ff_only|bool %}
ff = only
{% endif %}
[rebase]
autostash = {{ git_rebase_autostash|bool|lower }}
[merge]
autostash = {{ git_merge_autostash|bool|lower }}
[init]
defaultBranch = {{ git_default_branch }}
[core]
editor = {{ git_config_preferred_editor }}
{% for cred in git_credentials %}
[credential "{{ cred.remote_url }}"]
username = {{ cred.username }}
{% if cred.helper is defined %}
helper = {{ cred.helper }}
{% endif %}
{% endfor %}

View File

@ -0,0 +1,10 @@
# How long the PIN gets cached (max)
gpg_cache_ttl: 300
gpg_cache_ttl_ssh: 300
# Array of all keygrips to pass to sshcontrol
gpg_keygrips: []
gpg_folder: "~/.gnupg"
gpg_user: "{{ ansible_user }}"

View File

@ -0,0 +1,63 @@
---
# Installs GnuPG2 and templates the configs
- name: Install gnupg (RedHat*)
package:
name: gnupg2
state: latest
become: yes
become_user: root
become_method: sudo
when: ansible_os_family == "RedHat"
ignore_errors: true
- name: Install gnupg (Arch)
package:
name: gnupg
state: latest
when: ansible_os_family == "Archlinux"
- name: Configure gpg.conf (behaviour of gpg)
template:
src: gpg.conf.j2
dest: "{{ gpg_folder }}/gpg.conf"
- name: Configure gpg-agent.conf (agent configuration)
template:
src: gpg-agent.conf.j2
dest: "{{ gpg_folder }}/gpg-agent.conf"
- name: Configure ssh-control (in order for gpg-agent to act as ssh-agent)
template:
src: sshcontrol.j2
dest: "{{ gpg_folder }}/sshcontrol"
- name: Copy gnupg_agent script, which makes gpg-agent responsible for ssh-auth
template:
src: gnupg_agent.j2
dest: "{{ gpg_folder }}/gnupg_agent"
mode: 0700
- name: Ensure gnupg_agent skript is included in .bashrc so SSH uses gpg-agent
blockinfile:
path: "~/.bashrc"
insertafter: "\[\[ \$- != \*i\* \]\] && return"
line: |
# load script telling SSH to use the gpg agent
source "{{ gpg_folder }}"/gnupg_agent
state: present
- name: Download own pubkey
get_url:
url: "https://git.finallycoffee.eu/{{ gpg_user }}/about/raw/branch/master/pubkey.asc"
dest: "~/{{ gpg_user }}.pub"
- name: Import own pubkey and set owner-trust
command:
cmd: |
gpg2 --no-tty --command-fd 0 --import ~/{{ gpg_user }}.pub << EOF
trust
5
quit
EOF

View File

@ -0,0 +1,14 @@
#!/bin/bash
rc=$(pgrep gpg-agent)
if [ "$rc" != 0 ]; then
export GPG_AGENT_INFO
export SSH_AUTH_SOCK
export SSH_AGENT_PID
else
eval $(gpg-agent --daemon)
fi
gpg-connect-agent /bye
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)

View File

@ -0,0 +1,7 @@
default-cache-ttl {{ gpg_cache_ttl }}
default-cache-ttl-ssh {{ gpg_cache_ttl_ssh }}
max-cache-ttl {{ gpg_cache_ttl }}
max-cache-ttl-ssh {{ gpg_cache_ttl_ssh }}
no-allow-external-cache
enable-ssh-support
ignore-cache-for-signing

View File

@ -0,0 +1,11 @@
cert-digest-algo SHA256
no-emit-version
no-comments
personal-cipher-preferences AES AES256 AES192 CAST5
personal-digest-preferences SHA256 SHA512 SHA384 SHA224
ignore-time-conflict
allow-freeform-uid
with-fingerprint
keyid-format 0xlong
keyserver hkps://hkps.pool.sks-keyservers.net
keyserver-options no-honor-keyserver-url

View File

@ -0,0 +1,14 @@
# List of allowed ssh keys. Only keys present in this file are used
# in the SSH protocol. The ssh-add tool may add new entries to this
# file to enable them; you may also add them manually. Comment
# lines, like this one, as well as empty lines are ignored. Lines do
# have a certain length limit but this is not serious limitation as
# the format of the entries is fixed and checked by gpg-agent. A
# non-comment line starts with optional white spaces, followed by the
# keygrip of the key given as 40 hex digits, optionally followed by a
# caching TTL in seconds, and another optional field for arbitrary
# flags. Prepend the keygrip with an '!' mark to disable it.
{% for keygrip in gpg_keygrips %}
{{ keygrip }}
{% endfor %}

19
roles/i3/tasks/main.yml Normal file
View File

@ -0,0 +1,19 @@
---
- name: Ensure i3 is installed
package:
name: i3
state: present
ignore_errors: yes
- name: Ensure folder for configuration exists
file:
path: ~/.config/i3
state: directory
recurse: yes
- name: Template config into configuration directory
template:
src: config.j2
dest: ~/.config/i3/config

View File

@ -0,0 +1,147 @@
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesnt scale on retina/hidpi displays.
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec xfce4-terminal
# kill focused window
bindsym $mod+Shift+q kill
# For use with xfce4 whisker popup menu in Mint XFCE:
bindsym $mod+d exec xfce4-popup-whiskermenu
# Lock the screen
bindsym $mod+l exec xflock4
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
# bindsym $mod+d focus child
# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
#-old-#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'
bindsym $mod+Shift+e exec xfce4-session-logout
# class border backgr. text indicator child_border
client.focused #ff33cc #ff33cc #ffffff #ff33cc #ff33cc
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
client.unfocused #333333 #222222 #888888 #292d2e #222222
client.urgent #ff0000 #ff0000 #ffffff #ff0000 #ff0000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
exec --no-startup-id nitrogen --restore
exec --no-startup-id synergy

View File

@ -0,0 +1,14 @@
---
- name: Install network manager
- name: Template config for default network
- name: Copy KIT VPN configuration
- name: Copy flauschekatze.space VPN configuration
- name: Copy FFKA VLAN config
- name: Copy int.finallycofffee.eu VPN/VLAN config

View File

@ -0,0 +1,23 @@
---
- name: Install package
package:
name: pass
state: present
- name: Initialise password store
command:
cmd: "pass init {{ passwordstore_id }}"
- name: Set password store git upstream
command:
cmd: "pass git remote set origin ssh://git@git.finallycoffee.eu:8022/{{ ansible_user }}/password-store.git"
- name: Fetch upstream password store
command:
cmd: "pass git fetch --all"
- name: Set master to upstream master
command:
cmd: "pass git checkout -B master origin/master"

View File

@ -0,0 +1,23 @@
---
- name: Install redshift
package:
name: redshift
state: present
ignore_errors: true
- name: Ensure .config folder for redshift exists
file:
path: ~/.config/redshift
state: directory
- name: Template redshift config
template:
src: redshift.conf.j2
dest: ~/.config/redshift/redshift.conf
- name: Template redshift autostart file
template:
src: redshift-gtk.desktop.j2
dest: ~/.config/autostart/redshift-gtk.desktop

View File

@ -0,0 +1,12 @@
[Desktop Entry]
Version=1.0
Name=Redshift
Exec=redshift-gtk
Icon=redshift
Terminal=false
Type=Application
Categories=Utility;
StartupNotify=true
Hidden=false
X-GNOME-Autostart-enabled=true

View File

@ -0,0 +1,8 @@
[redshift]
location-provider=manual
temp-night=2500K
[manual]
lat=49.0091
lon=8.3799

View File

21
roles/tmux/tasks/main.yml Normal file
View File

@ -0,0 +1,21 @@
---
- name: Ensure tmux is installed
package:
name: tmux
state: present
become: yes
become_user: root
become_method: sudo
ignore_errors: true
- name: Template config file into home folder
template:
src: tmux.conf.j2
dest: ~/.tmux.conf
- name: Template controller config file to home folder
template:
src: controller.tmux.conf.j2
dest: ~/.controller.tmux.conf

View File

@ -0,0 +1,39 @@
# Reload controller config with "r" key
unbind t
bind t source-file ~/.controller.tmux.conf \; display-message "Controller config reloaded..."
# No automatic renaming of windows
set -g automatic-rename off
# Enable 256-color terminal
set -g default-terminal "screen-256color"
# Set titles to be informative
set set-titles on
set set-titles-string "tmux: [#H] [#S] [#W:#D #I:#P]"
# Change colors on the pane seperators
set pane-border-fg colour237
set pane-active-border-fg colour27
# Tweak currently highlighted window ('active')
setw window-status-current-fg colour255
setw window-status-current-bg colour27
setw window-status-current-format " #F[#W] "
setw window-status-current-attr none
# Tweak overview of windows
setw window-status-format " #F[#I][#W] "
setw window-status-bg colour237
setw window-status-fg colour255
# Tweak status line design
set status-bg colour237
set status-fg colour27
set status-justify centre
set status-left " [#H] [#S] "
set status-left-length 100
set status-right ' [#(curl https://wttr.in/berlin?format=3)] [%Y-%m-%d %H:%M.%S] '
# Refresh status bar every second
set status-interval 1

View File

@ -0,0 +1,46 @@
# vi:syntax=tmux
# Reload the config with the "r" key
bind r source-file ~/.tmux.conf \; display-message "Config reloaded..."
# No automatic renaming of windows
set automatic-rename off
# Enable 256-color terminal
set default-terminal "screen-256color"
# Set titles to be informative
set set-titles on
set set-titles-string "tmux: [#H] [#S] [#W:#D #I:#P]"
# Change pane colors
set -g pane-border-style fg=colour237
set -g pane-active-border-style fg=colour199
# Tweak currently active window
setw -g window-status-current-style bg=colour199,fg=colour255,none
setw -g window-status-current-format " #F[#W] "
# Tweak last active window style
setw -g window-status-last-style fg=colour255,bg=colour238,none
# Tweak display of window overview
setw -g window-status-format " #F[#W][#I] "
setw -g window-status-style bg=colour233,fg=colour255,none
# Tweak status line design
set -g status-style bg=colour235,fg=colour199
set status-justify centre
set status-left " [#H] [#S] "
set status-left-length 100
set status-right '[%Y-%m-%d %H:%M.%S]'
# Refresh status bar every 2s
set status-interval 2
# Set some helpful limits & modes
set -g mouse off
set -g history-limit 50000
# Make tmux resize based on smallest client actually viewing the window, not just attached
setw -g aggressive-resize on
# Initialize tmux-plugin-manager
run '~/.tmux/plugins/tpm/tpm'

382
roles/vim/files/kuroi.vim Normal file
View File

@ -0,0 +1,382 @@
" File: kuroi.vim
" Maintainer: aonemd
" URL: https://github.com/aonemd/kuroi.vim
" Modified: 04 April 2019 02:38 PM EET
" License: MIT
" Initialisation:"{{{
" ----------------------------------------------------------------------------
hi clear
if exists("syntax_on")
syntax reset
endif
let s:style = &background
let g:colors_name = "kuroi"
"}}}
" GUI And Cterm Palettes:"{{{
" ----------------------------------------------------------------------------
let s:palette = {'gui' : {} , 'cterm' : {}}
let s:gui_background = "#1b1918"
let s:gui_selection = "#373b41"
let s:gui_line = "#282a2e"
let s:gui_comment = "#707880"
let s:palette.gui.background = { 'dark' : s:gui_background , 'light' : "#e4e4e4" }
let s:palette.gui.foreground = { 'dark' : "#c5c8c6" , 'light' : "#000000" }
let s:palette.gui.selection = { 'dark' : s:gui_selection , 'light' : "#bcbcbc" }
let s:palette.gui.line = { 'dark' : s:gui_line , 'light' : "#d0d0d0" }
let s:palette.gui.comment = { 'dark' : s:gui_comment , 'light' : "#5f5f5f" }
let s:palette.gui.red = { 'dark' : "#d75f87" , 'light' : "#5f0000" }
let s:palette.gui.orange = { 'dark' : "#d78700" , 'light' : "#875f00" }
let s:palette.gui.yellow = { 'dark' : "#ffd700" , 'light' : "#5f5f00" }
let s:palette.gui.green = { 'dark' : "#5faf5f" , 'light' : "#005f00" }
let s:palette.gui.aqua = { 'dark' : "#87afd7" , 'light' : "#005f5f" }
let s:palette.gui.blue = { 'dark' : "#5fafff" , 'light' : "#00005f" }
let s:palette.gui.purple = { 'dark' : "#8787ff" , 'light' : "#5f005f" }
let s:palette.gui.window = { 'dark' : "#303030" , 'light' : "#9e9e9e" }
let s:palette.gui.darkcolumn = { 'dark' : "#1c1c1c" , 'light' : "#808080" }
let s:palette.gui.addbg = { 'dark' : "#5F875F" , 'light' : "#d7ffd7" }
let s:palette.gui.addfg = { 'dark' : "#d7ffaf" , 'light' : "#005f00" }
let s:palette.gui.changebg = { 'dark' : "#5f5faf" , 'light' : "#d7d7ff" }
let s:palette.gui.changefg = { 'dark' : "#d7d7ff" , 'light' : "#5f005f" }
let s:palette.gui.delbg = { 'dark' : "#cc6666" , 'light' : "#ffd7d7" }
let s:palette.gui.darkblue = { 'dark' : "#00005f" , 'light' : "#d7ffd7" }
let s:palette.gui.darkcyan = { 'dark' : "#005f5f" , 'light' : "#005f00" }
let s:palette.gui.darkred = { 'dark' : "#5f0000" , 'light' : "#d7d7ff" }
let s:palette.gui.darkpurple = { 'dark' : "#5f005f" , 'light' : "#5f005f" }
let s:palette.gui.gray = { 'dark' : "#262626" , 'light' : "#d0d0d0" }
let s:palette.gui.statusline = { 'dark' : "#6c6c6c" , 'light' : "#585858" }
let s:palette.gui.statuslinenc = { 'dark' : "#4e4e4e" , 'light' : "#3a3a3a" }
let s:palette.gui.gitgutteradd = { 'dark' : "#5faf5f" , 'light' : "#5faf5f" }
let s:palette.gui.gitgutterchg = { 'dark' : "#d78700" , 'light' : "#d78700" }
let s:palette.gui.gitgutterdlt = { 'dark' : "#d75f87" , 'light' : "#d75f87" }
let s:cterm_foreground = "250"
let s:cterm_selection = "237"
let s:cterm_line = "235"
let s:cterm_comment = "243"
let s:palette.cterm.background = { 'dark' : "0" , 'light' : "254" }
let s:palette.cterm.foreground = { 'dark' : s:cterm_foreground , 'light' : "16" }
let s:palette.cterm.window = { 'dark' : "236" , 'light' : "247" }
let s:palette.cterm.selection = { 'dark' : s:cterm_selection , 'light' : "250" }
let s:palette.cterm.line = { 'dark' : s:cterm_line , 'light' : "252" }
let s:palette.cterm.comment = { 'dark' : s:cterm_comment , 'light' : "59" }
let s:palette.cterm.red = { 'dark' : "168" , 'light' : "52" }
let s:palette.cterm.orange = { 'dark' : "172" , 'light' : "94" }
let s:palette.cterm.yellow = { 'dark' : "220" , 'light' : "58" }
let s:palette.cterm.green = { 'dark' : "71" , 'light' : "22" }
let s:palette.cterm.aqua = { 'dark' : "110" , 'light' : "23" }
let s:palette.cterm.blue = { 'dark' : "75" , 'light' : "17" }
let s:palette.cterm.purple = { 'dark' : "105" , 'light' : "53" }
let s:palette.cterm.darkcolumn = { 'dark' : "234" , 'light' : "244" }
let s:palette.cterm.addbg = { 'dark' : "65" , 'light' : "194" }
let s:palette.cterm.addfg = { 'dark' : "193" , 'light' : "22" }
let s:palette.cterm.changebg = { 'dark' : "61" , 'light' : "189" }
let s:palette.cterm.changefg = { 'dark' : "189" , 'light' : "53" }
let s:palette.cterm.delbg = { 'dark' : "167" , 'light' : "224" }
let s:palette.cterm.darkblue = { 'dark' : "17" , 'light' : "194" }
let s:palette.cterm.darkcyan = { 'dark' : "24" , 'light' : "22" }
let s:palette.cterm.darkred = { 'dark' : "52" , 'light' : "189" }
let s:palette.cterm.darkpurple = { 'dark' : "53" , 'light' : "53" }
let s:palette.cterm.gray = { 'dark' : "235" , 'light' : "252" }
let s:palette.cterm.statusline = { 'dark' : "242" , 'light' : "240" }
let s:palette.cterm.statuslinenc = { 'dark' : "239" , 'light' : "237" }
let s:palette.cterm.gitgutteradd = { 'dark' : "71" , 'light' : "71" }
let s:palette.cterm.gitgutterchg = { 'dark' : "172" , 'light' : "172" }
let s:palette.cterm.gitgutterdlt = { 'dark' : "168" , 'light' : "168" }
"}}}
" Formatting Options:"{{{
" ----------------------------------------------------------------------------
let s:none = "NONE"
let s:t_none = "NONE"
let s:n = "NONE"
let s:c = ",undercurl"
let s:r = ",reverse"
let s:s = ",standout"
let s:b = ",bold"
let s:u = ",underline"
let s:i = ",italic"
"}}}
" Highlighting Primitives:"{{{
" ----------------------------------------------------------------------------
function! s:build_prim(hi_elem, field)
" Given a:hi_elem = bg, a:field = comment
let l:vname = "s:" . a:hi_elem . "_" . a:field " s:bg_comment
let l:gui_assign = "gui".a:hi_elem."=".s:palette.gui[a:field][s:style] " guibg=...
let l:cterm_assign = "cterm".a:hi_elem."=".s:palette.cterm[a:field][s:style] " ctermbg=...
exe "let " . l:vname . " = ' " . l:gui_assign . " " . l:cterm_assign . "'"
endfunction
let s:bg_none = ' guibg=NONE ctermbg=NONE'
call s:build_prim('bg', 'foreground')
call s:build_prim('bg', 'background')
call s:build_prim('bg', 'selection')
call s:build_prim('bg', 'line')
call s:build_prim('bg', 'comment')
call s:build_prim('bg', 'red')
call s:build_prim('bg', 'orange')
call s:build_prim('bg', 'yellow')
call s:build_prim('bg', 'green')
call s:build_prim('bg', 'aqua')
call s:build_prim('bg', 'blue')
call s:build_prim('bg', 'purple')
call s:build_prim('bg', 'window')
call s:build_prim('bg', 'darkcolumn')
call s:build_prim('bg', 'addbg')
call s:build_prim('bg', 'addfg')
call s:build_prim('bg', 'changebg')
call s:build_prim('bg', 'changefg')
call s:build_prim('bg', 'delbg')
call s:build_prim('bg', 'darkblue')
call s:build_prim('bg', 'darkcyan')
call s:build_prim('bg', 'darkred')
call s:build_prim('bg', 'darkpurple')
call s:build_prim('bg', 'statusline')
call s:build_prim('bg', 'statuslinenc')
let s:fg_none = ' guifg=NONE ctermfg=NONE'
call s:build_prim('fg', 'foreground')
call s:build_prim('fg', 'background')
call s:build_prim('fg', 'selection')
call s:build_prim('fg', 'line')
call s:build_prim('fg', 'comment')
call s:build_prim('fg', 'red')
call s:build_prim('fg', 'orange')
call s:build_prim('fg', 'yellow')
call s:build_prim('fg', 'green')
call s:build_prim('fg', 'aqua')
call s:build_prim('fg', 'blue')
call s:build_prim('fg', 'purple')
call s:build_prim('fg', 'window')
call s:build_prim('fg', 'darkcolumn')
call s:build_prim('fg', 'addbg')
call s:build_prim('fg', 'addfg')
call s:build_prim('fg', 'changebg')
call s:build_prim('fg', 'changefg')
call s:build_prim('fg', 'darkblue')
call s:build_prim('fg', 'darkcyan')
call s:build_prim('fg', 'darkred')
call s:build_prim('fg', 'darkpurple')
call s:build_prim('fg', 'gray')
call s:build_prim('fg', 'gitgutteradd')
call s:build_prim('fg', 'gitgutterchg')
call s:build_prim('fg', 'gitgutterdlt')
exe "let s:fmt_none = ' gui=NONE". " cterm=NONE". " term=NONE" ."'"
exe "let s:fmt_bold = ' gui=NONE".s:b. " cterm=NONE".s:b. " term=NONE".s:b ."'"
exe "let s:fmt_bldi = ' gui=NONE".s:b. " cterm=NONE".s:b. " term=NONE".s:b ."'"
exe "let s:fmt_undr = ' gui=NONE".s:u. " cterm=NONE".s:u. " term=NONE".s:u ."'"
exe "let s:fmt_undb = ' gui=NONE".s:u.s:b. " cterm=NONE".s:u.s:b. " term=NONE".s:u.s:b."'"
exe "let s:fmt_undi = ' gui=NONE".s:u. " cterm=NONE".s:u. " term=NONE".s:u ."'"
exe "let s:fmt_curl = ' gui=NONE".s:c. " cterm=NONE".s:c. " term=NONE".s:c ."'"
exe "let s:fmt_ital = ' gui=NONE".s:i. " cterm=NONE".s:i. " term=NONE".s:i ."'"
exe "let s:fmt_stnd = ' gui=NONE".s:s. " cterm=NONE".s:s. " term=NONE".s:s ."'"
exe "let s:fmt_revr = ' gui=NONE".s:r. " cterm=NONE".s:r. " term=NONE".s:r ."'"
exe "let s:fmt_revb = ' gui=NONE".s:r.s:b. " cterm=NONE".s:r.s:b. " term=NONE".s:r.s:b."'"
exe "let s:sp_none = ' guisp=". s:none ."'"
exe "let s:sp_foreground = ' guisp=". s:palette.gui.foreground[s:style] ."'"
exe "let s:sp_background = ' guisp=". s:palette.gui.background[s:style] ."'"
exe "let s:sp_selection = ' guisp=". s:palette.gui.selection[s:style] ."'"
exe "let s:sp_line = ' guisp=". s:palette.gui.line[s:style] ."'"
exe "let s:sp_comment = ' guisp=". s:palette.gui.comment[s:style] ."'"
exe "let s:sp_red = ' guisp=". s:palette.gui.red[s:style] ."'"
exe "let s:sp_orange = ' guisp=". s:palette.gui.orange[s:style] ."'"
exe "let s:sp_yellow = ' guisp=". s:palette.gui.yellow[s:style] ."'"
exe "let s:sp_green = ' guisp=". s:palette.gui.green[s:style] ."'"
exe "let s:sp_aqua = ' guisp=". s:palette.gui.aqua[s:style] ."'"
exe "let s:sp_blue = ' guisp=". s:palette.gui.blue[s:style] ."'"
exe "let s:sp_purple = ' guisp=". s:palette.gui.purple[s:style] ."'"
exe "let s:sp_window = ' guisp=". s:palette.gui.window[s:style] ."'"
exe "let s:sp_addbg = ' guisp=". s:palette.gui.addbg[s:style] ."'"
exe "let s:sp_addfg = ' guisp=". s:palette.gui.addfg[s:style] ."'"
exe "let s:sp_changebg = ' guisp=". s:palette.gui.changebg[s:style] ."'"
exe "let s:sp_changefg = ' guisp=". s:palette.gui.changefg[s:style] ."'"
exe "let s:sp_darkblue = ' guisp=". s:palette.gui.darkblue[s:style] ."'"
exe "let s:sp_darkcyan = ' guisp=". s:palette.gui.darkcyan[s:style] ."'"
exe "let s:sp_darkred = ' guisp=". s:palette.gui.darkred[s:style] ."'"
exe "let s:sp_darkpurple = ' guisp=". s:palette.gui.darkpurple[s:style] ."'"
"}}}
" Vim Highlighting: (see :help highlight-groups)"{{{
" ----------------------------------------------------------------------------
exe "hi! ColorColumn" .s:fg_none .s:bg_line .s:fmt_none
" Conceal"
" Cursor"
" CursorIM"
exe "hi! CursorColumn" .s:fg_none .s:bg_line .s:fmt_none
exe "hi! CursorLine" .s:fg_none .s:bg_line .s:fmt_none
exe "hi! Directory" .s:fg_blue .s:bg_none .s:fmt_none
exe "hi! DiffAdd" .s:fg_addfg .s:bg_addbg .s:fmt_none
exe "hi! DiffChange" .s:fg_changefg .s:bg_changebg .s:fmt_none
exe "hi! DiffDelete" .s:fg_background .s:bg_delbg .s:fmt_none
exe "hi! DiffText" .s:fg_background .s:bg_blue .s:fmt_none
exe "hi! ErrorMsg" .s:fg_background .s:bg_red .s:fmt_stnd
exe "hi! VertSplit" .s:fg_window .s:bg_none .s:fmt_none
exe "hi! Folded" .s:fg_comment .s:bg_darkcolumn .s:fmt_none
exe "hi! FoldColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none
exe "hi! SignColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none
" Incsearch"
exe "hi! LineNr" .s:fg_selection .s:bg_none .s:fmt_none
exe "hi! CursorLineNr" .s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! MatchParen" .s:fg_background .s:bg_changebg .s:fmt_none
exe "hi! ModeMsg" .s:fg_green .s:bg_none .s:fmt_none
exe "hi! MoreMsg" .s:fg_green .s:bg_none .s:fmt_none
exe "hi! NonText" .s:fg_selection .s:bg_none .s:fmt_none
exe "hi! Pmenu" .s:fg_foreground .s:bg_selection .s:fmt_none
exe "hi! PmenuSel" .s:fg_foreground .s:bg_selection .s:fmt_revr
" PmenuSbar"
" PmenuThumb"
exe "hi! Question" .s:fg_green .s:bg_none .s:fmt_none
exe "hi! Search" .s:fg_background .s:bg_yellow .s:fmt_none
exe "hi! SpecialKey" .s:fg_selection .s:bg_none .s:fmt_none
exe "hi! SpellCap" .s:fg_blue .s:bg_darkblue .s:fmt_undr
exe "hi! SpellLocal" .s:fg_aqua .s:bg_darkcyan .s:fmt_undr
exe "hi! SpellBad" .s:fg_red .s:bg_darkred .s:fmt_undr
exe "hi! SpellRare" .s:fg_purple .s:bg_darkpurple .s:fmt_undr
exe "hi! StatusLine" .s:fg_gray .s:bg_statusline .s:fmt_revr
exe "hi! StatusLineNC" .s:fg_gray .s:bg_statuslinenc .s:fmt_revr
exe "hi! TabLine" .s:fg_foreground .s:bg_darkcolumn .s:fmt_revr
exe "hi! EndOfBuffer" .s:fg_background .s:bg_background .s:fmt_revr
" TabLineFill"
" TabLineSel"
exe "hi! Title" .s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! Visual" .s:fg_none .s:bg_selection .s:fmt_none
" VisualNos"
exe "hi! WarningMsg" .s:fg_red .s:bg_none .s:fmt_none
" FIXME LongLineWarning to use variables instead of hardcoding
hi LongLineWarning guifg=NONE guibg=#371F1C gui=underline ctermfg=NONE ctermbg=NONE cterm=underline
" WildMenu"
exe "hi! Normal" .s:fg_foreground .s:bg_background .s:fmt_none
"}}}
" Generic Syntax Highlighting: (see :help group-name)"{{{
" ----------------------------------------------------------------------------
exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_none
exe "hi! Constant" .s:fg_red .s:bg_none .s:fmt_none
exe "hi! String" .s:fg_green .s:bg_none .s:fmt_none
" Character"
" Number"
" Boolean"
" Float"
exe "hi! Identifier" .s:fg_purple .s:bg_none .s:fmt_none
exe "hi! Function" .s:fg_yellow .s:bg_none .s:fmt_none
exe "hi! Statement" .s:fg_blue .s:bg_none .s:fmt_none
" Conditional"
" Repeat"
" Label"
exe "hi! Operator" .s:fg_aqua .s:bg_none .s:fmt_none
" Keyword"
" Exception"
exe "hi! PreProc" .s:fg_aqua .s:bg_none .s:fmt_none
" Include"
" Define"
" Macro"
" PreCondit"
exe "hi! Type" .s:fg_orange .s:bg_none .s:fmt_none
" StorageClass"
exe "hi! Structure" .s:fg_aqua .s:bg_none .s:fmt_none
" Typedef"
exe "hi! Special" .s:fg_green .s:bg_none .s:fmt_none
" SpecialChar"
" Tag"
" Delimiter"
" SpecialComment"
" Debug"
"
exe "hi! Underlined" .s:fg_blue .s:bg_none .s:fmt_none
exe "hi! Ignore" .s:fg_none .s:bg_none .s:fmt_none
exe "hi! Error" .s:fg_red .s:bg_darkred .s:fmt_undr
exe "hi! Todo" .s:fg_foreground .s:bg_none .s:fmt_bold
" Quickfix window highlighting
exe "hi! qfLineNr" .s:fg_yellow .s:bg_none .s:fmt_none
" qfFileName"
" qfLineNr"
" qfError"
"}}}
" Diff Syntax Highlighting:"{{{
" ----------------------------------------------------------------------------
" Diff
" diffOldFile
" diffNewFile
" diffFile
" diffOnly
" diffIdentical
" diffDiffer
" diffBDiffer
" diffIsA
" diffNoEOL
" diffCommon
hi! link diffRemoved Constant
" diffChanged
hi! link diffAdded Special
" diffLine
" diffSubname
" diffComment
"}}}
" GitGutter Sign Highlighting:"{{{
" ----------------------------------------------------------------------------
exe "hi! GitGutterAdd" .s:fg_gitgutteradd .s:bg_none .s:fmt_none
exe "hi! GitGutterChange" .s:fg_gitgutterchg .s:bg_none .s:fmt_none
exe "hi! GitGutterDelete" .s:fg_gitgutterdlt .s:bg_none .s:fmt_none
"}}}
"
" This is needed for some reason: {{{
let &background = s:style
" }}}
" Legal:"{{{
" ----------------------------------------------------------------------------
" Copyright (c) 2011 Ethan Schoonover
" Copyright (c) 2009-2012 NanoTech
" Copyright (c) 2012 w0ng
"
" Permission is hereby granted, free of charge, to any per
" son obtaining a copy of this software and associated doc
" umentation files (the “Software”), to deal in the Soft
" ware without restriction, including without limitation
" the rights to use, copy, modify, merge, publish, distrib
" ute, sublicense, and/or sell copies of the Software, and
" to permit persons to whom the Software is furnished to do
" so, subject to the following conditions:
"
" The above copyright notice and this permission notice
" shall be included in all copies or substantial portions
" of the Software.
"
" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY
" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU
" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON
" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON
" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
" THE SOFTWARE.
" }}}

26
roles/vim/tasks/main.yml Normal file
View File

@ -0,0 +1,26 @@
---
- name: Ensure vim is installed
package:
name: vim
state: present
become: true
become_user: root
ignore_errors: yes
- name: Ensure ~/.vim/colors folder exists
file:
path: ~/.vim/colors
state: directory
recurse: yes
- name: Copy kuroi color scheme
copy:
src: kuroi.vim
dest: ~/.vim/colors/kuroi.vim
- name: Template vim config
template:
src: vimrc.j2
dest: ~/.vimrc

View File

@ -0,0 +1,3 @@
set background=dark
colorscheme kuroi
syntax on

7
tmux.yml Normal file
View File

@ -0,0 +1,7 @@
---
- name: Set up tmux
hosts: all
become: true
roles:
- tmux

7
vim.yml Normal file
View File

@ -0,0 +1,7 @@
---
- name: Install vim and copy color scheme and template its config
hosts: all
become: true
roles:
- vim