Skip to content

Update nixpkgs and add glaude program#206

Merged
connerohnesorge merged 5 commits intomainfrom
update-nixpkgs-and-add-glaude
Jan 2, 2026
Merged

Update nixpkgs and add glaude program#206
connerohnesorge merged 5 commits intomainfrom
update-nixpkgs-and-add-glaude

Conversation

@connerohnesorge
Copy link
Copy Markdown
Owner

@connerohnesorge connerohnesorge commented Jan 1, 2026

  • Update flake.lock with latest package versions
  • Rename nix-ai-tools to llm-agents.nix
  • Add glaude program for local Google Claude proxy
  • Add gh-dash, radicle tools, and amp to engineer feature
  • Fix hyprland gnome desktop manager configuration
  • Add klaude alias to .zshrc
  • Remove conclaude generated file edit prevention config

💘 Generated with Crush

Assisted-by: Kimi for Coding via Crush [email protected]

Summary by CodeRabbit

  • New Features

    • Added a new "glaude" program option and a "student" feature module.
    • New terminal keybinding: open a new tab in current directory (Ctrl+Shift+T).
    • Zsh: interactive edit shortcut (Ctrl‑X Ctrl‑E) and three convenience aliases.
  • Chores

    • Switched default terminal to kitty and removed automatic background launcher.
    • Simplified configuration templates and notification placeholders for easier customization.
    • Updated AI model defaults and CLI permission behavior for assistant tooling.

✏️ Tip: You can customize this high-level summary in your review settings.

- Update flake.lock with latest package versions
- Rename nix-ai-tools to llm-agents.nix
- Add glaude program for local Google Claude proxy
- Add gh-dash, radicle tools, and amp to engineer feature
- Fix hyprland gnome desktop manager configuration
- Add klaude alias to .zshrc
- Remove conclaude generated file edit prevention config

💘 Generated with Crush

Assisted-by: Kimi for Coding via Crush <[email protected]>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jan 1, 2026

Walkthrough

Adds a minimal Claude config template, new glaude program and launcher script (starts optional proxy, sets Anthropic envs, invokes claude with permissions skipping), updates klaude models and invocation, switches terminal launcher to kitty, adds zsh bindings/aliases, updates several Nix modules/inputs, and removes many top-of-file documentation blocks.

Changes

Cohort / File(s) Summary
Claude configuration
\.conclaude\.yaml
Replace verbose defaults with a minimal template: update schema URL, shorten stop hook to commands: [], add subagentStop, simplify preToolUse (preventRootAdditions, uneditableFiles), keep preventUpdateGitIgnored and leave toolUsageValidation empty with commented examples.
New glaude program
modules/programs/glaude/default.nix, modules/programs/glaude/glaude.sh
Add Nix module programs.glaude and glaude.sh: checks/starts proxy on TCP 1738, exports Anthropic/Claude env vars, and invokes claude (uses permission-skip flag). Review startup/port logic and env var choices.
klaude script updates
modules/programs/klaude/klaude.sh
Change default models to kimi-k2-thinking-turbo, add tiered model exports and CLAUDE_CODE_SUBAGENT_MODEL, and change invocation to claude --dangerously-skip-permissions $@. Verify model names and effects of skipping permissions.
Hyprland & terminal scripts
\.config/hypr/hyprland.conf, \.config/hypr/scripts/term.sh, \.config/hypr/setup.sh
Switch terminal from ghosttykitty (TERM/TERMINAL and launcher), remove dconf exec-once lines, and remove background hyprshell run -vv & from setup.
Kitty config
\.config/kitty/kitty.conf
Add keybinding: Ctrl+Shift+T → new_tab_with_cwd.
Shell config
\.zshrc
Add edit-command-line ZLE integration bound to Ctrl-X Ctrl-E and aliases kl='klaude', vf='nvimf', vfi='nvimfi'.
Nix flake inputs
flake.nix
Repoint nix-ai-tools input from github:numtide/nix-ai-toolsgithub:numtide/llm-agents.nix.
Engineer & Hyprland feature modules
modules/features/engineer.nix, modules/features/hyprland.nix
engineer: enable glaude, remove fdtools, add gh-dash, radicle-tui, radicle-desktop, add amp to nix-ai-tools packages. hyprland: replace dconf flag with profile DB settings, enable GNOME desktop/gnome-keyring flags, comment out withUWSM.
Many modules, programs, templates, rices, hosts
modules/..., templates/..., rices/..., hosts/...
Remove large top-of-file documentation/comment blocks across many files; no functional changes.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Glaude as glaude.sh
    participant Proxy as Proxy(1738)
    participant ClaudeCLI as claude
    participant Anthropic as AnthropicAPI

    Note over User,Glaude: User runs `glaude` (writeShellApplication)
    User->>Glaude: invoke glaude.sh with args
    Glaude->>Glaude: check TCP port 1738
    alt port closed
        Glaude->>Proxy: start proxy (background)
        Note right of Proxy: listens on :1738
    end
    Glaude->>Glaude: export CLAUDE/ANTHROPIC env vars (model defaults)
    Glaude->>ClaudeCLI: exec `claude --dangerously-skip-permissions $@`
    ClaudeCLI->>Proxy: optional proxy forwarding
    ClaudeCLI->>Anthropic: API request (using exported model)
    Anthropic-->>ClaudeCLI: response
    ClaudeCLI-->>User: output
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary changes: updating nixpkgs and adding the glaude program, which are the main functional additions across the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch update-nixpkgs-and-add-glaude

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
flake.nix (1)

