Skip to content
86 changes: 43 additions & 43 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 11 additions & 25 deletions nix/modules/pi-agent.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,18 @@ in
darwin.pi-agent = osModule;
nixos.pi-agent = osModule;
homeManager.pi-agent =
{ pkgs, ... }:
let
package = pkgs.pi-coding-agent;
in
{ pkgs, config, ... }:
{
home = {
file.".pi/agent/AGENTS.md".text = ''
programs.pi-coding-agent = {
enable = true;
extraPackages = [ pkgs.nodejs_22 ];
settings = {
lastChangelogVersion = lib.getVersion config.programs.pi-coding-agent.package;
packages = [ "npm:@vanillagreen/pi-claude-bridge" ];
defaultProvider = "claude-bridge";
defaultModel = "claude-sonnet-4-6";
};
context = ''
# Global pi instructions

- If a command is missing, use comma: `, <command> [args...]`
Expand All @@ -34,25 +39,6 @@ in
- `nix flake metadata --json | jq '.locks.nodes | keys'`
- `nix eval --impure --raw --expr '(builtins.getFlake (toString ./.)).inputs.<name>.outPath'`
'';
file.".pi/agent/settings.json".text = builtins.toJSON {
lastChangelogVersion = lib.getVersion package;
packages = [ "npm:@vanillagreen/pi-claude-bridge" ];
defaultProvider = "claude-bridge";
defaultModel = "claude-sonnet-4-6";
};
packages = [
(pkgs.symlinkJoin {
inherit (package) meta;
name = "${lib.getName package}-wrapped-${lib.getVersion package}";
paths = [ package ];
preferLocalBuild = true;
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/pi \
--suffix PATH : ${lib.makeBinPath [ pkgs.nodejs_22 ]}
'';
})
];
};
};
};
Expand Down
63 changes: 59 additions & 4 deletions nix/profiles/development.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,26 @@ in
pi-agent
yazi
];
home-manager.sharedModules = [ cfg.modules.homeManager.profile-development ];
home-manager.sharedModules = [
cfg.modules.homeManager.profile-development
(
{ config, ... }:
{
launchd.agents.ssh-add = {
enable = true;
config = {
ProgramArguments = [
"/bin/sh"
"-c"
"ssh-add ${config.home.homeDirectory}/.ssh/id_ed25519"
];
RunAtLoad = true;
KeepAlive = false;
};
};
}
)
];
};
nixos.profile-development = {
imports = with cfg.modules.nixos; [
Expand All @@ -27,18 +46,42 @@ in
yazi
];
networking.networkmanager.enable = true;
home-manager.sharedModules = [ cfg.modules.homeManager.profile-development ];
programs.ssh.startAgent = true;
home-manager.sharedModules = [
cfg.modules.homeManager.profile-development
(
{ pkgs, config, ... }:
{
systemd.user.services.ssh-add = {
Unit = {
Description = "Add SSH key to agent on login";
Wants = [ "ssh-agent.service" ];
After = [ "ssh-agent.service" ];
};
Service = {
Type = "oneshot";
Environment = "SSH_AUTH_SOCK=%t/ssh-agent";
ExecStart = "${pkgs.openssh}/bin/ssh-add ${config.home.homeDirectory}/.ssh/id_ed25519";
RemainAfterExit = true;
};
Install.WantedBy = [ "default.target" ];
};
}
)
];
};
homeManager.profile-development =
{ pkgs, ... }:
{
home.packages = with pkgs; [
git-bug
ddgr
gh
ripgrep
];
home.shellAliases = {
cd = "echo \"Please use z\"";
gb = "git-bug termui";
gc = "git commit";
gcam = "git commit -am";
gcamend = "git commit -a --amend --no-edit";
Expand All @@ -50,7 +93,8 @@ in
gds = "git diff --staged";
grc = "git rebase --continue";
gs = "git status";
gu = "git push";
gu = "git push && git-bug push";
gy = "git pull && git-bug pull";
v = "$EDITOR";
e = "fish -c 'set -e var; set var (sk); test -n \"$var\"; and $EDITOR $var'";
};
Expand All @@ -67,7 +111,7 @@ in
settings = {
add_newline = false;
format = lib.strings.concatStrings [
"$hostname$directory$git_branch$git_status$git_state"
"$hostname$directory$git_branch$git_status$git_state\${custom.git-bug}"
"$fill"
"$nix_shell"
"$time"
Expand All @@ -88,6 +132,17 @@ in
shlvl.disabled = false;
username.disabled = true;
fill.symbol = " ";
custom.git-bug = {
when = ''
git for-each-ref --count=1 refs/bugs/ > /dev/null 2>&1 || exit 1
l=$(git for-each-ref refs/bugs/ --format="%(objectname) %(refname:lstrip=2)" 2>/dev/null | sort)
r=$(git for-each-ref refs/remotes/origin/bugs/ --format="%(objectname) %(refname:lstrip=4)" 2>/dev/null | sort)
[ "$l" != "$r" ]
'';
command = "true";
format = "[ 🐛]($style)";
shell = [ "${lib.getExe pkgs.bash}" ];
};
};
};
zoxide.enable = true;
Expand Down