commit 27e3b132a8574d0566fad0498299b3e9a06cb983 Author: Ben Vincent Date: Fri Aug 26 22:09:22 2022 +0930 Initial commit for dotfiles Setting up dotfiles with yadm diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..0af3193 --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,80 @@ +# SFMono Nerd Fonts +font: + normal: + family: SFMono Nerd Font + style: Regular + + bold: + family: SFMono Nerd Font + style: Bold + + italic: + family: SFMono Nerd Font + style: Italic + + bold_italic: + family: SFMono Nerd Font + style: Bold Italic + + size: 10 + +# Dracula theme for Alacritty +# https://draculatheme.com/alacritty +# +# Color palette +# https://spec.draculatheme.com +# +# Template +# https://github.com/alacritty/alacritty/blob/master/alacritty.yml +colors: + primary: + background: '#282a36' + foreground: '#f8f8f2' + bright_foreground: '#ffffff' + cursor: + text: CellBackground + cursor: CellForeground + vi_mode_cursor: + text: CellBackground + cursor: CellForeground + search: + matches: + foreground: '#44475a' + background: '#50fa7b' + focused_match: + foreground: '#44475a' + background: '#ffb86c' + footer_bar: + background: '#282a36' + foreground: '#f8f8f2' + hints: + start: + foreground: '#282a36' + background: '#f1fa8c' + end: + foreground: '#f1fa8c' + background: '#282a36' + line_indicator: + foreground: None + background: None + selection: + text: CellForeground + background: '#44475a' + normal: + black: '#21222c' + red: '#ff5555' + green: '#50fa7b' + yellow: '#f1fa8c' + blue: '#bd93f9' + magenta: '#ff79c6' + cyan: '#8be9fd' + white: '#f8f8f2' + bright: + black: '#6272a4' + red: '#ff6e6e' + green: '#69ff94' + yellow: '#ffffa5' + blue: '#d6acff' + magenta: '#ff92df' + cyan: '#a4ffff' + white: '#ffffff' diff --git a/.config/bat/config b/.config/bat/config new file mode 100644 index 0000000..5584752 --- /dev/null +++ b/.config/bat/config @@ -0,0 +1,11 @@ +# Set the theme to "TwoDark" +--theme="TwoDark" + +# Show line numbers, Git modifications and file header (but no grid) +--style="changes,header" + +# Use italic text on the terminal (not supported on all terminals) +--italic-text=always + +# Use C++ syntax for .ino files +--map-syntax "*.ino:C++" diff --git a/.config/i3/config b/.config/i3/config new file mode 100644 index 0000000..5f3e98b --- /dev/null +++ b/.config/i3/config @@ -0,0 +1,321 @@ +# 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 https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 +#set $term xfce4-terminal +set $term alacritty +set $termalt urxvt +set $web firefox +set $file ranger +set $lock slock +set $code codium +set $guieditor geany +set $calc /home/ben/.local/bin/bc-launcher +set $music /home/ben/.local/bin/ncmpcpp-launcher + +# 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 + +# The combination of xss-lock, nm-applet and pactl is a popular choice, so +# they are included here as an example. Modify as you see fit. + +# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the +# screen before suspend. Use loginctl lock-session to lock your screen. +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork + +# network manager applet: manage wifi, ethernet and vpns +exec --no-startup-id nm-applet + +# bluetooth manager applet: manage bluetooth pairing and connections +#exec --no-startup-id blueman-applet + +# udiskie: manage usb storage devices +exec --no-startup-id udiskie -a -n -t + +# dunst: a notification daemon +exec --no-startup-id dunst + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +bindsym $mod+greater exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status +bindsym $mod+less exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status + +# backlight brightness +bindsym XF86MonBrightnessDown exec brightnessctl set 5%- # decrease screen brightness +bindsym XF86MonBrightnessUp exec brightnessctl set +5% # increase screen brightness +bindsym $mod+F8 exec brightnessctl set 5-% # decrease screen brightness +bindsym $mod+F9 exec brightnessctl set +5% # increase screen brightness + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec $term +bindsym $mod+Shift+Return exec $termalt + +# start a web browser +bindsym $mod+F1 exec $web + +# start a file manager +bindsym $mod+F2 exec $file + +# start an ide +bindsym $mod+F3 exec $code + +# start a gui notepad +bindsym $mod+F4 exec $guieditor + +# kill focused window +bindsym $mod+Shift+q kill + +# start rofi in drun mode (a program launcher) +bindsym $mod+d exec --no-startup-id "rofi -show drun -font \\"DejaVu 9\\" -run-shell-command '{terminal} -e \\" {cmd}; read -n 1 -s\\"'" +#bindsym $mod+shift+d exec selected=$(ls ~/rdp/ntschools/|rofi -dmenu -p "Run: ")&&zsh ~/rdp/ntschools/$selected + + +# A more modern dmenu replacement is rofi: +# bindcode $mod+40 exec "rofi -modi drun,run -show drun" +# There also is i3-dmenu-desktop which only displays applications shipping a +# .desktop file. It is a wrapper around dmenu, so you need that installed. +# bindcode $mod+40 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 v ;; exec $term + +# split in vertical orientation +bindsym $mod+v split h ;; exec $term + +# 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+Shift+a focus child + +# calculator scratchpad +bindsym $mod+c [title="calc-launcher"] scratchpad show; [title="calc-launcher"] move position center +for_window [title="calc-launcher"] floating enable +for_window [title="calc-launcher"] resize set 800 600 +for_window [title="calc-launcher"] move scratchpad +for_window [title="calc-launcher"] border pixel 5 +#exec --no-startup-id $term -T "calc-launcher" -e "$calc" +exec --no-startup-id $term -t "calc-launcher" -e "$calc" + +# dropdown scratchpad +bindsym $mod+x [title="dropdown"] scratchpad show; [title="dropdown"] move position center +for_window [title="dropdown"] floating enable +for_window [title="dropdown"] resize set 1280 800 +for_window [title="dropdown"] move scratchpad +for_window [title="dropdown"] border pixel 5 +#exec --no-startup-id $term -T "dropdown" +exec --no-startup-id $term -t "dropdown" + +# music scratchpad +bindsym $mod+m [title="music-launcher"] scratchpad show; [title="music-launcher"] move position center +for_window [title="music-launcher"] floating enable +for_window [title="music-launcher"] resize set 800 600 +for_window [title="music-launcher"] move scratchpad +for_window [title="music-launcher"] border pixel 5 +#exec --no-startup-id $term -T "music-launcher" -e "$music" +exec --no-startup-id $term -t "music-launcher" -e "$music" + +# f5vpn scratchpad +bindsym $mod+F10 [title="F5 VPN"] scratchpad show; [title="F5 VPN"] move position center +for_window [title="F5 VPN"] floating enable +for_window [title="F5 VPN"] resize set 800 600 +for_window [title="F5 VPN"] move scratchpad +for_window [title="F5 VPN"] border pixel 5 + +# restore scratchpads +#bindsym $mod+F11 exec --no-startup-id $term -T "music-launcher" -e "$music" +bindsym $mod+F11 exec --no-startup-id $term -t "music-launcher" -e "$music" +#bindsym $mod+F12 exec --no-startup-id $term -T "calc-launcher" -e "$calc" +bindsym $mod+F12 exec --no-startup-id $term -t "calc-launcher" -e "$calc" + +# mpd/mpc commands +bindsym $mod+p exec mpc --host $HOME/.config/mpd/socket toggle + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1: shell" +set $ws2 "2: web" +set $ws3 "3: code" +set $ws4 "4: rdp" +set $ws5 "5: games" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2; layout tabbed +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4; layout tabbed +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 +bindsym $mod+0 workspace $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9 +bindsym $mod+Shift+0 move container to workspace $ws10 + +# move focused workspace between monitors +bindsym $mod+Ctrl+greater move workspace to output right +bindsym $mod+Ctrl+less move workspace to output left + +# print screen +bindsym --release Print exec "spectacle" +bindsym --release $mod+Print exec "maim -s $HOME/Pictures/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png" +bindsym --release $mod+Shift+Print exec "maim -s | xclip -selection clipboard -t image/png" +bindsym --release $mod+Shift+s exec "maim -s | xclip -selection clipboard -t image/png" +bindsym --release $mod+Alt+Print exec "maim $HOME/Pictures/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png" +#bindsym --release $mod+Alt+Print exec "maim -i $(xdotool getactivewindow) | xclip -selection clipboard -t image/png" + +# lock screen +#bindsym $mod+l --release exec $lock +bindsym $mod+l --release exec betterlockscreen -l dim + +# 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) +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'" + +# for_windows settings +for_window [class="urxvt"] border pixel 5 +for_window [title="Mozilla Firefox"] move container to workspace $ws2 +for_window [title="Chromium"] move container to workspace $ws2 +for_window [class="VSCodium"] move container to workspace $ws3 +for_window [title="Visual Studio Code"] move container to workspace $ws3 +for_window [class="xfreerdp"] floating disable move container to workspace $ws4 +for_window [class="Steam"] floating disable move container to workspace $ws5 +for_window [title="Picture-in-Picture"] sticky enable +for_window [title="noVNC"] sticky enable floating enable +for_window [title="Proxmox Console"] sticky enable floating enable +for_window [title="feh"] sticky enable floating enable + +# 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 window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s 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 or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# monitor-mode settings +mode "monitor-mode" { + # external-only (1), laptop-only (2) or both (3) + bindsym 1 exec ~/.local/bin/screen-external.sh + bindsym 2 exec ~/.local/bin/screen-laptop.sh + bindsym 3 exec ~/.local/bin/screen-dual.sh + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+t mode "default" +} + +bindsym $mod+t mode "monitor-mode" + +# class border bground text indicator child_border +client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4 +client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A +client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36 +client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555 +client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36 + +client.background #F8F8F2 + + +#exec_always --no-startup-id $HOME/.config/polybar/start + +bar { + status_command i3status + colors { + background #282A36 + statusline #F8F8F2 + separator #44475A + + focused_workspace #44475A #44475A #F8F8F2 + active_workspace #282A36 #44475A #F8F8F2 + inactive_workspace #282A36 #282A36 #BFBFBF + urgent_workspace #FF5555 #FF5555 #F8F8F2 + binding_mode #FF5555 #FF5555 #F8F8F2 + } +} diff --git a/.config/i3status/config b/.config/i3status/config new file mode 100644 index 0000000..21879d4 --- /dev/null +++ b/.config/i3status/config @@ -0,0 +1,58 @@ +# i3status configuration file. +# see "man i3status" for documentation. + +# It is important that this file is edited as UTF-8. +# The following line should contain a sharp s: +# ß +# If the above line is not correctly displayed, fix your editor first! + +general { + colors = true + interval = 5 + output_format = "i3bar" + colors = true + color_good = "#50FA7B" + color_degraded = "#F1FA8C" + color_bad = "#FF5555" +} + +order += "ipv6" +order += "wireless _first_" +order += "ethernet _first_" +order += "battery all" +order += "disk /" +order += "load" +order += "memory" +order += "tztime local" + +wireless _first_ { + format_up = "W: (%quality at %essid) %ip" + format_down = "W: down" +} + +ethernet _first_ { + format_up = "E: %ip (%speed)" + format_down = "E: down" +} + +battery all { + format = "%status %percentage %remaining" +} + +disk "/" { + format = "%avail" +} + +load { + format = "%1min" +} + +memory { + format = "%used | %available" + threshold_degraded = "1G" + format_degraded = "MEMORY < %available" +} + +tztime local { + format = "%Y-%m-%d %H:%M:%S" +} diff --git a/.config/mpd/mpd.conf b/.config/mpd/mpd.conf new file mode 100644 index 0000000..082893d --- /dev/null +++ b/.config/mpd/mpd.conf @@ -0,0 +1,415 @@ +# An example configuration file for MPD. +# Read the user manual for documentation: http://www.musicpd.org/doc/user/ + + +# Files and directories ####################################################### +# +# This setting controls the top directory which MPD will search to discover the +# available audio files and add them to the daemon's online database. This +# setting defaults to the XDG directory, otherwise the music directory will be +# be disabled and audio files will only be accepted over ipc socket (using +# file:// protocol) or streaming files over an accepted protocol. +# +music_directory "~/Music" +# +# This setting sets the MPD internal playlist directory. The purpose of this +# directory is storage for playlists created by MPD. The server will use +# playlist files not created by the server but only if they are in the MPD +# format. This setting defaults to playlist saving being disabled. +# +playlist_directory "~/.config/mpd/playlists" +# +# This setting sets the location of the MPD database. This file is used to +# load the database at server start up and store the database while the +# server is not up. This setting defaults to disabled which will allow +# MPD to accept files over ipc socket (using file:// protocol) or streaming +# files over an accepted protocol. +# +db_file "~/.config/mpd/mpd.db" +# +# These settings are the locations for the daemon log files for the daemon. +# These logs are great for troubleshooting, depending on your log_level +# settings. +# +# The special value "syslog" makes MPD use the local syslog daemon. This +# setting defaults to logging to syslog. +# +log_file "~/.config/mpd/mpd.log" +# +# This setting sets the location of the file which stores the process ID +# for use of mpd --kill and some init scripts. This setting is disabled by +# default and the pid file will not be stored. +# +#pid_file "~/.mpd/pid" +# +# This setting sets the location of the file which contains information about +# most variables to get MPD back into the same general shape it was in before +# it was brought down. This setting is disabled by default and the server +# state will be reset on server start up. +# +state_file "~/.config/mpd/mpdstate" +# +# The location of the sticker database. This is a database which +# manages dynamic information attached to songs. +# +#sticker_file "~/.mpd/sticker.sql" +# +############################################################################### + + +# General music daemon options ################################################ +# +# This setting specifies the user that MPD will run as. MPD should never run as +# root and you may use this setting to make MPD change its user ID after +# initialization. This setting is disabled by default and MPD is run as the +# current user. +# +user "ben" +# +# This setting specifies the group that MPD will run as. If not specified +# primary group of user specified with "user" setting will be used (if set). +# This is useful if MPD needs to be a member of group such as "audio" to +# have permission to use sound card. +# +#group "nogroup" +# +# This setting sets the address for the daemon to listen on. Careful attention +# should be paid if this is assigned to anything other than the default, any. +# This setting can deny access to control of the daemon. Not effective if +# systemd socket activiation is in use. +# +# For network +#bind_to_address "any" +# +# And for Unix Socket +bind_to_address "~/.config/mpd/socket" +# +# This setting is the TCP port that is desired for the daemon to get assigned +# to. +# +#port "6600" +# +# Suppress all messages below the given threshold. Use "verbose" for +# troubleshooting. Available setting arguments are "notice", "info", "verbose", +# "warning" and "error". +# +#log_level "notice" +# +# Setting "restore_paused" to "yes" puts MPD into pause mode instead +# of starting playback after startup. +# +#restore_paused "no" +# +# This setting enables MPD to create playlists in a format usable by other +# music players. +# +#save_absolute_paths_in_playlists "no" +# +# This setting defines a list of tag types that will be extracted during the +# audio file discovery process. The complete list of possible values can be +# found in the user manual. +#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" +# +# This example just enables the "comment" tag without disabling all +# the other supported tags: +#metadata_to_use "+comment" +# +# This setting enables automatic update of MPD's database when files in +# music_directory are changed. +# +#auto_update "yes" +# +# Limit the depth of the directories being watched, 0 means only watch +# the music directory itself. There is no limit by default. +# +#auto_update_depth "3" +# +############################################################################### + + +# Symbolic link behavior ###################################################### +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links outside of the configured music_directory. +# +#follow_outside_symlinks "yes" +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links inside of the configured music_directory. +# +#follow_inside_symlinks "yes" +# +############################################################################### + + +# Zeroconf / Avahi Service Discovery ########################################## +# +# If this setting is set to "yes", service information will be published with +# Zeroconf / Avahi. +# +#zeroconf_enabled "yes" +# +# The argument to this setting will be the Zeroconf / Avahi unique name for +# this MPD server on the network. %h will be replaced with the hostname. +# +#zeroconf_name "Music Player @ %h" +# +############################################################################### + + +# Permissions ################################################################# +# +# If this setting is set, MPD will require password authorization. The password +# setting can be specified multiple times for different password profiles. +# +#password "password@read,add,control,admin" +# +# This setting specifies the permissions a user has who has not yet logged in. +# +#default_permissions "read,add,control,admin" +# +############################################################################### + + +# Database ####################################################################### +# +# An example of a database section instead of the old 'db_file' setting. +# It enables mounting other storages into the music directory. +# +#database { +# plugin "simple" +# path "~/.local/share/mpd/db +# cache_directory "~/.local/share/mpd/cache" +#} +# +# An example of database config for a sattelite setup +# +#music_directory "/var/lib/mpd/music" +#database { +# plugin "proxy" +# host "other.mpd.host" +# port "6600" +#} + +# Input ####################################################################### +# +input { + plugin "curl" +# proxy "proxy.isp.com:8080" +# proxy_user "user" +# proxy_password "password" +} + +# +############################################################################### + +# Audio Output ################################################################ +# +# MPD supports various audio output types, as well as playing through multiple +# audio outputs at the same time, through multiple audio_output settings +# blocks. Setting this block is optional, though the server will only attempt +# autodetection for one sound card. +# +# An example of an ALSA output: +# +#audio_output { +# type "alsa" +# name "My ALSA Device" +## device "hw:0,0" # optional +## mixer_type "hardware" # optional +## mixer_device "default" # optional +## mixer_control "PCM" # optional +## mixer_index "0" # optional +#} +# +# An example of an OSS output: +# +#audio_output { +# type "oss" +# name "My OSS Device" +## device "/dev/dsp" # optional +## mixer_type "hardware" # optional +## mixer_device "/dev/mixer" # optional +## mixer_control "PCM" # optional +#} +# +# An example of a shout output (for streaming to Icecast): +# +#audio_output { +# type "shout" +# encoder "vorbis" # optional +# name "My Shout Stream" +# host "localhost" +# port "8000" +# mount "/mpd.ogg" +# password "hackme" +# quality "5.0" +# bitrate "128" +# format "44100:16:1" +## protocol "icecast2" # optional +## user "source" # optional +## description "My Stream Description" # optional +## url "http://example.com" # optional +## genre "jazz" # optional +## public "no" # optional +## timeout "2" # optional +## mixer_type "software" # optional +#} +# +# An example of a recorder output: +# +#audio_output { +# type "recorder" +# name "My recorder" +# encoder "vorbis" # optional, vorbis or lame +# path "/var/lib/mpd/recorder/mpd.ogg" +## quality "5.0" # do not define if bitrate is defined +# bitrate "128" # do not define if quality is defined +# format "44100:16:1" +#} +# +# An example of a httpd output (built-in HTTP streaming server): +# +#audio_output { +# type "httpd" +# name "My HTTP Stream" +# encoder "vorbis" # optional, vorbis or lame +# port "8000" +# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 +## quality "5.0" # do not define if bitrate is defined +# bitrate "128" # do not define if quality is defined +# format "44100:16:1" +# max_clients "0" # optional 0=no limit +#} +# +# An example of a pulseaudio output (streaming to a remote pulseaudio server) +# +audio_output { + type "pulse" + name "My Pulse Output" +## server "remote_server" # optional +## sink "remote_server_sink" # optional +## media_role "media_role" #optional +} +# +# An example of a winmm output (Windows multimedia API). +# +#audio_output { +# type "winmm" +# name "My WinMM output" +## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +# or +## device "0" # optional +## mixer_type "hardware" # optional +#} +# +# An example of a wasapi output (Windows multimedia API). +# +#audio_output { +# type "wasapi" +# name "My WASAPI output" +## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +# or +## device "0" # optional +## Exclusive mode blocks all other audio source, and get best audio quality without resampling. +## exclusive "no" # optional +## Enumerate all devices in log. +## enumerate "no" # optional +#} +# +# An example of an openal output. +# +#audio_output { +# type "openal" +# name "My OpenAL output" +## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +#} +# +# An example of an sndio output. +# +#audio_output { +# type "sndio" +# name "sndio output" +# mixer_type "hardware" +#} +# +# An example of an OS X output: +# +#audio_output { +# type "osx" +# name "My OS X Device" +## device "Built-in Output" # optional +## channel_map "-1,-1,0,1" # optional +#} +# +## Example "pipe" output: +# +#audio_output { +# type "pipe" +# name "my pipe" +# command "aplay -f cd 2>/dev/null" +## Or if you're want to use AudioCompress +# command "AudioCompress -m | aplay -f cd 2>/dev/null" +## Or to send raw PCM stream through PCM: +# command "nc example.org 8765" +# format "44100:16:2" +#} +# +## An example of a null output (for no audio output): +# +#audio_output { +# type "null" +# name "My Null Output" +# mixer_type "none" # optional +#} +# +############################################################################### + + +# Normalization automatic volume adjustments ################################## +# +# This setting specifies the type of ReplayGain to use. This setting can have +# the argument "off", "album", "track" or "auto". "auto" is a special mode that +# chooses between "track" and "album" depending on the current state of +# random playback. If random playback is enabled then "track" mode is used. +# See for +# more details about ReplayGain. +# This setting is off by default. +# +#replaygain "album" +# +# This setting sets the pre-amp used for files that have ReplayGain tags. By +# default this setting is disabled. +# +#replaygain_preamp "0" +# +# This setting sets the pre-amp used for files that do NOT have ReplayGain tags. +# By default this setting is disabled. +# +#replaygain_missing_preamp "0" +# +# This setting enables or disables ReplayGain limiting. +# MPD calculates actual amplification based on the ReplayGain tags +# and replaygain_preamp / replaygain_missing_preamp setting. +# If replaygain_limit is enabled MPD will never amplify audio signal +# above its original level. If replaygain_limit is disabled such amplification +# might occur. By default this setting is enabled. +# +#replaygain_limit "yes" +# +# This setting enables on-the-fly normalization volume adjustment. This will +# result in the volume of all playing audio to be adjusted so the output has +# equal "loudness". This setting is disabled by default. +# +#volume_normalization "no" +# +############################################################################### + +# Character Encoding ########################################################## +# +# If file or directory names do not display correctly for your locale then you +# may need to modify this setting. +# +#filesystem_charset "UTF-8" +# +############################################################################### diff --git a/.config/ncmpcpp/config b/.config/ncmpcpp/config new file mode 100644 index 0000000..a23ee47 --- /dev/null +++ b/.config/ncmpcpp/config @@ -0,0 +1,8 @@ +# Connect to MPD running on specified host/unix socket. When HOST starts with a '/', it is assumed to be a unix socket. Note: MPD_HOST environment variable overrides this setting. +mpd_host = $HOME/.config/mpd/socket + +# Connect to MPD on the specified port. Note: MPD_PORT environment variable overrides this setting. +#mpd_port = PORT + +# Search for files in specified directory. This is needed for tag editor to work. +mpd_music_dir = $HOME/Music diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..d5177fb --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,157 @@ +--[[ init.lua ]] + +-- LEADER +-- These keybindings need to be defined before the first / +-- is called; otherwise, it will default to "\" +vim.g.mapleader = "\\" +vim.g.localleader = "\\" + +-- IMPORTS +require('vars') -- Variables +require('opts') -- Options +require('keys') -- Keymaps +require('auto') -- Automaps +require('plug') -- Plugins + +-- nvim-tree +require("nvim-tree").setup({ + sort_by = "case_sensitive", + view = { + adaptive_size = true, + mappings = { + list = { + { key = "u", action = "dir_up" }, + }, + }, + }, + renderer = { + group_empty = true, + }, + filters = { + dotfiles = true, + custom = { "^.git$" }, + }, +}) + +-- mason +require("mason").setup() + +-- lspconfig +require('lspconfig')['pyright'].setup { + on_attach = on_attach, + flags = lsp_flags, +} +require('lspconfig')['ansiblels'].setup{} +require('lspconfig')['bashls'].setup{} +require('lspconfig')['sumneko_lua'].setup{ + settings = { + Lua = { + diagnostics = { + globals = { 'vim', 'on_attach', 'lsp_flags'} + } + } + } +} +require('lspconfig')['yamlls'].setup{ + settings = { + yaml = { + customTags = { '!vault'} + } + } +} +require('lspconfig')['intelephense'].setup{} +require('lspconfig')['grammarly'].setup{} +require('lspconfig')['terraformls'].setup{} + +-- Completion Plugin Setup +local cmp = require'cmp' +cmp.setup({ + -- Enable LSP snippets + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + -- Add tab support + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }) + }, + -- Installed sources: + sources = { + { name = 'path' }, -- file paths + { name = 'nvim_lsp', keyword_length = 3 }, -- from language server + { name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized + { name = 'nvim_lua', keyword_length = 2}, -- complete neovim's Lua runtime API such vim.lsp.* + { name = 'buffer', keyword_length = 2 }, -- source current buffer + { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip + { name = 'calc'}, -- source for math calculation + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + formatting = { + fields = {'menu', 'abbr', 'kind'}, + format = function(entry, item) + local menu_icon ={ + nvim_lsp = 'λ', + vsnip = '⋗', + buffer = 'Ω', + path = '🖫', + } + item.menu = menu_icon[entry.source.name] + return item + end, + }, +}) + +-- treesitter +require('nvim-treesitter.configs').setup { + ensure_installed = { "lua", "toml", "python", "bash", "yaml" }, + auto_install = true, + highlight = { + enable = true, + additional_vim_regex_highlighting=false, + }, + ident = { enable = true }, + rainbow = { + enable = true, + extended_mode = true, + max_file_lines = nil, + } +} + +-- fterm +require'FTerm'.setup({ + auto_close = true, + border = 'double', + dimensions = { + height = 0.7, + width = 0.7, + }, +}) + +-- autopairs +require('nvim-autopairs').setup{} -- Add this line + +-- lualine +require('lualine').setup { + options = { + theme = 'onedark', + icons_enabled = true, + } +} + +-- onedark +require('onedark').load() diff --git a/.config/nvim/lua/auto.lua b/.config/nvim/lua/auto.lua new file mode 100644 index 0000000..49d5d35 --- /dev/null +++ b/.config/nvim/lua/auto.lua @@ -0,0 +1,9 @@ +--[[ auto.lua ]] + +-- run PackerInstall when plugins file saved +vim.cmd([[ + augroup packer_user_config + autocmd! + autocmd BufWritePost plug.lua source | PackerInstall + augroup end +]]) diff --git a/.config/nvim/lua/keys.lua b/.config/nvim/lua/keys.lua new file mode 100644 index 0000000..268cca8 --- /dev/null +++ b/.config/nvim/lua/keys.lua @@ -0,0 +1,49 @@ +--[[ keys.lua ]] +-- +-- This function takes in four parameters: +-- +-- mode: the mode you want the key bind to apply to (e.g., insert mode, normal mode, command mode, visual mode). +-- sequence: the sequence of keys to press. +-- command: the command you want the keypresses to execute. +-- options: an optional Lua table of options to configure (e.g., silent or noremap). + +local map = vim.api.nvim_set_keymap + +-- remap the key used to leave insert mode +map('i', 'jk', '', {}) + +-- movement mappings +map('', '', 'tabr', {}) +map('', '', 'tabl', {}) +map('', '', 'tabp', {}) +map('', '', 'tabn', {}) + +-- swap between split windows +map('n', '', ':wincmd k', {}) +map('n', '', ':wincmd j', {}) +map('n', '', ':wincmd h', {}) +map('n', '', ':wincmd l', {}) + +-- rewrite tabs to spaces +map('' ,'' ,'%retab!' , {}) + +-- press 'enter' after searching to clear highlighting until the next search +map('n', '', ':noh', {noremap = true}) + +-- copy/paste between vim instances +map('v' ,'y' ,':w! ~/.cache/nvim/vitmp' , {}) +map('n' ,'p' ,':r ~/.cache/nvim/vitmp' , {}) + +-- save as sudo +map('c', 'w!!', ':w !sudo tee > /dev/null %', {}) + +-- quickly edit/reload this configuration file +map('n', 'gev', ':e $MYVIMRC', {noremap = true}) +map('n', 'gsv', ':so $MYVIMRC', {noremap = true}) + +-- plugin mappings +map('', '', ':NvimTreeToggle', {}) +map('n', 'l', ':IndentLinesToggle', {}) +map('n', 't', ':TagbarToggle', {}) +map('n', 'ff', [[:Telescope find_files]], {}) +map('n', 'T', ':lua require("FTerm").toggle()', {}) diff --git a/.config/nvim/lua/opts.lua b/.config/nvim/lua/opts.lua new file mode 100644 index 0000000..1d6a89c --- /dev/null +++ b/.config/nvim/lua/opts.lua @@ -0,0 +1,104 @@ +--[[ opts.lua ]] +-- vim.o: maps to vim.api.nvim_set_option; equivalent to :set. +-- vim.go: maps to vim.api.nvim_set_option; equivalent to :setglobal. +-- vim.bo; maps to vim.api.nvim_buf_set_option; equivalent to :setlocal for buffer options. +-- vim.wo: maps to vim.api.nvim_win_set_option; equivalent to :setlocal for window options. + +local opt = vim.opt +local optg = vim.go +local optb = vim.bo +local optw = vim.wo +local cmd = vim.api.nvim_command + +-- [[ Context ]] +-- opt.colorcolumn = '80' -- str: Show col for max line length +opt.number = true -- bool: Show line numbers +opt.relativenumber = false -- bool: Show relative line numbers +opt.scrolloff = 4 -- int: Min num lines of context +opt.signcolumn = "yes" -- str: Show the sign column +opt.cursorline = true -- bool: highlight current line +opt.cursorcolumn = true -- boot: highlight current column + +-- [[ Filetypes ]] +opt.encoding = 'utf8' -- str: String encoding to use +opt.fileencoding = 'utf8' -- str: File encoding to use + +-- [[ Theme ]] +opt.syntax = "ON" -- str: Allow syntax highlighting +opt.termguicolors = true -- bool: If term supports ui color then enable +cmd('colorscheme onedark') -- cmd: Set the colorscheme + +-- [[ Search ]] +opt.ignorecase = true -- bool: Ignore case in search patterns +opt.smartcase = true -- bool: Override ignorecase if search contains capitals +opt.incsearch = true -- bool: Use incremental search +opt.hlsearch = true -- bool: Highlight search matches + +-- [[ Whitespace ]] +opt.expandtab = true -- bool: Use spaces instead of tabs +opt.shiftwidth = 2 -- num: Size of an indent +opt.softtabstop = 2 -- num: Number of spaces tabs count for in insert mode +opt.tabstop = 2 -- num: Number of spaces tabs count for +opt.autoindent = true -- bool: enable auto-indent +opt.foldmethod = "indent" +opt.foldlevel = 99 + +-- [[ Splits ]] +opt.splitright = true -- bool: Place new window to right of current one +opt.splitbelow = true -- bool: Place new window below the current one + +-- [[ Other ]] +opt.ruler = true +opt.complete = 'i' +opt.laststatus = 2 -- num: show status line +opt.autoindent = true -- bool: enable auto-indent +opt.backspace = "indent,eol,start" -- str: backspace through anything in insert mode +opt.wildmenu = true +opt.maxmempattern = 5000 -- num: increase memory used for pattern matching +opt.modelines = 5 + +-- highlighting +vim.cmd[[highlight Search ctermbg=LightYellow]] +vim.cmd[[highlight Search ctermfg=Red]] +vim.cmd[[highlight BadWhitespace ctermbg=red guibg=darkred]] + +--Set completeopt to have a better completion experience +-- :help completeopt +-- menuone: popup even when there's only one match +-- noinsert: Do not insert text until a selection is made +-- noselect: Do not select, force to select one from the menu +-- shortness: avoid showing extra messages when using completion +-- updatetime: set updatetime for CursorHold +opt.completeopt = {'menuone', 'noselect', 'noinsert'} +opt.shortmess = vim.opt.shortmess + { c = true} +vim.api.nvim_set_option('updatetime', 300) + +-- Fixed column for diagnostics to appear +-- Show autodiagnostic popup on cursor hover_range +-- Goto previous / next diagnostic warning / error +-- Show inlay_hints more frequently +vim.cmd([[ +set signcolumn=yes +autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) +]]) + +-- configure fterm +vim.api.nvim_create_user_command('FTermOpen', require('FTerm').open, { bang = true }) +vim.api.nvim_create_user_command('FTermClose', require('FTerm').close, { bang = true }) +vim.api.nvim_create_user_command('FTermExit', require('FTerm').exit, { bang = true }) +vim.api.nvim_create_user_command('FTermToggle', require('FTerm').toggle, { bang = true }) + +local fterm = require("FTerm") +local gitui = fterm:new({ + ft = 'fterm_gitui', + cmd = "gitui", + dimensions = { + height = 0.9, + width = 0.9 + } +}) + +-- Use this to toggle gitui in a floating terminal +vim.keymap.set('n', '', function() + gitui:toggle() +end) diff --git a/.config/nvim/lua/plug.lua b/.config/nvim/lua/plug.lua new file mode 100644 index 0000000..21aec43 --- /dev/null +++ b/.config/nvim/lua/plug.lua @@ -0,0 +1,62 @@ +--[[ plug.lua ]] + +return require('packer').startup(function(use) + -- Packer can manage itself + use 'wbthomason/packer.nvim' + + -- nvim-tree + use {'kyazdani42/nvim-tree.lua', + requires = { + 'kyazdani42/nvim-web-devicons', + }, + tag = 'nightly' + } + + -- mason + use 'williamboman/mason.nvim' + use 'williamboman/mason-lspconfig.nvim' + use 'neovim/nvim-lspconfig' + + -- treesitter + use 'nvim-treesitter/nvim-treesitter' + + -- Completion framework: + use 'hrsh7th/nvim-cmp' + + -- LSP completion source: + use 'hrsh7th/cmp-nvim-lsp' + + -- Useful completion sources: + use 'hrsh7th/cmp-nvim-lua' + use 'hrsh7th/cmp-nvim-lsp-signature-help' + use 'hrsh7th/cmp-vsnip' + use 'hrsh7th/cmp-path' + use 'hrsh7th/cmp-buffer' + use 'hrsh7th/vim-vsnip' + + -- telescope + use { + 'nvim-telescope/telescope.nvim', -- fuzzy finder + requires = { {'nvim-lua/plenary.nvim'} } + } + + -- quality-addons + use { 'majutsushi/tagbar' } -- code structure + use { 'Yggdroot/indentLine' } -- see indentation + use { 'tpope/vim-fugitive' } -- git integration + use { 'junegunn/gv.vim' } -- commit history + use { 'windwp/nvim-autopairs' } -- auto close brackets, etc. + use { 'numToStr/FTerm.nvim' } -- floating terminal + + + -- theme + use { 'mhinz/vim-startify' } -- start screen + use { 'DanilaMihailov/beacon.nvim' } -- cursor jump + use { + 'nvim-lualine/lualine.nvim', -- statusline + requires = {'kyazdani42/nvim-web-devicons', + opt = true} + } + use { 'navarasu/onedark.nvim' } + +end) diff --git a/.config/nvim/lua/vars.lua b/.config/nvim/lua/vars.lua new file mode 100644 index 0000000..574fbe1 --- /dev/null +++ b/.config/nvim/lua/vars.lua @@ -0,0 +1,9 @@ +--[[ vars.lua ]] + +local g = vim.g +g.t_co = 256 +g.background = "dark" + +-- Update the packpath +local packer_path = vim.fn.stdpath('config') .. '/site' +vim.o.packpath = vim.o.packpath .. ',' .. packer_path diff --git a/.config/nvim/site/pack/packer/start/packer.nvim b/.config/nvim/site/pack/packer/start/packer.nvim new file mode 160000 index 0000000..3a9f980 --- /dev/null +++ b/.config/nvim/site/pack/packer/start/packer.nvim @@ -0,0 +1 @@ +Subproject commit 3a9f9801f683946b9f1047d8f4bf9946c29e927d diff --git a/.config/ohmyzsh b/.config/ohmyzsh new file mode 160000 index 0000000..18e7e5d --- /dev/null +++ b/.config/ohmyzsh @@ -0,0 +1 @@ +Subproject commit 18e7e5d0339f3491a6c0324e2443415309b56173 diff --git a/.config/shell/aliases b/.config/shell/aliases new file mode 100644 index 0000000..4acdb5b --- /dev/null +++ b/.config/shell/aliases @@ -0,0 +1,84 @@ +# vim: set filetype=zsh + +alias dos2unix='sed "s/$//"' + +alias tmux='tmux -2' + +# list command +if command -v exa >/dev/null 2>&1; then + alias ls='exa' +else + alias ls='ls --color=auto' +fi +alias grep='grep --color=auto' +alias fgrep='fgrep --color=auto' +alias egrep='egrep --color=auto' + +alias ll='\ls -lh' +alias lla='\ls -lha' +alias lt='\ls --color=auto -lhFart' +if command -v lsd >/dev/null 2>&1; then + alias ls='lsd' + alias ll='lsd -l' + alias lla='lsd -la' +fi + +# editor +if command -v vim >/dev/null 2>&1; then + alias vi='vim' +fi +if command -v nvim >/dev/null 2>&1; then + alias vim='nvim' + alias vi='nvim' +fi +alias purevim='vim -u NONE' + +# tmux +if [[ -n $TMUX ]]; then + alias fzf='fzf-tmux' +fi + +# ansible +alias restart-bind='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml restart-bind.yml' +alias update-bind='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml site-setup.yml -l proddns01 -t bind' +alias update-squid='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml site-setup.yml -l prodinf02 -t squid' +alias update-certbot='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml site-setup.yml -l prodinf01 -t certbot' +alias update-haproxy='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml site-setup.yml -l prodhlb -t haproxy' +alias update-firewalls='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml site-setup.yml -t firewall' +alias run-envpatching='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml update-hosts.yml' +alias run-envreboot='cd ~/src/ansible-playbooks-prod; ansible-playbook -i inventory.yaml restart-hosts.yml' + +# configs +alias zshconfig="$EDITOR ~/.zshrc" +alias i3config="$EDITOR ~/.config/i3/config" +alias sshconfig="$EDITOR ~/.ssh/config" +alias edithosts="sudoedit /etc/hosts" +alias vimrc="cd ~/.config/nvim/; $EDITOR" + +# fix commands +alias ipcalc='~/.local/bin/ipcalc -n' +alias mpv="mpv -hwdec=vdpau" +alias ifstat="/usr/bin/ifstat" +alias snapper="sudo /usr/bin/snapper" +alias ap="~/.local/bin/ansible-playbook" + +# LVM +alias lvs='sudo lvs' +alias vgs='sudo vgs' +alias pvs='sudo pvs' +alias lvcreate='sudo lvcreate' +alias lvresize='sudo lvresize' + +# BTRFS +alias snapshot_home="sudo btrfs subvol snapshot /mnt/btrfsroot/home /.snaps/home@$(date '+%Y-%m-%d_%H-%M-%S')" +alias snapshot_rootfs="sudo btrfs subvol snapshot /mnt/btrfsroot/rootfs /.snaps/rootfs@$(date '+%Y-%m-%d_%H-%M-%S')" + +# youtube-dl +alias soundcloud-dl='youtube-dlc --extract-audio --audio-format vorbis --audio-quality 2' +alias ytdl-playlist='youtube-dlc --ignore-errors --extract-audio --audio-format vorbis --format bestaudio --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist' + +# python web server +alias websvr='python3 -m http.server 8000' + +# powershell +alias powershell='pwsh' diff --git a/.config/shell/common b/.config/shell/common new file mode 100644 index 0000000..05739ab --- /dev/null +++ b/.config/shell/common @@ -0,0 +1,50 @@ +# vim: set filetype=zsh + +# Set pager +export PAGER='less' + +# Preferred editor for local and remote sessions +if [[ -n $SSH_CONNECTION ]]; then + export EDITOR='nvim' +else + export EDITOR='nvim' +fi + +# Ansible Settings +export ANSIBLE_NOCOWS=1 +export ANSIBLE_VAULT_PASSWORD_FILE=$HOME/.local/bin/ansible-vault-pass-client + +# set MPD host +export MPD_HOST="$HOME/.config/mpd/socket" + +# pass passwordstore +PASSWORD_STORE_DIR=$HOME/.config/password-store +PASSWORD_STORE_KEY=$HOME/.config/password-store/.gpg-id + + +# unzip to directory of same name, minus .zip +unzipd () { + zipfile="$1" + zipdir=${1%.zip} + unzip -d "$zipdir" "$zipfile" +} + +zshreload () { + source ~/.zshrc +} + +winget () { + wget $1 --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36" +} + +myip () {curl https://ipinfo.io/ip} + +removespaces () { + mv "$1" `echo $1 | tr ' ' '_'` +} + +pdf () {xpdf $1 &} + +# download youtube playlist to create batchfile +# $1 is the playlist +ytpl-export () {yt-dlp -j --flat-playlist "$1" | jq -r '.id' | sed 's_^_https://youtu.be/_'} diff --git a/.config/yadm/config b/.config/yadm/config new file mode 100644 index 0000000..e69de29 diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..6310e61 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,61 @@ +# vim: set sw=2 sts=2 ts=2 noexpandtab : + +[color] + ui = auto + branch = auto + diff = auto + grep = auto + interactive = auto + status = auto + +[user] + email = ben@unkin.net + name = Ben Vincent + +[core] + autocrlf = false + excludesfile = ~/.config/git/global_ignore + whitespace = blank-at-eol,blank-at-eof,space-before-tab + +[init] + defaultBranch = master + +[push] + default = simple + +[rerere] + enabled = true + autoupdate = true + +[rebase] + # Automatically stash before a rebase and unstash afterwards. + autoStash = true + +[commit] + # Show diff when preparing commit message + verbose = true + template = ~/.config/git/gitmessage + +### +### Github specific +### +[github] + user = neoloc + +# read from given uri +# push to writable one +# http://bit.ly/g9c9Y2 +# +[url "http://github.com/"] + insteadOf = "gh:" + +[url "git@github.com:"] + pushInsteadOf = "https://github.com/" + pushInsteadOf = "http://github.com/" + pushInsteadOf = "gh:" + +[credential] + helper = store + +[pack] + threads = 2 diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..0186582 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,9 @@ +[submodule ".config/nvim/site/pack/packer/start/packer.nvim"] + path = .config/nvim/site/pack/packer/start/packer.nvim + url = https://github.com/wbthomason/packer.nvim +[submodule ".password-store"] + path = .password-store + url = https://git.unkin.net/unkinben/pass.git +[submodule ".config/ohmyzsh"] + path = .config/ohmyzsh + url = https://github.com/ohmyzsh/ohmyzsh.git diff --git a/.local/share/yadm/archive b/.local/share/yadm/archive new file mode 100644 index 0000000..17078e6 Binary files /dev/null and b/.local/share/yadm/archive differ diff --git a/.password-store b/.password-store new file mode 120000 index 0000000..5c083d1 --- /dev/null +++ b/.password-store @@ -0,0 +1 @@ +/home/ben/.config/password-store \ No newline at end of file diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..30d8b33 --- /dev/null +++ b/.zshrc @@ -0,0 +1,158 @@ +# If you come from bash you might have to change your $PATH. +export PATH=$HOME/.local/bin:$HOME/.cargo/bin:$PATH + +# set term +export TERM=xterm-256color + +# Path to your oh-my-zsh installation. +export ZSH="/home/$(whoami)/.config/ohmyzsh" + +# 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="fishy" + +# 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 dnf nmap pass rsync tmux poetry) + +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" +HIST_STAMPS="yyyy-mm-dd" +SAVEHIST=10000 # Number of entries +HISTSIZE=10000 +HISTFILE=~/.zsh_history # Where the history is stored +setopt APPEND_HISTORY # Don't erase history +setopt EXTENDED_HISTORY # Add additional data to history like timestamp +setopt INC_APPEND_HISTORY # Add immediately +setopt HIST_FIND_NO_DUPS # Don't show duplicates in search +setopt HIST_IGNORE_SPACE # Don't preserve spaces. You may want to turn it off +setopt NO_HIST_BEEP # Don't beep +setopt SHARE_HISTORY # Share history between session/terminals + +# set fpath +fpath=(~/.zsh/completion $fpath) + +# load the OMZ config +source $ZSH/oh-my-zsh.sh + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" +# passes the unexpanded glob to the app if it doesnt match (the 'bash ' way of doing things with rsync/scp) +setopt nonomatch + +# You may need to manually set your language environment +export LANG=en_AU.UTF-8 + +# set XDG_ vars +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_RUNTIME_DIR=/run/user/$(id -u $(whoami)) + +# load ssh-agent +eval $(systemctl --user show-environment | grep SSH_AUTH_SOCK) +export SSH_AUTH_SOCK + +# gpg-agent +#GPG_TTY=$(tty) +#export GPG_TTY + + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# ssh +# export SSH_KEY_PATH="~/.ssh/rsa_id" + +# 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`. + +# load shell settings +test -r $XDG_CONFIG_HOME/shell/common && source $XDG_CONFIG_HOME/shell/common +test -r $XDG_CONFIG_HOME/shell/aliases && source $XDG_CONFIG_HOME/shell/aliases