mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
codex: init
This commit is contained in:
parent
7e3d76e7f7
commit
427c96044f
9 changed files with 118 additions and 0 deletions
|
|
@ -92,6 +92,7 @@ let
|
||||||
./programs/chromium.nix
|
./programs/chromium.nix
|
||||||
./programs/clock-rs.nix
|
./programs/clock-rs.nix
|
||||||
./programs/cmus.nix
|
./programs/cmus.nix
|
||||||
|
./programs/codex.nix
|
||||||
./programs/command-not-found/command-not-found.nix
|
./programs/command-not-found/command-not-found.nix
|
||||||
./programs/comodoro.nix
|
./programs/comodoro.nix
|
||||||
./programs/darcs.nix
|
./programs/darcs.nix
|
||||||
|
|
|
||||||
67
modules/programs/codex.nix
Normal file
67
modules/programs/codex.nix
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.programs.codex;
|
||||||
|
|
||||||
|
settingsFormat = pkgs.formats.yaml { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
meta.maintainers = [
|
||||||
|
lib.hm.maintainers.delafthi
|
||||||
|
];
|
||||||
|
|
||||||
|
options.programs.codex = {
|
||||||
|
enable = lib.mkEnableOption "Lightweight coding agent that runs in your terminal";
|
||||||
|
|
||||||
|
package = lib.mkPackageOption pkgs "codex" { nullable = true; };
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
inherit (settingsFormat) type;
|
||||||
|
description = ''
|
||||||
|
Configuration written to {file}`~/.codex/config.yaml`.
|
||||||
|
See <https://github.com/openai/codex#configuration-guide> for supported values.
|
||||||
|
'';
|
||||||
|
default = { };
|
||||||
|
defaultText = lib.literalExpression "{ }";
|
||||||
|
example = lib.literalExpression ''
|
||||||
|
{
|
||||||
|
model = "gemma3:latest";
|
||||||
|
provider = "ollama";
|
||||||
|
providers = {
|
||||||
|
ollama = {
|
||||||
|
name = "Ollama";
|
||||||
|
baseURL = "http://localhost:11434/v1";
|
||||||
|
envKey = "OLLAMA_API_KEY";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
custom-instructions = lib.mkOption {
|
||||||
|
type = lib.types.lines;
|
||||||
|
description = "Define custom guidance for the agents; this value is written to {file}~/.codex/AGENTS.md";
|
||||||
|
default = "";
|
||||||
|
example = lib.literalExpression ''
|
||||||
|
'''
|
||||||
|
- Always respond with emojis
|
||||||
|
- Only use git commands when explicitly requested
|
||||||
|
'''
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = mkIf (cfg.package != null) [ cfg.package ];
|
||||||
|
home.file = {
|
||||||
|
".codex/config.yaml".source = settingsFormat.generate "codex-config" cfg.settings;
|
||||||
|
".codex/AGENTS.md".text = cfg.custom-instructions;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -29,6 +29,7 @@ let
|
||||||
"cava"
|
"cava"
|
||||||
"clock-rs"
|
"clock-rs"
|
||||||
"cmus"
|
"cmus"
|
||||||
|
"codex"
|
||||||
"comodoro"
|
"comodoro"
|
||||||
"darcs"
|
"darcs"
|
||||||
"delta"
|
"delta"
|
||||||
|
|
|
||||||
|
|
@ -190,6 +190,7 @@ import nmtSrc {
|
||||||
./modules/programs/cava
|
./modules/programs/cava
|
||||||
./modules/programs/clock-rs
|
./modules/programs/clock-rs
|
||||||
./modules/programs/cmus
|
./modules/programs/cmus
|
||||||
|
./modules/programs/codex
|
||||||
./modules/programs/comodoro
|
./modules/programs/comodoro
|
||||||
./modules/programs/darcs
|
./modules/programs/darcs
|
||||||
./modules/programs/dircolors
|
./modules/programs/dircolors
|
||||||
|
|
|
||||||
2
tests/modules/programs/codex/custom-instructions.md
Normal file
2
tests/modules/programs/codex/custom-instructions.md
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
- Always respond with emojis
|
||||||
|
- Only use git commands when explicitly requested
|
||||||
14
tests/modules/programs/codex/custom-instructions.nix
Normal file
14
tests/modules/programs/codex/custom-instructions.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
programs.codex = {
|
||||||
|
enable = true;
|
||||||
|
custom-instructions = ''
|
||||||
|
- Always respond with emojis
|
||||||
|
- Only use git commands when explicitly requested
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.codex/AGENTS.md
|
||||||
|
assertFileContent home-files/.codex/AGENTS.md \
|
||||||
|
${./custom-instructions.md}
|
||||||
|
'';
|
||||||
|
}
|
||||||
4
tests/modules/programs/codex/default.nix
Normal file
4
tests/modules/programs/codex/default.nix
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
codex-settings = ./settings.nix;
|
||||||
|
codex-custom-instructions = ./custom-instructions.nix;
|
||||||
|
}
|
||||||
21
tests/modules/programs/codex/settings.nix
Normal file
21
tests/modules/programs/codex/settings.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
programs.codex = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
model = "gemma3:latest";
|
||||||
|
provider = "ollama";
|
||||||
|
providers = {
|
||||||
|
ollama = {
|
||||||
|
name = "Ollama";
|
||||||
|
baseURL = "http://localhost:11434/v1";
|
||||||
|
envKey = "OLLAMA_API_KEY";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.codex/config.yaml
|
||||||
|
assertFileContent home-files/.codex/config.yaml \
|
||||||
|
${./settings.yml}
|
||||||
|
'';
|
||||||
|
}
|
||||||
7
tests/modules/programs/codex/settings.yml
Normal file
7
tests/modules/programs/codex/settings.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
model: gemma3:latest
|
||||||
|
provider: ollama
|
||||||
|
providers:
|
||||||
|
ollama:
|
||||||
|
baseURL: http://localhost:11434/v1
|
||||||
|
envKey: OLLAMA_API_KEY
|
||||||
|
name: Ollama
|
||||||
Loading…
Add table
Add a link
Reference in a new issue