19-23: If renaming the input, update references in modules/features/engineer.nix.

The input name nix-ai-tools doesn't match the repository name llm-agents.nix. While the URL is correct and the code functions properly, renaming for consistency would require updating at least 3 references in modules/features/engineer.nix (lines 161, 162, 267). This is optional but would improve clarity if the developer prefers aligned naming conventions.

modules/programs/glaude/default.nix (1)

14-17: Consider fixing the shell script instead of suppressing ShellCheck warnings.

Excluding SC2068 (array expansion) hides a real issue in glaude.sh where $@ should be quoted as "$@". Suppressing the warning here masks a bug rather than fixing it.

🔎 Proposed fix: Remove SC2068 from exclusions and fix the script
    excludeShellChecks = [
-     "SC2068"
      "SC2155"
    ];

Then fix glaude.sh line 16 to use "$@" instead of $@.

modules/programs/glaude/glaude.sh (1)

3-6: Minor: trailing whitespace on line 3.

There's a trailing space after PORT=1738. This is cosmetic but worth cleaning up.

🔎 Proposed fix
-PORT=1738 
+PORT=1738
modules/programs/klaude/klaude.sh (1)

5-6: Remove commented-out code.

The old model exports are now dead code. Consider removing them to keep the script clean.

🔎 Proposed fix
-# export ANTHROPIC_SMALL_FAST_MODEL=kimi-for-coding
-# export ANTHROPIC_MODEL=kimi-for-coding
 export ANTHROPIC_MODEL=kimi-k2-thinking-turbo
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b9ed49a and 951b4c9.

⛔ Files ignored due to path filters (1)
  • flake.lock is excluded by !**/*.lock
📒 Files selected for processing (10)
  • .conclaude.yaml
  • .config/hypr/hyprland.conf
  • .config/kitty/kitty.conf
  • .zshrc
  • flake.nix
  • modules/features/engineer.nix
  • modules/features/hyprland.nix
  • modules/programs/glaude/default.nix
  • modules/programs/glaude/glaude.sh
  • modules/programs/klaude/klaude.sh
🧰 Additional context used
📓 Path-based instructions (7)
modules/features/**/*.nix

📄 CodeRabbit inference engine (CLAUDE.md)

modules/features/**/*.nix: Use the delib.module pattern with singleEnableOption false for feature modules in modules/features/
Define platform-specific configuration in separate sections using nixos.ifEnabled, darwin.ifEnabled, and home.ifEnabled for feature modules

In Nix module files, use the delib.module pattern with singleEnableOption false for feature modules with platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled

Files:

  • modules/features/hyprland.nix
  • modules/features/engineer.nix
**/*.{nix,rs,py}

📄 CodeRabbit inference engine (GEMINI.md)

Use nix fmt to format code using treefmt (alejandra for Nix, rustfmt for Rust, black for Python)

Files:

  • modules/features/hyprland.nix
  • modules/programs/glaude/default.nix
  • flake.nix
  • modules/features/engineer.nix
**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

**/*.nix: Use alejandra formatting for Nix files
Prefer let...in blocks in Nix code
Use kebab-case for Nix attributes

Files:

  • modules/features/hyprland.nix
  • modules/programs/glaude/default.nix
  • flake.nix
  • modules/features/engineer.nix
