codex: keep skills under dotfiles symlink
This commit is contained in:
1
dotfiles/codex/.gitignore
vendored
1
dotfiles/codex/.gitignore
vendored
@@ -2,3 +2,4 @@
|
||||
!.gitignore
|
||||
!AGENTS.md
|
||||
!config.toml
|
||||
!skills
|
||||
|
||||
1
dotfiles/codex/skills
Symbolic link
1
dotfiles/codex/skills
Symbolic link
@@ -0,0 +1 @@
|
||||
../agents/skills
|
||||
@@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
tracked_skills_dir="${1:?usage: setup_codex_skills TRACKED_SKILLS_DIR [RUNTIME_SKILLS_DIR] [CODEX_SKILLS_LINK]}"
|
||||
runtime_skills_dir="${2:-${XDG_DATA_HOME:-$HOME/.local/share}/codex/skills}"
|
||||
codex_skills_link="${3:-$HOME/.codex/skills}"
|
||||
|
||||
mkdir -p "$runtime_skills_dir"
|
||||
mkdir -p "$(dirname "$codex_skills_link")"
|
||||
|
||||
# Preserve generated Codex skill bundles while moving them out of the git worktree.
|
||||
for generated_name in .system codex-primary-runtime; do
|
||||
generated_src="$tracked_skills_dir/$generated_name"
|
||||
generated_dest="$runtime_skills_dir/$generated_name"
|
||||
if [[ -e "$generated_src" && ! -e "$generated_dest" ]]; then
|
||||
mv "$generated_src" "$generated_dest"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -L "$codex_skills_link" ]]; then
|
||||
current_target="$(readlink "$codex_skills_link")"
|
||||
if [[ "$current_target" != "$runtime_skills_dir" ]]; then
|
||||
rm -f "$codex_skills_link"
|
||||
fi
|
||||
elif [[ -e "$codex_skills_link" ]]; then
|
||||
echo "Skipping $codex_skills_link because it exists and is not a symlink" >&2
|
||||
codex_skills_link=""
|
||||
fi
|
||||
|
||||
if [[ -n "$codex_skills_link" && ! -e "$codex_skills_link" ]]; then
|
||||
ln -s "$runtime_skills_dir" "$codex_skills_link"
|
||||
fi
|
||||
|
||||
for skill_src in "$tracked_skills_dir"/*; do
|
||||
[[ -e "$skill_src" || -L "$skill_src" ]] || continue
|
||||
|
||||
skill_name="$(basename "$skill_src")"
|
||||
case "$skill_name" in
|
||||
.system|codex-primary-runtime)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
skill_dest="$runtime_skills_dir/$skill_name"
|
||||
if [[ -L "$skill_dest" ]]; then
|
||||
current_target="$(readlink "$skill_dest")"
|
||||
if [[ "$current_target" == "$skill_src" ]]; then
|
||||
continue
|
||||
fi
|
||||
rm -f "$skill_dest"
|
||||
elif [[ -e "$skill_dest" ]]; then
|
||||
echo "Skipping skill $skill_name because $skill_dest already exists and is not a symlink" >&2
|
||||
continue
|
||||
fi
|
||||
|
||||
ln -s "$skill_src" "$skill_dest"
|
||||
done
|
||||
@@ -109,10 +109,6 @@ in {
|
||||
fi
|
||||
'';
|
||||
|
||||
home.activation.linkCodexSkills = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||
${pkgs.bash}/bin/bash "${libDir}/bin/setup_codex_skills" "${dotfilesDir}/agents/skills"
|
||||
'';
|
||||
|
||||
home.sessionPath = [
|
||||
"$HOME/.cargo/bin"
|
||||
"${libDir}/bin"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
# Replicate the useful part of rcm/rcup:
|
||||
# - dotfiles live in ~/dotfiles/dotfiles (no leading dots in the repo)
|
||||
@@ -71,7 +71,4 @@ in
|
||||
fi
|
||||
'';
|
||||
|
||||
home.activation.linkCodexSkills = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||
${pkgs.bash}/bin/bash "${worktreeDotfiles}/lib/bin/setup_codex_skills" "${worktreeDotfiles}/agents/skills"
|
||||
'';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user