Initial commit

This commit is contained in:
Sagi Dayan 2021-10-22 14:45:20 +03:00
commit d58b13201c
Signed by: sagi
GPG key ID: FAB96BFC63B46458
19 changed files with 1051 additions and 0 deletions

35
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,35 @@
---
stages:
- dnf_systems
- apt_systems
Run Workstation playbook on fedora:
stage: dnf_systems
image: fedora
script:
- dnf install -y ansible python3-pip
- pip3 install -r ci-requirements.txt
- mkdir /tmp/artifacts
- ANSIBLE_CONFIG=$(pwd)/ansible.cfg JUNIT_OUTPUT_DIR=/tmp/artifacts ansible-playbook workstation.yml || (mv /tmp/artifacts/workstation-*.xml report.xml && exit 1)
- cp /tmp/artifacts/workstation-*.xml report.xml
- ls /tmp/artifacts
artifacts:
when: always
reports:
junit: report.xml
Run Workstation playbook on ubuntu:
stage: apt_systems
image: ubuntu
script:
- apt-get update
- apt-get install -y ansible python3-pip python3-apt
- pip3 install -r ci-requirements.txt
- mkdir /tmp/artifacts
- ANSIBLE_CONFIG=$(pwd)/ansible.cfg JUNIT_OUTPUT_DIR=/tmp/artifacts ansible-playbook workstation.yml || (mv /tmp/artifacts/workstation-*.xml report.xml && exit 1)
- mv /tmp/artifacts/workstation-*.xml report.xml
- ls /tmp/artifacts
artifacts:
when: always
reports:
junit: report.xml

13
README.md Normal file
View file

