Skip to content

Instantly share code, notes, and snippets.

@naufraghi
Last active October 18, 2019 07:20
Show Gist options
  • Save naufraghi/d59c1a2fc89173dc82a539c352af0a8d to your computer and use it in GitHub Desktop.
Save naufraghi/d59c1a2fc89173dc82a539c352af0a8d to your computer and use it in GitHub Desktop.
Home directory justfile
list:
@just --list
# Optimize PDF file
pdfoptimize SOURCE:
cp "{{SOURCE}}" "{{SOURCE}}.bak"
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="{{SOURCE}}" "{{SOURCE}}.bak"
ls -lah "{{SOURCE}}" "{{SOURCE}}.bak"
# Move to PROJECT dev folder (and environment)
dev PROJECT BRANCH='':
(cd git/{{PROJECT}}{{BRANCH}}; just dev)
get-six:
curl https://raw.githubusercontent.com/benjaminp/six/master/six.py > six.py
git-sync BRANCH="origin/master" EXTRA="":
cd {{invocation_directory()}} && git fetch --all && git rebase -i {{BRANCH}} {{EXTRA}}
nocow-rust:
chattr +C +d ~/.rustup
chattr +C +d ~/.cargo
fd Cargo.toml ~/Documents/src/ --exec rm -rf {//}/target
fd Cargo.toml ~/Documents/src/ --exec mkdir {//}/target
fd Cargo.toml ~/Documents/src/ --exec chattr +C +d {//}/target
nocow-home:
chattr +C +d ~/.virtualenvs/ ~/.cache/ ~/.gvm ~/.android/ ~/.gradle/ ~/.thunderbird/ ~/.wine ~/.wine-win32/ ~/.stack/ ~/.npm ~/.vscode
btrfs-snapshot:
#!/bin/bash
set -o errexit
set -o nounset
set -o verbose
NOW=$(date +%Y-%m-%d-%Hh%M)
[ -e /.snapshots/root-$NOW ] || sudo btrfs subvolume snapshot -r / /.snapshots/root-$NOW
sudo ln -v -s -r -f -T /.snapshots/root-$NOW /.snapshots/current
[ -e /home/.snapshots/home-$NOW ] || sudo btrfs subvolume snapshot -r /home/ /home/.snapshots/home-$NOW
sudo ln -v -s -r -f -T /home/.snapshots/home-$NOW /home/.snapshots/current
DEV="sdb2"
VG="usb3-vg"
LV="root"
TARGET="/mnt"
CRYPTDEV="samcrypt"
luks-mount:
#!/bin/bash
set -o errexit
set -o nounset
set -o verbose
sudo cryptsetup luksOpen /dev/{{DEV}} samcrypt
sudo vgchange -ay
sudo mount /dev/{{VG}}/{{LV}} {{TARGET}}
luks-unmount:
#!/bin/bash
set -o errexit
set -o nounset
set -o verbose
sudo umount {{TARGET}}
sudo lvchange -an /dev/{{VG}}/{{LV}}
sudo vgchange -an {{VG}}
sudo dmsetup remove {{CRYPTDEV}}
apt-bootstrap:
sudo apt update
sudo apt install curl etckeeper firmware-iwlwifi \
firmware-misc-nonfree firmware-realtek flatpak git git-gui \
git-lfs grep history htop intel-microcode iotop ipython \
ipython-qtconsole mc primus python3-pip python3-pyqt5 \
python3-setuptools python-pyqt5 rsync rustup terminator tmux \
ttf-ubuntu-font-family vim vim-gtk3 wget xclip xterm
btrfs-send SOURCE="/":
#!/bin/env python3
import subprocess
from pathlib import Path
from collections import namedtuple
Send = namedtuple("Send", "source target prefix")
root = Send(Path("{{SOURCE}}") / ".snapshots",
Path("{{TARGET}}") / "@/.snapshots",
"root-")
home = Send(Path("{{SOURCE}}") / "home/.snapshots",
Path("{{TARGET}}") / "@home/.snapshots",
"home-")
def run(*cmd):
return subprocess.run(*cmd, shell=True, check=True)
for send in (root, home):
parent_name = max(send.target.glob(send.prefix + "*")).name
parent = send.source / parent_name
current_name = (send.source / "current").resolve(strict=True).name
source = send.source / current_name
if parent_name == current_name:
print(f"Nothing to do, {parent_name} is already in sync")
else:
# Create a temporary target dir for sending
target = send.target / ".receive"
target.mkdir(exist_ok=True)
print(f"Sending {source} -> {target} using {parent} as parent...")
btrfs_send_receive = f"btrfs send -p {parent} {source} | pv | btrfs receive {target}"
print(f"$ {btrfs_send_receive}")
run(f"btrfs send -p {parent} {source} | pv | btrfs receive {target}")
run(f"btrfs subvolume snapshot -r {target / current_name} {send.target / current_name}")
run(f"btrfs subvolume delete {target / current_name}")
develer-tunnel:
while true; do ssh -R 20022:localhost:22 develer; sleep 1; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment