From b76aac107e3f16b7980c19271974f80c3ef0ce9e Mon Sep 17 00:00:00 2001 From: mitchell Date: Tue, 29 Sep 2020 03:02:28 -0400 Subject: [PATCH] Add desktop environment configs and provisioning scripts for debian - Add qutebrowser configs - Add xfce4-panel config - Add provision_debian script - Add upgrade_debian script - Refactor sync script to separate terminal and desktop env configs --- .config/bspwm/bspwmrc | 2 + .../functions/define_global_variables.fish | 1 + .config/keepassxc/keepassxc.ini | 25 ++ .config/qutebrowser/autoconfig.yml | 82 ++++++ .config/qutebrowser/bookmarks/urls | 2 + .config/qutebrowser/qsettings/QtProject.conf | 5 + .config/qutebrowser/quickmarks | 7 + .../xfce-perchannel-xml/xfce4-panel.xml | 70 +++++ .skhdrc | 3 + provision_debian | 258 ++++++++++++++++++ sync | 37 ++- upgrade_debian | 35 +++ 12 files changed, 516 insertions(+), 11 deletions(-) create mode 100644 .config/keepassxc/keepassxc.ini create mode 100644 .config/qutebrowser/autoconfig.yml create mode 100644 .config/qutebrowser/bookmarks/urls create mode 100644 .config/qutebrowser/qsettings/QtProject.conf create mode 100644 .config/qutebrowser/quickmarks create mode 100644 .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml create mode 100755 provision_debian create mode 100755 upgrade_debian diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc index be65d04..bd21478 100755 --- a/.config/bspwm/bspwmrc +++ b/.config/bspwm/bspwmrc @@ -4,7 +4,9 @@ setxkbmap -option altwin:swap_alt_win setxkbmap -option ctrl:swapcaps sxhkd & wmname LG3D +xfce4-panel -d & picom -b +~/.fehbg & bspc monitor -d I II III IV V VI VII diff --git a/.config/fish/functions/define_global_variables.fish b/.config/fish/functions/define_global_variables.fish index 6686f3d..494e03c 100644 --- a/.config/fish/functions/define_global_variables.fish +++ b/.config/fish/functions/define_global_variables.fish @@ -6,6 +6,7 @@ function define_global_variables -d 'Defines all and exclusively globally export set -gx DOTNET_ROOT $HOME/.asdf/installs/dotnet-core/(command -q dotnet; and dotnet --version) set -gx EDITOR nvim + set -gx BROWSER qutebrowser set -gx FZF_CTRL_T_COMMAND 'ag --hidden --ignore .git -g ""' set -gx FZF_DEFAULT_COMMAND 'ag --hidden --ignore .git -g ""' diff --git a/.config/keepassxc/keepassxc.ini b/.config/keepassxc/keepassxc.ini new file mode 100644 index 0000000..af4a794 --- /dev/null +++ b/.config/keepassxc/keepassxc.ini @@ -0,0 +1,25 @@ +[General] +ConfigVersion=1 +GlobalAutoTypeKey=65 +GlobalAutoTypeModifiers=100663296 +MinimizeAfterUnlock=true + +[Browser] +CustomProxyLocation= + +[GUI] +MinimizeOnClose=true +MinimizeOnStartup=true +ShowTrayIcon=true +TrayIconAppearance=monochrome-light + +[KeeShare] +Active="\n\n \n\n" +Foreign="\n\n \n\n" +Own="\n\n \n \n\n" +QuietSuccess=true + +[PasswordGenerator] +AdditionalChars= +ExcludedChars= +Logograms=true diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml new file mode 100644 index 0000000..e6a5b1b --- /dev/null +++ b/.config/qutebrowser/autoconfig.yml @@ -0,0 +1,82 @@ +# If a config.py file exists, this file is ignored unless it's explicitly loaded +# via config.load_autoconfig(). For more information, see: +# https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml +# DO NOT edit this file by hand, qutebrowser will overwrite it. +# Instead, create a config.py - see :help for details. + +config_version: 2 +settings: + aliases: + global: + q: close + qa: quit + w: session-save + wq: quit --save + wqa: quit --save + auto_save.interval: + global: 15000 + auto_save.session: + global: true + backend: + global: webengine + bindings.commands: + global: + insert: {} + colors.webpage.darkmode.enabled: + global: false + content.autoplay: + global: false + content.cookies.accept: + global: no-3rdparty + content.cookies.store: + global: false + content.local_storage: + global: true + content.notifications: + https://app.slack.com: true + content.webrtc_ip_handling_policy: + global: all-interfaces + content.xss_auditing: + global: false + downloads.location.directory: + global: null + downloads.location.prompt: + global: true + downloads.location.remember: + global: true + downloads.location.suggestion: + global: path + downloads.open_dispatcher: + global: null + downloads.position: + global: top + downloads.remove_finished: + global: -1 + editor.command: + global: + - kitty + - nvim + - -f + - '{file}' + - -c + - normal {line}G{column0}l + editor.encoding: + global: utf-8 + fonts.default_family: + global: IBM Plex Mono + fonts.web.family.fixed: + global: IBM Plex Mono + fonts.web.family.sans_serif: + global: IBM Plex Sans + fonts.web.family.serif: + global: IBM Plex Serif + fonts.web.family.standard: + global: IBM Plex Sans + fonts.web.size.default: + global: 16 + url.default_page: + global: http://wiki.m + url.start_pages: + global: http://wiki.m + window.title_format: + global: '{perc}{host}{title_sep}qutebrowser' diff --git a/.config/qutebrowser/bookmarks/urls b/.config/qutebrowser/bookmarks/urls new file mode 100644 index 0000000..3014764 --- /dev/null +++ b/.config/qutebrowser/bookmarks/urls @@ -0,0 +1,2 @@ +https://rotabull.octopus.app/app#/users/sign-in Octopus Deploy +https://logentries.com/login/ Try Logentries Log Management Free – Logentries diff --git a/.config/qutebrowser/qsettings/QtProject.conf b/.config/qutebrowser/qsettings/QtProject.conf new file mode 100644 index 0000000..24d7d63 --- /dev/null +++ b/.config/qutebrowser/qsettings/QtProject.conf @@ -0,0 +1,5 @@ +[FileDialog] +history=@Invalid() +lastVisited=file:///home/m/Downloads +qtVersion=5.14.2 +viewMode=Detail diff --git a/.config/qutebrowser/quickmarks b/.config/qutebrowser/quickmarks new file mode 100644 index 0000000..21e8d41 --- /dev/null +++ b/.config/qutebrowser/quickmarks @@ -0,0 +1,7 @@ +slack https://app.slack.com/client/T1FR44MU4/C1FR44RHS +hn https://news.ycombinator.com/ +ch https://app.clubhouse.io/rotabull/stories/space/1285/platform-eng +gh https://github.com/ +gcp https://console.cloud.google.com/projectselector2/home/dashboard?organizationId=817788800675&supportedpurview=project +aws https://console.aws.amazon.com/s3/home?region=us-east-1 +rip https://app.rippling.com/dashboard diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..2e37873 --- /dev/null +++ b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.skhdrc b/.skhdrc index 6c7daa0..f344cc8 100755 --- a/.skhdrc +++ b/.skhdrc @@ -1,6 +1,9 @@ # open terminal cmd - return : /Applications/kitty.app/Contents/MacOS/kitty --single-instance -d ~ +# open web browser +shift + cmd - return : /Applications/qutebrowser.app/Contents/MacOS/qutebrowser + # focus window alt - h : yabai -m window --focus west alt - j : yabai -m window --focus south diff --git a/provision_debian b/provision_debian new file mode 100755 index 0000000..0e0451b --- /dev/null +++ b/provision_debian @@ -0,0 +1,258 @@ +#!/usr/bin/env fish + +function main + provision_m_env + provision_desktop_env + provision_libvirt + #provision_vagrant + #provision_docker + #provision_syncthing + #provision_wireguard + #provision_caddy +end + +function provision_m_env + log "Provisioning m's environment." head + + log 'Installing git, neovim, tmux, rsync, curl, and kitty-terminfo...' + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes \ + git \ + neovim \ + tmux \ + rsync \ + curl \ + kitty-terminfo \ + > /dev/null 2>&1 + + log 'Installing fzf, silversearcher, bat, and feh.' + sudo apt-get install --yes fzf silversearcher-ag bat feh > /dev/null 2>&1 + + log 'Adding fish apt repo and install fish...' + sudo apt-get install --yes gpg > /dev/null 2>&1 + + echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/3/Debian_10/ /' | + sudo tee /etc/apt/sources.list.d/shells:fish:release:3.list + + curl -fsSL https://download.opensuse.org/repositories/shells:fish:release:3/Debian_10/Release.key | + gpg --dearmor | + sudo apt-key add - + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes fish > /dev/null 2>&1 + + log "Setting m's default shell to fish" + sudo chsh -s /usr/bin/fish m + + log 'Running dotfiles sync script.' + ./sync + + log 'Installing asdf-vm.' + git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.8 > /dev/null 2>&1 + + log "Done provisioning m's environment." tail +end + +function provision_desktop_env + log 'Provisioning desktop environment.' head + + log 'Installing window manager and compositor.' + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes bspwm sxhkd picom > /dev/null 2>&1 + + log 'Installing terminal.' + sudo apt-get install --yes kitty > /dev/null 2>&1 + + log 'Installing panel.' + sudo apt-get install --yes xfce4-panel xfce4-pulseaudio-plugin > /dev/null 2>&1 + + log 'Installing and configuring xinit and xclip.' + sudo apt-get install --yes xinit xclip > /dev/null 2>&1 + echo 'exec bspwm' > ~/.xinitrc + + log 'Installing browser.' + sudo apt-get install --yes qutebrowser > /dev/null 2>&1 + + log 'Installing application launcher.' + sudo apt-get install --yes rofi > /dev/null 2>&1 + + log 'Installing and configuring theme.' + sudo apt-get install --yes arc-theme fonts-ibm-plex unzip > /dev/null 2>&1 + + log 'Installing desktop background manager.' + sudo apt-get install --yes feh > /dev/null 2>&1 + + mkdir _fonts_tmp + cd _fonts_tmp + + wget -q https://github.com/JetBrains/JetBrainsMono/releases/download/v2.002/JetBrainsMono-2.002.zip + unzip JetBrainsMono-2.002.zip > /dev/null + mkdir -p ~/.local/share/fonts/truetype/JetBrainsMono + cp ./ttf/*.ttf ~/.local/share/fonts/truetype/JetBrainsMono/ + + cd .. + rm -r _fonts_tmp + + log 'Installing keepassxc and syncthing.' + sudo apt-get install --yes keepassxc syncthing > /dev/null 2>&1 + sudo systemctl enable syncthing@m + + mkdir -p ~/.config/gtk-3.0 + echo " +[Settings] +gtk-icon-theme-name = Adwaita +gtk-theme-name = Arc-Dark +gtk-font-name = IBM Plex Sans 11" > ~/.config/gtk-3.0/settings.ini + + log 'Done provisioning desktop environment.' tail +end + +function provision_libvirt + log 'Provisioning Libvirt and KVM.' head + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes qemu-system libvirt-clients libvirt-daemon-system > /dev/null 2>&1 + sudo adduser m libvirt + + log 'Done provisioning Libvirt and KVM' tail +end + +function provision_vagrant + log 'Provisioning vagrant and the libvirt provider.' head + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes wget unzip > /dev/null 2>&1 + + log 'Installing vagrant from upstream.' + mkdir ./vagrant; and cd ./vagrant + wget -q -O ./vagrant.zip https://releases.hashicorp.com/vagrant/2.2.10/vagrant_2.2.10_linux_amd64.zip + unzip ./vagrant.zip + mkdir -p ~/.local/bin + mv ./vagrant ~/.local/bin/ + cd ..; and rm -r ./vagrant + + log 'Installing vagrant libvirt provider.' + sudo apt-get --yes build-dep vagrant ruby-libvirt > /dev/null 2>&1 + sudo apt-get --yes install qemu libvirt-daemon-system libvirt-clients ebtables dnsmasq-base > /dev/null 2>&1 + sudo apt-get --yes install libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev > /dev/null 2>&1 + vagrant plugin install vagrant-libvirt + + log 'Done provisioning vagrant and libvirt provider.' tail +end + +function provision_docker + log 'Provisioning Docker CE and Docker Compose.' head + + log 'Installing docker dependencies.' + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg-agent \ + software-properties-common \ + > /dev/null 2>&1 + + log 'Adding Docker apt repo and install docker-ce.' + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - + + sudo add-apt-repository \ + 'deb [arch=amd64] https://download.docker.com/linux/debian + buster + stable' + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes docker-ce docker-ce-cli containerd.io > /dev/null 2>&1 + + log 'Installing docker-compose.' + set uname_m (uname -m) + set uname_s (uname -s) + + sudo curl \ + -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$uname_s-$uname_m" \ + -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + + log 'Adding m to docker group.' + sudo adduser m docker + + log 'Done provisioning Docker CE and Docker Compose.' tail +end + +function provision_wireguard + log 'Provisioning Wireguard.' head + + log 'Installing wireguard and resolvconf.' + set uname_r (uname -r) + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes "linux-headers-$uname_r" > /dev/null 2>&1 + sudo apt-get install --yes wireguard resolvconf > /dev/null 2>&1 + + log 'Configuring and enabling wg-quick@m-net.' + sudo mv m-net.conf /etc/wireguard/ + + sudo systemctl enable wg-quick@.service + sudo systemctl enable wg-quick@m-net.service + + log 'Done provisioning Wireguard.' tail +end + +function provision_syncthing + log 'Provisioning Syncthing.' head + + log 'Adding Syncthing apt repo and installing syncthing.' + curl -s https://syncthing.net/release-key.txt | sudo apt-key add - + + echo "deb https://apt.syncthing.net/ syncthing stable" | + sudo tee /etc/apt/sources.list.d/syncthing.list + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes syncthing > /dev/null 2>&1 + + log 'Configuring and enabled syncthing.' + mkdir -p ~/.config/syncthing + sudo mv config.xml ~/.config/syncthing/ + + sudo systemctl enable syncthing@.service + sudo systemctl enable syncthing@m.service + + log 'Done provisioning Syncthing.' tail +end + +function provision_caddy + log 'Provisioning Caddy.' head + + log 'Adding Caddy repo and installing caddy.' + echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" | + sudo tee -a /etc/apt/sources.list.d/caddy-fury.list + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get install --yes caddy > /dev/null 2>&1 + + log 'Configuring and enabling caddy.' + sudo mv Caddyfile /etc/caddy/ + + sudo systemctl enable caddy.service + + log 'Done provisioning Caddy.' tail +end + +function log -a message level + if test "$level" = head + echo " +########################################################################################### +# +#--> $message +#" + else if test "$level" = tail + echo "#--> $message +# +########################################################################################### +" + else + echo -e "#--> $message\n#" + end +end + +main diff --git a/sync b/sync index f2e4e4d..0e9612a 100755 --- a/sync +++ b/sync @@ -10,12 +10,16 @@ function main setup_tmp_space $cwd - sync_files + sync_terminal_env + + sync_desktop_env set_kitty_font_size $uname install_fisher_packages + install_nvim_plugins + set_color normal set_git_user @@ -35,26 +39,37 @@ function setup_tmp_space -a cwd end end -function sync_files +function sync_terminal_env if ! test -e ~/.config; mkdir ~/.config; end rsync -aP ./.config/fish ~/.config/ - rsync -aP ./.config/kitty ~/.config/ rsync -aP ./.config/nvim ~/.config/ - rsync -aP ./.config/bspwm ~/.config/ - rsync -aP ./.config/sxhkd ~/.config/ - rsync -aP ./.config/picom ~/.config/ rsync -aP ./.gitconfig ~/ rsync -aP ./.tmux-line.conf ~/ rsync -aP ./.tmux.conf ~/ rsync -aP ./.vim ~/ rsync -aP ./.vimrc ~/ - rsync -aP ./.ideavimrc ~/ - rsync -aP ./.yabairc ~/ - rsync -aP ./.skhdrc ~/ rsync -aP ./.taskrc ~/ end +function sync_desktop_env + set prompt 'Would you like to sync the desktop environment?' + read -p "set_color red; printf '\n$prompt (Y/n) '; set_color normal" sync_desktop_env + + if test -z "$sync_desktop_env"; or test "$sync_desktop_env" = 'y'; or test "$sync_desktop_env" = 'Y' + rsync -aP ./.config/kitty ~/.config/ + rsync -aP ./.config/bspwm ~/.config/ + rsync -aP ./.config/sxhkd ~/.config/ + rsync -aP ./.config/picom ~/.config/ + rsync -aP ./.config/xfce4 ~/.config/ + rsync -aP ./.config/qutebrowser ~/.config/ + rsync -aP ./.config/keepassxc ~/.config/ + rsync -aP ./.ideavimrc ~/ + rsync -aP ./.yabairc ~/ + rsync -aP ./.skhdrc ~/ + end +end + function set_kitty_font_size -a uname if test "$uname" = 'Darwin' sed -i '' -e 's/font_size 11\.0/font_size 13\.0/' ~/.config/kitty/kitty.conf @@ -71,9 +86,9 @@ end function set_git_user set prompt 'Would you like to set your git user name and email?' - read -p "set_color red; printf '\n$prompt (Y/n) '; set_color normal" set_git_user + read -p "set_color red; printf '\n$prompt (y/N) '; set_color normal" set_git_user - if test -z "$set_git_user"; or test "$set_git_user" = 'y'; or test "$set_git_user" = 'Y' + if test "$set_git_user" = 'y'; or test "$set_git_user" = 'Y' read -P 'name: ' name read -P 'email: ' email diff --git a/upgrade_debian b/upgrade_debian new file mode 100755 index 0000000..a6df722 --- /dev/null +++ b/upgrade_debian @@ -0,0 +1,35 @@ +#!/usr/bin/env fish + +function main + log 'Upgrading debian to unstable.' head + + echo ' +deb http://deb.debian.org/debian unstable main contrib non-free +deb-src http://deb.debian.org/debian unstable main contrib non-free' | sudo tee /etc/apt/sources.list + + sudo apt-get update > /dev/null 2>&1 + sudo apt-get dist-upgrade --yes + + log 'Done upgrading debian to unstable and rebooting.' tail + + sudo reboot +end + +function log -a message level + if test "$level" = head + echo " +########################################################################################### +# +#--> $message" + else if test "$level" = tail + echo "# +#--> $message +# +########################################################################################### +" + else + echo -e "#\n#--> $message" + end +end + +main