This commit is contained in:
Didier Slof 2023-09-01 03:34:16 +02:00
parent 33ee95006d
commit 721a9d1813
Signed by: didier
GPG key ID: 01E71F18AA4398E5
28 changed files with 210 additions and 246 deletions

2
.gitignore vendored
View file

@ -1,2 +0,0 @@
.idea/
.dotfiles/

View file

@ -1,10 +0,0 @@
# Dotfiles
## `distros/`
This directory is meant to setup the distro to the liking of the user.
### `distros/*/root`
Contains files to overlay over the executing system.
### `distro/*/sys-scripts`
scripts that are ran as `root`
### `distro/*/user-scripts`
scripts that are ran as the user

View file

@ -0,0 +1,11 @@
super_apply() {
pacman -S --needed sudo reflector
if ! grep -q "Reflector" /etc/pacman.d/mirrorlist; then
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
reflector -c NL -f 10 --threads 4 --save /etc/pacman.d/mirrorlist
else
echo "err: reflector already executed -- skipping..."
fi
cp files/pacman.conf /etc/pacman.conf
}

View file

@ -0,0 +1,7 @@
#!/bin/sh
describe="Install stuff on the system!"
super_apply() {
cp files/sudoers /etc/sudoers
}

View file

@ -0,0 +1,7 @@
super_apply() {
pacman -S --needed zsh cmake
}
super_undo() {
pacman -R zsh
}

41
crates/10-zsh/crate.sh Normal file
View file

@ -0,0 +1,41 @@
#!/bin/sh
describe="Install zsh and oh-my-zsh!"
scripts="@distro @self"
super_apply() {
[ -d /tmp/fastfetch ] || git clone https://github.com/LinusDierheimer/fastfetch /tmp/fastfetch
if ! command -v fastfetch &> /dev/null; then
cd /tmp/fastfetch
mkdir -p build
cd build
cmake ..
cmake --build . --target fastfetch
mv fastfetch /usr/local/bin/fastfetch
fi
usermod $USER --shell /bin/zsh
}
super_undo() {
usermod $USER --shell /bin/bash
}
apply() {
if [ ! -d "$HOME/.oh-my-zsh" ]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
PL_DIR=${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
[ -d "$PL_DIR" ] || git clone https://github.com/zsh-users/zsh-autosuggestions $PL_DIR
PL_DIR=${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
[ -d "$PL_DIR" ] || git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $PL_DIR
fi
[ -e "$HOME/.zshrc" ] || ln files/.zshrc $HOME/.zshrc
}
undo() {
unlink $HOME/.zshrc
rm -rf $HOME/.oh-my-zsh
}

View file

@ -0,0 +1,23 @@
export GPG_TTY=$(tty)
# paths
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
# ZSH
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="afowler"
plugins=(git docker docker-compose node zsh-autosuggestions zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
# ALIASES
alias open="xdg-open"
alias nobeep="sudo modprobe -r pcspkr"
alias s="title $HOST && cmatrix -rs && clear"
alias q="exit"
# COSMETICS
fastfetch
export PATH="${PATH}:/home/${USER}/.local/bin"
export SSH_AUTH_SOCK="/run/user/1000/keyring/ssh"

View file

@ -0,0 +1,7 @@
super_apply() {
pacman -S --needed vim
}
super_undo() {
echo "we never uninstall vim -_-"
}

View file

@ -0,0 +1,10 @@
source ~/.vimrc
set scrolloff=5
set incsearch
map Q gq
Plug 'machakann/vim-highlightedyank'
Plug 'tpope/vim-commentary'
Plug 'wellle/targets.vim'

View file

@ -1,3 +1,2 @@
set number
set relativenumber

View file

@ -0,0 +1,7 @@
super_apply() {
pacman -S --needed alacritty
}
super_undo() {
pacman -R alacritty
}

View file

@ -0,0 +1,12 @@
#!/bin/sh
describe="Installs alacritty and configs"
scripts="@distro @self"
apply() {
[ -e "$HOME/.config/alacritty/alacritty.yml" ] || ln files/alacritty.yml $HOME/.config/alacritty/alacritty.yml
}
undo() {
unlink $HOME/.config/alacritty/alacritty.yml
}

View file

@ -1,7 +1,3 @@
bell:
animation: 'Ease'
duration: 50
color: '#555555'
cursor:
style:
shape: 'Block'

View file

@ -1 +0,0 @@
doas

View file

@ -1,20 +0,0 @@
cmd="apk"
while getopts "icru" opt; do
case $opt in
i)
cmd="$cmd add"
;;
u)
cmd="$cmd add"
;;
r)
cmd="$cmd del"
;;
c)
cmd="$cmd info -q"
;;
esac
done
shift $((OPTIND-1))
$cmd $@

View file

@ -1 +0,0 @@
permit persit wheel

View file

@ -1,5 +0,0 @@
#!/bin/sh
# removes sudo
apk del sudo

View file

@ -1,4 +0,0 @@
neofetch
git
vim
sudo

View file

@ -1,2 +0,0 @@
reflector # for scripts/00-reflector.sh
alacritty # favourite terminal emulator

View file

@ -1,22 +0,0 @@
#!/bin/sh
cmd="pacman --noconfirm"
while getopts "icru" opt; do
case $opt in
i)
cmd="$cmd -S"
;;
u)
cmd="$cmd -Syyu"
;;
r)
cmd="$cmd -R"
;;
c)
cmd="$cmd -Q"
;;
esac
done
shift $((OPTIND-1))
$cmd $@

View file

@ -1,12 +0,0 @@
#!/bin/sh
# Sets up fast mirrors on arch
if ! pacman -Q reflector; then
echo "reflector was not installed"
exit 1
fi
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
reflector -c NL -f 10 --threads 4 --save /etc/pacman.d/mirrorlist
echo "Server = arch.neo.faulty.nl/$repo/os/$arch" >> /etc/pacman.d/mirrorlist

View file

@ -1,13 +0,0 @@
#!/bin/sh
# Installs yay.
[ "$UID" = "0" ] || exit 0
yaytmpdir=$(mktemp -d)
git clone https://aur.archlinux.org/yay $yaytmpdir
oldpwd=$(pwd)
cd $yaytmpdir
makepkg -si
cd $oldpwd

85
dot Executable file
View file