modules/**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

modules/**/*.nix: Use delib.module pattern for Nix modules
Use platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled for multi-platform support

Files:

  • modules/features/hyprland.nix
  • modules/programs/glaude/default.nix
  • modules/features/engineer.nix
**/*.{py,nix}

📄 CodeRabbit inference engine (AGENTS.md)

Use snake_case for file and function names

Files:

  • modules/features/hyprland.nix
  • modules/programs/glaude/default.nix
  • flake.nix
  • modules/features/engineer.nix
modules/programs/**/default.nix

📄 CodeRabbit inference engine (CLAUDE.md)

Create custom program modules in modules/programs/ directories with source code and default.nix build expressions

Files:

  • modules/programs/glaude/default.nix
modules/programs/*/default.nix

📄 CodeRabbit inference engine (GEMINI.md)

In custom program modules, create a directory in modules/programs/ with source code and default.nix, define the package derivation with cross-platform support, and export using delib.module pattern

Files:

  • modules/programs/glaude/default.nix
🧠 Learnings (12)
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to hosts/**/*.nix : In Nix host configuration files, use the `delib.host` pattern with type classification (desktop/laptop/server) and enable features through `myconfig.features.*`

Applied to files:

  • modules/features/hyprland.nix
  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to modules/features/**/*.nix : In Nix module files, use the `delib.module` pattern with `singleEnableOption false` for feature modules with platform-specific sections: `nixos.ifEnabled`, `darwin.ifEnabled`, `home.ifEnabled`

Applied to files:

  • modules/features/hyprland.nix
  • modules/programs/glaude/default.nix
  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Use the `delib.module` pattern with `singleEnableOption false` for feature modules in `modules/features/`

Applied to files:

  • modules/features/hyprland.nix
  • modules/programs/glaude/default.nix
  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to modules/programs/*/default.nix : In custom program modules, create a directory in `modules/programs/` with source code and `default.nix`, define the package derivation with cross-platform support, and export using `delib.module` pattern

Applied to files:

  • modules/programs/glaude/default.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/programs/**/default.nix : Create custom program modules in `modules/programs/` directories with source code and `default.nix` build expressions

Applied to files:

  • modules/programs/glaude/default.nix
📚 Learning: 2025-11-28T14:25:42.835Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-28T14:25:42.835Z
Learning: Applies to modules/**/*.nix : Use platform-specific sections: `nixos.ifEnabled`, `darwin.ifEnabled`, `home.ifEnabled` for multi-platform support

Applied to files:

  • modules/programs/glaude/default.nix
  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:25:42.835Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-28T14:25:42.835Z
Learning: Applies to modules/**/*.nix : Use `delib.module` pattern for Nix modules

Applied to files:

  • modules/programs/glaude/default.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Define platform-specific configuration in separate sections using `nixos.ifEnabled`, `darwin.ifEnabled`, and `home.ifEnabled` for feature modules

Applied to files:

  • modules/programs/glaude/default.nix
  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: When creating new feature modules in Nix, consider both nixos and darwin platforms and define platform-specific configuration in separate conditional sections

Applied to files:

  • modules/programs/glaude/default.nix
  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Each Nix module should be self-contained with minimal external dependencies

Applied to files:

  • modules/programs/glaude/default.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Leverage Nix's type system through proper option definitions in module declarations

Applied to files:

  • modules/programs/glaude/default.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to hosts/**/*.nix : Enable features in host configurations using `myconfig.features.featureName = true` syntax

Applied to files:

  • modules/features/engineer.nix
🪛 Shellcheck (0.11.0)
modules/programs/glaude/glaude.sh

[error] 16-16: Double quote array expansions to avoid re-splitting elements.

(SC2068)

modules/programs/klaude/klaude.sh

[error] 14-14: Double quote array expansions to avoid re-splitting elements.

(SC2068)

🔇 Additional comments (11)
.config/kitty/kitty.conf (1)

30-30: LGTM!

The key binding is correctly configured and follows standard Kitty configuration syntax for opening a new tab with the current working directory.

.config/hypr/hyprland.conf (1)

5-5: LGTM!

The terminal change from ghostty to kitty is consistent with the Kitty configuration additions in .config/kitty/kitty.conf. The variable correctly propagates to the TERM and TERMINAL environment variables.

.zshrc (2)

47-49: LGTM!

