feat: add Atuin integration and update terminal tools
Summary
- Add Atuin shell history manager with desktop app integration
- Enable fzf integration across bash, fish, and zsh shells
- Add fzf-make package for enhanced build tooling
- Add WezTerm terminal emulator to Homebrew casks
Summary by cubic
Adds Atuin shell history with bash, fish, and zsh integration, and enables fzf across all shells to speed up search and recall. Also adds fzf-make and installs WezTerm and Atuin Desktop.
-
New Features
- Enable Atuin in Home Manager with bash/fish/zsh integration.
- Enable fzf bash/fish/zsh integration for consistent fuzzy finding.
- Add fzf-make to packages for improved build tooling.
-
Dependencies
- Homebrew casks: atuin-desktop and wezterm.
Summary of Changes
Hello @shunkakinoki, I'm Gemini Code Assist[^1]! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request significantly upgrades the development environment by introducing new terminal utilities and enhancing existing ones. It focuses on improving shell history management, streamlining command-line interactions with fuzzy finding, and expanding the suite of available terminal tools, ultimately aiming to boost productivity and user experience.
Highlights
- Atuin Integration: The Atuin shell history manager has been integrated, including its desktop application via Homebrew cask, and enabled for Bash, Fish, and Zsh shells.
- FZF Shell Integration: FZF (fuzzy finder) integration has been expanded and explicitly enabled across Bash, Fish, and Zsh shells for enhanced command-line searching.
-
FZF-Make Package: The
fzf-makepackage has been added to the system, providing enhanced build tooling capabilities. - WezTerm Terminal Emulator: The WezTerm terminal emulator has been added to the Homebrew casks, making it available for installation.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in pull request comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with :thumbsup: and :thumbsdown: on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
[^1]: Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.
[!NOTE]
Other AI code review bot(s) detected
CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.
π Walkthrough
Summary by CodeRabbit
-
New Features
- Added Atuin shell history tool with Bash, Fish, and Zsh integrations.
- Enabled Git delta integration for improved diff viewing.
- Added fzf shell integrations for Bash, Fish, and Zsh.
- Added new development tools and applications.
-
Changes
- Git configuration restructured for improved organization.
- Fish fzf plugin temporarily disabled due to Fish 4.x compatibility issue.
Walkthrough
Adds a new Home Manager module for AtuΓn with Bash/Fish/Zsh integrations, enables fzf integrations for Bash/Fish/Zsh, adds fzf-make and a Linux-only package set, adds Homebrew casks (atuin-desktop, wezterm, beekeeper-studio), and introduces a new nixpkgs flake input.
Changes
| Cohort / File(s) | Summary |
|---|---|
Atuin program home-manager/programs/atuin/default.nix, home-manager/programs/default.nix |
New programs.atuin module added and imported/exported; defaults set: enable = true, enableBashIntegration = true, enableFishIntegration = true, enableZshIntegration = true. |
FZF integrations home-manager/programs/fzf/default.nix |
Enabled enableBashIntegration = true and enableZshIntegration = true; set enableFishIntegration = true (was false). |
Package list changes home-manager/packages/default.nix |
Added fzf-make to static packages; added a Linux-only optional attribute set (lib.optionals stdenv.isLinux) containing claude-code, codex, docker, docker-compose, gemini-cli, kubernetes-helm, opencode. |
Homebrew casks nix-darwin/config/homebrew.nix |
Added atuin-desktop, beekeeper-studio, and wezterm to the casks list. |
Flake inputs flake.nix |
Added a new nixpkgs flake input pointing to github:NixOS/nixpkgs (HEAD) alongside existing inputs. |
Git / delta config home-manager/programs/git/default.nix, named-hosts/galactica/default.nix |
Rehomed Git user/alias and GPG signing into nested settings structure (settings.user, settings.alias, settings.commit/tag.gpgSign); introduced top-level programs.delta with enable = true and enableGitIntegration = true. |
Fish tweaks home-manager/programs/fish/default.nix |
Minor formatting change and temporarily disabled an fzf plugin block due to bind -k syntax incompatibility with Fish 4.x; fzf-fish remains enabled. |
Sequence Diagram(s)
sequenceDiagram
participant HM as Home Manager
participant ProgIndex as programs/default.nix
participant AtuModule as programs/atuin/default.nix
participant Shell as User Shells (Bash/Fish/Zsh)
rect #e6f7ff
HM->>ProgIndex: load programs set
ProgIndex->>AtuModule: import atuin module
AtuModule-->>ProgIndex: provide defaults (enable + integrations)
end
rect #e8ffe6
ProgIndex->>HM: export programs including atuin
HM->>Shell: install/write shell integration snippets
Shell-->>HM: source at shell startup
end
note right of Shell #fff3e6: AtuΓn enabled with shell integrations
Estimated code review effort
π― 3 (Moderate) | β±οΈ ~20 minutes
Possibly related PRs
- shunkakinoki/dotfiles#280 β moves
claude-codeinto a Linux-conditionallib.optionalsblock inhome-manager/packages/default.nix. - shunkakinoki/dotfiles#305 β similar grouping of
opencode/gemini-cliinto Linux-only optionals and related package updates. - shunkakinoki/dotfiles#301 β edits to Home Manager package exports and package list overlapping with these changes.
Suggested labels
codex
Poem
π° I hopped into dotfiles bright and quick,
Added AtuΓn to make history stick,
Fzf now sings in Bash, Fish, and Zsh,
Linux-only packages lined up fresh,
Casks and flake inputs β a tidy trick.
Pre-merge checks and finishing touches
β Passed checks (3 passed)
| Check name | Status | Explanation |
|---|---|---|
| Title Check | β Passed | The PR title "feat: add Atuin integration and update terminal tools" clearly and specifically relates to the main changes in the changeset. Atuin integration is prominently featured with a new Home Manager module and shell integration configuration across bash, fish, and zsh. Terminal tools are updated through fzf shell integration enhancements, the addition of fzf-make to packages, and new Homebrew casks including WezTerm. The title is concise, avoids vague terminology, and accurately captures the primary focus of the changes without being misleading. |
| Description Check | β Passed | The PR description is directly related to the changeset and covers the primary changes with sufficient detail and specificity. It accurately describes the addition of Atuin shell history manager with shell integration, enables fzf integration across multiple shells, adds fzf-make to packages, and includes WezTerm and Atuin Desktop to Homebrew casks. The description uses concrete, specific terminology and avoids vague language. While it does not mention some secondary changes like git configuration restructuring or the new flake.nix input, these are not critical to the main objectives being communicated. |
| Docstring Coverage | β Passed | No functions found in the changes. Docstring coverage check skipped. |
β¨ Finishing touches
π§ͺ Generate unit tests (beta)
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
- [ ] Commit unit tests in branch
feat/atuin-integration
π Recent review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
π₯ Commits
Reviewing files that changed from the base of the PR and between fdd3219bae466936be6fc2064f5ea2b36a8eba8e and 163c9d94d7cce2abc907b02e57d1b9087f279f30.
π Files selected for processing (2)
-
home-manager/programs/fish/default.nix(2 hunks) -
nix-darwin/config/homebrew.nix(2 hunks)
π§ Files skipped from review as they are similar to previous changes (1)
- nix-darwin/config/homebrew.nix
π§° Additional context used
π Path-based instructions (7)
**/*.nix
π CodeRabbit inference engine (CLAUDE.md)
Format all Nix files with nixfmt
**/*.nix: Nix: Use 2 spaces for indentation Nix: Keep line length under 100 characters Nix: Sort attribute sets alphabetically Nix: Use consistent spacing around operators Nix: Format lists and sets consistentlyFollow the Nix expression language style guide
Files:
-
home-manager/programs/fish/default.nix
**/default.nix
π CodeRabbit inference engine (CLAUDE.md)
Use default.nix files for module exports
Files:
-
home-manager/programs/fish/default.nix
home-manager/**
π CodeRabbit inference engine (.cursor/rules/general.mdc)
Keep home-manager configurations under home-manager/
Files:
-
home-manager/programs/fish/default.nix
home-manager/programs/*/default.nix
π CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
home-manager/programs/*/default.nix: Program configurations must be located in home-manager/programs// with configuration in default.nix Program configurations should prefer Home Managerβs built-in modules when available Program configurations should include all necessary dependencies Program configurations should follow the provided template (programs. .enable, package, and settings attrset)
Files:
-
home-manager/programs/fish/default.nix
home-manager/**/*.nix
π CodeRabbit inference engine (.cursor/rules/home-manager.mdc)
Use proper indentation and formatting in Nix files
Files:
-
home-manager/programs/fish/default.nix
home-manager/programs/**/default.nix
π CodeRabbit inference engine (.cursor/rules/nix.mdc)
Program configurations in home-manager/programs should be organized by program name (one directory per program with a default.nix)
Files:
-
home-manager/programs/fish/default.nix
home-manager/programs/**/*.nix
π CodeRabbit inference engine (.cursor/rules/nix.mdc)
home-manager/programs/**/*.nix: Program configurations should include all necessary dependencies Use home.packages for package installations in program configurations Use programs.options provided by Home Manager when available
Files:
-
home-manager/programs/fish/default.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). (7)
- GitHub Check: nix-nixos
- GitHub Check: nix-linux
- GitHub Check: nix-darwin
- GitHub Check: e2e-run (Ubuntu, ubuntu-latest)
- GitHub Check: docker-build-push (linux/amd64, -amd64, amd64)
- GitHub Check: e2e-run (NixOS, ubuntu-latest)
- GitHub Check: e2e-run (MacOS, macos-latest)
π Additional comments (2)
home-manager/programs/fish/default.nix (2)
31-31: LGTM!The blank line improves readability and follows consistent spacing guidelines.
79-83: The review comment is based on an incorrect assumption about plugin dependencies.The abbreviations (lines 59-63) reference custom, locally-defined fzf functions that exist in your
home-manager/programs/fish/functions/directory. These functions do not depend on either the disabledfzfplugin or thefzf-fishpluginβthey are self-contained implementations that directly invoke thefzfcommand.The disabled
fzfplugin provides keybindings usingbind -ksyntax (incompatible with fish 4.x). Your custom functions avoid this syntax entirely by callingfzfas a subprocess. The setup is correct and requires no changes.Likely an incorrect or invalid review comment.
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.
Comment @coderabbitai help to get the list of available commands and usage tips.