Skip to content

Instantly share code, notes, and snippets.

@andria-dev
Last active January 4, 2023 20:18
Show Gist options
  • Save andria-dev/d6424a58dbd948c4285397db5901f90a to your computer and use it in GitHub Desktop.
Save andria-dev/d6424a58dbd948c4285397db5901f90a to your computer and use it in GitHub Desktop.
WSL Config
#!/bin/bash
# function definitions
pressAnyKeyToContinue() {
read -n 1 -s -r -p "Press any key to continue."
}
# Get sudo privileges beforehand
sudo -v
# Welcome the user"
echo "Hi $(whoami)! Let's get your Windows Subsystem for Linux (WSL) set up."
echo "Let's do a quick check for updates."
sudo apt-get update && sudo apt-get upgrade
echo ""
echo "Now let's start by installing some applications and packages for you."
echo ""
if [[ ! $(which zsh) ]]; then
echo "Installing zsh"
sudo apt-get -y install zsh
echo "Changing $(whoami)'s and root's shell to $(which zsh)"
chsh -s $(which zsh)
sudo chsh -s $(which zsh) root
echo "Changing their prompt's as well"
prompt_file=\
'''# Inserts a blank line between shell promptsadd_newline = true
# Replace the "❯" symbol in the prompt with "➜"
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[➜](bold red)"
# Disable the package module, hiding it from the prompt completely
[package]
disabled = true
'''
echo "$prompt_file" > $HOME/.config/starship.toml
sudo echo "$prompt_file" > /root/.config/starship.toml
else
echo "ZSH is already installed: $(which zsh)"
fi
# Install homebrew so that we can install other things.
if [[ ! $(which brew) ]]; then
echo "Installing homebrew (https://brew.sh)"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.zshrc
else
echo "Homebrew is already installed: $(which brew)"
fi
# Install our commands
echo """
Installing the following applications via homebrew
git (https://git-scm.com)
hub (https://github.com/github/hub)
rg (https://github.com/BurntSushi/ripgrep)
watchman (https://facebook.github.io/watchman)
tree (https://formulae.brew.sh/formula/tree)
bat (https://github.com/sharkdp/bat)
exa (https://github.com/ogham/exa)
java
starship (https://starship.rs/)
z (https://github.com/rupa/z)
"""
brew install git hub ripgrep watchman tree bat exa java starship z
echo 'eval "$(starship init zsh)"' >> $HOME/.zshrc
echo '. /home/linuxbrew/.linuxbrew/etc/profile.d/z.sh' >> $HOME/.zshrc
echo '''
# Aliases
alias ls="exa"
alias ll="exa -l"
alias la="exa -a"
alias cd="z"
''' >> $HOME/.zshrc
echo "Installing rust, cargo, rustup, etc. (https://crates.io/)"
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
echo """
# Add Cargo Binaries
PATH=\"\$HOME/.cargo/bin:\$PATH\"
""" | tee -a $HOME/.bashrc $HOME/.zshrc 1>/dev/null
echo "Configuring git!"
git config --global credential.helper store
git config --global user.email "[email protected]"
git config --global user.name "Andria Brown"
git config --global core.editor "code --wait"
if [[ ! $(which volta) ]]; then
echo "Installing volta (https://docs.volta.sh/)"
sudo mkdir /opt/volta
sudo chown $(whoami):$(whoami) /opt/volta
export VOLTA_HOME=/opt/volta
curl https://get.volta.sh | bash -s -- --skip-setup
export PATH="$VOLTA_HOME/bin:$PATH"
echo 'export VOLTA_HOME="/opt/volta"' | sudo tee -a /etc/zsh/zshenv 1>/dev/null
echo 'export PATH="$VOLTA_HOME/bin:$PATH"' | sudo tee -a /etc/zsh/zshenv 1>/dev/null
else
echo "Volta is already installed."
fi
volta install node@latest
volta install yarn@latest
# Install pip3 so we can install AdvancedNewFile
echo "Installing pip3 (python package manager)"
sudo apt-get -y install python3-pip
echo "Installing ad (https://github.com/tanrax/terminal-AdvancedNewFile)"
pip3 install --user advance-touch
echo "Installing git open (https://github.com/paulirish/git-open)"
npm install -g git-open
echo """# set PATH so it includes user's private bin if it exists
if [[ -d \"\$HOME/.local/bin\" ]]; then
PATH=\"\$HOME/.local/bin:\$PATH\"
fi
""" >> $HOME/.zshrc
# Set up SSH keychain if no SSH exists
if [[ ! -d "$HOME/.ssh" ]]; then
echo "Configuring your SSH keychain now."
read -p "What is your email? " email
ssh-keygen -t ed25519 -C $email -f $HOME/.ssh/id_ed25519
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
echo "If you would like to add your SSH key to GitHub please do so now."
cat $HOME/.ssh/id_ed25519.pub | clip.exe
echo "The public key is in your clipboard."
echo "https://github.com/settings/keys"
pressAnyKeyToContinue
fi
if [[ ! -f "$HOME/.vimrc" ]]; then
echo "Creating vim configuration."
echo """
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent
set mouse=a
set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»
set number
if has('syntax')
syntax enable
silent! colorscheme eldar
endif
""" > $HOME/.vimrc
mkdir $HOME/.vim
mkdir $HOME/.vim/colors
curl 'https://raw.githubusercontent.com/agude/vim-eldar/master/colors/eldar.vim' -o $HOME/.vim/colors/vim-eldar
fi
if [[ ! -d "$HOME/Workspace" ]]; then
echo "Creating your Workspace directory."
mkdir $HOME/Workspace
fi
echo "Cloning some GitHub repositories down if they aren't already there."
cd $HOME/Workspace
if [[ ! -d "./use-shopping-cart" ]]; then
echo "use-shopping-cart"
git clone https://github.com/dayhaysoos/use-shopping-cart.git
cd use-shopping-cart
yarn
cd ..
fi
if [[ ! -d "./brownie" ]]; then
echo "brownie"
git clone https://github.com/andria-dev/brownie.git
cd brownie
yarn
cd ..
fi
if [[ ! -d "./portfolio" ]]; then
echo "portfolio"
git clone https://github.com/andria-dev/portfolio.git
cd portfolio
yarn
cd ..
fi
if [[ ! -d "./react-spring-modal" ]]; then
echo "react-spring-modal"
git clone https://github.com/andria-dev/react-spring-modal.git
cd react-spring-modal
yarn
cd ..
fi
cd $HOME
echo "Done setting up your WSL! Have fun 😊"
zsh
@andria-dev
Copy link
Author