@ -0,0 +1,85 @@
#!/bin/sh
ask=0
is_function() {
type "$1" 2> /dev/null | sed "s/$1//" | grep -qwi function
}
curr_distro() {
cat /etc/os-release | grep -G "^ID=" | sed 's/ID=//'
}
include() {
[ -f "$1" ] || return 1
. $1
return 0
}
func() {
if is_function $(echo "super_$2"); then
sudo sh -c ". $1 && super_$2"
fi
is_function $2 && $2
}
get_command() {
case $1 in
a*)
printf "apply"
;;
u*)
printf "undo"
;;
*)
echo "err: not supported" >&2
exit 1
;;
esac
}
# only run this *in crate dir*
run_crate() {
include ./crate.sh || exit 1
if [ -n "$describe" ]; then
echo "desc($(basename $PWD)): $describe"
fi
cmd=$(get_command $1)
scripts=${scripts:-"@self @distro"}
for s in $scripts; do
echo "exec($(basename $PWD)): $s/$cmd"
case $s in
@self)
func ./crate.sh $cmd
;;
@distro)
unset -f super_$cmd
unset -f $cmd
include ./crate.$(curr_distro).sh
func ./crate.$(curr_distro).sh $cmd
unset -f super_$cmd
unset -f $cmd
include ./crate.sh
;;
*)
sh $s
;;
esac
done
}
if [ $# -eq 2 ]; then
[ -d crates/*$1 ] || exit 1
cd crates/*$1
run_crate $2
cd ../..
else
[ $# -eq 0 ] && exit 2
for crate in $(find ./crates -mindepth 1 -maxdepth 1 -type d | sort); do
cd $crate
run_crate $1
cd ../..
done
fi

View file

@ -1,7 +0,0 @@
#!/bin/sh
mkdir .dotfiles &>/dev/null
for item in ${@:-update install_package_list run_system_scripts run_user_scripts link_home overlay}; do
echo "executed_step:$item" >> .dotfiles/pending_sync
done

132
sync.sh
View file

@ -1,132 +0,0 @@
#!/bin/sh
osreleaseprop() {
cat /etc/os-release | grep -e "^$1=" | sed 's/ID=//'
}
elevated() {
s=${SUDO:-sudo}
if [ ! "$s" = "none" ]; then
if ! command -v $s &> /dev/null; then
echo "command \"$s\" not found"
exit 1
fi
else
s=""
fi
$s $@
}
DISTRO=$(osreleaseprop ID)
if [ ! -d "distros/$DISTRO" ]; then
echo "$DISTRO is not supported."
exit 1
fi
pm() {
elevated "sh distros/$DISTRO/pm.sh $@"
}
install_package_list() {
pkgs=""
[ -f "distros/${1:-$DISTRO}/package.list" ] || return 1
for pkg in $(cat distros/${1:-$DISTRO}/package.list | sed 's/#.*$//'); do
pkgs="$pkgs $pkg"
done
pm -i $pkgs
}
run_scripts() {
cmd=$1
shift
case $cmd in
sys)
dir="distros/${1:-$DISTRO}/sys-scripts"
[ -d "$dir" ] || return
for s in $(ls $dir); do
echo "# running $dir/$s..."
elevated sh $dir/$s || exit 1
done
;;
user)
dir="distros/${1:-$DISTRO}/user-scripts"
[ -d "$dir" ] || return
for s in $(ls $dir); do
echo "# running $dir/$s..."
sh $dir/$s || exit 1
done
;;
esac
}
overlay() {
[ -d "distros/${1:-$DISTRO}/root" ] || return 0
elevated cp -r distros/${1:-$DISTRO}/root /
}
__step_update() {
echo "# updating system..."
pm -u
}
__step_install_package_list() {
echo "# installing package lists..."
install_package_list any
install_package_list
}
__step_run_system_scripts() {
echo "# running system scripts..."
run_scripts sys any
run_scripts sys
}
__step_run_user_scripts() {
echo "# running user scripts..."
run_scripts user any
run_scripts user
}
__step_overlay() {
echo "# overlaying root directories..."
overlay any
overlay
}
__step_link_home() {
echo "# linking all home files..."
trackingfile=".dotfiles/$(git rev-parse HEAD)-links"
for item in $(find ./home -type f); do
path=$(echo $item | sed "s/\.\/home//")
[ -z "$path" ] && continue
grep -q "$path" $trackingfile &> /dev/null && continue
path="$HOME$path"
mkdir -p $(dirname $path) &> /dev/null
ln $item $path && echo "$path" >> $trackingfile
done
}
step() {
if ! grep -q "executed_step:$1" .dotfiles/pending_sync &> /dev/null; then
$(printf "__step_%s" "$1")
echo "executed_step:$1" >> .dotfiles/pending_sync
fi
}
mkdir -p .dotfiles &> /dev/null
touch .dotfiles/pending_sync
if [ -n "$1" ]; then
step $1
else
echo "started_sync:$(date)" >> .dotfiles/log
step update
step install_package_list
step run_system_scripts
step run_user_scripts
step link_home
step overlay
echo "finished_sync:$(date)" >> .dotfiles/log
fi
unlink .dotfiles/pending_sync

View file

@ -1,10 +0,0 @@
#!/bin/sh
for linkfile in ${@:-$(find .dotfiles -type f -name *-links)}; do
echo "# processing linkfile $linkfile..."
for link in $(cat $linkfile); do
echo "# unlinking $link..."
unlink $link
done
rm -rf $linkfile
done