Kieran's opinionated (and probably slightly dumb) nix config

feat: add now shortcut

dunkirk.sh 4a040726 005bd2e4

verified
Changed files
+153
home-manager
app
moonlark
secrets
+122
home-manager/app/shell.nix
···
fi
}
+
# Post AtProto status updates
+
now() {
+
local message=""
+
local prompt_message=true
+
local account1_name=""
+
local account2_name=""
+
local account1_jwt=""
+
local account2_jwt=""
+
+
# Load account information from agenix secrets
+
if [[ -f "/run/agenix/bluesky" ]]; then
+
source "/run/agenix/bluesky"
+
else
+
echo "Error: Bluesky credentials file not found at /run/agenix/bluesky"
+
return 1
+
fi
+
+
# Parse arguments
+
while [[ $# -gt 0 ]]; do
+
case "$1" in
+
-m|--message)
+
message="$2"
+
prompt_message=false
+
shift 2
+
;;
+
*)
+
echo "Usage: now [-m|--message \"your message\"]"
+
return 1
+
;;
+
esac
+
done
+
+
# Prompt for message if none provided
+
if [[ "$prompt_message" = true ]]; then
+
echo -n "$ACCOUNT1 is: "
+
read message
+
+
if [[ -z "$message" ]]; then
+
echo "No message provided. Aborting."
+
return 1
+
fi
+
fi
+
+
# Generate JWT for ACCOUNT1
+
local account1_response=$(curl -s -X POST \
+
-H "Content-Type: application/json" \
+
-d '{
+
"identifier": "'$ACCOUNT1'",
+
"password": "'$ACCOUNT1_PASSWORD'"
+
}' \
+
"https://bsky.social/xrpc/com.atproto.server.createSession")
+
+
account1_jwt=$(echo "$account1_response" | jq -r '.accessJwt')
+
+
if [[ -z "$account1_jwt" || "$account1_jwt" == "null" ]]; then
+
echo "Failed to authenticate account $ACCOUNT1"
+
echo "Response: $account1_response"
+
return 1
+
fi
+
+
# Generate JWT for ACCOUNT2
+
local account2_response=$(curl -s -X POST \
+
-H "Content-Type: application/json" \
+
-d '{
+
"identifier": "'$ACCOUNT2'",
+
"password": "'$ACCOUNT2_PASSWORD'"
+
}' \
+
"https://bsky.social/xrpc/com.atproto.server.createSession")
+
+
account2_jwt=$(echo "$account2_response" | jq -r '.accessJwt')
+
+
if [[ -z "$account2_jwt" || "$account2_jwt" == "null" ]]; then
+
echo "Failed to authenticate account $ACCOUNT2"
+
echo "Response: $account2_response"
+
return 1
+
fi
+
+
# Post to ACCOUNT1 as a.status.updates
+
local account1_post_response=$(curl -s -X POST \
+
-H "Content-Type: application/json" \
+
-H "Authorization: Bearer $account1_jwt" \
+
-d '{
+
"collection": "a.status.update",
+
"repo": "'$ACCOUNT1'",
+
"record": {
+
"$type": "a.status.update",
+
"text": "'"$message"'",
+
"createdAt": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'"
+
}
+
}' \
+
"https://bsky.social/xrpc/com.atproto.repo.createRecord")
+
+
if [[ $(echo "$account1_post_response" | jq -r 'has("error")') == "true" ]]; then
+
echo "Error posting to $ACCOUNT1:"
+
echo "$account1_post_response" | jq
+
return 1
+
fi
+
+
# Post to ACCOUNT2 as normal post
+
local account2_post_response=$(curl -s -X POST \
+
-H "Content-Type: application/json" \
+
-H "Authorization: Bearer $account2_jwt" \
+
-d '{
+
"collection": "app.bsky.feed.post",
+
"repo": "'$ACCOUNT2'",
+
"record": {
+
"$type": "app.bsky.feed.post",
+
"text": "'"$message"'",
+
"createdAt": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'"
+
}
+
}' \
+
"https://bsky.social/xrpc/com.atproto.repo.createRecord")
+
+
if [[ $(echo "$account2_post_response" | jq -r 'has("error")') == "true" ]]; then
+
echo "Error posting to $ACCOUNT2:"
+
echo "$account2_post_response" | jq
+
return 1
+
fi
+
+
echo "done"
+
}
+
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' list-colors "''${(s.:.)LS_COLORS}"
zstyle ':completion:*' menu no
+4
moonlark/configuration.nix
···
path = "/home/kierank/.wakatime.cfg";
owner = "kierank";
};
+
bluesky = {
+
file = ../secrets/bluesky.age;
+
owner = "kierank";
+
};
};
environment.sessionVariables = {
+23
secrets/bluesky.age
···
+
age-encryption.org/v1
+
-> ssh-rsa DqcG0Q
+
Pge+V9a56y8YOA2Fz7MaiCSqcX2TeRlz62BoLTdhilyPc1GduRy7cuVDOLEVxa3x
+
53qj2JeB4xRpTM8bVzUR4AavOxFLcDaGGe+FbbwvpCIMMECY80KZ9QfDs3X41UIJ
+
bjoTn0yPhu+hunNYAAfmuVEZQ6OhG8cfGJKIzGKf2TIksbIlfywGhOruTlugBl8n
+
PwK7rS0p2cGRtr4bECchPn5kFqIDERpQEcCZmuh6sGmp54Kmo7aZu3cpzHyl/oM/
+
RtChCUTkUu4tGTjc52LdSSWKC8beVN0MLIn0X+Q3yIp9tBZ5ivZR6CX4OGaAEOqq
+
BuiMeZt4hh61NoAL5fsF5nEbAogE7WkedJw7qEyUy7YxGAEk+Djo8+CbniVzVCOv
+
SmLCNhzbeSUxjp8OR6TWKXNpUG4TQwihzV8ube4eg848U4UOBTGGFvI7OmfoPeLF
+
QNATwMOQIAP43UqP01Z13gwKNHLN6x3SIG0lD0m4h9i0icfjv5xi9PLL+bx36OGt
+
+
-> ssh-rsa DqcG0Q
+
H7u1sn3dQfYRkkYWx2MI+1jyAvbWRN7hzonZwpQaojZiyn2pV7CMTtW3E33obKAU
+
SGbx5cn8/DWhNRg1/1Mw/d5mTDmesnu/rknOhYpTa1du6jWMymLL40MPD0hDgvNw
+
LmKI3cElDqJ+ITHhg3iKwH0OuAeT8iN3c5k9nmaHj7C7r8AClgQUcnt+XloA9YFU
+
thulreu9yxc3owKOobzcu8ZdyFDwX4Qyl+lmfzZIFZC1cW8gjPa99cPYua3Ai++A
+
myS3sB7xpwdVNK89m1O/qbTQyl9PdqHrkBaknNvpmJ+DPCQTKk7NrtYuioFCyBod
+
5+GxmP2qEhwkhWh5hRtI0qjvPxV7YzqUBMbBkafbjBDlyUOmCf8oVrR8sv45pdQw
+
7FpyCoquVR5IiEpFDjr8dRRYwbzSxT0BW6f7ZAmIwquPOrhet2ObKRkveyye01QO
+
PgNw5P4Xg6f8aKFANI3k6yPrY/2JyoHoqjLVBVov+08jKf5uqRNtLMhjnQ1QHPND
+
+
--- T/3m+ZxB3rLlgVKpPtvZTO2yrdNWs6vgFlKYmz4IIaI
+
0�Q��\7��s�Hv�*��܌����::��P8�7�r���e�A��&L`��?��x���V2���Dax��mH���.H䂠5LF]g��(Y�8 ��_SȊ��oW햸G�w��j ��v�k|����[�EǻM⏙@��й� Z�j�wJ�
+4
secrets/secrets.nix
···
kierank
moonlark
];
+
"bluesky.age".publicKeys = [
+
kierank
+
moonlark
+
];
}