From 1bc17d56f57e9605ff23b90552884c5be49c4337 Mon Sep 17 00:00:00 2001 From: caandt Date: Wed, 23 Oct 2024 22:09:08 -0500 Subject: [PATCH] add edit script --- user/bin/edit | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 user/bin/edit diff --git a/user/bin/edit b/user/bin/edit new file mode 100755 index 0000000..e3e2ace --- /dev/null +++ b/user/bin/edit @@ -0,0 +1,45 @@ +#!/bin/sh +if [ "$#" -ne 1 ]; then + echo "usage: $0 " + exit 1 +fi + +first_link () { + if [ "${1%/*}" != "$1" ]; then + local x="$(first_link "${1%/*}")" + fi + if [ -z "$x" ] && [ -L "$1" ]; then + echo "$1" + else + echo "$x" + fi +} + +NIX="$HOME/.local/nixos/user" +FIRST="$(first_link "$(realpath -s "$1")")" +if ! [ -z "$FIRST" ]; then + LINKED="$(realpath "$FIRST")" + if [ "${LINKED#/nix/store/}" != "$LINKED" ]; then + CONFIG="${FIRST#~/.config/}" + if [ "$CONFIG" != "$FIRST" ] && [ -e "$NIX/config/$CONFIG" ]; then + rm "$FIRST" + ln -s "$NIX/config/$CONFIG" "$FIRST" + $EDITOR "$1" + exit + fi + BIN="${FIRST#~/.local/bin}" + if [ "$BIN" != "$FIRST" ] && [ -e "$NIX/bin/$BIN" ]; then + rm "$FIRST" + ln -s "$NIX/bin/$BIN" "$FIRST" + $EDITOR "$1" + exit + fi + echo "not symlinkable" + exit 1 + fi +fi +if ! [ -e "$1" ]; then + DIR="${1%/*}" + [ "$DIR" != "$1" ] && mkdir -p "$DIR" +fi +$EDITOR "$1"