| ... | ... | @@ -146,28 +146,6 @@ in |
| 146 | 146 | fi |
| 147 | 147 | } |
| 148 | 148 | |
| 149 | | function opencode() { |
| 150 | | local image="opencode-local" |
| 151 | | if ! docker image inspect "$image" &>/dev/null; then |
| 152 | | echo "opencode: image not found, building..." >&2 |
| 153 | | docker build -t "$image" "$HOME/config/files/opencode" || { echo "opencode: build failed" >&2; return 1; } |
| 154 | | fi |
| 155 | | docker run --rm -it \ |
| 156 | | -v "$(pwd):$(pwd)" \ |
| 157 | | -w "$(pwd)" \ |
| 158 | | -v "$HOME/.config/opencode:/home/agent/.config/opencode" \ |
| 159 | | -v "$HOME/.local/share/opencode:/home/agent/.local/share/opencode" \ |
| 160 | | -v "$HOME/.local/state/opencode:/home/agent/.local/state/opencode" \ |
| 161 | | -v "$HOME/.config/opencode:$HOME/.config/opencode" \ |
| 162 | | -v "$HOME/.local/share/opencode:$HOME/.local/share/opencode" \ |
| 163 | | -v "$HOME/.local/state/opencode:$HOME/.local/state/opencode" \ |
| 164 | | -v "$HOME/.cache/opencode:$HOME/.cache/opencode" \ |
| 165 | | --env-file <(env | grep '^OPENAI_\|^ANTHROPIC_\|^OPENCODE_\|^XDG_') \ |
| 166 | | --name "opencode-$(basename $(pwd))-$$" \ |
| 167 | | "$image" \ |
| 168 | | opencode "$@" |
| 169 | | } |
| 170 | | |
| 171 | 149 | function jj() { |
| 172 | 150 | if [[ "$*" = "git push"* ]] && [[ "$*" != *"--dry-run"* ]]; then |
| 173 | 151 | if command jj "$@" --dry-run; then |
| ... | ... | @@ -185,6 +163,7 @@ in |
| 185 | 163 | |
| 186 | 164 | git = { |
| 187 | 165 | # use a git-specific email |
| 166 | ignores = [ "AGENTS.md" ]; |
| 188 | 167 | settings.user.email = "git@paperclover.net"; |
| 189 | 168 | settings.gpg.ssh.allowedSignersFile = "${pkgs.writeText "allowed_signers" '' |
| 190 | 169 | git@paperclover.net ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAVa1aq1LEj/VXHJYlR5HJpK65lS/9jOL/dAB9ZS1chd |
| ... | ... | @@ -213,15 +192,19 @@ in |
| 213 | 192 | "working_copy remote_bookmarks" = colors."working_copy bookmark"; |
| 214 | 193 | |
| 215 | 194 | "author" = { |
| 216 | | fg = "white"; |
| 195 | fg = "bright black"; |
| 217 | 196 | bold = false; |
| 218 | 197 | italic = true; |
| 219 | 198 | }; |
| 220 | 199 | "working_copy author" = colors.author; |
| 200 | committer = { |
| 201 | fg = "bright black"; |
| 202 | bold = false; |
| 203 | }; |
| 221 | 204 | |
| 222 | 205 | desc = { |
| 223 | | bold = false; |
| 224 | | fg = "bright white"; |
| 206 | bold = true; |
| 207 | fg = "default"; |
| 225 | 208 | }; |
| 226 | 209 | description = colors.desc; |
| 227 | 210 | cc_wip = { |
| ... | ... | @@ -231,7 +214,7 @@ in |
| 231 | 214 | }; |
| 232 | 215 | cc_header = { |
| 233 | 216 | bold = true; |
| 234 | | fg = "bright white"; |
| 217 | fg = "default"; |
| 235 | 218 | }; |
| 236 | 219 | cc_feat = "green"; |
| 237 | 220 | cc_fix = "red"; |
| ... | ... | @@ -250,6 +233,10 @@ in |
| 250 | 233 | bold = true; |
| 251 | 234 | reverse = true; |
| 252 | 235 | }; |
| 236 | "change_id shortest rest" = { |
| 237 | fg = "bright black"; |
| 238 | bold = true; |
| 239 | }; |
| 253 | 240 | conflict_marker = { |
| 254 | 241 | fg = "bright red"; |
| 255 | 242 | bold = true; |
| ... | ... | @@ -257,6 +244,7 @@ in |
| 257 | 244 | }; |
| 258 | 245 | |
| 259 | 246 | timestamp = "bright black"; |
| 247 | "committer timestamp" = colors.committer; |
| 260 | 248 | commit_id = { |
| 261 | 249 | fg = "bright black"; |
| 262 | 250 | bold = false; |