andria-dev commented Mar 18, 2021

WSL Config

Start by installing your basic Ubuntu WSL. Follow this up with the following command:

curl https://gist.githubusercontent.com/andria-dev/d6424a58dbd948c4285397db5901f90a/raw/252817e3b747c5fcc46a2d545827ec9d47ddc646/wsl.sh > wsl.sh
chmod u+x wsl.sh
./wsl.sh

Sit back and relax while all of the above tools install 👍

@andria-dev
Copy link
Author

andria-dev commented Mar 18, 2021

// Future versions of Hyper may add additional config options,
// which will not automatically be merged into this file.
// See https://hyper.is#cfg for all currently supported options.

module.exports = {
  config: {
    scrollback: 3000,
    // choose either `'stable'` for receiving highly polished,
    // or `'canary'` for less polished but more frequent updates
    updateChannel: 'stable',

    // default font size in pixels for all tabs
    fontSize: 17,

    // font family with optional fallbacks
    fontFamily: '"FantasqueSansMono Nerd Font", "JetBrains Mono", Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',

    // default font weight: 'normal' or 'bold'
    fontWeight: 'normal',

    // font weight for bold characters: 'normal' or 'bold'
    fontWeightBold: 'bold',

    // line height as a relative unit
    lineHeight: 1,

    // letter spacing as a relative unit
    letterSpacing: 0,

    // terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk)
    cursorColor: 'rgba(248,28,229,0.8)',

    // terminal text color under BLOCK cursor
    cursorAccentColor: '#000',

    // `'BEAM'` for |, `'UNDERLINE'` for _, `'BLOCK'` for █
    cursorShape: 'BLOCK',

    // set to `true` (without backticks and without quotes) for blinking cursor
    cursorBlink: false,

    // color of the text
    foregroundColor: '#fff',

    // terminal background color
    // opacity is only supported on macOS
    backgroundColor: '#000',

    // terminal selection color
    selectionColor: 'rgba(248,28,229,0.3)',

    // border color (window, tabs)
    borderColor: '#333',

    // custom CSS to embed in the main window
    css: `
#hyper .header_header {
	height: 23px;
	background-color: #111;
	color: black;
}
#hyper .header_shape {
	background-color: #111;
	color: black;
}
#hyper {
	background-color: #111;
}
`,

    // custom CSS to embed in the terminal window
    termCSS: `

`,

    // if you're using a Linux setup which show native menus, set to false
    // default: `true` on Linux, `true` on Windows, ignored on macOS
    showHamburgerMenu: true,

    // set to `false` (without backticks and without quotes) if you want to hide the minimize, maximize and close buttons
    // additionally, set to `'left'` if you want them on the left, like in Ubuntu
    // default: `true` (without backticks and without quotes) on Windows and Linux, ignored on macOS
    showWindowControls: true,

    // custom padding (CSS format, i.e.: `top right bottom left`)
    padding: '12px 14px 12px 14px',

    // the full list. if you're going to provide the full color palette,
    // including the 6 x 6 color cubes and the grayscale map, just provide
    // an array here instead of a color map object
    colors: {
      black: '#000000',
      red: '#C51E14',
      green: '#40CC40',
      yellow: '#DDD950',
      blue: '#6B75F8',
      magenta: '#C839C5',
      cyan: '#20C5C6',
      white: '#C7C7C7',
      lightBlack: '#686868',
      lightRed: '#FD6F6B',
      lightGreen: '#91EA91',
      lightYellow: '#FFFC84',
      lightBlue: '#9098FC',
      lightMagenta: '#FD7CFC',
      lightCyan: '#68FDFE',
      lightWhite: '#FFFFFF',
    },

    // the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    // if left empty, your system's login shell will be used by default
    //
    // Windows
    // - Make sure to use a full path if the binary name doesn't work
    // - Remove `--login` in shellArgs
    //
    // Bash on Windows
    // - Example: `C:\\Windows\\System32\\bash.exe`
    //
    // PowerShell on Windows
    // - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
    shell: 'C:\\Windows\\System32\\wsl.exe',

    // for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`)
    // by default `['--login']` will be used
    shellArgs: ['--cd', '~', '--distribution', 'Ubuntu', '--user', 'andria'],

    // for environment variables
    env: {},

    // set to `false` for no bell
    bell: 'SOUND',

    // if `true` (without backticks and without quotes), selected text will automatically be copied to the clipboard
    copyOnSelect: false,

    // if `true` (without backticks and without quotes), hyper will be set as the default protocol client for SSH
    defaultSSHApp: true,

    // if `true` (without backticks and without quotes), on right click selected text will be copied or pasted if no
    // selection is present (`true` by default on Windows and disables the context menu feature)
    quickEdit: false,

    // choose either `'vertical'`, if you want the column mode when Option key is hold during selection (Default)
    // or `'force'`, if you want to force selection regardless of whether the terminal is in mouse events mode
    // (inside tmux or vim with mouse mode enabled for example).
    macOptionSelectionMode: 'vertical',

    // URL to custom bell
    // bellSoundURL: 'http://example.com/bell.mp3',

    // Whether to use the WebGL renderer. Set it to false to use canvas-based
    // rendering (slower, but supports transparent backgrounds)
    webGLRenderer: true,

    // for advanced config flags please refer to https://hyper.is/#cfg
  },

  // a list of plugins to fetch and install from npm
  // format: [@org/]project[#version]
  // examples:
  //   `hyperpower`
  //   `@company/project`
  //   `project#1.0.1`
  plugins: ["hyper-search"],

  // in development, you can create a directory under
  // `~/.hyper_plugins/local/` and include it here
  // to load it and avoid it being `npm install`ed
  localPlugins: [],

  keymaps: {
    // Example
    // 'window:devtools': 'cmd+alt+o',
  },
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment