mirror of
https://github.com/morten-olsen/configs.git
synced 2026-02-08 00:46:24 +01:00
first commit
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
font_family Fira Code Regular
|
||||
disable_ligatures cursor
|
||||
enable_audio_bell no
|
||||
bell_on_tab no
|
||||
# background_opacity 0.8
|
||||
|
||||
# vim:ft=kitty
|
||||
|
||||
## name: Catppuccin Kitty Mocha
|
||||
## author: Catppuccin Org
|
||||
## license: MIT
|
||||
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf
|
||||
## blurb: Soothing pastel theme for the high-spirited!
|
||||
|
||||
|
||||
|
||||
# The basic colors
|
||||
foreground #CDD6F4
|
||||
background #1E1E2E
|
||||
selection_foreground #1E1E2E
|
||||
selection_background #F5E0DC
|
||||
|
||||
# Cursor colors
|
||||
cursor #F5E0DC
|
||||
cursor_text_color #1E1E2E
|
||||
|
||||
# URL underline color when hovering with mouse
|
||||
url_color #F5E0DC
|
||||
|
||||
# Kitty window border colors
|
||||
active_border_color #B4BEFE
|
||||
inactive_border_color #6C7086
|
||||
bell_border_color #F9E2AF
|
||||
|
||||
# OS Window titlebar colors
|
||||
wayland_titlebar_color system
|
||||
macos_titlebar_color system
|
||||
|
||||
# Tab bar colors
|
||||
active_tab_foreground #11111B
|
||||
active_tab_background #CBA6F7
|
||||
inactive_tab_foreground #CDD6F4
|
||||
inactive_tab_background #181825
|
||||
tab_bar_background #11111B
|
||||
|
||||
# Colors for marks (marked text in the terminal)
|
||||
mark1_foreground #1E1E2E
|
||||
mark1_background #B4BEFE
|
||||
mark2_foreground #1E1E2E
|
||||
mark2_background #CBA6F7
|
||||
mark3_foreground #1E1E2E
|
||||
mark3_background #74C7EC
|
||||
|
||||
# The 16 terminal colors
|
||||
|
||||
# black
|
||||
color0 #45475A
|
||||
color8 #585B70
|
||||
|
||||
# red
|
||||
color1 #F38BA8
|
||||
color9 #F38BA8
|
||||
|
||||
# green
|
||||
color2 #A6E3A1
|
||||
color10 #A6E3A1
|
||||
|
||||
# yellow
|
||||
color3 #F9E2AF
|
||||
color11 #F9E2AF
|
||||
|
||||
# blue
|
||||
color4 #89B4FA
|
||||
color12 #89B4FA
|
||||
|
||||
# magenta
|
||||
color5 #F5C2E7
|
||||
color13 #F5C2E7
|
||||
|
||||
# cyan
|
||||
color6 #94E2D5
|
||||
color14 #94E2D5
|
||||
|
||||
# white
|
||||
color7 #BAC2DE
|
||||
color15 #A6ADC8
|
||||
4
playbooks/roles/desktop/meta/main.yml
Normal file
4
playbooks/roles/desktop/meta/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- role: info
|
||||
- role: system
|
||||
26
playbooks/roles/desktop/tasks/config.yml
Normal file
26
playbooks/roles/desktop/tasks/config.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
- name: "Copy templates : {{ context }}"
|
||||
tags:
|
||||
- config
|
||||
ansible.builtin.template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ home }}/{{ item.path | regex_replace('\\.j2$', '') }}"
|
||||
mode: "{{ item.mode }}"
|
||||
with_community.general.filetree:
|
||||
- ../templates/{{ context }}
|
||||
loop_control:
|
||||
label: "{{ item.path }}"
|
||||
when: item.state == 'file'
|
||||
|
||||
- name: "Copy config : {{ context }}"
|
||||
tags:
|
||||
- config
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ home }}/{{ item.path }}"
|
||||
mode: "{{ item.mode }}"
|
||||
with_community.general.filetree:
|
||||
- ../files/{{ context }}
|
||||
loop_control:
|
||||
label: "{{ item.path }}"
|
||||
when: item.state == 'file'
|
||||
33
playbooks/roles/desktop/tasks/install.yml
Normal file
33
playbooks/roles/desktop/tasks/install.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
- name: "Unload vars : {{ context }}"
|
||||
ansible.builtin.include_vars: ../vars/empty.yml
|
||||
tags:
|
||||
- install
|
||||
|
||||
- name: "Load vars : {{ context }}"
|
||||
ansible.builtin.include_vars: "{{ item }}"
|
||||
tags:
|
||||
- install
|
||||
with_first_found:
|
||||
- files:
|
||||
- "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
|
||||
- "{{ ansible_distribution }}.yml"
|
||||
- "{{ ansible_os_family }}.yml"
|
||||
- default.yml
|
||||
paths: ../vars/{{ context }}
|
||||
skip: true
|
||||
|
||||
- name: "Install dependencies : {{ context }}"
|
||||
tags:
|
||||
- install
|
||||
when: desktop_pkgs
|
||||
ansible.builtin.package:
|
||||
name: "{{ desktop_pkgs }}"
|
||||
|
||||
- name: "Install casks : {{ context }}"
|
||||
tags:
|
||||
- install
|
||||
when: desktop_casks
|
||||
community.general.homebrew_cask:
|
||||
name: "{{ desktop_casks }}"
|
||||
state: installed
|
||||
16
playbooks/roles/desktop/tasks/main.yml
Normal file
16
playbooks/roles/desktop/tasks/main.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
- name: Install context dependencies
|
||||
ansible.builtin.include_tasks: install.yml
|
||||
loop: "{{ contexts }}"
|
||||
loop_control:
|
||||
loop_var: context
|
||||
tags:
|
||||
- config
|
||||
|
||||
- name: Configure contexts
|
||||
ansible.builtin.include_tasks: config.yml
|
||||
loop: "{{ contexts }}"
|
||||
loop_control:
|
||||
loop_var: context
|
||||
tags:
|
||||
- config
|
||||
12
playbooks/roles/desktop/vars/default/default.yml
Normal file
12
playbooks/roles/desktop/vars/default/default.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
_desktop_casks:
|
||||
- 1password
|
||||
- 1password-cli
|
||||
- kitty
|
||||
- font-fira-code
|
||||
- font-fira-mono-nerd-font
|
||||
- obsidian
|
||||
- rectangle
|
||||
- spotify
|
||||
- vlc
|
||||
- localsend
|
||||
4
playbooks/roles/desktop/vars/empty.yml
Normal file
4
playbooks/roles/desktop/vars/empty.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
desktop_pkgs: []
|
||||
desktop_casks: []
|
||||
desktop_flatpaks: []
|
||||
6
playbooks/roles/desktop/vars/personal/Darwin.yml
Normal file
6
playbooks/roles/desktop/vars/personal/Darwin.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
desktop_casks:
|
||||
- jellyfin-media-player
|
||||
- signal
|
||||
- firefox
|
||||
- tea
|
||||
5
playbooks/roles/desktop/vars/zeronorth/Darwin.yml
Normal file
5
playbooks/roles/desktop/vars/zeronorth/Darwin.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
desktop_casks:
|
||||
- slack
|
||||
- notion
|
||||
- aws-vpn-client
|
||||
4
playbooks/roles/docker/meta/main.yml
Normal file
4
playbooks/roles/docker/meta/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- role: info
|
||||
- role: system
|
||||
7
playbooks/roles/docker/tasks/macos.yml
Normal file
7
playbooks/roles/docker/tasks/macos.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Install colima
|
||||
tags:
|
||||
- install
|
||||
when: desktop_pkgs
|
||||
ansible.builtin.package:
|
||||
name: colima
|
||||
6
playbooks/roles/docker/tasks/main.yml
Normal file
6
playbooks/roles/docker/tasks/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: Install on MacOS
|
||||
when: mac_os
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.include_tasks: macos.yml
|
||||
92
playbooks/roles/docker/tasks/ubuntu.yml
Normal file
92
playbooks/roles/docker/tasks/ubuntu.yml
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
# https://medium.com/@GarisSpace/how-to-install-docker-using-ansible-01a674086f8c
|
||||
- name: Setting host facts
|
||||
ansible.builtin.set_fact:
|
||||
arch_mapping: # Map ansible architecture {{ ansible_architecture }} names to Docker's architecture names
|
||||
x86_64: amd64
|
||||
aarch64: arm64
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Install required packages
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.apt:
|
||||
pkg:
|
||||
- apt-transport-https
|
||||
- ca-certificates
|
||||
- curl
|
||||
- gnupg
|
||||
- software-properties-common
|
||||
|
||||
- name: Create directory for Docker's GPG key
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.file:
|
||||
path: /etc/apt/keyrings
|
||||
state: directory
|
||||
mode: "0755"
|
||||
|
||||
- name: Add Docker's official GPG key
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.apt_key:
|
||||
url: https://download.docker.com/linux/ubuntu/gpg
|
||||
keyring: /etc/apt/keyrings/docker.gpg
|
||||
state: present
|
||||
|
||||
- name: Print architecture variables
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.debug:
|
||||
msg: "Architecture: {{ ansible_architecture }}, Codename: {{ ansible_lsb.codename }}"
|
||||
|
||||
- name: Add Docker repository
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.apt_repository:
|
||||
repo: >-
|
||||
deb [arch={{ arch_mapping[ansible_architecture] | default(ansible_architecture) }}
|
||||
signed-by=/etc/apt/keyrings/docker.gpg]
|
||||
https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable
|
||||
filename: docker
|
||||
state: present
|
||||
|
||||
- name: Install Docker and related packages
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- docker-ce
|
||||
- docker-ce-cli
|
||||
- containerd.io
|
||||
- docker-buildx-plugin
|
||||
- docker-compose-plugin
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- name: Add Docker group
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.group:
|
||||
name: docker
|
||||
state: present
|
||||
|
||||
- name: Add user to Docker group
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.user:
|
||||
name: "{{ username }}"
|
||||
groups: docker
|
||||
append: true
|
||||
|
||||
- name: Enable and start Docker services
|
||||
tags:
|
||||
- install
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ item }}"
|
||||
enabled: true
|
||||
state: started
|
||||
loop:
|
||||
- docker.service
|
||||
- containerd.service
|
||||
8
playbooks/roles/info/tasks/main.yml
Normal file
8
playbooks/roles/info/tasks/main.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
- name: Setting host facts
|
||||
tags: always
|
||||
ansible.builtin.set_fact:
|
||||
username: alice
|
||||
home: /Users/alice
|
||||
use_become: true
|
||||
mac_os: "{{ ansible_distribution == 'MacOSX' }}"
|
||||
contexts: "{{ ['default'] + (contexts | default([])) }}"
|
||||
2
playbooks/roles/system/meta/main.yml
Normal file
2
playbooks/roles/system/meta/main.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- role: info
|
||||
22
playbooks/roles/system/tasks/main.yml
Normal file
22
playbooks/roles/system/tasks/main.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
- name: Install core dependencies
|
||||
tags: always
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- zsh
|
||||
|
||||
- name: Create group
|
||||
when: not mac_os
|
||||
tags: always
|
||||
ansible.builtin.group:
|
||||
name: "{{ username }}"
|
||||
state: present
|
||||
|
||||
- name: Create user
|
||||
when: not mac_os
|
||||
tags: always
|
||||
ansible.builtin.user:
|
||||
name: "{{ username }}"
|
||||
update_password: "on_create"
|
||||
create_home: yes
|
||||
shell: /usr/bin/zsh
|
||||
group: "{{ username }}"
|
||||
33
playbooks/roles/terminal/files/default/.scripts/rollout.sh
Executable file
33
playbooks/roles/terminal/files/default/.scripts/rollout.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#
|
||||
unset GITHUB_TOKEN
|
||||
|
||||
# Extract type and description from commit message
|
||||
type=$1; shift
|
||||
description="$@"
|
||||
commit_message="$type: $description"
|
||||
|
||||
# Check if a commit message was provided
|
||||
if [ -z "$1" ] || [ -z "$description" ]; then
|
||||
echo "Usage: rollout <type> <...description>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create branch name following Conventional Commit syntax
|
||||
branch_name="${type}/$(echo "$description" | tr ' ' '-' | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
echo "Creating and checking out branch: $branch_name"
|
||||
git checkout -b "$branch_name" || exit 1
|
||||
|
||||
# Add all changes
|
||||
git add . || exit 1
|
||||
|
||||
echo "Committing with message: \"$commit_message\""
|
||||
git commit -m "$commit_message" || exit 1
|
||||
|
||||
echo "Pushing branch to origin..."
|
||||
git push --set-upstream origin HEAD || exit 1
|
||||
|
||||
echo "Creating a Pull Request..."
|
||||
gh pr create --fill
|
||||
|
||||
echo "Rollout complete."
|
||||
@@ -0,0 +1,6 @@
|
||||
alias ls=eza
|
||||
alias cat=bat
|
||||
alias grep=rg
|
||||
alias diff=delta
|
||||
alias less=bat
|
||||
alias gr='if [ "`git rev-parse --show-cdup`" != "" ]; then cd `git rev-parse --show-cdup`; fi'
|
||||
@@ -0,0 +1 @@
|
||||
export TMPDIR="${TMPDIR:-/tmp}"
|
||||
@@ -0,0 +1,3 @@
|
||||
export EDITOR=nvim
|
||||
alias vim=nvim
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
export PATH="$PATH:$HOME/.scripts"
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
export GPG_TTY="$(tty)"
|
||||
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||
gpgconf --launch gpg-agent
|
||||
gpg-connect-agent updatestartuptty /bye > /dev/null
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKDbZITpz5QrVIxPn9gKVWMPK+3W3YZZGszFOQvO/h7M
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCj8wspkAnOpEmipwB/xd8vpEx9aqNbyjD2xzv0msDJvYMn26ZO3cbtbWbMI9Uns55aHcL0bStdbaJQIcL8ZVzvQtKq+spdZYQpN4cFlN16HXKR/UjBYtJEdHVxb2cwb2DM04aLDuAlCAJGChEAqpIQFpvlByyAaxSPwor5Cy5JHmm5fMkvcJEvPtxQOo4yovY8qW9scWlOCrzNSAYtBwTGG8REcRuTaEW9EJlmn8QZA+T+cE7nFdZOlmm752jW9wBCAIKlg6W5gX0rysSxy+MkKB/2ohpLI+0SeWAM8+CEtZjO7GP6xRPXZgrZJssytzQsJoiMTs6rJM5ovHUMVNPGDLCB6+8lWM7Jk4hh0lIQTOC5AMucH2jRJSyQb2AA3kbPuWOwHDDIlSUnNFsI/xUVs1lfx3ikIZEb9oZcKwWBB2PeL/KT6ca7dsI3PyFL+hC5Wi7ll0Aj5w+dBZOxwW1agSo4ujPKO9oIVwqEA+PqoK/GZtIHAx6t/m3DK8T4HAo2GZMqyzRgcqk1bttaCFzX2h074yW1du8+l4yIqWrooqD474V3MT05HUxkA1+9S5ldEwK4J50WfKlhNuZn5YeiHLngisu8WyIGREYDGlkM+1qxwHiJGohigS20kpmTUkKvyLRXItAcvQYBknCV3qb8B1Kj1bvbN3sCaqQAeVWxDw==
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaIAP/ZJ7+7jeR44e1yIJjfQAB6MN351LDKJAXVF62P
|
||||
10
playbooks/roles/terminal/files/default/.ssh/config
Normal file
10
playbooks/roles/terminal/files/default/.ssh/config
Normal file
@@ -0,0 +1,10 @@
|
||||
Include /Users/alice/.colima/ssh_config
|
||||
|
||||
Include ~/.ssh/config.d/*
|
||||
|
||||
Host *
|
||||
Controlmaster auto
|
||||
Controlpath ${TMPDIR}/ssh-%r@%h:%p
|
||||
IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
|
||||
ForwardAgent yes
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
host github.com
|
||||
hostname ssh.github.com
|
||||
user git
|
||||
port 443
|
||||
107
playbooks/roles/terminal/files/default/.tmux.conf
Normal file
107
playbooks/roles/terminal/files/default/.tmux.conf
Normal file
@@ -0,0 +1,107 @@
|
||||
set -g mouse on
|
||||
set -g default-terminal "screen-256color-bce"
|
||||
#set -g status-justify centre
|
||||
|
||||
#set -ga terminal-overrides ',xterm-256color:Tc'
|
||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
|
||||
|
||||
set -g base-index 1
|
||||
set -g renumber-windows on
|
||||
bind q lock-client
|
||||
|
||||
unbind '"'
|
||||
unbind %
|
||||
|
||||
bind h select-pane -L
|
||||
bind j select-pane -D
|
||||
bind k select-pane -U
|
||||
bind l select-pane -R
|
||||
|
||||
bind -r H resize-pane -L 10
|
||||
bind -r J resize-pane -D 10
|
||||
bind -r K resize-pane -U 10
|
||||
bind -r L resize-pane -R 10
|
||||
|
||||
bind o attach -c "#{pane_current_path}"
|
||||
|
||||
# don't rename windows automatically
|
||||
set-option -g allow-rename off
|
||||
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
|
||||
run -b '~/.tmux/plugins/tpm/tpm'
|
||||
if "test ! -d ~/.tmux/plugins/tpm" \
|
||||
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
|
||||
|
||||
# set -g @plugin "arcticicestudio/nord-tmux"
|
||||
# set -g @plugin 'dracula/tmux'
|
||||
# set -g @dracula-show-powerline true
|
||||
# set -g @plugin 'wfxr/tmux-power'
|
||||
set -g @plugin 'catppuccin/tmux'
|
||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||
set -g @treemux-tree-nvim-init-file '~/.tmux/plugins/treemux/configs/treemux_init.lua'
|
||||
set -g @plugin 'kiyoon/treemux'
|
||||
|
||||
# open pane in vim
|
||||
bind-key / capture-pane -S -102400 -J \; new-window 'vim -c ":read !tmux save-buffer - ; tmux delete-buffer;" -c ":normal gg" -c ":set buftype=nofile" -c ":silent! ChompWhitespace"'
|
||||
|
||||
set -g @catppuccin_date_time "%Y-%m-%d %H:%M"
|
||||
set -g @catppuccin_window_tabs_enabled "on"
|
||||
|
||||
# clear history
|
||||
# bind k send-keys -R \; clear-history
|
||||
|
||||
# copy mode
|
||||
setw -g mode-keys vi
|
||||
bind Escape copy-mode
|
||||
unbind [
|
||||
unbind p
|
||||
bind p paste-buffer
|
||||
bind -Tcopy-mode-vi v send -X begin-selection
|
||||
bind -Tcopy-mode-vi y send -X copy-selection
|
||||
bind -Tcopy-mode-vi Escape send -X cancel
|
||||
|
||||
# panes
|
||||
bind - split-window -v -c "#{pane_current_path}"
|
||||
bind | split-window -h -c "#{pane_current_path}"
|
||||
bind C-z resize-pane -Z
|
||||
bind g swap-pane -U
|
||||
bind æ swap-pane -D
|
||||
|
||||
# panes
|
||||
#set -g window-active-style 'bg=colour236'
|
||||
#set -g window-style 'bg=black'
|
||||
|
||||
|
||||
# Smart pane switching with awareness of Vim splits.
|
||||
# See: https://github.com/christoomey/vim-tmux-navigator
|
||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
||||
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
|
||||
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
|
||||
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
|
||||
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
||||
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
|
||||
|
||||
bind -n 'M-h' if-shell "$is_vim" 'send-keys M-h' 'resize-pane -L 1'
|
||||
bind -n 'M-j' if-shell "$is_vim" 'send-keys M-j' 'resize-pane -D 1'
|
||||
bind -n 'M-k' if-shell "$is_vim" 'send-keys M-k' 'resize-pane -U 1'
|
||||
bind -n 'M-l' if-shell "$is_vim" 'send-keys M-l' 'resize-pane -R 1'
|
||||
|
||||
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
|
||||
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
|
||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
|
||||
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
|
||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'"
|
||||
|
||||
|
||||
bind-key -T copy-mode-vi 'C-h' select-pane -L
|
||||
bind-key -T copy-mode-vi 'C-j' select-pane -D
|
||||
bind-key -T copy-mode-vi 'C-k' select-pane -U
|
||||
bind-key -T copy-mode-vi 'C-l' select-pane -R
|
||||
bind-key -T copy-mode-vi 'C-\' select-pane -l
|
||||
|
||||
# Utils
|
||||
bind -r g display-popup -d '#{pane_current_path}' -w80% -h80% -E lazygit
|
||||
|
||||
73
playbooks/roles/terminal/files/default/.zshrc
Normal file
73
playbooks/roles/terminal/files/default/.zshrc
Normal file
@@ -0,0 +1,73 @@
|
||||
export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-$HOME/.cache}
|
||||
export LANG=en_US.UTF-8
|
||||
|
||||
# Load all files from .shell/rc.d directory
|
||||
if [ -d $HOME/.shellrc/rc.d ]; then
|
||||
for file in $HOME/.shellrc/rc.d/*.sh; do
|
||||
source $file
|
||||
done
|
||||
fi
|
||||
|
||||
# Load all files from .shell/zshrc.d directory
|
||||
if [ -d $HOME/.shellrc/zshrc.d ]; then
|
||||
for file in $HOME/.shellrc/zshrc.d/*.zsh; do
|
||||
source $file
|
||||
done
|
||||
fi
|
||||
export GPG_TTY=$(tty)
|
||||
if [[ -n "$SSH_CONNECTION" ]] ;then
|
||||
export PINENTRY_USER_DATA="USE_CURSES=1"
|
||||
fi
|
||||
|
||||
[ -f ~/.env ] && source ~/.env
|
||||
|
||||
if [ `tput cols` -gt "70" ]; then
|
||||
function PRINT_CENTER {
|
||||
COLS=`tput cols`
|
||||
OFFSET=$(( ($COLS - $1) / 2 ))
|
||||
PRE=""
|
||||
for i in `seq $OFFSET`; do
|
||||
PRE="$PRE "
|
||||
done
|
||||
while IFS= read -r line; do
|
||||
echo "$PRE$line"
|
||||
done <<< "$2"
|
||||
}
|
||||
PRINT_CENTER 60 "
|
||||
|
||||
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
||||
█░▄▄▀█▀▄▄▀█░▄▄░█▄░▄█▀▄▀██░▄░██░██░█░▄▄█░▄▄░█
|
||||
█░▀▀▄█░██░█░▀▄░██░██░█▀█░▀▀░▀█░██░█▄▄▀███▄██
|
||||
█▄█▄▄██▄▄██░▀▀░██▄███▄█████░███▄▄▄█▄▄▄█░▀▀░█
|
||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||
|
||||
⣴⣶⣤⡤⠦⣤⣀⣤⠆ ⣈⣭⣿⣶⣿⣦⣼⣆
|
||||
⠉⠻⢿⣿⠿⣿⣿⣶⣦⠤⠄⡠⢾⣿⣿⡿⠋⠉⠉⠻⣿⣿⡛⣦
|
||||
⠈⢿⣿⣟⠦ ⣾⣿⣿⣷ ⠻⠿⢿⣿⣧⣄
|
||||
⣸⣿⣿⢧ ⢻⠻⣿⣿⣷⣄⣀⠄⠢⣀⡀⠈⠙⠿⠄
|
||||
⢠⣿⣿⣿⠈ ⣻⣿⣿⣿⣿⣿⣿⣿⣛⣳⣤⣀⣀
|
||||
⢠⣧⣶⣥⡤⢄ ⣸⣿⣿⠘ ⢀⣴⣿⣿⡿⠛⣿⣿⣧⠈⢿⠿⠟⠛⠻⠿⠄
|
||||
⣰⣿⣿⠛⠻⣿⣿⡦⢹⣿⣷ ⢊⣿⣿⡏ ⢸⣿⣿⡇ ⢀⣠⣄⣾⠄
|
||||
⣠⣿⠿⠛ ⢀⣿⣿⣷⠘⢿⣿⣦⡀ ⢸⢿⣿⣿⣄ ⣸⣿⣿⡇⣪⣿⡿⠿⣿⣷⡄
|
||||
⠙⠃ ⣼⣿⡟ ⠈⠻⣿⣿⣦⣌⡇⠻⣿⣿⣷⣿⣿⣿ ⣿⣿⡇ ⠛⠻⢷⣄
|
||||
⢻⣿⣿⣄ ⠈⠻⣿⣿⣿⣷⣿⣿⣿⣿⣿⡟ ⠫⢿⣿⡆
|
||||
⠻⣿⣿⣿⣿⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⡟⢀⣀⣤⣾⡿⠃
|
||||
▄▄▄ . ▌ ▐·▪ ▄▄▌ ▄▄▌ ▐ ▄▌▪ ▄▄▄▄▄ ▄ .▄ ▄• ▄▌▄▄▄▄▄
|
||||
▀▄.▀·▪█·█▌██ ██• ██· █▌▐███ •██ ██▪▐█ ▄█▀▄ █▪██▌•██
|
||||
▐▀▀▪▄▐█▐█•▐█·██ ▪ ██▪▐█▐▐▌▐█· ▐█.▪██▀▀█▐█▌.▐▌█▌▐█▌ ▐█.▪
|
||||
▐█▄▄▌ ███ ▐█▌▐█▌ ▄ ▐█▌██▐█▌▐█▌ ▐█▌·██▌▐▀▐█▌.▐▌▐█▄█▌ ▐█▌·
|
||||
▀▀▀ . ▀ ▀▀▀.▀▀▀ ▀▀▀▀ ▀▪▀▀▀ ▀▀▀ ▀▀▀ · ▀█▄▀▪ ▀▀▀ ▀▀▀
|
||||
|
||||
> welcome x_x
|
||||
"
|
||||
fi
|
||||
|
||||
export FZF_DEFAULT_OPTS=" \
|
||||
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
|
||||
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
|
||||
--color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8"
|
||||
|
||||
which atuin &> /dev/null && eval "$(atuin init zsh)"
|
||||
which direnv &> /dev/null && eval "$(direnv hook zsh)"
|
||||
which starship &> /dev/null && eval "$(starship init zsh)"
|
||||
which zoxide &> /dev/null && eval "$(zoxide init zsh)"
|
||||
@@ -0,0 +1,6 @@
|
||||
host github-private
|
||||
hostname ssh.github.com
|
||||
user git
|
||||
port 443
|
||||
IdentityFile ~/.ssh/keys/github-private.pub
|
||||
IdentitiesOnly yes
|
||||
@@ -0,0 +1 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaIAP/ZJ7+7jeR44e1yIJjfQAB6MN351LDKJAXVF62P
|
||||
@@ -0,0 +1,4 @@
|
||||
export NPM_GITHUB_TOKEN="op://jpksggxxmcuwnbwkooktr3iqcy/ut3yag6r7y4bsfrztahp7pcc6q/password"
|
||||
export NODE_AUTH_TOKEN=$NPM_GITHUB_TOKEN
|
||||
export GITHUB_TOKEN=$NPM_GITHUB_TOKEN
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
[user]
|
||||
email = morten@olsen.pro
|
||||
name = Morten Olsen
|
||||
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaIAP/ZJ7+7jeR44e1yIJjfQAB6MN351LDKJAXVF62P
|
||||
|
||||
[url "git@github-private:morten-olsen/"]
|
||||
insteadOf = https://github.com/morten-olsen/
|
||||
|
||||
[url "ssh://git@giteaa.olsen.cloud:2202/"]
|
||||
insteadOf = ssh://git@gitea.olsen.cloud:2202/
|
||||
@@ -0,0 +1,3 @@
|
||||
@morten-olsen:registry=https://npm.pkg.github.com
|
||||
//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
host github-zeronorth
|
||||
hostname ssh.github.com
|
||||
user git
|
||||
port 443
|
||||
IdentityFile ~/.ssh/keys/github-zeronorth.pub
|
||||
IdentitiesOnly yes
|
||||
@@ -0,0 +1 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKDbZITpz5QrVIxPn9gKVWMPK+3W3YZZGszFOQvO/h7M
|
||||
@@ -0,0 +1,4 @@
|
||||
export NPM_GITHUB_TOKEN="op://jpksggxxmcuwnbwkooktr3iqcy/ut3yag6r7y4bsfrztahp7pcc6q/password"
|
||||
export NODE_AUTH_TOKEN=$NPM_GITHUB_TOKEN
|
||||
export GITHUB_TOKEN="op://Employee/lobazchngpvla4opw4rwzjwnoi/credential"
|
||||
export AWS_PROFILE="zeronorth"
|
||||
@@ -0,0 +1,7 @@
|
||||
[user]
|
||||
email = morten.olsen@zeronorth.com
|
||||
name = Morten Olsen
|
||||
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKDbZITpz5QrVIxPn9gKVWMPK+3W3YZZGszFOQvO/h7M
|
||||
|
||||
[url "git@github-zeronorth:"]
|
||||
insteadOf = https://github.com/
|
||||
@@ -0,0 +1,2 @@
|
||||
@0north:registry=https://npm.pkg.github.com
|
||||
//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
|
||||
4
playbooks/roles/terminal/meta/main.yml
Normal file
4
playbooks/roles/terminal/meta/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- role: info
|
||||
- role: system
|
||||
26
playbooks/roles/terminal/tasks/config.yml
Normal file
26
playbooks/roles/terminal/tasks/config.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
- name: "Copy templates : {{ context }}"
|
||||
tags:
|
||||
- config
|
||||
ansible.builtin.template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ home }}/{{ item.path | regex_replace('\\.j2$', '') }}"
|
||||
mode: "{{ item.mode }}"
|
||||
with_community.general.filetree:
|
||||
- ../templates/{{ context }}
|
||||
loop_control:
|
||||
label: "{{ item.path }}"
|
||||
when: item.state == 'file'
|
||||
|
||||
- name: Copy config {{ context }}
|
||||
tags:
|
||||
- config
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ home }}/{{ item.path }}"
|
||||
mode: "{{ item.mode }}"
|
||||
with_community.general.filetree:
|
||||
- ../files/{{ context }}
|
||||
loop_control:
|
||||
label: "{{ item.path }}"
|
||||
when: item.state == 'file'
|
||||
33
playbooks/roles/terminal/tasks/install.yml
Normal file
33
playbooks/roles/terminal/tasks/install.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
- name: "Unload vars : {{ context }}"
|
||||
ansible.builtin.include_vars: ../vars/empty.yml
|
||||
tags:
|
||||
- install
|
||||
|
||||
- name: "Load vars : {{ context }}"
|
||||
ansible.builtin.include_vars: "{{ item }}"
|
||||
tags:
|
||||
- install
|
||||
with_first_found:
|
||||
- files:
|
||||
- "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
|
||||
- "{{ ansible_distribution }}.yml"
|
||||
- "{{ ansible_os_family }}.yml"
|
||||
- default.yml
|
||||
paths: ../vars/{{ context }}
|
||||
skip: true
|
||||
|
||||
- name: "Install dependencies : {{ context }}"
|
||||
tags:
|
||||
- install
|
||||
when: terminal_pkgs
|
||||
ansible.builtin.package:
|
||||
name: "{{ terminal_pkgs }}"
|
||||
|
||||
- name: "Install casks : {{ context }}"
|
||||
tags:
|
||||
- install
|
||||
when: terminal_casks
|
||||
community.general.homebrew_cask:
|
||||
name: "{{ terminal_casks }}"
|
||||
state: installed
|
||||
35
playbooks/roles/terminal/tasks/main.yml
Normal file
35
playbooks/roles/terminal/tasks/main.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
- name: Install context dependencies
|
||||
ansible.builtin.include_tasks: install.yml
|
||||
loop: "{{ contexts }}"
|
||||
loop_control:
|
||||
loop_var: context
|
||||
tags:
|
||||
- config
|
||||
|
||||
- name: Configure contexts
|
||||
ansible.builtin.include_tasks: config.yml
|
||||
loop: "{{ contexts }}"
|
||||
loop_control:
|
||||
loop_var: context
|
||||
tags:
|
||||
- config
|
||||
|
||||
- name: Install node and set version
|
||||
tags:
|
||||
- config
|
||||
register: nodeinstall
|
||||
ansible.builtin.shell: source {{ home }}/.nvm/nvm.sh && nvm install 22
|
||||
changed_when: "'is already installed' not in nodeinstall.stderr"
|
||||
args:
|
||||
executable: /bin/bash
|
||||
|
||||
- name: Configure neovim
|
||||
tags:
|
||||
- config
|
||||
ansible.builtin.git:
|
||||
repo: https://github.com/morten-olsen/nvim
|
||||
dest: "{{ home }}/.config/nvim"
|
||||
accept_newhostkey: true
|
||||
clone: true
|
||||
update: true
|
||||
53
playbooks/roles/terminal/templates/default/.gitconfig.j2
Normal file
53
playbooks/roles/terminal/templates/default/.gitconfig.j2
Normal file
@@ -0,0 +1,53 @@
|
||||
[gpg]
|
||||
format = ssh
|
||||
|
||||
[gpg "ssh"]
|
||||
program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"
|
||||
|
||||
[alias]
|
||||
graph = log --graph --color --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%C(blue)%x20(%ce)%x20%C(cyan)[gpg:%GK%x20%G?]%C(reset)%n%x20%s%n"
|
||||
ll = log --oneline
|
||||
st = status -sb
|
||||
cm = commit -m
|
||||
append = commit --amend --no-edit
|
||||
sobmodules = submodule update --init --recursive
|
||||
df = difftool -t nvimdiff -y
|
||||
last = log -1 --stat
|
||||
br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
|
||||
brr = branch --remote --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
|
||||
undo = reset HEAD~1 --mixed
|
||||
unstage = reset HEAD --
|
||||
|
||||
[difftool "nvimdiff"]
|
||||
cmd = "nvim -d \"$LOCAL\" \"$REMOTE\""
|
||||
[commit]
|
||||
gpgsign = true
|
||||
[url "https://"]
|
||||
insteadOf = git://
|
||||
|
||||
[core]
|
||||
pager = delta
|
||||
hooksPath = /dev/null
|
||||
|
||||
[interactive]
|
||||
diffFilter = delta --color-only
|
||||
|
||||
[pull]
|
||||
ff = only
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
[filter "lfs"]
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
||||
required = true
|
||||
|
||||
[includeIf "gitdir:~/Projects/zeronorth/"]
|
||||
path = ~/Projects/zeronorth/.gitconfig
|
||||
|
||||
[includeIf "gitdir:~/Projects/private/"]
|
||||
path = ~/Projects/private/.gitconfig
|
||||
[push]
|
||||
autoSetupRemote = true
|
||||
|
||||
17
playbooks/roles/terminal/vars/default/default.yml
Normal file
17
playbooks/roles/terminal/vars/default/default.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
terminal_pkgs:
|
||||
- atuin
|
||||
- bat
|
||||
- eza
|
||||
- direnv
|
||||
- fzf
|
||||
- gnupg
|
||||
- jq
|
||||
- ripgrep
|
||||
- neovim
|
||||
- gh
|
||||
- starship
|
||||
- tmux
|
||||
- zoxide
|
||||
- git
|
||||
- git-delta
|
||||
4
playbooks/roles/terminal/vars/empty.yml
Normal file
4
playbooks/roles/terminal/vars/empty.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
terminal_pkgs: []
|
||||
terminal_casks: []
|
||||
terminal_flatpaks: []
|
||||
5
playbooks/roles/terminal/vars/zeronorth/default.yml
Normal file
5
playbooks/roles/terminal/vars/zeronorth/default.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
terminal_pkgs:
|
||||
- terraform
|
||||
- awscli
|
||||
- copier
|
||||
7
playbooks/setup.yml
Normal file
7
playbooks/setup.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Setup host
|
||||
hosts: all
|
||||
roles:
|
||||
- role: terminal
|
||||
- role: desktop
|
||||
- role: docker
|
||||
Reference in New Issue
Block a user