@ -0,0 +1,13 @@
[![CI Pipeline State](https://gitlab.com/sagidayan/linux-config/badges/main/pipeline.svg)](https://gitlab.com/sagidayan/linux-config/-/commits/main)
# Configurations and Applications
## Using ansible playbooks
⚠️ WIP
### Workstation config
```
ansible-playbook workstation.yml
```

5
ansible.cfg Normal file
View file

@ -0,0 +1,5 @@
[defaults]
output_dir = /tmp/artifacts
transport = local
callback_whitelist = junit

1
ci-requirements.txt Normal file
View file

@ -0,0 +1 @@
junit_xml

View file

@ -0,0 +1,118 @@
---
window:
# Blank space added around the window in pixels
padding:
x: 2
y: 2
# Spread additional padding evenly around the terminal content
dynamic_padding: true
# Disable border and title bar
decorations: none
font:
normal:
family: Hack Nerd Font
style: Regular
bold:
family: Hack Nerd Font
style: Bold
italic:
family: Hack Nerd Font
style: Italic
# Point size of the font
size: 11
mouse:
hide_when_typing: true
selection:
# When set to `true`, selected text will be copied to the primary
# clipboard.
save_to_clipboard: true
cursor:
style:
blinking: Always
# Thickness of the cursor (number from `0.0` to `1.0`)
thickness: 0.18
# Vi mode cursor style
vi_mode_style: Block
# Blink Interval
blink_interval: 400
# Monokai Pro theme
colors:
primary:
background: '#2D2A2E'
foreground: '#FCFCFA'
normal:
black: '#403E41'
red: '#FF6188'
green: '#A9DC76'
yellow: '#FFD866'
blue: '#FC9867'
magenta: '#AB9DF2'
cyan: '#78DCE8'
white: '#FCFCFA'
bright:
black: '#727072'
red: '#FF6188'
green: '#A9DC76'
yellow: '#FFD866'
blue: '#FC9867'
magenta: '#AB9DF2'
cyan: '#78DCE8'
white: '#FCFCFA'
# Nord theme
colors:
primary:
background: '#2e3440'
foreground: '#d8dee9'
dim_foreground: '#a5abb6'
cursor:
text: '#2e3440'
cursor: '#d8dee9'
vi_mode_cursor:
text: '#2e3440'
cursor: '#d8dee9'
selection:
text: CellForeground
background: '#4c566a'
search:
matches:
foreground: CellBackground
background: '#88c0d0'
bar:
background: '#434c5e'
foreground: '#d8dee9'
normal:
black: '#3b4252'
red: '#bf616a'
green: '#a3be8c'
yellow: '#ebcb8b'
blue: '#81a1c1'
magenta: '#b48ead'
cyan: '#88c0d0'
white: '#e5e9f0'
bright:
black: '#4c566a'
red: '#bf616a'
green: '#a3be8c'
yellow: '#ebcb8b'
blue: '#81a1c1'
magenta: '#b48ead'
cyan: '#8fbcbb'
white: '#eceff4'
dim:
black: '#373e4d'
red: '#94545d'
green: '#809575'
yellow: '#b29e75'
blue: '#68809a'
magenta: '#8c738c'
cyan: '#6d96a5'
white: '#aeb3bb'

45
files/dotfiles/gitconfig Normal file
View file

@ -0,0 +1,45 @@
[user]
name = Sagi Dayan
email = sagidayan@gmail.com
[color]
# Use colors in Git commands that are capable of colored output when
# outputting to the terminal. (This is the default setting in Git ≥ 1.8.4.)
ui = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan
[format]
pretty = "Commit: %C(yellow)%H%nAuthor: %C(green)%aN <%aE>%nDate: (%C(red)%ar%Creset) %ai%nSubject: %s%n%n%b"
[core]
editor = flatpak run --file-forwarding re.sonny.Commit @@
[alias]
st = status -vs
lol = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit
ada = add .
cm = commit -m
ck = checkout
[diff]
tool = vimdiff
[difftool "meld_flatpak"]
cmd = flatpak run \"--filesystem=$(realpath \"$LOCAL\")\" \"--filesystem=$(realpath \"$REMOTE\")\" org.gnome.meld \"$LOCAL\" \"$REMOTE\"
[difftool]
prompt = false
[format]
pretty = "Commit: %C(yellow)%H%nAuthor: %C(green)%aN <%aE>%nDate: (%C(red)%ar%Creset) %ai%nSubject: %s%n%n%b"
[commit]
gpgsign = true

43
files/dotfiles/tmux.conf Normal file
View file

@ -0,0 +1,43 @@
# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix
# Use Alt-arrow keys to switch panes
bind-key h select-pane -L
bind-key l select-pane -R
bind-key k select-pane -U
bind-key j select-pane -D
# Shift arrow to switch windows
bind -n M-h previous-window
bind -n M-l next-window
# Mouse mode
setw -g mouse on
# Set easier window split keys
bind-key | split-window -h
bind-key - split-window -v
# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded."
# Nord theme
set -g @plugin "arcticicestudio/nord-tmux"
# Tmux yank (For clipboard integration)
set -g @plugin 'tmux-plugins/tmux-yank'
# Mouse select to clipboard
set -g @yank_selection_mouse 'clipboard' # or 'primary' or 'secondary'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
# Buffer line size (History)
set -g history-limit 5000
# Use Ctrl-K to clear buffer
bind -n C-k clear-history
# Default Colors
set -g default-terminal "xterm-256color"

374
files/dotfiles/vimrc Normal file
View file

@ -0,0 +1,374 @@
"==============================================================================
" vim-plug
"==============================================================================
" plugins list
call plug#begin('~/.vim/plugged')
Plug 'pearofducks/ansible-vim' " Ansible
Plug 'morhetz/gruvbox' " Gruvbox theme
Plug 'phanviet/vim-monokai-pro' " Monokai-Pro theme
Plug 'arcticicestudio/nord-vim' " Nord theme
Plug 'itchyny/lightline.vim' " vim status bar
Plug 'airblade/vim-gitgutter' " Git gutter
Plug 'vim-syntastic/syntastic' " coding-errors checker
Plug 'ervandew/supertab' " tab completion
Plug 'neoclide/coc.nvim', {'branch': 'release'} " Lanuage server integrations
Plug 'tpope/vim-fugitive' " git wrapper
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } " golang plugin for vim
Plug 'Yggdroot/indentLine' " Indentation LInes
Plug 'junegunn/fzf.vim' " Fuzzy search
Plug 'francoiscabrol/ranger.vim' " Ranger <leader>f
Plug 'scrooloose/nerdtree' " NerdTree - File tree (ctr-n)
Plug 'Xuyuanp/nerdtree-git-plugin' " Git support in NERDTree
Plug 'ryanoasis/vim-devicons' " File Icons - Always load last
call plug#end()
" Set encoding to utf8
set encoding=UTF-8
" install plugins automatically
autocmd VimEnter *
\ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
\| PlugInstall --sync | q
\| endif
" remove unused plugins automatically
autocmd VimEnter *
\ if len(filter(split(globpath(g:plug_home, '*'), "\n"), 'isdirectory(v:val)'))
\ > len(filter(values(g:plugs), 'stridx(v:val.dir, g:plug_home) == 0'))
\| PlugClean | q
\| endif
" Toggle NerdTree with Ctrl+n
map <C-n> :NERDTreeToggle<CR>
" Open fzf Files search
map <C-p> :Files<CR>
" Open file search
map <C-f> :BLines<CR>
" Indent Guides auto start
let g:indent_guides_enable_on_vim_startup = 1
" Tab navigation and creation
map <C-t> :tabnew<CR>
noremap<Tab> :tabn<CR>
noremap <s-Tab> :tabp<CR>
" Insert mode navigation Alt+hjkl
imap <C-s-h> <Left>
imap <C-s-l> <Right>
imap <C-s-j> <Down>
imap <C-s-k> <Up>
" Set line heighlight on by default
set cursorline
" Set Clipboard to system
set clipboard=unnamedplus
" Enable mouse use in all modes
set mouse=a
" Auto highlight similar words when staying on a word after .5 sec
set updatetime=500
augroup highlight_current_word
au!
au CursorHold *
\ if ( expand("%") != 'NERD_tree_1' )
\ | :exec 'match Search /\V\<' . expand('<cword>') . '\>/'
\ | endif
augroup END
"==============================================================================
" Sync NERDTree with file
"==============================================================================
" Check if NERDTree is open or active
function! IsNERDTreeOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
" Call NERDTreeFind iff NERDTree is active, current window contains a modifiable
" file, and we're not in vimdiff
function! SyncTree()
if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff
NERDTreeFind
wincmd p
endif
endfunction
" Highlight currently open buffer in NERDTree
autocmd BufRead * call SyncTree()
" Nerdtree show hidden files
let NERDTreeShowHidden=1
" Dont show .git folder
let NERDTreeIgnore=['\.git$']
"==============================================================================
" Theme settings
"==============================================================================
" Gruvbox :
"let g:gruvbox_italic=1 "// make tmux color for comments to be ugley
"colorscheme gruvbox
" Setting dark mode
"set background=dark
" Monokai-pro
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
colorscheme monokai_pro
" Nord Theme
colorscheme nord
"==============================================================================
" line number
"==============================================================================
" set relative number on visual mode and absolute number on insert mode
set relativenumber
set number
autocmd InsertEnter * :set number norelativenumber
autocmd InsertLeave * :set nonumber relativenumber
" set backgrond and font color of line number
highlight LineNr ctermfg=grey ctermbg=black
" without this vim in tmux recive diffrent colors
set background=dark
" open files at the last remember line
if has("autocmd")
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$")
\| exe "normal! g`\""
\| endif
endif
"==============================================================================
" TAB settings
"==============================================================================
"filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab
"==============================================================================
" set column
"==============================================================================
" set coding style limit at 80 chars
set colorcolumn=80
"==============================================================================
" mouse settings
"==============================================================================
" enable mouse
"set mouse=a
"==============================================================================
" file title
"==============================================================================
" always show current file title
set title
"==============================================================================
" normal mode mapping
"==============================================================================
" mapping capsLock to ctrl
map CapsLock Ctrl
" this package is extending % to <> and other sifferent closures
packadd! matchit
:let b:match_words = '<:>,<tag>:</tag>'
" enable ci( of all sorts to work from outside the parenthese
nnoremap ci( %ci(
nnoremap ci[ %ci[
nnoremap ci{ %ci{
" NOTE: use 'normal' for <> because % is not a regular vim command (package)
nnoremap ci< :normal %<CR>ci<
" enable di( of all sorts to work from outside the parenthese
nnoremap di( %di(
nnoremap di[ %di[
nnoremap di{ %di{
" NOTE: use 'normal' for <> because % is not a regular vim command (package)
nnoremap di< :normal %<CR>di<
" easy navigation on split screen
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
" easy access to buffers
" \l : list buffers
" \b \f \g : go back/forward/last-used
" \d : delete buffer
nnoremap <Leader>l :ls<CR>
nnoremap <Leader>b :bp<CR>
nnoremap <Leader>f :bn<CR>
nnoremap <Leader>g :e#<CR>
nnoremap <Leader>c :bd<CR>
" make 'Y' act like 'D' and 'C' instead of working like 'yy'
nnoremap Y y$
"==============================================================================
" search settings
"==============================================================================
" ignore CASE in search
set ignorecase
" higlight search matches
set hlsearch
"==============================================================================
" vim && tmux
"==============================================================================
" makes split-navigation act differently when in vim\tmux
" in both cases navigation will be done with ctr + hjkl (without tmux prefix)
if exists('$TMUX')
function! TmuxOrSplitSwitch(wincmd, tmuxdir)
let previous_winnr = winnr()
silent! execute "wincmd " . a:wincmd
if previous_winnr == winnr()
call system("tmux select-pane -" . a:tmuxdir)
redraw!
endif
endfunction
let previous_title = substitute(system("tmux display-message -p '#{pane_title}'"), '\n', '', '')
let &t_ti = "\<Esc>]2;vim\<Esc>\\" . &t_ti
let &t_te = "\<Esc>]2;". previous_title . "\<Esc>\\" . &t_te
nnoremap <silent> <C-h> :call TmuxOrSplitSwitch('h', 'L')<cr>
nnoremap <silent> <C-j> :call TmuxOrSplitSwitch('j', 'D')<cr>
nnoremap <silent> <C-k> :call TmuxOrSplitSwitch('k', 'U')<cr>
nnoremap <silent> <C-l> :call TmuxOrSplitSwitch('l', 'R')<cr>
else
map <C-h> <C-w>h
map <C-j> <C-w>j
map <C-k> <C-w>k
map <C-l> <C-w>l
endif
"==============================================================================
" split settings
"==============================================================================
"
" more intuitive default splits
set splitbelow
set splitright
"==============================================================================
" Lightline.vim plugin & status line
"==============================================================================
" make status line always visible
set laststatus=2
" NOTE: 'FugitiveHead' is 'vim-fugitive' plugin's function and depend on it
" configure lightline.vim status line
let g:lightline = {
\ 'colorscheme': 'monokai_pro',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ]
\ },
\ 'component_function': {
\ 'gitbranch': 'FugitiveHead',
\ 'filename': 'LightlineFilename',
\ },
\ }
" function to get the filename from vim to lightline.vim
function! LightlineFilename()
return &filetype ==# 'vimfiler' ? vimfiler#get_status_string() :
\ &filetype ==# 'unite' ? unite#get_status_string() :
\ &filetype ==# 'vimshell' ? vimshell#get_status_string() :
\ expand('%') !=# '' ? expand('%') : '[No Name]'
endfunction
let g:unite_force_overwrite_statusline = 0
let g:vimfiler_force_overwrite_statusline = 0
let g:vimshell_force_overwrite_statusline = 0
" actually this have no effect when lightline.vim plugin is installed
set statusline+=%f "relative path (use %F for absolute path)
set statusline+=%m "modified flag
set statusline+=%= "left/right separator
set statusline+=%l/%L "cursor line/total lines
set statusline+=\ %P "percent through file
"==============================================================================
" Spelling settings
"==============================================================================
" make spell checker underline errors with vim 'set spell' command
" Note: must appear after the last line that is altering colorscheme
hi clear SpellBad
hi SpellBad cterm=underline
"==============================================================================
" Delete settings
"==============================================================================
" make backspace always erase in insert mode and not only new inputs
set backspace=indent,eol,start
"==============================================================================
" Fold settings
"==============================================================================
set foldmethod=marker
"==============================================================================
" vim-go settings
"==============================================================================
" make go-autocompletion start automatically after pressing '.'
au Filetype go inoremap <buffer> . .<C-x><C-o>
" fields and types highlight
let g:go_highlight_types = 1
let g:go_highlight_extra_types = 1 " adds types like io.Reader, io.Writer etc
let g:go_highlight_fields = 1
" make vim add and remove imports automatically on saving
let g:go_fmt_command="goimports"
" shows the under-cursor-object's signature (automatically run GoInfo)
let g:go_auto_type_info = 1
" fixing `pattern uses more memory than 'maxmempattern'` error
set mmp=5000
"==============================================================================
" swp files
"==============================================================================
" Don't use swapfile
set noswapfile

149
files/dotfiles/zshrc Normal file
View file

@ -0,0 +1,149 @@
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/Development/bin:$HOME/.local/bin:$HOME/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/home/sdayan/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
#ZSH_THEME="robbyrussell"
ZSH_THEME="gnzh"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to automatically update without prompting.
# DISABLE_UPDATE_PROMPT="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# Caution: this setting can cause issues with multiline prompts (zsh 5.7.1 and newer seem to work)
# See https://github.com/ohmyzsh/ohmyzsh/issues/5765
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git sudo)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true
# Aliases
alias spot=ncspot
alias :e=exit
#Minikube
export gittoken=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
# source <(kubectl completion bash)
# source <(minikube completion bash)
source <(skipper completion)
export SERVICE_REPLICAS_COUNT=1
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
# Golang
export GOPROXY="https://proxy.golang.org,direct"
export GOPATH=/home/sdayan/Development
# New ls (lsd)
alias ls='lsd'
# Rust - Cargo
export PATH=/home/sdayan/.cargo/bin:$PATH
# Run screenfetch
alias info=screenfetch
[[ /usr/bin/kubectl ]] && source <(kubectl completion zsh)
# cd aliases
alias cdservice="cd ~/Development/github.com/openshift/assisted-service"
alias f='printf "\033c"'
# bat theme (New cat)
export BAT_THEME="gruvbox"
alias cat=bat
# Editors - Default
export VISUAL=vimx;
export EDITOR=vimx;
alias vim=vimx
# Start tmux if not in a session
[ -z $TMUX ] && ( tmux a || tmux )

Binary file not shown.

0
roles/.empty Normal file
View file

View file

@ -0,0 +1,18 @@
- name: Install Alacritty PPA (Debian Based)
become: true
apt_repository:
repo: "ppa:aslatter/ppa"
validate_certs: no
state: present
when: ansible_distribution in ["Debian", "Ubuntu"]
- name: Install Alacritty
become: true
package:
name: alacritty
state: latest
- name: Setting up alacritty config file
copy:
src: dotfiles/alacritty.yml
dest: ~/.alacritty.yml

16
roles/base/tasks/main.yml Normal file
View file

@ -0,0 +1,16 @@
- name: Installing packages
become: true
package:
name:
- curl
- bat
- wget
- git
# - podman
state: present
- name: Copy gitconfig base
copy:
src: dotfiles/gitconfig
dest: ~/.gitconfig
force: no

View file

@ -0,0 +1,15 @@
- name: Preparing for Hack Nerd font installation
become: true
file:
path: /usr/share/fonts/hack
state: directory
owner: root
group: root
- name: Installing Hack Nerd Font
become: true
copy:
src: fonts/hack_nerd_font.ttf
dest: /usr/share/fonts/hack/hack_nerd_font.ttf
owner: root
group: root

View file

@ -0,0 +1,26 @@
- name: Install LSDeluxe (RHEL family)
become: true
package:
name: lsd
state: present
when: ansible_distribution in ["Fedora", "CentOS", "RedHat"]
- name: Check if lsd is installed (Debian Family)
command: dpkg-query -W lsd
register: lsd_package_check
failed_when: lsd_package_check.rc > 1
changed_when: lsd_package_check.rc == 1
when: ansible_distribution in ["Debian", "Ubuntu"]
#===== Debian Only - No need for ansible_disrebution
- name: Download LSDeluxe deb file (Debian Family)
get_url:
url: https://github.com/Peltoche/lsd/releases/download/0.20.1/lsd-musl_0.20.1_amd64.deb
dest: ./lsd.deb
when: lsd_package_check.changed
- name: Install LSDeluxe Deb file (Debian Family)
become: true
apt:
deb: ./lsd.deb
when: lsd_package_check.changed

View file

@ -0,0 +1,16 @@
- name: Install tmux
become: true
package:
name: tmux
state: latest
- name: Install tmux plugin manager
git:
repo: https://github.com/tmux-plugins/tpm
dest: ~/.tmux/plugins/tpm
update: yes
- name: Copy tmux config file
copy:
src: dotfiles/tmux.conf
dest: ~/.tmux.conf

View file

@ -0,0 +1,20 @@
- name: Install vim
become: true
package:
name: vim
state: latest
- name: Prepare vim...
file:
path: ~/.vim/autoload
state: directory
- name: Install vim Plug
get_url:
url: https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
dest: ~/.vim/autoload/plug.vim
- name: "Copy vimrc file"
copy:
src: dotfiles/vimrc
dest: "~/.vimrc"

8
workstation.yml Normal file
View file

@ -0,0 +1,8 @@
- hosts: localhost
roles:
- base
- fonts
- tmux_user
- vim_user
- alacritty_user
- lsd_user

149
zshrc Normal file
View file

@ -0,0 +1,149 @@
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/Development/bin:$HOME/.local/bin:$HOME/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/home/sdayan/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
#ZSH_THEME="robbyrussell"
ZSH_THEME="gnzh"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to automatically update without prompting.
# DISABLE_UPDATE_PROMPT="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# Caution: this setting can cause issues with multiline prompts (zsh 5.7.1 and newer seem to work)
# See https://github.com/ohmyzsh/ohmyzsh/issues/5765
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git sudo)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true
# Aliases
alias spot=ncspot
alias :e=exit
#Minikube
export gittoken=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
# source <(kubectl completion bash)
# source <(minikube completion bash)
source <(skipper completion)
export SERVICE_REPLICAS_COUNT=1
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
# Golang
export GOPROXY="https://proxy.golang.org,direct"
export GOPATH=/home/sdayan/Development
# New ls (lsd)
alias ls='lsd'
# Rust - Cargo
export PATH=/home/sdayan/.cargo/bin:$PATH
# Run screenfetch
alias info=screenfetch
[[ /usr/bin/kubectl ]] && source <(kubectl completion zsh)
# cd aliases
alias cdservice="cd ~/Development/github.com/openshift/assisted-service"
alias f='printf "\033c"'
# bat theme (New cat) $ bat --list-themes
export BAT_THEME="Nord"
alias cat=bat
# Editors - Default
export VISUAL=vimx;
export EDITOR=vimx;
alias vim=vimx
# Start tmux if not in a session
# [ -z $TMUX ] && ( tmux a || tmux )