mirror of
https://git.decapod.one/brethil/dotfiles
synced 2024-11-23 12:01:30 +01:00
install: use ansible
- ansible/playbooks/setup.yml can be used to install all dotfiles - a test setup is included in the `dev` folder with arch and debian images
This commit is contained in:
parent
5dc09a62ea
commit
762f3ef58c
22
README.md
22
README.md
|
@ -12,8 +12,8 @@ A set of zsh dotfiles based on antibody and oh-my-zsh
|
||||||
│ │ └── ANSI color escapes
|
│ │ └── ANSI color escapes
|
||||||
│ ├── functions.sh
|
│ ├── functions.sh
|
||||||
│ │ └── contains function definitions (sources `~/.dotfiles_functions`)
|
│ │ └── contains function definitions (sources `~/.dotfiles_functions`)
|
||||||
│ ├── install.sh
|
│ ├── ansible
|
||||||
│ │ └── main install script
|
│ │ └── ansible playboooks/config
|
||||||
│ └── brethil_dotfile.sh:
|
│ └── brethil_dotfile.sh:
|
||||||
│ └── This file should be sourced by your `.zshrc`
|
│ └── This file should be sourced by your `.zshrc`
|
||||||
├──────── antibody plugins ────────
|
├──────── antibody plugins ────────
|
||||||
|
@ -55,8 +55,24 @@ A set of zsh dotfiles based on antibody and oh-my-zsh
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
With ansible:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[ bash dev/add_community.general.sh ] # if community.general is not installed
|
||||||
|
ansible-playbook -v -i <hosts file> [-e fix_annoyances=true] ansible/playbooks/setup.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
[use this with a docker container](dev/README.md)
|
||||||
|
|
||||||
|
Use `-e fix_annoyances=true` to fix some small annoyances (only run once)
|
||||||
|
|
||||||
|
Manually (this only installs the zsh configuration):
|
||||||
|
|
||||||
|
```bash
|
||||||
git clone https://git.decapod.one/brethil/dotfiles ~/.dotfiles
|
git clone https://git.decapod.one/brethil/dotfiles ~/.dotfiles
|
||||||
cd .dotfiles && bash install.sh
|
echo 'DOTFILES=~/.dotfiles' >> ~/.zshrc
|
||||||
|
echo 'source $DOTFILES/brethil_dotfile.sh'
|
||||||
|
```
|
||||||
|
|
||||||
A self-update mechanism is included. It asks for confirmation to pull the latest changes
|
A self-update mechanism is included. It asks for confirmation to pull the latest changes
|
||||||
from the git repo every two weeks. This also updates the git-sourced repositories installed
|
from the git repo every two weeks. This also updates the git-sourced repositories installed
|
||||||
|
|
25
ansible/ansible-packages.yml
Normal file
25
ansible/ansible-packages.yml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
packages:
|
||||||
|
- "vim"
|
||||||
|
- "curl"
|
||||||
|
- "git"
|
||||||
|
- "zsh"
|
||||||
|
- "grc"
|
||||||
|
- "ccze"
|
||||||
|
- "bmon"
|
||||||
|
- "mtr"
|
||||||
|
- "tmux"
|
||||||
|
- "tree"
|
||||||
|
- "byobu"
|
||||||
|
- "htop"
|
||||||
|
- "nmap"
|
||||||
|
- "bmon"
|
||||||
|
packages_debian:
|
||||||
|
- "pylint"
|
||||||
|
- "ipython3"
|
||||||
|
- "python3-pip"
|
||||||
|
- "python3-setuptools"
|
||||||
|
- "virtualenv"
|
||||||
|
packages_archlinux:
|
||||||
|
- "ipython"
|
||||||
|
- "python-pylint"
|
||||||
|
- "python-virtualenv"
|
5
ansible/ansible.cfg
Normal file
5
ansible/ansible.cfg
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[defaults]
|
||||||
|
forks = 10
|
||||||
|
strategy=free
|
||||||
|
pipelining = true
|
||||||
|
internal_poll_interval = 0.001
|
93
ansible/playbooks/setup.yml
Normal file
93
ansible/playbooks/setup.yml
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
become: true
|
||||||
|
vars_files:
|
||||||
|
- ../ansible-packages.yml
|
||||||
|
vars:
|
||||||
|
DOTFILES: "$HOME/.dotfiles"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Install required system packages (debian)
|
||||||
|
apt:
|
||||||
|
install_recommends: no
|
||||||
|
update_cache: yes
|
||||||
|
pkg: "{{ packages + packages_debian }}"
|
||||||
|
when: ansible_facts['os_family'] == "Debian"
|
||||||
|
|
||||||
|
- name: Install required system packages (debian)
|
||||||
|
pacman:
|
||||||
|
update_cache: yes
|
||||||
|
name: "{{ packages + packages_archlinux }}"
|
||||||
|
when: ansible_facts['os_family'] == "Archlinux"
|
||||||
|
|
||||||
|
- name: dotfiles repo
|
||||||
|
git:
|
||||||
|
repo: https://git.decapod.one/brethil/dotfiles
|
||||||
|
dest: "{{ DOTFILES }}"
|
||||||
|
version: master
|
||||||
|
|
||||||
|
- name: antibody
|
||||||
|
shell: |
|
||||||
|
set -o pipefail
|
||||||
|
curl -sfL https://git.io/antibody | sh -s - -b /usr/local/bin
|
||||||
|
antibody bundle "{{ DOTFILES }}/antibody_plugins.txt"
|
||||||
|
args:
|
||||||
|
executable: /bin/bash
|
||||||
|
creates: /usr/local/bin/antibody
|
||||||
|
|
||||||
|
- name: zsh as default shell
|
||||||
|
user:
|
||||||
|
name: "{{ ansible_user }}"
|
||||||
|
shell: /usr/bin/zsh
|
||||||
|
|
||||||
|
- name: zsh config
|
||||||
|
shell: |
|
||||||
|
echo "export DOTFILES={{ DOTFILES }}" >> "$HOME/.zshrc"
|
||||||
|
echo 'source $DOTFILES/brethil_dotfile.sh' >> "$HOME/.zshrc"
|
||||||
|
args:
|
||||||
|
creates: "~{{ ansible_user }}/.zshrc"
|
||||||
|
|
||||||
|
- name: dotfiles symlink
|
||||||
|
file:
|
||||||
|
src: "{{ DOTFILES }}/{{ item.key }}"
|
||||||
|
dest: "{{ item.value }}"
|
||||||
|
state: link
|
||||||
|
force: yes
|
||||||
|
loop: "{{ files | dict2items }}"
|
||||||
|
vars:
|
||||||
|
files:
|
||||||
|
"ackrc": "~/.ackrc"
|
||||||
|
"vim/vimrc": "~/.vimrc"
|
||||||
|
"pdbrc.py": "~/.pdbrc.py"
|
||||||
|
# "ipython": "~/.ipython" # FIXME: ipython config is more complex
|
||||||
|
"ansible.cfg": "~/.ansible.cfg"
|
||||||
|
|
||||||
|
- name: git config
|
||||||
|
community.general.git_config:
|
||||||
|
name: "include.path"
|
||||||
|
value: "{{ DOTFILES }}/gitconfig"
|
||||||
|
|
||||||
|
- name: annoyances
|
||||||
|
shell: |
|
||||||
|
## Fix scrolling in byobu
|
||||||
|
if [[ $(uname) == "Darwin" ]]; then
|
||||||
|
sed -i '' 's/set -g terminal-overrides/#set -g terminal-overrides/' /usr/share/byobu/profiles/tmux
|
||||||
|
else
|
||||||
|
sed -i 's/set -g terminal-overrides/#set -g terminal-overrides/' /usr/share/byobu/profiles/tmux
|
||||||
|
fi
|
||||||
|
sed 's|ls \\|#ls \\|' /etc/grc.zsh
|
||||||
|
args:
|
||||||
|
executable: /bin/bash
|
||||||
|
when: fix_annoyances is true
|
||||||
|
|
||||||
|
- name: directories
|
||||||
|
file:
|
||||||
|
dest: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
mode: 0700
|
||||||
|
loop: "{{ directories }}"
|
||||||
|
vars:
|
||||||
|
directories:
|
||||||
|
- "$HOME/bin"
|
||||||
|
- "$HOME/projects"
|
||||||
|
- "$HOME/git"
|
15
dev/Dockerfile.archlinux
Normal file
15
dev/Dockerfile.archlinux
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
FROM archlinux:latest
|
||||||
|
ENV TERM=xterm-256color
|
||||||
|
|
||||||
|
RUN pacman --noconfirm -Syu && pacman --noconfirm -Sy \
|
||||||
|
python \
|
||||||
|
openssh \
|
||||||
|
&& rm -rf /var/cache/pacman/*
|
||||||
|
|
||||||
|
# uncomment to hardcode ssh_host keys in the image
|
||||||
|
# RUN ssh-keygen -A
|
||||||
|
COPY id_ed25519.pub /root/.ssh/authorized_keys
|
||||||
|
|
||||||
|
WORKDIR /root/
|
||||||
|
COPY entrypoint.sh /
|
||||||
|
CMD ["bash", "/entrypoint.sh"]
|
16
dev/Dockerfile.debian
Normal file
16
dev/Dockerfile.debian
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
FROM debian:unstable
|
||||||
|
ENV TERM=xterm-256color
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
openssh-server \
|
||||||
|
python python3 && \
|
||||||
|
rm -rf /var/cache/apt/* /etc/ssh/ssh_host_*
|
||||||
|
# ssh host keys are generated by entrypoint, remove rm /etc/ssh/ssh_host*
|
||||||
|
# to hardcode ssh host keys into the image
|
||||||
|
|
||||||
|
RUN mkdir /run/sshd
|
||||||
|
COPY id_ed25519.pub /root/.ssh/authorized_keys
|
||||||
|
|
||||||
|
WORKDIR /root/
|
||||||
|
COPY entrypoint.sh /
|
||||||
|
CMD ["bash", "/entrypoint.sh"]
|
25
dev/Makefile
Normal file
25
dev/Makefile
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
SHELL=/bin/bash
|
||||||
|
|
||||||
|
all: list_targets
|
||||||
|
|
||||||
|
list_targets:
|
||||||
|
echo "List of targets:"
|
||||||
|
@grep '^[^#[:space:]].*:' Makefile
|
||||||
|
|
||||||
|
debian: clean build-debian run
|
||||||
|
arch archlinux: clean build-arch run
|
||||||
|
|
||||||
|
build-debian:
|
||||||
|
docker build -t brethil/dotfiles:dev -f Dockerfile.debian .
|
||||||
|
|
||||||
|
build-arch:
|
||||||
|
docker build -t brethil/dotfiles:dev -f Dockerfile.archlinux .
|
||||||
|
|
||||||
|
run:
|
||||||
|
docker run -d --name=dotfiles-dev brethil/dotfiles:dev
|
||||||
|
echo "*** Started container, listening on ${BOLD}${WHITE}`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' dotfiles-dev`:22${CLEAR}"
|
||||||
|
docker logs -f dotfiles-dev
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker stop dotfiles-dev || echo "no containers to stop"
|
||||||
|
docker rm dotfiles-dev || echo "no containers to remove"
|
27
dev/README.md
Normal file
27
dev/README.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# dev
|
||||||
|
|
||||||
|
This directory contains some useful dockerfiles/makefiles that can be used
|
||||||
|
to test the deployment ansible playbooks.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make arch # this builds a docker image based on archlinux and runs it
|
||||||
|
make debian # this builds a docker image based on debian and runs it
|
||||||
|
```
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
Start a builder in one shell:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
while true; do make; done
|
||||||
|
```
|
||||||
|
|
||||||
|
_check for the docker IP of the started container_.
|
||||||
|
|
||||||
|
Test the playbook in another shell:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible-playbook -v -i ./ansible-hosts playbooks/setup.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
note: the ip address in `ansible-hosts` might have changed from `172.18.0.2`.
|
2
dev/add_community_general.sh
Normal file
2
dev/add_community_general.sh
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/bin/bash
|
||||||
|
ansible-galaxy collection install community.general # for git_config
|
2
dev/ansible-hosts
Normal file
2
dev/ansible-hosts
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[dev]
|
||||||
|
172.18.0.2 ansible_user=root ansible_python_interpreter=python3 DOTFILES=~/.dotfiles
|
5
dev/entrypoint.sh
Normal file
5
dev/entrypoint.sh
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
if [ ! -f /etc/ssh/ssh_host_ed25519_key.pub ]; then
|
||||||
|
ssh-keygen -A
|
||||||
|
fi
|
||||||
|
/usr/sbin/sshd -D -e
|
1
dev/id_ed25519.pub
Normal file
1
dev/id_ed25519.pub
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILyIgoGSyuRjxvW+2SBWYJF2dMAVX+3d5h8TpKmIVpuk brethil@distruzione.org
|
189
install.sh
189
install.sh
|
@ -1,189 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
## brethil's dotfiles installation script
|
|
||||||
## 20 June 2016
|
|
||||||
|
|
||||||
# Get the location for the dotfiles
|
|
||||||
DOTFILES=$PWD
|
|
||||||
|
|
||||||
PACKAGES="vim zsh antibody git grc ccze bmon mtr tmux byobu htop"
|
|
||||||
|
|
||||||
function setup_git {
|
|
||||||
# set up some git stuff
|
|
||||||
git config --global include.path $DOTFILES/gitconfig
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_vimrc {
|
|
||||||
# TODO: check if vim-plug is installed
|
|
||||||
if [ -f "$HOME/.vimrc" ]; then
|
|
||||||
mv "$HOME/.vimrc"{,.bak} && echo "Backed up old vimrc"
|
|
||||||
fi
|
|
||||||
ln -s "$DOTFILES/.vimrc" "$HOME/.vimrc"
|
|
||||||
}
|
|
||||||
|
|
||||||
function setup_ackrc {
|
|
||||||
ln -s "$DOTFILES/ackrc" "$HOME/.ackrc"
|
|
||||||
}
|
|
||||||
|
|
||||||
function setup_ipython {
|
|
||||||
python -m pip install pip ipython || python -m pip install --user pip ipython
|
|
||||||
ipython -c "1+1" # run ipython once so that we are sure that the profile directories exist
|
|
||||||
ln -s "$DOTFILES/ipython/profile_default/ipython_config.py" "$HOME/.ipython/profile_default/"
|
|
||||||
ln -s "$DOTFILES/ipython/profile_default/startup" "$HOME/.ipython/profile_default/startup"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add an ssh config file with:
|
|
||||||
# - Connection multiplexer for faster multiple connections
|
|
||||||
# - Keep connections alive (avoid timeout disconnections)
|
|
||||||
function create_ssh_config {
|
|
||||||
echo "# Configuring ssh..."
|
|
||||||
|
|
||||||
ssh_config="$HOME/.ssh/config"
|
|
||||||
|
|
||||||
if [ ! -f $HOME/.ssh/id_rsa ]; then
|
|
||||||
echo "Creating ssh key (4096bit)..."
|
|
||||||
|
|
||||||
echo "Enter ssh-key comment (leave empty for default: user@host)"
|
|
||||||
read comment
|
|
||||||
if [[ $comment ]]; then
|
|
||||||
ssh-keygen -t ed25519 -C "$comment"
|
|
||||||
else
|
|
||||||
ssh-keygen -t ed25519
|
|
||||||
fi
|
|
||||||
# fix permissions
|
|
||||||
chmod 0700 "$HOME/.ssh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f $ssh_config ]]; then
|
|
||||||
until [[ $modifyssh == "y" || $modifyssh == "n" ]]; do
|
|
||||||
echo "Do you want to modify the existing ssh config? (New values will be appended) (y/n)"
|
|
||||||
read modifyssh
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec 3>&1 # save stdout file descriptor
|
|
||||||
|
|
||||||
# add the ssh rc that symlinks the used SSH_AUTH_SOCK. This will be executed on every ssh login.
|
|
||||||
# The idea is that if the user is logging in using ssh -A, the symlink will point to the correct
|
|
||||||
# location of the ssh auth socket and the remote ssh agent will be used.
|
|
||||||
# SSH_AUTH_SOCK is declared in brethil_dotfile.sh
|
|
||||||
exec 1>>~/.ssh/rc
|
|
||||||
echo '#!/bin/bash'
|
|
||||||
echo 'if test "$SSH_AUTH_SOCK" ; then'
|
|
||||||
echo ' ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock'
|
|
||||||
echo 'fi '
|
|
||||||
chmod 755 ~/.ssh/rc
|
|
||||||
|
|
||||||
exec 1>>$ssh_config # redirect everything below to the $ssh_config file
|
|
||||||
if [[ "$modifyssh" == "n" ]]; then
|
|
||||||
echo "Did not modify $ssh_config."
|
|
||||||
exec 1>&3 # restore stdout
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
echo "# brethil's dotfiles setup start"
|
|
||||||
echo 'TCPKeepAlive=yes'
|
|
||||||
echo 'ServerAliveCountMax=6'
|
|
||||||
echo
|
|
||||||
echo "## Uncomment to enable compression for all ssh sessions"
|
|
||||||
echo '#Compression=yes'
|
|
||||||
echo
|
|
||||||
echo '## Uncomment the following to enable ssh ControlMaster and ssh session persistence'
|
|
||||||
echo '#ControlMaster autoask # ask for confirmation before using a shared connection'
|
|
||||||
echo '#ControlMaster auto # do not ask for confirmation'
|
|
||||||
echo '#ControlPath ~/.ssh/%r@%h:%p'
|
|
||||||
echo '#ControlPersist yes'
|
|
||||||
echo
|
|
||||||
echo 'Host *'
|
|
||||||
echo ' ServerAliveInterval 300'
|
|
||||||
echo
|
|
||||||
echo '## Enable the following if you want to use the rmate textmate remote'
|
|
||||||
echo "#Host *"
|
|
||||||
echo "# RemoteForward 52698 localhost:52698"
|
|
||||||
echo
|
|
||||||
echo '## Enable the following if you want to use a reverse ssh tunnel to use mecp command on remote hosts'
|
|
||||||
echo "#Host *"
|
|
||||||
echo "# Remoteforward 2222 localhost:22"
|
|
||||||
echo
|
|
||||||
echo '# end of brethil dotfiles setup #'
|
|
||||||
|
|
||||||
exec 1>&3 # restore stdout
|
|
||||||
echo ".ssh/ssh_config configured. Edit it to enable custom options:"
|
|
||||||
echo "- Compression"
|
|
||||||
echo "- Remote forwarding remote:2222->localhost:22 (revere tunnel to scp back to the original host using mecp)"
|
|
||||||
echo "# End of ssh config."
|
|
||||||
}
|
|
||||||
|
|
||||||
function fix_annoyances {
|
|
||||||
## Fix scrolling in byobu
|
|
||||||
if [[ $(uname) == "Darwin" ]]; then
|
|
||||||
sed -i '' 's/set -g terminal-overrides/#set -g terminal-overrides/' /usr/share/byobu/profiles/tmux
|
|
||||||
else
|
|
||||||
sed -i 's/set -g terminal-overrides/#set -g terminal-overrides/' /usr/share/byobu/profiles/tmux
|
|
||||||
fi
|
|
||||||
|
|
||||||
# remove ls from the grc.zsh config: # TODO: fix this on MacOS
|
|
||||||
sed 's|ls \\|#ls \\|' /etc/grc.zsh
|
|
||||||
|
|
||||||
# TODO: add iptables, docker to grc.zsh
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# First setup
|
|
||||||
function brethil_dotfiles_setup {
|
|
||||||
antibody &>/dev/null || (echo "Please install antibody then continue." 1>&2 && echo "Other useful packages: $PACKAGES" && exit)
|
|
||||||
bin="$HOME/bin"
|
|
||||||
projects="$HOME/projects"
|
|
||||||
git="$HOME/git"
|
|
||||||
mkdir -p "$bin" "$projects" "$git" && echo "Created dirs $bin, $projects, $git"
|
|
||||||
|
|
||||||
# prepare .zshrc
|
|
||||||
cp "$HOME/.zshrc"{,.pre-brethil-dotfiles}
|
|
||||||
exec 3>&1 # save stdout
|
|
||||||
exec 1>>"$HOME/.zshrc"
|
|
||||||
echo -e "\n\n# brethil's dotfiles:"
|
|
||||||
echo "export DOTFILES=$DOTFILES"
|
|
||||||
echo "source \$DOTFILES/brethil_dotfile.sh"
|
|
||||||
echo -e "# End of brethil's dotfiles\n\n"
|
|
||||||
exec 1>&3 # restore stdout
|
|
||||||
|
|
||||||
antibody bundle "$DOTFILES/antibody_plugins.txt"
|
|
||||||
antibody update
|
|
||||||
|
|
||||||
fix_annoyances
|
|
||||||
setup_vim
|
|
||||||
# Create ssh config
|
|
||||||
create_ssh_config
|
|
||||||
# git config
|
|
||||||
setup_git
|
|
||||||
# ipython profile
|
|
||||||
setup_ipython
|
|
||||||
# pdbpp rc
|
|
||||||
setup_pdbprc
|
|
||||||
# ackrc
|
|
||||||
setup_ackrc
|
|
||||||
|
|
||||||
ZSH="$(antibody path robbyrussell/oh-my-zsh)"
|
|
||||||
ln -s "$DOTFILES/brethil.zsh-theme" "${ZSH}/themes/" # TODO: improve this
|
|
||||||
ln -s "$DOTFILES/brethil-minimal.zsh-theme" "${ZSH}/themes/"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function main(){
|
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
# Setup
|
|
||||||
# brethil_dotfiles_setup
|
|
||||||
source "$DOTFILES/colors.sh"
|
|
||||||
|
|
||||||
echo -e "$BOLD$GREEN Install complete!"
|
|
||||||
echo ""
|
|
||||||
echo "$WHITE Set \$DOTFILES to $DOTFILES"
|
|
||||||
echo -e "$RED Functions definitions:$WHITE \$DOTFILES/functions.sh\n\tyou can add your own functions in ~/.dotfiles_functions"
|
|
||||||
echo -e "$RED Aliases definitions:$WHITE \$DOTFILES/aliases.sh\n\tyou can add your own aliases in ~/.dotfiles_aliases)"
|
|
||||||
echo -e "$RED Colors definitions:$WHITE \$DOTFILES/colors.sh"
|
|
||||||
echo -e "$CLEAR"
|
|
||||||
echo "More zsh plugins can be added using antibody, adding them at \$DOTFILES/antibody_plugins.txt"
|
|
||||||
|
|
||||||
echo "Type '. ~/.zshrc' or 'exec zsh -l' to source the new configuration."
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
Loading…
Reference in New Issue
Block a user