Merge branch 'dev' into master
This commit is contained in:
commit
5cdebc9603
1
Makefile
1
Makefile
|
@ -1,5 +1,6 @@
|
||||||
MAKEFILE_PATH ?= $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
MAKEFILE_PATH ?= $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||||
|
|
||||||
|
all: install
|
||||||
default: install
|
default: install
|
||||||
|
|
||||||
install:
|
install:
|
||||||
|
|
|
@ -12,6 +12,7 @@ set $right l
|
||||||
set $term term
|
set $term term
|
||||||
set $fterm floating-term
|
set $fterm floating-term
|
||||||
set $menu app-launcher
|
set $menu app-launcher
|
||||||
|
set $fileexplorer thunar
|
||||||
|
|
||||||
output * bg $HOME/.wallpaper fill
|
output * bg $HOME/.wallpaper fill
|
||||||
|
|
||||||
|
@ -29,8 +30,9 @@ bindsym $mod+t exec $term
|
||||||
bindsym $mod+Alt+Return exec urxvt
|
bindsym $mod+Alt+Return exec urxvt
|
||||||
bindsym $mod+Shift+Alt+Return exec kitty
|
bindsym $mod+Shift+Alt+Return exec kitty
|
||||||
bindsym $mod+c kill
|
bindsym $mod+c kill
|
||||||
bindsym $mod+Shift+c kill # TODO: kill -9
|
bindsym $mod+Shift+c kill # TODO: kill -9?
|
||||||
bindsym $mod+Space exec $menu
|
bindsym $mod+Space exec $menu
|
||||||
|
bindsym $mod+e exec $fileexplorer
|
||||||
bindsym $mod+Shift+r reload
|
bindsym $mod+Shift+r reload
|
||||||
bindsym $mod+Control+Escape exit
|
bindsym $mod+Control+Escape exit
|
||||||
bindsym $mod+Shift+e exit
|
bindsym $mod+Shift+e exit
|
||||||
|
@ -44,7 +46,6 @@ bindsym $mod+$down focus down
|
||||||
bindsym $mod+$up focus up
|
bindsym $mod+$up focus up
|
||||||
bindsym $mod+$right focus right
|
bindsym $mod+$right focus right
|
||||||
|
|
||||||
# TODO: this should nudge if floating?
|
|
||||||
bindsym $mod+Left focus left
|
bindsym $mod+Left focus left
|
||||||
bindsym $mod+Down focus down
|
bindsym $mod+Down focus down
|
||||||
bindsym $mod+Up focus up
|
bindsym $mod+Up focus up
|
||||||
|
@ -87,8 +88,6 @@ bindsym $mod+Shift+0 move container to workspace 10
|
||||||
bindsym $mod+b splith
|
bindsym $mod+b splith
|
||||||
bindsym $mod+v splitv
|
bindsym $mod+v splitv
|
||||||
|
|
||||||
bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
bindsym $mod+Shift+f fullscreen
|
bindsym $mod+Shift+f fullscreen
|
||||||
bindsym $mod+f floating toggle
|
bindsym $mod+f floating toggle
|
||||||
bindsym $mod+s floating disable
|
bindsym $mod+s floating disable
|
||||||
|
@ -159,6 +158,7 @@ client.focused #66d9ef #66d9ef #66d9ef #66d9ef #66d9ef
|
||||||
client.focused_inactive #111111 #111111 #ffffff #111111 #111111
|
client.focused_inactive #111111 #111111 #ffffff #111111 #111111
|
||||||
client.unfocused #111111 #111111 #ffffff #111111 #111111
|
client.unfocused #111111 #111111 #ffffff #111111 #111111
|
||||||
|
|
||||||
|
exec swayidle -w timeout 300 'swaylock -f -c 000000' timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' before-sleep 'swaylock -f -c 000000'
|
||||||
exec mako
|
exec mako
|
||||||
exec gammastep -t 6500:3500 -l 39.0:-94.5
|
exec gammastep -t 6500:3500 -l 39.0:-94.5
|
||||||
exec_always makoctl reload
|
exec_always makoctl reload
|
||||||
|
@ -166,5 +166,3 @@ exec_always notify-send -a "Sway" -i ~/.wallpaper "Sway configuration loaded."
|
||||||
|
|
||||||
include $ENV_PATH/sway/config.d/*
|
include $ENV_PATH/sway/config.d/*
|
||||||
|
|
||||||
exec mako
|
|
||||||
exec libinput-gestures -c $DOTFILES_PATH/apps/de/libinput/sway-gestures.conf
|
|
||||||
|
|
|
@ -43,9 +43,8 @@ window#waybar.empty {
|
||||||
color: #111111;
|
color: #111111;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.empty {
|
#workspaces button.persistent {
|
||||||
color: #666666;
|
color: #666666;
|
||||||
/* background-color: #111111; */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.urgent {
|
#workspaces button.urgent {
|
||||||
|
|
|
@ -64,3 +64,5 @@
|
||||||
|
|
||||||
[include]
|
[include]
|
||||||
path = $ENV_PATH/gitconfig
|
path = $ENV_PATH/gitconfig
|
||||||
|
[color]
|
||||||
|
ui = auto
|
||||||
|
|
172
apps/rofi/theme
Normal file
172
apps/rofi/theme
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
/**
|
||||||
|
* rofi -dump-theme output.
|
||||||
|
* Rofi version: 1.6.0
|
||||||
|
**/
|
||||||
|
* {
|
||||||
|
red: rgba ( 220, 50, 47, 100 % );
|
||||||
|
selected-active-foreground: var(background);
|
||||||
|
lightfg: rgba ( 88, 104, 117, 100 % );
|
||||||
|
separatorcolor: var(foreground);
|
||||||
|
urgent-foreground: var(red);
|
||||||
|
alternate-urgent-background: var(lightbg);
|
||||||
|
lightbg: rgba ( 238, 232, 213, 100 % );
|
||||||
|
background-color: rgba ( 0, 0, 0, 0 % );
|
||||||
|
border-color: var(foreground);
|
||||||
|
normal-background: var(background);
|
||||||
|
selected-urgent-background: var(red);
|
||||||
|
alternate-active-background: var(lightbg);
|
||||||
|
spacing: 2;
|
||||||
|
blue: rgba ( 38, 139, 210, 100 % );
|
||||||
|
alternate-normal-foreground: var(foreground);
|
||||||
|
urgent-background: var(background);
|
||||||
|
selected-normal-foreground: var(lightbg);
|
||||||
|
active-foreground: var(blue);
|
||||||
|
background: rgba ( 253, 246, 227, 100 % );
|
||||||
|
selected-active-background: var(blue);
|
||||||
|
active-background: var(background);
|
||||||
|
selected-normal-background: var(lightfg);
|
||||||
|
alternate-normal-background: var(lightbg);
|
||||||
|
foreground: rgba ( 0, 43, 54, 100 % );
|
||||||
|
selected-urgent-foreground: var(background);
|
||||||
|
normal-foreground: var(foreground);
|
||||||
|
alternate-urgent-foreground: var(red);
|
||||||
|
alternate-active-foreground: var(blue);
|
||||||
|
}
|
||||||
|
element {
|
||||||
|
padding: 1px ;
|
||||||
|
spacing: 5px ;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
element normal.normal {
|
||||||
|
background-color: var(normal-background);
|
||||||
|
text-color: var(normal-foreground);
|
||||||
|
}
|
||||||
|
element normal.urgent {
|
||||||
|
background-color: var(urgent-background);
|
||||||
|
text-color: var(urgent-foreground);
|
||||||
|
}
|
||||||
|
element normal.active {
|
||||||
|
background-color: var(active-background);
|
||||||
|
text-color: var(active-foreground);
|
||||||
|
}
|
||||||
|
element selected.normal {
|
||||||
|
background-color: var(selected-normal-background);
|
||||||
|
text-color: var(selected-normal-foreground);
|
||||||
|
}
|
||||||
|
element selected.urgent {
|
||||||
|
background-color: var(selected-urgent-background);
|
||||||
|
text-color: var(selected-urgent-foreground);
|
||||||
|
}
|
||||||
|
element selected.active {
|
||||||
|
background-color: var(selected-active-background);
|
||||||
|
text-color: var(selected-active-foreground);
|
||||||
|
}
|
||||||
|
element alternate.normal {
|
||||||
|
background-color: var(alternate-normal-background);
|
||||||
|
text-color: var(alternate-normal-foreground);
|
||||||
|
}
|
||||||
|
element alternate.urgent {
|
||||||
|
background-color: var(alternate-urgent-background);
|
||||||
|
text-color: var(alternate-urgent-foreground);
|
||||||
|
}
|
||||||
|
element alternate.active {
|
||||||
|
background-color: var(alternate-active-background);
|
||||||
|
text-color: var(alternate-active-foreground);
|
||||||
|
}
|
||||||
|
element-text {
|
||||||
|
background-color: rgba ( 0, 0, 0, 0 % );
|
||||||
|
highlight: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
element-icon {
|
||||||
|
background-color: rgba ( 0, 0, 0, 0 % );
|
||||||
|
size: 1.2000ch ;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
window {
|
||||||
|
padding: 0;
|
||||||
|
background-color: var(background);
|
||||||
|
border: 0;
|
||||||
|
font: 'Iosevka Term';
|
||||||
|
}
|
||||||
|
mainbox {
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
message {
|
||||||
|
padding: 1px ;
|
||||||
|
border-color: var(separatorcolor);
|
||||||
|
border: 0px ;
|
||||||
|
}
|
||||||
|
textbox {
|
||||||
|
text-color: var(foreground);
|
||||||
|
}
|
||||||
|
listview {
|
||||||
|
padding: 2px 0px 0px ;
|
||||||
|
scrollbar: false;
|
||||||
|
border-color: var(separatorcolor);
|
||||||
|
spacing: 5px ;
|
||||||
|
fixed-height: 0;
|
||||||
|
border: 0px ;
|
||||||
|
}
|
||||||
|
scrollbar {
|
||||||
|
width: 4px ;
|
||||||
|
padding: 0;
|
||||||
|
handle-width: 8px ;
|
||||||
|
border: 0;
|
||||||
|
handle-color: var(normal-foreground);
|
||||||
|
}
|
||||||
|
sidebar {
|
||||||
|
border-color: var(separatorcolor);
|
||||||
|
border: 2px dash 0px 0px ;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: var(normal-foreground);
|
||||||
|
}
|
||||||
|
button selected {
|
||||||
|
background-color: var(selected-normal-background);
|
||||||
|
text-color: var(selected-normal-foreground);
|
||||||
|
}
|
||||||
|
num-filtered-rows {
|
||||||
|
expand: false;
|
||||||
|
text-color: rgba ( 128, 128, 128, 100 % );
|
||||||
|
}
|
||||||
|
num-rows {
|
||||||
|
expand: false;
|
||||||
|
text-color: rgba ( 128, 128, 128, 100 % );
|
||||||
|
}
|
||||||
|
textbox-num-sep {
|
||||||
|
expand: false;
|
||||||
|
str: "/";
|
||||||
|
text-color: rgba ( 128, 128, 128, 100 % );
|
||||||
|
}
|
||||||
|
inputbar {
|
||||||
|
padding: 1px ;
|
||||||
|
spacing: 0px ;
|
||||||
|
text-color: var(normal-foreground);
|
||||||
|
children: [ prompt,textbox-prompt-colon,entry,num-filtered-rows,textbox-num-sep,num-rows,case-indicator ];
|
||||||
|
}
|
||||||
|
case-indicator {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: var(normal-foreground);
|
||||||
|
}
|
||||||
|
entry {
|
||||||
|
placeholder-color: rgba ( 128, 128, 128, 100 % );
|
||||||
|
spacing: 0;
|
||||||
|
placeholder: "Type to filter";
|
||||||
|
text-color: var(normal-foreground);
|
||||||
|
}
|
||||||
|
prompt {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: var(normal-foreground);
|
||||||
|
}
|
||||||
|
textbox-prompt-colon {
|
||||||
|
margin: 0px 0.3000em 0.0000em 0.0000em ;
|
||||||
|
expand: false;
|
||||||
|
str: ":";
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
mode-switcher {
|
||||||
|
border: 0px ;
|
||||||
|
}
|
|
@ -20,6 +20,7 @@ function fish_user_key_bindings
|
||||||
bind -M insert \ce end-of-line
|
bind -M insert \ce end-of-line
|
||||||
bind -M insert \ca beginning-of-line
|
bind -M insert \ca beginning-of-line
|
||||||
bind -M insert \cw forward-word
|
bind -M insert \cw forward-word
|
||||||
|
bind -M insert \ct tmuxswitcher
|
||||||
|
|
||||||
bind -M insert \cv edit_command_buffer
|
bind -M insert \cv edit_command_buffer
|
||||||
bind -M default \cv edit_command_buffer
|
bind -M default \cv edit_command_buffer
|
||||||
|
|
|
@ -108,6 +108,11 @@ bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
|
||||||
# bind-key -T copy-mode-vi "y" send -X copy-selection
|
# bind-key -T copy-mode-vi "y" send -X copy-selection
|
||||||
bind-key -T copy-mode-vi "y" send-keys -X copy-pipe-and-cancel -X 'clip'
|
bind-key -T copy-mode-vi "y" send-keys -X copy-pipe-and-cancel -X 'clip'
|
||||||
|
|
||||||
|
# various control binds
|
||||||
|
bind-key n command-prompt -p "New Session:" "new-session -s '%1'"
|
||||||
|
bind-key K kill-pane
|
||||||
|
bind-key C-S-k kill-session -C
|
||||||
|
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH "~/.config/tmux/plugins/"
|
set-environment -g TMUX_PLUGIN_MANAGER_PATH "~/.config/tmux/plugins/"
|
||||||
|
|
||||||
# list of plugins
|
# list of plugins
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
pacaur -Syyu --noconfirm --noedit
|
pacaur -Syu --noconfirm --noedit
|
||||||
|
|
||||||
# TODO: update kernel with a flag?
|
# TODO: update kernel with a flag?
|
||||||
# yes | pacman -Syu && kexec -l --initrd=/boot/initramfs-linux.img /boot/vmlinuz-linux && kexec -e
|
# yes | pacman -Syu && kexec -l --initrd=/boot/initramfs-linux.img /boot/vmlinuz-linux && kexec -e
|
||||||
|
|
20
bin/clipshot
20
bin/clipshot
|
@ -1,16 +1,30 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
umask 077
|
||||||
|
d="$(date +"%Y-%m-%d_%H-%M-%S")"
|
||||||
|
fn="$SCROTS_PATH/clipshot_$d.png"
|
||||||
|
|
||||||
if is_wayland; then
|
if is_wayland; then
|
||||||
grim -g "$(slurp -d)" - | wl-copy
|
dim="$(slurp -d)"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
grim -g "$dim" - | wl-copy
|
||||||
|
wl-paste -n > "$fn"
|
||||||
|
echo "$fn"
|
||||||
|
# grim -g "$dim" - | tee "$fn" | wl-copy -f
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
pkill unclutter
|
pkill unclutter
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
fn="$SCROTS_PATH/clipshot_$(date +"%Y-%m-%d_%H-%M-%S").png"
|
|
||||||
import "$fn"
|
import "$fn"
|
||||||
chmod 700 "$fn"
|
|
||||||
< "$fn" xclip -t image/png -i -selection clipboard
|
< "$fn" xclip -t image/png -i -selection clipboard
|
||||||
< "$fn" xclip -t image/png -i -selection primary
|
< "$fn" xclip -t image/png -i -selection primary
|
||||||
< "$fn" xclip -t image/png -i -selection secondary
|
< "$fn" xclip -t image/png -i -selection secondary
|
||||||
< "$fn" xclip -t image/png -i -selection buffer-cut
|
< "$fn" xclip -t image/png -i -selection buffer-cut
|
||||||
unclutter &
|
unclutter &
|
||||||
|
echo "$fn"
|
||||||
fi
|
fi
|
||||||
|
set -x
|
||||||
|
|
15
bin/fzf-history-weight
Executable file
15
bin/fzf-history-weight
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
rf="$1" # history count record file
|
||||||
|
cf="$1" # all choices file
|
||||||
|
|
||||||
|
touch "$record"
|
||||||
|
app="$(
|
||||||
|
< "$rf" awk 'NF{NF--};1' | cat - "$cf" | \
|
||||||
|
sort | uniq -c | sort -nr | \
|
||||||
|
sd '^\s+' '' | \
|
||||||
|
cut -d' ' -f2- | \
|
||||||
|
fzf
|
||||||
|
)"
|
||||||
|
echo "$app $(date +%s)" >> "$LAUNCHER_HISTORY_FILE"
|
||||||
|
echo "$app"
|
8
bin/fzfp
8
bin/fzfp
|
@ -6,7 +6,11 @@ FZFP_PASS_DIR="$HOME/.password-store"
|
||||||
FZFP_HEIGHT="${FZFP_HEIGHT:-40%}"
|
FZFP_HEIGHT="${FZFP_HEIGHT:-40%}"
|
||||||
FZFP_PROMPT="${FZFP_PROMPT:-"$FZFP_PASS_CMD@$FZFP_PASS_DIR> "}"
|
FZFP_PROMPT="${FZFP_PROMPT:-"$FZFP_PASS_CMD@$FZFP_PASS_DIR> "}"
|
||||||
FZFP_PASS_OPTS="${FZFP_PASS_OPTS:-}"
|
FZFP_PASS_OPTS="${FZFP_PASS_OPTS:-}"
|
||||||
|
|
||||||
cd "$FZFP_PASS_DIR" || { echo "Could not cd to $FZFP_PASS_DIR" >&2; exit 1; }
|
cd "$FZFP_PASS_DIR" || { echo "Could not cd to $FZFP_PASS_DIR" >&2; exit 1; }
|
||||||
pp="$(fd gpg | sd ".gpg" "" | fzf --height "$FZFP_HEIGHT" --prompt "$FZFP_PROMPT")"
|
|
||||||
"${FZFP_PASS_CMD}" $FZFP_PASS_OPTS "$@" "$pp"
|
# TODO: weighted history (see ./launch)
|
||||||
|
"${FZFP_PASS_CMD}" $FZFP_PASS_OPTS "$@" \
|
||||||
|
"$(fd gpg | sd ".gpg" "" | fzf --height "$FZFP_HEIGHT" --prompt "$FZFP_PROMPT")"
|
||||||
|
|
||||||
cd - >/dev/null || return 1
|
cd - >/dev/null || return 1
|
||||||
|
|
|
@ -1,15 +1,3 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
# TODO: can we use fzfp here?
|
env WAYLAND_DEBUG=1 FZFP_HEIGHT="100%" floating-term bash -c "fzfp | head -n 1 | wl-copy &"
|
||||||
floating-term \
|
|
||||||
bash -c "
|
|
||||||
cd $HOME/.password-store
|
|
||||||
fd gpg |
|
|
||||||
sd '.gpg\$' '' |
|
|
||||||
fzf --height 100% --prompt 'fzf-pass> ' > /tmp/fzfp-key
|
|
||||||
pass \"\$(cat /tmp/fzfp-key)\" |
|
|
||||||
head -n 1 |
|
|
||||||
sd '\s+\$' '' |
|
|
||||||
nohup clip &>/dev/null &
|
|
||||||
notify-send -a 'pass' 'Password in Clipboard'
|
|
||||||
"
|
|
||||||
|
|
12
bin/pass-otp
Executable file
12
bin/pass-otp
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# TODO: check for pass
|
||||||
|
|
||||||
|
key="$1"; shift
|
||||||
|
args=("$@")
|
||||||
|
|
||||||
|
otp="$(set -e; pass "$key" 2>/dev/null | grep -Pi '^otp.*: ?.*$' | cut -d ':' -f 2 | sed 's/ //g')"
|
||||||
|
otp_status="$?"
|
||||||
|
[[ $otp_status != 0 ]] && { echo "pass command failed with exit code $otp_status"; exit 1; }
|
||||||
|
[[ -z $otp ]] && { echo "No OTP secret found for pass entry '$key'"; exit 2; }
|
||||||
|
simple-otp "$otp"
|
22
bin/scrup
22
bin/scrup
|
@ -1,9 +1,19 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
f="${HOME}/.scrup.png"
|
set -x
|
||||||
|
|
||||||
pkill unclutter
|
remote_dir="scrots"
|
||||||
sleep 0.1
|
url_prefix="https://files.lyte.dev/$remote_dir"
|
||||||
import "${f}"
|
|
||||||
upload "${f}" "scrup-$(date +%Y-%m-%d_%H-%M-%S).png" "scrots"
|
u="$(uuid -v4)"
|
||||||
unclutter &
|
d="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||||
|
|
||||||
|
fn="$(clipshot)"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Scrot captured. Uploading..."
|
||||||
|
upload "${fn}" "scrup-$u-$d.png" "$remote_dir"
|
||||||
|
echo "$url_prefix/scrup-$u-$d.png" | clip
|
||||||
|
notify-send "Scrot uploaded. URL in clipboard."
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
8
bin/simple-otp
Executable file
8
bin/simple-otp
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# TODO: check for oathtool
|
||||||
|
|
||||||
|
key="$1"; shift
|
||||||
|
args=("$@")
|
||||||
|
|
||||||
|
oathtool --totp=sha1 -b "$key" "${args[@]}"
|
12
bin/upload
12
bin/upload
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
# TODO: progress bar!
|
# TODO: progress bar!
|
||||||
|
|
||||||
HOST="ld"
|
HOST="faceless"
|
||||||
|
|
||||||
f="${1}"
|
f="${1}"
|
||||||
fname="${2:-$(basename "${f}")}"
|
fname="${2:-$(basename "${f}")}"
|
||||||
subdir="${3:-uploads}"
|
subdir="${3:-uploads}"
|
||||||
internal_dir="/home/daniel/services/data/files/${subdir}"
|
internal_dir="/home/daniel/files/${subdir}"
|
||||||
url="https://lyte.dev/${subdir}/${fname}"
|
url="https://files.lyte.dev/${subdir}/${fname}"
|
||||||
|
|
||||||
[ "${f}" = "" ] && echo "No file provided. Exiting." >&2 && exit 2
|
[ "${f}" = "" ] && echo "No file provided. Exiting." >&2 && exit 2
|
||||||
[ ! -f "${f}" ] && echo "File '$f' does not exist. Exiting." >&2 && exit 1
|
[ ! -f "${f}" ] && echo "File '$f' does not exist. Exiting." >&2 && exit 1
|
||||||
|
@ -18,11 +18,9 @@ if [ "$(curl -s -o /dev/null -w "%{http_code}" "${url}")" -eq 200 ]; then
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ssh ld mkdir -p "${internal_dir}"
|
ssh "$HOST" mkdir -p "${internal_dir}"
|
||||||
rsync --progress --no-owner --no-group --no-perms --stats --ignore-existing "${f}" "${HOST}:${internal_dir}/${fname}" | tee "${HOME}/.upload.log"
|
rsync --progress --no-owner --no-group --chmod=644 --ignore-existing "${f}" "${HOST}:${internal_dir}/${fname}" | tee "${HOME}/.upload.log"
|
||||||
code="$?"
|
code="$?"
|
||||||
# shellcheck disable=SC2029
|
|
||||||
ssh ld chmod a+r "${internal_dir}/${fname}"
|
|
||||||
echo "Uploaded to: ${url}"
|
echo "Uploaded to: ${url}"
|
||||||
|
|
||||||
if [ "$code" -ne 0 ]; then
|
if [ "$code" -ne 0 ]; then
|
||||||
|
|
28
bofa.json
Normal file
28
bofa.json
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"date": "d/m/Y",
|
||||||
|
"default_account": 1,
|
||||||
|
"delimiter": "comma",
|
||||||
|
"headers": true,
|
||||||
|
"ignore_duplicate_lines": true,
|
||||||
|
"ignore_duplicate_transactions": true,
|
||||||
|
"rules": true,
|
||||||
|
"skip_form": false,
|
||||||
|
"specifics": [
|
||||||
|
"AppendHash"
|
||||||
|
],
|
||||||
|
"roles": [
|
||||||
|
"date_transaction",
|
||||||
|
"description",
|
||||||
|
"amount",
|
||||||
|
],
|
||||||
|
"do_mapping": [true, true ,true],
|
||||||
|
"mapping": {
|
||||||
|
"3": {
|
||||||
|
"Savings Account": 3
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"Savings Account": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": 2
|
||||||
|
}
|
105
env/desktop/nix/base.nix
vendored
Normal file
105
env/desktop/nix/base.nix
vendored
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
# TODO: fork?
|
||||||
|
(import "${builtins.fetchTarball https://github.com/rycee/home-manager/archive/master.tar.gz}/nixos")
|
||||||
|
];
|
||||||
|
|
||||||
|
home-manager.users.daniel = {
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODO: bootloader will vary by device
|
||||||
|
boot = {
|
||||||
|
supportedFilesystems = [ "exfat" ];
|
||||||
|
loader = {
|
||||||
|
grub = {
|
||||||
|
enable = true;
|
||||||
|
version = 2;
|
||||||
|
device = "/dev/sda";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "nether";
|
||||||
|
useDHCP = true;
|
||||||
|
firewall = {
|
||||||
|
allowedTCPPorts = [ 22 80 443 7770 ];
|
||||||
|
allowedUDPPorts = [ 53 57 63 67 7770 ];
|
||||||
|
# enable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
console = {
|
||||||
|
font = "Lat2-Terminus16";
|
||||||
|
keyMap = "us";
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "America/Chicago";
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
wget lsof vim git curl fish fzf neovim
|
||||||
|
];
|
||||||
|
variables.EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
openssh.enable = true;
|
||||||
|
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
layout = "us";
|
||||||
|
libinput.enable = true;
|
||||||
|
desktopManager.plasma5.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
enableFontDir = true;
|
||||||
|
enableGhostscriptFonts = true;
|
||||||
|
|
||||||
|
fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
antialias = true;
|
||||||
|
useEmbeddedBitmaps = true;
|
||||||
|
|
||||||
|
defaultFonts = {
|
||||||
|
serif = [ "Iosevka Type" ];
|
||||||
|
sansSerif = [ "Iosevka Type" ];
|
||||||
|
monospace = [ "Iosevka Type" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = with pkgs; [
|
||||||
|
iosevka
|
||||||
|
nerdfonts
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
sound.enable = true;
|
||||||
|
hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
users.extraUsers.daniel = {
|
||||||
|
isNormalUser = true;
|
||||||
|
group = "users";
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
home = "/home/daniel/.home";
|
||||||
|
shell = pkgs.fish;
|
||||||
|
createHome = true;
|
||||||
|
uid = 1000;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "20.03";
|
||||||
|
}
|
2
env/laptop/sway/config.d/main
vendored
2
env/laptop/sway/config.d/main
vendored
|
@ -14,3 +14,5 @@ input type:touchpad {
|
||||||
input type:keyboard {
|
input type:keyboard {
|
||||||
xkb_options ctrl:nocaps
|
xkb_options ctrl:nocaps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exec libinput-gestures -c $DOTFILES_PATH/apps/de/libinput/sway-gestures.conf
|
||||||
|
|
|
@ -61,5 +61,5 @@ cd '~/.config/dotfiles' && ./setup.bash # follow the instructions!
|
||||||
|
|
||||||
[upstream]: https://git.faceless.lytedev.io/lytedev/dotfiles
|
[upstream]: https://git.faceless.lytedev.io/lytedev/dotfiles
|
||||||
[github]: https://github.com/lytedev/dotfiles
|
[github]: https://github.com/lytedev/dotfiles
|
||||||
[desktop-screenshot]: https://lyte.dev/unix/desktop-screenshot.png
|
[desktop-screenshot]: https://files.lyte.dev/unix/desktop-screenshot.png
|
||||||
[1]: https://smallstep.com/blog/ssh-tricks-and-tips/
|
[1]: https://smallstep.com/blog/ssh-tricks-and-tips/
|
||||||
|
|
Reference in a new issue