Compare commits
No commits in common. "ng" and "main" have entirely different histories.
47 changed files with 757 additions and 257 deletions
12
README.md
Normal file
12
README.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# Raine's Dotfiles
|
||||||
|
|
||||||
|
## Crates
|
||||||
|
Everything is a crate.
|
||||||
|
If something is distro specific you should follow the following naming scheme:
|
||||||
|
`crate.<DISTRO>.sh`
|
||||||
|
|
||||||
|
## Using it
|
||||||
|
Just use the script tbh
|
||||||
|
```sh
|
||||||
|
curl -L https://via.ixvd.net/sh | sh
|
||||||
|
```
|
12
crates/00-system/crate.arch.sh
Normal file
12
crates/00-system/crate.arch.sh
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
super_apply() {
|
||||||
|
pacman -Syyu --noconfirm
|
||||||
|
pacman -S --needed --noconfirm 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
|
||||||
|
}
|
5
crates/00-system/crate.debian.sh
Normal file
5
crates/00-system/crate.debian.sh
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
super_apply() {
|
||||||
|
apt update -y
|
||||||
|
apt install -y netselect-apt sudo
|
||||||
|
netselect-apt
|
||||||
|
}
|
11
crates/00-system/crate.sh
Normal file
11
crates/00-system/crate.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
describe="Install stuff on the system!"
|
||||||
|
scripts="@distro @self"
|
||||||
|
|
||||||
|
super_apply() {
|
||||||
|
if [ -f /usr/lib/security/pam_wheel.so ] && ! grep -q "# pam_wheel.so added" /etc/pam.d/su; then
|
||||||
|
echo "auth sufficient pam_wheel.so trust use_uid" > /etc/pam.d/su
|
||||||
|
echo "# pam_wheel.so added" > /etc/pam.d/su
|
||||||
|
fi
|
||||||
|
}
|
31
crates/00-system/files/pacman.conf
Normal file
31
crates/00-system/files/pacman.conf
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
[options]
|
||||||
|
HoldPkg = pacman glibc yay
|
||||||
|
Architecture = auto
|
||||||
|
|
||||||
|
Color
|
||||||
|
CheckSpace
|
||||||
|
ParallelDownloads = 5
|
||||||
|
|
||||||
|
SigLevel = Required DatabaseOptional
|
||||||
|
LocalFileSigLevel = Optional
|
||||||
|
|
||||||
|
#[testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[core]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
#[community-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[community]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
#[multilib-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[multilib]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
17
crates/01-ssh/crate.sh
Normal file
17
crates/01-ssh/crate.sh
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
describe="setup ssh"
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
[ -e "$HOME/.ssh/authorized_keys" ] || ln files/authorized_keys $HOME/.ssh/authorized_keys
|
||||||
|
if ! [ -f "$HOME/.ssh/id_rsa" ]; then
|
||||||
|
echo "Creating new ssh key for this device..."
|
||||||
|
ssh-keygen -f $HOME/.ssh/id_rsa -p "" -q
|
||||||
|
echo "Adding key to authorized_keys..."
|
||||||
|
cat $HOME/.ssh/id_rsa.pub > $HOME/.ssh/authorized_keys
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
undo() {
|
||||||
|
echo "Undoing ssh keys is not supported, please do this manually."
|
||||||
|
}
|
1
crates/01-ssh/files/authorized_keys
Normal file
1
crates/01-ssh/files/authorized_keys
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCeNQfnbyyF3sht43vH5BcXDPca8nWu6bKPVGvAlWBOq4Av8ME2IQgwVe9nJ05r73ZY02/Vdqc01a8wyK5Hmw0XlPL0Cn6wc9QoiscOvq5lMUK87S2tr3EVLGkgl8o7nmVuWgLewyojiORjM02P1PZEiFhKPXVEQFxU0dFz9QtpAdm0u78Xn2HTukHpXSv44R3XDDMFZ3Ek/XRuS6J9dZVxGkgCLQhK8kpfbxuiYxaRC7MHgGlYuxjLuZ6P4i+V+SSSShfCGdm6U9bgeIAwftN6a8Pc9+OsBeZGSUrGjZjRlD35q0a7fbpoS8pKTfbwgf/ijYeu3JmAQUlY+H959mIpg4H9XOgRrKVJSYwx5/BGuhmWgVy6HIYpXCQfEbLE7QDmwC2C430KzAH6jCcrRNyurIUCuO4iq9dwoQTzboMccOK79S2Z+1B5fYgS3BZgaiTUBSME2G2FriM6utgleiBnvFu/p7oH2I8ZHL/aVcSWAw0gbzsr7ADywAuiDNZk18c= strix@ryuk
|
11
crates/05-i3/crate.arch.sh
Normal file
11
crates/05-i3/crate.arch.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
pkgs="i3 i3lock i3status libpulse brightnessctl xss-lock dex maim dmenu gnome-keyring feh picom"
|
||||||
|
|
||||||
|
super_apply() {
|
||||||
|
pacman -S --needed --noconfirm $pkgs
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
pacman -R --noconfirm $pkgs
|
||||||
|
}
|
26
crates/05-i3/crate.sh
Normal file
26
crates/05-i3/crate.sh
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
describe="Installs i3"
|
||||||
|
scripts="@distro @self"
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
[ -d "$HOME/.config/i3" ] || mkdir -p $HOME/.config/i3
|
||||||
|
[ -d "$HOME/.config/i3status" ] || mkdir -p $HOME/.config/i3status
|
||||||
|
[ -e "$HOME/.config/i3/config" ] || ln files/config $HOME/.config/i3/config
|
||||||
|
[ -e "$HOME/.config/i3status/config" ] || ln files/status_config $HOME/.config/i3status/config
|
||||||
|
[ -e "$HOME/.config/picom.conf" ] || ln files/picom.conf $HOME/.config/picom.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
undo() {
|
||||||
|
rm $HOME/.config/i3/config
|
||||||
|
rm $HOME/.config/i3status/config
|
||||||
|
}
|
||||||
|
|
||||||
|
super_apply() {
|
||||||
|
[ -d "/etc/X11/xorg.conf.d" ] || mkdir -p /etc/X11/xorg.conf.d/
|
||||||
|
cp files/40-proper-touchpad.conf /etc/X11/xorg.conf.d/40-proper-touchpad.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
rm /etc/X11/xorg.conf.d/40-proper-touchpad.conf
|
||||||
|
}
|
12
crates/05-i3/crate.void.sh
Normal file
12
crates/05-i3/crate.void.sh
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
pkgs="i3 i3lock i3status pulseaudio-devel brightnessctl xss-lock dex maim dmenu gnome-keyring feh picom"
|
||||||
|
|
||||||
|
super_apply() {
|
||||||
|
xbps-install -y $pkgs
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
xbps-remove -y $pkgs
|
||||||
|
}
|
||||||
|
|
8
crates/05-i3/files/40-proper-touchpad.conf
Normal file
8
crates/05-i3/files/40-proper-touchpad.conf
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Section "InputClass"
|
||||||
|
Identifier "libinput touchpad catchall"
|
||||||
|
MatchIsTouchpad "on"
|
||||||
|
MatchDevicePath "/dev/input/event*"
|
||||||
|
Driver "libinput"
|
||||||
|
Option "NaturalScrolling" "True"
|
||||||
|
Option "Tapping" "on"
|
||||||
|
EndSection
|
206
crates/05-i3/files/config
Normal file
206
crates/05-i3/files/config
Normal file
|
@ -0,0 +1,206 @@
|
||||||
|
#######################
|
||||||
|
## Raine's i3 config ##
|
||||||
|
## Mar 22, 2023 ##
|
||||||
|
## mutation: 1m ##
|
||||||
|
#######################
|
||||||
|
|
||||||
|
## Mostly similar to i3's config yet differs
|
||||||
|
|
||||||
|
# Useful variables:
|
||||||
|
# This section probably gets changed a lot
|
||||||
|
# ---
|
||||||
|
set $terminal alacritty
|
||||||
|
set $screen_lock i3lock -c "#111111" --nofork
|
||||||
|
set $appmenu i3-dmenu-desktop
|
||||||
|
|
||||||
|
set $screenshot maim -s | xclip -selection clipboard -t image/png
|
||||||
|
|
||||||
|
set $font pango:monospace 8
|
||||||
|
|
||||||
|
# Startup Applications:
|
||||||
|
# Things that will startup when starting i3.
|
||||||
|
# ---
|
||||||
|
exec_always --no-startup-id dex --autostart --environment i3
|
||||||
|
exec_always --no-startup-id nm-applet
|
||||||
|
exec_always --no-startup-id xss-lock --transfer-sleep-lock -- $screen_lock
|
||||||
|
exec_always --no-startup-id gnome-keyring-daemon --start --components=ssh,secrets,pkcs11
|
||||||
|
exec_always --no-startup-id feh --bg-fill ~/Pictures/wallpaper.jpg
|
||||||
|
exec_always --no-startup-id picom
|
||||||
|
|
||||||
|
# Gaps & Borders:
|
||||||
|
# ---
|
||||||
|
gaps inner 10
|
||||||
|
smart_gaps on
|
||||||
|
|
||||||
|
default_border pixel 1
|
||||||
|
hide_edge_borders smart_no_gaps
|
||||||
|
|
||||||
|
# Extra variables:
|
||||||
|
# Only need changing for very specific installations.
|
||||||
|
# ---
|
||||||
|
set $audio_volume_up XF86AudioRaiseVolume
|
||||||
|
set $audio_volume_down XF86AudioLowerVolume
|
||||||
|
set $audio_mute XF86AudioMute
|
||||||
|
set $audio_mute_mic XF86AudioMicMute
|
||||||
|
|
||||||
|
set $brightness_up XF86MonBrightnessUp
|
||||||
|
set $brightness_down XF86MonBrightnessDown
|
||||||
|
|
||||||
|
set $ws_1 "1:main"
|
||||||
|
set $ws_2 "2:term"
|
||||||
|
set $ws_3 "3:docs"
|
||||||
|
set $ws_4 "4:mail"
|
||||||
|
set $ws_5 "5"
|
||||||
|
set $ws_6 "6"
|
||||||
|
set $ws_7 "7"
|
||||||
|
set $ws_8 "8"
|
||||||
|
set $ws_9 "9:bg"
|
||||||
|
set $ws_10 "10:misc"
|
||||||
|
|
||||||
|
set $meta_refresh_statusbar killall -SIGUSR1 i3status
|
||||||
|
bar {
|
||||||
|
strip_workspace_numbers yes
|
||||||
|
status_command i3status
|
||||||
|
}
|
||||||
|
|
||||||
|
# END OF CONFIG
|
||||||
|
|
||||||
|
set $mod Mod4
|
||||||
|
set $alt Mod1
|
||||||
|
|
||||||
|
# Customization
|
||||||
|
|
||||||
|
# class border backgr. text indic. child_border
|
||||||
|
client.focused #81A1C1 #81A1C1 #ffffff #D8DEE9
|
||||||
|
client.focused_inactive #2E3440 #2E3440 #88C0D0 #454948
|
||||||
|
client.unfocused #2E3440 #2E3440 #88C0D0 #454948
|
||||||
|
client.urgent #D08770 #3B4252 #ffffff #268BD2
|
||||||
|
client.placeholder #000000 #0c0c0c #ffffff #000000
|
||||||
|
client.background #3B4252
|
||||||
|
|
||||||
|
# Generic
|
||||||
|
floating_modifier $mod
|
||||||
|
tiling_drag modifier titlebar
|
||||||
|
font $font
|
||||||
|
|
||||||
|
# Open a terminal
|
||||||
|
bindsym $mod+Return exec $terminal
|
||||||
|
|
||||||
|
# Kill current window
|
||||||
|
bindsym $mod+$alt+q kill
|
||||||
|
|
||||||
|
# Open app menu
|
||||||
|
bindsym $mod+d exec --no-startup-id $appmenu
|
||||||
|
|
||||||
|
# Lock screen
|
||||||
|
bindsym $mod+l exec --no-startup-id $screen_lock
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
bindsym Print exec --no-startup-id $screenshot
|
||||||
|
|
||||||
|
# Audio
|
||||||
|
bindsym $audio_volume_up exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $meta_refresh_statusbar
|
||||||
|
bindsym $audio_volume_down exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $meta_refresh_statusbar
|
||||||
|
bindsym $audio_mute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $meta_refresh_statusbar
|
||||||
|
bindsym $audio_mute_mic exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $meta_refresh_statusbar
|
||||||
|
|
||||||
|
# Brightness
|
||||||
|
bindsym $brightness_up exec --no-startup-id brightnessctl set +5% && $meta_refresh_statusbar
|
||||||
|
bindsym $brightness_down exec --no-startup-id brightnessctl set 5%- && $meta_refresh_statusbar
|
||||||
|
|
||||||
|
# Change focused window
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# Move focused window
|
||||||
|
bindsym $mod+Shift+Up move up
|
||||||
|
bindsym $mod+Shift+Down move down
|
||||||
|
bindsym $mod+Shift+Left move left
|
||||||
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
|
# Splits
|
||||||
|
bindsym $mod+Shift+h split h
|
||||||
|
bindsym $mod+Shift+v split v
|
||||||
|
|
||||||
|
# Change container layout
|
||||||
|
bindsym $mod+Shift+s layout stacking
|
||||||
|
bindsym $mod+Shift+t layout tabbed
|
||||||
|
bindsym $mod+Shift+d layout toggle split
|
||||||
|
|
||||||
|
# Make current window fullscreen
|
||||||
|
bindsym $mod+Shift+f fullscreen toggle
|
||||||
|
|
||||||
|
# Floating stuff
|
||||||
|
bindsym $mod+space focus mode_toggle
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# Scratchpad
|
||||||
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
|
# Switch to workspace
|
||||||
|
bindsym $mod+1 workspace $ws_1
|
||||||
|
bindsym $mod+2 workspace $ws_2
|
||||||
|
bindsym $mod+3 workspace $ws_3
|
||||||
|
bindsym $mod+4 workspace $ws_4
|
||||||
|
bindsym $mod+5 workspace $ws_5
|
||||||
|
bindsym $mod+6 workspace $ws_6
|
||||||
|
bindsym $mod+7 workspace $ws_7
|
||||||
|
bindsym $mod+8 workspace $ws_8
|
||||||
|
bindsym $mod+9 workspace $ws_9
|
||||||
|
bindsym $mod+0 workspace $ws_10
|
||||||
|
|
||||||
|
# Move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace $ws_1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace $ws_2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace $ws_3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace $ws_4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace $ws_5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace $ws_6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace $ws_7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace $ws_8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace $ws_9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace $ws_10
|
||||||
|
|
||||||
|
# Move through workspaces
|
||||||
|
bindsym $mod+$alt+Left workspace prev
|
||||||
|
bindsym $mod+$alt+Right workspace next
|
||||||
|
|
||||||
|
# WM stuff
|
||||||
|
# reload i3 config
|
||||||
|
bindsym $mod+$alt+c reload
|
||||||
|
# restart i3
|
||||||
|
bindsym $mod+$alt+r restart
|
||||||
|
# exit i3
|
||||||
|
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'Exit i3?' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||||
|
|
||||||
|
# Modes
|
||||||
|
bindsym $mod+r mode resize
|
||||||
|
mode "resize" {
|
||||||
|
bindsym $nav_left resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym $nav_down resize grow height 10 px or 10 ppt
|
||||||
|
bindsym $nav_up resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym $nav_right resize grow width 10 px or 10 ppt
|
||||||
|
bindsym Left resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym Down resize grow height 10 px or 10 ppt
|
||||||
|
bindsym Up resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym Right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
bindsym $mod+r mode "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
bindsym $mod+s mode "session"
|
||||||
|
mode "session" {
|
||||||
|
bindsym l exec --no-startup-id $lock, mode "default"
|
||||||
|
bindsym e exec --no-startup-id i3-msg exit, mode "default"
|
||||||
|
bindsym Shift+r exec --no-startup-id systemctl reboot, mode "default"
|
||||||
|
bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"
|
||||||
|
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
bindsym $mod+s mode "default"
|
||||||
|
}
|
9
crates/05-i3/files/picom.conf
Normal file
9
crates/05-i3/files/picom.conf
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
inactive-opacity = 0.75;
|
||||||
|
|
||||||
|
blur: {
|
||||||
|
method = "box";
|
||||||
|
size = 10;
|
||||||
|
background = false;
|
||||||
|
background-frame = false;
|
||||||
|
background-fixed = false;
|
||||||
|
}
|
57
crates/05-i3/files/status_config
Normal file
57
crates/05-i3/files/status_config
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
general {
|
||||||
|
output_format = "i3bar"
|
||||||
|
colors = true
|
||||||
|
interval = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
order += "ipv6"
|
||||||
|
order += "wireless wlp58s0"
|
||||||
|
order += "battery 0"
|
||||||
|
order += "disk /"
|
||||||
|
order += "memory"
|
||||||
|
order += "load"
|
||||||
|
order += "tztime local"
|
||||||
|
|
||||||
|
wireless wlp58s0 {
|
||||||
|
format_up = "W: (%quality at %essid, %bitrate) %ip"
|
||||||
|
format_down = "W: down"
|
||||||
|
}
|
||||||
|
|
||||||
|
battery 0 {
|
||||||
|
format = "%status %percentage %remaining %emptytime"
|
||||||
|
format_down = "No battery"
|
||||||
|
status_chr = "⚡ CHR"
|
||||||
|
status_bat = "🔋 BAT"
|
||||||
|
status_unk = "? UNK"
|
||||||
|
status_full = "☻ FULL"
|
||||||
|
path = "/sys/class/power_supply/BAT%d/uevent"
|
||||||
|
low_threshold = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
tztime local {
|
||||||
|
format = "%Y-%m-%d %H:%M:%S"
|
||||||
|
hide_if_equals_localtime = false
|
||||||
|
}
|
||||||
|
|
||||||
|
tztime berlin {
|
||||||
|
format = "%Y-%m-%d %H:%M:%S %Z"
|
||||||
|
timezone = "Europe/Berlin"
|
||||||
|
}
|
||||||
|
|
||||||
|
load {
|
||||||
|
format = "%5min"
|
||||||
|
}
|
||||||
|
|
||||||
|
memory {
|
||||||
|
format = "%used"
|
||||||
|
threshold_degraded = "10%"
|
||||||
|
format_degraded = "MEMORY: %free"
|
||||||
|
}
|
||||||
|
|
||||||
|
disk "/" {
|
||||||
|
format = "%free"
|
||||||
|
}
|
||||||
|
|
||||||
|
read_file uptime {
|
||||||
|
path = "/proc/uptime"
|
||||||
|
}
|
7
crates/10-zsh/crate.arch.sh
Normal file
7
crates/10-zsh/crate.arch.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
super_apply() {
|
||||||
|
pacman -S --needed --noconfirm zsh
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
pacman -R --noconfirm zsh
|
||||||
|
}
|
7
crates/10-zsh/crate.debian.sh
Normal file
7
crates/10-zsh/crate.debian.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
super_apply() {
|
||||||
|
apt install -y zsh
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
pacman -R --noconfirm zsh
|
||||||
|
}
|
31
crates/10-zsh/crate.sh
Normal file
31
crates/10-zsh/crate.sh
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
describe="Install zsh and oh-my-zsh!"
|
||||||
|
scripts="@distro @self"
|
||||||
|
|
||||||
|
super_apply() {
|
||||||
|
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
|
||||||
|
|
||||||
|
[ -f "$HOME/.zshrc" ] && unlink $HOME/.zshrc
|
||||||
|
[ -e "$HOME/.zshrc" ] || ln files/.zshrc $HOME/.zshrc
|
||||||
|
}
|
||||||
|
|
||||||
|
undo() {
|
||||||
|
unlink $HOME/.zshrc
|
||||||
|
rm -rf $HOME/.oh-my-zsh
|
||||||
|
}
|
10
crates/10-zsh/crate.void.sh
Normal file
10
crates/10-zsh/crate.void.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
super_apply() {
|
||||||
|
xbps-install -y zsh
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
xbps-remove -y zsh
|
||||||
|
}
|
||||||
|
|
53
crates/10-zsh/files/.zshrc
Normal file
53
crates/10-zsh/files/.zshrc
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# Raine's .zshrc
|
||||||
|
|
||||||
|
if [ "$PROFILEINC" = "1" ]; then
|
||||||
|
. ~/.profile
|
||||||
|
fi
|
||||||
|
|
||||||
|
export EDITOR=vim
|
||||||
|
export GPG_TTY=$(tty)
|
||||||
|
export PATH="$PATH:$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$HOME/.local/bin"
|
||||||
|
|
||||||
|
# oh-my-zsh init
|
||||||
|
if [ -f "$HOME/.oh-my-zsh/oh-my-zsh.sh" ]; then
|
||||||
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
|
ZSH_THEME="afowler"
|
||||||
|
plugins=(git docker docker-compose node zsh-autosuggestions zsh-syntax-highlighting zsh-cargo-completion)
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
else
|
||||||
|
echo "oh-my-zsh not detected :("
|
||||||
|
PS1="$(whoami)@${HOSTNAME:-$(hostname)} $ "
|
||||||
|
fi
|
||||||
|
|
||||||
|
update_dotfiles() {
|
||||||
|
cd $HOME/.dotfiles
|
||||||
|
git pull
|
||||||
|
cd - &> /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
share_cdn() {
|
||||||
|
if ! [ -f "$1" ]; then
|
||||||
|
echo "file needs to exist"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
scp $1 keymaker:/usr/share/cdn/random/$2 > /dev/null
|
||||||
|
echo "https://cdn.ixvd.net/random/${2:-$(basename $1)}"
|
||||||
|
}
|
||||||
|
|
||||||
|
container() {
|
||||||
|
docker run \
|
||||||
|
-ti \
|
||||||
|
--rm \
|
||||||
|
--name tmp-$(id -u)-$(openssl rand -hex 8) \
|
||||||
|
--network ${CONTAINER_NETWORK:-internal} \
|
||||||
|
alpine \
|
||||||
|
ash
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -f "$HOME/.config/i3/shortcuts-i3.sh" ] && . ~/.config/i3/shortcuts-i3.sh
|
||||||
|
|
||||||
|
alias q="exit"
|
||||||
|
alias vim="nvim"
|
||||||
|
alias vi="nvim"
|
7
crates/20-vim/crate.arch.sh
Normal file
7
crates/20-vim/crate.arch.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
super_apply() {
|
||||||
|
pacman -S --needed --noconfirm neovim
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
echo "we never uninstall vim -_-"
|
||||||
|
}
|
7
crates/20-vim/crate.debian.sh
Normal file
7
crates/20-vim/crate.debian.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
super_apply() {
|
||||||
|
apt install -y neovim
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
echo "we never uninstall vim -_-"
|
||||||
|
}
|
15
crates/20-vim/crate.sh
Normal file
15
crates/20-vim/crate.sh
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
describe="Install vim and it's stuff"
|
||||||
|
scripts="@distro @self"
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
[ -d "$HOME/.config/nvim" ] || mkdir -p "$HOME/.config/nvim"
|
||||||
|
[ -e "$HOME/.config/nvim/init.vim" ] || ln files/init.vim $HOME/.config/nvim/init.vim
|
||||||
|
[ -e "$HOME/.ideavimrc" ] || ln files/.ideavimrc $HOME/.ideavimrc
|
||||||
|
}
|
||||||
|
|
||||||
|
undo() {
|
||||||
|
unlink $HOME/.config/nvim/init.vim
|
||||||
|
unlink $HOME/.ideavimrc
|
||||||
|
}
|
7
crates/20-vim/crate.void.sh
Normal file
7
crates/20-vim/crate.void.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
super_apply() {
|
||||||
|
xbps-install -y neovim
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
echo "we never uninstall vim -_-"
|
||||||
|
}
|
10
crates/20-vim/files/.ideavimrc
Normal file
10
crates/20-vim/files/.ideavimrc
Normal 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'
|
27
crates/20-vim/files/init.vim
Normal file
27
crates/20-vim/files/init.vim
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
" vim preferences
|
||||||
|
set number
|
||||||
|
set relativenumber
|
||||||
|
syntax on
|
||||||
|
|
||||||
|
" No arrow keys
|
||||||
|
noremap <Up> <Nop>
|
||||||
|
noremap <Down> <Nop>
|
||||||
|
noremap <Left> <Nop>
|
||||||
|
noremap <Right> <Nop>
|
||||||
|
|
||||||
|
" ensure vim-plug
|
||||||
|
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
|
||||||
|
|
||||||
|
call plug#begin()
|
||||||
|
|
||||||
|
Plug 'ThePrimeagen/vim-be-good'
|
||||||
|
Plug 'machakann/vim-highlightedyank'
|
||||||
|
Plug 'tpope/vim-commentary'
|
||||||
|
Plug 'wellle/targets.vim'
|
||||||
|
Plug 'vim-scripts/loremipsum'
|
||||||
|
|
||||||
|
call plug#end()
|
7
crates/30-alacritty/crate.arch.sh
Normal file
7
crates/30-alacritty/crate.arch.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
super_apply() {
|
||||||
|
pacman -S --needed --noconfirm alacritty
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
pacman -R --noconfirm alacritty
|
||||||
|
}
|
13
crates/30-alacritty/crate.sh
Normal file
13
crates/30-alacritty/crate.sh
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
describe="Installs alacritty and configs"
|
||||||
|
scripts="@distro @self"
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
[ -d "$HOME/.config/alacritty" ] || mkdir -p $HOME/.config/alacritty
|
||||||
|
[ -e "$HOME/.config/alacritty/alacritty.yml" ] || ln files/alacritty.yml $HOME/.config/alacritty/alacritty.yml
|
||||||
|
}
|
||||||
|
|
||||||
|
undo() {
|
||||||
|
unlink $HOME/.config/alacritty/alacritty.yml
|
||||||
|
}
|
7
crates/30-alacritty/crate.void.sh
Normal file
7
crates/30-alacritty/crate.void.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
super_apply() {
|
||||||
|
xbps-install -y alacritty
|
||||||
|
}
|
||||||
|
|
||||||
|
super_undo() {
|
||||||
|
xbps-remove -y alacritty
|
||||||
|
}
|
6
crates/30-alacritty/files/alacritty.yml
Normal file
6
crates/30-alacritty/files/alacritty.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
cursor:
|
||||||
|
style:
|
||||||
|
shape: 'Block'
|
||||||
|
blinking: 'On'
|
||||||
|
blink_interval: 500
|
||||||
|
|
9
crates/40-git/crate.sh
Normal file
9
crates/40-git/crate.sh
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
describe="Setup git"
|
||||||
|
scripts="@distro @self"
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
git config --global user.name Strix
|
||||||
|
git config --global user.email strix@saluco.nl
|
||||||
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
name="alacritty"
|
|
||||||
description="Set up alacritty"
|
|
||||||
|
|
||||||
files() {
|
|
||||||
descfile -l files/alacritty.yml {{home}}/.config/alacritty/alacritty.yml
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
alacritty
|
|
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
name="arch custom"
|
|
||||||
description="install's custom arch things"
|
|
||||||
|
|
||||||
suscript ./
|
|
||||||
|
|
||||||
conditionfn is_arch
|
|
||||||
|
|
||||||
is_arch() {
|
|
||||||
grep -q "arch" /etc/os-release
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
name="i3"
|
|
||||||
description="Installs i3 with config"
|
|
||||||
|
|
||||||
files() {
|
|
||||||
descfile -l ./files/i3config {{home}}/.config/i3/config
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
i3
|
|
||||||
i3blocks
|
|
89
dot
Executable file
89
dot
Executable file
|
@ -0,0 +1,89 @@
|
||||||
|
#!/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
|
||||||
|
[ "${DO_SUDO:-yes}" = "yes" ] || return 0
|
||||||
|
ecmd=". $1 && super_$2"
|
||||||
|
[ "$(id -u)" = "0" ] && sh -c "$ecmd" || sudo sh -c "$ecmd"
|
||||||
|
unset ecmd
|
||||||
|
fi
|
||||||
|
is_function $2 && $2
|
||||||
|
}
|
||||||
|
|
||||||
|
# only run this *in crate dir*
|
||||||
|
run_crate() {
|
||||||
|
enabled=1
|
||||||
|
include ./crate.sh || exit 1
|
||||||
|
if [ -n "$describe" ]; then
|
||||||
|
echo "desc($(basename $PWD)): $describe"
|
||||||
|
fi
|
||||||
|
if [ $enabled -ne 1 ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
cmd=$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
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "# details:"
|
||||||
|
echo "# user: $USER (${UID:-$(id -u)})"
|
||||||
|
echo "# groups: $(groups)"
|
||||||
|
echo "# distro: $(curr_distro)"
|
||||||
|
|
||||||
|
cmd=$1
|
||||||
|
if [ -z "$cmd" ]; then
|
||||||
|
echo "usage: $0 <command> [...args]"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
for c in ${@:-$(ls crates)}; do
|
||||||
|
[ -d crates/*$c ] || exit 1
|
||||||
|
cd crates/*$c
|
||||||
|
case $cmd in
|
||||||
|
a | apply)
|
||||||
|
run_crate apply
|
||||||
|
;;
|
||||||
|
u | undo)
|
||||||
|
run_crate undo
|
||||||
|
;;
|
||||||
|
*) exit 1 ;;
|
||||||
|
esac
|
||||||
|
cd ../..
|
||||||
|
done
|
13
dot.sh
13
dot.sh
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
for lib in $(find ./lib -type f -name *.lib.sh); do
|
|
||||||
. $lib
|
|
||||||
done
|
|
||||||
|
|
||||||
__log_lvl=0
|
|
||||||
|
|
||||||
for crate in $(crates); do
|
|
||||||
debug "loading $crate..."
|
|
||||||
|
|
||||||
done
|
|
||||||
echo "OK"
|
|
|
@ -1,88 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. ${LIB_DIR:-./lib}/crate.common.sh
|
|
||||||
. ${LIB_DIR:-./lib}/log.lib.sh
|
|
||||||
. ${LIB_DIR:-./lib}/vars.lib.sh
|
|
||||||
|
|
||||||
file=$1
|
|
||||||
action=$2
|
|
||||||
|
|
||||||
|
|
||||||
run_crate_config_hooks() {
|
|
||||||
debug "running conditional functions..."
|
|
||||||
for condfn in $conditionfns; do
|
|
||||||
debug "running \"$condfn\"..."
|
|
||||||
$condfn || return 1
|
|
||||||
done
|
|
||||||
files
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt_pending_actions() {
|
|
||||||
echo "This crate (${crate:-${1:-unknown}}) wants to make the following changes:"
|
|
||||||
if [ -n "$packages_marked_for_install" ]; then
|
|
||||||
echo "Install these packages:"
|
|
||||||
for pkg in $packages_marked_for_install; do
|
|
||||||
echo " $pkg"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$packages_marked_for_removal" ]; then
|
|
||||||
echo "Remove these packages:"
|
|
||||||
for pkg in $packages_marked_for_removal; do
|
|
||||||
echo " $pkg"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$files_to_link" ]; then
|
|
||||||
echo "Link these files:"
|
|
||||||
for link in $files_to_link; do
|
|
||||||
echo " $(echo $link | sed 's/:/ \-\> /')"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$files_to_copy" ]; then
|
|
||||||
echo "Copy these files:"
|
|
||||||
for file in $files_to_copy; do
|
|
||||||
echo " $(echo $file | sed 's/:/ \-\> /')"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
printf "Is this okay? [press enter to continue] "
|
|
||||||
read
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
case $action in
|
|
||||||
config_check)
|
|
||||||
if ! run_crate_config_hooks; then
|
|
||||||
warn "crate config failed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
skip=0
|
|
||||||
trap 'skip=1' INT
|
|
||||||
prompt_pending_actions
|
|
||||||
[ $skip -eq 1 ] && exit 1
|
|
||||||
trap - INT
|
|
||||||
;;
|
|
||||||
run)
|
|
||||||
if [ "$UID" = "0" ]; then
|
|
||||||
.
|
|
||||||
for script in $scripts_to_run_as_su; do
|
|
||||||
debug "script $script"
|
|
||||||
$script
|
|
||||||
done
|
|
||||||
pm -i $packages_marked_for_install
|
|
||||||
pm -r $packages_marked_for_removal
|
|
||||||
else
|
|
||||||
for file in $files_to_copy; do
|
|
||||||
debug "link $(echo "$file" | sed 's/:/ \-\> /g')"
|
|
||||||
cp $(echo "$file" | sed s'/:.*//g') $(echo "$file" | sed s'/.*://g')
|
|
||||||
done
|
|
||||||
for file in $files_to_link; do
|
|
||||||
debug "link $(echo "$file" | sed 's/:/ \-\> /g')"
|
|
||||||
ln $(echo "$file" | sed s'/:.*//g') $(echo "$file" | sed s'/.*://g')
|
|
||||||
done
|
|
||||||
for script in $scripts_to_run; do
|
|
||||||
debug "script $script"
|
|
||||||
$script
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
|
@ -1,44 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
script() {
|
|
||||||
scripts_to_run="$scripts_to_run $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
suscript() {
|
|
||||||
scripts_to_run_as_su="$scripts_to_run_as_su $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
pkgs() {
|
|
||||||
for pkg in $@; do
|
|
||||||
pkgname="$(echo $pkg | cut -c 2-)"
|
|
||||||
case $(echo $pkg | cut -c 1) in
|
|
||||||
+)
|
|
||||||
packages_marked_for_install="$packages_marked_for_install $pkgname"
|
|
||||||
;;
|
|
||||||
-)
|
|
||||||
packages_marked_for_removal="$packages_marked_for_removal $pkgname"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
conditionfn() {
|
|
||||||
conditionfns="$conditionfns $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
descfile() {
|
|
||||||
islink=${ALWAYS_LINK:-0}
|
|
||||||
while getopts "l" opt; do
|
|
||||||
case $opt in
|
|
||||||
l)
|
|
||||||
islink=1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $((OPTIND-1))
|
|
||||||
if [ $islink -eq 1 ]; then
|
|
||||||
files_to_link="$files_to_link $(subvars $1):$(subvars $2)"
|
|
||||||
else
|
|
||||||
files_to_copy="$files_to_copy $(subvars $1):$(subvars $2)"
|
|
||||||
fi
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
crates() {
|
|
||||||
for c in $(find ./crates -mindepth 1 -maxdepth 1 -type d); do
|
|
||||||
[ -f "$c/crate.sh" ] && echo $(basename $c)
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
crate_runner() {
|
|
||||||
[ -d "$1" ] || return 1
|
|
||||||
sh ./lib/crate-runner.sh $1 $2
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
__log_lvl=1
|
|
||||||
|
|
||||||
__log_get_lvl() {
|
|
||||||
case ${1:-$__log_lvl} in
|
|
||||||
0)
|
|
||||||
echo debug
|
|
||||||
;;
|
|
||||||
1)
|
|
||||||
echo info
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
echo warn
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
echo err
|
|
||||||
;;
|
|
||||||
4)
|
|
||||||
echo fatal
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
__log() {
|
|
||||||
[ $1 -ge $__log_lvl ] || return
|
|
||||||
level=$(__log_get_lvl $1)
|
|
||||||
shift
|
|
||||||
printf "[%s] %s\n" "$level" "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
debug() {
|
|
||||||
__log 0 "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
info() {
|
|
||||||
__log 1 "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
warn() {
|
|
||||||
__log 2 "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
err() {
|
|
||||||
__log 3 "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
fatal() {
|
|
||||||
while getopts "e:" opt; do
|
|
||||||
case $opt in
|
|
||||||
e)
|
|
||||||
exitnum=$OPTARG
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $((OPTIND-1))
|
|
||||||
|
|
||||||
__log 4 "$@"
|
|
||||||
exit ${exitnum:-1}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
safevar() {
|
|
||||||
echo "$@" | sed 's_/_\\/_g'
|
|
||||||
}
|
|
||||||
|
|
||||||
subvars() {
|
|
||||||
echo "$@" \
|
|
||||||
| sed "s/{{home}}/$(safevar $HOME)/g" \
|
|
||||||
| sed "s/{{user}}/$USER/g"
|
|
||||||
}
|
|
14
remote_script.sh
Normal file
14
remote_script.sh
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# this script is meant to be ran when .dotfiles is not present.
|
||||||
|
#
|
||||||
|
# example:
|
||||||
|
# curl https://git.saluco.nl/strix/dotfiles/raw/branch/main/remote_script.sh | sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
HOME=${HOME:-/home/${USER:-$(whomai)}}
|
||||||
|
|
||||||
|
[ -d "$HOME/.dotfiles" ] || git clone https://git.saluco.nl/strix/dotfiles $HOME/.dotfiles
|
||||||
|
cd $HOME/.dotfiles
|
||||||
|
./dot a
|
13
scripts/void.d/update-discord.sh
Executable file
13
scripts/void.d/update-discord.sh
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Downloading newest package..."
|
||||||
|
curl -Lo /tmp/discord.deb "https://discord.com/api/download?platform=linux&format=deb"
|
||||||
|
cd /tmp
|
||||||
|
echo "Extracting package..."
|
||||||
|
xdeb discord.deb
|
||||||
|
echo "Installing package..."
|
||||||
|
sudo xbps-install -R /tmp/binpkgs discord
|
||||||
|
rm -rf /tmp/binpkgs
|
||||||
|
cd -
|
Loading…
Reference in a new issue