1
0
mirror of https://github.com/artizirk/dotfiles.git synced 2025-06-24 14:44:13 +03:00

Compare commits

..

14 Commits

9 changed files with 215 additions and 17 deletions

136
.bin/create_container Executable file
View File

@ -0,0 +1,136 @@
#!/bin/bash
set -euo pipefail
DEFAULT_SUITE="bookworm"
BASE="/var/lib/machines"
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
function show_help {
cat <<-EOF
Usage: $0 -h | -n NAME [-s SUITE] [-t [SNAPSHOT_NAME] -r] [-d]
Create a nspanw container called NAME
-h help
-n container name
-s debian suite (default: ${DEFAULT_SUITE})
-t snapshot container
-r rollback to snapshot
-d delete container
EOF
}
while getopts 'hn:s:t:rd' flag; do
case "${flag}" in
h) show_help; exit 0;;
n) name="${OPTARG}" ;;
s) suite="${OPTARG}" ;;
t) snapshot="${OPTARG}" ;;
r) rollback=1 ;;
d) delete=1 ;;
*) echo "Unexpected option ${flag}" ;;
esac
done
SUITE=${suite:-$DEFAULT_SUITE}
if [[ -z ${name:-} ]]; then
echo "Container name is unset"
echo
show_help
exit;
else
echo "Container name is $name and suite is ${SUITE}"
fi
if [[ -n ${snapshot:-} ]]; then
dest_snapshot_name="${BASE}/.${name}_${snapshot}"
if [[ -n ${rollback:-} ]]; then
if [[ -d ${dest_snapshot_name} ]]; then
btrfs subvolume delete "${BASE}/${name}"
btrfs subvolume snapshot "${dest_snapshot_name}" "${BASE}/${name}"
exit 0
else
echo "Can't rollback as '${snapshot}' does not exist"
exit 1
fi
else
btrfs subvolume snapshot -r "${BASE}/${name}" "${dest_snapshot_name}"
exit 0
fi
fi
if [[ -n ${delete:-} ]]; then
btrfs subvolume delete "${BASE}/${name}" "${BASE}/.${name}_"*
exit 0
fi
btrfs subvolume create "${BASE}/${name}"
APT_CACHE_DIR="/var/cache/apt/archives"
if [[ -d ${APT_CACHE_DIR} ]]; then
CACHE_ARGS="--cache-dir=${APT_CACHE_DIR}"
else
CACHE_ARGS=""
fi
debootstrap ${CACHE_ARGS} "${SUITE}" "${BASE}/${name}"
mkdir -p "$BASE/$name/root/.ssh"
chmod 700 "$BASE/$name/root/.ssh"
if [ -f "/root/.ssh/authorized_keys" ]; then
cp -v /root/.ssh/authorized_keys "$BASE/$name/root/.ssh/authorized_keys"
chmod 600 "$BASE/$name/root/.ssh/authorized_keys"
echo "added ssh keys to root"
fi
if [[ -e "$BASE/$name/etc/resolv.conf" ]]; then
rm "$BASE/$name/etc/resolv.conf"
fi
if [[ -e "$BASE/$name/etc/hostname" ]]; then
rm "$BASE/$name/etc/hostname"
fi
systemd-nspawn --console=pipe -D "$BASE/$name" /bin/bash <<'EOF'
echo "Now running inside nspawn $(pwd)"
source /etc/os-release
if [[ "$ID" == "ubuntu" ]]; then
sed -i '1 s/$/ restricted universe multiverse/' /etc/apt/sources.list
elif [[ "$ID" == "debian" ]]; then
if [[ $VERSION_ID -le 11 ]]; then
sed -i '1 s/$/ contrib non-free/' /etc/apt/sources.list
else
sed -i '1 s/$/ contrib non-free non-free-firmware/' /etc/apt/sources.list
fi
fi
apt-get update
apt-get install --yes --no-install-recommends locales dbus ssh python3
echo "locales locales/default_environment_locale select en_US.UTF-8" | debconf-set-selections
echo "locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8, et_EE.UTF-8 UTF-8" | debconf-set-selections
rm /etc/locale.gen
dpkg-reconfigure --frontend noninteractive locales
ln -fs /usr/share/zoneinfo/Europe/Tallinn /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
apt install --yes --no-install-recommends neovim
update-alternatives --set editor /usr/bin/nvim
ln -sf /usr/share/nvim/runtime/macros/less.sh /usr/local/bin/vless
systemctl enable systemd-networkd
# systemd-resolved package also replaces /etc/resolv.conf with a symlink that breaks DNS in our current pre setup environment
apt install --yes --no-install-recommends libnss-resolve
# Needed by libnss-resolve config in /etc/nsswitch.conf
systemctl enable systemd-resolved
EOF

3
.bin/no-sleep Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
systemd-inhibit --what=sleep:idle --mode=block bash -c 'while true; do sleep 1; done'

View File

@ -1,2 +1,2 @@
#!/usr/bin/env bash #!/usr/bin/env bash
udo sed -i -e 's#Exec=/usr/bin/slack %U#Exec=/usr/bin/slack\ %U\ --enable-features=WebRTCPipeWireCapturer#' /usr/share/applications/slack.desktop sudo sed -i -e 's#^Exec=/usr/bin/slack -s %U$#Exec=/usr/bin/slack\ -s\ %U --enable-features=WebRTCPipeWireCapturer,UseOzonePlatform --ozone-platform=wayland#' /usr/share/applications/slack.desktop

View File

