diff --git a/.chezmoiroot b/.chezmoiroot new file mode 100644 index 0000000..5e72f75 --- /dev/null +++ b/.chezmoiroot @@ -0,0 +1 @@ +home diff --git a/bin/is-executable b/bin/is-executable new file mode 100755 index 0000000..0a0a5cc --- /dev/null +++ b/bin/is-executable @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +if type "$1" >/dev/null 2>&1; then + exit 0 +else + exit 1 +fi \ No newline at end of file diff --git a/extras.sh b/extras.sh new file mode 100755 index 0000000..2686597 --- /dev/null +++ b/extras.sh @@ -0,0 +1,204 @@ +#! /usr/bin/env bash +# script to install the extra needed tools programmatically + +# add command line flags and function to govern install? + +MAMBAFORGE_RELEASE="https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh" +MAMBAFORGE_INSTALLER="Mambaforge-Linux-x86_64.sh" + + +help() { + cat << EOF +extras downloaders + +by default will download all packages listed below + +usage: $0 [OPTIONS] + + --help Show this message + --force Overwrite current installations + + To install a subset of these + use any of the package specific flag: + + --fzf + --nvm + --mambaforge + +EOF +} + +for opt in "$@"; do + case $opt in + --help) + help + exit 0 + ;; + --force) force=1 ;; + --fzf) fzf=1 ;; + --nvm) nvm=1 ;; + --mambaforge) mamba=1 ;; + *) + echo "unknown option: $opt" + help + exit 1 + ;; + esac +done + + +check_existing() { + pkg=$1 + install_dir=$2 + declare -n skip_out=$3 + + if [ -d "$install_dir" ]; then + echo "found existing $pkg installation" + if [[ "$force" ]]; then + echo "removing previous installation" + rm -rf $install_dir + skip_out=0 + else + skip_out=1 + fi + else + skip_out=0 + fi +} + + +ask() { + while true; do + read -p "$1 ([y]/n) " -r + REPLY=${REPLY:-"y"} + if [[ $REPLY =~ ^[Yy]$ ]]; then + return 1 + elif [[ $REPLY =~ ^[Nn]$ ]]; then + return 0 + fi + done +} + +install_fzf() { + echo "##############" + echo installing fzf + echo "##############" + + check_existing "fzf" "$HOME/.fzf" skip + + if [[ "$skip" -eq 1 ]]; + then + echo "remove your previous installation or rerun with --force" + return + fi + + echo "installing fzf using git" + + git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf + ~/.fzf/install \ + --key-bindings \ + --completion \ + --no-bash \ + --no-zsh \ + --no-update-rc \ + + +} +install_nvm() { + echo "##############" + echo installing nvm + echo "##############" + + check_existing "nvm" "$HOME/.nvm" skip + + if [[ "$skip" -eq 1 ]]; + then + echo "remove your previous installation or rerun with --force" + return + fi + + local current_dir=$PWD + + git clone https://github.com/nvm-sh/nvm.git ~/.nvm + cd ~/.nvm + git checkout v0.39.0 + . ./nvm.sh + + cd $current_dir +} + + +install_mambaforge() { + echo "#####################" + echo installing mambaforge + echo "#####################" + + + check_existing "mambaforge" "$HOME/mambaforge" skip + + if [[ "$skip" -eq 1 ]]; + then + echo "remove your previous installation or rerun with --force" + return + fi + + echo "#####################" + echo installing mambaforge + echo "#####################" + + echo "fetching install script from github" + + current_dir=$PWD + + cd ~/ + + wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh + bash "$MAMBAFORGE_INSTALLER" -s + rm "$MAMBAFORGE_INSTALLER" + + echo "cleaning up installer" + + cd $current_dir +} + + + +install_all() { + echo "installing all packages..." + echo + install_fzf + echo + install_nvm + echo + install_mambaforge + +} + +# remove once functional +echo $@ + +echo "#################" +echo EXTRAS DOWNLOADER +echo "#################" +echo + +if [ $# -eq 0 ]; + then + install_all + exit +fi + +if [ "$fzf" ]; then + install_fzf +fi + +if [ "$nvm" ]; then + install_nvm +fi + +if [ "$mamba" ]; + then install_mambaforge +fi + + +echo "FINISHED!" diff --git a/home/.chezmoi.toml.tmpl b/home/.chezmoi.toml.tmpl new file mode 100644 index 0000000..96340be --- /dev/null +++ b/home/.chezmoi.toml.tmpl @@ -0,0 +1 @@ +sourceDir = "~/.dotfiles" diff --git a/home/dot_zshrc b/home/dot_zshrc new file mode 100644 index 0000000..7951336 --- /dev/null +++ b/home/dot_zshrc @@ -0,0 +1,37 @@ +# If not running interactively, don't do anything + +[ -z "$PS1" ] && return + +#Get dotfiles directory + +if [ -d "$HOME/.dotfiles" ]; then + DOTFILES_DIR="$HOME/.dotfiles" +else + echo "Unable to find dotfiles, exiting." + return +fi + +# Make utilities available + +# PATH="$DOTFILES_DIR/bin:$PATH" + +for DOTFILE in "$DOTFILES_DIR"/system/{path,env,prompt,alias,function,conda,custom}.sh; do + [ -f "$DOTFILE" ] && . "$DOTFILE" +done + +unset DOTFILE + +DOTFILES_EXTRA_DIR="$HOME/.extra" + +if [ -d "$DOTFILES_EXTRA_DIR" ]; then + for EXTRAFILE in "$DOTFILES_EXTRA_DIR"/runcom/*.sh; do + [ -f "$EXTRAFILE" ] && . "$EXTRAFILE" + done +fi + +unset EXTRAFILE + +# Export + +export DOTFILES_DIR DOTFILES_EXTRA_DIR + diff --git a/home/private_dot_config/alacritty/alacritty.yml b/home/private_dot_config/alacritty/alacritty.yml new file mode 100644 index 0000000..b164c4c --- /dev/null +++ b/home/private_dot_config/alacritty/alacritty.yml @@ -0,0 +1,853 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Import additional configuration files +# +# Imports are loaded in order, skipping all missing files, with the importing +# file being loaded last. If a field is already present in a previous import, it +# will be replaced. +# +# All imports must either be absolute paths starting with `/`, or paths relative +# to the user's home directory starting with `~/`. +import: + - C:\Users\daylin\AppData\Roaming\alacritty\dracula-pro.yml + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +#env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + #TERM: alacritty + +window: + # Window dimensions (changes require restart) + # + # Number of lines/columns (not pixels) in the terminal. The number of columns + # must be at least `2`, while using a value of `0` for columns and lines will + # fall back to the window manager's recommended size. + dimensions: + columns: 90 + lines: 45 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + padding: + x: 10 + y: 20 + + # Spread additional padding evenly around the terminal content. + dynamic_padding: true + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background and no title bar buttons + decorations: full + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + title: Alacritty + + # Allow terminal applications to change Alacritty's window title. + #dynamic_title: true + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` + # and `light`. Set this to `None` to use the default theme variant. + #gtk_theme_variant: None + +#scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + #history: 10000 + + # Scrolling distance multiplier. + #multiplier: 3 + +# Font configuration +font: + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: "MonoLisa NF" + + # The `style` can be specified to pick a specific face. + #style: Regular + + # Bold font face + bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + family: "MonoLisa NF" + + # The `style` can be specified to pick a specific face. + style: Bold + + # Italic font face + italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + # family: "DejaVuSansMono NF" + family: "MonoLisa NF" + + # The `style` can be specified to pick a specific face. + style: Italic + + # Bold italic font face + bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + family: "MonoLisa NF" + + # The `style` can be specified to pick a specific face. + style: Bold Italic + + # Point size + size: 10 + + # Offset is the extra space around each character. `offset.y` can be thought + # of as modifying the line spacing, and `offset.x` as modifying the letter + # spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the + # right, increasing `y` moves the glyph upward. + #glyph_offset: + # x: 0 + # y: 0 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false`. + #use_thin_strokes: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +# Colors (Tomorrow Night) +#colors: + # Default colors + #primary: + # background: '#1d1f21' + # foreground: '#c5c8c6' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not + # present. If the bright foreground color is not set, or + # `draw_bold_text_with_bright_colors` is `false`, the normal foreground + # color will be used. + #dim_foreground: '#828482' + #bright_foreground: '#eaeaea' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #cursor: + # text: CellBackground + # cursor: CellForeground + + # Vi mode cursor colors + # + # Colors for the cursor when the vi mode is active. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #vi_mode_cursor: + # text: CellBackground + # cursor: CellForeground + + # Search colors + # + # Colors used for the search bar and match highlighting. + #search: + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #matches: + # foreground: '#000000' + # background: '#ffffff' + #focused_match: + # foreground: '#ffffff' + # background: '#000000' + + #bar: + # background: '#c5c8c6' + # foreground: '#1d1f21' + + # Keyboard regex hints + #hints: + # First character in the hint label + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #start: + # foreground: '#1d1f21' + # background: '#e9ff5e' + + # All characters after the first one in the hint label + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #end: + # foreground: '#e9ff5e' + # background: '#1d1f21' + + # Line indicator + # + # Color used for the indicator displaying the position in history during + # search and vi mode. + # + # By default, these will use the opposing primary color. + #line_indicator: + # foreground: None + # background: None + + # Selection colors + # + # Colors which should be used to draw the selection area. + # + # Allowed values are CellForeground/CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #selection: + # text: CellBackground + # background: CellForeground + + # Normal colors + #normal: + # black: '#1d1f21' + # red: '#cc6666' + # green: '#b5bd68' + # yellow: '#f0c674' + # blue: '#81a2be' + # magenta: '#b294bb' + # cyan: '#8abeb7' + # white: '#c5c8c6' + + # Bright colors + #bright: + # black: '#666666' + # red: '#d54e53' + # green: '#b9ca4a' + # yellow: '#e7c547' + # blue: '#7aa6da' + # magenta: '#c397d8' + # cyan: '#70c0b1' + # white: '#eaeaea' + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + #dim: + # black: '#131415' + # red: '#864343' + # green: '#777c44' + # yellow: '#9e824c' + # blue: '#556a7d' + # magenta: '#75617b' + # cyan: '#5b7d78' + # white: '#828482' + + # Indexed Colors + # + # The indexed colors include all colors from 16 to 256. + # When these are not set, they're filled with sensible defaults. + # + # Example: + # `- { index: 16, color: '#ff00ff' }` + # + #indexed_colors: [] + +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: + # Visual Bell Animation + # + # Animation effect for flashing the screen when the visual bell is rung. + # + # Values for `animation`: + # - Ease + # - EaseOut + # - EaseOutSine + # - EaseOutQuad + # - EaseOutCubic + # - EaseOutQuart + # - EaseOutQuint + # - EaseOutExpo + # - EaseOutCirc + # - Linear + #animation: EaseOutExpo + + # Duration of the visual bell flash in milliseconds. A `duration` of `0` will + # disable the visual bell animation. + #duration: 0 + + # Visual bell animation color. + #color: '#ffffff' + + # Bell Command + # + # This program is executed whenever the bell is rung. + # + # When set to `command: None`, no command will be executed. + # + # Example: + # command: + # program: notify-send + # args: ["Hello, World!"] + # + #command: None + +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. +#background_opacity: 1.0 + +#selection: + # This string contains all characters that are used as separators for + # "semantic words" in Alacritty. + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +#cursor: + # Cursor style + #style: + # Cursor shape + # + # Values for `shape`: + # - ▇ Block + # - _ Underline + # - | Beam + #shape: Block + + # Cursor blinking state + # + # Values for `blinking`: + # - Never: Prevent the cursor from ever blinking + # - Off: Disable blinking by default + # - On: Enable blinking by default + # - Always: Force the cursor to always blink + #blinking: Off + + # Vi mode cursor style + # + # If the vi mode cursor style is `None` or not specified, it will fall back to + # the style of the active value of the normal cursor. + # + # See `cursor.style` for available options. + #vi_mode_style: None + + # Cursor blinking interval in milliseconds. + #blink_interval: 750 + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + + # Thickness of the cursor relative to the cell width as floating point number + # from `0.0` to `1.0`. + #thickness: 0.15 + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. +# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the +# shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +#mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + +# Regex hints +# +# Terminal hints can be used to find text in the visible part of the terminal +# and pipe it to other applications. +#hints: + # Keys used for the hint labels. + #alphabet: "jfkdls;ahgurieowpq" + + # List with all available hints + # + # Each hint must have a `regex` and either an `action` or a `command` field. + # The fields `mouse`, `binding` and `post_processing` are optional. + # + # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and + # `mouse.mods` accept the same values as they do in the `key_bindings` section. + # + # The `mouse.enabled` field controls if the hint should be underlined while + # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. + # + # If the `post_processing` field is set to `true`, heuristics will be used to + # shorten the match if there are characters likely not to be part of the hint + # (e.g. a trailing `.`). This is most useful for URIs. + # + # Values for `action`: + # - Copy + # Copy the hint's text to the clipboard. + # - Paste + # Paste the hint's text to the terminal or search. + # - Select + # Select the hint's text. + # - MoveViModeCursor + # Move the vi mode cursor to the beginning of the hint. + #enabled: + # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ + # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" + # command: xdg-open + # post_processing: true + # mouse: + # enabled: true + # mods: None + # binding: + # key: U + # mods: Control|Shift + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty +# captures the mouse, the `Shift` modifier is automatically added as a +# requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - SearchForward +# Start searching toward the right of the search origin. +# - SearchBackward +# Start searching toward the left of the search origin. +# - Copy +# - Paste +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollHalfPageUp +# - ScrollHalfPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# Remove the terminal's scrollback history. +# - Hide +# Hide the Alacritty window. +# - Minimize +# Minimize the Alacritty window. +# - Quit +# Quit Alacritty. +# - ToggleFullscreen +# - SpawnNewInstance +# Spawn a new instance of Alacritty. +# - ClearLogNotice +# Clear Alacritty's UI warning and error notice. +# - ClearSelection +# Remove the active selection. +# - ReceiveChar +# - None +# +# - Vi mode exclusive actions: +# +# - Open +# Perform the action of the first matching hint under the vi mode cursor +# with `mouse.enabled` set to `true`. +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# Toggle semantic selection based on `selection.semantic_escape_chars`. +# +# - Vi mode exclusive cursor motion actions: +# +# - Up +# One line up. +# - Down +# One line down. +# - Left +# One character left. +# - Right +# One character right. +# - First +# First column, or beginning of the line when already at the first column. +# - Last +# Last column, or beginning of the line when already at the last column. +# - FirstOccupied +# First non-empty cell in this terminal row, or first non-empty cell of +# the line when already at the first cell of the row. +# - High +# Top of the screen. +# - Middle +# Center of the screen. +# - Low +# Bottom of the screen. +# - SemanticLeft +# Start of the previous semantically separated word. +# - SemanticRight +# Start of the next semantically separated word. +# - SemanticLeftEnd +# End of the previous semantically separated word. +# - SemanticRightEnd +# End of the next semantically separated word. +# - WordLeft +# Start of the previous whitespace separated word. +# - WordRight +# Start of the next whitespace separated word. +# - WordLeftEnd +# End of the previous whitespace separated word. +# - WordRightEnd +# End of the next whitespace separated word. +# - Bracket +# Character matching the bracket at the cursor's location. +# - SearchNext +# Beginning of the next match. +# - SearchPrevious +# Beginning of the previous match. +# - SearchStart +# Start of the match to the left of the vi mode cursor. +# - SearchEnd +# End of the match to the right of the vi mode cursor. +# +# - Search mode exclusive actions: +# - SearchFocusNext +# Move the focus to the next search match. +# - SearchFocusPrevious +# Move the focus to the previous search match. +# - SearchConfirm +# - SearchCancel +# - SearchClear +# Reset the search regex. +# - SearchDeleteWord +# Delete the last word in the search regex. +# - SearchHistoryPrevious +# Go to the previous regex in the search history. +# - SearchHistoryNext +# Go to the next regex in the search history. +# +# - macOS exclusive actions: +# - ToggleSimpleFullscreen +# Enter fullscreen without occupying another space. +# +# - Linux/BSD exclusive actions: +# +# - CopySelection +# Copy from the selection buffer. +# - PasteSelection +# Paste from the selection buffer. +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Search +# - Alt +# - Vi +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# in the order they were defined in. +#key_bindings: + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } + #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } + #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } + #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } + + # Vi Mode + #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } + #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } + #- { key: Escape, mode: Vi|~Search, action: ClearSelection } + #- { key: I, mode: Vi|~Search, action: ToggleViMode } + #- { key: I, mode: Vi|~Search, action: ScrollToBottom } + #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } + #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } + #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } + #- { key: G, mode: Vi|~Search, action: ScrollToTop } + #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } + #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } + #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } + #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } + #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } + #- { key: Y, mode: Vi|~Search, action: Copy } + #- { key: Y, mode: Vi|~Search, action: ClearSelection } + #- { key: Copy, mode: Vi|~Search, action: ClearSelection } + #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } + #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } + #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } + #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } + #- { key: Return, mode: Vi|~Search, action: Open } + #- { key: K, mode: Vi|~Search, action: Up } + #- { key: J, mode: Vi|~Search, action: Down } + #- { key: H, mode: Vi|~Search, action: Left } + #- { key: L, mode: Vi|~Search, action: Right } + #- { key: Up, mode: Vi|~Search, action: Up } + #- { key: Down, mode: Vi|~Search, action: Down } + #- { key: Left, mode: Vi|~Search, action: Left } + #- { key: Right, mode: Vi|~Search, action: Right } + #- { key: Key0, mode: Vi|~Search, action: First } + #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } + #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } + #- { key: H, mods: Shift, mode: Vi|~Search, action: High } + #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } + #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } + #- { key: B, mode: Vi|~Search, action: SemanticLeft } + #- { key: W, mode: Vi|~Search, action: SemanticRight } + #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } + #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } + #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } + #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } + #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } + #- { key: Slash, mode: Vi|~Search, action: SearchForward } + #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } + #- { key: N, mode: Vi|~Search, action: SearchNext } + #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } + + # Search Mode + #- { key: Return, mode: Search|Vi, action: SearchConfirm } + #- { key: Escape, mode: Search, action: SearchCancel } + #- { key: C, mods: Control, mode: Search, action: SearchCancel } + #- { key: U, mods: Control, mode: Search, action: SearchClear } + #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } + #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } + #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } + #- { key: Up, mode: Search, action: SearchHistoryPrevious } + #- { key: Down, mode: Search, action: SearchHistoryNext } + #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } + #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } + + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } + #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } + #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Plus, mods: Control, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } + #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Plus, mods: Command, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } + #- { key: H, mods: Command, action: Hide } + #- { key: H, mods: Command|Alt, action: HideOtherApplications } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: N, mods: Command, action: SpawnNewInstance } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + #- { key: F, mods: Command, mode: ~Search, action: SearchForward } + #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - Off + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false diff --git a/home/private_dot_config/alacritty/dracula-pro.yml b/home/private_dot_config/alacritty/dracula-pro.yml new file mode 100755 index 0000000..ce75bcb --- /dev/null +++ b/home/private_dot_config/alacritty/dracula-pro.yml @@ -0,0 +1,53 @@ +# Colors (Dracula PRO) +colors: + # Default colors + primary: + background: '0x22212c' + foreground: '0xf8f8f2' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not present. + # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors` + # is `false`, the normal foreground color will be used. + #dim_foreground: '0x9a9a9a' + #bright_foreground: '0xffffff' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. If these are unset, + # the cursor color will be the inverse of the cell color. + cursor: + text: '0x454158' + cursor: '0xf8f8f2' + + # Selection colors + # + # Colors which should be used to draw the selection area. If selection + # background is unset, selection color will be the inverse of the cell colors. + # If only text is unset the cell text color will remain the same. + selection: + text: '0xf8f8f2' + background: '0x454158' + + # Normal colors + normal: + black: '0x22212c' + red: '0xff9580' + green: '0x8aff80' + yellow: '0xffff80' + blue: '0x9580ff' + magenta: '0xff80bf' + cyan: '0x80ffea' + white: '0xf8f8f2' + + # Bright colors + bright: + black: '0x22212c' + red: '0xffaa99' + green: '0xa2ff99' + yellow: '0xffff99' + blue: '0xaa99ff' + magenta: '0xff99cc' + cyan: '0x99ffee' + white: '0xffffff' \ No newline at end of file diff --git a/home/private_dot_config/alacritty/dracula.yml b/home/private_dot_config/alacritty/dracula.yml new file mode 100644 index 0000000..afafffa --- /dev/null +++ b/home/private_dot_config/alacritty/dracula.yml @@ -0,0 +1,61 @@ +# 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' + 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/home/private_dot_config/alacritty/update.sh b/home/private_dot_config/alacritty/update.sh new file mode 100755 index 0000000..ca9a4c6 --- /dev/null +++ b/home/private_dot_config/alacritty/update.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# run this from within WSL + +files=(alacritty.yml dracula.yml dracula-pro.yml) + +for file in "${files[@]}" +do + cp -v $DOTFILES_DIR/config/alacritty/$file /mnt/c/Users/daylin/AppData/Roaming/alacritty/$file +done + diff --git a/home/private_dot_config/bottom/bottom.toml b/home/private_dot_config/bottom/bottom.toml new file mode 100644 index 0000000..f2733fa --- /dev/null +++ b/home/private_dot_config/bottom/bottom.toml @@ -0,0 +1,161 @@ +# This is a default config file for bottom. All of the settings are commented +# out by default; if you wish to change them uncomment and modify as you see +# fit. + +# This group of options represents a command-line flag/option. Flags explicitly +# added when running (ie: btm -a) will override this config file if an option +# is also set here. + +[flags] +# Whether to hide the average cpu entry. +#hide_avg_cpu = false +# Whether to use dot markers rather than braille. +#dot_marker = false +# The update rate of the application. +rate = 250 +# Whether to put the CPU legend to the left. +#left_legend = false +# Whether to set CPU% on a process to be based on the total CPU or just current usage. +#current_usage = false +# Whether to group processes with the same name together by default. +#group_processes = false +# Whether to make process searching case sensitive by default. +#case_sensitive = false +# Whether to make process searching look for matching the entire word by default. +#whole_word = false +# Whether to make process searching use regex by default. +#regex = false +# Defaults to Celsius. Temperature is one of: +#temperature_type = "k" +#temperature_type = "f" +#temperature_type = "c" +#temperature_type = "kelvin" +#temperature_type = "fahrenheit" +#temperature_type = "celsius" +# The default time interval (in milliseconds). +#default_time_value = 60000 +# The time delta on each zoom in/out action (in milliseconds). +#time_delta = 15000 +# Hides the time scale. +#hide_time = false +# Override layout default widget +#default_widget_type = "proc" +#default_widget_count = 1 +# Use basic mode +#basic = false +# Use the old network legend style +#use_old_network_legend = false +# Remove space in tables +#hide_table_gap = false +# Show the battery widgets +#battery = false +# Disable mouse clicks +#disable_click = false +# Built-in themes. Valid values are "default", "default-light", "gruvbox", "gruvbox-light", "nord", "nord-light" +#color = "default" +# Show memory values in the processes widget as values by default +#mem_as_value = false +# Show tree mode by default in the processes widget. +#tree = false +# Shows an indicator in table widgets tracking where in the list you are. +#show_table_scroll_position = false +# Show processes as their commands by default in the process widget. +process_command = true +# Displays the network widget with binary prefixes. +#network_use_binary_prefix = false +# Displays the network widget using bytes. +#network_use_bytes = false +# Displays the network widget with a log scale. +#network_use_log = false +# Hides advanced options to stop a process on Unix-like systems. +#disable_advanced_kill = false + +# These are all the components that support custom theming. Note that colour support +# will depend on terminal support. + +#[colors] # Uncomment if you want to use custom colors +# Represents the colour of table headers (processes, CPU, disks, temperature). +#table_header_color="LightBlue" +# Represents the colour of the label each widget has. +#widget_title_color="Gray" +# Represents the average CPU color. +#avg_cpu_color="Red" +# Represents the colour the core will use in the CPU legend and graph. +#cpu_core_colors=["LightMagenta", "LightYellow", "LightCyan", "LightGreen", "LightBlue", "LightRed", "Cyan", "Green", "Blue", "Red"] +# Represents the colour RAM will use in the memory legend and graph. +#ram_color="LightMagenta" +# Represents the colour SWAP will use in the memory legend and graph. +#swap_color="LightYellow" +# Represents the colour rx will use in the network legend and graph. +#rx_color="LightCyan" +# Represents the colour tx will use in the network legend and graph. +#tx_color="LightGreen" +# Represents the colour of the border of unselected widgets. +#border_color="Gray" +# Represents the colour of the border of selected widgets. +#highlighted_border_color="LightBlue" +# Represents the colour of most text. +#text_color="Gray" +# Represents the colour of text that is selected. +#selected_text_color="Black" +# Represents the background colour of text that is selected. +#selected_bg_color="LightBlue" +# Represents the colour of the lines and text of the graph. +#graph_color="Gray" +# Represents the colours of the battery based on charge +#high_battery_color="green" +#medium_battery_color="yellow" +#low_battery_color="red" + +# Layout - layouts follow a pattern like this: +# [[row]] represents a row in the application. +# [[row.child]] represents either a widget or a column. +# [[row.child.child]] represents a widget. +# +# All widgets must have the type value set to one of ["cpu", "mem", "proc", "net", "temp", "disk", "empty"]. +# All layout components have a ratio value - if this is not set, then it defaults to 1. +# The default widget layout: +[[row]] + ratio=25 + [[row.child]] + ratio=6 + type="cpu" + [[row.child]] + ratio=4 + type="mem" +[[row]] + ratio=75 + [[row.child]] + type="proc" + default=true + + +# Filters - you can hide specific temperature sensors, network interfaces, and disks using filters. This is admittedly +# a bit hard to use as of now, and there is a planned in-app interface for managing this in the future: +#[disk_filter] +#is_list_ignored = true +#list = ["/dev/sda\\d+", "/dev/nvme0n1p2"] +#regex = true +#case_sensitive = false +#whole_word = false + +#[mount_filter] +#is_list_ignored = true +#list = ["/mnt/.*", "/boot"] +#regex = true +#case_sensitive = false +#whole_word = false + +#[temp_filter] +#is_list_ignored = true +#list = ["cpu", "wifi"] +#regex = false +#case_sensitive = false +#whole_word = false + +#[net_filter] +#is_list_ignored = true +#list = ["virbr0.*"] +#regex = true +#case_sensitive = false +#whole_word = false diff --git a/home/private_dot_config/conda/condarc b/home/private_dot_config/conda/condarc new file mode 100644 index 0000000..c87063f --- /dev/null +++ b/home/private_dot_config/conda/condarc @@ -0,0 +1 @@ +changeps1: False \ No newline at end of file diff --git a/home/private_dot_config/git/config b/home/private_dot_config/git/config new file mode 100644 index 0000000..d80c1c9 --- /dev/null +++ b/home/private_dot_config/git/config @@ -0,0 +1,17 @@ +[credential] + helper = cache +[core] + editor = nvim +[user] + name = Daylin Morgan + email = daylinmorgan@gmail.com +[submodule] + recurse = true +[pull] + rebase = true +[init] + defaultBranch = main +[branch] + autosetuprebase = always +[alias] + adog = log --all --decorate --oneline --graph diff --git a/home/private_dot_config/lazygit/config.yml b/home/private_dot_config/lazygit/config.yml new file mode 100644 index 0000000..0ae8860 --- /dev/null +++ b/home/private_dot_config/lazygit/config.yml @@ -0,0 +1,9 @@ +gui: + theme: + selectedLineBgColor: + - reverse + selectedRangeBgColor: + - reverse + showFileTree: true +git: + branchLogCmd: 'git log --graph --all --color=always --decorate --date=relative --oneline' diff --git a/home/private_dot_config/lf/lfcd.sh b/home/private_dot_config/lf/lfcd.sh new file mode 100644 index 0000000..984ba2c --- /dev/null +++ b/home/private_dot_config/lf/lfcd.sh @@ -0,0 +1,29 @@ +# Change working dir in shell to last dir in lf on exit (adapted from ranger). +# +# You need to either copy the content of this file to your shell rc file +# (e.g. ~/.bashrc) or source this file directly: +# +# LFCD="/path/to/lfcd.sh" +# if [ -f "$LFCD" ]; then +# source "$LFCD" +# fi +# +# You may also like to assign a key to this command: +# +# bind '"\C-o":"lfcd\C-m"' # bash +# bindkey -s '^o' 'lfcd\n' # zsh +# + +lfcd () { + tmp="$(mktemp)" + lf -last-dir-path="$tmp" "$@" + if [ -f "$tmp" ]; then + dir="$(cat "$tmp")" + rm -f "$tmp" + if [ -d "$dir" ]; then + if [ "$dir" != "$(pwd)" ]; then + cd "$dir" + fi + fi + fi +} diff --git a/home/private_dot_config/lf/lfrc b/home/private_dot_config/lf/lfrc new file mode 100644 index 0000000..4c2a126 --- /dev/null +++ b/home/private_dot_config/lf/lfrc @@ -0,0 +1,100 @@ +# interpreter for shell commands +set shell sh + +# set '-eu' options for shell commands +# These options are used to have safer shell commands. Option '-e' is used to +# exit on error and option '-u' is used to give error for unset variables. +# Option '-f' disables pathname expansion which can be useful when $f, $fs, and +# $fx variables contain names with '*' or '?' characters. However, this option +# is used selectively within individual commands as it can be limiting at +# times. +set shellopts '-eu' + +# set internal field separator (IFS) to "\n" for shell commands +# This is useful to automatically split file names in $fs and $fx properly +# since default file separator used in these variables (i.e. 'filesep' option) +# is newline. You need to consider the values of these options and create your +# commands accordingly. +set ifs "\n" + +# leave some space at the top and the bottom of the screen +set scrolloff 10 + +# use enter for shell commands +map shell + +# execute current file (must be executable) +map x $$f +map X !$f + +# dedicated keys for file opener actions +map o &mimeopen $f +map O $mimeopen --ask $f + +# define a custom 'open' command +# This command is called when current file is not a directory. You may want to +# use either file extensions and/or mime types here. Below uses an editor for +# text files and a file opener for the rest. +cmd open ${{ + test -L $f && f=$(readlink -f $f) + case $(file --mime-type $f -b) in + text/*) $EDITOR $fx;; + *) for f in $fx; do setsid $OPENER $f > /dev/null 2> /dev/null & done;; + esac +}} + +# define a custom 'rename' command without prompt for overwrite +# cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1 +# map r push :rename + +# make sure trash folder exists +# %mkdir -p ~/.trash + +# move current file or selected files to trash folder +# (also see 'man mv' for backup/overwrite options) +cmd trash %set -f; mv $fx ~/.trash + +# define a custom 'delete' command +# cmd delete ${{ +# set -f +# printf "$fx\n" +# printf "delete?[y/n]" +# read ans +# [ $ans = "y" ] && rm -rf $fx +# }} + +# use '' key for either 'trash' or 'delete' command +# map trash +# map delete + +# extract the current file with the right command +# (xkcd link: https://xkcd.com/1168/) +cmd extract ${{ + set -f + case $f in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; + *.tar.gz|*.tgz) tar xzvf $f;; + *.tar.xz|*.txz) tar xJvf $f;; + *.zip) unzip $f;; + *.rar) unrar x $f;; + *.7z) 7z x $f;; + esac +}} + +# compress current file or selected files with tar and gunzip +cmd tar ${{ + set -f + mkdir $1 + cp -r $fx $1 + tar czf $1.tar.gz $1 + rm -rf $1 +}} + +# compress current file or selected files with zip +cmd zip ${{ + set -f + mkdir $1 + cp -r $fx $1 + zip -r $1.zip $1 + rm -rf $1 +}} diff --git a/home/private_dot_config/lsd/config.yaml b/home/private_dot_config/lsd/config.yaml new file mode 100644 index 0000000..77c0bca --- /dev/null +++ b/home/private_dot_config/lsd/config.yaml @@ -0,0 +1,114 @@ +# == Classic == +# This is a shorthand to override some of the options to be backwards compatible +# with `ls`. It affects the "color"->"when", "sorting"->"dir-grouping", "date" +# and "icons"->"when" options. +# Possible values: false, true +classic: false + +# == Blocks == +# This specifies the columns and their order when using the long and the tree +# layout. +# Possible values: permission, user, group, size, size_value, date, name, inode +blocks: + - permission + - user + - size + - date + - name + +# == Color == +# This has various color options. (Will be expanded in the future.) +color: + # When to colorize the output. + # When "classic" is set, this is set to "never". + # Possible values: never, auto, always + when: auto + +# == Date == +# This specifies the date format for the date column. The freeform format +# accepts an strftime like string. +# When "classic" is set, this is set to "date". +# Possible values: date, relative, + +date: +<%Y.%m.%d> + +# == Dereference == +# Whether to dereference symbolic links. +# Possible values: false, true +dereference: false + +# == Display == +# What items to display. Do not specify this for the default behavior. +# Possible values: all, almost-all, directory-only +# display: all + +# == Icons == +icons: + # When to use icons. + # When "classic" is set, this is set to "never". + # Possible values: always, auto, never + when: auto + # Which icon theme to use. + # Possible values: fancy, unicode + theme: fancy + # Separator between icon and the name + # Default to 1 space + separator: ' ' + + +# == Ignore Globs == +# A list of globs to ignore when listing. +ignore-globs: + - .git + - node_modules + +# == Indicators == +# Whether to add indicator characters to certain listed files. +# Possible values: false, true +indicators: false + +# == Layout == +# Which layout to use. "oneline" might be a bit confusing here and should be +# called "one-per-line". It might be changed in the future. +# Possible values: grid, tree, oneline +layout: grid + +# == Recursion == +recursion: + # Whether to enable recursion. + # Possible values: false, true + enabled: false + # How deep the recursion should go. This has to be a positive integer. Leave + # it unspecified for (virtually) infinite. + depth: 2 + +# == Size == +# Specifies the format of the size column. +# Possible values: default, short, bytes +size: default + +# == Sorting == +sorting: + # Specify what to sort by. + # Possible values: extension, name, time, size, version + column: name + # Whether to reverse the sorting. + # Possible values: false, true + reverse: false + # Whether to group directories together and where. + # When "classic" is set, this is set to "none". + # Possible values: first, last, none + dir-grouping: none + +# == No Symlink == +# Whether to omit showing symlink targets +# Possible values: false, true +no-symlink: false + +# == Total size == +# Whether to display the total size of directories. +# Possible values: false, true +total-size: false + +# == Symlink arrow == +# Specifies how the symlink arrow display, chars in both ascii and utf8 +symlink-arrow: ⇒ diff --git a/home/private_dot_config/lvim/config.lua b/home/private_dot_config/lvim/config.lua new file mode 100644 index 0000000..d1dccb9 --- /dev/null +++ b/home/private_dot_config/lvim/config.lua @@ -0,0 +1,37 @@ +require("keybindings") + +-- general +lvim.log.level = "warn" +lvim.format_on_save = true +lvim.colorscheme = "dracula" + +lvim.leader = "space" +lvim.builtin.dashboard.active = true +lvim.builtin.terminal.active = true +lvim.builtin.nvimtree.setup.view.side = "left" +lvim.builtin.nvimtree.show_icons.git = 0 + +lvim.builtin.treesitter.ensure_installed = { + "bash", + "json", + "lua", + "python", + "css", + "rust", + "yaml", +} + +lvim.builtin.treesitter.highlight.enabled = true + +lvim.plugins = { + {"dracula/vim", + as = "dracula"}, + {"snakemake/snakemake", + rtp="misc/vim", + ft = {"Snakefile","snk"} + } +} + +-- settings +local opt = vim.opt +opt.timeoutlen = 500 diff --git a/home/private_dot_config/lvim/lua/keybindings.lua b/home/private_dot_config/lvim/lua/keybindings.lua new file mode 100644 index 0000000..4b5e426 --- /dev/null +++ b/home/private_dot_config/lvim/lua/keybindings.lua @@ -0,0 +1,13 @@ +-- Map a key with optional options +function map(mode, keys, action, options) + if options == nil then + options = {} + end + vim.api.nvim_set_keymap(mode,keys,action,options) +end + + + + +map('i','jk','',{noremap=true}) +map('v','jk','',{noremap=true}) diff --git a/home/private_dot_config/nvim/init.lua b/home/private_dot_config/nvim/init.lua new file mode 100644 index 0000000..a8552e5 --- /dev/null +++ b/home/private_dot_config/nvim/init.lua @@ -0,0 +1,4 @@ +require('settings') +require('plugins') +require('keybindings') + diff --git a/home/private_dot_config/nvim/init.vim.bak b/home/private_dot_config/nvim/init.vim.bak new file mode 100644 index 0000000..096fd8b --- /dev/null +++ b/home/private_dot_config/nvim/init.vim.bak @@ -0,0 +1,87 @@ +" Custom Mappings +imap jj + +"--------------- +" Tabs +"--------------- +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set noexpandtab + +" Use case insensitive search, except when using capital letters +set ignorecase +set smartcase + +" When opening a new line and no filetype-specific indenting is enabled, keep +" the same indent as the line you're currently on. Useful for READMEs, etc. +set autoindent + +" Display line numbers on the left +set number + +" Increase undo limit +set history=1000 + +" Disable swap files +set noswapfile + +" Show lines above and below cursor +set scrolloff=5 + +" Update every 300 ms +set updatetime=300 + + +let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim' +if empty(glob(data_dir . '/autoload/plug.vim')) + silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' + autocmd VimEnter * PlugInstall --sync | source $MYVIMRC +endif + + +"--------------- +" Plugins +"--------------- +call plug#begin() + Plug 'preservim/NERDTree' + Plug 'Xuyuanp/nerdtree-git-plugin' + Plug 'ntpeters/vim-better-whitespace' + Plug 'mhinz/vim-startify' + Plug 'neoclide/coc.nvim', {'branch': 'release'} + Plug 'cespare/vim-toml', { 'branch': 'main' } + Plug 'snakemake/snakemake', {'rtp': 'misc/vim'} + Plug 'airblade/vim-gitgutter' +call plug#end() + +nnoremap n :NERDTreeFocus +nnoremap :NERDTree +nnoremap :NERDTreeToggle +nnoremap :NERDTreeFind + +let g:NERDTreeGitStatusUseNerdFonts = 1 " you should install nerdfonts by yourself. default: 0 + +"--------------- +"COC Config +"--------------- + +" Use tab for trigger completion with characters ahead and navigate. +" NOTE: Use command ':verbose imap ' to make sure tab is not mapped by +" other plugin before putting this into your config. +inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() +inoremap pumvisible() ? "\" : "\" + +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + + +"--------------- +"Gitgutter +"--------------- +"turn off background of git sign column +highlight! link SignColumn LineNr diff --git a/home/private_dot_config/nvim/lua/configs/startup.lua b/home/private_dot_config/nvim/lua/configs/startup.lua new file mode 100644 index 0000000..8251770 --- /dev/null +++ b/home/private_dot_config/nvim/lua/configs/startup.lua @@ -0,0 +1,3 @@ +local settings = require"startup.themes.startify" + +return settings diff --git a/home/private_dot_config/nvim/lua/keybindings.lua b/home/private_dot_config/nvim/lua/keybindings.lua new file mode 100644 index 0000000..4b5e426 --- /dev/null +++ b/home/private_dot_config/nvim/lua/keybindings.lua @@ -0,0 +1,13 @@ +-- Map a key with optional options +function map(mode, keys, action, options) + if options == nil then + options = {} + end + vim.api.nvim_set_keymap(mode,keys,action,options) +end + + + + +map('i','jk','',{noremap=true}) +map('v','jk','',{noremap=true}) diff --git a/home/private_dot_config/nvim/lua/plugins.lua b/home/private_dot_config/nvim/lua/plugins.lua new file mode 100644 index 0000000..ae5d1d4 --- /dev/null +++ b/home/private_dot_config/nvim/lua/plugins.lua @@ -0,0 +1,49 @@ +-- LOAD THE PLUGINS + +-- install packer on the fly +local fn = vim.fn +local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' +if fn.empty(fn.glob(install_path)) > 0 then + Packer_bootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) +end +-- + + +return require('packer').startup(function(use) + + use 'preservim/NERDTree' + use { + 'goolord/alpha-nvim', + requires = { 'kyazdani42/nvim-web-devicons' }, + config = function () + require'alpha'.setup(require'alpha.themes.startify'.opts) + end +} + use { + 'airblade/vim-gitgutter', + config = function () + local cmd = vim.cmd + cmd [[highlight! link SignColumn LineNr]] + end + } + + use { + 'neoclide/coc.nvim', + branch='release' + } + + -- language specific plugins + -- python + use { + 'snakemake/snakemake', + rtp="misc/vim", + ft={"Snakefile","snk"} + } + + -- toml + use 'cespare/vim-toml' + + if Packer_bootstrap then + require('packer').sync() + end +end) diff --git a/home/private_dot_config/nvim/lua/settings.lua b/home/private_dot_config/nvim/lua/settings.lua new file mode 100644 index 0000000..3d788d5 --- /dev/null +++ b/home/private_dot_config/nvim/lua/settings.lua @@ -0,0 +1,32 @@ +-- general settings +local o = vim.o +local w = vim.wo +local b = vim.bo + +b.autoindent = true +b.expandtab = true +b.softtabstop = 4 +b.shiftwidth = 4 + +b.tabstop = 4 +b.smartindent = true +b.modeline = false +b.shiftwidth = 4 +b.tabstop = 4 +b.smartindent = true +b.modeline = false + +o.swapfile = false +o.scrolloff = 5 +o.updatetime = 300 + +w.number = true + +if vim.fn.has('multi_byte') == 1 and vim.o.encoding == 'utf-8' then + o.listchars = [[tab:▸ ,extends:❯,precedes:❮,nbsp:±,trail:…]] +else + o.listchars = [[tab:> ,extends:>,precedes:<,nbsp:.,trail:_]] +end + +o.timeoutlen = 300 + diff --git a/home/private_dot_config/rclone/filter-file.txt b/home/private_dot_config/rclone/filter-file.txt new file mode 100644 index 0000000..1e577a9 --- /dev/null +++ b/home/private_dot_config/rclone/filter-file.txt @@ -0,0 +1,5 @@ +- .git/** +- .vscode/** +- ~$* +- node_modules/** ++ ** diff --git a/home/private_dot_config/sheldon/plugins.toml b/home/private_dot_config/sheldon/plugins.toml new file mode 100644 index 0000000..f0040ac --- /dev/null +++ b/home/private_dot_config/sheldon/plugins.toml @@ -0,0 +1,55 @@ +# `sheldon` configuration file +# ---------------------------- +# +# You can modify this file directly or you can use one of the following +# `sheldon` commands which are provided to assist in editing the config file: +# +# - `sheldon add` to add a new plugin to the config file +# - `sheldon edit` to open up the config file in the default editor +# - `sheldon remove` to remove a plugin from the config file +# +# See the documentation for more https://github.com/rossmacarthur/sheldon#readme + +shell = "zsh" + + +[plugins] + +# oh-my-zsh plugins +[plugins.ohmyzsh-plugins] +github = 'ohmyzsh/ohmyzsh' +dir = 'plugins' +use = ['{git,dotenv,extract,tmux}.plugin.zsh'] + +[plugins.ohmyzsh-lib] +github = 'ohmyzsh/ohmyzsh' +dir = "lib" +use = ['{completion,clipboard}.zsh'] + +[plugins.base16] +github = "chriskempson/base16-shell" + +[plugins.enhancd] +github = "b4b4r07/enhancd" + +[plugins.zsh-defer] +github = "romkatv/zsh-defer" + +[plugins.zcolors] +github ="marlonrichert/zcolors" + +[plugins.zsh-syntax-highlighting] +github = "zsh-users/zsh-syntax-highlighting" +apply = ["defer"] + +[plugins.fzf-tab] +github = "Aloxaf/fzf-tab" +apply = ["defer"] + +[plugins.ohmyzsh] +github = 'ohmyzsh/ohmyzsh' +dir = 'plugins' +use = ['{git,dotenv,extract,tmux}/*.plugin.zsh'] + +[templates] +defer = { value = 'zsh-defer source "{{ file }}"', each = true } diff --git a/home/private_dot_config/starship/config.toml b/home/private_dot_config/starship/config.toml new file mode 100644 index 0000000..81263b8 --- /dev/null +++ b/home/private_dot_config/starship/config.toml @@ -0,0 +1,20 @@ +[username] +format = "[$user]($style) on " + +[gcloud] +disabled = true + +[python] +disabled = true + +[rlang] +disabled = true + +[nodejs] +disabled = true + +[golang] +disabled = true + +[package] +disabled = true diff --git a/home/private_dot_config/tmux/tmux.conf b/home/private_dot_config/tmux/tmux.conf new file mode 100644 index 0000000..f0b8028 --- /dev/null +++ b/home/private_dot_config/tmux/tmux.conf @@ -0,0 +1,21 @@ +set -g status-keys vi +setw -g mode-keys vi + +set -g prefix C-a +unbind C-b +bind C-a send-prefix + +# smart pane switching with awareness of vim splits +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R + +# split panes using | and - +bind | split-window -h -c "#{pane_current_path}" +bind - split-window -v -c "#{pane_current_path}" +unbind '"' +unbind % + +# Set default term to xterm +set -g default-terminal xterm-256color diff --git a/home/private_dot_vimrc b/home/private_dot_vimrc new file mode 100644 index 0000000..74fc613 --- /dev/null +++ b/home/private_dot_vimrc @@ -0,0 +1,31 @@ +" Custom Mappings +imap jk +vmap jk +"--------------- +" Tabs +"--------------- +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set noexpandtab + +" Use case insensitive search, except when using capital letters +set ignorecase +set smartcase + +" When opening a new line and no filetype-specific indenting is enabled, keep +" the same indent as the line you're currently on. Useful for READMEs, etc. +set autoindent + +" Display line numbers on the left +set number + +" Increase undo limit +set history=1000 + +" Disable swap files +set noswapfile + +" Attempt to show end of paragraph +set display+=lastline + diff --git a/system/alias.sh b/system/alias.sh new file mode 100644 index 0000000..fd54169 --- /dev/null +++ b/system/alias.sh @@ -0,0 +1,49 @@ +# system usage +######################################### +alias reload="source ~/.zshrc" +alias rr="rm -rf" +######################################### + +#ls type aliases +######################################### +#alias ls='ls -F' +alias l='ls -lh --color=auto' +alias ll="ls -lhA" +alias left='ls -t -1' +alias ls='ls --color=auto' +alias lsl="ls -lhFA | less" +######################################### + +# List declared aliases, functions, paths +######################################### +alias aliases="alias | sed 's/=.*//'" +alias functions="declare -f | grep '^[a-z].* ()' | sed 's/{$//'" +alias paths='echo -e ${PATH//:/\\n}' +######################################### + +# program dependent aliases +######################################### +alias code2="code-insiders" +# ls -> lsd | swap ls for ls-deluxe +if is-executable lsd; then + + alias ls='lsd' + alias l='lsd -l' + alias la='lsd -a' + alias lla='lsd -la' + alias lt='lsd --tree --depth=3' + alias lr='lsd -R' + +fi +#lazygit +is-executable lazygit && alias lg=lazygit +# source custom tmux.conf with older tmux +alias tmux="tmux -f ~/.config/tmux/tmux.conf" +alias rc="rclone --filter-from ~/.config/rclone/filter-file.txt" +# prefer nvim if installed +is-executable nvim && alias vim=nvim +# gdu defualts +is-executable gdu && alias gdu -I '.*node_modules' -H +# more fzf +alias fzf-bat="fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'" +########################################## diff --git a/system/conda.sh b/system/conda.sh new file mode 100644 index 0000000..c74573b --- /dev/null +++ b/system/conda.sh @@ -0,0 +1,23 @@ +# Updated to use $HOME + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$('$HOME/mambaforge/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "$HOME/mambaforge/etc/profile.d/conda.sh" ]; then + . "$HOME/mambaforge/etc/profile.d/conda.sh" + else + export PATH="$HOME/mambaforge/bin:$PATH" + fi +fi +unset __conda_setup + +if [ -f "$HOME/mambaforge/etc/profile.d/mamba.sh" ]; then + . "$HOME/mambaforge/etc/profile.d/mamba.sh" +fi +# <<< conda initialize <<< + +[ -d "$HOME/mambaforge/envs/dev" ] && conda activate dev + diff --git a/system/custom.sh b/system/custom.sh new file mode 100644 index 0000000..39f9bc1 --- /dev/null +++ b/system/custom.sh @@ -0,0 +1,6 @@ +# env variables +export BROWSER=/mnt/c/Users/daylin/AppData/Local/Vivaldi/Application/vivaldi.exe + +# aliases +alias files=explorer.exe + diff --git a/system/env.sh b/system/env.sh new file mode 100644 index 0000000..4bced33 --- /dev/null +++ b/system/env.sh @@ -0,0 +1,66 @@ +# XDG +export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" +export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" + +export PATH=$PATH:~/bin + +export HISTSIZE=32768; +export HISTFILESIZE="${HISTSIZE}"; +export SAVEHIST=4096 +export HISTCONTROL=ignoredups:erasedups + +export LESS='-R --use-color' + +# Append to the history file, rather than overwriting it +setopt APPEND_HISTORY + +# Disable autocd +unsetopt autocd + +# Vim Settings +# export VIMINIT='source $MYVIMRC' +# export MYVIMRC='$DOTFILES_DIR/system/.vimrc' +if is-executable nvim; then + export EDITOR=nvim +else + export EDITOR=vim +fi + +# spelling correction +# setopt CORRECT +# setopt CORRECT_ALL + + +# Setup fzf +# --------- +if [[ ! "$PATH" == *$HOME/.fzf/bin* ]]; then + export PATH="${PATH:+${PATH}:}$HOME/.fzf/bin" +fi + +if is-executable fzf; then + source $DOTFILES_DIR/system/fzf.zsh +fi +# --------- + +# Add lfcd command +# ---------------- +if is-executable lf; then + source "$XDG_CONFIG_HOME/lf/lfcd.sh" +fi +# ---------------- + +# nvm settings +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + +# enhancd +export ENHANCD_DOT_ARG="up" + +export STARSHIP_CONFIG=~/.config/starship/config.toml + +export EGET_BIN=$HOME/bin + +# for dotenv +export ZSH_DOTENV_ALLOWED_LIST=$HOME/.cache/dotenv-allowed.list +export ZSH_DOTENV_DISALLOWED_LIST=$HOME/.cache/dotenv-disallowed.list diff --git a/system/function.sh b/system/function.sh new file mode 100644 index 0000000..13e02f3 --- /dev/null +++ b/system/function.sh @@ -0,0 +1,84 @@ +function cl() { + DIR="$*"; + # if no DIR given, go home + if [ $# -lt 1 ]; then + DIR=$HOME; + fi; + builtin cd "${DIR}" && \ + # use your preferred ls command + ls -F --color=auto +} + +prepend-path() { + [ -d $1 ] && PATH="$1:$PATH" +} + +#delete and reclone remote repo +reclone () { + basename=${PWD##*/} + remoteurl=$(git remote get-url --push origin) + cd .. + echo $basename + echo $remoteurl + rm -rf $basename + git clone $remoteurl + cd $basename +} + +# snakemake use all cores by default +sm() { + if [[ "$*" == *"-j"* || "$*" == *"--jobs"* || "$*" == *"--cores"* ]]; then + snakemake $@ + else + snakemake -j all $@ + fi +} + +function gi() { + curl -sL "https://www.toptal.com/developers/gitignore/api/$@" ; + } + + +# make pdfs or svgs from vegalite json's +mkvegapdf () { + vl2vg $1 | vg2pdf > $2 +} + +mkvegasvg () { + vl2vg $1 | vg2svg > $2 +} + +# quick and dirty pdf generation from simple md +md2pdf () { + root=$1 + # get extension and root path: https://stackoverflow.com/a/40928328 + fname="${root#.}";fname="${root%"$fname"}${fname%.*}" + ext="${root#"$fname"}" + echo "converting $root to pdf" + + if [[ $ext != ".md" ]]; then + echo "error! expected a markdown file" + echo "unrecognized extension: $ext" + return 1 + fi + + pandoc -V geometry:a5paper -V geometry:margin=.5in --dpi=300 -o ${fname}.pdf $root + +} + +py2nb2html () { + if [ $# -eq 0 ]; then + echo "No arguments provided" + return 1 + fi + pyfile=$1 + shift + echo "generating html file for $pyfile" + jupytext --to notebook -o - $pyfile | jupyter nbconvert --execute --to html --stdin $@ +} + +web () { + filepath=$(wslpath -w $1) + $BROWSER $filepath +} + diff --git a/system/fzf.zsh b/system/fzf.zsh new file mode 100644 index 0000000..d12d7e6 --- /dev/null +++ b/system/fzf.zsh @@ -0,0 +1,43 @@ +# Auto-completion +# --------------- +[[ $- == *i* ]] && source "$HOME/.fzf/shell/completion.zsh" 2> /dev/null + +# Key bindings +# ------------ +source "$HOME/.fzf/shell/key-bindings.zsh" + + +# Configs +export FZF_DEFAULT_OPTS="--color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 + --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 + --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 + --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4 + --layout=reverse --info=inline --border=horizontal + --min-height=25" + + + +#adapted from https://github.com/zimfw/fzf/blob/master/init.zsh +if (( ${+commands[fd]} )); then + export FZF_DEFAULT_COMMAND="command fd --type file --exclude ".git/" --hidden --no-ignore" + _fzf_compgen_path() { + command fd --type file --exclude ".git/" --hidden --no-ignore "${1}" + } +elif (( ${+commands[rg]} )); then + export FZF_DEFAULT_COMMAND="command rg -uu -g '!.git' --files" + _fzf_compgen_path() { + command rg -uu -g '!.git' --files "${1}" + } +fi + +if (( ${+commands[bat]} )); then + export FZF_CTRL_T_OPTS="--preview 'command bat --color=always --line-range :500 {}' ${FZF_CTRL_T_OPTS}" +fi + +export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'" + +if (( ${+FZF_DEFAULT_COMMAND} )) export FZF_CTRL_T_COMMAND=${FZF_DEFAULT_COMMAND} + +# fix spacing on fzf-tab to show max options +zstyle ':fzf-tab:*' fzf-pad 4 + diff --git a/system/path.sh b/system/path.sh new file mode 100644 index 0000000..a6a8097 --- /dev/null +++ b/system/path.sh @@ -0,0 +1,33 @@ +# Start with system path +# Retrieve it from getconf, otherwise it's just current $PATH + +#is-executable getconf && PATH=$($(command -v getconf) PATH) + +# Prepend new items to path (if directory exists) + +# prepend-path "/bin" +# prepend-path "/usr/bin" +# prepend-path "/usr/local/bin" +PATH="$DOTFILES_DIR/bin:$PATH" +PATH="$HOME/bin:$PATH" +PATH="$HOME/.local/bin:$PATH" +PATH="$HOME/.cargo/bin:$PATH" +PATH="$PATH:/usr/local/go/bin" +PATH="/usr/local/texlive/2021/bin/x86_64-linux:$PATH" +PATH="$HOME/go/bin:$PATH" +# prepend-path "/sbin" +# prepend-path "/usr/sbin" +# prepend-path "/usr/local/sbin" + +# Remove duplicates (preserving prepended items) +# Source: http://unix.stackexchange.com/a/40755 + +# PATH=$(echo -n $PATH | awk -v RS=: '{ if (!arr[$0]++) {printf("%s%s",!ln++?"":":",$0)}}') +# PATH="$(perl -e 'print join(":", grep { not $seen{$_}++ } split(/:/, $ENV{PATH}))')" +# printf %s "$PATH" | awk -v RS=: -v ORS=: '!arr[$0]++' + +PATH=$(printf %s "$PATH" \ + | awk -vRS=: -vORS= '!a[$0]++ {if (NR>1) printf(":"); printf("%s", $0) }' ) +# Wrap up + +export PATH diff --git a/system/prompt.sh b/system/prompt.sh new file mode 100644 index 0000000..5156bae --- /dev/null +++ b/system/prompt.sh @@ -0,0 +1,6 @@ +autoload -Uz compinit +compinit + +eval "$(sheldon -q --config-file ~/.config/sheldon/plugins.toml source)" + +eval "$(starship init zsh)" diff --git a/tools.sh b/tools.sh new file mode 100755 index 0000000..3ec904e --- /dev/null +++ b/tools.sh @@ -0,0 +1,48 @@ +#! /usr/bin/env bash + +BIN_DIR=$HOME/bin +mkdir -p $BIN_DIR + +if ! $(is-executable eget); then + echo "I don't see eget on your path..." + read -p "Do you want to download it to ${BIN_DIR}? " -n 1 -r + echo # (optional) move to a new line + if [[ ! $REPLY =~ ^[Yy]$ ]] + then + exit 1 + else + curl https://zyedidia.github.io/eget.sh | sh + mv eget $BIN_DIR/eget + fi +fi + +echo "downloading binaries from github to $EGET_BIN" + +alias eget="eget --system linux/amd64" + +# environment +eget rossmacarthur/sheldon +eget starship/starship --asset starship-x86_64-unknown-linux-gnu.tar.gz + +# general tools +eget Peltoche/lsd --asset x86_64-unknown-linux-gnu.tar.gz +eget BurntSushi/ripgrep +eget sharkdp/fd --asset x86_64-unknown-linux-gnu.tar.gz +eget sharkdp/bat --asset x86_64-unknown-linux-gnu.tar.gz +eget ClementTsang/bottom --asset x86_64-unknown-linux-gnu.tar.gz -f btm + +# git +eget jesseduffield/lazygit + +# writing +eget neovim/neovim + +# eget dundee/gdu eget doesn't support .tgz? + +# install gdu manually +gdu_release=https://github.com/dundee/gdu/releases/download/v5.8.1/gdu_linux_amd64.tgz +echo "fetching gdu manually" +wget $gdu_release +tar -xzvf gdu_linux_amd64.tgz +mv gdu_linux_amd64 $EGET_BIN/gdu +rm gdu* diff --git a/vscode/extensions.yml b/vscode/extensions.yml new file mode 100644 index 0000000..f1d31af --- /dev/null +++ b/vscode/extensions.yml @@ -0,0 +1,36 @@ +general: + - ms-vscode-remote.remote-ssh + - ms-vscode-remote.remote-ssh-edit + - ms-vscode-remote.remote-wsl + - vscodevim.vim +misc-tools: + - Shan.code-settings-sync + - janisdd.vscode-edit-csv + - cssho.vscode-svgviewer + - naumovs.color-highlight +web-dev: + - bradlc.vscode-tailwindcss + - ritwickdey.liveserver +styling: + - johnpapa.vscode-peacock + - PKief.material-icon-theme + - Thomaz.preparing + - whizkydee.material-palenight-theme +code-help: + - aaron-bond.better-comments + - CoenraadS.bracket-pair-colorizer-2 + - streetsidesoftware.code-spell-checker + - vsls-contrib.gistfs + - mhutchie.git-graph + - Github.copilot +python: + - ms-python.python + - ms-toolsai.jupyter + - njpwerner.autodocstring + - snakemake.snakemake-lang +language-support: + - lextudio.restructuredtext + - Ikuyadeu.r + - James-Yu.latex-workshop + - budparr.language-hugo-vscode + - tht13.rst-vscode diff --git a/vscode/extras.sh b/vscode/extras.sh new file mode 100755 index 0000000..1546d1a --- /dev/null +++ b/vscode/extras.sh @@ -0,0 +1,205 @@ +# script to install the extra needed tools programmatically + +# add command line flags and function to govern install? + +MAMBAFORGE_RELEASE="https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh" +MAMBAFORGE_INSTALLER="Mambaforge-Linux-x86_64.sh" + + + +help() { + cat << EOF +extras downloaders + +by default will download all packages listed below + +usage: $0 [OPTIONS] + + --help Show this message + --force Overwrite current installations + + To install a subset of these + use any of the package specific flag: + + --fzf + --nvm + --mambaforge + +EOF +} + +for opt in "$@"; do + case $opt in + --help) + help + exit 0 + ;; + --force) force=1 ;; + --fzf) fzf=1 ;; + --nvm) nvm=1 ;; + --mambaforge) mamba=1 ;; + *) + echo "unknown option: $opt" + help + exit 1 + ;; + esac +done + + +check_existing() { + pkg=$1 + install_dir=$2 + declare -n skip_out=$3 + + if [ -d "$install_dir" ]; then + echo "found existing $pkg installation" + if [[ "$force" ]]; then + echo "removing previous installation" + rm -rf $install_dir + skip=0 + else + skip=1 + fi + fi + skip=0 +} + + +ask() { + while true; do + read -p "$1 ([y]/n) " -r + REPLY=${REPLY:-"y"} + if [[ $REPLY =~ ^[Yy]$ ]]; then + return 1 + elif [[ $REPLY =~ ^[Nn]$ ]]; then + return 0 + fi + done +} + +install_fzf() { + echo "##############" + echo installing fzf + echo "##############" + + check_existing "fzf" "$HOME/.fzf" skip + + if [[ "$skip" -eq 1 ]]; + then + echo "remove your previous installation or rerun with --force" + return + fi + + echo "installing fzf using git" + + git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf + ~/.fzf/install \ + --key-bindings \ + --completion \ + --no-bash \ + --no-zsh \ + --no-update-rc \ + + +} +install_nvm() { + echo "##############" + echo installing nvm + echo "##############" + + echo look at me installing nvm heheh + + check_existing "nvm" "$HOME/.nvm" skip + + if [[ "$skip" -eq 1 ]]; + then + echo "remove your previous installation or rerun with --force" + return + fi + + local current_dir=$PWD + + git clone https://github.com/nvm-sh/nvm.git ~/.nvm + cd ~/.nvm + git checkout v0.39.0 + . ./nvm.sh + + cd $current_dir +} + + +install_mambaforge() { + echo "#####################" + echo installing mambaforge + echo "#####################" + + + check_existing "mambaforge" "$HOME/mambaforge" skip + + if [[ "$skip" -eq 1 ]]; + then + echo "remove your previous installation or rerun with --force" + return + fi + + echo "#####################" + echo installing mambaforge + echo "#####################" + + echo "fetching install script from github" + + current_dir=$PWD + + cd ~/ + + wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh + bash "$MAMBAFORGE_INSTALLER" -s + rm "$MAMBAFORGE_INSTALLER" + + echo "cleaning up installer" + + cd $current_dir +} + + + +install_all() { + echo "installing all packages..." + echo + install_fzf + echo + install_nvm + echo + install_mambaforge + +} + +# remove once functional +echo $@ + +echo "#################" +echo EXTRAS DOWNLOADER +echo "#################" +echo + +if [ $# -eq 0 ]; + then + install_all + exit +fi + +if [ "$fzf" ]; then + install_fzf +fi + +if [ "$nvm" ]; then + install_nvm +fi + +if [ "$mamba" ]; + then install_mambaforge +fi + + +echo "FINISHED!" \ No newline at end of file diff --git a/vscode/generate_install_scripts.py b/vscode/generate_install_scripts.py new file mode 100644 index 0000000..f0b74ec --- /dev/null +++ b/vscode/generate_install_scripts.py @@ -0,0 +1,65 @@ +import yaml +from pathlib import Path + +FRONTMATTER = """ +VS Code Extensions install script + +Author: Daylin Morgan + +DO NOT EDIT MANUALLY! +Regenerate with generate_install_scripts.py +""" + +FILE_DIR = Path(__file__).parent + +def shell_script_writer(extensions_dict, filename): + with Path(filename).open("w") as f: + f.write("#!/bin/bash\n") + f.write(FRONTMATTER.replace("\n", "\n# ")[:-2]) + f.write('\n\necho "Installing VS Code Extensions"\n') + + for section, extensions in extensions_dict.items(): + f.write(f"\n# {section} extensions") + f.write("\n# " + "-" * len(section) + "-" * 11) + + for extension in extensions: + f.write(f"\ncode --install-extension {extension} --force") + + f.write("\n") + + f.write('\necho "Extension installation compeleted!"') + + +def batch_script_writer(extensions_dict, filename): + with Path(filename).open("w") as f: + f.write("echo off\n") + f.write(FRONTMATTER.replace("\n", "\n:: ")[:-3]) + f.write('\n\necho "Installing VS Code Extensions"\necho.\n') + + for section, extensions in extensions_dict.items(): + f.write(f"\n:: {section} extensions") + f.write("\n:: " + "-" * len(section) + "-" * 11) + + for extension in extensions: + f.write(f"\ncall code --install-extension {extension} --force") + + f.write("\n") + + f.write('\necho "Extension installation compeleted!"') + + +def main(): + print("Generating shell and batch scripts with extensions.yml") + + extensions_yml = FILE_DIR / "extensions.yml" + + with extensions_yml.open("r") as f: + extensions_dict = yaml.load(f, Loader=yaml.FullLoader) + + shell_script_writer(extensions_dict, "install-extensions.sh") + + batch_script_writer(extensions_dict, "install-extensions.bat") + + +if __name__ == "__main__": + main() diff --git a/vscode/install-extensions.bat b/vscode/install-extensions.bat new file mode 100755 index 0000000..16c2230 --- /dev/null +++ b/vscode/install-extensions.bat @@ -0,0 +1,64 @@ +echo off + +:: VS Code Extensions install script +:: +:: Author: Daylin Morgan +:: +:: DO NOT EDIT MANUALLY! +:: Regenerate with generate_install_scripts.py + + +echo "Installing VS Code Extensions" +echo. + +:: general extensions +:: ------------------ +call code --install-extension ms-vscode-remote.remote-ssh --force +call code --install-extension ms-vscode-remote.remote-ssh-edit --force +call code --install-extension ms-vscode-remote.remote-wsl --force +call code --install-extension vscodevim.vim --force + +:: misc-tools extensions +:: --------------------- +call code --install-extension Shan.code-settings-sync --force +call code --install-extension janisdd.vscode-edit-csv --force +call code --install-extension cssho.vscode-svgviewer --force +call code --install-extension naumovs.color-highlight --force + +:: web-dev extensions +:: ------------------ +call code --install-extension bradlc.vscode-tailwindcss --force +call code --install-extension ritwickdey.liveserver --force + +:: styling extensions +:: ------------------ +call code --install-extension johnpapa.vscode-peacock --force +call code --install-extension PKief.material-icon-theme --force +call code --install-extension Thomaz.preparing --force +call code --install-extension whizkydee.material-palenight-theme --force + +:: code-help extensions +:: -------------------- +call code --install-extension aaron-bond.better-comments --force +call code --install-extension CoenraadS.bracket-pair-colorizer-2 --force +call code --install-extension streetsidesoftware.code-spell-checker --force +call code --install-extension vsls-contrib.gistfs --force +call code --install-extension mhutchie.git-graph --force +call code --install-extension Github.copilot --force + +:: python extensions +:: ----------------- +call code --install-extension ms-python.python --force +call code --install-extension ms-toolsai.jupyter --force +call code --install-extension njpwerner.autodocstring --force +call code --install-extension snakemake.snakemake-lang --force + +:: language-support extensions +:: --------------------------- +call code --install-extension lextudio.restructuredtext --force +call code --install-extension Ikuyadeu.r --force +call code --install-extension James-Yu.latex-workshop --force +call code --install-extension budparr.language-hugo-vscode --force +call code --install-extension tht13.rst-vscode --force + +echo "Extension installation compeleted!" \ No newline at end of file diff --git a/vscode/install-extensions.sh b/vscode/install-extensions.sh new file mode 100755 index 0000000..df5e23d --- /dev/null +++ b/vscode/install-extensions.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# VS Code Extensions install script +# +# Author: Daylin Morgan +# +# DO NOT EDIT MANUALLY! +# Regenerate with generate_install_scripts.py + + +echo "Installing VS Code Extensions" + +# general extensions +# ------------------ +code --install-extension ms-vscode-remote.remote-ssh --force +code --install-extension ms-vscode-remote.remote-ssh-edit --force +code --install-extension ms-vscode-remote.remote-wsl --force +code --install-extension vscodevim.vim --force + +# misc-tools extensions +# --------------------- +code --install-extension Shan.code-settings-sync --force +code --install-extension janisdd.vscode-edit-csv --force +code --install-extension cssho.vscode-svgviewer --force +code --install-extension naumovs.color-highlight --force + +# web-dev extensions +# ------------------ +code --install-extension bradlc.vscode-tailwindcss --force +code --install-extension ritwickdey.liveserver --force + +# styling extensions +# ------------------ +code --install-extension johnpapa.vscode-peacock --force +code --install-extension PKief.material-icon-theme --force +code --install-extension Thomaz.preparing --force +code --install-extension whizkydee.material-palenight-theme --force + +# code-help extensions +# -------------------- +code --install-extension aaron-bond.better-comments --force +code --install-extension CoenraadS.bracket-pair-colorizer-2 --force +code --install-extension streetsidesoftware.code-spell-checker --force +code --install-extension vsls-contrib.gistfs --force +code --install-extension mhutchie.git-graph --force +code --install-extension Github.copilot --force + +# python extensions +# ----------------- +code --install-extension ms-python.python --force +code --install-extension ms-toolsai.jupyter --force +code --install-extension njpwerner.autodocstring --force +code --install-extension snakemake.snakemake-lang --force + +# language-support extensions +# --------------------------- +code --install-extension lextudio.restructuredtext --force +code --install-extension Ikuyadeu.r --force +code --install-extension James-Yu.latex-workshop --force +code --install-extension budparr.language-hugo-vscode --force +code --install-extension tht13.rst-vscode --force + +echo "Extension installation compeleted!" \ No newline at end of file