Compare commits
	
		
			9 Commits
		
	
	
		
			c4d9764dc7
			...
			61051d7a3e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					61051d7a3e | ||
| 
						 | 
					1072a8a207 | ||
| 
						 | 
					00eb99291a | ||
| 
						 | 
					39c92a7479 | ||
| 
						 | 
					3c0afdaf52 | ||
| 
						 | 
					8266185bbd | ||
| 
						 | 
					c6780025f6 | ||
| 
						 | 
					2f86d2c0a5 | ||
| 
						 | 
					784a67a883 | 
@@ -3,8 +3,6 @@
 | 
				
			|||||||
#+language: en
 | 
					#+language: en
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* PLANNED
 | 
					* PLANNED
 | 
				
			||||||
** TODO [#A] Modify shell scripts in ~${PROJECT_ROOT}/zfs~ such that assumptions regarding avaialble datasets are minimized
 | 
					 | 
				
			||||||
    - This could be done by softcoding dataset and pool names or creating functions that specify through argument
 | 
					 | 
				
			||||||
** TODO [#A] Create a ~${PROJECT_ROOT}/skel~ directory
 | 
					** TODO [#A] Create a ~${PROJECT_ROOT}/skel~ directory
 | 
				
			||||||
    - Should contain a shell script setting new permanent but reversible XDG variables, copying the directory structure to existing user home directories, and setting it as default for newly created user home directories
 | 
					    - Should contain a shell script setting new permanent but reversible XDG variables, copying the directory structure to existing user home directories, and setting it as default for newly created user home directories
 | 
				
			||||||
    - Should contain subdirectories that match the paths relative to user home directories for XDG variables
 | 
					    - Should contain subdirectories that match the paths relative to user home directories for XDG variables
 | 
				
			||||||
@@ -14,4 +12,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
* IN PROGRESS
 | 
					* IN PROGRESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* FINISHED
 | 
					* FINISHED
 | 
				
			||||||
 | 
					** DONE [#A] Modify shell scripts in ~${PROJECT_ROOT}/zfs~ such that assumptions regarding avaialble datasets are minimized
 | 
				
			||||||
 | 
					    - This could be done by softcoding dataset and pool names or creating functions that specify through argument
 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
set -euo pipefail
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
zfs list -t snapshot | grep 'apt-' | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {}
 | 
					 | 
				
			||||||
@@ -1,52 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
set -euo pipefail
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# @TODO: Implement more soft-coding and interactivity to this script
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sudo zpool create \
 | 
					 | 
				
			||||||
    -o ashift=12 \
 | 
					 | 
				
			||||||
	-o autotrim=on \
 | 
					 | 
				
			||||||
	-o compatibility=openzfs-2.1-linux \
 | 
					 | 
				
			||||||
	-O encryption=on \
 | 
					 | 
				
			||||||
	-O keylocation=file:///etc/zfs/keys/zroot.key \
 | 
					 | 
				
			||||||
	-O keyformat=passphrase \
 | 
					 | 
				
			||||||
	-O acltype=posixacl \
 | 
					 | 
				
			||||||
	-O xattr=sa \
 | 
					 | 
				
			||||||
	-O dnodesize=auto \
 | 
					 | 
				
			||||||
	-O compression=zstd-3 \
 | 
					 | 
				
			||||||
	-O normalization=formD \
 | 
					 | 
				
			||||||
	-O relatime=on \
 | 
					 | 
				
			||||||
	-O canmount=off \
 | 
					 | 
				
			||||||
	-O mountpoint=none \
 | 
					 | 
				
			||||||
	"$2" \
 | 
					 | 
				
			||||||
	/dev/disk/by-id/"${1}"-part1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATASET=("${HOME}/Documents/.calibre" "${2}/LITERATURE")
 | 
					 | 
				
			||||||
mkdir -p "${DATASET[0]}"
 | 
					 | 
				
			||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATASET=("${HOME}/Videos" "${2}/FILM")
 | 
					 | 
				
			||||||
mkdir -p "${DATASET[0]}"
 | 
					 | 
				
			||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATASET=("${HOME}/.var/app/com.valvesoftware.Steam" "${2}/STEAMGAMES")
 | 
					 | 
				
			||||||
mkdir -p "${DATASET[0]}"
 | 
					 | 
				
			||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${2}/RARCHGAMES")
 | 
					 | 
				
			||||||
mkdir -p "${DATASET[0]}"
 | 
					 | 
				
			||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATASET=("${HOME}/Games" "${2}/GAMES")
 | 
					 | 
				
			||||||
mkdir -p "${DATASET[0]}"
 | 
					 | 
				
			||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
					 | 
				
			||||||
ln -s "${HOME}/.var/app/com.valvesoftware.Steam" "${DATASET[0]}/Steam"
 | 
					 | 
				
			||||||
ln -s "${HOME}/.var/app/org.libretro.RetroArch" "${DATASET[0]}/libRetro"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${2}/RARCHGAMES")
 | 
					 | 
				
			||||||
mkdir -p "${DATASET[0]}"
 | 
					 | 
				
			||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATASET=("${HOME}/.XXX" "${2}/XXX")
 | 
					 | 
				
			||||||
mkdir -p "${DATASET[0]}"
 | 
					 | 
				
			||||||
sudo zfs create -o keylocation=prompt -o keyformat=passphrase -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
					 | 
				
			||||||
							
								
								
									
										25
									
								
								zfs/zfs-clean.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								zfs/zfs-clean.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clear-apt-snaps () {
 | 
				
			||||||
 | 
					    zfs list -t snapshot | grep 'apt-' | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -z "$1" ]; then
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					if ! [ -z "$1" ] && [ "$1" == "upgrades" ]; then
 | 
				
			||||||
 | 
					    while getopts "r:" opt; do
 | 
				
			||||||
 | 
					        case "$opt" in
 | 
				
			||||||
 | 
					            r) REGEX=${OPTARG};;
 | 
				
			||||||
 | 
					            *) exit 1;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [ -z "$REGEX" ]; then
 | 
				
			||||||
 | 
					        clear-apt-snaps
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        zfs list -t snapshot | grep "${REGEX}" | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {}
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										98
									
								
								zfs/zfs-media-drive.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								zfs/zfs-media-drive.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# @TODO: Implement more soft-coding and interactivity to this script
 | 
				
			||||||
 | 
					ZFS_POOL_NAME="media"
 | 
				
			||||||
 | 
					ZFS_COMPAT="openzfs-2.1-linux"
 | 
				
			||||||
 | 
					ZFS_KEY_LOC="file:///etc/zfs/keys/zroot.key"
 | 
				
			||||||
 | 
					ZFS_KEY_FORMAT="passphrase"
 | 
				
			||||||
 | 
					ZFS_COMPRESSION="zstd-3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create_zpool () {
 | 
				
			||||||
 | 
						sudo zpool create \
 | 
				
			||||||
 | 
							-o ashift=12 \
 | 
				
			||||||
 | 
							-o autotrim=on \
 | 
				
			||||||
 | 
							-o compatibility="$3" \
 | 
				
			||||||
 | 
							-O encryption=on \
 | 
				
			||||||
 | 
							-O keylocation="$4" \
 | 
				
			||||||
 | 
							-O keyformat="$5" \
 | 
				
			||||||
 | 
							-O acltype=posixacl \
 | 
				
			||||||
 | 
							-O xattr=sa \
 | 
				
			||||||
 | 
							-O dnodesize=auto \
 | 
				
			||||||
 | 
							-O compression="$6" \
 | 
				
			||||||
 | 
							-O normalization=formD \
 | 
				
			||||||
 | 
							-O relatime=on \
 | 
				
			||||||
 | 
							-O canmount=off \
 | 
				
			||||||
 | 
							-O mountpoint=none \
 | 
				
			||||||
 | 
							"$2" \
 | 
				
			||||||
 | 
							/dev/disk/by-id/"${1}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create_datasets () {
 | 
				
			||||||
 | 
						DATASET=("${HOME}/Documents/.calibre" "${1}/LITERATURE")
 | 
				
			||||||
 | 
						mkdir -p "${DATASET[0]}"
 | 
				
			||||||
 | 
						sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DATASET=("${HOME}/Videos" "${1}/FILM")
 | 
				
			||||||
 | 
						mkdir -p "${DATASET[0]}"
 | 
				
			||||||
 | 
						sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DATASET=("${HOME}/.var/app/com.valvesoftware.Steam" "${1}/STEAMGAMES")
 | 
				
			||||||
 | 
						mkdir -p "${DATASET[0]}"
 | 
				
			||||||
 | 
						sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${1}/RARCHGAMES")
 | 
				
			||||||
 | 
						mkdir -p "${DATASET[0]}"
 | 
				
			||||||
 | 
						sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DATASET=("${HOME}/Games" "${1}/GAMES")
 | 
				
			||||||
 | 
						mkdir -p "${DATASET[0]}"
 | 
				
			||||||
 | 
						sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
				
			||||||
 | 
						ln -s "${HOME}/.var/app/com.valvesoftware.Steam" "${DATASET[0]}/Steam"
 | 
				
			||||||
 | 
						ln -s "${HOME}/.var/app/org.libretro.RetroArch" "${DATASET[0]}/libRetro"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${1}/RARCHGAMES")
 | 
				
			||||||
 | 
						mkdir -p "${DATASET[0]}"
 | 
				
			||||||
 | 
						sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DATASET=("${HOME}/.XXX" "${1}/XXX")
 | 
				
			||||||
 | 
						mkdir -p "${DATASET[0]}"
 | 
				
			||||||
 | 
						sudo zfs create -o keylocation=prompt -o keyformat=passphrase -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print_menu () {
 | 
				
			||||||
 | 
						echo "Placeholder content"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -z "$1" ]; then
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ! [ -z "$1" ] && [ "$1" == "init" ]; then
 | 
				
			||||||
 | 
						while getopts "d:p:k:f:c:v:" opt; do
 | 
				
			||||||
 | 
							case $opt in
 | 
				
			||||||
 | 
								k) ZFS_KEY_LOC="${OPTARG}";;
 | 
				
			||||||
 | 
								f) ZFS_KEY_FORMAT="${OPTARG}";;
 | 
				
			||||||
 | 
								c) ZFS_COMPRESSION="${OPTARG}";;
 | 
				
			||||||
 | 
								v) ZFS_COMPAT="${OPTARG}";;
 | 
				
			||||||
 | 
								p) ZFS_POOL_NAME="${OPTARG}";;
 | 
				
			||||||
 | 
								d) ZFS_TARGET_DRIVE="${OPTARG}";;
 | 
				
			||||||
 | 
								*) exit 1;
 | 
				
			||||||
 | 
							esac
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if [ -z "$ZFS_TARGET_DRIVE" ]; then
 | 
				
			||||||
 | 
							echo "It is necessary to argue a -d option."
 | 
				
			||||||
 | 
							exit 1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						create_zpool "$ZFS_TARGET_DRIVE" "$ZFS_POOL_NAME" "$ZFS_COMPAT" "$ZFS_KEY_LOC" "$ZFS_KEY_FORMAT" "$ZFS_COMPRESSION"
 | 
				
			||||||
 | 
						create_datasets "$ZFS_POOL_NAME"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						while getopts "h" flag; do
 | 
				
			||||||
 | 
							case "$flag" in
 | 
				
			||||||
 | 
								h) print_menu;;
 | 
				
			||||||
 | 
								*) exit 1;;
 | 
				
			||||||
 | 
							esac
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
		Reference in New Issue
	
	Block a user