@ -1,4 +1,18 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""
Sway screenshot tool. Saved screenshots are also added to GTK recents list for easy access.
Uses following tools
* grim
* slurp
* https://codeberg.org/vyivel/dulcepan
* jq
Region selection uses dulcepan. It works by first freezing the screen so that popups sway visible.
Then it allows selection of the region you want to screenshot.
"""
import gi import gi
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib from gi.repository import Gtk, GLib
@ -28,16 +42,7 @@ else:
sys.exit(0) sys.exit(0)
elif sys.argv[1] == '--region': elif sys.argv[1] == '--region':
outputs = run(['swaymsg', '-t', 'get_outputs'], check=True, capture_output=True) run(["dulcepan", "-o", file_name], check=True)
for output in json.loads(outputs.stdout):
if not output.get("focused"):
continue
image = Popen(["grim", "-o", f"{output.get('name')}", '-'], stdout=PIPE)
viewer = Popen(['swayimg', '-f', '-o', f'{output.get("name")}','-'], stdin=image.stdout)
image_viewers.append(viewer)
region = run('slurp', check=True, capture_output=True)
run(["grim", '-g', '-', file_name], check=True, input=region.stdout)
elif sys.argv[1] == '--window': elif sys.argv[1] == '--window':
tree = run(['swaymsg', '-t', 'get_tree'], check=True, capture_output=True) tree = run(['swaymsg', '-t', 'get_tree'], check=True, capture_output=True)

47
.config/dulcepan.cfg Normal file
View File

@ -0,0 +1,47 @@
# An example configuration.
# RRGGBB or RRGGBBAA
unselected-color = ffffff40
selected-color = 00000000
#border-color = ffffff
border-color = 000000
#border-secondary-color = 000000
border-secondary-color = ffffff
# 0 to disable borders
border-size = 2
# Border gradient type:
# - none: only the primary border color is used
# - linear: uses a linear gradient relative to the selection
# - loop: uses a repeated linear gradient
border-gradient = none
# For "linear" gradient mode
# Counterclockwise, in degrees
gradient-angle = 45
# For "loop" gradient mode
# The distance between gradient stops
loop-step = 100
# For "linear" and "loop" gradient modes
# In milliseconds, 0 to disable animation
# With "linear" mode: the time it takes for the pattern to make one full turn
# With "loop" mode: the time it takes for the pattern to move by double the loop step
animation-duration = 1000
# If true, dulcepan will save immediately when interactive selection is stopped
# or when a whole output is selected with a mouse button.
quick-select = true
# If true, dulcepan will remember selection between runs.
# The state is stored at $XDG_CACHE_HOME/dulcepan.
persistence = false
# PNG (zlib) compression level, 0-9
png-compression = 6
# Key bindings
quit-key = Escape
save-key = Space

View File

@ -20,8 +20,7 @@ exec systemd-run --user --unit=slack-flatpak /usr/bin/flatpak run com.slack.Slac
for_window [app_id="telegramdesktop"] move to workspace $chat_workspace for_window [app_id="telegramdesktop"] move to workspace $chat_workspace
for_window [app_id="org.telegram.desktop"] move to workspace $chat_workspace for_window [app_id="org.telegram.desktop"] move to workspace $chat_workspace
exec systemd-run --user --unit=telegram /usr/bin/env XDG_CURRENT_DESKTOP=GNOME telegram-desktop exec systemd-run --user --unit=telegram /usr/bin/env XDG_CURRENT_DESKTOP=GNOME Telegram
for_window [class="drata-agent"] move absolute position 2160 px 0 px # for earlyoom notifications
for_window [app_id="drata-agent"] move absolute position 2160 px 0 px exec systemd-run --user --unit=systembus-notify /usr/bin/systembus-notify
exec systemd-run --user --unit=drata-agent /usr/bin/drata-agent

View File

@ -1,4 +1,5 @@
# Work computer # Work computer
exec /usr/bin/swaynag-battery --threshold 5
set $left_disp "Dell Inc. DELL U2724DE C9YPBP3" set $left_disp "Dell Inc. DELL U2724DE C9YPBP3"
set $right_disp "Dell Inc. DELL U2724D J3XFCP3" set $right_disp "Dell Inc. DELL U2724D J3XFCP3"
@ -15,7 +16,7 @@ output $left_disp mode 2560x1440@120.000Hz
output $right_disp pos 2560 0 output $right_disp pos 2560 0
output $right_disp mode 2560x1440@120.000Hz output $right_disp mode 2560x1440@120.000Hz
set $laptop "LG Display 0x06ED Unknown" set $laptop eDP-1
bindswitch lid:on output $laptop disable bindswitch lid:on output $laptop disable
bindswitch lid:off output $laptop enable bindswitch lid:off output $laptop enable

View File

@ -5,5 +5,10 @@ exec /usr/bin/swaynag-battery --threshold 5
#set $right_disp "Unknown 0x0791 0x00000000" #set $right_disp "Unknown 0x0791 0x00000000"
set $chat_workspace 10 set $chat_workspace 10
set $laptop eDP-1
bindswitch lid:on output $laptop disable
bindswitch lid:off output $laptop enable
output $left_disp pos 0 0 output $left_disp pos 0 0
output $right_disp pos 370 1440 output $right_disp pos 370 1440

4
.zshrc
View File

@ -319,6 +319,8 @@ function ssh {
# i don't like that systemd by default uses a pager # i don't like that systemd by default uses a pager
export SYSTEMD_PAGER='' export SYSTEMD_PAGER=''
# Minio CLI is also stupid
export MC_DISABLE_PAGER=1
# set man max width # set man max width
export MANWIDTH=80 export MANWIDTH=80
@ -333,7 +335,7 @@ fi
# https://neovim.io/doc/user/various.html#less # https://neovim.io/doc/user/various.html#less
function vless { function vless {
/usr/share/nvim/runtime/macros/less.sh $@ /usr/share/nvim/runtime/scripts/less.sh $@
} }
# If running under windows with pageagent then use it # If running under windows with pageagent then use it