diff options
Diffstat (limited to 'users/wpcarro/configs/default.nix')
-rw-r--r-- | users/wpcarro/configs/default.nix | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/users/wpcarro/configs/default.nix b/users/wpcarro/configs/default.nix new file mode 100644 index 000000000000..681f976052c7 --- /dev/null +++ b/users/wpcarro/configs/default.nix @@ -0,0 +1,73 @@ +{ pkgs, ... }: + +let + inherit (pkgs) writeShellScript; + inherit (pkgs.lib.strings) makeBinPath; +in +{ + install = writeShellScript "install-configs" '' + cd "$WPCARRO/configs" && ${pkgs.stow}/bin/stow --target="$HOME" . + ''; + + uninstall = writeShellScript "uninstall-configs" '' + cd "$WPCARRO/configs" && ${pkgs.stow}/bin/stow --delete --target="$HOME" . + ''; + + # Run this script to import all of the information exported by `export.sh`. + # Usage: import-gpg path/to/export.zip + import-gpg = writeShellScript "import-gpg" '' + set -euo pipefail + + if [ -z "''${1+x}" ]; then + echo "You must specify the path to export.zip. Exiting..." + exit 1 + fi + + PATH="${makeBinPath (with pkgs; [ busybox gnupg ])}" + destination="$(mktemp -d)" + + function cleanup() { + rm -rf "$destination" + } + trap cleanup EXIT + + unzip "$1" -d "$destination" >/dev/null + + gpg --import "$destination/public.asc" + gpg --import "$destination/secret.asc" + gpg --import-ownertrust "$destination/ownertrust.txt" + + # Run this at the end to output some verification + gpg --list-keys + gpg --list-secret-keys + ''; + + # Run this script to export all the information required to transport your GPG + # information to a zip file. + # Usage: export-gpg + export-gpg = writeShellScript "export-gpg" '' + set -euo pipefail + + PATH="${makeBinPath (with pkgs; [ busybox gnupg zip ])}" + output="$(pwd)/export.zip" + destination="$(mktemp -d)" + + function cleanup() { + rm -rf "$destination" + } + trap cleanup EXIT + + gpg --armor --export >"$destination/public.asc" + gpg --armor --export-secret-keys >"$destination/secret.asc" + gpg --armor --export-ownertrust >"$destination/ownertrust.txt" + + # Strangely enough this appears to be the only way to create a zip of a + # directory that doesn't contain the (noisy) full paths of each item from + # the source filesystem. (i.e. -j doesn't cooperate with -r). + pushd "$destination" + zip -r "$output" ./* + popd + + echo "$(realpath $output)" + ''; +} |