Compare commits

..
8 Commits
7 changed files with 115 additions and 58 deletions
@@ -46,6 +46,12 @@ in
package = wrapped; package = wrapped;
# Pin the legacy profile location. The default changed to the XDG path
# (`$XDG_CONFIG_HOME/mozilla/firefox`) for stateVersion >= "26.05";
# keep the old `~/.mozilla/firefox` so the existing profile isn't
# stranded (migrating would require moving the profile dir by hand).
configPath = ".mozilla/firefox";
profiles = { profiles = {
alex = { alex = {
id = 0; id = 0;
+18 -17
View File
@@ -21,31 +21,32 @@ in
home-manager.users.alex = { home-manager.users.alex = {
programs.ssh = { programs.ssh = {
enable = true; enable = true;
enableDefaultConfig = false;
matchBlocks = { settings = {
"manatee" = { "manatee" = {
hostname = "manatee"; HostName = "manatee";
user = "alex"; User = "alex";
identityFile = "/home/alex/.ssh/alex.backwards-manatee"; IdentityFile = "/home/alex/.ssh/alex.backwards-manatee";
port = 1122; Port = 1122;
}; };
"git.ppp.pm" = { "git.ppp.pm" = {
hostname = "git.ppp.pm"; HostName = "git.ppp.pm";
identityFile = "/home/alex/.ssh/alex.backwards-git.ppp.pm"; IdentityFile = "/home/alex/.ssh/alex.backwards-git.ppp.pm";
}; };
"*" = { "*" = {
forwardAgent = false; ForwardAgent = false;
addKeysToAgent = "no"; AddKeysToAgent = "no";
compression = false; Compression = false;
serverAliveInterval = 0; ServerAliveInterval = 0;
serverAliveCountMax = 3; ServerAliveCountMax = 3;
hashKnownHosts = false; HashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts"; UserKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no"; ControlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p"; ControlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no"; ControlPersist = "no";
}; };
}; };
}; };
+38
View File
@@ -6,6 +6,41 @@
}: }:
let let
enabled = config.mod.ai.enable; enabled = config.mod.ai.enable;
# Shared statusline: show the logged-in account email.
statusLine = {
type = "command";
command = "jq -r '.oauthAccount.emailAddress' \"$CLAUDE_CONFIG_DIR/.claude.json\"";
};
# PostToolUse hook: echoes a JSON payload that injects a comment-policy
# reminder as additional context after every Write/Edit.
commentPolicyPayload = builtins.toJSON {
suppressOutput = true;
hookSpecificOutput = {
hookEventName = "PostToolUse";
additionalContext = "Comment policy: default to ZERO code comments. Review what you just wrote and delete any comment that narrates the change, restates the code, states the obvious, is tangential, or explains design/why rationale -- put that reasoning in your chat reply instead, never in the code. Never use em dashes or en dashes anywhere in file content; use a plain ASCII hyphen or reword.";
};
};
settings = builtins.toJSON {
inherit statusLine;
theme = "dark";
editorMode = "vim";
hooks = {
PostToolUse = [
{
matcher = "Write|Edit";
hooks = [
{
type = "command";
command = "echo ${lib.escapeShellArg commentPolicyPayload}";
}
];
}
];
};
};
in in
{ {
options = { options = {
@@ -24,6 +59,9 @@ in
wclaude = "CLAUDE_CONFIG_DIR=$HOME/.claude-personal claude"; wclaude = "CLAUDE_CONFIG_DIR=$HOME/.claude-personal claude";
pclaude = "CLAUDE_CONFIG_DIR=$HOME/.claude-work claude"; pclaude = "CLAUDE_CONFIG_DIR=$HOME/.claude-work claude";
}; };
home.file.".claude-work/settings.json".text = settings;
home.file.".claude-personal/settings.json".text = settings;
}; };
}; };
} }
@@ -53,6 +53,12 @@ in
package = wrapped; package = wrapped;
# Pin the legacy profile location. The default changed to the XDG path
# (`$XDG_CONFIG_HOME/mozilla/firefox`) for stateVersion >= "26.05";
# keep the old `~/.mozilla/firefox` so the existing profile isn't
# stranded (migrating would require moving the profile dir by hand).
configPath = ".mozilla/firefox";
profiles = { profiles = {
alex = { alex = {
id = 0; id = 0;
+1 -1
View File
@@ -18,7 +18,7 @@ in
home-manager.users.alex = { home-manager.users.alex = {
home.packages = [ home.packages = [
pkgs.gleam pkgs.gleam
pkgs.erlang pkgs.beamPackages.erlang
]; ];
}; };
}; };
+32 -27
View File
@@ -7,6 +7,11 @@
services.gnome.gcr-ssh-agent.enable = false; services.gnome.gcr-ssh-agent.enable = false;
programs.ssh.startAgent = true; programs.ssh.startAgent = true;
# Create the setuid `fusermount3` wrapper that `sshfs` execs to mount. The
# `programs.fuse` module used to install this unconditionally; newer nixpkgs
# gates it behind this option (default off), so opt in explicitly.
programs.fuse.enable = true;
home-manager.users.alex = { home-manager.users.alex = {
services.gnome-keyring = { services.gnome-keyring = {
enable = true; enable = true;
@@ -31,49 +36,49 @@
enable = true; enable = true;
enableDefaultConfig = false; enableDefaultConfig = false;
matchBlocks = { settings = {
"manatee" = { "manatee" = {
hostname = "manatee"; HostName = "manatee";
user = "alex"; User = "alex";
identityFile = "/home/alex/.ssh/alex.pinwheel-manatee"; IdentityFile = "/home/alex/.ssh/alex.pinwheel-manatee";
port = 1122; Port = 1122;
}; };
"backwards" = { "backwards" = {
hostname = "backwards"; HostName = "backwards";
user = "alex"; User = "alex";
identityFile = "/home/alex/.ssh/alex.pinwheel-backwards"; IdentityFile = "/home/alex/.ssh/alex.pinwheel-backwards";
port = 1122; Port = 1122;
}; };
"tadpole" = { "tadpole" = {
hostname = "65.21.106.222"; HostName = "65.21.106.222";
user = "alex"; User = "alex";
identityFile = "/home/alex/.ssh/alex.pinwheel-tadpole"; IdentityFile = "/home/alex/.ssh/alex.pinwheel-tadpole";
port = 1122; Port = 1122;
}; };
"github.com" = { "github.com" = {
hostname = "github.com"; HostName = "github.com";
identityFile = "/home/alex/.ssh/alex.pinwheel-github.com"; IdentityFile = "/home/alex/.ssh/alex.pinwheel-github.com";
}; };
"git.ppp.pm" = { "git.ppp.pm" = {
hostname = "git.ppp.pm"; HostName = "git.ppp.pm";
identityFile = "/home/alex/.ssh/alex.pinwheel-git.ppp.pm"; IdentityFile = "/home/alex/.ssh/alex.pinwheel-git.ppp.pm";
}; };
"*" = { "*" = {
forwardAgent = false; ForwardAgent = false;
addKeysToAgent = "yes"; AddKeysToAgent = "yes";
compression = false; Compression = false;
serverAliveInterval = 0; ServerAliveInterval = 0;
serverAliveCountMax = 3; ServerAliveCountMax = 3;
hashKnownHosts = false; HashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts"; UserKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no"; ControlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p"; ControlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no"; ControlPersist = "no";
}; };
}; };
}; };
+14 -13
View File
@@ -21,24 +21,25 @@ in
home-manager.users.alex = { home-manager.users.alex = {
programs.ssh = { programs.ssh = {
enable = true; enable = true;
enableDefaultConfig = false;
matchBlocks = { settings = {
"git.ppp.pm" = { "git.ppp.pm" = {
hostname = "git.ppp.pm"; HostName = "git.ppp.pm";
identityFile = "/home/alex/.ssh/alex.tadpole-git.ppp.pm"; IdentityFile = "/home/alex/.ssh/alex.tadpole-git.ppp.pm";
}; };
"*" = { "*" = {
forwardAgent = false; ForwardAgent = false;
addKeysToAgent = "no"; AddKeysToAgent = "no";
compression = false; Compression = false;
serverAliveInterval = 0; ServerAliveInterval = 0;
serverAliveCountMax = 3; ServerAliveCountMax = 3;
hashKnownHosts = false; HashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts"; UserKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no"; ControlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p"; ControlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no"; ControlPersist = "no";
}; };
}; };
}; };