Last active
October 18, 2019 07:20
-
-
Save naufraghi/d59c1a2fc89173dc82a539c352af0a8d to your computer and use it in GitHub Desktop.
Home directory justfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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