.dotfiles/dot_config/flake/machines/hinge/home.nix
2025-11-21 08:41:55 -05:00

185 lines
4.4 KiB
Nix

{pkgs, ...}: {
imports = [
../../home/common.nix
../../home/helide
../../modules/home/ghostty.nix
../../modules/darwin/PaperWM.spoon
];
# Hinge-specific Helix configuration with lsp-ai
programs.helix.languages = {
language-server.lsp_ai = {
command = "lsp-ai";
args = [
"--use-seperate-log-file"
"--stdio"
];
config = {
memory = {
file_store = {};
};
models = {
model1 = {
type = "anthropic";
chat_endpoint = "https://api.anthropic.com/v1/messages";
model = "claude-3-5-haiku-20241022";
auth_token_env_var_name = "ANTHROPIC_API_KEY";
};
};
completion = {
model = "model1";
parameters = {
max_context = 2048;
max_tokens = 50;
system = "You are a code completion assistant. Complete the code at <CURSOR>. Only output the completion itself, nothing else. Be concise.";
messages = [
{
role = "user";
content = "def greet(name):\n print(f\"Hello, {<CURSOR>}\")";
}
{
role = "assistant";
content = "name";
}
{
role = "user";
content = "function sum(a, b) {\n return a + <CURSOR>;\n}";
}
{
role = "assistant";
content = "b";
}
{
role = "user";
content = "fn multiply(a: i32, b: i32) -> i32 {\n a * <CURSOR>\n}";
}
{
role = "assistant";
content = "b";
}
{
role = "user";
content = "# <CURSOR>\ndef add(a, b):\n return a + b";
}
{
role = "assistant";
content = "Adds two numbers";
}
{
role = "user";
content = "# This function checks if a number is even\n<CURSOR>";
}
{
role = "assistant";
content = "def is_even(n):\n return n % 2 == 0";
}
{
role = "user";
content = "{CODE}";
}
];
};
};
};
};
language = [
{
name = "cpp";
language-servers = ["clangd" "lsp_ai"];
}
{
name = "objc";
language-servers = ["clangd" "lsp_ai"];
}
{
name = "python";
language-servers = ["ruff" "basedpyright" "lsp_ai"];
}
{
name = "typescript";
language-servers = ["typescript-language-server" "lsp_ai"];
}
{
name = "bash";
language-servers = ["bash-language-server" "lsp_ai"];
}
{
name = "toml";
language-servers = ["taplo" "lsp_ai"];
}
];
};
targets.darwin.linkApps.enable = false;
targets.darwin.copyApps.enable = true;
programs.git = {
lfs.enable = true;
signing = {
key = "~/.ssh/id_ed25519.pub";
format = "ssh";
signByDefault = true;
};
settings = {
author = {
email = "tyler.mayoff@hingehealth.com";
name = "Tyler Mayoff";
};
user = {
email = "tyler.mayoff@hingehealth.com";
name = "Tyle Mayoff";
};
};
};
home = {
username = "tyler.mayoff";
# homeDirectory = /Users/tyler.mayoff;
packages = with pkgs; [
bazelisk
cmake
conan
pre-commit
black
ruff
swiftlint
unstable.helix-gpt
unstable.lsp-ai
python312Packages.python-lsp-server
unstable.openscad-lsp
typescript-language-server
cmake-language-server
jdt-language-server
unstable.biome
uv
unstable.jiratui
ffmpeg
sccache
just
nodejs_24
cocoapods
];
sessionVariables = {
ANDROID_HOME = "/Users/tyler.mayoff/Library/Android/sdk";
PATH = "/opt/homebrew/opt/llvm@20/bin:$PATH::/Users/tyler.mayoff/Library/Android/sdk/platform-tools";
};
file.".gnupg/gpg-agent.conf".text = ''
pinentry-program ${pkgs.pinentry_mac}/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac
'';
};
programs.home-manager.enable = true;
home.stateVersion = "24.11";
}