Compare commits
1 Commits
bead/nixos
...
feat/stars
| Author | SHA1 | Date | |
|---|---|---|---|
| 08c7cc9e76 |
@@ -23,6 +23,7 @@
|
|||||||
kubectl.enable = true;
|
kubectl.enable = true;
|
||||||
tmux.enable = true;
|
tmux.enable = true;
|
||||||
plasma-manager.enable = true;
|
plasma-manager.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
targets.genericLinux.enable = true;
|
targets.genericLinux.enable = true;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
plasma-manager.enable = true;
|
plasma-manager.enable = true;
|
||||||
emacs.enable = true;
|
emacs.enable = true;
|
||||||
i3_sway.enable = true;
|
i3_sway.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
|
|
||||||
# Launcher wrappers for excluded/optional packages
|
# Launcher wrappers for excluded/optional packages
|
||||||
launchers = {
|
launchers = {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
plasma-manager.enable = true;
|
plasma-manager.enable = true;
|
||||||
emacs.enable = true;
|
emacs.enable = true;
|
||||||
i3_sway.enable = true;
|
i3_sway.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
# development.enable = false; # Not needed for live USB
|
# development.enable = false; # Not needed for live USB
|
||||||
# communication.enable = false; # Not needed for live USB
|
# communication.enable = false; # Not needed for live USB
|
||||||
# office.enable = false; # Not needed for live USB
|
# office.enable = false; # Not needed for live USB
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
plasma-manager.enable = true;
|
plasma-manager.enable = true;
|
||||||
emacs.enable = true;
|
emacs.enable = true;
|
||||||
i3_sway.enable = true;
|
i3_sway.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
# office.enable = false; # Not needed for media center
|
# office.enable = false; # Not needed for media center
|
||||||
# sync.enable = false; # Shared machine, no personal file sync
|
# sync.enable = false; # Shared machine, no personal file sync
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
{ pkgs, globalInputs, system, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Home Manager configuration for servers (minimal with development tools)
|
|
||||||
home.username = "johno";
|
|
||||||
home.homeDirectory = "/home/johno";
|
|
||||||
home.stateVersion = "24.05";
|
|
||||||
|
|
||||||
# Minimal roles for server with development capability
|
|
||||||
home.roles = {
|
|
||||||
base.enable = true;
|
|
||||||
development.enable = true;
|
|
||||||
tmux.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
targets.genericLinux.enable = true;
|
|
||||||
home.sessionVariables = {};
|
|
||||||
home.sessionPath = [];
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./roles
|
|
||||||
./roles/base-linux
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -19,5 +19,6 @@
|
|||||||
./sync
|
./sync
|
||||||
./tmux
|
./tmux
|
||||||
./emacs
|
./emacs
|
||||||
|
./starship
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,20 +85,11 @@ in
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Copy local skills from this repo
|
|
||||||
for file in ${./skills}/*.md; do
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
filename=$(basename "$file" .md)
|
|
||||||
dest="$HOME/.claude/commands/''${filename}.md"
|
|
||||||
cp "$file" "$dest"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
$DRY_RUN_CMD echo "Claude Code humanlayer commands and agents installed successfully${
|
$DRY_RUN_CMD echo "Claude Code humanlayer commands and agents installed successfully${
|
||||||
if cfg.allowArbitraryClaudeCodeModelSelection
|
if cfg.allowArbitraryClaudeCodeModelSelection
|
||||||
then " (model specifications preserved)"
|
then " (model specifications preserved)"
|
||||||
else " (model selection removed)"
|
else " (model selection removed)"
|
||||||
} + local skills"
|
}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Set up beads Claude Code integration (hooks for SessionStart/PreCompact)
|
# Set up beads Claude Code integration (hooks for SessionStart/PreCompact)
|
||||||
|
|||||||
@@ -1,198 +0,0 @@
|
|||||||
---
|
|
||||||
description: Orchestrate parallel bead processing with worktrees, PRs, and reviews
|
|
||||||
---
|
|
||||||
|
|
||||||
# Parallel Beads Workflow
|
|
||||||
|
|
||||||
This skill orchestrates parallel bead processing using subagents. Each bead gets its own worktree, implementation, PR, and review.
|
|
||||||
|
|
||||||
## Phase 1: Selection
|
|
||||||
|
|
||||||
1. **Get ready beads**: Run `bd ready` to list all beads with no blockers
|
|
||||||
2. **Present selection**: Use `AskUserQuestion` with `multiSelect: true` to let the user choose which beads to work on
|
|
||||||
- Include bead ID and title for each option
|
|
||||||
- Allow selection of multiple beads
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```
|
|
||||||
AskUserQuestion with:
|
|
||||||
- question: "Which beads do you want to work on in parallel?"
|
|
||||||
- multiSelect: true
|
|
||||||
- options from bd ready output
|
|
||||||
```
|
|
||||||
|
|
||||||
## Phase 2: Parallel Implementation
|
|
||||||
|
|
||||||
For each selected bead, launch a subagent using the Task tool. All subagents should be launched in parallel (single message with multiple Task tool calls).
|
|
||||||
|
|
||||||
### Subagent Instructions Template
|
|
||||||
|
|
||||||
Each implementation subagent should receive these instructions:
|
|
||||||
|
|
||||||
```
|
|
||||||
Work on bead [BEAD_ID]: [BEAD_TITLE]
|
|
||||||
|
|
||||||
1. **Create worktree**:
|
|
||||||
- Branch name: `bead/[BEAD_ID]`
|
|
||||||
- Worktree path: `~/wt/[REPO_NAME]/[BEAD_ID]`
|
|
||||||
- Command: `git worktree add -b bead/[BEAD_ID] ~/wt/[REPO_NAME]/[BEAD_ID]`
|
|
||||||
|
|
||||||
2. **Review the bead requirements**:
|
|
||||||
- Run `bd show [BEAD_ID]` to understand the acceptance criteria
|
|
||||||
- Note any external issue references (GitHub issues, Linear tickets, etc.)
|
|
||||||
|
|
||||||
3. **Implement the changes**:
|
|
||||||
- Work in the worktree directory
|
|
||||||
- Complete all acceptance criteria listed in the bead
|
|
||||||
- Run any relevant tests or checks
|
|
||||||
|
|
||||||
4. **Commit and push**:
|
|
||||||
- Stage all changes: `git add -A`
|
|
||||||
- Create a descriptive commit message
|
|
||||||
- Push the branch: `git push -u origin bead/[BEAD_ID]`
|
|
||||||
|
|
||||||
5. **Create a PR**:
|
|
||||||
- Detect hosting provider from origin URL: `git remote get-url origin`
|
|
||||||
- If URL contains `github.com`, use `gh`; otherwise use `tea` (Gitea/Forgejo)
|
|
||||||
- PR title: "[BEAD_ID] [BEAD_TITLE]"
|
|
||||||
- PR body must include:
|
|
||||||
- Reference to bead ID: "Implements bead: [BEAD_ID]"
|
|
||||||
- Any external issue references from the bead (e.g., "Closes #123")
|
|
||||||
- Summary of changes
|
|
||||||
- For GitHub (`gh`):
|
|
||||||
```bash
|
|
||||||
gh pr create --title "[BEAD_ID] [BEAD_TITLE]" --body "$(cat <<'EOF'
|
|
||||||
## Summary
|
|
||||||
[Brief description of changes]
|
|
||||||
|
|
||||||
## Bead Reference
|
|
||||||
Implements bead: [BEAD_ID]
|
|
||||||
|
|
||||||
## External Issues
|
|
||||||
[Any linked issues from the bead]
|
|
||||||
|
|
||||||
## Changes
|
|
||||||
- [List of changes made]
|
|
||||||
EOF
|
|
||||||
)"
|
|
||||||
```
|
|
||||||
- For Gitea (`tea`):
|
|
||||||
```bash
|
|
||||||
tea pr create --head bead/[BEAD_ID] --base main \
|
|
||||||
--title "[BEAD_ID] [BEAD_TITLE]" \
|
|
||||||
--description "## Summary
|
|
||||||
[Brief description of changes]
|
|
||||||
|
|
||||||
## Bead Reference
|
|
||||||
Implements bead: [BEAD_ID]
|
|
||||||
|
|
||||||
## External Issues
|
|
||||||
[Any linked issues from the bead]
|
|
||||||
|
|
||||||
## Changes
|
|
||||||
- [List of changes made]"
|
|
||||||
```
|
|
||||||
|
|
||||||
6. **Report results**:
|
|
||||||
- Return: PR URL, bead ID, success/failure status
|
|
||||||
- If blocked or unable to complete, explain what's blocking progress
|
|
||||||
```
|
|
||||||
|
|
||||||
### Launching Subagents
|
|
||||||
|
|
||||||
Use `subagent_type: "general-purpose"` for implementation subagents. Launch all selected beads' subagents in a single message for parallel execution:
|
|
||||||
|
|
||||||
```
|
|
||||||
<Task calls for each selected bead - all in one message>
|
|
||||||
```
|
|
||||||
|
|
||||||
Collect results from all subagents before proceeding.
|
|
||||||
|
|
||||||
## Phase 3: Parallel Review
|
|
||||||
|
|
||||||
After all implementation subagents complete, launch review subagents for each PR.
|
|
||||||
|
|
||||||
### Review Subagent Instructions Template
|
|
||||||
|
|
||||||
```
|
|
||||||
Review PR for bead [BEAD_ID]
|
|
||||||
|
|
||||||
1. **Detect hosting provider**: Run `git remote get-url origin` - if it contains `github.com` use `gh`, otherwise use `tea`
|
|
||||||
|
|
||||||
2. **Read the PR**:
|
|
||||||
- For GitHub: `gh pr view [PR_NUMBER] --json title,body,additions,deletions,files`
|
|
||||||
- For Gitea: `tea pr view [PR_NUMBER]`
|
|
||||||
- View the diff: `git diff main...bead/[BEAD_ID]`
|
|
||||||
|
|
||||||
3. **Review against acceptance criteria**:
|
|
||||||
- Run `bd show [BEAD_ID]` to get the acceptance criteria
|
|
||||||
- Verify each criterion is addressed
|
|
||||||
|
|
||||||
4. **Leave review comments**:
|
|
||||||
- For GitHub: `gh pr review [PR_NUMBER] --comment --body "[COMMENTS]"`
|
|
||||||
- For Gitea: `tea pr review [PR_NUMBER] --comment "[COMMENTS]"`
|
|
||||||
- Include:
|
|
||||||
- Acceptance criteria checklist (which are met, which might be missing)
|
|
||||||
- Code quality observations
|
|
||||||
- Suggestions for improvement
|
|
||||||
|
|
||||||
5. **Return summary**:
|
|
||||||
- Overall assessment (ready to merge / needs changes)
|
|
||||||
- Key findings
|
|
||||||
```
|
|
||||||
|
|
||||||
Launch all review subagents in parallel.
|
|
||||||
|
|
||||||
## Phase 4: Cleanup and Summary
|
|
||||||
|
|
||||||
After reviews complete:
|
|
||||||
|
|
||||||
1. **Clean up worktrees**:
|
|
||||||
```bash
|
|
||||||
git worktree remove ~/wt/[REPO_NAME]/[BEAD_ID] --force
|
|
||||||
```
|
|
||||||
Do this for each bead's worktree.
|
|
||||||
|
|
||||||
2. **Provide final summary**:
|
|
||||||
Present a table or list with:
|
|
||||||
- Bead ID
|
|
||||||
- PR URL
|
|
||||||
- Status (success / failed / blocked)
|
|
||||||
- Review summary
|
|
||||||
- Any failures or blockers encountered
|
|
||||||
|
|
||||||
Example output:
|
|
||||||
```
|
|
||||||
## Parallel Beads Summary
|
|
||||||
|
|
||||||
| Bead | PR | Status | Review |
|
|
||||||
|------|-----|--------|--------|
|
|
||||||
| beads-abc | #123 | Success | Approved |
|
|
||||||
| beads-xyz | #124 | Success | Needs changes |
|
|
||||||
| beads-123 | - | Failed | Blocked by missing dependency |
|
|
||||||
|
|
||||||
### Failures/Blockers
|
|
||||||
- beads-123: Could not complete because [reason]
|
|
||||||
|
|
||||||
### Next Steps
|
|
||||||
- Review PRs that need changes
|
|
||||||
- Address blockers for failed beads
|
|
||||||
```
|
|
||||||
|
|
||||||
## Error Handling
|
|
||||||
|
|
||||||
- **Subagent failures**: If a subagent fails or times out, note it in the summary but continue with other beads
|
|
||||||
- **PR creation failures**: Report the error but continue with reviews of successful PRs
|
|
||||||
- **Worktree conflicts**: If a worktree already exists, ask the user if they want to remove it or skip that bead
|
|
||||||
|
|
||||||
## Resource Limits
|
|
||||||
|
|
||||||
- Consider limiting concurrent subagents to 3-5 to avoid overwhelming system resources
|
|
||||||
- If user selects more beads than the limit, process them in batches
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- This workflow integrates with the beads system (`bd` commands)
|
|
||||||
- Worktrees are created in `~/wt/[REPO_NAME]/` by convention
|
|
||||||
- Each bead gets its own isolated branch and worktree
|
|
||||||
- PRs automatically reference the bead ID for traceability
|
|
||||||
72
home/roles/starship/default.nix
Normal file
72
home/roles/starship/default.nix
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.home.roles.starship;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.home.roles.starship = {
|
||||||
|
enable = mkEnableOption "starship cross-shell prompt";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
|
||||||
|
character = {
|
||||||
|
success_symbol = "[>](bold green)";
|
||||||
|
error_symbol = "[x](bold red)";
|
||||||
|
vimcmd_symbol = "[<](bold green)";
|
||||||
|
};
|
||||||
|
|
||||||
|
directory = {
|
||||||
|
truncation_length = 4;
|
||||||
|
truncate_to_repo = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
git_branch = {
|
||||||
|
symbol = "";
|
||||||
|
format = "[$symbol$branch(:$remote_branch)]($style) ";
|
||||||
|
};
|
||||||
|
|
||||||
|
git_status = {
|
||||||
|
format = "([$all_status$ahead_behind]($style) )";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix_shell = {
|
||||||
|
symbol = "";
|
||||||
|
format = "[$symbol$state( \\($name\\))]($style) ";
|
||||||
|
};
|
||||||
|
|
||||||
|
cmd_duration = {
|
||||||
|
min_time = 2000;
|
||||||
|
format = "[$duration]($style) ";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Disable modules that are noisy or rarely needed
|
||||||
|
package.disabled = true;
|
||||||
|
nodejs.disabled = true;
|
||||||
|
python.disabled = true;
|
||||||
|
ruby.disabled = true;
|
||||||
|
java.disabled = true;
|
||||||
|
golang.disabled = true;
|
||||||
|
rust.disabled = true;
|
||||||
|
php.disabled = true;
|
||||||
|
lua.disabled = true;
|
||||||
|
perl.disabled = true;
|
||||||
|
terraform.disabled = true;
|
||||||
|
kubernetes.disabled = true;
|
||||||
|
docker_context.disabled = true;
|
||||||
|
aws.disabled = true;
|
||||||
|
gcloud.disabled = true;
|
||||||
|
azure.disabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -170,7 +170,6 @@ This document outlines the plan to migrate the john-endesktop server from Arch L
|
|||||||
```bash
|
```bash
|
||||||
blkid /dev/nvme0n1p5
|
blkid /dev/nvme0n1p5
|
||||||
# Note the UUID for updating hardware-configuration.nix
|
# Note the UUID for updating hardware-configuration.nix
|
||||||
/dev/nvme0n1p5: LABEL="nixos" UUID="5f4ad025-bfab-4aed-a933-6638348059e5" UUID_SUB="4734d820-7b8a-4b7f-853a-026021c1d204" BLOCK_SIZE="4096" TYPE="btrfs" PARTLABEL="data" PARTUUID="9ea025df-cdb7-48fd-b5d4-37cd5d8588eb"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
8. **Copy your NixOS configuration to the server**
|
8. **Copy your NixOS configuration to the server**
|
||||||
@@ -389,11 +388,11 @@ After successful migration and 24-48 hours of stable operation:
|
|||||||
|
|
||||||
Pre-migration:
|
Pre-migration:
|
||||||
- [x] nvme0n1p5 removal from media pool complete
|
- [x] nvme0n1p5 removal from media pool complete
|
||||||
- [x] Recent backup verified (< 24 hours)
|
- [ ] Recent backup verified (< 24 hours)
|
||||||
- [x] Maintenance window scheduled
|
- [ ] Maintenance window scheduled
|
||||||
- [x] NixOS ISO downloaded
|
- [ ] NixOS ISO downloaded
|
||||||
- [x] Bootable USB created
|
- [ ] Bootable USB created
|
||||||
- [x] NixOS config builds successfully
|
- [ ] NixOS config builds successfully
|
||||||
|
|
||||||
During migration:
|
During migration:
|
||||||
- [ ] ZFS pools exported
|
- [ ] ZFS pools exported
|
||||||
|
|||||||
Reference in New Issue
Block a user