The edit-command-line configuration is a standard zsh feature that allows editing the current command line in your default editor using Ctrl-X Ctrl-E. The implementation is correct.


79-79: LGTM!

The kl alias for klaude aligns with the PR objectives to add klaude support.

modules/features/hyprland.nix (1)

169-169: The correct option path is already in use. The code uses services.desktopManager.gnome.enable = true;, which is the correct modern NixOS option path (nixos-unstable). The older path services.xserver.desktopManager.gnome.enable is deprecated in current NixOS releases, so this change is appropriate and requires no further action.

modules/programs/glaude/default.nix (1)

1-32: Module structure follows coding guidelines correctly.

The module uses the delib.module pattern with singleEnableOption false and provides proper cross-platform support via nixos.ifEnabled and darwin.ifEnabled sections. Based on learnings, this aligns with the expected pattern for custom program modules.

modules/programs/glaude/glaude.sh (2)

16-16: Security: --dangerously-skip-permissions bypasses safety prompts.

This flag allows Claude to execute file operations and commands without user confirmation. This is intentional for automation but ensure users understand the risk when using glaude.


8-14: Hardcoded ANTHROPIC_AUTH_TOKEN=test is appropriate for local proxy.

The test token is suitable since this script connects to a local proxy (localhost:$PORT) rather than the real Anthropic API.

modules/features/engineer.nix (2)

38-38: glaude.enable is only set for NixOS, not Darwin.

The glaude program module in modules/programs/glaude/default.nix supports both nixos and darwin, but glaude.enable = true is only added to the nixos.ifEnabled section here. If this is intentional (e.g., the proxy dependency isn't available on macOS), this is fine. Otherwise, consider adding it to darwin.ifEnabled.myconfig.programs as well for consistency.


140-142: New packages added correctly.

The additions of gh-dash, radicle-tui, radicle-desktop, and amp follow the established patterns in this module.

Also applies to: 162-162

.conclaude.yaml (1)

1-159: Well-structured configuration template with good documentation.

The configuration provides a clean, minimal starting point with comprehensive commented examples. Protecting .conclaude.yml and .conclaude.yaml in uneditableFiles is a good security practice to prevent accidental self-modification.

export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-sonnet-4-5
export CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-4-5-thinking

claude --dangerously-skip-permissions $@
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Quote the array expansion to prevent argument splitting issues.

Using $@ unquoted causes arguments containing spaces to be split incorrectly. Static analysis (SC2068) correctly identifies this issue.

🔎 Proposed fix
-claude --dangerously-skip-permissions $@
+claude --dangerously-skip-permissions "$@"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
claude --dangerously-skip-permissions $@
claude --dangerously-skip-permissions "$@"
🧰 Tools
🪛 Shellcheck (0.11.0)

[error] 16-16: Double quote array expansions to avoid re-splitting elements.

(SC2068)

🤖 Prompt for AI Agents
In modules/programs/glaude/glaude.sh around line 16, the script uses unquoted $@
which can split arguments containing spaces; change the invocation to use the
quoted array expansion "$@" so each original argument (including those with
spaces) is preserved when passed to claude --dangerously-skip-permissions.

export CLAUDE_CODE_SUBAGENT_MODEL=kimi-k2-thinking-turbo

claude $@
claude --dangerously-skip-permissions $@
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Quote the array expansion to prevent argument splitting issues.

Same issue as in glaude.sh - using $@ unquoted causes arguments containing spaces to be split incorrectly.

🔎 Proposed fix
-claude --dangerously-skip-permissions $@
+claude --dangerously-skip-permissions "$@"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
claude --dangerously-skip-permissions $@
claude --dangerously-skip-permissions "$@"
🧰 Tools
🪛 Shellcheck (0.11.0)

[error] 14-14: Double quote array expansions to avoid re-splitting elements.

(SC2068)

🤖 Prompt for AI Agents
In modules/programs/klaude/klaude.sh around line 14, the script calls claude
--dangerously-skip-permissions $@ which leaves the positional parameters
unquoted and can split arguments containing spaces; change the invocation to
quote the array expansion so it reads claude --dangerously-skip-permissions "$@"
to preserve each original argument as a single parameter.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.config/hypr/scripts/term.sh (1)

1-2: Consider adding a shebang line.

The script lacks a shebang (e.g., #!/bin/sh). Without it, the interpreter is undefined when executed directly (./term.sh), which may cause unexpected behavior depending on the invoking shell.

🔎 Suggested fix
+#!/bin/sh
 # term launcher script as hyprland broke it in the config
 kitty
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 951b4c9 and 0681427.

📒 Files selected for processing (5)
  • .config/hypr/hyprland.conf
  • .config/hypr/scripts/term.sh
  • .config/hypr/setup.sh
  • .zshrc
  • modules/features/hyprland.nix
💤 Files with no reviewable changes (1)
  • .config/hypr/setup.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • .config/hypr/hyprland.conf
🧰 Additional context used
📓 Path-based instructions (5)
modules/features/**/*.nix

📄 CodeRabbit inference engine (CLAUDE.md)

modules/features/**/*.nix: Use the delib.module pattern with singleEnableOption false for feature modules in modules/features/
Define platform-specific configuration in separate sections using nixos.ifEnabled, darwin.ifEnabled, and home.ifEnabled for feature modules

In Nix module files, use the delib.module pattern with singleEnableOption false for feature modules with platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled

Files:

  • modules/features/hyprland.nix
**/*.{nix,rs,py}

📄 CodeRabbit inference engine (GEMINI.md)

Use nix fmt to format code using treefmt (alejandra for Nix, rustfmt for Rust, black for Python)

Files:

  • modules/features/hyprland.nix
**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

**/*.nix: Use alejandra formatting for Nix files
Prefer let...in blocks in Nix code
Use kebab-case for Nix attributes

Files:

  • modules/features/hyprland.nix
modules/**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

modules/**/*.nix: Use delib.module pattern for Nix modules
Use platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled for multi-platform support

Files:

  • modules/features/hyprland.nix
**/*.{py,nix}

📄 CodeRabbit inference engine (AGENTS.md)

Use snake_case for file and function names

Files:

  • modules/features/hyprland.nix
🧠 Learnings (5)
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to hosts/**/*.nix : In Nix host configuration files, use the `delib.host` pattern with type classification (desktop/laptop/server) and enable features through `myconfig.features.*`

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to modules/features/**/*.nix : In Nix module files, use the `delib.module` pattern with `singleEnableOption false` for feature modules with platform-specific sections: `nixos.ifEnabled`, `darwin.ifEnabled`, `home.ifEnabled`

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Use the `delib.module` pattern with `singleEnableOption false` for feature modules in `modules/features/`

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to hosts/**/*.nix : Enable features in host configurations using `myconfig.features.featureName = true` syntax

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Define platform-specific configuration in separate sections using `nixos.ifEnabled`, `darwin.ifEnabled`, and `home.ifEnabled` for feature modules

Applied to files:

  • modules/features/hyprland.nix
🔇 Additional comments (5)
modules/features/hyprland.nix (3)

149-162: LGTM!

The declarative dconf configuration for GNOME desktop interface theming is well-structured and follows the expected Nix patterns for setting GTK themes, icons, and fonts.


168-168: Clarify intent: withUWSM is commented out but uwsm package is still installed.

The UWSM integration is disabled here, yet the uwsm package remains in systemPackages (line 122), and the module docstring (line 59) still lists UWSM as a feature. If this is a temporary workaround, consider adding a TODO comment explaining the reason. Otherwise, update the documentation and remove the unused package.


182-182: Verify intent: enabling full GNOME desktop manager alongside Hyprland.

Enabling desktopManager.gnome.enable = true pulls in the complete GNOME desktop environment, including many services and session components. If the goal is only to use specific GNOME utilities (keyring, control center, dconf), consider whether the full desktop manager is necessary—it may add unwanted overhead or session conflicts with Hyprland.

.zshrc (2)

47-49: LGTM! Standard zsh command-line editing integration.

The edit-command-line integration is correctly implemented and follows zsh conventions. The Ctrl-X Ctrl-E binding is a widely recognized shortcut that will allow editing commands in an external editor.


77-78: All aliases are valid and properly configured.

Both nvimf and klaude programs are defined in the Nix configuration:

  • nvimf is defined at modules/programs/nvimf/default.nix with an executable script
  • klaude is defined at modules/programs/klaude/default.nix

The aliases correctly reference these programs and the existing nvimfi alias (line 65).

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
modules/features/hyprland.nix (2)

74-87: Consider making GNOME theme settings configurable.

The dconf configuration now includes hardcoded GNOME desktop interface settings (gtk-theme, icon-theme, fonts). While this works for a single-user setup, consider extracting these values into module options for better flexibility across different hosts or users.

🔎 Example approach to make settings configurable

Add options at the module level:

options = {
  enable = singleEnableOption false;
  gnomeTheme = lib.mkOption {
    type = lib.types.str;
    default = "Adwaita";
  };
  iconTheme = lib.mkOption {
    type = lib.types.str;
    default = "Flat-Remix-Red-Dark";
  };
  # ... similar for fonts
};

Then reference in the dconf settings:

           settings."org/gnome/desktop/interface" = {
-            gtk-theme = "Adwaita";
-            icon-theme = "Flat-Remix-Red-Dark";
+            gtk-theme = cfg.gnomeTheme;
+            icon-theme = cfg.iconTheme;

93-93: Clarify or remove commented withUWSM option.

The withUWSM option is commented out. If UWSM support is no longer needed, consider removing this line entirely to keep the code clean. If it's temporarily disabled for testing, consider adding a comment explaining why.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0681427 and 0a711bf.

📒 Files selected for processing (34)
  • hosts/mac-nix/default.nix
  • hosts/oxe-nixos/default.nix
  • modules/features/darknet.nix
  • modules/features/engineer.nix
  • modules/features/hyprland.nix
  • modules/features/nvidia.nix
  • modules/features/ollama.nix
  • modules/features/power-efficient.nix
  • modules/features/secrets.nix
  • modules/features/student.nix
  • modules/features/zshell.nix
  • modules/programs/catls/catls.nix
  • modules/programs/cf/default.nix
  • modules/programs/cmbd/default.nix
  • modules/programs/convert_img/convert_img.nix
  • modules/programs/dx/dx.nix
  • modules/programs/explorer/explorer.nix
  • modules/programs/ghostty/default.nix
  • modules/programs/glaude/default.nix
  • modules/programs/klaude/default.nix
  • modules/programs/nvimf/default.nix
  • modules/programs/nviml/default.nix
  • modules/programs/xlaude/default.nix
  • modules/programs/zlaude/default.nix
  • rices/dark/default.nix
  • rices/empty.nix
  • templates/cpp-shell/flake.nix
  • templates/devshell/flake.nix
  • templates/go-shell/flake.nix
  • templates/python-shell/flake.nix
  • templates/rust-shell/flake.nix
  • templates/templ-shell/flake.nix
  • templates/typescript-shell/flake.nix
  • templates/zig-shell/flake.nix
💤 Files with no reviewable changes (31)
  • modules/programs/xlaude/default.nix
  • templates/zig-shell/flake.nix
  • modules/programs/explorer/explorer.nix
  • hosts/oxe-nixos/default.nix
  • templates/cpp-shell/flake.nix
  • modules/features/ollama.nix
  • modules/features/nvidia.nix
  • templates/devshell/flake.nix
  • modules/programs/dx/dx.nix
  • modules/features/power-efficient.nix
  • rices/dark/default.nix
  • modules/programs/nvimf/default.nix
  • modules/programs/klaude/default.nix
  • templates/typescript-shell/flake.nix
  • modules/programs/nviml/default.nix
  • modules/programs/convert_img/convert_img.nix
  • templates/go-shell/flake.nix
  • modules/programs/catls/catls.nix
  • templates/python-shell/flake.nix
  • modules/programs/ghostty/default.nix
  • templates/rust-shell/flake.nix
  • modules/features/zshell.nix
  • modules/programs/cf/default.nix
  • modules/programs/cmbd/default.nix
  • modules/features/secrets.nix
  • rices/empty.nix
  • modules/programs/zlaude/default.nix
  • hosts/mac-nix/default.nix
  • modules/features/darknet.nix
  • templates/templ-shell/flake.nix
  • modules/features/student.nix
✅ Files skipped from review due to trivial changes (1)
  • modules/features/engineer.nix
🚧 Files skipped from review as they are similar to previous changes (1)
  • modules/programs/glaude/default.nix
🧰 Additional context used
📓 Path-based instructions (5)
modules/features/**/*.nix

📄 CodeRabbit inference engine (CLAUDE.md)

modules/features/**/*.nix: Use the delib.module pattern with singleEnableOption false for feature modules in modules/features/
Define platform-specific configuration in separate sections using nixos.ifEnabled, darwin.ifEnabled, and home.ifEnabled for feature modules

In Nix module files, use the delib.module pattern with singleEnableOption false for feature modules with platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled

Files:

  • modules/features/hyprland.nix
**/*.{nix,rs,py}

📄 CodeRabbit inference engine (GEMINI.md)

Use nix fmt to format code using treefmt (alejandra for Nix, rustfmt for Rust, black for Python)

Files:

  • modules/features/hyprland.nix
**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

**/*.nix: Use alejandra formatting for Nix files
Prefer let...in blocks in Nix code
Use kebab-case for Nix attributes

Files:

  • modules/features/hyprland.nix
modules/**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

modules/**/*.nix: Use delib.module pattern for Nix modules
Use platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled for multi-platform support

Files:

  • modules/features/hyprland.nix
**/*.{py,nix}

📄 CodeRabbit inference engine (AGENTS.md)

Use snake_case for file and function names

Files:

  • modules/features/hyprland.nix
🧠 Learnings (6)
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to hosts/**/*.nix : In Nix host configuration files, use the `delib.host` pattern with type classification (desktop/laptop/server) and enable features through `myconfig.features.*`

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to modules/features/**/*.nix : In Nix module files, use the `delib.module` pattern with `singleEnableOption false` for feature modules with platform-specific sections: `nixos.ifEnabled`, `darwin.ifEnabled`, `home.ifEnabled`

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Define platform-specific configuration in separate sections using `nixos.ifEnabled`, `darwin.ifEnabled`, and `home.ifEnabled` for feature modules

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Use the `delib.module` pattern with `singleEnableOption false` for feature modules in `modules/features/`

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to rices/**/*.nix : Use `delib.rice` with Stylix integration for theme configurations

Applied to files:

  • modules/features/hyprland.nix
📚 Learning: 2025-11-28T14:25:42.835Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-28T14:25:42.835Z
Learning: Applies to modules/**/*.nix : Use platform-specific sections: `nixos.ifEnabled`, `darwin.ifEnabled`, `home.ifEnabled` for multi-platform support

Applied to files:

  • modules/features/hyprland.nix
🔇 Additional comments (1)
modules/features/hyprland.nix (1)

101-101: LGTM!

Adding gdm-password.enableGnomeKeyring correctly enables GNOME keyring integration for GDM password authentication, complementing the existing GDM keyring settings.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
modules/features/engineer.nix (1)

161-161: Consider adding amp to darwin for platform consistency.

The amp package from nix-ai-tools is added to nixos (line 161) but not to the darwin section (line 266), where crush from the same input is present. If amp is cross-platform, consider adding it to darwin as well for consistency:

# In darwin.ifEnabled.environment.systemPackages around line 266
inputs.nix-ai-tools.packages."${pkgs.stdenv.hostPlatform.system}".amp

If amp is Linux-only, this can be ignored.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0a711bf and 02ea04a.

⛔ Files ignored due to path filters (1)
  • flake.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • flake.nix
  • modules/features/engineer.nix
🚧 Files skipped from review as they are similar to previous changes (1)
  • flake.nix
🧰 Additional context used
📓 Path-based instructions (5)
modules/features/**/*.nix

📄 CodeRabbit inference engine (CLAUDE.md)

modules/features/**/*.nix: Use the delib.module pattern with singleEnableOption false for feature modules in modules/features/
Define platform-specific configuration in separate sections using nixos.ifEnabled, darwin.ifEnabled, and home.ifEnabled for feature modules

In Nix module files, use the delib.module pattern with singleEnableOption false for feature modules with platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled

Files:

  • modules/features/engineer.nix
**/*.{nix,rs,py}

📄 CodeRabbit inference engine (GEMINI.md)

Use nix fmt to format code using treefmt (alejandra for Nix, rustfmt for Rust, black for Python)

Files:

  • modules/features/engineer.nix
**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

**/*.nix: Use alejandra formatting for Nix files
Prefer let...in blocks in Nix code
Use kebab-case for Nix attributes

Files:

  • modules/features/engineer.nix
modules/**/*.nix

📄 CodeRabbit inference engine (AGENTS.md)

modules/**/*.nix: Use delib.module pattern for Nix modules
Use platform-specific sections: nixos.ifEnabled, darwin.ifEnabled, home.ifEnabled for multi-platform support

Files:

  • modules/features/engineer.nix
**/*.{py,nix}

📄 CodeRabbit inference engine (AGENTS.md)

Use snake_case for file and function names

Files:

  • modules/features/engineer.nix
🧠 Learnings (5)
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Define platform-specific configuration in separate sections using `nixos.ifEnabled`, `darwin.ifEnabled`, and `home.ifEnabled` for feature modules

Applied to files:

  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: When creating new feature modules in Nix, consider both nixos and darwin platforms and define platform-specific configuration in separate conditional sections

Applied to files:

  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:25:08.335Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: GEMINI.md:0-0
Timestamp: 2025-11-28T14:25:08.335Z
Learning: Applies to modules/features/**/*.nix : In Nix module files, use the `delib.module` pattern with `singleEnableOption false` for feature modules with platform-specific sections: `nixos.ifEnabled`, `darwin.ifEnabled`, `home.ifEnabled`

Applied to files:

  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to modules/features/**/*.nix : Use the `delib.module` pattern with `singleEnableOption false` for feature modules in `modules/features/`

Applied to files:

  • modules/features/engineer.nix
📚 Learning: 2025-11-28T14:24:35.117Z
Learnt from: CR
Repo: connerohnesorge/dotfiles PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-28T14:24:35.117Z
Learning: Applies to hosts/**/*.nix : Enable features in host configurations using `myconfig.features.featureName = true` syntax

Applied to files:

  • modules/features/engineer.nix
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Build (linux-x86_64)
  • GitHub Check: Validate Templates (linux-x86_64)
  • GitHub Check: Build (macos-aarch64)
  • GitHub Check: Validate Templates (macos-aarch64)
🔇 Additional comments (1)
modules/features/engineer.nix (1)

139-141: Packages are available in nixpkgs.

All three packages (gh-dash, radicle-tui, and radicle-desktop) are confirmed to exist in nixpkgs and can be safely added to the engineer feature.

cldk.enable = true;
cldo.enable = true;
clds.enable = true;
glaude.enable = true;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Check if glaude module exists
find modules/programs -type d -name "glaude" 2>/dev/null && echo "glaude dir found" || echo "glaude dir not found"

# Check the engineer.nix file structure
echo "=== Checking engineer.nix file ==="
wc -l modules/features/engineer.nix

# Check around line 38 for context
echo -e "\n=== Context around line 38 ==="
sed -n '35,45p' modules/features/engineer.nix

# Search for glaude in the entire codebase
echo -e "\n=== Searching for glaude references ==="
rg "glaude" --type nix

# Check what's in the darwin section around line 219+
echo -e "\n=== Darwin section structure ==="
sed -n '219,230p' modules/features/engineer.nix

# Compare *laude programs across platforms
echo -e "\n=== Searching for other *laude programs ==="
rg "(xlaude|zlaude|klaude|glaude)\.enable" modules/features/engineer.nix -A1 -B1

Repository: connerohnesorge/dotfiles

Length of output: 1729


🏁 Script executed:

# Read the glaude module to check for platform restrictions
echo "=== glaude module definition ==="
cat modules/programs/glaude/default.nix

# Check if glaude.sh has any platform-specific content
echo -e "\n=== glaude.sh content ==="
cat modules/programs/glaude/glaude.sh 2>/dev/null || echo "glaude.sh not found in standard location"

# Check if there's a home section for glaude
echo -e "\n=== Checking engineer.nix for home.ifEnabled section ==="
rg "home\.ifEnabled" modules/features/engineer.nix -A 50 | head -100

Repository: connerohnesorge/dotfiles

Length of output: 1256


Add glaude.enable = true to the darwin section for platform consistency.

The glaude module is properly defined with support for both nixos and darwin platforms, but glaude.enable = true is only added to the nixos section (line 38). For consistency with other *laude programs like zlaude and klaude that are enabled on both platforms, add glaude.enable = true to the darwin section's programs block (around line 226).

🤖 Prompt for AI Agents
In modules/features/engineer.nix around line 38 (nixos) and the darwin programs
block near line 226, glaude.enable is currently set true only in the nixos
section; update the darwin section by adding glaude.enable = true inside the
darwin programs block (next to zlaude/klaude) so glaude is enabled on both
platforms, matching the existing pattern for other *laude programs.

@connerohnesorge connerohnesorge merged commit f309894 into main Jan 2, 2026
8 checks passed
@connerohnesorge connerohnesorge deleted the update-nixpkgs-and-add-glaude branch January 2, 2026 23:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant